@provoly/dashboard 1.4.18 → 1.4.19

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 (189) hide show
  1. package/admin/components/admin-classes/admin-classes-view/admin-attributes-edit/admin-attributes-edit.component.d.ts +2 -3
  2. package/admin/components/admin-classes/admin-classes-view/admin-attributes-new/admin-attributes-new.component.d.ts +2 -3
  3. package/admin/components/admin-classes/store/admin-class.effects.d.ts +22 -8
  4. package/admin/components/admin-dataset/store/admin-dataset.effects.d.ts +13 -5
  5. package/admin/components/admin-fields/store/fields.effects.d.ts +7 -5
  6. package/admin/store/admin.effects.d.ts +3 -1
  7. package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-edit/admin-abac-rules-edit.component.mjs +3 -3
  8. package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-new/admin-abac-rules-new.component.mjs +3 -3
  9. package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-view/admin-abac-rules-view.component.mjs +3 -3
  10. package/esm2022/admin/components/admin-classes/admin-classes-customize/admin-classes-customize.component.mjs +4 -4
  11. package/esm2022/admin/components/admin-classes/admin-classes-customize/symbol/admin-classes-customize-symbol.component.mjs +2 -2
  12. package/esm2022/admin/components/admin-classes/admin-classes-edit/admin-classes-edit.component.mjs +2 -2
  13. package/esm2022/admin/components/admin-classes/admin-classes-form/admin-classes-form.component.mjs +2 -2
  14. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-edit/admin-attributes-edit.component.mjs +5 -6
  15. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.mjs +3 -3
  16. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-new/admin-attributes-new.component.mjs +5 -6
  17. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-classes-view.component.mjs +4 -4
  18. package/esm2022/admin/components/admin-classes/admin-classes.component.mjs +3 -3
  19. package/esm2022/admin/components/admin-classes/store/admin-class.effects.mjs +14 -13
  20. package/esm2022/admin/components/admin-dataset/admin-dataset.component.mjs +3 -3
  21. package/esm2022/admin/components/admin-dataset/admin-form-dataset/admin-form-dataset.component.mjs +3 -3
  22. package/esm2022/admin/components/admin-dataset/store/admin-dataset.effects.mjs +7 -8
  23. package/esm2022/admin/components/admin-environment/store/environment.effects.mjs +2 -2
  24. package/esm2022/admin/components/admin-fields/admin-fields-edit/admin-fields-edit.component.mjs +2 -2
  25. package/esm2022/admin/components/admin-fields/admin-fields-form/admin-fields-form.component.mjs +2 -2
  26. package/esm2022/admin/components/admin-fields/admin-fields.component.mjs +4 -4
  27. package/esm2022/admin/components/admin-fields/store/fields.effects.mjs +7 -10
  28. package/esm2022/admin/components/admin-links/admin-links-new/admin-links-new.component.mjs +3 -3
  29. package/esm2022/admin/components/admin-links/admin-links.component.mjs +3 -3
  30. package/esm2022/admin/components/admin-links/store/links.effects.mjs +2 -2
  31. package/esm2022/admin/components/admin-menu/admin-menu.component.mjs +2 -2
  32. package/esm2022/admin/components/admin-metadata/admin-metadata.component.mjs +2 -2
  33. package/esm2022/admin/components/admin-metadata-rules/store/metadata-rules.effects.mjs +2 -2
  34. package/esm2022/admin/components/admin-metadata-user/store/admin-metadata-user.effects.mjs +2 -2
  35. package/esm2022/admin/components/admin-predicates/store/predicates.effects.mjs +2 -2
  36. package/esm2022/admin/components/admin-relation-types/admin-relation-types.component.mjs +2 -2
  37. package/esm2022/admin/components/admin-user/store/admin-user.effects.mjs +2 -2
  38. package/esm2022/admin/components/shared/add-category-modal/add-category-modal.component.mjs +2 -2
  39. package/esm2022/admin/store/admin.effects.mjs +2 -2
  40. package/esm2022/components/metadata-editor/store/metadata.effects.mjs +2 -2
  41. package/esm2022/components/text-editor/component/text-editor.component.mjs +2 -2
  42. package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +3 -4
  43. package/esm2022/dataset/components/dataset.component.mjs +4 -4
  44. package/esm2022/filters/autocomplete/autocomplete.component.mjs +4 -4
  45. package/esm2022/filters/number/number-filter.component.mjs +2 -2
  46. package/esm2022/filters/text/text-filter.component.mjs +2 -2
  47. package/esm2022/import/components/form/import-form.component.mjs +2 -2
  48. package/esm2022/import/components/list/import-list.component.mjs +2 -2
  49. package/esm2022/import/store/import.effects.mjs +2 -2
  50. package/esm2022/lib/core/components/select/select.component.mjs +2 -2
  51. package/esm2022/lib/core/components/share/access-rights-share-modal/access-rights-share-modal.component.mjs +3 -3
  52. package/esm2022/lib/core/components/snackbar/snackbar.service.mjs +2 -2
  53. package/esm2022/lib/core/components/upload/upload.component.mjs +2 -2
  54. package/esm2022/lib/core/errors/http-error-interceptor.service.mjs +2 -2
  55. package/esm2022/lib/core/model/filter.interface.mjs +1 -1
  56. package/esm2022/lib/core/store/aggregation/backend-aggregation.service.mjs +3 -4
  57. package/esm2022/lib/core/store/category/category.actions.mjs +3 -3
  58. package/esm2022/lib/core/store/category/category.effects.mjs +10 -6
  59. package/esm2022/lib/core/store/class/class.actions.mjs +3 -3
  60. package/esm2022/lib/core/store/class/class.effects.mjs +10 -6
  61. package/esm2022/lib/core/store/config/config.actions.mjs +2 -2
  62. package/esm2022/lib/core/store/config/config.effects.mjs +13 -8
  63. package/esm2022/lib/core/store/config/open-map-tiles.service.mjs +2 -2
  64. package/esm2022/lib/core/store/data-source/data-source.actions.mjs +8 -8
  65. package/esm2022/lib/core/store/data-source/data-source.effects.mjs +21 -21
  66. package/esm2022/lib/core/store/field/field.actions.mjs +3 -3
  67. package/esm2022/lib/core/store/field/field.effects.mjs +10 -6
  68. package/esm2022/lib/core/store/image/image.effects.mjs +2 -2
  69. package/esm2022/lib/core/store/item/item.effects.mjs +2 -2
  70. package/esm2022/lib/core/store/relation-types/relation-types.actions.mjs +4 -4
  71. package/esm2022/lib/core/store/relation-types/relation-types.effects.mjs +11 -10
  72. package/esm2022/lib/core/store/search/search.actions.mjs +1 -1
  73. package/esm2022/lib/core/store/search/search.effects.mjs +3 -2
  74. package/esm2022/lib/core/store/search/search.selectors.mjs +3 -1
  75. package/esm2022/lib/core/store/search/search.service.mjs +4 -9
  76. package/esm2022/lib/dashboard/action-bus/effect/action-bus.effects.mjs +2 -2
  77. package/esm2022/lib/dashboard/components/context-menu/context-menu.component.mjs +2 -2
  78. package/esm2022/lib/dashboard/components/dashboard.component.mjs +8 -9
  79. package/esm2022/lib/dashboard/components/widgets/datasource-selector/datasource-list/datasource-list.component.mjs +3 -4
  80. package/esm2022/lib/dashboard/components/widgets/datasource-selector/datasource-selector.component.mjs +2 -2
  81. package/esm2022/lib/dashboard/components/widgets/widget-instanciator/widget-instanciator.component.mjs +2 -2
  82. package/esm2022/lib/dashboard/store/dashboard.effects.mjs +2 -2
  83. package/esm2022/lib/dashboard/store/manifest.service.mjs +2 -2
  84. package/esm2022/lib/dashboard/store/refresh.service.mjs +2 -2
  85. package/esm2022/lib/dashboard/store/wms.service.mjs +2 -2
  86. package/esm2022/notification/components/notification/content/notification-content.component.mjs +2 -2
  87. package/esm2022/pipeline/components/pipeline-editor/pipeline-editor.component.mjs +3 -5
  88. package/esm2022/pipeline/factory/pipeline-component-factory.service.mjs +2 -2
  89. package/esm2022/pipeline/store/pipeline.effects.mjs +2 -2
  90. package/esm2022/pipeline-components/input-datasource/component/input-datasource.component.mjs +2 -3
  91. package/esm2022/pipeline-components/input-datasource/input-datasource.module.mjs +2 -2
  92. package/esm2022/pipeline-components/output-dataset/component/output-dataset.component.mjs +2 -2
  93. package/esm2022/pipeline-components/output-dataset/output-dataset.module.mjs +2 -2
  94. package/esm2022/restitution/components/restitution/restitution.component.mjs +5 -5
  95. package/esm2022/search/search-fulltext/store/search-fulltext.effects.mjs +2 -2
  96. package/esm2022/search/search-home/search-home.component.mjs +3 -4
  97. package/esm2022/search/search-mono-class/components/search-mono-class/search-mono-class.component.mjs +2 -2
  98. package/esm2022/search/search-mono-class/components/search-order/search-order.component.mjs +2 -2
  99. package/esm2022/search/search-mono-class/components/search-select-attribute/search-select-attribute.component.mjs +1 -1
  100. package/esm2022/search/search-mono-class/store/search-mono-class.effects.mjs +2 -2
  101. package/esm2022/search/search-multi-class/store/search-multi-class.effects.mjs +2 -2
  102. package/esm2022/search/search-tools/search-tools.component.mjs +5 -6
  103. package/esm2022/toolbox/components/filter-settings/filter-settings.component.mjs +2 -2
  104. package/esm2022/toolbox/components/named-query/named-query.component.mjs +2 -2
  105. package/esm2022/toolbox/components/select-grid-layout/select-grid-layout.component.mjs +2 -2
  106. package/esm2022/toolbox/components/toolbox.component.mjs +2 -2
  107. package/esm2022/tooltips/attribute/attribute-tooltip.component.mjs +2 -2
  108. package/esm2022/widgets/widget-analytic/component/widget-analytic.component.mjs +2 -2
  109. package/esm2022/widgets/widget-chart/component/widget-chart.component.mjs +2 -2
  110. package/esm2022/widgets/widget-detail/component/widget-detail.component.mjs +2 -2
  111. package/esm2022/widgets/widget-graph/component/widget-graph.component.mjs +10 -13
  112. package/esm2022/widgets/widget-image/component/widget-image.component.mjs +2 -2
  113. package/esm2022/widgets/widget-table/component/widget-table.component.mjs +3 -3
  114. package/esm2022/widgets/widget-table/get-value/get-value.pipe.mjs +2 -2
  115. package/esm2022/widgets/widget-table/resizable/resizable.directive.mjs +2 -2
  116. package/esm2022/widgets/widget-template/component/widget-template.component.mjs +2 -2
  117. package/esm2022/widgets/widget-tile/component/widget-tile.component.mjs +2 -2
  118. package/esm2022/widgets/widget-vega/component/widget-vega.component.mjs +2 -2
  119. package/fesm2022/provoly-dashboard-admin.mjs +121 -123
  120. package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
  121. package/fesm2022/provoly-dashboard-components-metadata-editor.mjs +12 -13
  122. package/fesm2022/provoly-dashboard-components-metadata-editor.mjs.map +1 -1
  123. package/fesm2022/provoly-dashboard-components-text-editor.mjs +1 -2
  124. package/fesm2022/provoly-dashboard-components-text-editor.mjs.map +1 -1
  125. package/fesm2022/provoly-dashboard-dataset.mjs +5 -6
  126. package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
  127. package/fesm2022/provoly-dashboard-filters-autocomplete.mjs +3 -3
  128. package/fesm2022/provoly-dashboard-filters-autocomplete.mjs.map +1 -1
  129. package/fesm2022/provoly-dashboard-filters-number.mjs +1 -2
  130. package/fesm2022/provoly-dashboard-filters-number.mjs.map +1 -1
  131. package/fesm2022/provoly-dashboard-filters-text.mjs +1 -2
  132. package/fesm2022/provoly-dashboard-filters-text.mjs.map +1 -1
  133. package/fesm2022/provoly-dashboard-import.mjs +5 -6
  134. package/fesm2022/provoly-dashboard-import.mjs.map +1 -1
  135. package/fesm2022/provoly-dashboard-notification.mjs +3 -4
  136. package/fesm2022/provoly-dashboard-notification.mjs.map +1 -1
  137. package/fesm2022/provoly-dashboard-pipeline-components-input-datasource.mjs +2 -3
  138. package/fesm2022/provoly-dashboard-pipeline-components-input-datasource.mjs.map +1 -1
  139. package/fesm2022/provoly-dashboard-pipeline-components-output-dataset.mjs +2 -2
  140. package/fesm2022/provoly-dashboard-pipeline-components-output-dataset.mjs.map +1 -1
  141. package/fesm2022/provoly-dashboard-pipeline.mjs +16 -18
  142. package/fesm2022/provoly-dashboard-pipeline.mjs.map +1 -1
  143. package/fesm2022/provoly-dashboard-restitution.mjs +4 -4
  144. package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -1
  145. package/fesm2022/provoly-dashboard-search.mjs +19 -20
  146. package/fesm2022/provoly-dashboard-search.mjs.map +1 -1
  147. package/fesm2022/provoly-dashboard-toolbox.mjs +3 -4
  148. package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
  149. package/fesm2022/provoly-dashboard-tooltips-attribute.mjs +1 -2
  150. package/fesm2022/provoly-dashboard-tooltips-attribute.mjs.map +1 -1
  151. package/fesm2022/provoly-dashboard-widgets-widget-analytic.mjs +1 -2
  152. package/fesm2022/provoly-dashboard-widgets-widget-analytic.mjs.map +1 -1
  153. package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs +1 -2
  154. package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs.map +1 -1
  155. package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs +1 -2
  156. package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs.map +1 -1
  157. package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs +8 -12
  158. package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs.map +1 -1
  159. package/fesm2022/provoly-dashboard-widgets-widget-image.mjs +1 -1
  160. package/fesm2022/provoly-dashboard-widgets-widget-image.mjs.map +1 -1
  161. package/fesm2022/provoly-dashboard-widgets-widget-table.mjs +2 -3
  162. package/fesm2022/provoly-dashboard-widgets-widget-table.mjs.map +1 -1
  163. package/fesm2022/provoly-dashboard-widgets-widget-template.mjs +1 -2
  164. package/fesm2022/provoly-dashboard-widgets-widget-template.mjs.map +1 -1
  165. package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs +1 -2
  166. package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs.map +1 -1
  167. package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs +1 -2
  168. package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs.map +1 -1
  169. package/fesm2022/provoly-dashboard.mjs +978 -972
  170. package/fesm2022/provoly-dashboard.mjs.map +1 -1
  171. package/lib/core/model/filter.interface.d.ts +1 -0
  172. package/lib/core/store/category/category.actions.d.ts +7 -3
  173. package/lib/core/store/category/category.effects.d.ts +4 -2
  174. package/lib/core/store/class/class.actions.d.ts +7 -3
  175. package/lib/core/store/class/class.effects.d.ts +4 -2
  176. package/lib/core/store/config/config.actions.d.ts +5 -1
  177. package/lib/core/store/config/config.effects.d.ts +12 -4
  178. package/lib/core/store/data-source/data-source.actions.d.ts +23 -11
  179. package/lib/core/store/data-source/data-source.effects.d.ts +23 -15
  180. package/lib/core/store/field/field.actions.d.ts +7 -3
  181. package/lib/core/store/field/field.effects.d.ts +4 -2
  182. package/lib/core/store/relation-types/relation-types.actions.d.ts +9 -5
  183. package/lib/core/store/relation-types/relation-types.effects.d.ts +8 -6
  184. package/lib/core/store/search/search.actions.d.ts +2 -0
  185. package/lib/core/store/search/search.selectors.d.ts +5 -0
  186. package/lib/core/store/search/search.service.d.ts +1 -1
  187. package/package.json +41 -41
  188. package/search/search-mono-class/store/search-mono-class.effects.d.ts +1 -1
  189. package/widgets/widget-graph/component/widget-graph.component.d.ts +2 -5
@@ -2,7 +2,7 @@ import { Component } from '@angular/core';
2
2
  import { ALIGNMENT_OPTIONS, baseItemProperties, ClassActions, ClassSelectors, ConfigSelectors, ContextMenuActions, ContextMenuSelectors, DashboardActions, DashboardSelectors, DataWidgetComponent, DEFAULT_TABLE_WIDGET_STYLE, FieldType, ItemUtils, WIDGET_HEADER_HEIGHT } from '@provoly/dashboard';
3
3
  import equal from 'fast-deep-equal/es6';
4
4
  import { auditTime, BehaviorSubject, combineLatest, debounceTime, take } from 'rxjs';
5
- import { delay, filter, map, tap, withLatestFrom } from 'rxjs/operators';
5
+ import { delay, filter, map, tap, withLatestFrom } from 'rxjs';
6
6
  import { v4 } from 'uuid';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "@ngrx/store";
@@ -126,7 +126,7 @@ export class WidgetTableComponent extends DataWidgetComponent {
126
126
  }));
127
127
  this.selectedIds$ = this.store.select(DashboardSelectors.selectedItemIds);
128
128
  this.subscriptions.add(this.selectedIds$.subscribe((selectedIds) => this.selectedIds === selectedIds));
129
- this.store.dispatch(ClassActions.load());
129
+ this.store.dispatch(ClassActions.load({}));
130
130
  this.properties$ = combineLatest([this.resultSet$, this.classes$, this.fields$]).pipe(map(([rs, classes, fields]) => [
131
131
  ...Object.keys(rs.items)
132
132
  .map((classId) => (classes.find((cl) => cl.id === classId) ?? { attributes: [] }).attributes)
@@ -256,4 +256,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
256
256
  type: Component,
257
257
  args: [{ selector: 'pry-widget-table', template: "<pry-widget-table-css></pry-widget-table-css>\n<div class=\"o-widget o-widget--table\">\n @if (displayHeader$ | async) {\n <pry-widget-header\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n #header\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n (click)=\"refresh()\"\n >\n <pry-settings\n (click)=\"refresh()\"\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n (triggerClick)=\"this.refresh()\"\n class=\"o-settings\"\n >\n @if (optionsCopy && optionsCopy.style) {\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_style_headerTextAlign\">{{\n '@pry.widget.table.headerTextAlign' | i18n\n }}</label>\n <pry-select\n [items]=\"ALIGNMENT_OPTIONS\"\n [ngModel]=\"optionsCopy.style.headerTextAlign\"\n (ngModelChange)=\"updateStyle($event, 'headerTextAlign')\"\n id=\"table_style_headerTextAlign\"\n i18nPrefix=\"@pry.widget.table.align.\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_style_cellTextAlign\">{{\n '@pry.widget.table.cellTextAlign' | i18n\n }}</label>\n <pry-select\n [items]=\"ALIGNMENT_OPTIONS\"\n [ngModel]=\"optionsCopy.style.cellTextAlign\"\n (ngModelChange)=\"updateStyle($event, 'cellTextAlign')\"\n id=\"table_style_cellTextAlign\"\n i18nPrefix=\"@pry.widget.table.align.\"\n ></pry-select>\n </div>\n <div\n class=\"m-form-label-field u-display-flex -row -justify-space-between o-widget--table__vertical-separator\"\n >\n <label class=\"a-label\" for=\"table_style_verticalSeparator\">{{\n '@pry.widget.table.verticalSeparator' | i18n\n }}</label>\n <pry-checkbox\n [ngModel]=\"optionsCopy.style.showVerticalSeparator\"\n (ngModelChange)=\"updateStyle($event, 'showVerticalSeparator')\"\n id=\"table_style_verticalSeparator\"\n ></pry-checkbox>\n </div>\n }\n\n <div class=\"o-settings__popup__content__actions\">\n <button type=\"button\" class=\"a-btn a-btn--icon-text -link-like\" (click)=\"addColumn()\">\n <pry-icon iconSvg=\"post_add\"></pry-icon>\n {{ '@pry.widget.table.addColumn' | i18n }}\n </button>\n </div>\n\n @for (columnDef of optionsCopy?.columns ?? []; track columnDef.attributeId; let i = $index) {\n <div class=\"o-settings__popup__content__fields\" (click)=\"refresh()\">\n <div class=\"o-settings__popup__content__fields__head\">\n <div class=\"m-btn-group\">\n @if (i > 0) {\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"invertLayers(i, i - 1)\">\n <pry-icon iconSvg=\"fleche_haut\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveUp' | i18n }}</span>\n </button>\n }\n @if (i < (optionsCopy?.columns?.length ?? 0) - 1) {\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"invertLayers(i, i + 1)\">\n <pry-icon iconSvg=\"fleche_bas\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveDown' | i18n }}</span>\n </button>\n }\n </div>\n </div>\n\n <div class=\"o-settings__popup__content__fields__content\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_property\">{{ '@pry.widget.table.property' | i18n }}</label>\n <pry-select\n (click)=\"refresh()\"\n (ngModelChange)=\"changePropertyName($event, columnDef)\"\n [items]=\"properties$ | async\"\n [ngModel]=\"columnDef.property\"\n bindLabel=\"label\"\n bindValue=\"property\"\n id=\"table_property\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_label\">{{ '@pry.widget.table.label' | i18n }}</label>\n <input\n id=\"table_label\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeLabel($event, columnDef)\"\n [value]=\"columnDef.label\"\n />\n </div>\n </div>\n <button\n (click)=\"deleteColumn(i)\"\n aria-label=\"delete\"\n type=\"button\"\n class=\"a-btn a-btn--icon-text -link-like\"\n data-func=\"delete\"\n >\n <pry-icon iconSvg=\"delete\" [width]=\"19\" [height]=\"19\"></pry-icon>\n <span>{{ '@pry.widget.table.deleteColumn' | i18n }}</span>\n </button>\n </div>\n }\n </pry-settings>\n </pry-widget-header>\n }\n\n <div class=\"a-table-wrapper\">\n @if (pagination$ | async; as pagination) {\n @if (pagination?.items ?? []; as allObjects) {\n @if (pagination.noFillersItems === 0) {\n <div class=\"no-result\" [style.height.%]=\"pagination.totalPages > 0 ? 80 : 100\">\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.table.empty' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.table.empty' | i18n }}</span>\n </div>\n } @else if (pagination.noFillersItems > 0) {\n @if ((selectedIds$ | async) ?? []; as selectedIds) {\n @if ((columns$ | async) ?? []; as columns) {\n <table\n class=\"a-table\"\n [class.-show-vertical-separator]=\"optionsCopy?.style?.showVerticalSeparator\"\n [attr.aria-label]=\"'@pry.widget.table.description' | i18n\"\n >\n <thead>\n <tr>\n @if (allObjects?.length ?? 0 > 0) {\n <th>\n <pry-checkbox [ngModel]=\"areAllSelected\" (ngModelChange)=\"selectAll($event)\"></pry-checkbox>\n </th>\n }\n @for (column of columns; track column.attributeId; let i = $index) {\n <th\n resizable\n (click)=\"setOrder(column)\"\n [ngClass]=\"'u-txt-' + optionsCopy?.style?.headerTextAlign\"\n >\n <span>{{ column.label }}</span>\n @if (quickOrder$ | async; as quickOrder) {\n @if (quickOrder.attribute === column.attributeId) {\n <pry-icon\n [iconSvg]=\"quickOrder.asc ? 'chevron_top' : 'chevron_bottom'\"\n [height]=\"12\"\n [width]=\"12\"\n ></pry-icon>\n }\n }\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @for (item of allObjects; track item.id) {\n <tr\n [class.is-selected]=\"selectedIds.includes(item.id)\"\n [class.context-menu-selected]=\"contextMenuClickedId === item.id && (isContextMenuOpened$ | async)\"\n (contextmenu)=\"contextMenu($event, item)\"\n detachRow\n (selectedValue)=\"selection($event, item)\"\n [class.filler]=\"item.metadata!['__widget-table-filler']\"\n >\n <td class=\"checkbox-wrapper\">\n <pry-checkbox [ngModel]=\"selectedIds.includes(item.id)\"></pry-checkbox>\n </td>\n @for (column of columns; track column.attributeId) {\n <td class=\"u-ellipsis\" [ngClass]=\"'u-txt-' + optionsCopy?.style?.cellTextAlign\">\n @if (column.property === 'metadata') {\n <pry-metadata [item]=\"item\"></pry-metadata>\n }\n @if (column.property === 'oClass') {\n <p class=\"content-img\">\n <img\n [height]=\"25\"\n [width]=\"25\"\n [src]=\"item | translateItemToSymbol | async\"\n [alt]=\"item.oClass | translateId: { type: 'class', output: 'name' } | async\"\n />\n </p>\n }\n @if (!['metadata', 'oClass'].includes(column.property)) {\n <pry-expand-value\n [value]=\"item | getValue: column.property | async\"\n [field]=\"column.field\"\n ></pry-expand-value>\n }\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n }\n }\n }\n @if (pagination.totalPages > 0) {\n <div class=\"u-display-flex\">\n <pry-paginator\n [totalItemNb]=\"pagination.total\"\n (pageChange)=\"goToPage($event - 1)\"\n [nbPerPage]=\"pagination.rows\"\n [loaded]=\"pagination.loaded\"\n mode=\"short\"\n ></pry-paginator>\n @if (pagination.totalPages !== pagination.loadedPages) {\n <div class=\"a-table__pagination-label\">\n ({{\n '@pry.widget.table.remaining' | i18n: { remaining: pagination.totalPages - pagination.loadedPages }\n }})\n </div>\n }\n </div>\n }\n }\n }\n </div>\n</div>\n" }]
258
258
  }], ctorParameters: () => [{ type: i1.Store }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }] });
259
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3dpZGdldHMvd2lkZ2V0LXRhYmxlL2NvbXBvbmVudC93aWRnZXQtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvd2lkZ2V0cy93aWRnZXQtdGFibGUvY29tcG9uZW50L3dpZGdldC10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBYyxNQUFNLGVBQWUsQ0FBQztBQUV6RSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUVsQixZQUFZLEVBQ1osY0FBYyxFQUVkLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsb0JBQW9CLEVBQ3BCLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLDBCQUEwQixFQUUxQixTQUFTLEVBRVQsU0FBUyxFQUtULG9CQUFvQixFQUNyQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sS0FBSyxNQUFNLHFCQUFxQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQWMsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFpQjFCLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxtQkFBbUI7SUF1QjNELFlBQ0UsS0FBaUIsRUFDakIsRUFBYyxFQUNOLEdBQXNCO1FBRTlCLEtBQUssQ0FBQyxL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LENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQzdGLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBYSxFQUFFLElBQVU7UUFDcEMsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCxRQUFRLENBQUMsTUFBYztRQUNyQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDOzhHQXhVVSxvQkFBb0I7a0dBQXBCLG9CQUFvQiwrRUM5Q2pDLG9yVkFrUEE7OzJGRHBNYSxvQkFBb0I7a0JBSmhDLFNBQVM7K0JBQ0Usa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQge1xuICBBTElHTk1FTlRfT1BUSU9OUyxcbiAgYmFzZUl0ZW1Qcm9wZXJ0aWVzLFxuICBDbGFzcyxcbiAgQ2xhc3NBY3Rpb25zLFxuICBDbGFzc1NlbGVjdG9ycyxcbiAgQ29sdW1uRGVmaW5pdGlvbixcbiAgQ29uZmlnU2VsZWN0b3JzLFxuICBDb250ZXh0TWVudUFjdGlvbnMsXG4gIENvbnRleHRNZW51U2VsZWN0b3JzLFxuICBEYXNoYm9hcmRBY3Rpb25zLFxuICBEYXNoYm9hcmRTZWxlY3RvcnMsXG4gIERhdGFXaWRnZXRDb21wb25lbnQsXG4gIERFRkFVTFRfVEFCTEVfV0lER0VUX1NUWUxFLFxuICBGaWVsZCxcbiAgRmllbGRUeXBlLFxuICBJdGVtLFxuICBJdGVtVXRpbHMsXG4gIE9yZGVyVmFsdWUsXG4gIFJlc3VsdE9yZGVyLFxuICBUYWJsZVdpZGdldE9wdGlvbnMsXG4gIFRhYmxlV2lkZ2V0U3R5bGUsXG4gIFdJREdFVF9IRUFERVJfSEVJR0hUXG59IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgZXF1YWwgZnJvbSAnZmFzdC1kZWVwLWVxdWFsL2VzNic7XG5pbXBvcnQgeyBhdWRpdFRpbWUsIEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgZGVib3VuY2VUaW1lLCBPYnNlcnZhYmxlLCB0YWtlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWxheSwgZmlsdGVyLCBtYXAsIHRhcCwgd2l0aExhdGVzdEZyb20gfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyB2NCB9IGZyb20gJ3V1aWQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2luYXRpb24ge1xuICB0b3RhbFBhZ2VzOiBudW1iZXI7XG4gIHBhZ2U6IG51bWJlcjtcbiAgcm93czogbnVtYmVyO1xuICBpdGVtczogSXRlbVtdO1xuICBsb2FkZWQ6IG51bWJlcjtcbiAgbG9hZGVkUGFnZXM6IG51bWJlcjtcbiAgbm9GaWxsZXJzSXRlbXM6IG51bWJlcjtcbiAgdG90YWw6IG51bWJlcjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LXdpZGdldC10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi93aWRnZXQtdGFibGUuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFdpZGdldFRhYmxlQ29tcG9uZW50IGV4dGVuZHMgRGF0YVdpZGdldENvbXBvbmVudCB7XG4gIG9wdGlvbnMkOiBPYnNlcnZhYmxlPFRhYmxlV2lkZ2V0T3B0aW9ucz47XG4gIGNvbHVtbnMkOiBPYnNlcnZhYmxlPENvbHVtbkRlZmluaXRpb25bXT47XG4gIG9wdGlvbnNDb3B5PzogVGFibGVXaWRnZXRPcHRpb25zO1xuICBmaWVsZHMkOiBPYnNlcnZhYmxlPEZpZWxkW10+O1xuICBzZWxlY3RlZElkcyQ6IE9ic2VydmFibGU8c3RyaW5nW10+O1xuICBBcnJheSA9IEFycmF5O1xuICBjdXJyZW50Q2xhc3Nlczogc3RyaW5nW10gPSBbXTtcbiAgc2VsZWN0ZWRJZHM6IHN0cmluZ1tdID0gW107XG4gIFdJREdFVF9IRUFERVJfSEVJR0hUID0gV0lER0VUX0hFQURFUl9IRUlHSFQ7XG4gIHByaXZhdGUgY2xhc3NlcyQ6IE9ic2VydmFibGU8Q2xhc3NbXT47XG4gIHByb3BlcnRpZXMkOiBPYnNlcnZhYmxlPHsgbGFiZWw6IHN0cmluZzsgcHJvcGVydHk6IHN0cmluZyB9W10+O1xuICBhbGxTZWxlY3RlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIGFyZUFsbFNlbGVjdGVkOiBib29sZWFuID0gZmFsc2U7XG4gIGFsbElkczogc3RyaW5nW10gPSBbXTtcbiAgY29udGV4dE1lbnVDbGlja2VkSWQ6IHN0cmluZyA9ICcnO1xuICBpc0NvbnRleHRNZW51T3BlbmVkJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgcXVpY2tPcmRlciQ6IE9ic2VydmFibGU8UmVzdWx0T3JkZXIgfCB1bmRlZmluZWQ+O1xuICBwcml2YXRlIF9yZWZyZXNoJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8dm9pZD4odW5kZWZpbmVkKTtcbiAgYWN0dWFsUGFnZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XG4gIHBhZ2luYXRpb24kOiBPYnNlcnZhYmxlPFBhZ2luYXRpb24+O1xuICBpc09wZW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzdG9yZTogU3RvcmU8YW55PixcbiAgICBlbDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7XG4gICAgc3VwZXIoc3RvcmUsIGVsKTtcblxuICAgIHRoaXMuY2xhc3NlcyQgPSB0aGlzLnN0b3JlLnNlbGVjdChDbGFzc1NlbGVjdG9ycy5jbGFzc2VzKTtcblxuICAgIHRoaXMuZmllbGRzJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMucmVzdWx0U2V0JCwgdGhpcy5jbGFzc2VzJF0pLnBpcGUoXG4gICAgICBtYXAoXG4gICAgICAgIChbcmVzdWx0U2V0LCBjbGFzc2VzXSkgPT5cbiAgICAgICAgICBbXG4gICAgICAgICAgICAuLi5JdGVtVXRpbHMuZ2V0RmllbGRzRm9yQ2xhc3NlcyhPYmplY3Qua2V5cyhyZXN1bHRTZXQuaXRlbXMpLCBjbGFzc2VzKSxcbiAgICAgICAgICAgIC4uLmJhc2VJdGVtUHJvcGVydGllcy5tYXAoKHApID0+ICh7IG5hbWU6IHAsIGlkOiBwIH0pIGFzIEZpZWxkKVxuICAgICAgICAgIF0gYXMgRmllbGRbXVxuICAgICAgKSxcbiAgICAgIG1hcCgoZmllbGRzKSA9PiBmaWVsZHMuZmlsdGVyKChmaWVsZCkgPT4gZmllbGQudHlwZSAhPT0gRmllbGRUeXBlLlJBVykpXG4gICAgKTtcblxuICAgIHRoaXMub3B0aW9ucyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMubWFuaWZlc3QkLnBpcGUobWFwKChtYW5pZmVzdCkgPT4gbWFuaWZlc3Qub3B0aW9ucyBhcyBUYWJsZVdpZGdldE9wdGlvbnMpKSxcbiAgICAgIHRoaXMucmVzdWx0U2V0JCxcbiAgICAgIHRoaXMuY2xhc3NlcyQsXG4gICAgICB0aGlzLmZpZWxkcyQsXG4gICAgICB0aGlzLnN0b3JlLnNlbGVjdChDb25maWdTZWxlY3RvcnMudGFibGVEZWZhdWx0QXR0cmlidXRlc0RlZmluaXRpb25zKVxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoKFtvcHRpb25zLCByZXN1bHRTZXQsIGNsYXNzZXMsIGZpZWxkcywgZGVmc10pID0+IHtcbiAgICAgICAgaWYgKCFvcHRpb25zLmNvbHVtbnMgfHwgb3B0aW9ucy5jb2x1bW5zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBJdGVtVXRpbHMuZ2V0QXR0cmlidXRlc0Zyb21ScyhyZXN1bHRTZXQsIGNsYXNzZXMsIGZpZWxkcywgZGVmcyk7XG4gICAgICAgICAgY29uc3QgdW5pcXVlUHJvcHMgPSBbLi4ubmV3IFNldChhdHRyaWJ1dGVzLm1hcCgoYXR0cikgPT4gYXR0ci50ZWNobmljYWxOYW1lKSldO1xuXG4gICAgICAgICAgb3B0aW9ucy5jb2x1bW5zID0gdW5pcXVlUHJvcHMubWFwKCh0ZWNobmljYWxOYW1lKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwcm9wZXJ0eSA9IGF0dHJpYnV0ZXMuZmluZCgoYXR0cikgPT4gYXR0ci50ZWNobmljYWxOYW1lID09PSB0ZWNobmljYWxOYW1lKSE7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBwcm9wZXJ0eTogdGVjaG5pY2FsTmFtZSxcbiAgICAgICAgICAgICAgbGFiZWw6IHByb3BlcnR5Lm5hbWUsXG4gICAgICAgICAgICAgIGF0dHJpYnV0ZUlkOiBwcm9wZXJ0eS5pZCxcbiAgICAgICAgICAgICAgZmllbGQ6IHByb3BlcnR5LmZpZWxkXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pIGFzIENvbHVtbkRlZmluaXRpb25bXTtcbiAgICAgICAgfVxuICAgICAgICBvcHRpb25zLnN0eWxlID0gb3B0aW9ucy5zdHlsZSA/PyBERUZBVUxUX1RBQkxFX1dJREdFVF9TVFlMRS52YWx1ZTtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnM7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5vcHRpb25zJC5waXBlKGZpbHRlcigob3B0KSA9PiAhIW9wdCkpLnN1YnNjcmliZSgob3B0aW9ucykgPT4ge1xuICAgICAgICB0aGlzLm9wdGlvbnNDb3B5ID0geyAuLi4oc3RydWN0dXJlZENsb25lKG9wdGlvbnMpIGFzIFRhYmxlV2lkZ2V0T3B0aW9ucykgfTtcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMuYWxsSXRlbXMkLnN1YnNjcmliZSgoYWxsT2JqZWN0cykgPT4gKHRoaXMuYWxsSWRzID0gYWxsT2JqZWN0cy5tYXAoKG9iaikgPT4gb2JqLmlkKSkpKTtcblxuICAgIGNvbnN0IEhFQURFUl9TSVpFID0gMzA7XG4gICAgY29uc3QgUEFHSU5BVElPTl9TSVpFID0gMzU7XG4gICAgY29uc3QgTElORV9TSVpFID0gMzA7XG5cbiAgICB0aGlzLnBhZ2luYXRpb24kID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmFsbEl0ZW1zJCxcbiAgICAgIHRoaXMuYWN0dWFsUGFnZSQsXG4gICAgICB0aGlzLndpZGdldFNpemUkLFxuICAgICAgdGhpcy5yZXN1bHRTZXQkLFxuICAgICAgdGhpcy5kaXNwbGF5SGVhZGVyJCxcbiAgICAgIHRoaXMubWFuaWZlc3QkXG4gICAgXSkucGlwZShcbiAgICAgIGRlYm91bmNlVGltZSgxMDApLFxuICAgICAgbWFwKChbaXRlbXMsIGFjdHVhbFBhZ2UsIHNpemUsIHJzLCBoZWFkZXJQcmVzZW50LCBtYW5pZmVzdF0pID0+IHtcbiAgICAgICAgY29uc3Qgcm93cyA9IE1hdGgubWF4KFxuICAgICAgICAgIDEsXG4gICAgICAgICAgTWF0aC5mbG9vcihcbiAgICAgICAgICAgIChzaXplLmhlaWdodCAtIEhFQURFUl9TSVpFIC0gUEFHSU5BVElPTl9TSVpFIC0gKGhlYWRlclByZXNlbnQgPyBXSURHRVRfSEVBREVSX0hFSUdIVC52YWx1ZSA6IDApKSAvIExJTkVfU0laRVxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgdG90YWwgPSBPYmplY3QudmFsdWVzKHJzLmNvdW50ID8/IHt9KS5yZWR1Y2UoKHAsIGMpID0+IGMuY291bnQgKyBwLCAwKTtcbiAgICAgICAgY29uc3QgbG9hZGVkUGFnZXMgPSBNYXRoLmNlaWwoaXRlbXMubGVuZ3RoIC8gcm93cyk7XG4gICAgICAgIGlmIChhY3R1YWxQYWdlID4gMCAmJiBhY3R1YWxQYWdlID49IGxvYWRlZFBhZ2VzIC0gMikge1xuICAgICAgICAgIChBcnJheS5pc0FycmF5KG1hbmlmZXN0LmRhdGFzb3VyY2UpXG4gICAgICAgICAgICA/IG1hbmlmZXN0LmRhdGFzb3VyY2VcbiAgICAgICAgICAgIDogKFttYW5pZmVzdC5kYXRhc291cmNlXS5maWx0ZXIoKHMpID0+ICEhcykgYXMgc3RyaW5nW10pXG4gICAgICAgICAgKS5mb3JFYWNoKChpZCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5mZXRjaE1vcmVJdGVtcyh7XG4gICAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgICAgd2lkZ2V0VHlwZTogJ3RhYmxlJ1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYWdlID0gYWN0dWFsUGFnZSA8PSBsb2FkZWRQYWdlcyA/IGFjdHVhbFBhZ2UgOiBNYXRoLm1heCgwLCBsb2FkZWRQYWdlcyAtIDEpO1xuICAgICAgICBjb25zdCBmaWx0ZXJlZCA9IGl0ZW1zLmZpbHRlcigoXywgaWR4KSA9PiBpZHggPj0gcm93cyAqIHBhZ2UgJiYgaWR4IDwgcm93cyAqIChwYWdlICsgMSkpO1xuICAgICAgICBjb25zdCBmaWx0ZXJlZFdpdGhGaWxsZXJzID1cbiAgICAgICAgICBmaWx0ZXJlZC5sZW5ndGggPT09IHJvd3NcbiAgICAgICAgICAgID8gZmlsdGVyZWRcbiAgICAgICAgICAgIDogZmlsdGVyZWQuY29uY2F0KFxuICAgICAgICAgICAgICAgIG5ldyBBcnJheShyb3dzIC0gZmlsdGVyZWQubGVuZ3RoKVxuICAgICAgICAgICAgICAgICAgLmZpbGwoe1xuICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YTogeyAnX193aWRnZXQtdGFibGUtZmlsbGVyJzogdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICB9IGFzIHVua25vd24gYXMgSXRlbSlcbiAgICAgICAgICAgICAgICAgIC5tYXAoKG9iaikgPT4gKHsgLi4ub2JqLCBpZDogdjQoKSB9KSlcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByb3dzLFxuICAgICAgICAgIHBhZ2UsXG4gICAgICAgICAgaXRlbXM6IGZpbHRlcmVkV2l0aEZpbGxlcnMsXG4gICAgICAgICAgbm9GaWxsZXJzSXRlbXM6IGZpbHRlcmVkLmxlbmd0aCxcbiAgICAgICAgICB0b3RhbCxcbiAgICAgICAgICB0b3RhbFBhZ2VzOiBNYXRoLmNlaWwodG90YWwgLyByb3dzKSxcbiAgICAgICAgICBsb2FkZWQ6IGl0ZW1zLmxlbmd0aCxcbiAgICAgICAgICBsb2FkZWRQYWdlc1xuICAgICAgICB9O1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLnBhZ2luYXRpb24kLnBpcGUoYXVkaXRUaW1lKDIwMCkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLnJlZnJlc2goKSkpO1xuXG4gICAgdGhpcy5jb2x1bW5zJCA9IHRoaXMub3B0aW9ucyQucGlwZShcbiAgICAgIG1hcCgob3B0aW9ucykgPT4gb3B0aW9ucz8uY29sdW1ucyA/PyBbXSksXG4gICAgICB0YXAoKCkgPT4gc2V0VGltZW91dCgoKSA9PiB0aGlzLnJlZnJlc2goKSwgNTAwKSlcbiAgICApO1xuXG4gICAgdGhpcy5pc0NvbnRleHRNZW51T3BlbmVkJCA9IHRoaXMuc3RvcmUuc2VsZWN0KENvbnRleHRNZW51U2VsZWN0b3JzLm9wZW5lZCk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5yZXN1bHRTZXQkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGZpbHRlcigocnMpID0+ICEhcnMpLFxuICAgICAgICAgIG1hcCgocnMpID0+IE9iamVjdC5rZXlzKHJzLml0ZW1zKSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChjbGFzc2VzKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuY3VycmVudENsYXNzZXMubGVuZ3RoID4gMCAmJiAhZXF1YWwodGhpcy5jdXJyZW50Q2xhc3NlcywgY2xhc3NlcykpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5vcHRpb25zQ29weSkge1xuICAgICAgICAgICAgICB0aGlzLm9wdGlvbnNDb3B5ID0ge307XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWxldGUgdGhpcy5vcHRpb25zQ29weS5jb2x1bW5zO1xuICAgICAgICAgICAgdGhpcy5lbWl0TWFuaWZlc3QoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5jdXJyZW50Q2xhc3NlcyA9IGNsYXNzZXM7XG4gICAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuc2VsZWN0ZWRJZHMkID0gdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnNlbGVjdGVkSXRlbUlkcyk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMuc2VsZWN0ZWRJZHMkLnN1YnNjcmliZSgoc2VsZWN0ZWRJZHMpID0+IHRoaXMuc2VsZWN0ZWRJZHMgPT09IHNlbGVjdGVkSWRzKSk7XG5cbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENsYXNzQWN0aW9ucy5sb2FkKCkpO1xuXG4gICAgdGhpcy5wcm9wZXJ0aWVzJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMucmVzdWx0U2V0JCwgdGhpcy5jbGFzc2VzJCwgdGhpcy5maWVsZHMkXSkucGlwZShcbiAgICAgIG1hcCgoW3JzLCBjbGFzc2VzLCBmaWVsZHNdKSA9PiBbXG4gICAgICAgIC4uLk9iamVjdC5rZXlzKHJzLml0ZW1zKVxuICAgICAgICAgIC5tYXAoKGNsYXNzSWQpID0+IChjbGFzc2VzLmZpbmQoKGNsKSA9PiBjbC5pZCA9PT0gY2xhc3NJZCkgPz8geyBhdHRyaWJ1dGVzOiBbXSB9KS5hdHRyaWJ1dGVzKVxuICAgICAgICAgIC5mbGF0KClcbiAgICAgICAgICAubWFwKChhdHRyKSA9PiAoeyB0ZWNobmljYWxOYW1lOiBhdHRyLnRlY2huaWNhbE5hbWUsIG5hbWU6IGF0dHIubmFtZSB9KSlcbiAgICAgIF0pLFxuICAgICAgbWFwKChwcm9wcykgPT4ge1xuICAgICAgICBjb25zdCBzb3J0ZWRQcm9wcyA9IFsuLi5wcm9wc107XG4gICAgICAgIHNvcnRlZFByb3BzLnNvcnQoKHBBLCBwQikgPT4gcEEubmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpLmxvY2FsZUNvbXBhcmUocEIubmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpKSk7XG4gICAgICAgIHJldHVybiBzb3J0ZWRQcm9wcztcbiAgICAgIH0pLFxuICAgICAgbWFwKChwcm9wcykgPT4gcHJvcHMubWFwKChwcm9wKSA9PiAoeyBsYWJlbDogcHJvcC5uYW1lLCBwcm9wZXJ0eTogcHJvcC50ZWNobmljYWxOYW1lIH0pKSksXG4gICAgICB0YXAoKCkgPT4gc2V0VGltZW91dCgoKSA9PiB0aGlzLnJlZnJlc2goKSwgNTAwKSlcbiAgICApO1xuXG4gICAgdGhpcy5hbGxTZWxlY3RlZCQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLnNlbGVjdGVkSWRzJCwgdGhpcy5hbGxJdGVtcyRdKS5waXBlKFxuICAgICAgbWFwKChbc2VsZWN0ZWRJZHMsIGFsbE9iamVjdHNdKSA9PiB7XG4gICAgICAgIGNvbnN0IGFsbElkcyA9IGFsbE9iamVjdHMubWFwKChvYmplY3QpID0+IG9iamVjdC5pZCk7XG4gICAgICAgIHJldHVybiAhYWxsSWRzLmZpbmQoKGlkKSA9PiAhc2VsZWN0ZWRJZHMuaW5jbHVkZXMoaWQpKTtcbiAgICAgIH0pLFxuICAgICAgdGFwKChhbGxTZWxlY3RlZCkgPT4gKHRoaXMuYXJlQWxsU2VsZWN0ZWQgPSBhbGxTZWxlY3RlZCkpXG4gICAgKTtcblxuICAgIHRoaXMucXVpY2tPcmRlciQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucXVpY2tPcmRlciksIHRoaXMuZGF0YXNvdXJjZUlkcyRdKS5waXBlKFxuICAgICAgbWFwKChbb3JkZXIsIG5xc10pID0+IChucXMubGVuZ3RoID09PSAxID8gb3JkZXJbbnFzWzBdXSA6IHVuZGVmaW5lZCkpXG4gICAgKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQodGhpcy5fcmVmcmVzaCQucGlwZShkZWxheSgxMDApKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpKSk7XG4gIH1cblxuICByZWZyZXNoKCkge1xuICAgIHRoaXMuX3JlZnJlc2gkLm5leHQoKTtcbiAgICB0aGlzLmlzT3BlbiA9ICF0aGlzLmlzT3BlbjtcbiAgfVxuXG4gIG92ZXJyaWRlIGVtaXRNYW5pZmVzdCgpIHtcbiAgICB0aGlzLm1hbmlmZXN0TW9kaWZpZWQuZW1pdCh7XG4gICAgICB3aWRnZXRJbmRleDogdGhpcy53aWRnZXRJbmRleCxcbiAgICAgIG1hbmlmZXN0OiB7IC4uLnRoaXMubWFuaWZlc3QsIG9wdGlvbnM6IHRoaXMub3B0aW9uc0NvcHkgfVxuICAgIH0pO1xuICB9XG5cbiAgYWRkQ29sdW1uKCkge1xuICAgIGlmICghdGhpcy5vcHRpb25zQ29weT8uY29sdW1ucykge1xuICAgICAgdGhpcy5vcHRpb25zQ29weSA9IHsgY29sdW1uczogW10gfTtcbiAgICB9XG4gICAgdGhpcy5vcHRpb25zQ29weS5jb2x1bW5zPy5wdXNoKHsgbGFiZWw6ICcnLCBwcm9wZXJ0eTogJycgfSk7XG4gICAgdGhpcy5yZWZyZXNoKCk7XG4gIH1cblxuICBjaGFuZ2VQcm9wZXJ0eU5hbWUoJGV2ZW50OiBhbnksIGNvbHVtbkRlZjogQ29sdW1uRGVmaW5pdGlvbikge1xuICAgIGNvbHVtbkRlZi5wcm9wZXJ0eSA9ICRldmVudDtcbiAgICB0aGlzLnJlZnJlc2goKTtcbiAgfVxuXG4gIGNoYW5nZUxhYmVsKCRldmVudDogRXZlbnQsIGNvbHVtbkRlZjogQ29sdW1uRGVmaW5pdGlvbikge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBuZXdMYWJlbCA9ICRldmVudC5jdXJyZW50VGFyZ2V0LnZhbHVlO1xuICAgIGlmIChjb2x1bW5EZWYubGFiZWwgIT09IG5ld0xhYmVsKSB7XG4gICAgICBjb2x1bW5EZWYubGFiZWwgPSBuZXdMYWJlbDtcbiAgICAgIHRoaXMucmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIGRlbGV0ZUNvbHVtbihpOiBudW1iZXIpIHtcbiAgICB0aGlzLm9wdGlvbnNDb3B5Py5jb2x1bW5zPy5zcGxpY2UoaSwgMSk7XG4gICAgdGhpcy5yZWZyZXNoKCk7XG4gIH1cblxuICBzZWxlY3Rpb24oJGV2ZW50OiBNb3VzZUV2ZW50LCBpdGVtOiBJdGVtKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLnNlbGVjdCh7IGlkOiBpdGVtLmlkLCBjdW11bGF0aXZlOiAhJGV2ZW50LnNoaWZ0S2V5IH0pKTtcbiAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBjb250ZXh0TWVudSgkZXZlbnQ6IE1vdXNlRXZlbnQsIGl0ZW06IEl0ZW0pIHtcbiAgICBpZiAodGhpcy5tYW5pZmVzdC5jb250ZXh0TWVudSAhPT0gZmFsc2UpIHtcbiAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgICAgQ29udGV4dE1lbnVBY3Rpb25zLm9wZW4oe1xuICAgICAgICAgIGl0ZW1JZDogaXRlbS5pZCxcbiAgICAgICAgICBjbGllbnRYOiAkZXZlbnQuY2xpZW50WCxcbiAgICAgICAgICBjbGllbnRZOiAkZXZlbnQuY2xpZW50WSxcbiAgICAgICAgICByZXN1bHRTZXQ6IEFycmF5LmlzQXJyYXkodGhpcy5tYW5pZmVzdC5kYXRhc291cmNlKSA/IHRoaXMubWFuaWZlc3QuZGF0YXNvdXJjZVswXSA6IHRoaXMubWFuaWZlc3QuZGF0YXNvdXJjZSxcbiAgICAgICAgICBmcm9tOiAndGFibGUnLFxuICAgICAgICAgIGFsbG93T2JqZWN0Q3JlYXRpb246IGZhbHNlXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgICAgdGhpcy5jb250ZXh0TWVudUNsaWNrZWRJZCA9IGl0ZW0uaWQ7XG4gICAgfVxuICB9XG5cbiAgaW52ZXJ0TGF5ZXJzKGlkeDogbnVtYmVyLCBpZHhXaXRoOiBudW1iZXIpIHtcbiAgICBpZiAoISF0aGlzLm9wdGlvbnNDb3B5ICYmICEhdGhpcy5vcHRpb25zQ29weS5jb2x1bW5zKSB7XG4gICAgICBjb25zdCB0bXAgPSB0aGlzLm9wdGlvbnNDb3B5LmNvbHVtbnNbaWR4V2l0aF07XG4gICAgICB0aGlzLm9wdGlvbnNDb3B5LmNvbHVtbnNbaWR4V2l0aF0gPSB0aGlzLm9wdGlvbnNDb3B5LmNvbHVtbnNbaWR4XTtcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkuY29sdW1uc1tpZHhdID0gdG1wO1xuICAgICAgdGhpcy5yZWZyZXNoKCk7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0QWxsKCRldmVudDogYW55KSB7XG4gICAgaWYgKCRldmVudCkge1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLnNlbGVjdE1hbnkoeyBpZHM6IHRoaXMuYWxsSWRzIH0pKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLnNlbGVjdE1hbnkoeyBpZHM6IFtdIH0pKTtcbiAgICB9XG4gIH1cblxuICBzZXRPcmRlcihjb2x1bW46IENvbHVtbkRlZmluaXRpb24pIHtcbiAgICB0aGlzLmRhdGFzb3VyY2VJZHMkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgZmlsdGVyKChucXMpID0+IG5xcy5sZW5ndGggPT09IDEpLFxuICAgICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnF1aWNrT3JkZXIkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoW25xcywgYWN0dWFsT3JkZXJdKSA9PiB7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5xdWlja09yZGVyKHtcbiAgICAgICAgICAgIGRhdGFzb3VyY2VJZDogbnFzWzBdLFxuICAgICAgICAgICAgYXR0cmlidXRlOiBjb2x1bW4uYXR0cmlidXRlSWQgPz8gJycsXG4gICAgICAgICAgICBhc2M6IHRoaXMubmV4dE9yZGVyKGNvbHVtbiwgYWN0dWFsT3JkZXIpXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgdXBkYXRlU3R5bGUoJGV2ZW50OiBzdHJpbmcgfCBib29sZWFuLCBwcm9wOiBrZXlvZiBUYWJsZVdpZGdldFN0eWxlKSB7XG4gICAgaWYgKHRoaXMub3B0aW9uc0NvcHkgJiYgdGhpcy5vcHRpb25zQ29weS5zdHlsZSkge1xuICAgICAgc3dpdGNoIChwcm9wKSB7XG4gICAgICAgIGNhc2UgJ2hlYWRlclRleHRBbGlnbic6XG4gICAgICAgIGNhc2UgJ2NlbGxUZXh0QWxpZ24nOlxuICAgICAgICAgIHRoaXMub3B0aW9uc0NvcHkuc3R5bGVbcHJvcF0gPSAkZXZlbnQgYXMgc3RyaW5nO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdzaG93VmVydGljYWxTZXBhcmF0b3InOlxuICAgICAgICAgIHRoaXMub3B0aW9uc0NvcHkuc3R5bGVbcHJvcF0gPSAkZXZlbnQgYXMgYm9vbGVhbjtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG5leHRPcmRlcihjb2x1bW46IENvbHVtbkRlZmluaXRpb24sIGFjdHVhbE9yZGVyOiBSZXN1bHRPcmRlciB8IHVuZGVmaW5lZCk6IE9yZGVyVmFsdWUge1xuICAgIGlmICghYWN0dWFsT3JkZXIgfHwgYWN0dWFsT3JkZXIuYXR0cmlidXRlICE9PSBjb2x1bW4uYXR0cmlidXRlSWQpIHtcbiAgICAgIHJldHVybiAnYXNjJztcbiAgICB9XG4gICAgcmV0dXJuIGFjdHVhbE9yZGVyLmFzYyA9PT0gJ2FzYycgPyAnZGVzYycgOiBhY3R1YWxPcmRlci5hc2MgPT09ICdkZXNjJyA/IHVuZGVmaW5lZCA6ICdhc2MnO1xuICB9XG5cbiAgdHJhY2tPYmplY3RzKGluZGV4OiBudW1iZXIsIGl0ZW06IEl0ZW0pIHtcbiAgICByZXR1cm4gaXRlbS5pZDtcbiAgfVxuXG4gIGdvVG9QYWdlKG51bWJlcjogbnVtYmVyKSB7XG4gICAgdGhpcy5hY3R1YWxQYWdlJC5uZXh0KG51bWJlcik7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgQUxJR05NRU5UX09QVElPTlMgPSBBTElHTk1FTlRfT1BUSU9OUztcbn1cbiIsIjxwcnktd2lkZ2V0LXRhYmxlLWNzcz48L3ByeS13aWRnZXQtdGFibGUtY3NzPlxuPGRpdiBjbGFzcz1cIm8td2lkZ2V0IG8td2lkZ2V0LS10YWJsZVwiPlxuICBAaWYgKGRpc3BsYXlIZWFkZXIkIHwgYXN5bmMpIHtcbiAgICA8cHJ5LXdpZGdldC1oZWFkZXJcbiAgICAgIFtkYXRhc291cmNlSWRzXT1cIihkYXRhc291cmNlSWRzJCB8IGFzeW5jKSA/PyBbXVwiXG4gICAgICBbd2lkZ2V0SW5kZXhdPVwid2lkZ2V0SW5kZXhcIlxuICAgICAgW21hbmlmZXN0XT1cIm1hbmlmZXN0XCJcbiAgICAgIChtYW5pZmVzdE1vZGlmaWVkKT1cIm1hbmlmZXN0TW9kaWZpZWQuZW1pdCgkZXZlbnQpXCJcbiAgICAgICNoZWFkZXJcbiAgICAgIFtoZWFkZXJPcHRpb25zXT1cIihkaXNwbGF5SGVhZGVyJCB8IGFzeW5jKSA/PyB7fVwiXG4gICAgICAoY2xpY2spPVwicmVmcmVzaCgpXCJcbiAgICA+XG4gICAgICA8cHJ5LXNldHRpbmdzXG4gICAgICAgIChjbGljayk9XCJyZWZyZXNoKClcIlxuICAgICAgICAoc2F2ZVRyaWdnZXJlZCk9XCJlbWl0TWFuaWZlc3QoKVwiXG4gICAgICAgIChjaGFuZ2VUaXRsZSk9XCJjaGFuZ2VXaWRnZXRUaXRsZSgkZXZlbnQpXCJcbiAgICAgICAgW2hlYWRlclByZXNlbnRdPVwiZGlzcGxheUhlYWRlciQgfCBhc3luY1wiXG4gICAgICAgIFt3aWRnZXRJbmRleF09XCJ3aWRnZXRJbmRleFwiXG4gICAgICAgIFtoZWFkZXJdPVwiaGVhZGVyXCJcbiAgICAgICAgW29wZW4kXT1cIm9wZW4kXCJcbiAgICAgICAgKHRyaWdnZXJDbGljayk9XCJ0aGlzLnJlZnJlc2goKVwiXG4gICAgICAgIGNsYXNzPVwiby1zZXR0aW5nc1wiXG4gICAgICA+XG4gICAgICAgIEBpZiAob3B0aW9uc0NvcHkgJiYgb3B0aW9uc0NvcHkuc3R5bGUpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwidGFibGVfc3R5bGVfaGVhZGVyVGV4dEFsaWduXCI+e3tcbiAgICAgICAgICAgICAgJ0Bwcnkud2lkZ2V0LnRhYmxlLmhlYWRlclRleHRBbGlnbicgfCBpMThuXG4gICAgICAgICAgICB9fTwvbGFiZWw+XG4gICAgICAgICAgICA8cHJ5LXNlbGVjdFxuICAgICAgICAgICAgICBbaXRlbXNdPVwiQUxJR05NRU5UX09QVElPTlNcIlxuICAgICAgICAgICAgICBbbmdNb2RlbF09XCJvcHRpb25zQ29weS5zdHlsZS5oZWFkZXJUZXh0QWxpZ25cIlxuICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVTdHlsZSgkZXZlbnQsICdoZWFkZXJUZXh0QWxpZ24nKVwiXG4gICAgICAgICAgICAgIGlkPVwidGFibGVfc3R5bGVfaGVhZGVyVGV4dEFsaWduXCJcbiAgICAgICAgICAgICAgaTE4blByZWZpeD1cIkBwcnkud2lkZ2V0LnRhYmxlLmFsaWduLlwiXG4gICAgICAgICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJ0YWJsZV9zdHlsZV9jZWxsVGV4dEFsaWduXCI+e3tcbiAgICAgICAgICAgICAgJ0Bwcnkud2lkZ2V0LnRhYmxlLmNlbGxUZXh0QWxpZ24nIHwgaTE4blxuICAgICAgICAgICAgfX08L2xhYmVsPlxuICAgICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgICAgW2l0ZW1zXT1cIkFMSUdOTUVOVF9PUFRJT05TXCJcbiAgICAgICAgICAgICAgW25nTW9kZWxdPVwib3B0aW9uc0NvcHkuc3R5bGUuY2VsbFRleHRBbGlnblwiXG4gICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZVN0eWxlKCRldmVudCwgJ2NlbGxUZXh0QWxpZ24nKVwiXG4gICAgICAgICAgICAgIGlkPVwidGFibGVfc3R5bGVfY2VsbFRleHRBbGlnblwiXG4gICAgICAgICAgICAgIGkxOG5QcmVmaXg9XCJAcHJ5LndpZGdldC50YWJsZS5hbGlnbi5cIlxuICAgICAgICAgICAgPjwvcHJ5LXNlbGVjdD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZCB1LWRpc3BsYXktZmxleCAtcm93IC1qdXN0aWZ5LXNwYWNlLWJldHdlZW4gby13aWRnZXQtLXRhYmxlX192ZXJ0aWNhbC1zZXBhcmF0b3JcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJ0YWJsZV9zdHlsZV92ZXJ0aWNhbFNlcGFyYXRvclwiPnt7XG4gICAgICAgICAgICAgICdAcHJ5LndpZGdldC50YWJsZS52ZXJ0aWNhbFNlcGFyYXRvcicgfCBpMThuXG4gICAgICAgICAgICB9fTwvbGFiZWw+XG4gICAgICAgICAgICA8cHJ5LWNoZWNrYm94XG4gICAgICAgICAgICAgIFtuZ01vZGVsXT1cIm9wdGlvbnNDb3B5LnN0eWxlLnNob3dWZXJ0aWNhbFNlcGFyYXRvclwiXG4gICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZVN0eWxlKCRldmVudCwgJ3Nob3dWZXJ0aWNhbFNlcGFyYXRvcicpXCJcbiAgICAgICAgICAgICAgaWQ9XCJ0YWJsZV9zdHlsZV92ZXJ0aWNhbFNlcGFyYXRvclwiXG4gICAgICAgICAgICA+PC9wcnktY2hlY2tib3g+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiby1zZXR0aW5nc19fcG9wdXBfX2NvbnRlbnRfX2FjdGlvbnNcIj5cbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImEtYnRuIGEtYnRuLS1pY29uLXRleHQgLWxpbmstbGlrZVwiIChjbGljayk9XCJhZGRDb2x1bW4oKVwiPlxuICAgICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJwb3N0X2FkZFwiPjwvcHJ5LWljb24+XG4gICAgICAgICAgICB7eyAnQHByeS53aWRnZXQudGFibGUuYWRkQ29sdW1uJyB8IGkxOG4gfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgQGZvciAoY29sdW1uRGVmIG9mIG9wdGlvbnNDb3B5Py5jb2x1bW5zID8/IFtdOyB0cmFjayBjb2x1bW5EZWYuYXR0cmlidXRlSWQ7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm8tc2V0dGluZ3NfX3BvcHVwX19jb250ZW50X19maWVsZHNcIiAoY2xpY2spPVwicmVmcmVzaCgpXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1zZXR0aW5nc19fcG9wdXBfX2NvbnRlbnRfX2ZpZWxkc19faGVhZFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1idG4tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICBAaWYgKGkgPiAwKSB7XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImEtYnRuIGEtYnRuLS1pY29uLW9ubHlcIiAoY2xpY2spPVwiaW52ZXJ0TGF5ZXJzKGksIGkgLSAxKVwiPlxuICAgICAgICAgICAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImZsZWNoZV9oYXV0XCI+PC9wcnktaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPnt7ICdAcHJ5LmFjdGlvbi5tb3ZlVXAnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYgKGkgPCAob3B0aW9uc0NvcHk/LmNvbHVtbnM/Lmxlbmd0aCA/PyAwKSAtIDEpIHtcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYS1idG4gYS1idG4tLWljb24tb25seVwiIChjbGljayk9XCJpbnZlcnRMYXllcnMoaSwgaSArIDEpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwiZmxlY2hlX2Jhc1wiPjwvcHJ5LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj57eyAnQHByeS5hY3Rpb24ubW92ZURvd24nIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm8tc2V0dGluZ3NfX3BvcHVwX19jb250ZW50X19maWVsZHNfX2NvbnRlbnRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJ0YWJsZV9wcm9wZXJ0eVwiPnt7ICdAcHJ5LndpZGdldC50YWJsZS5wcm9wZXJ0eScgfCBpMThuIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8cHJ5LXNlbGVjdFxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlZnJlc2goKVwiXG4gICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VQcm9wZXJ0eU5hbWUoJGV2ZW50LCBjb2x1bW5EZWYpXCJcbiAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJwcm9wZXJ0aWVzJCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImNvbHVtbkRlZi5wcm9wZXJ0eVwiXG4gICAgICAgICAgICAgICAgICBiaW5kTGFiZWw9XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICBiaW5kVmFsdWU9XCJwcm9wZXJ0eVwiXG4gICAgICAgICAgICAgICAgICBpZD1cInRhYmxlX3Byb3BlcnR5XCJcbiAgICAgICAgICAgICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbFwiIGZvcj1cInRhYmxlX2xhYmVsXCI+e3sgJ0Bwcnkud2lkZ2V0LnRhYmxlLmxhYmVsJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgaWQ9XCJ0YWJsZV9sYWJlbFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAoaW5wdXQpPVwiY2hhbmdlTGFiZWwoJGV2ZW50LCBjb2x1bW5EZWYpXCJcbiAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJjb2x1bW5EZWYubGFiZWxcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVDb2x1bW4oaSlcIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiZGVsZXRlXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLWljb24tdGV4dCAtbGluay1saWtlXCJcbiAgICAgICAgICAgICAgZGF0YS1mdW5jPVwiZGVsZXRlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJkZWxldGVcIiBbd2lkdGhdPVwiMTlcIiBbaGVpZ2h0XT1cIjE5XCI+PC9wcnktaWNvbj5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgJ0Bwcnkud2lkZ2V0LnRhYmxlLmRlbGV0ZUNvbHVtbicgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvcHJ5LXNldHRpbmdzPlxuICAgIDwvcHJ5LXdpZGdldC1oZWFkZXI+XG4gIH1cblxuICA8ZGl2IGNsYXNzPVwiYS10YWJsZS13cmFwcGVyXCI+XG4gICAgQGlmIChwYWdpbmF0aW9uJCB8IGFzeW5jOyBhcyBwYWdpbmF0aW9uKSB7XG4gICAgICBAaWYgKHBhZ2luYXRpb24/Lml0ZW1zID8/IFtdOyBhcyBhbGxPYmplY3RzKSB7XG4gICAgICAgIEBpZiAocGFnaW5hdGlvbi5ub0ZpbGxlcnNJdGVtcyA9PT0gMCkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJuby1yZXN1bHRcIiBbc3R5bGUuaGVpZ2h0LiVdPVwicGFnaW5hdGlvbi50b3RhbFBhZ2VzID4gMCA/IDgwIDogMTAwXCI+XG4gICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgIGNsYXNzPVwibm8tcmVzdWx0X19zZWFyY2hcIlxuICAgICAgICAgICAgICBzcmM9XCIuLi8uLi8uLi9hc3NldHMvc3Zncy9wcnlfcmVjaGVyY2hlX3Bhc19kZV9yZXN1bHRhdC5zdmdcIlxuICAgICAgICAgICAgICBhbHQ9XCJ7eyAnQHByeS53aWRnZXQudGFibGUuZW1wdHknIHwgaTE4biB9fVwiXG4gICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuby1yZXN1bHRfX3RleHRcIj57eyAnQHByeS53aWRnZXQudGFibGUuZW1wdHknIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfSBAZWxzZSBpZiAocGFnaW5hdGlvbi5ub0ZpbGxlcnNJdGVtcyA+IDApIHtcbiAgICAgICAgICBAaWYgKChzZWxlY3RlZElkcyQgfCBhc3luYykgPz8gW107IGFzIHNlbGVjdGVkSWRzKSB7XG4gICAgICAgICAgICBAaWYgKChjb2x1bW5zJCB8IGFzeW5jKSA/PyBbXTsgYXMgY29sdW1ucykge1xuICAgICAgICAgICAgICA8dGFibGVcbiAgICAgICAgICAgICAgICBjbGFzcz1cImEtdGFibGVcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy4tc2hvdy12ZXJ0aWNhbC1zZXBhcmF0b3JdPVwib3B0aW9uc0NvcHk/LnN0eWxlPy5zaG93VmVydGljYWxTZXBhcmF0b3JcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0Bwcnkud2lkZ2V0LnRhYmxlLmRlc2NyaXB0aW9uJyB8IGkxOG5cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGFsbE9iamVjdHM/Lmxlbmd0aCA/PyAwID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgIDx0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwcnktY2hlY2tib3ggW25nTW9kZWxdPVwiYXJlQWxsU2VsZWN0ZWRcIiAobmdNb2RlbENoYW5nZSk9XCJzZWxlY3RBbGwoJGV2ZW50KVwiPjwvcHJ5LWNoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoY29sdW1uIG9mIGNvbHVtbnM7IHRyYWNrIGNvbHVtbi5hdHRyaWJ1dGVJZDsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8dGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6YWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldE9yZGVyKGNvbHVtbilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiJ3UtdHh0LScgKyBvcHRpb25zQ29weT8uc3R5bGU/LmhlYWRlclRleHRBbGlnblwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgY29sdW1uLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChxdWlja09yZGVyJCB8IGFzeW5jOyBhcyBxdWlja09yZGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAocXVpY2tPcmRlci5hdHRyaWJ1dGUgPT09IGNvbHVtbi5hdHRyaWJ1dGVJZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcnktaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25TdmddPVwicXVpY2tPcmRlci5hc2MgPyAnY2hldnJvbl90b3AnIDogJ2NoZXZyb25fYm90dG9tJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cIjEyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt3aWR0aF09XCIxMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvcHJ5LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBhbGxPYmplY3RzOyB0cmFjayBpdGVtLmlkKSB7XG4gICAgICAgICAgICAgICAgICAgIDx0clxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJzZWxlY3RlZElkcy5pbmNsdWRlcyhpdGVtLmlkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmNvbnRleHQtbWVudS1zZWxlY3RlZF09XCJjb250ZXh0TWVudUNsaWNrZWRJZCA9PT0gaXRlbS5pZCAmJiAoaXNDb250ZXh0TWVudU9wZW5lZCQgfCBhc3luYylcIlxuICAgICAgICAgICAgICAgICAgICAgIChjb250ZXh0bWVudSk9XCJjb250ZXh0TWVudSgkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICBkZXRhY2hSb3dcbiAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWRWYWx1ZSk9XCJzZWxlY3Rpb24oJGV2ZW50LCBpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZpbGxlcl09XCJpdGVtLm1ldGFkYXRhIVsnX193aWRnZXQtdGFibGUtZmlsbGVyJ11cIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY2hlY2tib3gtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHByeS1jaGVja2JveCBbbmdNb2RlbF09XCJzZWxlY3RlZElkcy5pbmNsdWRlcyhpdGVtLmlkKVwiPjwvcHJ5LWNoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgQGZvciAoY29sdW1uIG9mIGNvbHVtbnM7IHRyYWNrIGNvbHVtbi5hdHRyaWJ1dGVJZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidS1lbGxpcHNpc1wiIFtuZ0NsYXNzXT1cIid1LXR4dC0nICsgb3B0aW9uc0NvcHk/LnN0eWxlPy5jZWxsVGV4dEFsaWduXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoY29sdW1uLnByb3BlcnR5ID09PSAnbWV0YWRhdGEnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByeS1tZXRhZGF0YSBbaXRlbV09XCJpdGVtXCI+PC9wcnktbWV0YWRhdGE+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChjb2x1bW4ucHJvcGVydHkgPT09ICdvQ2xhc3MnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJjb250ZW50LWltZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cIjI1XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3dpZHRoXT1cIjI1XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJpdGVtIHwgdHJhbnNsYXRlSXRlbVRvU3ltYm9sIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWx0XT1cIml0ZW0ub0NsYXNzIHwgdHJhbnNsYXRlSWQ6IHsgdHlwZTogJ2NsYXNzJywgb3V0cHV0OiAnbmFtZScgfSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIVsnbWV0YWRhdGEnLCAnb0NsYXNzJ10uaW5jbHVkZXMoY29sdW1uLnByb3BlcnR5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcnktZXhwYW5kLXZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiaXRlbSB8IGdldFZhbHVlOiBjb2x1bW4ucHJvcGVydHkgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmllbGRdPVwiY29sdW1uLmZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9wcnktZXhwYW5kLXZhbHVlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBAaWYgKHBhZ2luYXRpb24udG90YWxQYWdlcyA+IDApIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidS1kaXNwbGF5LWZsZXhcIj5cbiAgICAgICAgICAgIDxwcnktcGFnaW5hdG9yXG4gICAgICAgICAgICAgIFt0b3RhbEl0ZW1OYl09XCJwYWdpbmF0aW9uLnRvdGFsXCJcbiAgICAgICAgICAgICAgKHBhZ2VDaGFuZ2UpPVwiZ29Ub1BhZ2UoJGV2ZW50IC0gMSlcIlxuICAgICAgICAgICAgICBbbmJQZXJQYWdlXT1cInBhZ2luYXRpb24ucm93c1wiXG4gICAgICAgICAgICAgIFtsb2FkZWRdPVwicGFnaW5hdGlvbi5sb2FkZWRcIlxuICAgICAgICAgICAgICBtb2RlPVwic2hvcnRcIlxuICAgICAgICAgICAgPjwvcHJ5LXBhZ2luYXRvcj5cbiAgICAgICAgICAgIEBpZiAocGFnaW5hdGlvbi50b3RhbFBhZ2VzICE9PSBwYWdpbmF0aW9uLmxvYWRlZFBhZ2VzKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhLXRhYmxlX19wYWdpbmF0aW9uLWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgKHt7XG4gICAgICAgICAgICAgICAgICAnQHByeS53aWRnZXQudGFibGUucmVtYWluaW5nJyB8IGkxOG46IHsgcmVtYWluaW5nOiBwYWdpbmF0aW9uLnRvdGFsUGFnZXMgLSBwYWdpbmF0aW9uLmxvYWRlZFBhZ2VzIH1cbiAgICAgICAgICAgICAgICB9fSlcbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
259
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3dpZGdldHMvd2lkZ2V0LXRhYmxlL2NvbXBvbmVudC93aWRnZXQtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvd2lkZ2V0cy93aWRnZXQtdGFibGUvY29tcG9uZW50L3dpZGdldC10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBYyxNQUFNLGVBQWUsQ0FBQztBQUV6RSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUVsQixZQUFZLEVBQ1osY0FBYyxFQUVkLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsb0JBQW9CLEVBQ3BCLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLDBCQUEwQixFQUUxQixTQUFTLEVBRVQsU0FBUyxFQUtULG9CQUFvQixFQUNyQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sS0FBSyxNQUFNLHFCQUFxQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQWMsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9ELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBaUIxQixNQUFNLE9BQU8sb0JBQXFCLFNBQVEsbUJBQW1CO0lBdUIzRCxZQUNFLEtBQWlCLEVBQ2pCLEVBQWMsRUFDTixHQUFzQjtRQUU5QixLQUFLLENBQUMsS0FB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QUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDN0YsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFhLEVBQUUsSUFBVTtRQUNwQyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELFFBQVEsQ0FBQyxNQUFjO1FBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7OEdBeFVVLG9CQUFvQjtrR0FBcEIsb0JBQW9CLCtFQzlDakMsb3JWQWtQQTs7MkZEcE1hLG9CQUFvQjtrQkFKaEMsU0FBUzsrQkFDRSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7XG4gIEFMSUdOTUVOVF9PUFRJT05TLFxuICBiYXNlSXRlbVByb3BlcnRpZXMsXG4gIENsYXNzLFxuICBDbGFzc0FjdGlvbnMsXG4gIENsYXNzU2VsZWN0b3JzLFxuICBDb2x1bW5EZWZpbml0aW9uLFxuICBDb25maWdTZWxlY3RvcnMsXG4gIENvbnRleHRNZW51QWN0aW9ucyxcbiAgQ29udGV4dE1lbnVTZWxlY3RvcnMsXG4gIERhc2hib2FyZEFjdGlvbnMsXG4gIERhc2hib2FyZFNlbGVjdG9ycyxcbiAgRGF0YVdpZGdldENvbXBvbmVudCxcbiAgREVGQVVMVF9UQUJMRV9XSURHRVRfU1RZTEUsXG4gIEZpZWxkLFxuICBGaWVsZFR5cGUsXG4gIEl0ZW0sXG4gIEl0ZW1VdGlscyxcbiAgT3JkZXJWYWx1ZSxcbiAgUmVzdWx0T3JkZXIsXG4gIFRhYmxlV2lkZ2V0T3B0aW9ucyxcbiAgVGFibGVXaWRnZXRTdHlsZSxcbiAgV0lER0VUX0hFQURFUl9IRUlHSFRcbn0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcbmltcG9ydCBlcXVhbCBmcm9tICdmYXN0LWRlZXAtZXF1YWwvZXM2JztcbmltcG9ydCB7IGF1ZGl0VGltZSwgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBkZWJvdW5jZVRpbWUsIE9ic2VydmFibGUsIHRha2UgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlbGF5LCBmaWx0ZXIsIG1hcCwgdGFwLCB3aXRoTGF0ZXN0RnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdjQgfSBmcm9tICd1dWlkJztcblxuZXhwb3J0IGludGVyZmFjZSBQYWdpbmF0aW9uIHtcbiAgdG90YWxQYWdlczogbnVtYmVyO1xuICBwYWdlOiBudW1iZXI7XG4gIHJvd3M6IG51bWJlcjtcbiAgaXRlbXM6IEl0ZW1bXTtcbiAgbG9hZGVkOiBudW1iZXI7XG4gIGxvYWRlZFBhZ2VzOiBudW1iZXI7XG4gIG5vRmlsbGVyc0l0ZW1zOiBudW1iZXI7XG4gIHRvdGFsOiBudW1iZXI7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ByeS13aWRnZXQtdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vd2lkZ2V0LXRhYmxlLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBXaWRnZXRUYWJsZUNvbXBvbmVudCBleHRlbmRzIERhdGFXaWRnZXRDb21wb25lbnQge1xuICBvcHRpb25zJDogT2JzZXJ2YWJsZTxUYWJsZVdpZGdldE9wdGlvbnM+O1xuICBjb2x1bW5zJDogT2JzZXJ2YWJsZTxDb2x1bW5EZWZpbml0aW9uW10+O1xuICBvcHRpb25zQ29weT86IFRhYmxlV2lkZ2V0T3B0aW9ucztcbiAgZmllbGRzJDogT2JzZXJ2YWJsZTxGaWVsZFtdPjtcbiAgc2VsZWN0ZWRJZHMkOiBPYnNlcnZhYmxlPHN0cmluZ1tdPjtcbiAgQXJyYXkgPSBBcnJheTtcbiAgY3VycmVudENsYXNzZXM6IHN0cmluZ1tdID0gW107XG4gIHNlbGVjdGVkSWRzOiBzdHJpbmdbXSA9IFtdO1xuICBXSURHRVRfSEVBREVSX0hFSUdIVCA9IFdJREdFVF9IRUFERVJfSEVJR0hUO1xuICBwcml2YXRlIGNsYXNzZXMkOiBPYnNlcnZhYmxlPENsYXNzW10+O1xuICBwcm9wZXJ0aWVzJDogT2JzZXJ2YWJsZTx7IGxhYmVsOiBzdHJpbmc7IHByb3BlcnR5OiBzdHJpbmcgfVtdPjtcbiAgYWxsU2VsZWN0ZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBhcmVBbGxTZWxlY3RlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBhbGxJZHM6IHN0cmluZ1tdID0gW107XG4gIGNvbnRleHRNZW51Q2xpY2tlZElkOiBzdHJpbmcgPSAnJztcbiAgaXNDb250ZXh0TWVudU9wZW5lZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHF1aWNrT3JkZXIkOiBPYnNlcnZhYmxlPFJlc3VsdE9yZGVyIHwgdW5kZWZpbmVkPjtcbiAgcHJpdmF0ZSBfcmVmcmVzaCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHZvaWQ+KHVuZGVmaW5lZCk7XG4gIGFjdHVhbFBhZ2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApO1xuICBwYWdpbmF0aW9uJDogT2JzZXJ2YWJsZTxQYWdpbmF0aW9uPjtcbiAgaXNPcGVuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc3RvcmU6IFN0b3JlPGFueT4sXG4gICAgZWw6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHN1cGVyKHN0b3JlLCBlbCk7XG5cbiAgICB0aGlzLmNsYXNzZXMkID0gdGhpcy5zdG9yZS5zZWxlY3QoQ2xhc3NTZWxlY3RvcnMuY2xhc3Nlcyk7XG5cbiAgICB0aGlzLmZpZWxkcyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLnJlc3VsdFNldCQsIHRoaXMuY2xhc3NlcyRdKS5waXBlKFxuICAgICAgbWFwKFxuICAgICAgICAoW3Jlc3VsdFNldCwgY2xhc3Nlc10pID0+XG4gICAgICAgICAgW1xuICAgICAgICAgICAgLi4uSXRlbVV0aWxzLmdldEZpZWxkc0ZvckNsYXNzZXMoT2JqZWN0LmtleXMocmVzdWx0U2V0Lml0ZW1zKSwgY2xhc3NlcyksXG4gICAgICAgICAgICAuLi5iYXNlSXRlbVByb3BlcnRpZXMubWFwKChwKSA9PiAoeyBuYW1lOiBwLCBpZDogcCB9KSBhcyBGaWVsZClcbiAgICAgICAgICBdIGFzIEZpZWxkW11cbiAgICAgICksXG4gICAgICBtYXAoKGZpZWxkcykgPT4gZmllbGRzLmZpbHRlcigoZmllbGQpID0+IGZpZWxkLnR5cGUgIT09IEZpZWxkVHlwZS5SQVcpKVxuICAgICk7XG5cbiAgICB0aGlzLm9wdGlvbnMkID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLm1hbmlmZXN0JC5waXBlKG1hcCgobWFuaWZlc3QpID0+IG1hbmlmZXN0Lm9wdGlvbnMgYXMgVGFibGVXaWRnZXRPcHRpb25zKSksXG4gICAgICB0aGlzLnJlc3VsdFNldCQsXG4gICAgICB0aGlzLmNsYXNzZXMkLFxuICAgICAgdGhpcy5maWVsZHMkLFxuICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoQ29uZmlnU2VsZWN0b3JzLnRhYmxlRGVmYXVsdEF0dHJpYnV0ZXNEZWZpbml0aW9ucylcbiAgICBdKS5waXBlKFxuICAgICAgbWFwKChbb3B0aW9ucywgcmVzdWx0U2V0LCBjbGFzc2VzLCBmaWVsZHMsIGRlZnNdKSA9PiB7XG4gICAgICAgIGlmICghb3B0aW9ucy5jb2x1bW5zIHx8IG9wdGlvbnMuY29sdW1ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBjb25zdCBhdHRyaWJ1dGVzID0gSXRlbVV0aWxzLmdldEF0dHJpYnV0ZXNGcm9tUnMocmVzdWx0U2V0LCBjbGFzc2VzLCBmaWVsZHMsIGRlZnMpO1xuICAgICAgICAgIGNvbnN0IHVuaXF1ZVByb3BzID0gWy4uLm5ldyBTZXQoYXR0cmlidXRlcy5tYXAoKGF0dHIpID0+IGF0dHIudGVjaG5pY2FsTmFtZSkpXTtcblxuICAgICAgICAgIG9wdGlvbnMuY29sdW1ucyA9IHVuaXF1ZVByb3BzLm1hcCgodGVjaG5pY2FsTmFtZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcHJvcGVydHkgPSBhdHRyaWJ1dGVzLmZpbmQoKGF0dHIpID0+IGF0dHIudGVjaG5pY2FsTmFtZSA9PT0gdGVjaG5pY2FsTmFtZSkhO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgcHJvcGVydHk6IHRlY2huaWNhbE5hbWUsXG4gICAgICAgICAgICAgIGxhYmVsOiBwcm9wZXJ0eS5uYW1lLFxuICAgICAgICAgICAgICBhdHRyaWJ1dGVJZDogcHJvcGVydHkuaWQsXG4gICAgICAgICAgICAgIGZpZWxkOiBwcm9wZXJ0eS5maWVsZFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KSBhcyBDb2x1bW5EZWZpbml0aW9uW107XG4gICAgICAgIH1cbiAgICAgICAgb3B0aW9ucy5zdHlsZSA9IG9wdGlvbnMuc3R5bGUgPz8gREVGQVVMVF9UQUJMRV9XSURHRVRfU1RZTEUudmFsdWU7XG4gICAgICAgIHJldHVybiBvcHRpb25zO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMub3B0aW9ucyQucGlwZShmaWx0ZXIoKG9wdCkgPT4gISFvcHQpKS5zdWJzY3JpYmUoKG9wdGlvbnMpID0+IHtcbiAgICAgICAgdGhpcy5vcHRpb25zQ29weSA9IHsgLi4uKHN0cnVjdHVyZWRDbG9uZShvcHRpb25zKSBhcyBUYWJsZVdpZGdldE9wdGlvbnMpIH07XG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLmFsbEl0ZW1zJC5zdWJzY3JpYmUoKGFsbE9iamVjdHMpID0+ICh0aGlzLmFsbElkcyA9IGFsbE9iamVjdHMubWFwKChvYmopID0+IG9iai5pZCkpKSk7XG5cbiAgICBjb25zdCBIRUFERVJfU0laRSA9IDMwO1xuICAgIGNvbnN0IFBBR0lOQVRJT05fU0laRSA9IDM1O1xuICAgIGNvbnN0IExJTkVfU0laRSA9IDMwO1xuXG4gICAgdGhpcy5wYWdpbmF0aW9uJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5hbGxJdGVtcyQsXG4gICAgICB0aGlzLmFjdHVhbFBhZ2UkLFxuICAgICAgdGhpcy53aWRnZXRTaXplJCxcbiAgICAgIHRoaXMucmVzdWx0U2V0JCxcbiAgICAgIHRoaXMuZGlzcGxheUhlYWRlciQsXG4gICAgICB0aGlzLm1hbmlmZXN0JFxuICAgIF0pLnBpcGUoXG4gICAgICBkZWJvdW5jZVRpbWUoMTAwKSxcbiAgICAgIG1hcCgoW2l0ZW1zLCBhY3R1YWxQYWdlLCBzaXplLCBycywgaGVhZGVyUHJlc2VudCwgbWFuaWZlc3RdKSA9PiB7XG4gICAgICAgIGNvbnN0IHJvd3MgPSBNYXRoLm1heChcbiAgICAgICAgICAxLFxuICAgICAgICAgIE1hdGguZmxvb3IoXG4gICAgICAgICAgICAoc2l6ZS5oZWlnaHQgLSBIRUFERVJfU0laRSAtIFBBR0lOQVRJT05fU0laRSAtIChoZWFkZXJQcmVzZW50ID8gV0lER0VUX0hFQURFUl9IRUlHSFQudmFsdWUgOiAwKSkgLyBMSU5FX1NJWkVcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHRvdGFsID0gT2JqZWN0LnZhbHVlcyhycy5jb3VudCA/PyB7fSkucmVkdWNlKChwLCBjKSA9PiBjLmNvdW50ICsgcCwgMCk7XG4gICAgICAgIGNvbnN0IGxvYWRlZFBhZ2VzID0gTWF0aC5jZWlsKGl0ZW1zLmxlbmd0aCAvIHJvd3MpO1xuICAgICAgICBpZiAoYWN0dWFsUGFnZSA+IDAgJiYgYWN0dWFsUGFnZSA+PSBsb2FkZWRQYWdlcyAtIDIpIHtcbiAgICAgICAgICAoQXJyYXkuaXNBcnJheShtYW5pZmVzdC5kYXRhc291cmNlKVxuICAgICAgICAgICAgPyBtYW5pZmVzdC5kYXRhc291cmNlXG4gICAgICAgICAgICA6IChbbWFuaWZlc3QuZGF0YXNvdXJjZV0uZmlsdGVyKChzKSA9PiAhIXMpIGFzIHN0cmluZ1tdKVxuICAgICAgICAgICkuZm9yRWFjaCgoaWQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgICAgICAgIERhc2hib2FyZEFjdGlvbnMuZmV0Y2hNb3JlSXRlbXMoe1xuICAgICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICAgIHdpZGdldFR5cGU6ICd0YWJsZSdcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGFnZSA9IGFjdHVhbFBhZ2UgPD0gbG9hZGVkUGFnZXMgPyBhY3R1YWxQYWdlIDogTWF0aC5tYXgoMCwgbG9hZGVkUGFnZXMgLSAxKTtcbiAgICAgICAgY29uc3QgZmlsdGVyZWQgPSBpdGVtcy5maWx0ZXIoKF8sIGlkeCkgPT4gaWR4ID49IHJvd3MgKiBwYWdlICYmIGlkeCA8IHJvd3MgKiAocGFnZSArIDEpKTtcbiAgICAgICAgY29uc3QgZmlsdGVyZWRXaXRoRmlsbGVycyA9XG4gICAgICAgICAgZmlsdGVyZWQubGVuZ3RoID09PSByb3dzXG4gICAgICAgICAgICA/IGZpbHRlcmVkXG4gICAgICAgICAgICA6IGZpbHRlcmVkLmNvbmNhdChcbiAgICAgICAgICAgICAgICBuZXcgQXJyYXkocm93cyAtIGZpbHRlcmVkLmxlbmd0aClcbiAgICAgICAgICAgICAgICAgIC5maWxsKHtcbiAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGE6IHsgJ19fd2lkZ2V0LXRhYmxlLWZpbGxlcic6IHRydWUgfVxuICAgICAgICAgICAgICAgICAgfSBhcyB1bmtub3duIGFzIEl0ZW0pXG4gICAgICAgICAgICAgICAgICAubWFwKChvYmopID0+ICh7IC4uLm9iaiwgaWQ6IHY0KCkgfSkpXG4gICAgICAgICAgICAgICk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcm93cyxcbiAgICAgICAgICBwYWdlLFxuICAgICAgICAgIGl0ZW1zOiBmaWx0ZXJlZFdpdGhGaWxsZXJzLFxuICAgICAgICAgIG5vRmlsbGVyc0l0ZW1zOiBmaWx0ZXJlZC5sZW5ndGgsXG4gICAgICAgICAgdG90YWwsXG4gICAgICAgICAgdG90YWxQYWdlczogTWF0aC5jZWlsKHRvdGFsIC8gcm93cyksXG4gICAgICAgICAgbG9hZGVkOiBpdGVtcy5sZW5ndGgsXG4gICAgICAgICAgbG9hZGVkUGFnZXNcbiAgICAgICAgfTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQodGhpcy5wYWdpbmF0aW9uJC5waXBlKGF1ZGl0VGltZSgyMDApKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5yZWZyZXNoKCkpKTtcblxuICAgIHRoaXMuY29sdW1ucyQgPSB0aGlzLm9wdGlvbnMkLnBpcGUoXG4gICAgICBtYXAoKG9wdGlvbnMpID0+IG9wdGlvbnM/LmNvbHVtbnMgPz8gW10pLFxuICAgICAgdGFwKCgpID0+IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5yZWZyZXNoKCksIDUwMCkpXG4gICAgKTtcblxuICAgIHRoaXMuaXNDb250ZXh0TWVudU9wZW5lZCQgPSB0aGlzLnN0b3JlLnNlbGVjdChDb250ZXh0TWVudVNlbGVjdG9ycy5vcGVuZWQpO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMucmVzdWx0U2V0JFxuICAgICAgICAucGlwZShcbiAgICAgICAgICBmaWx0ZXIoKHJzKSA9PiAhIXJzKSxcbiAgICAgICAgICBtYXAoKHJzKSA9PiBPYmplY3Qua2V5cyhycy5pdGVtcykpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoY2xhc3NlcykgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRDbGFzc2VzLmxlbmd0aCA+IDAgJiYgIWVxdWFsKHRoaXMuY3VycmVudENsYXNzZXMsIGNsYXNzZXMpKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMub3B0aW9uc0NvcHkpIHtcbiAgICAgICAgICAgICAgdGhpcy5vcHRpb25zQ29weSA9IHt9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVsZXRlIHRoaXMub3B0aW9uc0NvcHkuY29sdW1ucztcbiAgICAgICAgICAgIHRoaXMuZW1pdE1hbmlmZXN0KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuY3VycmVudENsYXNzZXMgPSBjbGFzc2VzO1xuICAgICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnNlbGVjdGVkSWRzJCA9IHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5zZWxlY3RlZEl0ZW1JZHMpO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLnNlbGVjdGVkSWRzJC5zdWJzY3JpYmUoKHNlbGVjdGVkSWRzKSA9PiB0aGlzLnNlbGVjdGVkSWRzID09PSBzZWxlY3RlZElkcykpO1xuXG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChDbGFzc0FjdGlvbnMubG9hZCh7fSkpO1xuXG4gICAgdGhpcy5wcm9wZXJ0aWVzJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMucmVzdWx0U2V0JCwgdGhpcy5jbGFzc2VzJCwgdGhpcy5maWVsZHMkXSkucGlwZShcbiAgICAgIG1hcCgoW3JzLCBjbGFzc2VzLCBmaWVsZHNdKSA9PiBbXG4gICAgICAgIC4uLk9iamVjdC5rZXlzKHJzLml0ZW1zKVxuICAgICAgICAgIC5tYXAoKGNsYXNzSWQpID0+IChjbGFzc2VzLmZpbmQoKGNsKSA9PiBjbC5pZCA9PT0gY2xhc3NJZCkgPz8geyBhdHRyaWJ1dGVzOiBbXSB9KS5hdHRyaWJ1dGVzKVxuICAgICAgICAgIC5mbGF0KClcbiAgICAgICAgICAubWFwKChhdHRyKSA9PiAoeyB0ZWNobmljYWxOYW1lOiBhdHRyLnRlY2huaWNhbE5hbWUsIG5hbWU6IGF0dHIubmFtZSB9KSlcbiAgICAgIF0pLFxuICAgICAgbWFwKChwcm9wcykgPT4ge1xuICAgICAgICBjb25zdCBzb3J0ZWRQcm9wcyA9IFsuLi5wcm9wc107XG4gICAgICAgIHNvcnRlZFByb3BzLnNvcnQoKHBBLCBwQikgPT4gcEEubmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpLmxvY2FsZUNvbXBhcmUocEIubmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpKSk7XG4gICAgICAgIHJldHVybiBzb3J0ZWRQcm9wcztcbiAgICAgIH0pLFxuICAgICAgbWFwKChwcm9wcykgPT4gcHJvcHMubWFwKChwcm9wKSA9PiAoeyBsYWJlbDogcHJvcC5uYW1lLCBwcm9wZXJ0eTogcHJvcC50ZWNobmljYWxOYW1lIH0pKSksXG4gICAgICB0YXAoKCkgPT4gc2V0VGltZW91dCgoKSA9PiB0aGlzLnJlZnJlc2goKSwgNTAwKSlcbiAgICApO1xuXG4gICAgdGhpcy5hbGxTZWxlY3RlZCQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLnNlbGVjdGVkSWRzJCwgdGhpcy5hbGxJdGVtcyRdKS5waXBlKFxuICAgICAgbWFwKChbc2VsZWN0ZWRJZHMsIGFsbE9iamVjdHNdKSA9PiB7XG4gICAgICAgIGNvbnN0IGFsbElkcyA9IGFsbE9iamVjdHMubWFwKChvYmplY3QpID0+IG9iamVjdC5pZCk7XG4gICAgICAgIHJldHVybiAhYWxsSWRzLmZpbmQoKGlkKSA9PiAhc2VsZWN0ZWRJZHMuaW5jbHVkZXMoaWQpKTtcbiAgICAgIH0pLFxuICAgICAgdGFwKChhbGxTZWxlY3RlZCkgPT4gKHRoaXMuYXJlQWxsU2VsZWN0ZWQgPSBhbGxTZWxlY3RlZCkpXG4gICAgKTtcblxuICAgIHRoaXMucXVpY2tPcmRlciQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucXVpY2tPcmRlciksIHRoaXMuZGF0YXNvdXJjZUlkcyRdKS5waXBlKFxuICAgICAgbWFwKChbb3JkZXIsIG5xc10pID0+IChucXMubGVuZ3RoID09PSAxID8gb3JkZXJbbnFzWzBdXSA6IHVuZGVmaW5lZCkpXG4gICAgKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQodGhpcy5fcmVmcmVzaCQucGlwZShkZWxheSgxMDApKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpKSk7XG4gIH1cblxuICByZWZyZXNoKCkge1xuICAgIHRoaXMuX3JlZnJlc2gkLm5leHQoKTtcbiAgICB0aGlzLmlzT3BlbiA9ICF0aGlzLmlzT3BlbjtcbiAgfVxuXG4gIG92ZXJyaWRlIGVtaXRNYW5pZmVzdCgpIHtcbiAgICB0aGlzLm1hbmlmZXN0TW9kaWZpZWQuZW1pdCh7XG4gICAgICB3aWRnZXRJbmRleDogdGhpcy53aWRnZXRJbmRleCxcbiAgICAgIG1hbmlmZXN0OiB7IC4uLnRoaXMubWFuaWZlc3QsIG9wdGlvbnM6IHRoaXMub3B0aW9uc0NvcHkgfVxuICAgIH0pO1xuICB9XG5cbiAgYWRkQ29sdW1uKCkge1xuICAgIGlmICghdGhpcy5vcHRpb25zQ29weT8uY29sdW1ucykge1xuICAgICAgdGhpcy5vcHRpb25zQ29weSA9IHsgY29sdW1uczogW10gfTtcbiAgICB9XG4gICAgdGhpcy5vcHRpb25zQ29weS5jb2x1bW5zPy5wdXNoKHsgbGFiZWw6ICcnLCBwcm9wZXJ0eTogJycgfSk7XG4gICAgdGhpcy5yZWZyZXNoKCk7XG4gIH1cblxuICBjaGFuZ2VQcm9wZXJ0eU5hbWUoJGV2ZW50OiBhbnksIGNvbHVtbkRlZjogQ29sdW1uRGVmaW5pdGlvbikge1xuICAgIGNvbHVtbkRlZi5wcm9wZXJ0eSA9ICRldmVudDtcbiAgICB0aGlzLnJlZnJlc2goKTtcbiAgfVxuXG4gIGNoYW5nZUxhYmVsKCRldmVudDogRXZlbnQsIGNvbHVtbkRlZjogQ29sdW1uRGVmaW5pdGlvbikge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBuZXdMYWJlbCA9ICRldmVudC5jdXJyZW50VGFyZ2V0LnZhbHVlO1xuICAgIGlmIChjb2x1bW5EZWYubGFiZWwgIT09IG5ld0xhYmVsKSB7XG4gICAgICBjb2x1bW5EZWYubGFiZWwgPSBuZXdMYWJlbDtcbiAgICAgIHRoaXMucmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIGRlbGV0ZUNvbHVtbihpOiBudW1iZXIpIHtcbiAgICB0aGlzLm9wdGlvbnNDb3B5Py5jb2x1bW5zPy5zcGxpY2UoaSwgMSk7XG4gICAgdGhpcy5yZWZyZXNoKCk7XG4gIH1cblxuICBzZWxlY3Rpb24oJGV2ZW50OiBNb3VzZUV2ZW50LCBpdGVtOiBJdGVtKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLnNlbGVjdCh7IGlkOiBpdGVtLmlkLCBjdW11bGF0aXZlOiAhJGV2ZW50LnNoaWZ0S2V5IH0pKTtcbiAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBjb250ZXh0TWVudSgkZXZlbnQ6IE1vdXNlRXZlbnQsIGl0ZW06IEl0ZW0pIHtcbiAgICBpZiAodGhpcy5tYW5pZmVzdC5jb250ZXh0TWVudSAhPT0gZmFsc2UpIHtcbiAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgICAgQ29udGV4dE1lbnVBY3Rpb25zLm9wZW4oe1xuICAgICAgICAgIGl0ZW1JZDogaXRlbS5pZCxcbiAgICAgICAgICBjbGllbnRYOiAkZXZlbnQuY2xpZW50WCxcbiAgICAgICAgICBjbGllbnRZOiAkZXZlbnQuY2xpZW50WSxcbiAgICAgICAgICByZXN1bHRTZXQ6IEFycmF5LmlzQXJyYXkodGhpcy5tYW5pZmVzdC5kYXRhc291cmNlKSA/IHRoaXMubWFuaWZlc3QuZGF0YXNvdXJjZVswXSA6IHRoaXMubWFuaWZlc3QuZGF0YXNvdXJjZSxcbiAgICAgICAgICBmcm9tOiAndGFibGUnLFxuICAgICAgICAgIGFsbG93T2JqZWN0Q3JlYXRpb246IGZhbHNlXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgICAgdGhpcy5jb250ZXh0TWVudUNsaWNrZWRJZCA9IGl0ZW0uaWQ7XG4gICAgfVxuICB9XG5cbiAgaW52ZXJ0TGF5ZXJzKGlkeDogbnVtYmVyLCBpZHhXaXRoOiBudW1iZXIpIHtcbiAgICBpZiAoISF0aGlzLm9wdGlvbnNDb3B5ICYmICEhdGhpcy5vcHRpb25zQ29weS5jb2x1bW5zKSB7XG4gICAgICBjb25zdCB0bXAgPSB0aGlzLm9wdGlvbnNDb3B5LmNvbHVtbnNbaWR4V2l0aF07XG4gICAgICB0aGlzLm9wdGlvbnNDb3B5LmNvbHVtbnNbaWR4V2l0aF0gPSB0aGlzLm9wdGlvbnNDb3B5LmNvbHVtbnNbaWR4XTtcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkuY29sdW1uc1tpZHhdID0gdG1wO1xuICAgICAgdGhpcy5yZWZyZXNoKCk7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0QWxsKCRldmVudDogYW55KSB7XG4gICAgaWYgKCRldmVudCkge1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLnNlbGVjdE1hbnkoeyBpZHM6IHRoaXMuYWxsSWRzIH0pKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLnNlbGVjdE1hbnkoeyBpZHM6IFtdIH0pKTtcbiAgICB9XG4gIH1cblxuICBzZXRPcmRlcihjb2x1bW46IENvbHVtbkRlZmluaXRpb24pIHtcbiAgICB0aGlzLmRhdGFzb3VyY2VJZHMkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgZmlsdGVyKChucXMpID0+IG5xcy5sZW5ndGggPT09IDEpLFxuICAgICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnF1aWNrT3JkZXIkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoW25xcywgYWN0dWFsT3JkZXJdKSA9PiB7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5xdWlja09yZGVyKHtcbiAgICAgICAgICAgIGRhdGFzb3VyY2VJZDogbnFzWzBdLFxuICAgICAgICAgICAgYXR0cmlidXRlOiBjb2x1bW4uYXR0cmlidXRlSWQgPz8gJycsXG4gICAgICAgICAgICBhc2M6IHRoaXMubmV4dE9yZGVyKGNvbHVtbiwgYWN0dWFsT3JkZXIpXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgdXBkYXRlU3R5bGUoJGV2ZW50OiBzdHJpbmcgfCBib29sZWFuLCBwcm9wOiBrZXlvZiBUYWJsZVdpZGdldFN0eWxlKSB7XG4gICAgaWYgKHRoaXMub3B0aW9uc0NvcHkgJiYgdGhpcy5vcHRpb25zQ29weS5zdHlsZSkge1xuICAgICAgc3dpdGNoIChwcm9wKSB7XG4gICAgICAgIGNhc2UgJ2hlYWRlclRleHRBbGlnbic6XG4gICAgICAgIGNhc2UgJ2NlbGxUZXh0QWxpZ24nOlxuICAgICAgICAgIHRoaXMub3B0aW9uc0NvcHkuc3R5bGVbcHJvcF0gPSAkZXZlbnQgYXMgc3RyaW5nO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdzaG93VmVydGljYWxTZXBhcmF0b3InOlxuICAgICAgICAgIHRoaXMub3B0aW9uc0NvcHkuc3R5bGVbcHJvcF0gPSAkZXZlbnQgYXMgYm9vbGVhbjtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG5leHRPcmRlcihjb2x1bW46IENvbHVtbkRlZmluaXRpb24sIGFjdHVhbE9yZGVyOiBSZXN1bHRPcmRlciB8IHVuZGVmaW5lZCk6IE9yZGVyVmFsdWUge1xuICAgIGlmICghYWN0dWFsT3JkZXIgfHwgYWN0dWFsT3JkZXIuYXR0cmlidXRlICE9PSBjb2x1bW4uYXR0cmlidXRlSWQpIHtcbiAgICAgIHJldHVybiAnYXNjJztcbiAgICB9XG4gICAgcmV0dXJuIGFjdHVhbE9yZGVyLmFzYyA9PT0gJ2FzYycgPyAnZGVzYycgOiBhY3R1YWxPcmRlci5hc2MgPT09ICdkZXNjJyA/IHVuZGVmaW5lZCA6ICdhc2MnO1xuICB9XG5cbiAgdHJhY2tPYmplY3RzKGluZGV4OiBudW1iZXIsIGl0ZW06IEl0ZW0pIHtcbiAgICByZXR1cm4gaXRlbS5pZDtcbiAgfVxuXG4gIGdvVG9QYWdlKG51bWJlcjogbnVtYmVyKSB7XG4gICAgdGhpcy5hY3R1YWxQYWdlJC5uZXh0KG51bWJlcik7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgQUxJR05NRU5UX09QVElPTlMgPSBBTElHTk1FTlRfT1BUSU9OUztcbn1cbiIsIjxwcnktd2lkZ2V0LXRhYmxlLWNzcz48L3ByeS13aWRnZXQtdGFibGUtY3NzPlxuPGRpdiBjbGFzcz1cIm8td2lkZ2V0IG8td2lkZ2V0LS10YWJsZVwiPlxuICBAaWYgKGRpc3BsYXlIZWFkZXIkIHwgYXN5bmMpIHtcbiAgICA8cHJ5LXdpZGdldC1oZWFkZXJcbiAgICAgIFtkYXRhc291cmNlSWRzXT1cIihkYXRhc291cmNlSWRzJCB8IGFzeW5jKSA/PyBbXVwiXG4gICAgICBbd2lkZ2V0SW5kZXhdPVwid2lkZ2V0SW5kZXhcIlxuICAgICAgW21hbmlmZXN0XT1cIm1hbmlmZXN0XCJcbiAgICAgIChtYW5pZmVzdE1vZGlmaWVkKT1cIm1hbmlmZXN0TW9kaWZpZWQuZW1pdCgkZXZlbnQpXCJcbiAgICAgICNoZWFkZXJcbiAgICAgIFtoZWFkZXJPcHRpb25zXT1cIihkaXNwbGF5SGVhZGVyJCB8IGFzeW5jKSA/PyB7fVwiXG4gICAgICAoY2xpY2spPVwicmVmcmVzaCgpXCJcbiAgICA+XG4gICAgICA8cHJ5LXNldHRpbmdzXG4gICAgICAgIChjbGljayk9XCJyZWZyZXNoKClcIlxuICAgICAgICAoc2F2ZVRyaWdnZXJlZCk9XCJlbWl0TWFuaWZlc3QoKVwiXG4gICAgICAgIChjaGFuZ2VUaXRsZSk9XCJjaGFuZ2VXaWRnZXRUaXRsZSgkZXZlbnQpXCJcbiAgICAgICAgW2hlYWRlclByZXNlbnRdPVwiZGlzcGxheUhlYWRlciQgfCBhc3luY1wiXG4gICAgICAgIFt3aWRnZXRJbmRleF09XCJ3aWRnZXRJbmRleFwiXG4gICAgICAgIFtoZWFkZXJdPVwiaGVhZGVyXCJcbiAgICAgICAgW29wZW4kXT1cIm9wZW4kXCJcbiAgICAgICAgKHRyaWdnZXJDbGljayk9XCJ0aGlzLnJlZnJlc2goKVwiXG4gICAgICAgIGNsYXNzPVwiby1zZXR0aW5nc1wiXG4gICAgICA+XG4gICAgICAgIEBpZiAob3B0aW9uc0NvcHkgJiYgb3B0aW9uc0NvcHkuc3R5bGUpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwidGFibGVfc3R5bGVfaGVhZGVyVGV4dEFsaWduXCI+e3tcbiAgICAgICAgICAgICAgJ0Bwcnkud2lkZ2V0LnRhYmxlLmhlYWRlclRleHRBbGlnbicgfCBpMThuXG4gICAgICAgICAgICB9fTwvbGFiZWw+XG4gICAgICAgICAgICA8cHJ5LXNlbGVjdFxuICAgICAgICAgICAgICBbaXRlbXNdPVwiQUxJR05NRU5UX09QVElPTlNcIlxuICAgICAgICAgICAgICBbbmdNb2RlbF09XCJvcHRpb25zQ29weS5zdHlsZS5oZWFkZXJUZXh0QWxpZ25cIlxuICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVTdHlsZSgkZXZlbnQsICdoZWFkZXJUZXh0QWxpZ24nKVwiXG4gICAgICAgICAgICAgIGlkPVwidGFibGVfc3R5bGVfaGVhZGVyVGV4dEFsaWduXCJcbiAgICAgICAgICAgICAgaTE4blByZWZpeD1cIkBwcnkud2lkZ2V0LnRhYmxlLmFsaWduLlwiXG4gICAgICAgICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJ0YWJsZV9zdHlsZV9jZWxsVGV4dEFsaWduXCI+e3tcbiAgICAgICAgICAgICAgJ0Bwcnkud2lkZ2V0LnRhYmxlLmNlbGxUZXh0QWxpZ24nIHwgaTE4blxuICAgICAgICAgICAgfX08L2xhYmVsPlxuICAgICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgICAgW2l0ZW1zXT1cIkFMSUdOTUVOVF9PUFRJT05TXCJcbiAgICAgICAgICAgICAgW25nTW9kZWxdPVwib3B0aW9uc0NvcHkuc3R5bGUuY2VsbFRleHRBbGlnblwiXG4gICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZVN0eWxlKCRldmVudCwgJ2NlbGxUZXh0QWxpZ24nKVwiXG4gICAgICAgICAgICAgIGlkPVwidGFibGVfc3R5bGVfY2VsbFRleHRBbGlnblwiXG4gICAgICAgICAgICAgIGkxOG5QcmVmaXg9XCJAcHJ5LndpZGdldC50YWJsZS5hbGlnbi5cIlxuICAgICAgICAgICAgPjwvcHJ5LXNlbGVjdD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZCB1LWRpc3BsYXktZmxleCAtcm93IC1qdXN0aWZ5LXNwYWNlLWJldHdlZW4gby13aWRnZXQtLXRhYmxlX192ZXJ0aWNhbC1zZXBhcmF0b3JcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJ0YWJsZV9zdHlsZV92ZXJ0aWNhbFNlcGFyYXRvclwiPnt7XG4gICAgICAgICAgICAgICdAcHJ5LndpZGdldC50YWJsZS52ZXJ0aWNhbFNlcGFyYXRvcicgfCBpMThuXG4gICAgICAgICAgICB9fTwvbGFiZWw+XG4gICAgICAgICAgICA8cHJ5LWNoZWNrYm94XG4gICAgICAgICAgICAgIFtuZ01vZGVsXT1cIm9wdGlvbnNDb3B5LnN0eWxlLnNob3dWZXJ0aWNhbFNlcGFyYXRvclwiXG4gICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZVN0eWxlKCRldmVudCwgJ3Nob3dWZXJ0aWNhbFNlcGFyYXRvcicpXCJcbiAgICAgICAgICAgICAgaWQ9XCJ0YWJsZV9zdHlsZV92ZXJ0aWNhbFNlcGFyYXRvclwiXG4gICAgICAgICAgICA+PC9wcnktY2hlY2tib3g+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiby1zZXR0aW5nc19fcG9wdXBfX2NvbnRlbnRfX2FjdGlvbnNcIj5cbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImEtYnRuIGEtYnRuLS1pY29uLXRleHQgLWxpbmstbGlrZVwiIChjbGljayk9XCJhZGRDb2x1bW4oKVwiPlxuICAgICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJwb3N0X2FkZFwiPjwvcHJ5LWljb24+XG4gICAgICAgICAgICB7eyAnQHByeS53aWRnZXQudGFibGUuYWRkQ29sdW1uJyB8IGkxOG4gfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgQGZvciAoY29sdW1uRGVmIG9mIG9wdGlvbnNDb3B5Py5jb2x1bW5zID8/IFtdOyB0cmFjayBjb2x1bW5EZWYuYXR0cmlidXRlSWQ7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm8tc2V0dGluZ3NfX3BvcHVwX19jb250ZW50X19maWVsZHNcIiAoY2xpY2spPVwicmVmcmVzaCgpXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1zZXR0aW5nc19fcG9wdXBfX2NvbnRlbnRfX2ZpZWxkc19faGVhZFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1idG4tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICBAaWYgKGkgPiAwKSB7XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImEtYnRuIGEtYnRuLS1pY29uLW9ubHlcIiAoY2xpY2spPVwiaW52ZXJ0TGF5ZXJzKGksIGkgLSAxKVwiPlxuICAgICAgICAgICAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImZsZWNoZV9oYXV0XCI+PC9wcnktaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPnt7ICdAcHJ5LmFjdGlvbi5tb3ZlVXAnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYgKGkgPCAob3B0aW9uc0NvcHk/LmNvbHVtbnM/Lmxlbmd0aCA/PyAwKSAtIDEpIHtcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYS1idG4gYS1idG4tLWljb24tb25seVwiIChjbGljayk9XCJpbnZlcnRMYXllcnMoaSwgaSArIDEpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwiZmxlY2hlX2Jhc1wiPjwvcHJ5LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj57eyAnQHByeS5hY3Rpb24ubW92ZURvd24nIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm8tc2V0dGluZ3NfX3BvcHVwX19jb250ZW50X19maWVsZHNfX2NvbnRlbnRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJ0YWJsZV9wcm9wZXJ0eVwiPnt7ICdAcHJ5LndpZGdldC50YWJsZS5wcm9wZXJ0eScgfCBpMThuIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8cHJ5LXNlbGVjdFxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlZnJlc2goKVwiXG4gICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VQcm9wZXJ0eU5hbWUoJGV2ZW50LCBjb2x1bW5EZWYpXCJcbiAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJwcm9wZXJ0aWVzJCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImNvbHVtbkRlZi5wcm9wZXJ0eVwiXG4gICAgICAgICAgICAgICAgICBiaW5kTGFiZWw9XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICBiaW5kVmFsdWU9XCJwcm9wZXJ0eVwiXG4gICAgICAgICAgICAgICAgICBpZD1cInRhYmxlX3Byb3BlcnR5XCJcbiAgICAgICAgICAgICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbFwiIGZvcj1cInRhYmxlX2xhYmVsXCI+e3sgJ0Bwcnkud2lkZ2V0LnRhYmxlLmxhYmVsJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgaWQ9XCJ0YWJsZV9sYWJlbFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAoaW5wdXQpPVwiY2hhbmdlTGFiZWwoJGV2ZW50LCBjb2x1bW5EZWYpXCJcbiAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJjb2x1bW5EZWYubGFiZWxcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVDb2x1bW4oaSlcIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiZGVsZXRlXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLWljb24tdGV4dCAtbGluay1saWtlXCJcbiAgICAgICAgICAgICAgZGF0YS1mdW5jPVwiZGVsZXRlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJkZWxldGVcIiBbd2lkdGhdPVwiMTlcIiBbaGVpZ2h0XT1cIjE5XCI+PC9wcnktaWNvbj5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgJ0Bwcnkud2lkZ2V0LnRhYmxlLmRlbGV0ZUNvbHVtbicgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvcHJ5LXNldHRpbmdzPlxuICAgIDwvcHJ5LXdpZGdldC1oZWFkZXI+XG4gIH1cblxuICA8ZGl2IGNsYXNzPVwiYS10YWJsZS13cmFwcGVyXCI+XG4gICAgQGlmIChwYWdpbmF0aW9uJCB8IGFzeW5jOyBhcyBwYWdpbmF0aW9uKSB7XG4gICAgICBAaWYgKHBhZ2luYXRpb24/Lml0ZW1zID8/IFtdOyBhcyBhbGxPYmplY3RzKSB7XG4gICAgICAgIEBpZiAocGFnaW5hdGlvbi5ub0ZpbGxlcnNJdGVtcyA9PT0gMCkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJuby1yZXN1bHRcIiBbc3R5bGUuaGVpZ2h0LiVdPVwicGFnaW5hdGlvbi50b3RhbFBhZ2VzID4gMCA/IDgwIDogMTAwXCI+XG4gICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgIGNsYXNzPVwibm8tcmVzdWx0X19zZWFyY2hcIlxuICAgICAgICAgICAgICBzcmM9XCIuLi8uLi8uLi9hc3NldHMvc3Zncy9wcnlfcmVjaGVyY2hlX3Bhc19kZV9yZXN1bHRhdC5zdmdcIlxuICAgICAgICAgICAgICBhbHQ9XCJ7eyAnQHByeS53aWRnZXQudGFibGUuZW1wdHknIHwgaTE4biB9fVwiXG4gICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuby1yZXN1bHRfX3RleHRcIj57eyAnQHByeS53aWRnZXQudGFibGUuZW1wdHknIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfSBAZWxzZSBpZiAocGFnaW5hdGlvbi5ub0ZpbGxlcnNJdGVtcyA+IDApIHtcbiAgICAgICAgICBAaWYgKChzZWxlY3RlZElkcyQgfCBhc3luYykgPz8gW107IGFzIHNlbGVjdGVkSWRzKSB7XG4gICAgICAgICAgICBAaWYgKChjb2x1bW5zJCB8IGFzeW5jKSA/PyBbXTsgYXMgY29sdW1ucykge1xuICAgICAgICAgICAgICA8dGFibGVcbiAgICAgICAgICAgICAgICBjbGFzcz1cImEtdGFibGVcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy4tc2hvdy12ZXJ0aWNhbC1zZXBhcmF0b3JdPVwib3B0aW9uc0NvcHk/LnN0eWxlPy5zaG93VmVydGljYWxTZXBhcmF0b3JcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0Bwcnkud2lkZ2V0LnRhYmxlLmRlc2NyaXB0aW9uJyB8IGkxOG5cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGFsbE9iamVjdHM/Lmxlbmd0aCA/PyAwID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgIDx0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwcnktY2hlY2tib3ggW25nTW9kZWxdPVwiYXJlQWxsU2VsZWN0ZWRcIiAobmdNb2RlbENoYW5nZSk9XCJzZWxlY3RBbGwoJGV2ZW50KVwiPjwvcHJ5LWNoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoY29sdW1uIG9mIGNvbHVtbnM7IHRyYWNrIGNvbHVtbi5hdHRyaWJ1dGVJZDsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8dGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6YWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldE9yZGVyKGNvbHVtbilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiJ3UtdHh0LScgKyBvcHRpb25zQ29weT8uc3R5bGU/LmhlYWRlclRleHRBbGlnblwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgY29sdW1uLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChxdWlja09yZGVyJCB8IGFzeW5jOyBhcyBxdWlja09yZGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAocXVpY2tPcmRlci5hdHRyaWJ1dGUgPT09IGNvbHVtbi5hdHRyaWJ1dGVJZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcnktaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25TdmddPVwicXVpY2tPcmRlci5hc2MgPyAnY2hldnJvbl90b3AnIDogJ2NoZXZyb25fYm90dG9tJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cIjEyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt3aWR0aF09XCIxMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvcHJ5LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBhbGxPYmplY3RzOyB0cmFjayBpdGVtLmlkKSB7XG4gICAgICAgICAgICAgICAgICAgIDx0clxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJzZWxlY3RlZElkcy5pbmNsdWRlcyhpdGVtLmlkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmNvbnRleHQtbWVudS1zZWxlY3RlZF09XCJjb250ZXh0TWVudUNsaWNrZWRJZCA9PT0gaXRlbS5pZCAmJiAoaXNDb250ZXh0TWVudU9wZW5lZCQgfCBhc3luYylcIlxuICAgICAgICAgICAgICAgICAgICAgIChjb250ZXh0bWVudSk9XCJjb250ZXh0TWVudSgkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICBkZXRhY2hSb3dcbiAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWRWYWx1ZSk9XCJzZWxlY3Rpb24oJGV2ZW50LCBpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZpbGxlcl09XCJpdGVtLm1ldGFkYXRhIVsnX193aWRnZXQtdGFibGUtZmlsbGVyJ11cIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY2hlY2tib3gtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHByeS1jaGVja2JveCBbbmdNb2RlbF09XCJzZWxlY3RlZElkcy5pbmNsdWRlcyhpdGVtLmlkKVwiPjwvcHJ5LWNoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgQGZvciAoY29sdW1uIG9mIGNvbHVtbnM7IHRyYWNrIGNvbHVtbi5hdHRyaWJ1dGVJZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidS1lbGxpcHNpc1wiIFtuZ0NsYXNzXT1cIid1LXR4dC0nICsgb3B0aW9uc0NvcHk/LnN0eWxlPy5jZWxsVGV4dEFsaWduXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoY29sdW1uLnByb3BlcnR5ID09PSAnbWV0YWRhdGEnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByeS1tZXRhZGF0YSBbaXRlbV09XCJpdGVtXCI+PC9wcnktbWV0YWRhdGE+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChjb2x1bW4ucHJvcGVydHkgPT09ICdvQ2xhc3MnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJjb250ZW50LWltZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cIjI1XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3dpZHRoXT1cIjI1XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJpdGVtIHwgdHJhbnNsYXRlSXRlbVRvU3ltYm9sIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWx0XT1cIml0ZW0ub0NsYXNzIHwgdHJhbnNsYXRlSWQ6IHsgdHlwZTogJ2NsYXNzJywgb3V0cHV0OiAnbmFtZScgfSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIVsnbWV0YWRhdGEnLCAnb0NsYXNzJ10uaW5jbHVkZXMoY29sdW1uLnByb3BlcnR5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcnktZXhwYW5kLXZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiaXRlbSB8IGdldFZhbHVlOiBjb2x1bW4ucHJvcGVydHkgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmllbGRdPVwiY29sdW1uLmZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9wcnktZXhwYW5kLXZhbHVlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBAaWYgKHBhZ2luYXRpb24udG90YWxQYWdlcyA+IDApIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidS1kaXNwbGF5LWZsZXhcIj5cbiAgICAgICAgICAgIDxwcnktcGFnaW5hdG9yXG4gICAgICAgICAgICAgIFt0b3RhbEl0ZW1OYl09XCJwYWdpbmF0aW9uLnRvdGFsXCJcbiAgICAgICAgICAgICAgKHBhZ2VDaGFuZ2UpPVwiZ29Ub1BhZ2UoJGV2ZW50IC0gMSlcIlxuICAgICAgICAgICAgICBbbmJQZXJQYWdlXT1cInBhZ2luYXRpb24ucm93c1wiXG4gICAgICAgICAgICAgIFtsb2FkZWRdPVwicGFnaW5hdGlvbi5sb2FkZWRcIlxuICAgICAgICAgICAgICBtb2RlPVwic2hvcnRcIlxuICAgICAgICAgICAgPjwvcHJ5LXBhZ2luYXRvcj5cbiAgICAgICAgICAgIEBpZiAocGFnaW5hdGlvbi50b3RhbFBhZ2VzICE9PSBwYWdpbmF0aW9uLmxvYWRlZFBhZ2VzKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhLXRhYmxlX19wYWdpbmF0aW9uLWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgKHt7XG4gICAgICAgICAgICAgICAgICAnQHByeS53aWRnZXQudGFibGUucmVtYWluaW5nJyB8IGkxOG46IHsgcmVtYWluaW5nOiBwYWdpbmF0aW9uLnRvdGFsUGFnZXMgLSBwYWdpbmF0aW9uLmxvYWRlZFBhZ2VzIH1cbiAgICAgICAgICAgICAgICB9fSlcbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -1,7 +1,7 @@
1
1
  import { Pipe } from '@angular/core';
2
2
  import { ClassSelectors, FieldSelectors, FieldType, ItemUtils } from '@provoly/dashboard';
3
3
  import { combineLatestWith } from 'rxjs';
4
- import { filter, map } from 'rxjs/operators';
4
+ import { filter, map } from 'rxjs';
5
5
  import * as i0 from "@angular/core";
6
6
  import * as i1 from "@ngrx/store";
7
7
  export class GetValuePipe {
@@ -40,4 +40,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
40
40
  type: Pipe,
41
41
  args: [{ name: 'getValue' }]
42
42
  }], ctorParameters: () => [{ type: i1.Store }] });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXZhbHVlLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC93aWRnZXRzL3dpZGdldC10YWJsZS9nZXQtdmFsdWUvZ2V0LXZhbHVlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFFcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFRLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN6QyxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFHN0MsTUFBTSxPQUFPLFlBQVk7SUFDdkIsWUFBb0IsS0FBaUI7UUFBakIsVUFBSyxHQUFMLEtBQUssQ0FBWTtJQUFHLENBQUM7SUFFekMsU0FBUyxDQUFDLEtBQVcsRUFBRSxHQUFHLElBQVc7UUFDbkMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUNuRCxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsRUFDM0QsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFDOUQsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRTtZQUN4QixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM1RCxNQUFNLFNBQVMsR0FBRyxNQUFNLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwRixJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDaEIsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQztnQkFDOUIsSUFDRSxLQUFLO29CQUNMO3dCQUNFLFNBQVMsQ0FBQyxLQUFLO3dCQUNmLFNBQVMsQ0FBQyxVQUFVO3dCQUNwQixTQUFTLENBQUMsSUFBSTt3QkFDZCxTQUFTLENBQUMsU0FBUzt3QkFDbkIsU0FBUyxDQUFDLFNBQVM7d0JBQ25CLFNBQVMsQ0FBQyxPQUFPO3dCQUNqQixTQUFTLENBQUMsWUFBWTtxQkFDdkIsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUN0QixDQUFDO29CQUNELGFBQWE7b0JBQ2IsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsMkJBQTJCLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDO29CQUN6RyxPQUFPLFdBQVcsSUFBSSxXQUFXLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUM7Z0JBQ3JHLENBQUM7Z0JBQ0QsT0FBTyxTQUFTLENBQUMsMkJBQTJCLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ2pFLENBQUM7WUFDRCxPQUFPLFNBQVMsQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0QsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7OEdBakNVLFlBQVk7NEdBQVosWUFBWTs7MkZBQVosWUFBWTtrQkFEeEIsSUFBSTttQkFBQyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IENsYXNzU2VsZWN0b3JzLCBGaWVsZFNlbGVjdG9ycywgRmllbGRUeXBlLCBJdGVtLCBJdGVtVXRpbHMgfSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdFdpdGggfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AUGlwZSh7IG5hbWU6ICdnZXRWYWx1ZScgfSlcbmV4cG9ydCBjbGFzcyBHZXRWYWx1ZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yZTogU3RvcmU8YW55Pikge31cblxuICB0cmFuc2Zvcm0odmFsdWU6IEl0ZW0sIC4uLmFyZ3M6IGFueVtdKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zZWxlY3QoQ2xhc3NTZWxlY3RvcnMuY2xhc3NlcykucGlwZShcbiAgICAgIGNvbWJpbmVMYXRlc3RXaXRoKHRoaXMuc3RvcmUuc2VsZWN0KEZpZWxkU2VsZWN0b3JzLmZpZWxkcykpLFxuICAgICAgZmlsdGVyKChbY2xhc3NlcywgZmllbGRzXSkgPT4gISFjbGFzc2VzICYmIGNsYXNzZXMubGVuZ3RoID4gMCksXG4gICAgICBtYXAoKFtjbGFzc2VzLCBmaWVsZHNdKSA9PiB7XG4gICAgICAgIGNvbnN0IG9DbGFzcyA9IGNsYXNzZXMuZmluZCgoY2wpID0+IGNsLmlkID09PSB2YWx1ZS5vQ2xhc3MpO1xuICAgICAgICBjb25zdCBhdHRyaWJ1dGUgPSBvQ2xhc3M/LmF0dHJpYnV0ZXMuZmluZCgoYXR0cikgPT4gYXR0ci50ZWNobmljYWxOYW1lID09PSBhcmdzWzBdKTtcbiAgICAgICAgaWYgKCEhYXR0cmlidXRlKSB7XG4gICAgICAgICAgY29uc3QgZmllbGQgPSBhdHRyaWJ1dGUuZmllbGQ7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgZmllbGQgJiZcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgRmllbGRUeXBlLlBPSU5ULFxuICAgICAgICAgICAgICBGaWVsZFR5cGUuTVVMVElQT0lOVCxcbiAgICAgICAgICAgICAgRmllbGRUeXBlLkxJTkUsXG4gICAgICAgICAgICAgIEZpZWxkVHlwZS5NVUxUSUxJTkUsXG4gICAgICAgICAgICAgIEZpZWxkVHlwZS5NVUxUSUxJTkUsXG4gICAgICAgICAgICAgIEZpZWxkVHlwZS5QT0xZR09OLFxuICAgICAgICAgICAgICBGaWVsZFR5cGUuTVVMVElQT0xZR09OXG4gICAgICAgICAgICBdLmluY2x1ZGVzKGZpZWxkLnR5cGUpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBjb25zdCBjb29yZGluYXRlcyA9IEpTT04uc3RyaW5naWZ5KEl0ZW1VdGlscy5nZXRBdHRyaWJ1dGVDYWxjdWxhdGVkVmFsdWUodmFsdWUsIGF0dHJpYnV0ZSk/LmNvb3JkaW5hdGVzKTtcbiAgICAgICAgICAgIHJldHVybiBjb29yZGluYXRlcyAmJiBjb29yZGluYXRlcy5sZW5ndGggPiA0MCA/IGAke2Nvb3JkaW5hdGVzLnN1YnN0cmluZygwLCA0MCl9Li4uYCA6IGNvb3JkaW5hdGVzO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gSXRlbVV0aWxzLmdldEF0dHJpYnV0ZUNhbGN1bGF0ZWRWYWx1ZSh2YWx1ZSwgYXR0cmlidXRlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gSXRlbVV0aWxzLmdldEF0dHJpYnV0ZUNhbGN1bGF0ZWRWYWx1ZSh2YWx1ZSwgYXJnc1swXSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXZhbHVlLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC93aWRnZXRzL3dpZGdldC10YWJsZS9nZXQtdmFsdWUvZ2V0LXZhbHVlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFFcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFRLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN6QyxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBR25DLE1BQU0sT0FBTyxZQUFZO0lBQ3ZCLFlBQW9CLEtBQWlCO1FBQWpCLFVBQUssR0FBTCxLQUFLLENBQVk7SUFBRyxDQUFDO0lBRXpDLFNBQVMsQ0FBQyxLQUFXLEVBQUUsR0FBRyxJQUFXO1FBQ25DLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDbkQsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQzNELE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQzlELEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUU7WUFDeEIsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDNUQsTUFBTSxTQUFTLEdBQUcsTUFBTSxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEYsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ2hCLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUM7Z0JBQzlCLElBQ0UsS0FBSztvQkFDTDt3QkFDRSxTQUFTLENBQUMsS0FBSzt3QkFDZixTQUFTLENBQUMsVUFBVTt3QkFDcEIsU0FBUyxDQUFDLElBQUk7d0JBQ2QsU0FBUyxDQUFDLFNBQVM7d0JBQ25CLFNBQVMsQ0FBQyxTQUFTO3dCQUNuQixTQUFTLENBQUMsT0FBTzt3QkFDakIsU0FBUyxDQUFDLFlBQVk7cUJBQ3ZCLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFDdEIsQ0FBQztvQkFDRCxhQUFhO29CQUNiLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLDJCQUEyQixDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQztvQkFDekcsT0FBTyxXQUFXLElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO2dCQUNyRyxDQUFDO2dCQUNELE9BQU8sU0FBUyxDQUFDLDJCQUEyQixDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztZQUNqRSxDQUFDO1lBQ0QsT0FBTyxTQUFTLENBQUMsMkJBQTJCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9ELENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOzhHQWpDVSxZQUFZOzRHQUFaLFlBQVk7OzJGQUFaLFlBQVk7a0JBRHhCLElBQUk7bUJBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBDbGFzc1NlbGVjdG9ycywgRmllbGRTZWxlY3RvcnMsIEZpZWxkVHlwZSwgSXRlbSwgSXRlbVV0aWxzIH0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3RXaXRoIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMnO1xuXG5AUGlwZSh7IG5hbWU6ICdnZXRWYWx1ZScgfSlcbmV4cG9ydCBjbGFzcyBHZXRWYWx1ZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yZTogU3RvcmU8YW55Pikge31cblxuICB0cmFuc2Zvcm0odmFsdWU6IEl0ZW0sIC4uLmFyZ3M6IGFueVtdKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zZWxlY3QoQ2xhc3NTZWxlY3RvcnMuY2xhc3NlcykucGlwZShcbiAgICAgIGNvbWJpbmVMYXRlc3RXaXRoKHRoaXMuc3RvcmUuc2VsZWN0KEZpZWxkU2VsZWN0b3JzLmZpZWxkcykpLFxuICAgICAgZmlsdGVyKChbY2xhc3NlcywgZmllbGRzXSkgPT4gISFjbGFzc2VzICYmIGNsYXNzZXMubGVuZ3RoID4gMCksXG4gICAgICBtYXAoKFtjbGFzc2VzLCBmaWVsZHNdKSA9PiB7XG4gICAgICAgIGNvbnN0IG9DbGFzcyA9IGNsYXNzZXMuZmluZCgoY2wpID0+IGNsLmlkID09PSB2YWx1ZS5vQ2xhc3MpO1xuICAgICAgICBjb25zdCBhdHRyaWJ1dGUgPSBvQ2xhc3M/LmF0dHJpYnV0ZXMuZmluZCgoYXR0cikgPT4gYXR0ci50ZWNobmljYWxOYW1lID09PSBhcmdzWzBdKTtcbiAgICAgICAgaWYgKCEhYXR0cmlidXRlKSB7XG4gICAgICAgICAgY29uc3QgZmllbGQgPSBhdHRyaWJ1dGUuZmllbGQ7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgZmllbGQgJiZcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgRmllbGRUeXBlLlBPSU5ULFxuICAgICAgICAgICAgICBGaWVsZFR5cGUuTVVMVElQT0lOVCxcbiAgICAgICAgICAgICAgRmllbGRUeXBlLkxJTkUsXG4gICAgICAgICAgICAgIEZpZWxkVHlwZS5NVUxUSUxJTkUsXG4gICAgICAgICAgICAgIEZpZWxkVHlwZS5NVUxUSUxJTkUsXG4gICAgICAgICAgICAgIEZpZWxkVHlwZS5QT0xZR09OLFxuICAgICAgICAgICAgICBGaWVsZFR5cGUuTVVMVElQT0xZR09OXG4gICAgICAgICAgICBdLmluY2x1ZGVzKGZpZWxkLnR5cGUpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBjb25zdCBjb29yZGluYXRlcyA9IEpTT04uc3RyaW5naWZ5KEl0ZW1VdGlscy5nZXRBdHRyaWJ1dGVDYWxjdWxhdGVkVmFsdWUodmFsdWUsIGF0dHJpYnV0ZSk/LmNvb3JkaW5hdGVzKTtcbiAgICAgICAgICAgIHJldHVybiBjb29yZGluYXRlcyAmJiBjb29yZGluYXRlcy5sZW5ndGggPiA0MCA/IGAke2Nvb3JkaW5hdGVzLnN1YnN0cmluZygwLCA0MCl9Li4uYCA6IGNvb3JkaW5hdGVzO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gSXRlbVV0aWxzLmdldEF0dHJpYnV0ZUNhbGN1bGF0ZWRWYWx1ZSh2YWx1ZSwgYXR0cmlidXRlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gSXRlbVV0aWxzLmdldEF0dHJpYnV0ZUNhbGN1bGF0ZWRWYWx1ZSh2YWx1ZSwgYXJnc1swXSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -1,7 +1,7 @@
1
1
  import { DOCUMENT } from '@angular/common';
2
2
  import { Directive, ElementRef, Inject, Output } from '@angular/core';
3
3
  import { fromEvent } from 'rxjs';
4
- import { distinctUntilChanged, map, switchMap, takeUntil, tap } from 'rxjs/operators';
4
+ import { distinctUntilChanged, map, switchMap, takeUntil, tap } from 'rxjs';
5
5
  import * as i0 from "@angular/core";
6
6
  export class ResizableDirective {
7
7
  constructor(documentRef, elementRef) {
@@ -31,4 +31,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
31
31
  }] }], propDecorators: { resizable: [{
32
32
  type: Output
33
33
  }] } });
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXphYmxlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3dpZGdldHMvd2lkZ2V0LXRhYmxlL3Jlc2l6YWJsZS9yZXNpemFibGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUt0RixNQUFNLE9BQU8sa0JBQWtCO0lBaUI3QixZQUNxQyxXQUFxQixFQUV2QyxVQUFtQztRQUZqQixnQkFBVyxHQUFYLFdBQVcsQ0FBVTtRQUV2QyxlQUFVLEdBQVYsVUFBVSxDQUF5QjtRQWxCN0MsY0FBUyxHQUFHLFNBQVMsQ0FBYSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQ3pGLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDLEVBQzlCLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDYixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUscUJBQXFCLEVBQUUsQ0FBQztZQUNyRixNQUFNLEtBQUssR0FBRyxPQUFPLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQztZQUNsQyxNQUFNLEtBQUssR0FBRyxPQUFPLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQztZQUVsQyxPQUFPLFNBQVMsQ0FBYSxJQUFJLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FDOUQsR0FBRyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxHQUFHLE9BQU8sR0FBRyxLQUFLLENBQUMsRUFDN0Msb0JBQW9CLEVBQUUsRUFDdEIsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQ2xELENBQUM7UUFDSixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBTUMsQ0FBQzs4R0FyQk8sa0JBQWtCLGtCQWtCbkIsUUFBUSxhQUNSLFVBQVU7a0dBbkJULGtCQUFrQjs7MkZBQWxCLGtCQUFrQjtrQkFIOUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsYUFBYTtpQkFDeEI7OzBCQW1CSSxNQUFNOzJCQUFDLFFBQVE7OzBCQUNmLE1BQU07MkJBQUMsVUFBVTt5Q0FqQlgsU0FBUztzQkFEakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5qZWN0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3Jlc2l6YWJsZV0nXG59KVxuZXhwb3J0IGNsYXNzIFJlc2l6YWJsZURpcmVjdGl2ZSB7XG4gIEBPdXRwdXQoKVxuICByZWFkb25seSByZXNpemFibGUgPSBmcm9tRXZlbnQ8TW91c2VFdmVudD4odGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdtb3VzZWRvd24nKS5waXBlKFxuICAgIHRhcCgoZSkgPT4gZS5wcmV2ZW50RGVmYXVsdCgpKSxcbiAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgY29uc3QgZG9tUmVjdCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsb3Nlc3QoJ3RoJyk/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3Qgd2lkdGggPSBkb21SZWN0Py53aWR0aCA/PyAwO1xuICAgICAgY29uc3QgcmlnaHQgPSBkb21SZWN0Py5yaWdodCA/PyAwO1xuXG4gICAgICByZXR1cm4gZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMuZG9jdW1lbnRSZWYsICdtb3VzZW1vdmUnKS5waXBlKFxuICAgICAgICBtYXAoKHsgY2xpZW50WCB9KSA9PiB3aWR0aCArIGNsaWVudFggLSByaWdodCksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIHRha2VVbnRpbChmcm9tRXZlbnQodGhpcy5kb2N1bWVudFJlZiwgJ21vdXNldXAnKSlcbiAgICAgICk7XG4gICAgfSlcbiAgKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50UmVmOiBEb2N1bWVudCxcbiAgICBASW5qZWN0KEVsZW1lbnRSZWYpXG4gICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxuICApIHt9XG59XG4iXX0=
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXphYmxlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3dpZGdldHMvd2lkZ2V0LXRhYmxlL3Jlc2l6YWJsZS9yZXNpemFibGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFLNUUsTUFBTSxPQUFPLGtCQUFrQjtJQWlCN0IsWUFDcUMsV0FBcUIsRUFFdkMsVUFBbUM7UUFGakIsZ0JBQVcsR0FBWCxXQUFXLENBQVU7UUFFdkMsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUFsQjdDLGNBQVMsR0FBRyxTQUFTLENBQWEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUN6RixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxFQUM5QixTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLHFCQUFxQixFQUFFLENBQUM7WUFDckYsTUFBTSxLQUFLLEdBQUcsT0FBTyxFQUFFLEtBQUssSUFBSSxDQUFDLENBQUM7WUFDbEMsTUFBTSxLQUFLLEdBQUcsT0FBTyxFQUFFLEtBQUssSUFBSSxDQUFDLENBQUM7WUFFbEMsT0FBTyxTQUFTLENBQWEsSUFBSSxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQzlELEdBQUcsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDLEtBQUssR0FBRyxPQUFPLEdBQUcsS0FBSyxDQUFDLEVBQzdDLG9CQUFvQixFQUFFLEVBQ3RCLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUNsRCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQU1DLENBQUM7OEdBckJPLGtCQUFrQixrQkFrQm5CLFFBQVEsYUFDUixVQUFVO2tHQW5CVCxrQkFBa0I7OzJGQUFsQixrQkFBa0I7a0JBSDlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGFBQWE7aUJBQ3hCOzswQkFtQkksTUFBTTsyQkFBQyxRQUFROzswQkFDZixNQUFNOzJCQUFDLFVBQVU7eUNBakJYLFNBQVM7c0JBRGpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEluamVjdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIHN3aXRjaE1hcCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3Jlc2l6YWJsZV0nXG59KVxuZXhwb3J0IGNsYXNzIFJlc2l6YWJsZURpcmVjdGl2ZSB7XG4gIEBPdXRwdXQoKVxuICByZWFkb25seSByZXNpemFibGUgPSBmcm9tRXZlbnQ8TW91c2VFdmVudD4odGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdtb3VzZWRvd24nKS5waXBlKFxuICAgIHRhcCgoZSkgPT4gZS5wcmV2ZW50RGVmYXVsdCgpKSxcbiAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgY29uc3QgZG9tUmVjdCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsb3Nlc3QoJ3RoJyk/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3Qgd2lkdGggPSBkb21SZWN0Py53aWR0aCA/PyAwO1xuICAgICAgY29uc3QgcmlnaHQgPSBkb21SZWN0Py5yaWdodCA/PyAwO1xuXG4gICAgICByZXR1cm4gZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMuZG9jdW1lbnRSZWYsICdtb3VzZW1vdmUnKS5waXBlKFxuICAgICAgICBtYXAoKHsgY2xpZW50WCB9KSA9PiB3aWR0aCArIGNsaWVudFggLSByaWdodCksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIHRha2VVbnRpbChmcm9tRXZlbnQodGhpcy5kb2N1bWVudFJlZiwgJ21vdXNldXAnKSlcbiAgICAgICk7XG4gICAgfSlcbiAgKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50UmVmOiBEb2N1bWVudCxcbiAgICBASW5qZWN0KEVsZW1lbnRSZWYpXG4gICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxuICApIHt9XG59XG4iXX0=
@@ -1,7 +1,7 @@
1
1
  import { Component } from '@angular/core';
2
2
  import { DataWidgetComponent } from '@provoly/dashboard';
3
3
  import { combineLatestWith } from 'rxjs';
4
- import { filter, map } from 'rxjs/operators';
4
+ import { filter, map } from 'rxjs';
5
5
  import * as i0 from "@angular/core";
6
6
  import * as i1 from "@ngrx/store";
7
7
  import * as i2 from "@angular/platform-browser";
@@ -92,4 +92,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
92
92
  type: Component,
93
93
  args: [{ selector: 'pry-widget-template', template: "<pry-widget-template-css></pry-widget-template-css>\n@if (displayHeader$ | async) {\n <pry-widget-header\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n #header\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n class=\"o-settings\"\n >\n <div class=\"o-settings__fields\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"html_src\">{{ '@pry.widget.template.html' | i18n }}</label>\n <textarea\n class=\"a-form-field a-text-area -overflow\"\n id=\"html_src\"\n [value]=\"optionsCopy.html\"\n (input)=\"changeHtml($event)\"\n ></textarea>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"css_src\">{{ '@pry.widget.template.css' | i18n }}</label>\n <textarea\n class=\"a-form-field a-text-area -overflow\"\n id=\"css_src\"\n [value]=\"optionsCopy.css\"\n (input)=\"changeCss($event)\"\n ></textarea>\n </div>\n </div>\n </pry-settings>\n </pry-widget-header>\n}\n@if (css$ | async; as css) {\n <div [innerHtml]=\"css\"></div>\n}\n@if (template$ | async; as template) {\n <div [class]=\"'pry-template-' + id\" [innerHtml]=\"template\"></div>\n}\n" }]
94
94
  }], ctorParameters: () => [{ type: i1.Store }, { type: i0.ElementRef }, { type: i2.DomSanitizer }] });
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXRlbXBsYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3dpZGdldHMvd2lkZ2V0LXRlbXBsYXRlL2NvbXBvbmVudC93aWRnZXQtdGVtcGxhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvd2lkZ2V0cy93aWRnZXQtdGVtcGxhdGUvY29tcG9uZW50L3dpZGdldC10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBR3RELE9BQU8sRUFBRSxtQkFBbUIsRUFBeUIsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRixPQUFPLEVBQUUsaUJBQWlCLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQU03QyxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsbUJBQW1CO2FBTXZELGdCQUFXLEdBQUcsQ0FBQyxBQUFKLENBQUs7SUFFdkIsWUFDRSxLQUFpQixFQUNqQixFQUFjLEVBQ04sU0FBdUI7UUFFL0IsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUZULGNBQVMsR0FBVCxTQUFTLENBQWM7UUFUakMsZ0JBQVcsR0FBMEIsRUFBRSxDQUFDO1FBWXRDLElBQUksQ0FBQyxFQUFFLEdBQUcsdUJBQXVCLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDaEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFnQyxDQUFDLENBQUMsQ0FBQztRQUVsRyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUMvRCxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsR0FBSSxlQUFlLENBQUMsT0FBTyxDQUEyQixFQUFFLENBQUM7UUFDaEYsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUVGLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2pDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUNwRSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQ2xDLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUNyRCxDQUFDO1FBRUYsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDNUIsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxVQUFVLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQ3hFLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFDbEMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQ3JELENBQUM7SUFDSixDQUFDO0lBRVEsWUFBWTtRQUNuQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO1lBQ3pCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztZQUM3QixRQUFRLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUU7U0FDMUQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVEsQ0FBQyxRQUFnQixFQUFFLEVBQU87UUFDaEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzVDLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekMsSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDO1FBRXRCLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2hCLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtnQkFDOUIsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDMUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQztnQkFDbkUsSUFBSSxVQUFVLEdBQVEsSUFBSSxDQUFDO2dCQUUzQixRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7b0JBQzlCLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDcEMsSUFBSSxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7d0JBQy9CLE1BQU0sT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7NkJBQ3ZFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDOzZCQUNuQixPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO3dCQUNwQixVQUFVLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDakMsQ0FBQzt5QkFBTSxJQUFJLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQzt3QkFDckMsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUM7NEJBQ2pCLFVBQVUsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDaEUsQ0FBQztvQkFDSCxDQUFDO3lCQUFNLENBQUM7d0JBQ04sSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUM7NEJBQ2pCLE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7NEJBQzVDLElBQUksWUFBWSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0NBQ3hCLFVBQVUsR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7NEJBQ3JDLENBQUM7aUNBQU0sQ0FBQztnQ0FDTixNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQztnQ0FDbEQsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0NBQ3RELFVBQVUsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDOzRCQUNoRCxDQUFDOzRCQUNELElBQUksQ0FBQyxDQUFDLFVBQVUsSUFBSSxVQUFVLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO2dDQUNoRCxVQUFVLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQzs0QkFDaEMsQ0FBQzt3QkFDSCxDQUFDO29CQUNILENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ2pELENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRU8sVUFBVSxDQUFDLEdBQVc7UUFDNUIsTUFBTSxLQUFLLEdBQUcsaUJBQWlCLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUV6QyxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxLQUFLLEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUU3RixPQUFPLEtBQUssR0FBRyxHQUFHLEdBQUcsTUFBTSxDQUFDO0lBQzlCLENBQUM7SUFFRCxVQUFVLENBQUMsTUFBYTtRQUN0QixhQUFhO1FBQ2IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7SUFDckQsQ0FBQztJQUVELFNBQVMsQ0FBQyxNQUFhO1FBQ3JCLGFBQWE7UUFDYixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztJQUNwRCxDQUFDOzhHQXpHVSx1QkFBdUI7a0dBQXZCLHVCQUF1QixrRkNYcEMsOHBEQWdEQTs7MkZEckNhLHVCQUF1QjtrQkFKbkMsU0FBUzsrQkFDRSxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgRGF0YVdpZGdldENvbXBvbmVudCwgVGVtcGxhdGVXaWRnZXRPcHRpb25zIH0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3RXaXRoLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LXdpZGdldC10ZW1wbGF0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi93aWRnZXQtdGVtcGxhdGUuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFdpZGdldFRlbXBsYXRlQ29tcG9uZW50IGV4dGVuZHMgRGF0YVdpZGdldENvbXBvbmVudCB7XG4gIG9wdGlvbnMkOiBPYnNlcnZhYmxlPFRlbXBsYXRlV2lkZ2V0T3B0aW9ucz47XG4gIG9wdGlvbnNDb3B5OiBUZW1wbGF0ZVdpZGdldE9wdGlvbnMgPSB7fTtcbiAgdGVtcGxhdGUkOiBPYnNlcnZhYmxlPFNhZmVIdG1sPjtcbiAgY3NzJDogT2JzZXJ2YWJsZTxTYWZlSHRtbD47XG4gIGlkOiBudW1iZXI7XG4gIHN0YXRpYyBpZEdlbmVyYXRvciA9IDA7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc3RvcmU6IFN0b3JlPGFueT4sXG4gICAgZWw6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplclxuICApIHtcbiAgICBzdXBlcihzdG9yZSwgZWwpO1xuICAgIHRoaXMuaWQgPSBXaWRnZXRUZW1wbGF0ZUNvbXBvbmVudC5pZEdlbmVyYXRvcisrO1xuICAgIHRoaXMub3B0aW9ucyQgPSB0aGlzLm1hbmlmZXN0JC5waXBlKG1hcCgobWFuaWZlc3QpID0+IG1hbmlmZXN0Lm9wdGlvbnMgYXMgVGVtcGxhdGVXaWRnZXRPcHRpb25zKSk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5vcHRpb25zJC5waXBlKGZpbHRlcigob3B0KSA9PiAhIW9wdCkpLnN1YnNjcmliZSgob3B0aW9ucykgPT4ge1xuICAgICAgICB0aGlzLm9wdGlvbnNDb3B5ID0geyAuLi4oc3RydWN0dXJlZENsb25lKG9wdGlvbnMpIGFzIFRlbXBsYXRlV2lkZ2V0T3B0aW9ucykgfTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMudGVtcGxhdGUkID0gdGhpcy5vcHRpb25zJC5waXBlKFxuICAgICAgbWFwKChvcHRpb25zKSA9PiAoISFvcHRpb25zLnN2ZyA/IG9wdGlvbnMuc3ZnIDogb3B0aW9ucy5odG1sID8/ICcnKSksXG4gICAgICBjb21iaW5lTGF0ZXN0V2l0aCh0aGlzLnJlc3VsdFNldCQpLFxuICAgICAgbWFwKChbdGVtcGxhdGUsIHJzXSkgPT4gdGhpcy5ldmFsdWF0ZSh0ZW1wbGF0ZSwgcnMpKVxuICAgICk7XG5cbiAgICB0aGlzLmNzcyQgPSB0aGlzLm9wdGlvbnMkLnBpcGUoXG4gICAgICBtYXAoKG9wdGlvbnMpID0+IGA8c3R5bGU+JHt0aGlzLmxpbWl0U2NvcGUob3B0aW9ucy5jc3MgPz8gJycpfTwvc3R5bGU+YCksXG4gICAgICBjb21iaW5lTGF0ZXN0V2l0aCh0aGlzLnJlc3VsdFNldCQpLFxuICAgICAgbWFwKChbdGVtcGxhdGUsIHJzXSkgPT4gdGhpcy5ldmFsdWF0ZSh0ZW1wbGF0ZSwgcnMpKVxuICAgICk7XG4gIH1cblxuICBvdmVycmlkZSBlbWl0TWFuaWZlc3QoKSB7XG4gICAgdGhpcy5tYW5pZmVzdE1vZGlmaWVkLmVtaXQoe1xuICAgICAgd2lkZ2V0SW5kZXg6IHRoaXMud2lkZ2V0SW5kZXgsXG4gICAgICBtYW5pZmVzdDogeyAuLi50aGlzLm1hbmlmZXN0LCBvcHRpb25zOiB0aGlzLm9wdGlvbnNDb3B5IH1cbiAgICB9KTtcbiAgfVxuXG4gIGV2YWx1YXRlKHRlbXBsYXRlOiBzdHJpbmcsIHJzOiBhbnkpOiBTYWZlSHRtbCB7XG4gICAgY29uc3QgcmVnZXhwID0gbmV3IFJlZ0V4cCgne3soLio/KX19JywgJ2cnKTtcbiAgICBjb25zdCB0b1JlcGxhY2UgPSB0ZW1wbGF0ZS5tYXRjaChyZWdleHApO1xuICAgIGxldCByZXN1bHQgPSB0ZW1wbGF0ZTtcblxuICAgIGlmICghIXRvUmVwbGFjZSkge1xuICAgICAgdG9SZXBsYWNlLmZvckVhY2goKGV4dHJhY3RlZCkgPT4ge1xuICAgICAgICBjb25zdCBleHByID0gZXh0cmFjdGVkLnN1YnN0cmluZygyLCBleHRyYWN0ZWQubGVuZ3RoIC0gMik7XG4gICAgICAgIGNvbnN0IHNwbGl0dGVkID0gZXhwci5zcGxpdCgvWy5cXF1dLykuZmlsdGVyKChleHRyKSA9PiBleHRyICE9PSAnJyk7XG4gICAgICAgIGxldCBldmFsdWF0aW9uOiBhbnkgPSBudWxsO1xuXG4gICAgICAgIHNwbGl0dGVkLmZvckVhY2goKF9zcGxpdFBhcnQpID0+IHtcbiAgICAgICAgICBjb25zdCBzcGxpdFBhcnQgPSBfc3BsaXRQYXJ0LnRyaW0oKTtcbiAgICAgICAgICBpZiAoc3BsaXRQYXJ0LnN0YXJ0c1dpdGgoJ3JzJykpIHtcbiAgICAgICAgICAgIGNvbnN0IGNsYXNzSWQgPSAoZXhwci5tYXRjaCgvcnNcXFsnKC4pKj8nLykgPz8gWyduby1jbGFzcy1pZC1kZXRlY3RlZCddKVswXVxuICAgICAgICAgICAgICAucmVwbGFjZShcInJzWydcIiwgJycpXG4gICAgICAgICAgICAgIC5yZXBsYWNlKFwiJ1wiLCAnJyk7XG4gICAgICAgICAgICBldmFsdWF0aW9uID0gcnMuaXRlbXNbY2xhc3NJZF07XG4gICAgICAgICAgfSBlbHNlIGlmIChzcGxpdFBhcnQuc3RhcnRzV2l0aCgnWycpKSB7XG4gICAgICAgICAgICBpZiAoISFldmFsdWF0aW9uKSB7XG4gICAgICAgICAgICAgIGV2YWx1YXRpb24gPSBldmFsdWF0aW9uW3BhcnNlSW50KHNwbGl0UGFydC5zdWJzdHJpbmcoMSksIDEwKV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghIWV2YWx1YXRpb24pIHtcbiAgICAgICAgICAgICAgY29uc3QgaW5kZXhPZkNhcmV0ID0gc3BsaXRQYXJ0LmluZGV4T2YoJ1snKTtcbiAgICAgICAgICAgICAgaWYgKGluZGV4T2ZDYXJldCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBldmFsdWF0aW9uID0gZXZhbHVhdGlvbltzcGxpdFBhcnRdO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHByb3AgPSBzcGxpdFBhcnQuc3Vic3RyaW5nKDAsIGluZGV4T2ZDYXJldCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3ViUHJvcCA9IHNwbGl0UGFydC5zdWJzdHJpbmcoaW5kZXhPZkNhcmV0ICsgMSk7XG4gICAgICAgICAgICAgICAgZXZhbHVhdGlvbiA9IGV2YWx1YXRpb25bcHJvcF0udmFsdWVzW3N1YlByb3BdO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmICghIWV2YWx1YXRpb24gJiYgZXZhbHVhdGlvbi50eXBlID09PSAnVkFMVUUnKSB7XG4gICAgICAgICAgICAgICAgZXZhbHVhdGlvbiA9IGV2YWx1YXRpb24udmFsdWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdC5yZXBsYWNlKGV4dHJhY3RlZCwgZXZhbHVhdGlvbik7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwocmVzdWx0KTtcbiAgfVxuXG4gIHByaXZhdGUgbGltaXRTY29wZShjc3M6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3Qgc2NvcGUgPSBgLnByeS10ZW1wbGF0ZS0ke3RoaXMuaWR9YDtcblxuICAgIGNvbnN0IHNjb3BlZCA9IGNzcy5yZXBsYWNlKC8oW30sXSA/KS9nLCBgJDEke3Njb3BlfSBgKS5yZXBsYWNlKG5ldyBSZWdFeHAoc2NvcGUgKyAnICQnKSwgJycpO1xuXG4gICAgcmV0dXJuIHNjb3BlICsgJyAnICsgc2NvcGVkO1xuICB9XG5cbiAgY2hhbmdlSHRtbCgkZXZlbnQ6IEV2ZW50KSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHRoaXMub3B0aW9uc0NvcHkuaHRtbCA9ICRldmVudC5jdXJyZW50VGFyZ2V0LnZhbHVlO1xuICB9XG5cbiAgY2hhbmdlQ3NzKCRldmVudDogRXZlbnQpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdGhpcy5vcHRpb25zQ29weS5jc3MgPSAkZXZlbnQuY3VycmVudFRhcmdldC52YWx1ZTtcbiAgfVxufVxuIiwiPHByeS13aWRnZXQtdGVtcGxhdGUtY3NzPjwvcHJ5LXdpZGdldC10ZW1wbGF0ZS1jc3M+XG5AaWYgKGRpc3BsYXlIZWFkZXIkIHwgYXN5bmMpIHtcbiAgPHByeS13aWRnZXQtaGVhZGVyXG4gICAgW3dpZGdldEluZGV4XT1cIndpZGdldEluZGV4XCJcbiAgICBbbWFuaWZlc3RdPVwibWFuaWZlc3RcIlxuICAgIChtYW5pZmVzdE1vZGlmaWVkKT1cIm1hbmlmZXN0TW9kaWZpZWQuZW1pdCgkZXZlbnQpXCJcbiAgICAjaGVhZGVyXG4gICAgW2hlYWRlck9wdGlvbnNdPVwiKGRpc3BsYXlIZWFkZXIkIHwgYXN5bmMpID8/IHt9XCJcbiAgICBbZGF0YXNvdXJjZUlkc109XCIoZGF0YXNvdXJjZUlkcyQgfCBhc3luYykgPz8gW11cIlxuICAgID5cbiAgICA8cHJ5LXNldHRpbmdzXG4gICAgICAoc2F2ZVRyaWdnZXJlZCk9XCJlbWl0TWFuaWZlc3QoKVwiXG4gICAgICAoY2hhbmdlVGl0bGUpPVwiY2hhbmdlV2lkZ2V0VGl0bGUoJGV2ZW50KVwiXG4gICAgICBbaGVhZGVyUHJlc2VudF09XCJkaXNwbGF5SGVhZGVyJCB8IGFzeW5jXCJcbiAgICAgIFt3aWRnZXRJbmRleF09XCJ3aWRnZXRJbmRleFwiXG4gICAgICBbaGVhZGVyXT1cImhlYWRlclwiXG4gICAgICBbb3BlbiRdPVwib3BlbiRcIlxuICAgICAgY2xhc3M9XCJvLXNldHRpbmdzXCJcbiAgICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJvLXNldHRpbmdzX19maWVsZHNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJodG1sX3NyY1wiPnt7ICdAcHJ5LndpZGdldC50ZW1wbGF0ZS5odG1sJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGQgYS10ZXh0LWFyZWEgLW92ZXJmbG93XCJcbiAgICAgICAgICAgIGlkPVwiaHRtbF9zcmNcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvbnNDb3B5Lmh0bWxcIlxuICAgICAgICAgICAgKGlucHV0KT1cImNoYW5nZUh0bWwoJGV2ZW50KVwiXG4gICAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbFwiIGZvcj1cImNzc19zcmNcIj57eyAnQHByeS53aWRnZXQudGVtcGxhdGUuY3NzJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGQgYS10ZXh0LWFyZWEgLW92ZXJmbG93XCJcbiAgICAgICAgICAgIGlkPVwiY3NzX3NyY1wiXG4gICAgICAgICAgICBbdmFsdWVdPVwib3B0aW9uc0NvcHkuY3NzXCJcbiAgICAgICAgICAgIChpbnB1dCk9XCJjaGFuZ2VDc3MoJGV2ZW50KVwiXG4gICAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9wcnktc2V0dGluZ3M+XG4gIDwvcHJ5LXdpZGdldC1oZWFkZXI+XG59XG5AaWYgKGNzcyQgfCBhc3luYzsgYXMgY3NzKSB7XG4gIDxkaXYgW2lubmVySHRtbF09XCJjc3NcIj48L2Rpdj5cbn1cbkBpZiAodGVtcGxhdGUkIHwgYXN5bmM7IGFzIHRlbXBsYXRlKSB7XG4gIDxkaXYgW2NsYXNzXT1cIidwcnktdGVtcGxhdGUtJyArIGlkXCIgW2lubmVySHRtbF09XCJ0ZW1wbGF0ZVwiPjwvZGl2PlxufVxuIl19
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXRlbXBsYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3dpZGdldHMvd2lkZ2V0LXRlbXBsYXRlL2NvbXBvbmVudC93aWRnZXQtdGVtcGxhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvd2lkZ2V0cy93aWRnZXQtdGVtcGxhdGUvY29tcG9uZW50L3dpZGdldC10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBR3RELE9BQU8sRUFBRSxtQkFBbUIsRUFBeUIsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRixPQUFPLEVBQUUsaUJBQWlCLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7QUFNbkMsTUFBTSxPQUFPLHVCQUF3QixTQUFRLG1CQUFtQjthQU12RCxnQkFBVyxHQUFHLENBQUMsQUFBSixDQUFLO0lBRXZCLFlBQ0UsS0FBaUIsRUFDakIsRUFBYyxFQUNOLFNBQXVCO1FBRS9CLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFGVCxjQUFTLEdBQVQsU0FBUyxDQUFjO1FBVGpDLGdCQUFXLEdBQTBCLEVBQUUsQ0FBQztRQVl0QyxJQUFJLENBQUMsRUFBRSxHQUFHLHVCQUF1QixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2hELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBZ0MsQ0FBQyxDQUFDLENBQUM7UUFFbEcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQ3BCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDL0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLEdBQUksZUFBZSxDQUFDLE9BQU8sQ0FBMkIsRUFBRSxDQUFDO1FBQ2hGLENBQUMsQ0FBQyxDQUNILENBQUM7UUFFRixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUNqQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsRUFDcEUsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUNsQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FDckQsQ0FBQztRQUVGLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQzVCLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsVUFBVSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUN4RSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQ2xDLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUNyRCxDQUFDO0lBQ0osQ0FBQztJQUVRLFlBQVk7UUFDbkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQztZQUN6QixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsUUFBUSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFO1NBQzFELENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRLENBQUMsUUFBZ0IsRUFBRSxFQUFPO1FBQ2hDLE1BQU0sTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUM1QyxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pDLElBQUksTUFBTSxHQUFHLFFBQVEsQ0FBQztRQUV0QixJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNoQixTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7Z0JBQzlCLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQzFELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUM7Z0JBQ25FLElBQUksVUFBVSxHQUFRLElBQUksQ0FBQztnQkFFM0IsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO29CQUM5QixNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQ3BDLElBQUksU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO3dCQUMvQixNQUFNLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOzZCQUN2RSxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQzs2QkFDbkIsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQzt3QkFDcEIsVUFBVSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ2pDLENBQUM7eUJBQU0sSUFBSSxTQUFTLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7d0JBQ3JDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDOzRCQUNqQixVQUFVLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7d0JBQ2hFLENBQUM7b0JBQ0gsQ0FBQzt5QkFBTSxDQUFDO3dCQUNOLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDOzRCQUNqQixNQUFNLFlBQVksR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDOzRCQUM1QyxJQUFJLFlBQVksS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO2dDQUN4QixVQUFVLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDOzRCQUNyQyxDQUFDO2lDQUFNLENBQUM7Z0NBQ04sTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUM7Z0NBQ2xELE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDO2dDQUN0RCxVQUFVLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQzs0QkFDaEQsQ0FBQzs0QkFDRCxJQUFJLENBQUMsQ0FBQyxVQUFVLElBQUksVUFBVSxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztnQ0FDaEQsVUFBVSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUM7NEJBQ2hDLENBQUM7d0JBQ0gsQ0FBQztvQkFDSCxDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDO2dCQUVILE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUNqRCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVPLFVBQVUsQ0FBQyxHQUFXO1FBQzVCLE1BQU0sS0FBSyxHQUFHLGlCQUFpQixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7UUFFekMsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsS0FBSyxLQUFLLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFN0YsT0FBTyxLQUFLLEdBQUcsR0FBRyxHQUFHLE1BQU0sQ0FBQztJQUM5QixDQUFDO0lBRUQsVUFBVSxDQUFDLE1BQWE7UUFDdEIsYUFBYTtRQUNiLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO0lBQ3JELENBQUM7SUFFRCxTQUFTLENBQUMsTUFBYTtRQUNyQixhQUFhO1FBQ2IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7SUFDcEQsQ0FBQzs4R0F6R1UsdUJBQXVCO2tHQUF2Qix1QkFBdUIsa0ZDWHBDLDhwREFnREE7OzJGRHJDYSx1QkFBdUI7a0JBSm5DLFNBQVM7K0JBQ0UscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IERhdGFXaWRnZXRDb21wb25lbnQsIFRlbXBsYXRlV2lkZ2V0T3B0aW9ucyB9IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0V2l0aCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LXdpZGdldC10ZW1wbGF0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi93aWRnZXQtdGVtcGxhdGUuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFdpZGdldFRlbXBsYXRlQ29tcG9uZW50IGV4dGVuZHMgRGF0YVdpZGdldENvbXBvbmVudCB7XG4gIG9wdGlvbnMkOiBPYnNlcnZhYmxlPFRlbXBsYXRlV2lkZ2V0T3B0aW9ucz47XG4gIG9wdGlvbnNDb3B5OiBUZW1wbGF0ZVdpZGdldE9wdGlvbnMgPSB7fTtcbiAgdGVtcGxhdGUkOiBPYnNlcnZhYmxlPFNhZmVIdG1sPjtcbiAgY3NzJDogT2JzZXJ2YWJsZTxTYWZlSHRtbD47XG4gIGlkOiBudW1iZXI7XG4gIHN0YXRpYyBpZEdlbmVyYXRvciA9IDA7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc3RvcmU6IFN0b3JlPGFueT4sXG4gICAgZWw6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplclxuICApIHtcbiAgICBzdXBlcihzdG9yZSwgZWwpO1xuICAgIHRoaXMuaWQgPSBXaWRnZXRUZW1wbGF0ZUNvbXBvbmVudC5pZEdlbmVyYXRvcisrO1xuICAgIHRoaXMub3B0aW9ucyQgPSB0aGlzLm1hbmlmZXN0JC5waXBlKG1hcCgobWFuaWZlc3QpID0+IG1hbmlmZXN0Lm9wdGlvbnMgYXMgVGVtcGxhdGVXaWRnZXRPcHRpb25zKSk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5vcHRpb25zJC5waXBlKGZpbHRlcigob3B0KSA9PiAhIW9wdCkpLnN1YnNjcmliZSgob3B0aW9ucykgPT4ge1xuICAgICAgICB0aGlzLm9wdGlvbnNDb3B5ID0geyAuLi4oc3RydWN0dXJlZENsb25lKG9wdGlvbnMpIGFzIFRlbXBsYXRlV2lkZ2V0T3B0aW9ucykgfTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMudGVtcGxhdGUkID0gdGhpcy5vcHRpb25zJC5waXBlKFxuICAgICAgbWFwKChvcHRpb25zKSA9PiAoISFvcHRpb25zLnN2ZyA/IG9wdGlvbnMuc3ZnIDogb3B0aW9ucy5odG1sID8/ICcnKSksXG4gICAgICBjb21iaW5lTGF0ZXN0V2l0aCh0aGlzLnJlc3VsdFNldCQpLFxuICAgICAgbWFwKChbdGVtcGxhdGUsIHJzXSkgPT4gdGhpcy5ldmFsdWF0ZSh0ZW1wbGF0ZSwgcnMpKVxuICAgICk7XG5cbiAgICB0aGlzLmNzcyQgPSB0aGlzLm9wdGlvbnMkLnBpcGUoXG4gICAgICBtYXAoKG9wdGlvbnMpID0+IGA8c3R5bGU+JHt0aGlzLmxpbWl0U2NvcGUob3B0aW9ucy5jc3MgPz8gJycpfTwvc3R5bGU+YCksXG4gICAgICBjb21iaW5lTGF0ZXN0V2l0aCh0aGlzLnJlc3VsdFNldCQpLFxuICAgICAgbWFwKChbdGVtcGxhdGUsIHJzXSkgPT4gdGhpcy5ldmFsdWF0ZSh0ZW1wbGF0ZSwgcnMpKVxuICAgICk7XG4gIH1cblxuICBvdmVycmlkZSBlbWl0TWFuaWZlc3QoKSB7XG4gICAgdGhpcy5tYW5pZmVzdE1vZGlmaWVkLmVtaXQoe1xuICAgICAgd2lkZ2V0SW5kZXg6IHRoaXMud2lkZ2V0SW5kZXgsXG4gICAgICBtYW5pZmVzdDogeyAuLi50aGlzLm1hbmlmZXN0LCBvcHRpb25zOiB0aGlzLm9wdGlvbnNDb3B5IH1cbiAgICB9KTtcbiAgfVxuXG4gIGV2YWx1YXRlKHRlbXBsYXRlOiBzdHJpbmcsIHJzOiBhbnkpOiBTYWZlSHRtbCB7XG4gICAgY29uc3QgcmVnZXhwID0gbmV3IFJlZ0V4cCgne3soLio/KX19JywgJ2cnKTtcbiAgICBjb25zdCB0b1JlcGxhY2UgPSB0ZW1wbGF0ZS5tYXRjaChyZWdleHApO1xuICAgIGxldCByZXN1bHQgPSB0ZW1wbGF0ZTtcblxuICAgIGlmICghIXRvUmVwbGFjZSkge1xuICAgICAgdG9SZXBsYWNlLmZvckVhY2goKGV4dHJhY3RlZCkgPT4ge1xuICAgICAgICBjb25zdCBleHByID0gZXh0cmFjdGVkLnN1YnN0cmluZygyLCBleHRyYWN0ZWQubGVuZ3RoIC0gMik7XG4gICAgICAgIGNvbnN0IHNwbGl0dGVkID0gZXhwci5zcGxpdCgvWy5cXF1dLykuZmlsdGVyKChleHRyKSA9PiBleHRyICE9PSAnJyk7XG4gICAgICAgIGxldCBldmFsdWF0aW9uOiBhbnkgPSBudWxsO1xuXG4gICAgICAgIHNwbGl0dGVkLmZvckVhY2goKF9zcGxpdFBhcnQpID0+IHtcbiAgICAgICAgICBjb25zdCBzcGxpdFBhcnQgPSBfc3BsaXRQYXJ0LnRyaW0oKTtcbiAgICAgICAgICBpZiAoc3BsaXRQYXJ0LnN0YXJ0c1dpdGgoJ3JzJykpIHtcbiAgICAgICAgICAgIGNvbnN0IGNsYXNzSWQgPSAoZXhwci5tYXRjaCgvcnNcXFsnKC4pKj8nLykgPz8gWyduby1jbGFzcy1pZC1kZXRlY3RlZCddKVswXVxuICAgICAgICAgICAgICAucmVwbGFjZShcInJzWydcIiwgJycpXG4gICAgICAgICAgICAgIC5yZXBsYWNlKFwiJ1wiLCAnJyk7XG4gICAgICAgICAgICBldmFsdWF0aW9uID0gcnMuaXRlbXNbY2xhc3NJZF07XG4gICAgICAgICAgfSBlbHNlIGlmIChzcGxpdFBhcnQuc3RhcnRzV2l0aCgnWycpKSB7XG4gICAgICAgICAgICBpZiAoISFldmFsdWF0aW9uKSB7XG4gICAgICAgICAgICAgIGV2YWx1YXRpb24gPSBldmFsdWF0aW9uW3BhcnNlSW50KHNwbGl0UGFydC5zdWJzdHJpbmcoMSksIDEwKV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghIWV2YWx1YXRpb24pIHtcbiAgICAgICAgICAgICAgY29uc3QgaW5kZXhPZkNhcmV0ID0gc3BsaXRQYXJ0LmluZGV4T2YoJ1snKTtcbiAgICAgICAgICAgICAgaWYgKGluZGV4T2ZDYXJldCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBldmFsdWF0aW9uID0gZXZhbHVhdGlvbltzcGxpdFBhcnRdO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHByb3AgPSBzcGxpdFBhcnQuc3Vic3RyaW5nKDAsIGluZGV4T2ZDYXJldCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3ViUHJvcCA9IHNwbGl0UGFydC5zdWJzdHJpbmcoaW5kZXhPZkNhcmV0ICsgMSk7XG4gICAgICAgICAgICAgICAgZXZhbHVhdGlvbiA9IGV2YWx1YXRpb25bcHJvcF0udmFsdWVzW3N1YlByb3BdO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmICghIWV2YWx1YXRpb24gJiYgZXZhbHVhdGlvbi50eXBlID09PSAnVkFMVUUnKSB7XG4gICAgICAgICAgICAgICAgZXZhbHVhdGlvbiA9IGV2YWx1YXRpb24udmFsdWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdC5yZXBsYWNlKGV4dHJhY3RlZCwgZXZhbHVhdGlvbik7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwocmVzdWx0KTtcbiAgfVxuXG4gIHByaXZhdGUgbGltaXRTY29wZShjc3M6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3Qgc2NvcGUgPSBgLnByeS10ZW1wbGF0ZS0ke3RoaXMuaWR9YDtcblxuICAgIGNvbnN0IHNjb3BlZCA9IGNzcy5yZXBsYWNlKC8oW30sXSA/KS9nLCBgJDEke3Njb3BlfSBgKS5yZXBsYWNlKG5ldyBSZWdFeHAoc2NvcGUgKyAnICQnKSwgJycpO1xuXG4gICAgcmV0dXJuIHNjb3BlICsgJyAnICsgc2NvcGVkO1xuICB9XG5cbiAgY2hhbmdlSHRtbCgkZXZlbnQ6IEV2ZW50KSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHRoaXMub3B0aW9uc0NvcHkuaHRtbCA9ICRldmVudC5jdXJyZW50VGFyZ2V0LnZhbHVlO1xuICB9XG5cbiAgY2hhbmdlQ3NzKCRldmVudDogRXZlbnQpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdGhpcy5vcHRpb25zQ29weS5jc3MgPSAkZXZlbnQuY3VycmVudFRhcmdldC52YWx1ZTtcbiAgfVxufVxuIiwiPHByeS13aWRnZXQtdGVtcGxhdGUtY3NzPjwvcHJ5LXdpZGdldC10ZW1wbGF0ZS1jc3M+XG5AaWYgKGRpc3BsYXlIZWFkZXIkIHwgYXN5bmMpIHtcbiAgPHByeS13aWRnZXQtaGVhZGVyXG4gICAgW3dpZGdldEluZGV4XT1cIndpZGdldEluZGV4XCJcbiAgICBbbWFuaWZlc3RdPVwibWFuaWZlc3RcIlxuICAgIChtYW5pZmVzdE1vZGlmaWVkKT1cIm1hbmlmZXN0TW9kaWZpZWQuZW1pdCgkZXZlbnQpXCJcbiAgICAjaGVhZGVyXG4gICAgW2hlYWRlck9wdGlvbnNdPVwiKGRpc3BsYXlIZWFkZXIkIHwgYXN5bmMpID8/IHt9XCJcbiAgICBbZGF0YXNvdXJjZUlkc109XCIoZGF0YXNvdXJjZUlkcyQgfCBhc3luYykgPz8gW11cIlxuICAgID5cbiAgICA8cHJ5LXNldHRpbmdzXG4gICAgICAoc2F2ZVRyaWdnZXJlZCk9XCJlbWl0TWFuaWZlc3QoKVwiXG4gICAgICAoY2hhbmdlVGl0bGUpPVwiY2hhbmdlV2lkZ2V0VGl0bGUoJGV2ZW50KVwiXG4gICAgICBbaGVhZGVyUHJlc2VudF09XCJkaXNwbGF5SGVhZGVyJCB8IGFzeW5jXCJcbiAgICAgIFt3aWRnZXRJbmRleF09XCJ3aWRnZXRJbmRleFwiXG4gICAgICBbaGVhZGVyXT1cImhlYWRlclwiXG4gICAgICBbb3BlbiRdPVwib3BlbiRcIlxuICAgICAgY2xhc3M9XCJvLXNldHRpbmdzXCJcbiAgICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJvLXNldHRpbmdzX19maWVsZHNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJodG1sX3NyY1wiPnt7ICdAcHJ5LndpZGdldC50ZW1wbGF0ZS5odG1sJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGQgYS10ZXh0LWFyZWEgLW92ZXJmbG93XCJcbiAgICAgICAgICAgIGlkPVwiaHRtbF9zcmNcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvbnNDb3B5Lmh0bWxcIlxuICAgICAgICAgICAgKGlucHV0KT1cImNoYW5nZUh0bWwoJGV2ZW50KVwiXG4gICAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbFwiIGZvcj1cImNzc19zcmNcIj57eyAnQHByeS53aWRnZXQudGVtcGxhdGUuY3NzJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGQgYS10ZXh0LWFyZWEgLW92ZXJmbG93XCJcbiAgICAgICAgICAgIGlkPVwiY3NzX3NyY1wiXG4gICAgICAgICAgICBbdmFsdWVdPVwib3B0aW9uc0NvcHkuY3NzXCJcbiAgICAgICAgICAgIChpbnB1dCk9XCJjaGFuZ2VDc3MoJGV2ZW50KVwiXG4gICAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9wcnktc2V0dGluZ3M+XG4gIDwvcHJ5LXdpZGdldC1oZWFkZXI+XG59XG5AaWYgKGNzcyQgfCBhc3luYzsgYXMgY3NzKSB7XG4gIDxkaXYgW2lubmVySHRtbF09XCJjc3NcIj48L2Rpdj5cbn1cbkBpZiAodGVtcGxhdGUkIHwgYXN5bmM7IGFzIHRlbXBsYXRlKSB7XG4gIDxkaXYgW2NsYXNzXT1cIidwcnktdGVtcGxhdGUtJyArIGlkXCIgW2lubmVySHRtbF09XCJ0ZW1wbGF0ZVwiPjwvZGl2PlxufVxuIl19
@@ -1,7 +1,7 @@
1
1
  import { Component } from '@angular/core';
2
2
  import { ClassSelectors, ConfigSelectors, ContextMenuActions, DashboardActions, DashboardSelectors, DataWidgetComponent, FieldSelectors, FieldType, ItemUtils, WIDGET_HEADER_HEIGHT } from '@provoly/dashboard';
3
3
  import { combineLatest } from 'rxjs';
4
- import { filter, map } from 'rxjs/operators';
4
+ import { filter, map } from 'rxjs';
5
5
  import * as i0 from "@angular/core";
6
6
  import * as i1 from "@ngrx/store";
7
7
  import * as i2 from "@angular/forms";
@@ -128,4 +128,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
128
128
  type: Component,
129
129
  args: [{ selector: 'pry-widget-tile', template: "<pry-widget-tile-css></pry-widget-tile-css>\n<div class=\"o-widget o-widget--tile\">\n @if (displayHeader$ | async) {\n <pry-widget-header\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n #header\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n class=\"o-settings\"\n >\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"tile_classes\">{{ '@pry.widget.tile.classes' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeClasses($event)\"\n [items]=\"classes$ | async\"\n [multiple]=\"true\"\n [closeOnSelect]=\"false\"\n [ngModel]=\"optionsCopy.classes\"\n bindLabel=\"name\"\n bindValue=\"id\"\n id=\"tile_classes\"\n ></pry-select>\n </div>\n </pry-settings>\n </pry-widget-header>\n }\n <div class=\"o-widget--tile-wrapper\" [style.top]=\"(displayHeader$ | async) ? WIDGET_HEADER_HEIGHT + 'px' : 0\">\n @if ((items$ | async)?.length === 0) {\n <div class=\"no-result\">\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.tile.empty' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.tile.empty' | i18n }}</span>\n </div>\n }\n <ul class=\"o-widget--tile__list\">\n @for (item of items$ | async; track item.id; let index = $index) {\n <li class=\"o-widget--tile__list__item\" (contextmenu)=\"contextMenu($event, item)\">\n <div class=\"o-widget--tile__list__item__header\">\n <img\n [height]=\"25\"\n [width]=\"25\"\n [src]=\"item | translateItemToSymbol | async\"\n [alt]=\"item.oClass | translateId: { type: 'class', output: 'name' } | async\"\n />\n <h3 class=\"o-widget--tile__list__item__header__title\">\n {{\n item.oClass\n | translateId\n : {\n type: 'class',\n output: 'name'\n }\n | async\n }}\n </h3>\n <pry-checkbox\n [ngModel]=\"(selectedIds$ | async).includes(item.id)\"\n (click)=\"select($event, item)\"\n ></pry-checkbox>\n </div>\n <div class=\"o-properties\">\n <ul class=\"o-properties__list\">\n @for (property of (propertiesToDisplay$ | async)![item.oClass]; track property.prop) {\n @for (value of getValue(item, property.prop); track value; let i = $index; let c = $count) {\n <li\n class=\"o-properties__list__item\"\n >\n @if (i === 0) {\n <p class=\"o-properties__list__item__label\">{{ property.label }}:</p>\n }\n @if (!isRaw(property.label, item.oClass)) {\n <p class=\"o-properties__list__item__value\">\n {{ value?.value | dataFormat: property.field }}\n </p>\n } @else {\n <p class=\"o-properties__list__item__raw\">\n <pry-vizualize-raw [item]=\"item\" [propertyName]=\"property.label\"></pry-vizualize-raw>\n </p>\n }\n @if (hasMetadata(value)) {\n <pry-metadata [item]=\"value\"></pry-metadata>\n }\n </li>\n }\n }\n </ul>\n </div>\n <div (click)=\"toggleMap(index, item)\" class=\"o-widget--tile__list__item__footer\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text -link-like\"\n aria-controls=\"tile-map-xxx\"\n aria-expanded=\"false\"\n >\n {{ '@pry.widget.tile.map' | i18n }}\n </button>\n </div>\n @if (maps[index]) {\n <div class=\"o-widget--tile__list__item__map\" id=\"tile-map-xxx\">\n <pry-widget-map [staticManifest]=\"mapManifest\" [staticResultSet]=\"maps[index]!\"></pry-widget-map>\n </div>\n }\n </li>\n }\n </ul>\n</div>\n</div>\n" }]
130
130
  }], ctorParameters: () => [{ type: i1.Store }, { type: i0.ElementRef }] });
131
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXRpbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvd2lkZ2V0cy93aWRnZXQtdGlsZS9jb21wb25lbnQvd2lkZ2V0LXRpbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvd2lkZ2V0cy93aWRnZXQtdGlsZS9jb21wb25lbnQvd2lkZ2V0LXRpbGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxNQUFNLGVBQWUsQ0FBQztBQUV0RCxPQUFPLEVBR0wsY0FBYyxFQUNkLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQixtQkFBbUIsRUFFbkIsY0FBYyxFQUNkLFNBQVMsRUFFVCxTQUFTLEVBR1Qsb0JBQW9CLEVBQ3JCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLGFBQWEsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7O0FBTTdDLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxtQkFBbUI7SUFrQjFELFlBQVksS0FBaUIsRUFBRSxFQUFjO1FBQzNDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFmbkIsU0FBSSxHQUE4QixFQUFFLENBQUM7UUFDckMsZ0JBQVcsR0FBRztZQUNaLElBQUksRUFBRSxLQUFLO1lBQ1gsTUFBTSxFQUFFLEtBQUs7WUFDYixNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFO1lBQzNDLE9BQU8s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Q2hELENBQUM7SUFFRCxLQUFLLENBQUMsUUFBZ0IsRUFBRSxPQUFlO1FBQ3JDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLE9BQU8sQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDO1FBQ3RFLE9BQU8sSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUM7SUFDckQsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFrQztRQUM1QyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7OEdBeElVLG1CQUFtQjtrR0FBbkIsbUJBQW1CLDhFQzNCaEMsNG9KQXlIQTs7MkZEOUZhLG1CQUFtQjtrQkFKL0IsU0FBUzsrQkFDRSxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHtcbiAgQXR0cmlidXRlU2ltcGxlVmFsdWUsXG4gIENsYXNzLFxuICBDbGFzc1NlbGVjdG9ycyxcbiAgQ29uZmlnU2VsZWN0b3JzLFxuICBDb250ZXh0TWVudUFjdGlvbnMsXG4gIERhc2hib2FyZEFjdGlvbnMsXG4gIERhc2hib2FyZFNlbGVjdG9ycyxcbiAgRGF0YVdpZGdldENvbXBvbmVudCxcbiAgRmllbGQsXG4gIEZpZWxkU2VsZWN0b3JzLFxuICBGaWVsZFR5cGUsXG4gIEl0ZW0sXG4gIEl0ZW1VdGlscyxcbiAgUmVzdWx0U2V0LFxuICBUaWxlV2lkZ2V0T3B0aW9ucyxcbiAgV0lER0VUX0hFQURFUl9IRUlHSFRcbn0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktd2lkZ2V0LXRpbGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vd2lkZ2V0LXRpbGUuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFdpZGdldFRpbGVDb21wb25lbnQgZXh0ZW5kcyBEYXRhV2lkZ2V0Q29tcG9uZW50IHtcbiAgb3B0aW9ucyQ6IE9ic2VydmFibGU8VGlsZVdpZGdldE9wdGlvbnM+O1xuICBpdGVtcyQ6IE9ic2VydmFibGU8SXRlbVtdPjtcbiAgc2VsZWN0ZWRJZHMkOiBPYnNlcnZhYmxlPGFueT47XG4gIG1hcHM6ICh1bmRlZmluZWQgfCBSZXN1bHRTZXQpW10gPSBbXTtcbiAgbWFwTWFuaWZlc3QgPSB7XG4gICAgdHlwZTogJ21hcCcsXG4gICAgaGVhZGVyOiBmYWxzZSxcbiAgICBsYXlvdXQ6IHsgeDogMSwgeTogMSwgd2lkdGg6IDEsIGhlaWdodDogMSB9LFxuICAgIG9wdGlvbnM6IHsgbGF5ZXJzOiBbeyB0eXBlOiAnbWFya2VyJyB9XSwgZml0OiB0cnVlIH1cbiAgfTtcbiAgY2xhc3NlcyQ6IE9ic2VydmFibGU8Q2xhc3NbXT47XG4gIG9wdGlvbnNDb3B5OiBUaWxlV2lkZ2V0T3B0aW9ucyA9IHt9O1xuICBXSURHRVRfSEVBREVSX0hFSUdIVCA9IFdJREdFVF9IRUFERVJfSEVJR0hUO1xuICBwcm9wZXJ0aWVzVG9EaXNwbGF5JDogT2JzZXJ2YWJsZTx7IFtwOiBzdHJpbmddOiB7IGxhYmVsOiBzdHJpbmc7IHByb3A6IHN0cmluZzsgZmllbGQ6IEZpZWxkIH1bXSB9IHwgdW5kZWZpbmVkPjtcbiAgZmllbGRzOiBGaWVsZFtdID0gW107XG4gIGNsYXNzZXM6IENsYXNzW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihzdG9yZTogU3RvcmU8YW55PiwgZWw6IEVsZW1lbnRSZWYpIHtcbiAgICBzdXBlcihzdG9yZSwgZWwpO1xuICAgIHRoaXMub3B0aW9ucyQgPSB0aGlzLm1hbmlmZXN0JC5waXBlKG1hcCgobWFuaWZlc3QpID0+IG1hbmlmZXN0Lm9wdGlvbnMgYXMgVGlsZVdpZGdldE9wdGlvbnMpKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5vcHRpb25zJC5waXBlKGZpbHRlcigob3B0KSA9PiAhIW9wdCkpLnN1YnNjcmliZSgob3B0aW9ucykgPT4ge1xuICAgICAgICB0aGlzLm9wdGlvbnNDb3B5ID0geyAuLi4oc3RydWN0dXJlZENsb25lKG9wdGlvbnMpIGFzIFRpbGVXaWRnZXRPcHRpb25zKSB9O1xuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMuaXRlbXMkID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLnJlc3VsdFNldCQucGlwZShtYXAoKHJzKSA9PiBPYmplY3QudmFsdWVzKHJzLml0ZW1zKS5yZWR1Y2UoKHAsIGMpID0+IFsuLi5wLCAuLi5jXSwgW10pKSksXG4gICAgICB0aGlzLm9wdGlvbnMkXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW2l0ZW1zLCBvcHRpb25zXSkgPT5cbiAgICAgICAgaXRlbXMuZmlsdGVyKFxuICAgICAgICAgIChpdGVtKSA9PiAhb3B0aW9ucy5jbGFzc2VzIHx8IG9wdGlvbnMuY2xhc3Nlcy5sZW5ndGggPT09IDAgfHwgb3B0aW9ucy5jbGFzc2VzLmluY2x1ZGVzKGl0ZW0ub0NsYXNzKVxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLnNlbGVjdGVkSWRzJCA9IHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5zZWxlY3RlZEl0ZW1JZHMpO1xuICAgIHRoaXMuY2xhc3NlcyQgPSB0aGlzLnN0b3JlLnNlbGVjdChDbGFzc1NlbGVjdG9ycy5jbGFzc2VzKTtcbiAgICB0aGlzLnByb3BlcnRpZXNUb0Rpc3BsYXkkID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmNsYXNzZXMkLFxuICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoQ29uZmlnU2VsZWN0b3JzLnRpbGVBdHRyaWJ1dGVzRGVmaW5pdGlvbnMpLFxuICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoQ29uZmlnU2VsZWN0b3JzLm1heEF0dHJpYnV0ZXNJblRpbGVzKVxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoKFtjbGFzc2VzLCB0aWxlRGVmcywgbWF4VGlsZXNBdHRyaWJ1dGVzXSkgPT4gKHtcbiAgICAgICAgLi4uY2xhc3Nlc1xuICAgICAgICAgIC5tYXAoKGNsYXp6KSA9PiAoe1xuICAgICAgICAgICAgW2NsYXp6LmlkXTogW1xuICAgICAgICAgICAgICAuLi5jbGF6ei5hdHRyaWJ1dGVzXG4gICAgICAgICAgICAgICAgLm1hcCgoYXR0cikgPT4gKHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiBhdHRyLm5hbWUsXG4gICAgICAgICAgICAgICAgICBwcm9wOiBhdHRyLnRlY2huaWNhbE5hbWUsXG4gICAgICAgICAgICAgICAgICBmaWVsZDogYXR0ci5maWVsZFxuICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKF8sIGkpID0+IGkgPCBtYXhUaWxlc0F0dHJpYnV0ZXMpXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSkpXG4gICAgICAgICAgLnJlZHVjZSgocCwgYykgPT4gKHsgLi4ucCwgLi4uYyB9KSwge30pLFxuICAgICAgICAuLi5jbGFzc2VzXG4gICAgICAgICAgLmZpbHRlcigoY2xhenopID0+ICEhdGlsZURlZnNbY2xhenouaWRdKVxuICAgICAgICAgIC5tYXAoKGNsYXp6KSA9PiAoe1xuICAgICAgICAgICAgW2NsYXp6LmlkXTogW1xuICAgICAgICAgICAgICAuLi5jbGF6ei5hdHRyaWJ1dGVzXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoYXR0cikgPT4gdGlsZURlZnNbY2xhenouaWRdLmluY2x1ZGVzKGF0dHIubmFtZSkpXG4gICAgICAgICAgICAgICAgLm1hcCgoYXR0cikgPT4gKHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiBhdHRyLm5hbWUsXG4gICAgICAgICAgICAgICAgICBwcm9wOiBhdHRyLnRlY2huaWNhbE5hbWUsXG4gICAgICAgICAgICAgICAgICBmaWVsZDogYXR0ci5maWVsZFxuICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH0pKVxuICAgICAgICAgIC5yZWR1Y2UoKHAsIGMpID0+ICh7IC4uLnAsIC4uLmMgfSksIHt9KVxuICAgICAgfSkpXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMuc3RvcmUuc2VsZWN0KEZpZWxkU2VsZWN0b3JzLmZpZWxkcykuc3Vic2NyaWJlKChmaWVsZHMpID0+ICh0aGlzLmZpZWxkcyA9IGZpZWxkcykpKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMuY2xhc3NlcyQuc3Vic2NyaWJlKChjbGFzc2VzKSA9PiAodGhpcy5jbGFzc2VzID0gY2xhc3NlcykpKTtcbiAgfVxuXG4gIGNvbnRleHRNZW51KCRldmVudDogTW91c2VFdmVudCwgaXRlbTogSXRlbSkge1xuICAgIGlmICh0aGlzLm1hbmlmZXN0LmNvbnRleHRNZW51ICE9PSBmYWxzZSkge1xuICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgICBDb250ZXh0TWVudUFjdGlvbnMub3Blbih7XG4gICAgICAgICAgaXRlbUlkOiBpdGVtLmlkLFxuICAgICAgICAgIGNsaWVudFg6ICRldmVudC5jbGllbnRYLFxuICAgICAgICAgIGNsaWVudFk6ICRldmVudC5jbGllbnRZLFxuICAgICAgICAgIGZyb206ICd0aWxlJyxcbiAgICAgICAgICBhbGxvd09iamVjdENyZWF0aW9uOiBmYWxzZVxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3QoJGV2ZW50OiBNb3VzZUV2ZW50LCBpdGVtOiBJdGVtKSB7XG4gICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5zZWxlY3QoeyBpZDogaXRlbS5pZCwgY3VtdWxhdGl2ZTogISRldmVudC5zaGlmdEtleSB9KSk7XG4gIH1cblxuICB0b2dnbGVNYXAoaW5kZXg6IG51bWJlciwgaXRlbTogSXRlbSkge1xuICAgIHRoaXMubWFwc1tpbmRleF0gPSAhdGhpcy5tYXBzW2luZGV4XVxuICAgICAgPyAoeyBpdGVtczogeyBbaXRlbS5vQ2xhc3NdOiBbaXRlbV0gfSwgcmVsYXRpb25zOiBbXSB9IGFzIFJlc3VsdFNldClcbiAgICAgIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcmVzdWx0U2V0V2l0aEl0ZW0oaXRlbTogSXRlbSk6IFJlc3VsdFNldCB7XG4gICAgcmV0dXJuIHsgaXRlbXM6IHsgW2l0ZW0ub0NsYXNzXTogW2l0ZW1dIH0sIHJlbGF0aW9uczogW10gfTtcbiAgfVxuXG4gIG92ZXJyaWRlIGVtaXRNYW5pZmVzdCgpIHtcbiAgICB0aGlzLm1hbmlmZXN0TW9kaWZpZWQuZW1pdCh7XG4gICAgICB3aWRnZXRJbmRleDogdGhpcy53aWRnZXRJbmRleCxcbiAgICAgIG1hbmlmZXN0OiB7XG4gICAgICAgIC4uLnRoaXMubWFuaWZlc3QsXG4gICAgICAgIG9wdGlvbnM6IHRoaXMub3B0aW9uc0NvcHlcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGNoYW5nZUNsYXNzZXMoJGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLm9wdGlvbnNDb3B5LmNsYXNzZXMgPSAkZXZlbnQ7XG4gIH1cblxuICBnZXRWYWx1ZShpdGVtOiBJdGVtLCBwcm9wZXJ0eTogc3RyaW5nKTogQXR0cmlidXRlU2ltcGxlVmFsdWVbXSB7XG4gICAgY29uc3QgdmFsdWUgPSBJdGVtVXRpbHMuZ2V0QXR0cmlidXRlVmFsdWUoaXRlbSwgcHJvcGVydHkpO1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTtcbiAgfVxuXG4gIGlzUmF3KHByb3BlcnR5OiBzdHJpbmcsIGNsYXNzSWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGNsYXp6ID0gdGhpcy5jbGFzc2VzLmZpbmQoKGNsYXp6KSA9PiBjbGF6ei5pZCA9PT0gY2xhc3NJZCk7XG4gICAgY29uc3QgcHJvcCA9IGNsYXp6Py5hdHRyaWJ1dGVzLmZpbmQoKGF0dHIpID0+IGF0dHIubmFtZSA9PT0gcHJvcGVydHkpO1xuICAgIHJldHVybiBwcm9wPy5maWVsZC50eXBlID09PSBGaWVsZFR5cGUuUkFXID8/IGZhbHNlO1xuICB9XG5cbiAgaGFzTWV0YWRhdGEodmFsdWU6IEF0dHJpYnV0ZVNpbXBsZVZhbHVlIHwgSXRlbSkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh2YWx1ZT8ubWV0YWRhdGEgPz8ge30pLmxlbmd0aCA+IDA7XG4gIH1cbn1cbiIsIjxwcnktd2lkZ2V0LXRpbGUtY3NzPjwvcHJ5LXdpZGdldC10aWxlLWNzcz5cbjxkaXYgY2xhc3M9XCJvLXdpZGdldCBvLXdpZGdldC0tdGlsZVwiPlxuICBAaWYgKGRpc3BsYXlIZWFkZXIkIHwgYXN5bmMpIHtcbiAgICA8cHJ5LXdpZGdldC1oZWFkZXJcbiAgICAgIFtkYXRhc291cmNlSWRzXT1cIihkYXRhc291cmNlSWRzJCB8IGFzeW5jKSA/PyBbXVwiXG4gICAgICBbd2lkZ2V0SW5kZXhdPVwid2lkZ2V0SW5kZXhcIlxuICAgICAgW21hbmlmZXN0XT1cIm1hbmlmZXN0XCJcbiAgICAgIChtYW5pZmVzdE1vZGlmaWVkKT1cIm1hbmlmZXN0TW9kaWZpZWQuZW1pdCgkZXZlbnQpXCJcbiAgICAgIFtoZWFkZXJPcHRpb25zXT1cIihkaXNwbGF5SGVhZGVyJCB8IGFzeW5jKSA/PyB7fVwiXG4gICAgICAjaGVhZGVyXG4gICAgICA+XG4gICAgICA8cHJ5LXNldHRpbmdzXG4gICAgICAgIChzYXZlVHJpZ2dlcmVkKT1cImVtaXRNYW5pZmVzdCgpXCJcbiAgICAgICAgKGNoYW5nZVRpdGxlKT1cImNoYW5nZVdpZGdldFRpdGxlKCRldmVudClcIlxuICAgICAgICBbaGVhZGVyUHJlc2VudF09XCJkaXNwbGF5SGVhZGVyJCB8IGFzeW5jXCJcbiAgICAgICAgW3dpZGdldEluZGV4XT1cIndpZGdldEluZGV4XCJcbiAgICAgICAgW2hlYWRlcl09XCJoZWFkZXJcIlxuICAgICAgICBbb3BlbiRdPVwib3BlbiRcIlxuICAgICAgICBjbGFzcz1cIm8tc2V0dGluZ3NcIlxuICAgICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwidGlsZV9jbGFzc2VzXCI+e3sgJ0Bwcnkud2lkZ2V0LnRpbGUuY2xhc3NlcycgfCBpMThuIH19PC9sYWJlbD5cbiAgICAgICAgICA8cHJ5LXNlbGVjdFxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlQ2xhc3NlcygkZXZlbnQpXCJcbiAgICAgICAgICAgIFtpdGVtc109XCJjbGFzc2VzJCB8IGFzeW5jXCJcbiAgICAgICAgICAgIFttdWx0aXBsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtjbG9zZU9uU2VsZWN0XT1cImZhbHNlXCJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cIm9wdGlvbnNDb3B5LmNsYXNzZXNcIlxuICAgICAgICAgICAgYmluZExhYmVsPVwibmFtZVwiXG4gICAgICAgICAgICBiaW5kVmFsdWU9XCJpZFwiXG4gICAgICAgICAgICBpZD1cInRpbGVfY2xhc3Nlc1wiXG4gICAgICAgICAgPjwvcHJ5LXNlbGVjdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3ByeS1zZXR0aW5ncz5cbiAgICA8L3ByeS13aWRnZXQtaGVhZGVyPlxuICB9XG4gIDxkaXYgY2xhc3M9XCJvLXdpZGdldC0tdGlsZS13cmFwcGVyXCIgW3N0eWxlLnRvcF09XCIoZGlzcGxheUhlYWRlciQgfCBhc3luYykgPyBXSURHRVRfSEVBREVSX0hFSUdIVCArICdweCcgOiAwXCI+XG4gICAgQGlmICgoaXRlbXMkIHwgYXN5bmMpPy5sZW5ndGggPT09IDApIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJuby1yZXN1bHRcIj5cbiAgICAgICAgPGltZ1xuICAgICAgICAgIGNsYXNzPVwibm8tcmVzdWx0X19zZWFyY2hcIlxuICAgICAgICAgIHNyYz1cIi4uLy4uLy4uL2Fzc2V0cy9zdmdzL3ByeV9yZWNoZXJjaGVfcGFzX2RlX3Jlc3VsdGF0LnN2Z1wiXG4gICAgICAgICAgYWx0PVwie3sgJ0Bwcnkud2lkZ2V0LnRpbGUuZW1wdHknIHwgaTE4biB9fVwiXG4gICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm5vLXJlc3VsdF9fdGV4dFwiPnt7ICdAcHJ5LndpZGdldC50aWxlLmVtcHR5JyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gICAgPHVsIGNsYXNzPVwiby13aWRnZXQtLXRpbGVfX2xpc3RcIj5cbiAgICAgIEBmb3IgKGl0ZW0gb2YgaXRlbXMkIHwgYXN5bmM7IHRyYWNrIGl0ZW0uaWQ7IGxldCBpbmRleCA9ICRpbmRleCkge1xuICAgICAgICA8bGkgY2xhc3M9XCJvLXdpZGdldC0tdGlsZV9fbGlzdF9faXRlbVwiIChjb250ZXh0bWVudSk9XCJjb250ZXh0TWVudSgkZXZlbnQsIGl0ZW0pXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm8td2lkZ2V0LS10aWxlX19saXN0X19pdGVtX19oZWFkZXJcIj5cbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgW2hlaWdodF09XCIyNVwiXG4gICAgICAgICAgICAgIFt3aWR0aF09XCIyNVwiXG4gICAgICAgICAgICAgIFtzcmNdPVwiaXRlbSB8IHRyYW5zbGF0ZUl0ZW1Ub1N5bWJvbCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgW2FsdF09XCJpdGVtLm9DbGFzcyB8IHRyYW5zbGF0ZUlkOiB7IHR5cGU6ICdjbGFzcycsIG91dHB1dDogJ25hbWUnIH0gfCBhc3luY1wiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJvLXdpZGdldC0tdGlsZV9fbGlzdF9faXRlbV9faGVhZGVyX190aXRsZVwiPlxuICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICBpdGVtLm9DbGFzc1xuICAgICAgICAgICAgICB8IHRyYW5zbGF0ZUlkXG4gICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICB0eXBlOiAnY2xhc3MnLFxuICAgICAgICAgICAgICBvdXRwdXQ6ICduYW1lJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgfCBhc3luY1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICA8L2gzPlxuICAgICAgICAgIDxwcnktY2hlY2tib3hcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cIihzZWxlY3RlZElkcyQgfCBhc3luYykuaW5jbHVkZXMoaXRlbS5pZClcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdCgkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgICA+PC9wcnktY2hlY2tib3g+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiby1wcm9wZXJ0aWVzXCI+XG4gICAgICAgICAgPHVsIGNsYXNzPVwiby1wcm9wZXJ0aWVzX19saXN0XCI+XG4gICAgICAgICAgICBAZm9yIChwcm9wZXJ0eSBvZiAocHJvcGVydGllc1RvRGlzcGxheSQgfCBhc3luYykhW2l0ZW0ub0NsYXNzXTsgdHJhY2sgcHJvcGVydHkucHJvcCkge1xuICAgICAgICAgICAgICBAZm9yICh2YWx1ZSBvZiBnZXRWYWx1ZShpdGVtLCBwcm9wZXJ0eS5wcm9wKTsgdHJhY2sgdmFsdWU7IGxldCBpID0gJGluZGV4OyBsZXQgYyA9ICRjb3VudCkge1xuICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJvLXByb3BlcnRpZXNfX2xpc3RfX2l0ZW1cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgQGlmIChpID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiby1wcm9wZXJ0aWVzX19saXN0X19pdGVtX19sYWJlbFwiPnt7IHByb3BlcnR5LmxhYmVsIH19OjwvcD5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBpZiAoIWlzUmF3KHByb3BlcnR5LmxhYmVsLCBpdGVtLm9DbGFzcykpIHtcbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJvLXByb3BlcnRpZXNfX2xpc3RfX2l0ZW1fX3ZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3sgdmFsdWU/LnZhbHVlIHwgZGF0YUZvcm1hdDogcHJvcGVydHkuZmllbGQgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiby1wcm9wZXJ0aWVzX19saXN0X19pdGVtX19yYXdcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8cHJ5LXZpenVhbGl6ZS1yYXcgW2l0ZW1dPVwiaXRlbVwiIFtwcm9wZXJ0eU5hbWVdPVwicHJvcGVydHkubGFiZWxcIj48L3ByeS12aXp1YWxpemUtcmF3PlxuICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAaWYgKGhhc01ldGFkYXRhKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICA8cHJ5LW1ldGFkYXRhIFtpdGVtXT1cInZhbHVlXCI+PC9wcnktbWV0YWRhdGE+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IChjbGljayk9XCJ0b2dnbGVNYXAoaW5kZXgsIGl0ZW0pXCIgY2xhc3M9XCJvLXdpZGdldC0tdGlsZV9fbGlzdF9faXRlbV9fZm9vdGVyXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1pY29uLXRleHQgLWxpbmstbGlrZVwiXG4gICAgICAgICAgICBhcmlhLWNvbnRyb2xzPVwidGlsZS1tYXAteHh4XCJcbiAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICB7eyAnQHByeS53aWRnZXQudGlsZS5tYXAnIHwgaTE4biB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgQGlmIChtYXBzW2luZGV4XSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLXdpZGdldC0tdGlsZV9fbGlzdF9faXRlbV9fbWFwXCIgaWQ9XCJ0aWxlLW1hcC14eHhcIj5cbiAgICAgICAgICAgIDxwcnktd2lkZ2V0LW1hcCBbc3RhdGljTWFuaWZlc3RdPVwibWFwTWFuaWZlc3RcIiBbc3RhdGljUmVzdWx0U2V0XT1cIm1hcHNbaW5kZXhdIVwiPjwvcHJ5LXdpZGdldC1tYXA+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvbGk+XG4gICAgfVxuICA8L3VsPlxuPC9kaXY+XG48L2Rpdj5cbiJdfQ==
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXRpbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvd2lkZ2V0cy93aWRnZXQtdGlsZS9jb21wb25lbnQvd2lkZ2V0LXRpbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvd2lkZ2V0cy93aWRnZXQtdGlsZS9jb21wb25lbnQvd2lkZ2V0LXRpbGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxNQUFNLGVBQWUsQ0FBQztBQUV0RCxPQUFPLEVBR0wsY0FBYyxFQUNkLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQixtQkFBbUIsRUFFbkIsY0FBYyxFQUNkLFNBQVMsRUFFVCxTQUFTLEVBR1Qsb0JBQW9CLEVBQ3JCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLGFBQWEsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7OztBQU1uQyxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsbUJBQW1CO0lBa0IxRCxZQUFZLEtBQWlCLEVBQUUsRUFBYztRQUMzQyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBZm5CLFNBQUksR0FBOEIsRUFBRSxDQUFDO1FBQ3JDLGdCQUFXLEdBQUc7WUFDWixJQUFJLEVBQUUsS0FBSztZQUNYLE1BQU0sRUFBRSxLQUFLO1lBQ2IsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRTtZQUMzQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUU7U0FDckQsQ0FBQztRQUVGLGdCQUFXLEdBQXNCLEVBQUUsQ0FBQztRQUNwQyx5QkFBb0IsR0FBRyxvQkFBb0IsQ0FBQztRQUU1QyxXQUFNLEdBQVksRUFBRSxDQUFDO1FBQ3JCLFlBQU8sR0FBWSxFQUFFLENBQUM7UUFJcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUE0QixDQUFDLENBQUMsQ0FBQztRQUM5RixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUMvRCxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsR0FBSSxlQUFlLENBQUMsT0FBTyxDQUF1QixFQUFFLENBQUM7UUFDNUUsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUNGLElBQUksQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDO1lBQzFCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDN0YsSUFBSSxDQUFDLFFBQVE7U0FDZCxDQUFDLENBQUMsSUFBSSxDQUNMLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FDdkIsS0FBSyxDQUFDLE1BQU0sQ0FDVixDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQ3BHLENBQ0YsQ0FDRixDQUFDO1FBQ0YsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsYUFBYSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxRQUFRO1lBQ2IsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLHlCQUF5QixDQUFDO1lBQzVELElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQztTQUN4RCxDQUFDLENBQUMsSUFBSSxDQUNMLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2hELEdBQUcsT0FBTztpQkFDUCxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ2YsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUU7b0JBQ1YsR0FBRyxLQUFLLENBQUMsVUFBVTt5QkFDaEIsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO3dCQUNkLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSTt3QkFDaEIsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhO3dCQUN4QixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7cUJBQ2xCLENBQUMsQ0FBQzt5QkFDRixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsa0JBQWtCLENBQUM7aUJBQzVDO2FBQ0YsQ0FBQyxDQUFDO2lCQUNGLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3pDLEdBQUcsT0FBTztpQkFDUCxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2lCQUN2QyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ2YsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUU7b0JBQ1YsR0FBRyxLQUFLLENBQUMsVUFBVTt5QkFDaEIsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7eUJBQ3hELEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQzt3QkFDZCxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUk7d0JBQ2hCLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYTt3QkFDeEIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO3FCQUNsQixDQUFDLENBQUM7aUJBQ047YUFDRixDQUFDLENBQUM7aUJBQ0YsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7U0FDMUMsQ0FBQyxDQUFDLENBQ0osQ0FBQztRQUNGLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0csSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekYsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUFrQixFQUFFLElBQVU7UUFDeEMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUN4QyxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDekIsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUNqQixrQkFBa0IsQ0FBQyxJQUFJLENBQUM7Z0JBQ3RCLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRTtnQkFDZixPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU87Z0JBQ3ZCLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTztnQkFDdkIsSUFBSSxFQUFFLE1BQU07Z0JBQ1osbUJBQW1CLEVBQUUsS0FBSzthQUMzQixDQUFDLENBQ0gsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQWtCLEVBQUUsSUFBVTtRQUNuQyxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDekIsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUYsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFhLEVBQUUsSUFBVTtRQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDbEMsQ0FBQyxDQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQWdCO1lBQ3BFLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDaEIsQ0FBQztJQUVELGlCQUFpQixDQUFDLElBQVU7UUFDMUIsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDN0QsQ0FBQztJQUVRLFlBQVk7UUFDbkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQztZQUN6QixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsUUFBUSxFQUFFO2dCQUNSLEdBQUcsSUFBSSxDQUFDLFFBQVE7Z0JBQ2hCLE9BQU8sRUFBRSxJQUFJLENBQUMsV0FBVzthQUMxQjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxhQUFhLENBQUMsTUFBVztRQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7SUFDcEMsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUFVLEVBQUUsUUFBZ0I7UUFDbkMsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMxRCxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQWdCLEVBQUUsT0FBZTtRQUNyQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxPQUFPLENBQUMsQ0FBQztRQUNqRSxNQUFNLElBQUksR0FBRyxLQUFLLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQztRQUN0RSxPQUFPLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDO0lBQ3JELENBQUM7SUFFRCxXQUFXLENBQUMsS0FBa0M7UUFDNUMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUN2RCxDQUFDOzhHQXhJVSxtQkFBbUI7a0dBQW5CLG1CQUFtQiw4RUMzQmhDLDRvSkF5SEE7OzJGRDlGYSxtQkFBbUI7a0JBSi9CLFNBQVM7K0JBQ0UsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7XG4gIEF0dHJpYnV0ZVNpbXBsZVZhbHVlLFxuICBDbGFzcyxcbiAgQ2xhc3NTZWxlY3RvcnMsXG4gIENvbmZpZ1NlbGVjdG9ycyxcbiAgQ29udGV4dE1lbnVBY3Rpb25zLFxuICBEYXNoYm9hcmRBY3Rpb25zLFxuICBEYXNoYm9hcmRTZWxlY3RvcnMsXG4gIERhdGFXaWRnZXRDb21wb25lbnQsXG4gIEZpZWxkLFxuICBGaWVsZFNlbGVjdG9ycyxcbiAgRmllbGRUeXBlLFxuICBJdGVtLFxuICBJdGVtVXRpbHMsXG4gIFJlc3VsdFNldCxcbiAgVGlsZVdpZGdldE9wdGlvbnMsXG4gIFdJREdFVF9IRUFERVJfSEVJR0hUXG59IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktd2lkZ2V0LXRpbGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vd2lkZ2V0LXRpbGUuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFdpZGdldFRpbGVDb21wb25lbnQgZXh0ZW5kcyBEYXRhV2lkZ2V0Q29tcG9uZW50IHtcbiAgb3B0aW9ucyQ6IE9ic2VydmFibGU8VGlsZVdpZGdldE9wdGlvbnM+O1xuICBpdGVtcyQ6IE9ic2VydmFibGU8SXRlbVtdPjtcbiAgc2VsZWN0ZWRJZHMkOiBPYnNlcnZhYmxlPGFueT47XG4gIG1hcHM6ICh1bmRlZmluZWQgfCBSZXN1bHRTZXQpW10gPSBbXTtcbiAgbWFwTWFuaWZlc3QgPSB7XG4gICAgdHlwZTogJ21hcCcsXG4gICAgaGVhZGVyOiBmYWxzZSxcbiAgICBsYXlvdXQ6IHsgeDogMSwgeTogMSwgd2lkdGg6IDEsIGhlaWdodDogMSB9LFxuICAgIG9wdGlvbnM6IHsgbGF5ZXJzOiBbeyB0eXBlOiAnbWFya2VyJyB9XSwgZml0OiB0cnVlIH1cbiAgfTtcbiAgY2xhc3NlcyQ6IE9ic2VydmFibGU8Q2xhc3NbXT47XG4gIG9wdGlvbnNDb3B5OiBUaWxlV2lkZ2V0T3B0aW9ucyA9IHt9O1xuICBXSURHRVRfSEVBREVSX0hFSUdIVCA9IFdJREdFVF9IRUFERVJfSEVJR0hUO1xuICBwcm9wZXJ0aWVzVG9EaXNwbGF5JDogT2JzZXJ2YWJsZTx7IFtwOiBzdHJpbmddOiB7IGxhYmVsOiBzdHJpbmc7IHByb3A6IHN0cmluZzsgZmllbGQ6IEZpZWxkIH1bXSB9IHwgdW5kZWZpbmVkPjtcbiAgZmllbGRzOiBGaWVsZFtdID0gW107XG4gIGNsYXNzZXM6IENsYXNzW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihzdG9yZTogU3RvcmU8YW55PiwgZWw6IEVsZW1lbnRSZWYpIHtcbiAgICBzdXBlcihzdG9yZSwgZWwpO1xuICAgIHRoaXMub3B0aW9ucyQgPSB0aGlzLm1hbmlmZXN0JC5waXBlKG1hcCgobWFuaWZlc3QpID0+IG1hbmlmZXN0Lm9wdGlvbnMgYXMgVGlsZVdpZGdldE9wdGlvbnMpKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5vcHRpb25zJC5waXBlKGZpbHRlcigob3B0KSA9PiAhIW9wdCkpLnN1YnNjcmliZSgob3B0aW9ucykgPT4ge1xuICAgICAgICB0aGlzLm9wdGlvbnNDb3B5ID0geyAuLi4oc3RydWN0dXJlZENsb25lKG9wdGlvbnMpIGFzIFRpbGVXaWRnZXRPcHRpb25zKSB9O1xuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMuaXRlbXMkID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLnJlc3VsdFNldCQucGlwZShtYXAoKHJzKSA9PiBPYmplY3QudmFsdWVzKHJzLml0ZW1zKS5yZWR1Y2UoKHAsIGMpID0+IFsuLi5wLCAuLi5jXSwgW10pKSksXG4gICAgICB0aGlzLm9wdGlvbnMkXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW2l0ZW1zLCBvcHRpb25zXSkgPT5cbiAgICAgICAgaXRlbXMuZmlsdGVyKFxuICAgICAgICAgIChpdGVtKSA9PiAhb3B0aW9ucy5jbGFzc2VzIHx8IG9wdGlvbnMuY2xhc3Nlcy5sZW5ndGggPT09IDAgfHwgb3B0aW9ucy5jbGFzc2VzLmluY2x1ZGVzKGl0ZW0ub0NsYXNzKVxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLnNlbGVjdGVkSWRzJCA9IHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5zZWxlY3RlZEl0ZW1JZHMpO1xuICAgIHRoaXMuY2xhc3NlcyQgPSB0aGlzLnN0b3JlLnNlbGVjdChDbGFzc1NlbGVjdG9ycy5jbGFzc2VzKTtcbiAgICB0aGlzLnByb3BlcnRpZXNUb0Rpc3BsYXkkID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmNsYXNzZXMkLFxuICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoQ29uZmlnU2VsZWN0b3JzLnRpbGVBdHRyaWJ1dGVzRGVmaW5pdGlvbnMpLFxuICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoQ29uZmlnU2VsZWN0b3JzLm1heEF0dHJpYnV0ZXNJblRpbGVzKVxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoKFtjbGFzc2VzLCB0aWxlRGVmcywgbWF4VGlsZXNBdHRyaWJ1dGVzXSkgPT4gKHtcbiAgICAgICAgLi4uY2xhc3Nlc1xuICAgICAgICAgIC5tYXAoKGNsYXp6KSA9PiAoe1xuICAgICAgICAgICAgW2NsYXp6LmlkXTogW1xuICAgICAgICAgICAgICAuLi5jbGF6ei5hdHRyaWJ1dGVzXG4gICAgICAgICAgICAgICAgLm1hcCgoYXR0cikgPT4gKHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiBhdHRyLm5hbWUsXG4gICAgICAgICAgICAgICAgICBwcm9wOiBhdHRyLnRlY2huaWNhbE5hbWUsXG4gICAgICAgICAgICAgICAgICBmaWVsZDogYXR0ci5maWVsZFxuICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKF8sIGkpID0+IGkgPCBtYXhUaWxlc0F0dHJpYnV0ZXMpXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSkpXG4gICAgICAgICAgLnJlZHVjZSgocCwgYykgPT4gKHsgLi4ucCwgLi4uYyB9KSwge30pLFxuICAgICAgICAuLi5jbGFzc2VzXG4gICAgICAgICAgLmZpbHRlcigoY2xhenopID0+ICEhdGlsZURlZnNbY2xhenouaWRdKVxuICAgICAgICAgIC5tYXAoKGNsYXp6KSA9PiAoe1xuICAgICAgICAgICAgW2NsYXp6LmlkXTogW1xuICAgICAgICAgICAgICAuLi5jbGF6ei5hdHRyaWJ1dGVzXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoYXR0cikgPT4gdGlsZURlZnNbY2xhenouaWRdLmluY2x1ZGVzKGF0dHIubmFtZSkpXG4gICAgICAgICAgICAgICAgLm1hcCgoYXR0cikgPT4gKHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiBhdHRyLm5hbWUsXG4gICAgICAgICAgICAgICAgICBwcm9wOiBhdHRyLnRlY2huaWNhbE5hbWUsXG4gICAgICAgICAgICAgICAgICBmaWVsZDogYXR0ci5maWVsZFxuICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH0pKVxuICAgICAgICAgIC5yZWR1Y2UoKHAsIGMpID0+ICh7IC4uLnAsIC4uLmMgfSksIHt9KVxuICAgICAgfSkpXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMuc3RvcmUuc2VsZWN0KEZpZWxkU2VsZWN0b3JzLmZpZWxkcykuc3Vic2NyaWJlKChmaWVsZHMpID0+ICh0aGlzLmZpZWxkcyA9IGZpZWxkcykpKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMuY2xhc3NlcyQuc3Vic2NyaWJlKChjbGFzc2VzKSA9PiAodGhpcy5jbGFzc2VzID0gY2xhc3NlcykpKTtcbiAgfVxuXG4gIGNvbnRleHRNZW51KCRldmVudDogTW91c2VFdmVudCwgaXRlbTogSXRlbSkge1xuICAgIGlmICh0aGlzLm1hbmlmZXN0LmNvbnRleHRNZW51ICE9PSBmYWxzZSkge1xuICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgICBDb250ZXh0TWVudUFjdGlvbnMub3Blbih7XG4gICAgICAgICAgaXRlbUlkOiBpdGVtLmlkLFxuICAgICAgICAgIGNsaWVudFg6ICRldmVudC5jbGllbnRYLFxuICAgICAgICAgIGNsaWVudFk6ICRldmVudC5jbGllbnRZLFxuICAgICAgICAgIGZyb206ICd0aWxlJyxcbiAgICAgICAgICBhbGxvd09iamVjdENyZWF0aW9uOiBmYWxzZVxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3QoJGV2ZW50OiBNb3VzZUV2ZW50LCBpdGVtOiBJdGVtKSB7XG4gICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5zZWxlY3QoeyBpZDogaXRlbS5pZCwgY3VtdWxhdGl2ZTogISRldmVudC5zaGlmdEtleSB9KSk7XG4gIH1cblxuICB0b2dnbGVNYXAoaW5kZXg6IG51bWJlciwgaXRlbTogSXRlbSkge1xuICAgIHRoaXMubWFwc1tpbmRleF0gPSAhdGhpcy5tYXBzW2luZGV4XVxuICAgICAgPyAoeyBpdGVtczogeyBbaXRlbS5vQ2xhc3NdOiBbaXRlbV0gfSwgcmVsYXRpb25zOiBbXSB9IGFzIFJlc3VsdFNldClcbiAgICAgIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcmVzdWx0U2V0V2l0aEl0ZW0oaXRlbTogSXRlbSk6IFJlc3VsdFNldCB7XG4gICAgcmV0dXJuIHsgaXRlbXM6IHsgW2l0ZW0ub0NsYXNzXTogW2l0ZW1dIH0sIHJlbGF0aW9uczogW10gfTtcbiAgfVxuXG4gIG92ZXJyaWRlIGVtaXRNYW5pZmVzdCgpIHtcbiAgICB0aGlzLm1hbmlmZXN0TW9kaWZpZWQuZW1pdCh7XG4gICAgICB3aWRnZXRJbmRleDogdGhpcy53aWRnZXRJbmRleCxcbiAgICAgIG1hbmlmZXN0OiB7XG4gICAgICAgIC4uLnRoaXMubWFuaWZlc3QsXG4gICAgICAgIG9wdGlvbnM6IHRoaXMub3B0aW9uc0NvcHlcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGNoYW5nZUNsYXNzZXMoJGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLm9wdGlvbnNDb3B5LmNsYXNzZXMgPSAkZXZlbnQ7XG4gIH1cblxuICBnZXRWYWx1ZShpdGVtOiBJdGVtLCBwcm9wZXJ0eTogc3RyaW5nKTogQXR0cmlidXRlU2ltcGxlVmFsdWVbXSB7XG4gICAgY29uc3QgdmFsdWUgPSBJdGVtVXRpbHMuZ2V0QXR0cmlidXRlVmFsdWUoaXRlbSwgcHJvcGVydHkpO1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTtcbiAgfVxuXG4gIGlzUmF3KHByb3BlcnR5OiBzdHJpbmcsIGNsYXNzSWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGNsYXp6ID0gdGhpcy5jbGFzc2VzLmZpbmQoKGNsYXp6KSA9PiBjbGF6ei5pZCA9PT0gY2xhc3NJZCk7XG4gICAgY29uc3QgcHJvcCA9IGNsYXp6Py5hdHRyaWJ1dGVzLmZpbmQoKGF0dHIpID0+IGF0dHIubmFtZSA9PT0gcHJvcGVydHkpO1xuICAgIHJldHVybiBwcm9wPy5maWVsZC50eXBlID09PSBGaWVsZFR5cGUuUkFXID8/IGZhbHNlO1xuICB9XG5cbiAgaGFzTWV0YWRhdGEodmFsdWU6IEF0dHJpYnV0ZVNpbXBsZVZhbHVlIHwgSXRlbSkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh2YWx1ZT8ubWV0YWRhdGEgPz8ge30pLmxlbmd0aCA+IDA7XG4gIH1cbn1cbiIsIjxwcnktd2lkZ2V0LXRpbGUtY3NzPjwvcHJ5LXdpZGdldC10aWxlLWNzcz5cbjxkaXYgY2xhc3M9XCJvLXdpZGdldCBvLXdpZGdldC0tdGlsZVwiPlxuICBAaWYgKGRpc3BsYXlIZWFkZXIkIHwgYXN5bmMpIHtcbiAgICA8cHJ5LXdpZGdldC1oZWFkZXJcbiAgICAgIFtkYXRhc291cmNlSWRzXT1cIihkYXRhc291cmNlSWRzJCB8IGFzeW5jKSA/PyBbXVwiXG4gICAgICBbd2lkZ2V0SW5kZXhdPVwid2lkZ2V0SW5kZXhcIlxuICAgICAgW21hbmlmZXN0XT1cIm1hbmlmZXN0XCJcbiAgICAgIChtYW5pZmVzdE1vZGlmaWVkKT1cIm1hbmlmZXN0TW9kaWZpZWQuZW1pdCgkZXZlbnQpXCJcbiAgICAgIFtoZWFkZXJPcHRpb25zXT1cIihkaXNwbGF5SGVhZGVyJCB8IGFzeW5jKSA/PyB7fVwiXG4gICAgICAjaGVhZGVyXG4gICAgICA+XG4gICAgICA8cHJ5LXNldHRpbmdzXG4gICAgICAgIChzYXZlVHJpZ2dlcmVkKT1cImVtaXRNYW5pZmVzdCgpXCJcbiAgICAgICAgKGNoYW5nZVRpdGxlKT1cImNoYW5nZVdpZGdldFRpdGxlKCRldmVudClcIlxuICAgICAgICBbaGVhZGVyUHJlc2VudF09XCJkaXNwbGF5SGVhZGVyJCB8IGFzeW5jXCJcbiAgICAgICAgW3dpZGdldEluZGV4XT1cIndpZGdldEluZGV4XCJcbiAgICAgICAgW2hlYWRlcl09XCJoZWFkZXJcIlxuICAgICAgICBbb3BlbiRdPVwib3BlbiRcIlxuICAgICAgICBjbGFzcz1cIm8tc2V0dGluZ3NcIlxuICAgICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwidGlsZV9jbGFzc2VzXCI+e3sgJ0Bwcnkud2lkZ2V0LnRpbGUuY2xhc3NlcycgfCBpMThuIH19PC9sYWJlbD5cbiAgICAgICAgICA8cHJ5LXNlbGVjdFxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlQ2xhc3NlcygkZXZlbnQpXCJcbiAgICAgICAgICAgIFtpdGVtc109XCJjbGFzc2VzJCB8IGFzeW5jXCJcbiAgICAgICAgICAgIFttdWx0aXBsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtjbG9zZU9uU2VsZWN0XT1cImZhbHNlXCJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cIm9wdGlvbnNDb3B5LmNsYXNzZXNcIlxuICAgICAgICAgICAgYmluZExhYmVsPVwibmFtZVwiXG4gICAgICAgICAgICBiaW5kVmFsdWU9XCJpZFwiXG4gICAgICAgICAgICBpZD1cInRpbGVfY2xhc3Nlc1wiXG4gICAgICAgICAgPjwvcHJ5LXNlbGVjdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3ByeS1zZXR0aW5ncz5cbiAgICA8L3ByeS13aWRnZXQtaGVhZGVyPlxuICB9XG4gIDxkaXYgY2xhc3M9XCJvLXdpZGdldC0tdGlsZS13cmFwcGVyXCIgW3N0eWxlLnRvcF09XCIoZGlzcGxheUhlYWRlciQgfCBhc3luYykgPyBXSURHRVRfSEVBREVSX0hFSUdIVCArICdweCcgOiAwXCI+XG4gICAgQGlmICgoaXRlbXMkIHwgYXN5bmMpPy5sZW5ndGggPT09IDApIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJuby1yZXN1bHRcIj5cbiAgICAgICAgPGltZ1xuICAgICAgICAgIGNsYXNzPVwibm8tcmVzdWx0X19zZWFyY2hcIlxuICAgICAgICAgIHNyYz1cIi4uLy4uLy4uL2Fzc2V0cy9zdmdzL3ByeV9yZWNoZXJjaGVfcGFzX2RlX3Jlc3VsdGF0LnN2Z1wiXG4gICAgICAgICAgYWx0PVwie3sgJ0Bwcnkud2lkZ2V0LnRpbGUuZW1wdHknIHwgaTE4biB9fVwiXG4gICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm5vLXJlc3VsdF9fdGV4dFwiPnt7ICdAcHJ5LndpZGdldC50aWxlLmVtcHR5JyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gICAgPHVsIGNsYXNzPVwiby13aWRnZXQtLXRpbGVfX2xpc3RcIj5cbiAgICAgIEBmb3IgKGl0ZW0gb2YgaXRlbXMkIHwgYXN5bmM7IHRyYWNrIGl0ZW0uaWQ7IGxldCBpbmRleCA9ICRpbmRleCkge1xuICAgICAgICA8bGkgY2xhc3M9XCJvLXdpZGdldC0tdGlsZV9fbGlzdF9faXRlbVwiIChjb250ZXh0bWVudSk9XCJjb250ZXh0TWVudSgkZXZlbnQsIGl0ZW0pXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm8td2lkZ2V0LS10aWxlX19saXN0X19pdGVtX19oZWFkZXJcIj5cbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgW2hlaWdodF09XCIyNVwiXG4gICAgICAgICAgICAgIFt3aWR0aF09XCIyNVwiXG4gICAgICAgICAgICAgIFtzcmNdPVwiaXRlbSB8IHRyYW5zbGF0ZUl0ZW1Ub1N5bWJvbCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgW2FsdF09XCJpdGVtLm9DbGFzcyB8IHRyYW5zbGF0ZUlkOiB7IHR5cGU6ICdjbGFzcycsIG91dHB1dDogJ25hbWUnIH0gfCBhc3luY1wiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJvLXdpZGdldC0tdGlsZV9fbGlzdF9faXRlbV9faGVhZGVyX190aXRsZVwiPlxuICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICBpdGVtLm9DbGFzc1xuICAgICAgICAgICAgICB8IHRyYW5zbGF0ZUlkXG4gICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICB0eXBlOiAnY2xhc3MnLFxuICAgICAgICAgICAgICBvdXRwdXQ6ICduYW1lJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgfCBhc3luY1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICA8L2gzPlxuICAgICAgICAgIDxwcnktY2hlY2tib3hcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cIihzZWxlY3RlZElkcyQgfCBhc3luYykuaW5jbHVkZXMoaXRlbS5pZClcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdCgkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgICA+PC9wcnktY2hlY2tib3g+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiby1wcm9wZXJ0aWVzXCI+XG4gICAgICAgICAgPHVsIGNsYXNzPVwiby1wcm9wZXJ0aWVzX19saXN0XCI+XG4gICAgICAgICAgICBAZm9yIChwcm9wZXJ0eSBvZiAocHJvcGVydGllc1RvRGlzcGxheSQgfCBhc3luYykhW2l0ZW0ub0NsYXNzXTsgdHJhY2sgcHJvcGVydHkucHJvcCkge1xuICAgICAgICAgICAgICBAZm9yICh2YWx1ZSBvZiBnZXRWYWx1ZShpdGVtLCBwcm9wZXJ0eS5wcm9wKTsgdHJhY2sgdmFsdWU7IGxldCBpID0gJGluZGV4OyBsZXQgYyA9ICRjb3VudCkge1xuICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJvLXByb3BlcnRpZXNfX2xpc3RfX2l0ZW1cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgQGlmIChpID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiby1wcm9wZXJ0aWVzX19saXN0X19pdGVtX19sYWJlbFwiPnt7IHByb3BlcnR5LmxhYmVsIH19OjwvcD5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBpZiAoIWlzUmF3KHByb3BlcnR5LmxhYmVsLCBpdGVtLm9DbGFzcykpIHtcbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJvLXByb3BlcnRpZXNfX2xpc3RfX2l0ZW1fX3ZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3sgdmFsdWU/LnZhbHVlIHwgZGF0YUZvcm1hdDogcHJvcGVydHkuZmllbGQgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiby1wcm9wZXJ0aWVzX19saXN0X19pdGVtX19yYXdcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8cHJ5LXZpenVhbGl6ZS1yYXcgW2l0ZW1dPVwiaXRlbVwiIFtwcm9wZXJ0eU5hbWVdPVwicHJvcGVydHkubGFiZWxcIj48L3ByeS12aXp1YWxpemUtcmF3PlxuICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAaWYgKGhhc01ldGFkYXRhKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICA8cHJ5LW1ldGFkYXRhIFtpdGVtXT1cInZhbHVlXCI+PC9wcnktbWV0YWRhdGE+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IChjbGljayk9XCJ0b2dnbGVNYXAoaW5kZXgsIGl0ZW0pXCIgY2xhc3M9XCJvLXdpZGdldC0tdGlsZV9fbGlzdF9faXRlbV9fZm9vdGVyXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1pY29uLXRleHQgLWxpbmstbGlrZVwiXG4gICAgICAgICAgICBhcmlhLWNvbnRyb2xzPVwidGlsZS1tYXAteHh4XCJcbiAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICB7eyAnQHByeS53aWRnZXQudGlsZS5tYXAnIHwgaTE4biB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgQGlmIChtYXBzW2luZGV4XSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLXdpZGdldC0tdGlsZV9fbGlzdF9faXRlbV9fbWFwXCIgaWQ9XCJ0aWxlLW1hcC14eHhcIj5cbiAgICAgICAgICAgIDxwcnktd2lkZ2V0LW1hcCBbc3RhdGljTWFuaWZlc3RdPVwibWFwTWFuaWZlc3RcIiBbc3RhdGljUmVzdWx0U2V0XT1cIm1hcHNbaW5kZXhdIVwiPjwvcHJ5LXdpZGdldC1tYXA+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvbGk+XG4gICAgfVxuICA8L3VsPlxuPC9kaXY+XG48L2Rpdj5cbiJdfQ==