@provoly/dashboard 0.15.3 → 0.15.5

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 (134) hide show
  1. package/components/card/card.module.d.ts +1 -1
  2. package/dataset/style/_o-pry-dataset-detail.scss +4 -0
  3. package/esm2022/components/card/card.component.mjs +3 -3
  4. package/esm2022/components/card/card.module.mjs +5 -5
  5. package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +3 -3
  6. package/esm2022/dataset/style/css.component.mjs +2 -2
  7. package/esm2022/lib/core/components/overlay/overlay.module.mjs +4 -5
  8. package/esm2022/lib/core/components/toggle/toggle.component.mjs +4 -5
  9. package/esm2022/lib/core/errors/http-error-interceptor.service.mjs +2 -5
  10. package/esm2022/lib/core/public-api.mjs +1 -2
  11. package/esm2022/lib/core/store/aggregation/backend-aggregation.service.mjs +21 -10
  12. package/esm2022/lib/core/toolbox/toolbox-manifest.service.mjs +1 -90
  13. package/esm2022/lib/core/toolbox/toolbox-menu.service.mjs +14 -6
  14. package/esm2022/lib/dashboard/components/widgets/data-widget.component.mjs +7 -4
  15. package/esm2022/lib/dashboard/components/widgets/header/widget-header.component.mjs +24 -12
  16. package/esm2022/lib/dashboard/components/widgets/settings/settings.component.mjs +4 -5
  17. package/esm2022/lib/dashboard/store/dashboard.effects.mjs +4 -7
  18. package/esm2022/notification/components/notification/notification.component.mjs +3 -3
  19. package/esm2022/notification/i18n/en.translations.mjs +2 -1
  20. package/esm2022/notification/i18n/fr.translations.mjs +2 -1
  21. package/esm2022/presentation/components/add-edit-presentation/add-edit-presentation.component.mjs +5 -3
  22. package/esm2022/presentation/components/presentation.component.mjs +5 -4
  23. package/esm2022/presentation/style/css.component.mjs +2 -2
  24. package/esm2022/restitution/components/restitution-catalog/restitution-catalog.component.mjs +3 -3
  25. package/esm2022/restitution/components/restitution-list-item/restitution-list-item.component.mjs +3 -3
  26. package/esm2022/restitution/style/css.component.mjs +2 -2
  27. package/esm2022/search/i18n/en.translations.mjs +9 -3
  28. package/esm2022/search/i18n/fr.translations.mjs +9 -3
  29. package/esm2022/search/search-fulltext/search-fulltext/search-fulltext.component.mjs +3 -3
  30. package/esm2022/search/search-home/search-home.component.mjs +3 -3
  31. package/esm2022/search/search-multi-class/components/multi-class-condition/multi-class-condition.component.mjs +6 -3
  32. package/esm2022/search/search-multi-class/components/search-multi-class/search-multi-class.component.mjs +3 -3
  33. package/esm2022/search/search-tools/search-tools.component.mjs +3 -3
  34. package/esm2022/toolbox/components/automate-refresh/automate-refresh.component.mjs +3 -3
  35. package/esm2022/toolbox/components/clear-view/clear-view.component.mjs +3 -3
  36. package/esm2022/toolbox/components/drag-widgets/drag-widgets.component.mjs +3 -3
  37. package/esm2022/toolbox/components/filter-settings/filter-settings.component.mjs +3 -3
  38. package/esm2022/toolbox/components/launch-tab/launch-tab.component.mjs +3 -3
  39. package/esm2022/toolbox/components/named-query/named-query.component.mjs +3 -3
  40. package/esm2022/toolbox/components/refresh-datasets/refresh-datasets.component.mjs +3 -3
  41. package/esm2022/toolbox/components/save-view/save-view.component.mjs +3 -3
  42. package/esm2022/toolbox/components/select-grid-layout/select-grid-layout.component.mjs +3 -3
  43. package/esm2022/toolbox/style/css.component.mjs +2 -2
  44. package/esm2022/tooltips/attribute/attribute-tooltip.component.mjs +22 -7
  45. package/esm2022/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.mjs +15 -10
  46. package/esm2022/widgets/widget-aggregated-chart/i18n/en.translations.mjs +2 -1
  47. package/esm2022/widgets/widget-aggregated-chart/i18n/fr.translations.mjs +2 -1
  48. package/esm2022/widgets/widget-chart/component/widget-chart.component.mjs +1 -1
  49. package/esm2022/widgets/widget-detail/component/widget-detail.component.mjs +1 -1
  50. package/esm2022/widgets/widget-graph/component/widget-graph.component.mjs +3 -3
  51. package/esm2022/widgets/widget-graph/style/css.component.mjs +2 -2
  52. package/esm2022/widgets/widget-iframe/component/widget-iframe.component.mjs +1 -1
  53. package/esm2022/widgets/widget-map/component/widget-map.component.mjs +12 -14
  54. package/esm2022/widgets/widget-map/interaction/interaction-manager.class.mjs +8 -12
  55. package/esm2022/widgets/widget-map/style/css.component.mjs +2 -2
  56. package/esm2022/widgets/widget-table/component/widget-table.component.mjs +1 -1
  57. package/esm2022/widgets/widget-tile/component/widget-tile.component.mjs +1 -1
  58. package/esm2022/widgets/widget-vega/component/widget-vega.component.mjs +1 -1
  59. package/fesm2022/provoly-dashboard-components-card.mjs +6 -6
  60. package/fesm2022/provoly-dashboard-components-card.mjs.map +1 -1
  61. package/fesm2022/provoly-dashboard-dataset.mjs +4 -4
  62. package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
  63. package/fesm2022/provoly-dashboard-notification.mjs +4 -2
  64. package/fesm2022/provoly-dashboard-notification.mjs.map +1 -1
  65. package/fesm2022/provoly-dashboard-presentation.mjs +10 -7
  66. package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
  67. package/fesm2022/provoly-dashboard-restitution.mjs +6 -6
  68. package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -1
  69. package/fesm2022/provoly-dashboard-search.mjs +29 -14
  70. package/fesm2022/provoly-dashboard-search.mjs.map +1 -1
  71. package/fesm2022/provoly-dashboard-toolbox.mjs +20 -20
  72. package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
  73. package/fesm2022/provoly-dashboard-tooltips-attribute.mjs +21 -6
  74. package/fesm2022/provoly-dashboard-tooltips-attribute.mjs.map +1 -1
  75. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs +16 -9
  76. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs.map +1 -1
  77. package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs +1 -1
  78. package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs.map +1 -1
  79. package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs +1 -1
  80. package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs.map +1 -1
  81. package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs +4 -4
  82. package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs.map +1 -1
  83. package/fesm2022/provoly-dashboard-widgets-widget-iframe.mjs +1 -1
  84. package/fesm2022/provoly-dashboard-widgets-widget-iframe.mjs.map +1 -1
  85. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +21 -26
  86. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
  87. package/fesm2022/provoly-dashboard-widgets-widget-table.mjs +1 -1
  88. package/fesm2022/provoly-dashboard-widgets-widget-table.mjs.map +1 -1
  89. package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs +1 -1
  90. package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs.map +1 -1
  91. package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs +1 -1
  92. package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs.map +1 -1
  93. package/fesm2022/provoly-dashboard.mjs +83 -260
  94. package/fesm2022/provoly-dashboard.mjs.map +1 -1
  95. package/lib/core/components/overlay/overlay.module.d.ts +8 -9
  96. package/lib/core/public-api.d.ts +0 -1
  97. package/lib/core/store/aggregation/backend-aggregation.service.d.ts +2 -0
  98. package/lib/dashboard/components/widgets/data-widget.component.d.ts +3 -2
  99. package/lib/dashboard/components/widgets/header/widget-header.component.d.ts +8 -5
  100. package/notification/i18n/en.translations.d.ts +1 -0
  101. package/notification/i18n/fr.translations.d.ts +1 -0
  102. package/package.json +7 -8
  103. package/presentation/components/add-edit-presentation/add-edit-presentation.component.d.ts +2 -2
  104. package/presentation/style/_o-pry-presentation.scss +17 -13
  105. package/schematics/migration.json +5 -0
  106. package/schematics/ng-add/index.js +0 -1
  107. package/schematics/ng-add/index.js.map +1 -1
  108. package/schematics/ng-update/version-0-15/index.d.ts +2 -0
  109. package/schematics/ng-update/version-0-15/index.js +19 -0
  110. package/schematics/ng-update/version-0-15/index.js.map +1 -0
  111. package/schematics/ng-update/version-0-15/index.spec.d.ts +1 -0
  112. package/schematics/ng-update/version-0-15/index.spec.js +51 -0
  113. package/schematics/ng-update/version-0-15/index.spec.js.map +1 -0
  114. package/search/i18n/en.translations.d.ts +6 -0
  115. package/search/i18n/fr.translations.d.ts +6 -0
  116. package/search/search-multi-class/components/multi-class-condition/multi-class-condition.component.d.ts +1 -0
  117. package/styles/components/_a-tooltip.scss +76 -0
  118. package/styles/components/_o-dashboard.scss +1 -1
  119. package/styles/components/_o-pry-card.scss +14 -0
  120. package/styles/components/_o-widget.scss +1 -0
  121. package/styles/layout/_o-workspace.scss +0 -1
  122. package/styles/main.scss +2 -0
  123. package/styles-theme/components-theme/_a-tooltip.theme.scss +12 -0
  124. package/styles-theme/main-theme.scss +1 -0
  125. package/toolbox/style/_o-toolbox.scss +6 -0
  126. package/tooltips/attribute/attribute-tooltip.component.d.ts +2 -1
  127. package/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.d.ts +2 -0
  128. package/widgets/widget-aggregated-chart/i18n/en.translations.d.ts +1 -0
  129. package/widgets/widget-aggregated-chart/i18n/fr.translations.d.ts +1 -0
  130. package/widgets/widget-graph/style/_o-widget-graph.scss +15 -1
  131. package/widgets/widget-map/component/widget-map.component.d.ts +0 -1
  132. package/widgets/widget-map/style/_o-widget-map.scss +14 -0
  133. package/esm2022/lib/core/components/overlay/tooltip.directive.mjs +0 -121
  134. package/lib/core/components/overlay/tooltip.directive.d.ts +0 -28
@@ -132,19 +132,22 @@ export class MultiClassConditionComponent {
132
132
  }));
133
133
  }
134
134
  }
135
+ join(classes) {
136
+ return classes.map((clazz) => clazz.name).join(', ');
137
+ }
135
138
  get hasTwoFields() {
136
139
  return this.form.get('operator')?.value === 'INSIDE' || this.form.get('operator')?.value === 'OUTSIDE';
137
140
  }
138
141
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: MultiClassConditionComponent, deps: [{ token: i1.Store }, { token: i2.SearchMultiClassService }, { token: i3.Overlay }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
139
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: MultiClassConditionComponent, selector: "pry-multi-class-condition", inputs: { id: "id" }, viewQueries: [{ propertyName: "fieldSelectionTpl", first: true, predicate: ["fieldSelectionTpl"], descendants: true, read: TemplateRef }], ngImport: i0, template: "<ng-container *ngIf=\"condition$ | async as condition\">\n <div class=\"o-multi-class-condition\">\n <div class=\"o-multi-class-condition__content\">\n <div class=\"o-multi-class-condition__content__action\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--primary -size-sm -width-full\"\n aria-label=\"selection button\"\n (click)=\"toggleFieldSelection()\"\n >\n <ng-container *ngIf=\"field$ | async as field; else noFieldTpl\">\n {{ field.name }}\n </ng-container>\n <ng-template #noFieldTpl>{{ '@pry.search.multi.selectField' | i18n }}</ng-template>\n </button>\n\n <ng-container *ngIf=\"classesLinked$ | async as classesLinked\">\n <pry-icon\n iconSvg=\"links_line\"\n [width]=\"15\"\n [height]=\"15\"\n style=\"color: black\"\n [pryTooltip]=\"classesTooltip\"\n pryTooltipPosition=\"after\"\n ></pry-icon>\n <ng-template #classesTooltip>\n <span>\n {{ '@pry.search.multi.in' | i18n }}\n <span *ngFor=\"let clazz of classesLinked; let last = last\">\n {{ clazz.name }}\n <ng-container *ngIf=\"!last\">, </ng-container>\n </span>\n </span>\n </ng-template>\n </ng-container>\n </div>\n\n <ng-container [formGroup]=\"form\">\n <div class=\"m-form-label-field\">\n <pry-select\n [items]=\"operators$ | async\"\n placeholder=\"Op\u00E9rateur\"\n formControlName=\"operator\"\n [itemsAsOption]=\"true\"\n [labelTranslate]=\"true\"\n bindValue=\"operator\"\n bindLabel=\"translation\"\n class=\"a-pry-select\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <ng-container *ngIf=\"condition.isDate; else classicInput\">\n <pry-date-picker\n formControlName=\"value\"\n (click)=\"onUpdateValue(condition)\"\n [rangePicker]=\"hasTwoFields\"\n [roundSelection]=\"true\"\n [timePicker]=\"true\"\n ></pry-date-picker>\n </ng-container>\n <ng-template #classicInput>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"\n (hasTwoFields ? '@pry.search.placeholder.minValue' : '@pry.search.placeholder.search') | i18n\n \"\n formControlName=\"value\"\n (focusout)=\"onUpdateValue(condition)\"\n />\n <ng-container *ngIf=\"hasTwoFields\">\n <input\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.search.placeholder.maxValue' | i18n\"\n formControlName=\"upperValue\"\n (focusout)=\"onUpdateValue(condition)\"\n />\n </ng-container>\n </ng-template>\n\n <label class=\"a-label a-label--help -error\" *ngIf=\"formValue?.errors?.['required'] && formValue?.touched\">\n {{ '@pry.search.multi.requiredError' | i18n }}\n </label>\n </div>\n </ng-container>\n </div>\n\n <div class=\"o-multi-class-condition__delete-content\">\n <ng-container *ngIf=\"notLastCondition$ | async; else cannotDelete\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\">\n <pry-icon\n iconSvg=\"delete\"\n [height]=\"20\"\n [width]=\"20\"\n [animation]=\"false\"\n (click)=\"onRemoveCondition(condition)\"\n ></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.delete' | i18n }}</span>\n </button>\n </ng-container>\n </div>\n <ng-template #cannotDelete>\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" disabled>\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"delete\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.delete' | i18n }}</span>\n </button>\n </ng-template>\n </div>\n\n <ng-template #fieldSelectionTpl>\n <pry-multi-class-field-selection\n [conditionId]=\"condition.id\"\n (closeModal)=\"onCloseModal()\"\n (selectFieldChange)=\"onChangeField(condition, $event)\"\n ></pry-multi-class-field-selection>\n </ng-template>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5.PrySelectComponent, selector: "pry-select", inputs: ["labelTranslate", "baseTranslate", "translationFn", "translationFnArgs", "clearable", "multiple", "multipleClearRight", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "items", "itemsAsOption", "bindData", "bindValue", "bindLabel", "bindIcon", "iconSize", "templateLabel", "templateOption", "autocomplete"] }, { kind: "directive", type: i5.PryTooltipDirective, selector: "[pryTooltip]", inputs: ["pryTooltip", "styleReversed", "pryTooltipContext", "pryTooltipPosition", "pryTooltipShowDelay"] }, { kind: "component", type: i5.PryDatePickerComponent, selector: "pry-date-picker", inputs: ["rangePicker", "timePicker", "maxYear", "minYear", "roundSelection"] }, { kind: "component", type: i7.MultiClassFieldSelectionComponent, selector: "pry-multi-class-field-selection", inputs: ["conditionId"], outputs: ["closeModal", "selectFieldChange"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.I18nPipe, name: "i18n" }] }); }
142
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: MultiClassConditionComponent, selector: "pry-multi-class-condition", inputs: { id: "id" }, viewQueries: [{ propertyName: "fieldSelectionTpl", first: true, predicate: ["fieldSelectionTpl"], descendants: true, read: TemplateRef }], ngImport: i0, template: "<ng-container *ngIf=\"condition$ | async as condition\">\n <div class=\"o-multi-class-condition\">\n <div class=\"o-multi-class-condition__content\">\n <div class=\"o-multi-class-condition__content__action\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--primary -size-sm -width-full\"\n aria-label=\"selection button\"\n (click)=\"toggleFieldSelection()\"\n >\n <ng-container *ngIf=\"field$ | async as field; else noFieldTpl\">\n {{ field.name }}\n </ng-container>\n <ng-template #noFieldTpl>{{ '@pry.search.multi.selectField' | i18n }}</ng-template>\n </button>\n\n <ng-container *ngIf=\"classesLinked$ | async as classesLinked\">\n <pry-icon\n iconSvg=\"links_line\"\n [width]=\"15\"\n [height]=\"15\"\n style=\"color: black\"\n [attr.data-tooltip]=\"('@pry.search.multi.in' | i18n) + ' ' + join(classesLinked)\"\n ></pry-icon>\n </ng-container>\n </div>\n\n <ng-container [formGroup]=\"form\">\n <div class=\"m-form-label-field\">\n <pry-select\n [items]=\"operators$ | async\"\n placeholder=\"Op\u00E9rateur\"\n formControlName=\"operator\"\n [itemsAsOption]=\"true\"\n [labelTranslate]=\"true\"\n bindValue=\"operator\"\n bindLabel=\"translation\"\n class=\"a-pry-select\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <ng-container *ngIf=\"condition.isDate; else classicInput\">\n <pry-date-picker\n formControlName=\"value\"\n (click)=\"onUpdateValue(condition)\"\n [rangePicker]=\"hasTwoFields\"\n [roundSelection]=\"true\"\n [timePicker]=\"true\"\n ></pry-date-picker>\n </ng-container>\n <ng-template #classicInput>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"\n (hasTwoFields ? '@pry.search.placeholder.minValue' : '@pry.search.placeholder.search') | i18n\n \"\n formControlName=\"value\"\n (focusout)=\"onUpdateValue(condition)\"\n />\n <ng-container *ngIf=\"hasTwoFields\">\n <input\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.search.placeholder.maxValue' | i18n\"\n formControlName=\"upperValue\"\n (focusout)=\"onUpdateValue(condition)\"\n />\n </ng-container>\n </ng-template>\n\n <label class=\"a-label a-label--help -error\" *ngIf=\"formValue?.errors?.['required'] && formValue?.touched\">\n {{ '@pry.search.multi.requiredError' | i18n }}\n </label>\n </div>\n </ng-container>\n </div>\n\n <div class=\"o-multi-class-condition__delete-content\">\n <ng-container *ngIf=\"notLastCondition$ | async; else cannotDelete\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\">\n <pry-icon\n iconSvg=\"delete\"\n [height]=\"20\"\n [width]=\"20\"\n [animation]=\"false\"\n (click)=\"onRemoveCondition(condition)\"\n ></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.delete' | i18n }}</span>\n </button>\n </ng-container>\n </div>\n <ng-template #cannotDelete>\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" disabled>\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"delete\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.delete' | i18n }}</span>\n </button>\n </ng-template>\n </div>\n\n <ng-template #fieldSelectionTpl>\n <pry-multi-class-field-selection\n [conditionId]=\"condition.id\"\n (closeModal)=\"onCloseModal()\"\n (selectFieldChange)=\"onChangeField(condition, $event)\"\n ></pry-multi-class-field-selection>\n </ng-template>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5.PrySelectComponent, selector: "pry-select", inputs: ["labelTranslate", "baseTranslate", "translationFn", "translationFnArgs", "clearable", "multiple", "multipleClearRight", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "items", "itemsAsOption", "bindData", "bindValue", "bindLabel", "bindIcon", "iconSize", "templateLabel", "templateOption", "autocomplete"] }, { kind: "component", type: i5.PryDatePickerComponent, selector: "pry-date-picker", inputs: ["rangePicker", "timePicker", "maxYear", "minYear", "roundSelection"] }, { kind: "component", type: i7.MultiClassFieldSelectionComponent, selector: "pry-multi-class-field-selection", inputs: ["conditionId"], outputs: ["closeModal", "selectFieldChange"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.I18nPipe, name: "i18n" }] }); }
140
143
  }
141
144
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: MultiClassConditionComponent, decorators: [{
142
145
  type: Component,
143
- args: [{ selector: 'pry-multi-class-condition', template: "<ng-container *ngIf=\"condition$ | async as condition\">\n <div class=\"o-multi-class-condition\">\n <div class=\"o-multi-class-condition__content\">\n <div class=\"o-multi-class-condition__content__action\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--primary -size-sm -width-full\"\n aria-label=\"selection button\"\n (click)=\"toggleFieldSelection()\"\n >\n <ng-container *ngIf=\"field$ | async as field; else noFieldTpl\">\n {{ field.name }}\n </ng-container>\n <ng-template #noFieldTpl>{{ '@pry.search.multi.selectField' | i18n }}</ng-template>\n </button>\n\n <ng-container *ngIf=\"classesLinked$ | async as classesLinked\">\n <pry-icon\n iconSvg=\"links_line\"\n [width]=\"15\"\n [height]=\"15\"\n style=\"color: black\"\n [pryTooltip]=\"classesTooltip\"\n pryTooltipPosition=\"after\"\n ></pry-icon>\n <ng-template #classesTooltip>\n <span>\n {{ '@pry.search.multi.in' | i18n }}\n <span *ngFor=\"let clazz of classesLinked; let last = last\">\n {{ clazz.name }}\n <ng-container *ngIf=\"!last\">, </ng-container>\n </span>\n </span>\n </ng-template>\n </ng-container>\n </div>\n\n <ng-container [formGroup]=\"form\">\n <div class=\"m-form-label-field\">\n <pry-select\n [items]=\"operators$ | async\"\n placeholder=\"Op\u00E9rateur\"\n formControlName=\"operator\"\n [itemsAsOption]=\"true\"\n [labelTranslate]=\"true\"\n bindValue=\"operator\"\n bindLabel=\"translation\"\n class=\"a-pry-select\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <ng-container *ngIf=\"condition.isDate; else classicInput\">\n <pry-date-picker\n formControlName=\"value\"\n (click)=\"onUpdateValue(condition)\"\n [rangePicker]=\"hasTwoFields\"\n [roundSelection]=\"true\"\n [timePicker]=\"true\"\n ></pry-date-picker>\n </ng-container>\n <ng-template #classicInput>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"\n (hasTwoFields ? '@pry.search.placeholder.minValue' : '@pry.search.placeholder.search') | i18n\n \"\n formControlName=\"value\"\n (focusout)=\"onUpdateValue(condition)\"\n />\n <ng-container *ngIf=\"hasTwoFields\">\n <input\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.search.placeholder.maxValue' | i18n\"\n formControlName=\"upperValue\"\n (focusout)=\"onUpdateValue(condition)\"\n />\n </ng-container>\n </ng-template>\n\n <label class=\"a-label a-label--help -error\" *ngIf=\"formValue?.errors?.['required'] && formValue?.touched\">\n {{ '@pry.search.multi.requiredError' | i18n }}\n </label>\n </div>\n </ng-container>\n </div>\n\n <div class=\"o-multi-class-condition__delete-content\">\n <ng-container *ngIf=\"notLastCondition$ | async; else cannotDelete\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\">\n <pry-icon\n iconSvg=\"delete\"\n [height]=\"20\"\n [width]=\"20\"\n [animation]=\"false\"\n (click)=\"onRemoveCondition(condition)\"\n ></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.delete' | i18n }}</span>\n </button>\n </ng-container>\n </div>\n <ng-template #cannotDelete>\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" disabled>\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"delete\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.delete' | i18n }}</span>\n </button>\n </ng-template>\n </div>\n\n <ng-template #fieldSelectionTpl>\n <pry-multi-class-field-selection\n [conditionId]=\"condition.id\"\n (closeModal)=\"onCloseModal()\"\n (selectFieldChange)=\"onChangeField(condition, $event)\"\n ></pry-multi-class-field-selection>\n </ng-template>\n</ng-container>\n" }]
146
+ args: [{ selector: 'pry-multi-class-condition', template: "<ng-container *ngIf=\"condition$ | async as condition\">\n <div class=\"o-multi-class-condition\">\n <div class=\"o-multi-class-condition__content\">\n <div class=\"o-multi-class-condition__content__action\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--primary -size-sm -width-full\"\n aria-label=\"selection button\"\n (click)=\"toggleFieldSelection()\"\n >\n <ng-container *ngIf=\"field$ | async as field; else noFieldTpl\">\n {{ field.name }}\n </ng-container>\n <ng-template #noFieldTpl>{{ '@pry.search.multi.selectField' | i18n }}</ng-template>\n </button>\n\n <ng-container *ngIf=\"classesLinked$ | async as classesLinked\">\n <pry-icon\n iconSvg=\"links_line\"\n [width]=\"15\"\n [height]=\"15\"\n style=\"color: black\"\n [attr.data-tooltip]=\"('@pry.search.multi.in' | i18n) + ' ' + join(classesLinked)\"\n ></pry-icon>\n </ng-container>\n </div>\n\n <ng-container [formGroup]=\"form\">\n <div class=\"m-form-label-field\">\n <pry-select\n [items]=\"operators$ | async\"\n placeholder=\"Op\u00E9rateur\"\n formControlName=\"operator\"\n [itemsAsOption]=\"true\"\n [labelTranslate]=\"true\"\n bindValue=\"operator\"\n bindLabel=\"translation\"\n class=\"a-pry-select\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <ng-container *ngIf=\"condition.isDate; else classicInput\">\n <pry-date-picker\n formControlName=\"value\"\n (click)=\"onUpdateValue(condition)\"\n [rangePicker]=\"hasTwoFields\"\n [roundSelection]=\"true\"\n [timePicker]=\"true\"\n ></pry-date-picker>\n </ng-container>\n <ng-template #classicInput>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"\n (hasTwoFields ? '@pry.search.placeholder.minValue' : '@pry.search.placeholder.search') | i18n\n \"\n formControlName=\"value\"\n (focusout)=\"onUpdateValue(condition)\"\n />\n <ng-container *ngIf=\"hasTwoFields\">\n <input\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.search.placeholder.maxValue' | i18n\"\n formControlName=\"upperValue\"\n (focusout)=\"onUpdateValue(condition)\"\n />\n </ng-container>\n </ng-template>\n\n <label class=\"a-label a-label--help -error\" *ngIf=\"formValue?.errors?.['required'] && formValue?.touched\">\n {{ '@pry.search.multi.requiredError' | i18n }}\n </label>\n </div>\n </ng-container>\n </div>\n\n <div class=\"o-multi-class-condition__delete-content\">\n <ng-container *ngIf=\"notLastCondition$ | async; else cannotDelete\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\">\n <pry-icon\n iconSvg=\"delete\"\n [height]=\"20\"\n [width]=\"20\"\n [animation]=\"false\"\n (click)=\"onRemoveCondition(condition)\"\n ></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.delete' | i18n }}</span>\n </button>\n </ng-container>\n </div>\n <ng-template #cannotDelete>\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" disabled>\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"delete\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.delete' | i18n }}</span>\n </button>\n </ng-template>\n </div>\n\n <ng-template #fieldSelectionTpl>\n <pry-multi-class-field-selection\n [conditionId]=\"condition.id\"\n (closeModal)=\"onCloseModal()\"\n (selectFieldChange)=\"onChangeField(condition, $event)\"\n ></pry-multi-class-field-selection>\n </ng-template>\n</ng-container>\n" }]
144
147
  }], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.SearchMultiClassService }, { type: i3.Overlay }, { type: i0.ViewContainerRef }]; }, propDecorators: { fieldSelectionTpl: [{
145
148
  type: ViewChild,
146
149
  args: ['fieldSelectionTpl', { read: TemplateRef }]
147
150
  }], id: [{
148
151
  type: Input
149
152
  }] } });
150
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktY2xhc3MtY29uZGl0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3NlYXJjaC9zZWFyY2gtbXVsdGktY2xhc3MvY29tcG9uZW50cy9tdWx0aS1jbGFzcy1jb25kaXRpb24vbXVsdGktY2xhc3MtY29uZGl0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3NlYXJjaC9zZWFyY2gtbXVsdGktY2xhc3MvY29tcG9uZW50cy9tdWx0aS1jbGFzcy1jb25kaXRpb24vbXVsdGktY2xhc3MtY29uZGl0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVyxhQUFhLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsV0FBVyxFQUFFLFNBQVMsRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFtQixrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRyxPQUFPLEVBRUwsY0FBYyxFQUNkLGFBQWEsRUFFYixjQUFjLEVBQ2QsU0FBUyxFQUVULGdCQUFnQixFQUVqQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNqRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7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VUFBVSxDQUFDLEVBQUUsS0FBSyxLQUFLLFNBQVMsQ0FBQztJQUN6RyxDQUFDOzhHQTlKVSw0QkFBNEI7a0dBQTVCLDRCQUE0QiwwTEFDQyxXQUFXLDZCQzFCckQsNDdJQXNIQTs7MkZEN0ZhLDRCQUE0QjtrQkFKeEMsU0FBUzsrQkFDRSwyQkFBMkI7dUxBSWtCLGlCQUFpQjtzQkFBdkUsU0FBUzt1QkFBQyxtQkFBbUIsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBU3hDLEVBQUU7c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlDb25maWcsIE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFVudHlwZWRGb3JtQ29udHJvbCwgVW50eXBlZEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHtcbiAgQ2xhc3MsXG4gIENsYXNzU2VsZWN0b3JzLFxuICBDb25maWdBY3Rpb25zLFxuICBGaWVsZCxcbiAgRmllbGRTZWxlY3RvcnMsXG4gIEZpZWxkVHlwZSxcbiAgTXVsdGlDbGFzc0NvbmRpdGlvbixcbiAgT1BFUkFUT1JfT1BUSU9OUyxcbiAgT3BlcmF0b3JPcHRpb25cbn0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIGZpbHRlciwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgc3dpdGNoTWFwLCB0YWtlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTZWFyY2hNdWx0aUNsYXNzQWN0aW9ucyB9IGZyb20gJy4uLy4uL3N0b3JlL3NlYXJjaC1tdWx0aS1jbGFzcy5hY3Rpb25zJztcbmltcG9ydCB7IFNlYXJjaE11bHRpQ2xhc3NTZWxlY3RvcnMgfSBmcm9tICcuLi8uLi9zdG9yZS9zZWFyY2gtbXVsdGktY2xhc3Muc2VsZWN0b3JzJztcbmltcG9ydCB7IFNlYXJjaE11bHRpQ2xhc3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc3RvcmUvc2VhcmNoLW11bHRpLWNsYXNzLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktbXVsdGktY2xhc3MtY29uZGl0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL211bHRpLWNsYXNzLWNvbmRpdGlvbi5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgTXVsdGlDbGFzc0NvbmRpdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ2ZpZWxkU2VsZWN0aW9uVHBsJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KSBmaWVsZFNlbGVjdGlvblRwbCE6IFRlbXBsYXRlUmVmPGFueT47XG4gIGNvbmRpdGlvbiQ6IE9ic2VydmFibGU8TXVsdGlDbGFzc0NvbmRpdGlvbiB8IHVuZGVmaW5lZD4gPSBvZih1bmRlZmluZWQpO1xuICBjbGFzc2VzTGlua2VkJDogT2JzZXJ2YWJsZTxDbGFzc1tdPiA9IG9mKFtdKTtcbiAgZmllbGQkOiBPYnNlcnZhYmxlPEZpZWxkIHwgdW5kZWZpbmVkPiA9IG9mKHVuZGVmaW5lZCk7XG4gIGNsYXNzZXMkOiBPYnNlcnZhYmxlPENsYXNzW10+O1xuICBjb25kaXRpb25zJDogT2JzZXJ2YWJsZTxNdWx0aUNsYXNzQ29uZGl0aW9uW10+O1xuICBub3RMYXN0Q29uZGl0aW9uJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgb3BlcmF0b3JzJDogT2JzZXJ2YWJsZTxPcGVyYXRvck9wdGlvbltdPiA9IG9mKFtdKTtcblxuICBASW5wdXQoKSBzZXQgaWQodmFsOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pZCA9IHZhbDtcbiAgICB0aGlzLmNvbmRpdGlvbiQgPSB0aGlzLnN0b3JlLnNlbGVjdChTZWFyY2hNdWx0aUNsYXNzU2VsZWN0b3JzLmdldENvbmRpdGlvbkJ5SWQodGhpcy5faWQpKTtcbiAgICB0aGlzLmNvbmRpdGlvbiRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKGMpOiBjIGlzIE11bHRpQ2xhc3NDb25kaXRpb24gPT4gYz8uZmllbGQgIT09IHVuZGVmaW5lZCksXG4gICAgICAgIHRha2UoMSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGMpID0+IHtcbiAgICAgICAgaWYgKGMuaXNEYXRlICYmIHR5cGVvZiB0aGlzLmZvcm0uZ2V0KCd2YWx1ZScpPy52YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7IG9wZXJhdG9yOiBjLm9wZXJhdG9yLCB2YWx1ZTogeyBzdGFydDogYy52YWx1ZSwgZW5kOiBjLnVwcGVyVmFsdWUgfSB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZShcbiAgICAgICAgICAgIHsgb3BlcmF0b3I6IGMub3BlcmF0b3IsIHZhbHVlOiBjLnZhbHVlLCB1cHBlclZhbHVlOiBjLnVwcGVyVmFsdWUgfSxcbiAgICAgICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZm9ybVZhbHVlPy5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XG4gICAgICAgIHRoaXMuZm9ybVZhbHVlPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgIGlmIChjLnZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgICAgdGhpcy5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZvcm0uZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgIH0pO1xuICAgIHRoaXMuZmllbGQkID0gdGhpcy5jb25kaXRpb24kLnBpcGUoXG4gICAgICBmaWx0ZXIoKGMpOiBjIGlzIE11bHRpQ2xhc3NDb25kaXRpb24gPT4gYyAhPT0gdW5kZWZpbmVkKSxcbiAgICAgIHN3aXRjaE1hcCgoYykgPT4gdGhpcy5zdG9yZS5zZWxlY3QoRmllbGRTZWxlY3RvcnMuZmllbGRCeUlkKGMuZmllbGQpKSlcbiAgICApO1xuICAgIHRoaXMuY2xhc3Nlc0xpbmtlZCQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmNvbmRpdGlvbnMkLCB0aGlzLmNvbmRpdGlvbiQsIHRoaXMuY2xhc3NlcyRdKS5waXBlKFxuICAgICAgbWFwKChbY29uZGl0aW9ucywgY29uZGl0aW9uLCBjbGFzc2VzXSkgPT4gdGhpcy5zZXJ2aWNlLmdldENsYXNzZXNGb3JGaWVsZChjb25kaXRpb25zLCBjb25kaXRpb24sIGNsYXNzZXMpKSxcbiAgICAgIGZpbHRlcigoY2xhenopID0+IChjbGF6ej8ubGVuZ3RoID8/IDApID4gMClcbiAgICApO1xuICAgIHRoaXMub3BlcmF0b3JzJCA9IHRoaXMuY29uZGl0aW9uJC5waXBlKFxuICAgICAgZmlsdGVyKChjKTogYyBpcyBNdWx0aUNsYXNzQ29uZGl0aW9uID0+IGMgIT09IHVuZGVmaW5lZCksXG4gICAgICBzd2l0Y2hNYXAoKGMpID0+IHRoaXMuc3RvcmUuc2VsZWN0KEZpZWxkU2VsZWN0b3JzLmZpZWxkQnlJZChjLmZpZWxkKSkpLFxuICAgICAgZmlsdGVyKChmKTogZiBpcyBGaWVsZCA9PiBmICE9PSB1bmRlZmluZWQpLFxuICAgICAgbWFwKChmKSA9PiB7XG4gICAgICAgIGNvbnN0IHR5cGUgPSBmLnR5cGU7XG4gICAgICAgIGlmIChbRmllbGRUeXBlLlNUUklORywgRmllbGRUeXBlLktFWVdPUkRdLmluY2x1ZGVzKHR5cGUpKSB7XG4gICAgICAgICAgcmV0dXJuIE9QRVJBVE9SX09QVElPTlMuZmlsdGVyKChvcHQpID0+IG9wdC50eXBlID09PSAnc3RyaW5nJyk7XG4gICAgICAgIH0gZWxzZSBpZiAoW0ZpZWxkVHlwZS5ERUNJTUFMLCBGaWVsZFR5cGUuSU5URUdFUiwgRmllbGRUeXBlLkxPTkddLmluY2x1ZGVzKHR5cGUpKSB7XG4gICAgICAgICAgcmV0dXJuIE9QRVJBVE9SX09QVElPTlMuZmlsdGVyKChvcHQpID0+IG9wdC50eXBlID09PSAnbnVtYmVyJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIE9QRVJBVE9SX09QVElPTlMuZmlsdGVyKChvcHQpID0+IG9wdC50eXBlID09PSAnZGF0ZScpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9pZD86IHN0cmluZztcbiAgb3BlbmVkID0gZmFsc2U7XG4gIHByaXZhdGUgb3ZlcmxheVJlZj86IE92ZXJsYXlSZWY7XG5cbiAgZm9ybSA9IG5ldyBVbnR5cGVkRm9ybUdyb3VwKHtcbiAgICBvcGVyYXRvcjogbmV3IFVudHlwZWRGb3JtQ29udHJvbCh7IHZhbHVlOiBudWxsLCBkaXNhYmxlZDogdHJ1ZSB9LCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgIHZhbHVlOiBuZXcgVW50eXBlZEZvcm1Db250cm9sKHsgdmFsdWU6IG51bGwsIGRpc2FibGVkOiB0cnVlIH0sIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgdXBwZXJWYWx1ZTogbmV3IFVudHlwZWRGb3JtQ29udHJvbCh7IHZhbHVlOiBudWxsLCBkaXNhYmxlZDogdHJ1ZSB9LCBbXSlcbiAgfSk7XG5cbiAgZ2V0IGZvcm1WYWx1ZSgpOiBBYnN0cmFjdENvbnRyb2wgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtLmdldCgndmFsdWUnKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlPGFueT4sXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBTZWFyY2hNdWx0aUNsYXNzU2VydmljZSxcbiAgICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXksXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmXG4gICkge1xuICAgIHRoaXMuY2xhc3NlcyQgPSB0aGlzLnN0b3JlLnNlbGVjdChDbGFzc1NlbGVjdG9ycy5jbGFzc2VzKTtcbiAgICB0aGlzLmNvbmRpdGlvbnMkID0gdGhpcy5zdG9yZS5zZWxlY3QoU2VhcmNoTXVsdGlDbGFzc1NlbGVjdG9ycy5jb25kaXRpb25zKTtcbiAgICB0aGlzLm5vdExhc3RDb25kaXRpb24kID0gdGhpcy5jb25kaXRpb25zJC5waXBlKG1hcCgoY29uZGl0aW9ucykgPT4gKGNvbmRpdGlvbnM/Lmxlbmd0aCA/PyAwKSAhPT0gMSkpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybS5nZXQoJ29wZXJhdG9yJyk/LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICBpZiAodGhpcy5faWQpIHtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChTZWFyY2hNdWx0aUNsYXNzQWN0aW9ucy51cGRhdGVDb25kaXRpb24oeyBjb25kaXRpb25JZDogdGhpcy5faWQsIGtleTogJ29wZXJhdG9yJywgdmFsdWUgfSkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgb25SZW1vdmVDb25kaXRpb24oY29uZGl0aW9uOiBNdWx0aUNsYXNzQ29uZGl0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChTZWFyY2hNdWx0aUNsYXNzQWN0aW9ucy5yZW1vdmVDb25kaXRpb24oeyBjb25kaXRpb25JZDogY29uZGl0aW9uLmlkIH0pKTtcbiAgfVxuXG4gIHRvZ2dsZUZpZWxkU2VsZWN0aW9uKCkge1xuICAgIHRoaXMub3BlbmVkID0gIXRoaXMub3BlbmVkO1xuICAgIGlmICh0aGlzLm9wZW5lZCkge1xuICAgICAgdGhpcy5vcGVuV2l0aFRlbXBsYXRlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQ29uZmlnQWN0aW9ucy5jbG9zZU92ZXJsYXkoeyBpZDogdGhpcy5jb25zdHJ1Y3Rvci5uYW1lIH0pKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5XaXRoVGVtcGxhdGUoKSB7XG4gICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZShcbiAgICAgIG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICAgIGJhY2tkcm9wQ2xhc3M6ICdiYWNrZHJvcCcsXG4gICAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5wb3NpdGlvbigpLmdsb2JhbCgpLmNlbnRlckhvcml6b250YWxseSgpLmNlbnRlclZlcnRpY2FsbHkoKSxcbiAgICAgICAgbWluSGVpZ2h0OiAnMzAwcHgnLFxuICAgICAgICBtYXhIZWlnaHQ6ICc2MDBweCcsXG4gICAgICAgIHdpZHRoOiAnNTAwcHgnXG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChDb25maWdBY3Rpb25zLmFkZGluZ092ZXJsYXkoeyBpZDogdGhpcy5jb25zdHJ1Y3Rvci5uYW1lIH0pKTtcbiAgICB0aGlzLm92ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgoXykgPT4gdGhpcy50b2dnbGVGaWVsZFNlbGVjdGlvbigpKTtcbiAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLmZpZWxkU2VsZWN0aW9uVHBsLCB0aGlzLnZpZXdDb250YWluZXJSZWYpKTtcbiAgfVxuXG4gIG9uQ2hhbmdlRmllbGQoY29uZGl0aW9uOiBNdWx0aUNsYXNzQ29uZGl0aW9uLCBmaWVsZDogc3RyaW5nKSB7XG4gICAgaWYgKGNvbmRpdGlvbi5maWVsZCAhPT0gZmllbGQpIHtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goU2VhcmNoTXVsdGlDbGFzc0FjdGlvbnMudXBkYXRlQ29uZGl0aW9uRmllbGQoeyBjb25kaXRpb25JZDogY29uZGl0aW9uLmlkLCBmaWVsZCB9KSk7XG4gICAgfVxuICAgIHRoaXMudG9nZ2xlRmllbGRTZWxlY3Rpb24oKTtcbiAgfVxuXG4gIG9uQ2xvc2VNb2RhbCgpIHtcbiAgICB0aGlzLnRvZ2dsZUZpZWxkU2VsZWN0aW9uKCk7XG4gIH1cblxuICBvblVwZGF0ZVZhbHVlKGNvbmRpdGlvbjogTXVsdGlDbGFzc0NvbmRpdGlvbikge1xuICAgIGxldCBmb3JtVmFsdWUsIGZvcm1TZWNvbmRWYWx1ZTtcbiAgICBpZiAoY29uZGl0aW9uLmlzRGF0ZSAmJiB0eXBlb2YgdGhpcy5mb3JtLmdldCgndmFsdWUnKT8udmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICBmb3JtVmFsdWUgPSB0aGlzLmZvcm0uZ2V0KCd2YWx1ZScpPy52YWx1ZS5zdGFydDtcbiAgICAgIGZvcm1TZWNvbmRWYWx1ZSA9IHRoaXMuZm9ybS5nZXQoJ3ZhbHVlJyk/LnZhbHVlLmVuZDtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9ybVZhbHVlID0gdGhpcy5mb3JtLmdldCgndmFsdWUnKT8udmFsdWU7XG4gICAgICBmb3JtU2Vjb25kVmFsdWUgPSB0aGlzLmZvcm0uZ2V0KCd1cHBlclZhbHVlJyk/LnZhbHVlO1xuICAgIH1cblxuICAgIGlmIChmb3JtVmFsdWUgIT09IGNvbmRpdGlvbi52YWx1ZSB8fCBmb3JtU2Vjb25kVmFsdWUgIT09IGNvbmRpdGlvbi51cHBlclZhbHVlKSB7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgICBTZWFyY2hNdWx0aUNsYXNzQWN0aW9ucy51cGRhdGVDb25kaXRpb24oe1xuICAgICAgICAgIGNvbmRpdGlvbklkOiBjb25kaXRpb24uaWQsXG4gICAgICAgICAga2V5OiAndmFsdWUnLFxuICAgICAgICAgIHZhbHVlOiBmb3JtVmFsdWUsXG4gICAgICAgICAgdXBwZXJWYWx1ZTogZm9ybVNlY29uZFZhbHVlXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGdldCBoYXNUd29GaWVsZHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybS5nZXQoJ29wZXJhdG9yJyk/LnZhbHVlID09PSAnSU5TSURFJyB8fCB0aGlzLmZvcm0uZ2V0KCdvcGVyYXRvcicpPy52YWx1ZSA9PT0gJ09VVFNJREUnO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZGl0aW9uJCB8IGFzeW5jIGFzIGNvbmRpdGlvblwiPlxuICA8ZGl2IGNsYXNzPVwiby1tdWx0aS1jbGFzcy1jb25kaXRpb25cIj5cbiAgICA8ZGl2IGNsYXNzPVwiby1tdWx0aS1jbGFzcy1jb25kaXRpb25fX2NvbnRlbnRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJvLW11bHRpLWNsYXNzLWNvbmRpdGlvbl9fY29udGVudF9fYWN0aW9uXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5IC1zaXplLXNtIC13aWR0aC1mdWxsXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwic2VsZWN0aW9uIGJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUZpZWxkU2VsZWN0aW9uKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkJCB8IGFzeW5jIGFzIGZpZWxkOyBlbHNlIG5vRmllbGRUcGxcIj5cbiAgICAgICAgICAgIHt7IGZpZWxkLm5hbWUgfX1cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI25vRmllbGRUcGw+e3sgJ0Bwcnkuc2VhcmNoLm11bHRpLnNlbGVjdEZpZWxkJyB8IGkxOG4gfX08L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2xhc3Nlc0xpbmtlZCQgfCBhc3luYyBhcyBjbGFzc2VzTGlua2VkXCI+XG4gICAgICAgICAgPHByeS1pY29uXG4gICAgICAgICAgICBpY29uU3ZnPVwibGlua3NfbGluZVwiXG4gICAgICAgICAgICBbd2lkdGhdPVwiMTVcIlxuICAgICAgICAgICAgW2hlaWdodF09XCIxNVwiXG4gICAgICAgICAgICBzdHlsZT1cImNvbG9yOiBibGFja1wiXG4gICAgICAgICAgICBbcHJ5VG9vbHRpcF09XCJjbGFzc2VzVG9vbHRpcFwiXG4gICAgICAgICAgICBwcnlUb29sdGlwUG9zaXRpb249XCJhZnRlclwiXG4gICAgICAgICAgPjwvcHJ5LWljb24+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNjbGFzc2VzVG9vbHRpcD5cbiAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICB7eyAnQHByeS5zZWFyY2gubXVsdGkuaW4nIHwgaTE4biB9fVxuICAgICAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgY2xhenogb2YgY2xhc3Nlc0xpbmtlZDsgbGV0IGxhc3QgPSBsYXN0XCI+XG4gICAgICAgICAgICAgICAge3sgY2xhenoubmFtZSB9fVxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbGFzdFwiPiwgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8bmctY29udGFpbmVyIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgIFtpdGVtc109XCJvcGVyYXRvcnMkIHwgYXN5bmNcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJPcMOpcmF0ZXVyXCJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm9wZXJhdG9yXCJcbiAgICAgICAgICAgIFtpdGVtc0FzT3B0aW9uXT1cInRydWVcIlxuICAgICAgICAgICAgW2xhYmVsVHJhbnNsYXRlXT1cInRydWVcIlxuICAgICAgICAgICAgYmluZFZhbHVlPVwib3BlcmF0b3JcIlxuICAgICAgICAgICAgYmluZExhYmVsPVwidHJhbnNsYXRpb25cIlxuICAgICAgICAgICAgY2xhc3M9XCJhLXByeS1zZWxlY3RcIlxuICAgICAgICAgID48L3ByeS1zZWxlY3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbmRpdGlvbi5pc0RhdGU7IGVsc2UgY2xhc3NpY0lucHV0XCI+XG4gICAgICAgICAgICA8cHJ5LWRhdGUtcGlja2VyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uVXBkYXRlVmFsdWUoY29uZGl0aW9uKVwiXG4gICAgICAgICAgICAgIFtyYW5nZVBpY2tlcl09XCJoYXNUd29GaWVsZHNcIlxuICAgICAgICAgICAgICBbcm91bmRTZWxlY3Rpb25dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFt0aW1lUGlja2VyXT1cInRydWVcIlxuICAgICAgICAgICAgPjwvcHJ5LWRhdGUtcGlja2VyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY2xhc3NpY0lucHV0PlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiXG4gICAgICAgICAgICAgICAgKGhhc1R3b0ZpZWxkcyA/ICdAcHJ5LnNlYXJjaC5wbGFjZWhvbGRlci5taW5WYWx1ZScgOiAnQHByeS5zZWFyY2gucGxhY2Vob2xkZXIuc2VhcmNoJykgfCBpMThuXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cIm9uVXBkYXRlVmFsdWUoY29uZGl0aW9uKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc1R3b0ZpZWxkc1wiPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInQHByeS5zZWFyY2gucGxhY2Vob2xkZXIubWF4VmFsdWUnIHwgaTE4blwiXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidXBwZXJWYWx1ZVwiXG4gICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cIm9uVXBkYXRlVmFsdWUoY29uZGl0aW9uKVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbCBhLWxhYmVsLS1oZWxwIC1lcnJvclwiICpuZ0lmPVwiZm9ybVZhbHVlPy5lcnJvcnM/LlsncmVxdWlyZWQnXSAmJiBmb3JtVmFsdWU/LnRvdWNoZWRcIj5cbiAgICAgICAgICAgIHt7ICdAcHJ5LnNlYXJjaC5tdWx0aS5yZXF1aXJlZEVycm9yJyB8IGkxOG4gfX1cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cIm8tbXVsdGktY2xhc3MtY29uZGl0aW9uX19kZWxldGUtY29udGVudFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5vdExhc3RDb25kaXRpb24kIHwgYXN5bmM7IGVsc2UgY2Fubm90RGVsZXRlXCI+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYS1idG4gYS1idG4tLWljb24tb25seVwiPlxuICAgICAgICAgIDxwcnktaWNvblxuICAgICAgICAgICAgaWNvblN2Zz1cImRlbGV0ZVwiXG4gICAgICAgICAgICBbaGVpZ2h0XT1cIjIwXCJcbiAgICAgICAgICAgIFt3aWR0aF09XCIyMFwiXG4gICAgICAgICAgICBbYW5pbWF0aW9uXT1cImZhbHNlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvblJlbW92ZUNvbmRpdGlvbihjb25kaXRpb24pXCJcbiAgICAgICAgICA+PC9wcnktaWNvbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+e3sgJ0BwcnkuYWN0aW9uLmRlbGV0ZScgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxuZy10ZW1wbGF0ZSAjY2Fubm90RGVsZXRlPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhLWJ0biBhLWJ0bi0taWNvbi1vbmx5XCIgZGlzYWJsZWQ+XG4gICAgICAgIDxwcnktaWNvbiBbaGVpZ2h0XT1cIjIwXCIgW3dpZHRoXT1cIjIwXCIgaWNvblN2Zz1cImRlbGV0ZVwiPjwvcHJ5LWljb24+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj57eyAnQHByeS5hY3Rpb24uZGVsZXRlJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cblxuICA8bmctdGVtcGxhdGUgI2ZpZWxkU2VsZWN0aW9uVHBsPlxuICAgIDxwcnktbXVsdGktY2xhc3MtZmllbGQtc2VsZWN0aW9uXG4gICAgICBbY29uZGl0aW9uSWRdPVwiY29uZGl0aW9uLmlkXCJcbiAgICAgIChjbG9zZU1vZGFsKT1cIm9uQ2xvc2VNb2RhbCgpXCJcbiAgICAgIChzZWxlY3RGaWVsZENoYW5nZSk9XCJvbkNoYW5nZUZpZWxkKGNvbmRpdGlvbiwgJGV2ZW50KVwiXG4gICAgPjwvcHJ5LW11bHRpLWNsYXNzLWZpZWxkLXNlbGVjdGlvbj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctY29udGFpbmVyPlxuIl19
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktY2xhc3MtY29uZGl0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3NlYXJjaC9zZWFyY2gtbXVsdGktY2xhc3MvY29tcG9uZW50cy9tdWx0aS1jbGFzcy1jb25kaXRpb24vbXVsdGktY2xhc3MtY29uZGl0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3NlYXJjaC9zZWFyY2gtbXVsdGktY2xhc3MvY29tcG9uZW50cy9tdWx0aS1jbGFzcy1jb25kaXRpb24vbXVsdGktY2xhc3MtY29uZGl0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVyxhQUFhLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsV0FBVyxFQUFFLFNBQVMsRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFtQixrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRyxPQUFPLEVBRUwsY0FBYyxFQUNkLGFBQWEsRUFFYixjQUFjLEVBQ2QsU0FBUyxFQUVULGdCQUFnQixFQUVqQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNqRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7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QyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxLQUFLLFNBQVMsQ0FBQztJQUN6RyxDQUFDOzhHQWxLVSw0QkFBNEI7a0dBQTVCLDRCQUE0QiwwTEFDQyxXQUFXLDZCQzFCckQsZ21JQTRHQTs7MkZEbkZhLDRCQUE0QjtrQkFKeEMsU0FBUzsrQkFDRSwyQkFBMkI7dUxBSWtCLGlCQUFpQjtzQkFBdkUsU0FBUzt1QkFBQyxtQkFBbUIsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBU3hDLEVBQUU7c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlDb25maWcsIE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFVudHlwZWRGb3JtQ29udHJvbCwgVW50eXBlZEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHtcbiAgQ2xhc3MsXG4gIENsYXNzU2VsZWN0b3JzLFxuICBDb25maWdBY3Rpb25zLFxuICBGaWVsZCxcbiAgRmllbGRTZWxlY3RvcnMsXG4gIEZpZWxkVHlwZSxcbiAgTXVsdGlDbGFzc0NvbmRpdGlvbixcbiAgT1BFUkFUT1JfT1BUSU9OUyxcbiAgT3BlcmF0b3JPcHRpb25cbn0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIGZpbHRlciwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgc3dpdGNoTWFwLCB0YWtlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTZWFyY2hNdWx0aUNsYXNzQWN0aW9ucyB9IGZyb20gJy4uLy4uL3N0b3JlL3NlYXJjaC1tdWx0aS1jbGFzcy5hY3Rpb25zJztcbmltcG9ydCB7IFNlYXJjaE11bHRpQ2xhc3NTZWxlY3RvcnMgfSBmcm9tICcuLi8uLi9zdG9yZS9zZWFyY2gtbXVsdGktY2xhc3Muc2VsZWN0b3JzJztcbmltcG9ydCB7IFNlYXJjaE11bHRpQ2xhc3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc3RvcmUvc2VhcmNoLW11bHRpLWNsYXNzLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktbXVsdGktY2xhc3MtY29uZGl0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL211bHRpLWNsYXNzLWNvbmRpdGlvbi5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgTXVsdGlDbGFzc0NvbmRpdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ2ZpZWxkU2VsZWN0aW9uVHBsJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KSBmaWVsZFNlbGVjdGlvblRwbCE6IFRlbXBsYXRlUmVmPGFueT47XG4gIGNvbmRpdGlvbiQ6IE9ic2VydmFibGU8TXVsdGlDbGFzc0NvbmRpdGlvbiB8IHVuZGVmaW5lZD4gPSBvZih1bmRlZmluZWQpO1xuICBjbGFzc2VzTGlua2VkJDogT2JzZXJ2YWJsZTxDbGFzc1tdPiA9IG9mKFtdKTtcbiAgZmllbGQkOiBPYnNlcnZhYmxlPEZpZWxkIHwgdW5kZWZpbmVkPiA9IG9mKHVuZGVmaW5lZCk7XG4gIGNsYXNzZXMkOiBPYnNlcnZhYmxlPENsYXNzW10+O1xuICBjb25kaXRpb25zJDogT2JzZXJ2YWJsZTxNdWx0aUNsYXNzQ29uZGl0aW9uW10+O1xuICBub3RMYXN0Q29uZGl0aW9uJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgb3BlcmF0b3JzJDogT2JzZXJ2YWJsZTxPcGVyYXRvck9wdGlvbltdPiA9IG9mKFtdKTtcblxuICBASW5wdXQoKSBzZXQgaWQodmFsOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pZCA9IHZhbDtcbiAgICB0aGlzLmNvbmRpdGlvbiQgPSB0aGlzLnN0b3JlLnNlbGVjdChTZWFyY2hNdWx0aUNsYXNzU2VsZWN0b3JzLmdldENvbmRpdGlvbkJ5SWQodGhpcy5faWQpKTtcbiAgICB0aGlzLmNvbmRpdGlvbiRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKGMpOiBjIGlzIE11bHRpQ2xhc3NDb25kaXRpb24gPT4gYz8uZmllbGQgIT09IHVuZGVmaW5lZCksXG4gICAgICAgIHRha2UoMSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGMpID0+IHtcbiAgICAgICAgaWYgKGMuaXNEYXRlICYmIHR5cGVvZiB0aGlzLmZvcm0uZ2V0KCd2YWx1ZScpPy52YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7IG9wZXJhdG9yOiBjLm9wZXJhdG9yLCB2YWx1ZTogeyBzdGFydDogYy52YWx1ZSwgZW5kOiBjLnVwcGVyVmFsdWUgfSB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZShcbiAgICAgICAgICAgIHsgb3BlcmF0b3I6IGMub3BlcmF0b3IsIHZhbHVlOiBjLnZhbHVlLCB1cHBlclZhbHVlOiBjLnVwcGVyVmFsdWUgfSxcbiAgICAgICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZm9ybVZhbHVlPy5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XG4gICAgICAgIHRoaXMuZm9ybVZhbHVlPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgIGlmIChjLnZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgICAgdGhpcy5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZvcm0uZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgIH0pO1xuICAgIHRoaXMuZmllbGQkID0gdGhpcy5jb25kaXRpb24kLnBpcGUoXG4gICAgICBmaWx0ZXIoKGMpOiBjIGlzIE11bHRpQ2xhc3NDb25kaXRpb24gPT4gYyAhPT0gdW5kZWZpbmVkKSxcbiAgICAgIHN3aXRjaE1hcCgoYykgPT4gdGhpcy5zdG9yZS5zZWxlY3QoRmllbGRTZWxlY3RvcnMuZmllbGRCeUlkKGMuZmllbGQpKSlcbiAgICApO1xuICAgIHRoaXMuY2xhc3Nlc0xpbmtlZCQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmNvbmRpdGlvbnMkLCB0aGlzLmNvbmRpdGlvbiQsIHRoaXMuY2xhc3NlcyRdKS5waXBlKFxuICAgICAgbWFwKChbY29uZGl0aW9ucywgY29uZGl0aW9uLCBjbGFzc2VzXSkgPT4gdGhpcy5zZXJ2aWNlLmdldENsYXNzZXNGb3JGaWVsZChjb25kaXRpb25zLCBjb25kaXRpb24sIGNsYXNzZXMpKSxcbiAgICAgIGZpbHRlcigoY2xhenopID0+IChjbGF6ej8ubGVuZ3RoID8/IDApID4gMClcbiAgICApO1xuICAgIHRoaXMub3BlcmF0b3JzJCA9IHRoaXMuY29uZGl0aW9uJC5waXBlKFxuICAgICAgZmlsdGVyKChjKTogYyBpcyBNdWx0aUNsYXNzQ29uZGl0aW9uID0+IGMgIT09IHVuZGVmaW5lZCksXG4gICAgICBzd2l0Y2hNYXAoKGMpID0+IHRoaXMuc3RvcmUuc2VsZWN0KEZpZWxkU2VsZWN0b3JzLmZpZWxkQnlJZChjLmZpZWxkKSkpLFxuICAgICAgZmlsdGVyKChmKTogZiBpcyBGaWVsZCA9PiBmICE9PSB1bmRlZmluZWQpLFxuICAgICAgbWFwKChmKSA9PiB7XG4gICAgICAgIGNvbnN0IHR5cGUgPSBmLnR5cGU7XG4gICAgICAgIGlmIChbRmllbGRUeXBlLlNUUklORywgRmllbGRUeXBlLktFWVdPUkRdLmluY2x1ZGVzKHR5cGUpKSB7XG4gICAgICAgICAgcmV0dXJuIE9QRVJBVE9SX09QVElPTlMuZmlsdGVyKChvcHQpID0+IG9wdC50eXBlID09PSAnc3RyaW5nJyk7XG4gICAgICAgIH0gZWxzZSBpZiAoW0ZpZWxkVHlwZS5ERUNJTUFMLCBGaWVsZFR5cGUuSU5URUdFUiwgRmllbGRUeXBlLkxPTkddLmluY2x1ZGVzKHR5cGUpKSB7XG4gICAgICAgICAgcmV0dXJuIE9QRVJBVE9SX09QVElPTlMuZmlsdGVyKChvcHQpID0+IG9wdC50eXBlID09PSAnbnVtYmVyJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIE9QRVJBVE9SX09QVElPTlMuZmlsdGVyKChvcHQpID0+IG9wdC50eXBlID09PSAnZGF0ZScpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9pZD86IHN0cmluZztcbiAgb3BlbmVkID0gZmFsc2U7XG4gIHByaXZhdGUgb3ZlcmxheVJlZj86IE92ZXJsYXlSZWY7XG5cbiAgZm9ybSA9IG5ldyBVbnR5cGVkRm9ybUdyb3VwKHtcbiAgICBvcGVyYXRvcjogbmV3IFVudHlwZWRGb3JtQ29udHJvbCh7IHZhbHVlOiBudWxsLCBkaXNhYmxlZDogdHJ1ZSB9LCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgIHZhbHVlOiBuZXcgVW50eXBlZEZvcm1Db250cm9sKHsgdmFsdWU6IG51bGwsIGRpc2FibGVkOiB0cnVlIH0sIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgdXBwZXJWYWx1ZTogbmV3IFVudHlwZWRGb3JtQ29udHJvbCh7IHZhbHVlOiBudWxsLCBkaXNhYmxlZDogdHJ1ZSB9LCBbXSlcbiAgfSk7XG5cbiAgZ2V0IGZvcm1WYWx1ZSgpOiBBYnN0cmFjdENvbnRyb2wgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtLmdldCgndmFsdWUnKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlPGFueT4sXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBTZWFyY2hNdWx0aUNsYXNzU2VydmljZSxcbiAgICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXksXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmXG4gICkge1xuICAgIHRoaXMuY2xhc3NlcyQgPSB0aGlzLnN0b3JlLnNlbGVjdChDbGFzc1NlbGVjdG9ycy5jbGFzc2VzKTtcbiAgICB0aGlzLmNvbmRpdGlvbnMkID0gdGhpcy5zdG9yZS5zZWxlY3QoU2VhcmNoTXVsdGlDbGFzc1NlbGVjdG9ycy5jb25kaXRpb25zKTtcbiAgICB0aGlzLm5vdExhc3RDb25kaXRpb24kID0gdGhpcy5jb25kaXRpb25zJC5waXBlKG1hcCgoY29uZGl0aW9ucykgPT4gKGNvbmRpdGlvbnM/Lmxlbmd0aCA/PyAwKSAhPT0gMSkpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybS5nZXQoJ29wZXJhdG9yJyk/LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICBpZiAodGhpcy5faWQpIHtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChTZWFyY2hNdWx0aUNsYXNzQWN0aW9ucy51cGRhdGVDb25kaXRpb24oeyBjb25kaXRpb25JZDogdGhpcy5faWQsIGtleTogJ29wZXJhdG9yJywgdmFsdWUgfSkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgb25SZW1vdmVDb25kaXRpb24oY29uZGl0aW9uOiBNdWx0aUNsYXNzQ29uZGl0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChTZWFyY2hNdWx0aUNsYXNzQWN0aW9ucy5yZW1vdmVDb25kaXRpb24oeyBjb25kaXRpb25JZDogY29uZGl0aW9uLmlkIH0pKTtcbiAgfVxuXG4gIHRvZ2dsZUZpZWxkU2VsZWN0aW9uKCkge1xuICAgIHRoaXMub3BlbmVkID0gIXRoaXMub3BlbmVkO1xuICAgIGlmICh0aGlzLm9wZW5lZCkge1xuICAgICAgdGhpcy5vcGVuV2l0aFRlbXBsYXRlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQ29uZmlnQWN0aW9ucy5jbG9zZU92ZXJsYXkoeyBpZDogdGhpcy5jb25zdHJ1Y3Rvci5uYW1lIH0pKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5XaXRoVGVtcGxhdGUoKSB7XG4gICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZShcbiAgICAgIG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICAgIGJhY2tkcm9wQ2xhc3M6ICdiYWNrZHJvcCcsXG4gICAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5wb3NpdGlvbigpLmdsb2JhbCgpLmNlbnRlckhvcml6b250YWxseSgpLmNlbnRlclZlcnRpY2FsbHkoKSxcbiAgICAgICAgbWluSGVpZ2h0OiAnMzAwcHgnLFxuICAgICAgICBtYXhIZWlnaHQ6ICc2MDBweCcsXG4gICAgICAgIHdpZHRoOiAnNTAwcHgnXG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChDb25maWdBY3Rpb25zLmFkZGluZ092ZXJsYXkoeyBpZDogdGhpcy5jb25zdHJ1Y3Rvci5uYW1lIH0pKTtcbiAgICB0aGlzLm92ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgoXykgPT4gdGhpcy50b2dnbGVGaWVsZFNlbGVjdGlvbigpKTtcbiAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLmZpZWxkU2VsZWN0aW9uVHBsLCB0aGlzLnZpZXdDb250YWluZXJSZWYpKTtcbiAgfVxuXG4gIG9uQ2hhbmdlRmllbGQoY29uZGl0aW9uOiBNdWx0aUNsYXNzQ29uZGl0aW9uLCBmaWVsZDogc3RyaW5nKSB7XG4gICAgaWYgKGNvbmRpdGlvbi5maWVsZCAhPT0gZmllbGQpIHtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goU2VhcmNoTXVsdGlDbGFzc0FjdGlvbnMudXBkYXRlQ29uZGl0aW9uRmllbGQoeyBjb25kaXRpb25JZDogY29uZGl0aW9uLmlkLCBmaWVsZCB9KSk7XG4gICAgfVxuICAgIHRoaXMudG9nZ2xlRmllbGRTZWxlY3Rpb24oKTtcbiAgfVxuXG4gIG9uQ2xvc2VNb2RhbCgpIHtcbiAgICB0aGlzLnRvZ2dsZUZpZWxkU2VsZWN0aW9uKCk7XG4gIH1cblxuICBvblVwZGF0ZVZhbHVlKGNvbmRpdGlvbjogTXVsdGlDbGFzc0NvbmRpdGlvbikge1xuICAgIGxldCBmb3JtVmFsdWUsIGZvcm1TZWNvbmRWYWx1ZTtcbiAgICBpZiAoY29uZGl0aW9uLmlzRGF0ZSAmJiB0eXBlb2YgdGhpcy5mb3JtLmdldCgndmFsdWUnKT8udmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICBmb3JtVmFsdWUgPSB0aGlzLmZvcm0uZ2V0KCd2YWx1ZScpPy52YWx1ZS5zdGFydDtcbiAgICAgIGZvcm1TZWNvbmRWYWx1ZSA9IHRoaXMuZm9ybS5nZXQoJ3ZhbHVlJyk/LnZhbHVlLmVuZDtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9ybVZhbHVlID0gdGhpcy5mb3JtLmdldCgndmFsdWUnKT8udmFsdWU7XG4gICAgICBmb3JtU2Vjb25kVmFsdWUgPSB0aGlzLmZvcm0uZ2V0KCd1cHBlclZhbHVlJyk/LnZhbHVlO1xuICAgIH1cblxuICAgIGlmIChmb3JtVmFsdWUgIT09IGNvbmRpdGlvbi52YWx1ZSB8fCBmb3JtU2Vjb25kVmFsdWUgIT09IGNvbmRpdGlvbi51cHBlclZhbHVlKSB7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgICBTZWFyY2hNdWx0aUNsYXNzQWN0aW9ucy51cGRhdGVDb25kaXRpb24oe1xuICAgICAgICAgIGNvbmRpdGlvbklkOiBjb25kaXRpb24uaWQsXG4gICAgICAgICAga2V5OiAndmFsdWUnLFxuICAgICAgICAgIHZhbHVlOiBmb3JtVmFsdWUsXG4gICAgICAgICAgdXBwZXJWYWx1ZTogZm9ybVNlY29uZFZhbHVlXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGpvaW4oY2xhc3NlczogQ2xhc3NbXSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNsYXNzZXMubWFwKChjbGF6eikgPT4gY2xhenoubmFtZSkuam9pbignLCAnKTtcbiAgfVxuXG4gIGdldCBoYXNUd29GaWVsZHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybS5nZXQoJ29wZXJhdG9yJyk/LnZhbHVlID09PSAnSU5TSURFJyB8fCB0aGlzLmZvcm0uZ2V0KCdvcGVyYXRvcicpPy52YWx1ZSA9PT0gJ09VVFNJREUnO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZGl0aW9uJCB8IGFzeW5jIGFzIGNvbmRpdGlvblwiPlxuICA8ZGl2IGNsYXNzPVwiby1tdWx0aS1jbGFzcy1jb25kaXRpb25cIj5cbiAgICA8ZGl2IGNsYXNzPVwiby1tdWx0aS1jbGFzcy1jb25kaXRpb25fX2NvbnRlbnRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJvLW11bHRpLWNsYXNzLWNvbmRpdGlvbl9fY29udGVudF9fYWN0aW9uXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5IC1zaXplLXNtIC13aWR0aC1mdWxsXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwic2VsZWN0aW9uIGJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUZpZWxkU2VsZWN0aW9uKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkJCB8IGFzeW5jIGFzIGZpZWxkOyBlbHNlIG5vRmllbGRUcGxcIj5cbiAgICAgICAgICAgIHt7IGZpZWxkLm5hbWUgfX1cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI25vRmllbGRUcGw+e3sgJ0Bwcnkuc2VhcmNoLm11bHRpLnNlbGVjdEZpZWxkJyB8IGkxOG4gfX08L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2xhc3Nlc0xpbmtlZCQgfCBhc3luYyBhcyBjbGFzc2VzTGlua2VkXCI+XG4gICAgICAgICAgPHByeS1pY29uXG4gICAgICAgICAgICBpY29uU3ZnPVwibGlua3NfbGluZVwiXG4gICAgICAgICAgICBbd2lkdGhdPVwiMTVcIlxuICAgICAgICAgICAgW2hlaWdodF09XCIxNVwiXG4gICAgICAgICAgICBzdHlsZT1cImNvbG9yOiBibGFja1wiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLXRvb2x0aXBdPVwiKCdAcHJ5LnNlYXJjaC5tdWx0aS5pbicgfCBpMThuKSArICcgJyArIGpvaW4oY2xhc3Nlc0xpbmtlZClcIlxuICAgICAgICAgID48L3ByeS1pY29uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8bmctY29udGFpbmVyIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgIFtpdGVtc109XCJvcGVyYXRvcnMkIHwgYXN5bmNcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJPcMOpcmF0ZXVyXCJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm9wZXJhdG9yXCJcbiAgICAgICAgICAgIFtpdGVtc0FzT3B0aW9uXT1cInRydWVcIlxuICAgICAgICAgICAgW2xhYmVsVHJhbnNsYXRlXT1cInRydWVcIlxuICAgICAgICAgICAgYmluZFZhbHVlPVwib3BlcmF0b3JcIlxuICAgICAgICAgICAgYmluZExhYmVsPVwidHJhbnNsYXRpb25cIlxuICAgICAgICAgICAgY2xhc3M9XCJhLXByeS1zZWxlY3RcIlxuICAgICAgICAgID48L3ByeS1zZWxlY3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbmRpdGlvbi5pc0RhdGU7IGVsc2UgY2xhc3NpY0lucHV0XCI+XG4gICAgICAgICAgICA8cHJ5LWRhdGUtcGlja2VyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uVXBkYXRlVmFsdWUoY29uZGl0aW9uKVwiXG4gICAgICAgICAgICAgIFtyYW5nZVBpY2tlcl09XCJoYXNUd29GaWVsZHNcIlxuICAgICAgICAgICAgICBbcm91bmRTZWxlY3Rpb25dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFt0aW1lUGlja2VyXT1cInRydWVcIlxuICAgICAgICAgICAgPjwvcHJ5LWRhdGUtcGlja2VyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY2xhc3NpY0lucHV0PlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiXG4gICAgICAgICAgICAgICAgKGhhc1R3b0ZpZWxkcyA/ICdAcHJ5LnNlYXJjaC5wbGFjZWhvbGRlci5taW5WYWx1ZScgOiAnQHByeS5zZWFyY2gucGxhY2Vob2xkZXIuc2VhcmNoJykgfCBpMThuXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cIm9uVXBkYXRlVmFsdWUoY29uZGl0aW9uKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc1R3b0ZpZWxkc1wiPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInQHByeS5zZWFyY2gucGxhY2Vob2xkZXIubWF4VmFsdWUnIHwgaTE4blwiXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidXBwZXJWYWx1ZVwiXG4gICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cIm9uVXBkYXRlVmFsdWUoY29uZGl0aW9uKVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbCBhLWxhYmVsLS1oZWxwIC1lcnJvclwiICpuZ0lmPVwiZm9ybVZhbHVlPy5lcnJvcnM/LlsncmVxdWlyZWQnXSAmJiBmb3JtVmFsdWU/LnRvdWNoZWRcIj5cbiAgICAgICAgICAgIHt7ICdAcHJ5LnNlYXJjaC5tdWx0aS5yZXF1aXJlZEVycm9yJyB8IGkxOG4gfX1cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cIm8tbXVsdGktY2xhc3MtY29uZGl0aW9uX19kZWxldGUtY29udGVudFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5vdExhc3RDb25kaXRpb24kIHwgYXN5bmM7IGVsc2UgY2Fubm90RGVsZXRlXCI+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYS1idG4gYS1idG4tLWljb24tb25seVwiPlxuICAgICAgICAgIDxwcnktaWNvblxuICAgICAgICAgICAgaWNvblN2Zz1cImRlbGV0ZVwiXG4gICAgICAgICAgICBbaGVpZ2h0XT1cIjIwXCJcbiAgICAgICAgICAgIFt3aWR0aF09XCIyMFwiXG4gICAgICAgICAgICBbYW5pbWF0aW9uXT1cImZhbHNlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvblJlbW92ZUNvbmRpdGlvbihjb25kaXRpb24pXCJcbiAgICAgICAgICA+PC9wcnktaWNvbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+e3sgJ0BwcnkuYWN0aW9uLmRlbGV0ZScgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxuZy10ZW1wbGF0ZSAjY2Fubm90RGVsZXRlPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhLWJ0biBhLWJ0bi0taWNvbi1vbmx5XCIgZGlzYWJsZWQ+XG4gICAgICAgIDxwcnktaWNvbiBbaGVpZ2h0XT1cIjIwXCIgW3dpZHRoXT1cIjIwXCIgaWNvblN2Zz1cImRlbGV0ZVwiPjwvcHJ5LWljb24+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj57eyAnQHByeS5hY3Rpb24uZGVsZXRlJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cblxuICA8bmctdGVtcGxhdGUgI2ZpZWxkU2VsZWN0aW9uVHBsPlxuICAgIDxwcnktbXVsdGktY2xhc3MtZmllbGQtc2VsZWN0aW9uXG4gICAgICBbY29uZGl0aW9uSWRdPVwiY29uZGl0aW9uLmlkXCJcbiAgICAgIChjbG9zZU1vZGFsKT1cIm9uQ2xvc2VNb2RhbCgpXCJcbiAgICAgIChzZWxlY3RGaWVsZENoYW5nZSk9XCJvbkNoYW5nZUZpZWxkKGNvbmRpdGlvbiwgJGV2ZW50KVwiXG4gICAgPjwvcHJ5LW11bHRpLWNsYXNzLWZpZWxkLXNlbGVjdGlvbj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctY29udGFpbmVyPlxuIl19
@@ -28,10 +28,10 @@ export class PrySearchMultiClassComponent {
28
28
  this.store.dispatch(SearchMultiClassActions.updateMultiType({ multiType }));
29
29
  }
30
30
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PrySearchMultiClassComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
31
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: PrySearchMultiClassComponent, selector: "pry-search-multi-class", ngImport: i0, template: "<div class=\"o-search-multi-class\">\n <div class=\"o-search-multi-class__header\">\n <h3 class=\"a-h3\">{{ '@pry.search.multi.title' | i18n }}</h3>\n <div class=\"\" [pryOverlay]=\"optionOverlay\" [(overlayOpen)]=\"optionsOpen\" (click)=\"optionsOpen = !optionsOpen\">\n <button\n class=\"a-btn a-btn--icon-text\"\n [pryTooltip]=\"infoTooltip\"\n pryTooltipPosition=\"bottom\"\n aria-describedby=\"infoTooltip_searchMulticlass\"\n >\n {{ '@pry.search.multi.options' | i18n }}\n <pry-icon iconSvg=\"tune\" [width]=\"16\" [height]=\"16\" [animation]=\"false\"></pry-icon>\n </button>\n </div>\n <ng-template #optionOverlay>\n <div class=\"o-search-multi-class__options\">\n <pry-toggle\n [ngModel]=\"(multiType$ | async) === 'OR'\"\n [leftword]=\"'@pry.search.type.or' | i18n\"\n [rightword]=\"'@pry.search.type.and' | i18n\"\n [alwaysActive]=\"true\"\n (ngModelChange)=\"onChangeMultiType($event)\"\n >{{ '@pry.search.multi.multiType' | i18n }}</pry-toggle\n >\n </div>\n </ng-template>\n </div>\n\n <div class=\"o-search-multi-class__conditions-wrapper\">\n <div class=\"o-search-multi-class__conditions\">\n <ng-container *ngFor=\"let condition of conditions$ | async\">\n <pry-multi-class-condition [id]=\"condition.id\"></pry-multi-class-condition>\n </ng-container>\n </div>\n <div class=\"o-search-multi-class__add-condition\">\n <button (click)=\"onAddCondition()\" class=\"a-btn a-btn--secondary -size-sm\">\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"add\"></pry-icon>\n {{ '@pry.search.multi.addCondition' | i18n }}\n </button>\n </div>\n </div>\n</div>\n\n<ng-template #infoTooltip>\n <div class=\"m-tooltip\" role=\"tooltip\" id=\"infoTooltip_searchMulticlass\">\n <span class=\"m-tooltip__text\"> Options suppl\u00E9mentaires </span>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i3.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.PryToggleComponent, selector: "pry-toggle", inputs: ["alwaysActive", "disabled", "mode", "size", "dir", "leftword", "rightword"] }, { kind: "directive", type: i3.PryTooltipDirective, selector: "[pryTooltip]", inputs: ["pryTooltip", "styleReversed", "pryTooltipContext", "pryTooltipPosition", "pryTooltipShowDelay"] }, { kind: "directive", type: i3.PryOverlayDirective, selector: "[pryOverlay]", inputs: ["pryOverlay", "styleReversed", "pryOverlaySticky", "pryOverlayNoPadding", "pryOverlayPosition", "overlayOpen", "hasBackdrop"], outputs: ["overlayOpenChange"] }, { kind: "component", type: i5.MultiClassConditionComponent, selector: "pry-multi-class-condition", inputs: ["id"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }] }); }
31
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: PrySearchMultiClassComponent, selector: "pry-search-multi-class", ngImport: i0, template: "<div class=\"o-search-multi-class\">\n <div class=\"o-search-multi-class__header\">\n <h3 class=\"a-h3\">{{ '@pry.search.multi.title' | i18n }}</h3>\n <div\n class=\"a-tooltip\"\n [attr.data-tooltip]=\"'@pry.search.multi.extraOptions' | i18n\"\n data-tooltip-position=\"bottom\"\n [pryOverlay]=\"optionOverlay\"\n [(overlayOpen)]=\"optionsOpen\"\n (click)=\"optionsOpen = !optionsOpen\"\n >\n <button class=\"a-btn a-btn--icon-text\">\n {{ '@pry.search.multi.options' | i18n }}\n <pry-icon iconSvg=\"tune\" [width]=\"16\" [height]=\"16\" [animation]=\"false\"></pry-icon>\n </button>\n </div>\n <ng-template #optionOverlay>\n <div class=\"o-search-multi-class__options\">\n <pry-toggle\n [ngModel]=\"(multiType$ | async) === 'OR'\"\n [leftword]=\"'@pry.search.type.or' | i18n\"\n [rightword]=\"'@pry.search.type.and' | i18n\"\n [alwaysActive]=\"true\"\n (ngModelChange)=\"onChangeMultiType($event)\"\n >{{ '@pry.search.multi.multiType' | i18n }}</pry-toggle\n >\n </div>\n </ng-template>\n </div>\n\n <div class=\"o-search-multi-class__conditions-wrapper\">\n <div class=\"o-search-multi-class__conditions\">\n <ng-container *ngFor=\"let condition of conditions$ | async\">\n <pry-multi-class-condition [id]=\"condition.id\"></pry-multi-class-condition>\n </ng-container>\n </div>\n <div class=\"o-search-multi-class__add-condition\">\n <button (click)=\"onAddCondition()\" class=\"a-btn a-btn--secondary -size-sm\">\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"add\"></pry-icon>\n {{ '@pry.search.multi.addCondition' | i18n }}\n </button>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i3.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.PryToggleComponent, selector: "pry-toggle", inputs: ["alwaysActive", "disabled", "mode", "size", "dir", "leftword", "rightword"] }, { kind: "directive", type: i3.PryOverlayDirective, selector: "[pryOverlay]", inputs: ["pryOverlay", "styleReversed", "pryOverlaySticky", "pryOverlayNoPadding", "pryOverlayPosition", "overlayOpen", "hasBackdrop"], outputs: ["overlayOpenChange"] }, { kind: "component", type: i5.MultiClassConditionComponent, selector: "pry-multi-class-condition", inputs: ["id"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }] }); }
32
32
  }
33
33
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PrySearchMultiClassComponent, decorators: [{
34
34
  type: Component,
35
- args: [{ selector: 'pry-search-multi-class', template: "<div class=\"o-search-multi-class\">\n <div class=\"o-search-multi-class__header\">\n <h3 class=\"a-h3\">{{ '@pry.search.multi.title' | i18n }}</h3>\n <div class=\"\" [pryOverlay]=\"optionOverlay\" [(overlayOpen)]=\"optionsOpen\" (click)=\"optionsOpen = !optionsOpen\">\n <button\n class=\"a-btn a-btn--icon-text\"\n [pryTooltip]=\"infoTooltip\"\n pryTooltipPosition=\"bottom\"\n aria-describedby=\"infoTooltip_searchMulticlass\"\n >\n {{ '@pry.search.multi.options' | i18n }}\n <pry-icon iconSvg=\"tune\" [width]=\"16\" [height]=\"16\" [animation]=\"false\"></pry-icon>\n </button>\n </div>\n <ng-template #optionOverlay>\n <div class=\"o-search-multi-class__options\">\n <pry-toggle\n [ngModel]=\"(multiType$ | async) === 'OR'\"\n [leftword]=\"'@pry.search.type.or' | i18n\"\n [rightword]=\"'@pry.search.type.and' | i18n\"\n [alwaysActive]=\"true\"\n (ngModelChange)=\"onChangeMultiType($event)\"\n >{{ '@pry.search.multi.multiType' | i18n }}</pry-toggle\n >\n </div>\n </ng-template>\n </div>\n\n <div class=\"o-search-multi-class__conditions-wrapper\">\n <div class=\"o-search-multi-class__conditions\">\n <ng-container *ngFor=\"let condition of conditions$ | async\">\n <pry-multi-class-condition [id]=\"condition.id\"></pry-multi-class-condition>\n </ng-container>\n </div>\n <div class=\"o-search-multi-class__add-condition\">\n <button (click)=\"onAddCondition()\" class=\"a-btn a-btn--secondary -size-sm\">\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"add\"></pry-icon>\n {{ '@pry.search.multi.addCondition' | i18n }}\n </button>\n </div>\n </div>\n</div>\n\n<ng-template #infoTooltip>\n <div class=\"m-tooltip\" role=\"tooltip\" id=\"infoTooltip_searchMulticlass\">\n <span class=\"m-tooltip__text\"> Options suppl\u00E9mentaires </span>\n </div>\n</ng-template>\n" }]
35
+ args: [{ selector: 'pry-search-multi-class', template: "<div class=\"o-search-multi-class\">\n <div class=\"o-search-multi-class__header\">\n <h3 class=\"a-h3\">{{ '@pry.search.multi.title' | i18n }}</h3>\n <div\n class=\"a-tooltip\"\n [attr.data-tooltip]=\"'@pry.search.multi.extraOptions' | i18n\"\n data-tooltip-position=\"bottom\"\n [pryOverlay]=\"optionOverlay\"\n [(overlayOpen)]=\"optionsOpen\"\n (click)=\"optionsOpen = !optionsOpen\"\n >\n <button class=\"a-btn a-btn--icon-text\">\n {{ '@pry.search.multi.options' | i18n }}\n <pry-icon iconSvg=\"tune\" [width]=\"16\" [height]=\"16\" [animation]=\"false\"></pry-icon>\n </button>\n </div>\n <ng-template #optionOverlay>\n <div class=\"o-search-multi-class__options\">\n <pry-toggle\n [ngModel]=\"(multiType$ | async) === 'OR'\"\n [leftword]=\"'@pry.search.type.or' | i18n\"\n [rightword]=\"'@pry.search.type.and' | i18n\"\n [alwaysActive]=\"true\"\n (ngModelChange)=\"onChangeMultiType($event)\"\n >{{ '@pry.search.multi.multiType' | i18n }}</pry-toggle\n >\n </div>\n </ng-template>\n </div>\n\n <div class=\"o-search-multi-class__conditions-wrapper\">\n <div class=\"o-search-multi-class__conditions\">\n <ng-container *ngFor=\"let condition of conditions$ | async\">\n <pry-multi-class-condition [id]=\"condition.id\"></pry-multi-class-condition>\n </ng-container>\n </div>\n <div class=\"o-search-multi-class__add-condition\">\n <button (click)=\"onAddCondition()\" class=\"a-btn a-btn--secondary -size-sm\">\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"add\"></pry-icon>\n {{ '@pry.search.multi.addCondition' | i18n }}\n </button>\n </div>\n </div>\n</div>\n" }]
36
36
  }], ctorParameters: function () { return [{ type: i1.Store }]; } });
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLW11bHRpLWNsYXNzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3NlYXJjaC9zZWFyY2gtbXVsdGktY2xhc3MvY29tcG9uZW50cy9zZWFyY2gtbXVsdGktY2xhc3Mvc2VhcmNoLW11bHRpLWNsYXNzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3NlYXJjaC9zZWFyY2gtbXVsdGktY2xhc3MvY29tcG9uZW50cy9zZWFyY2gtbXVsdGktY2xhc3Mvc2VhcmNoLW11bHRpLWNsYXNzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHMUMsT0FBTyxFQUFjLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNqRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7OztBQU1yRixNQUFNLE9BQU8sNEJBQTRCO0lBTXZDLFlBQW9CLEtBQWlCO1FBQWpCLFVBQUssR0FBTCxLQUFLLENBQVk7UUFGckMsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFHbEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMzRSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQ3RELElBQUksQ0FBQyxVQUFVLEVBQUUsTUFBTSxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDbkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsdUJBQXVCLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO2FBQ3JFO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLHVCQUF1QixDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsaUJBQWlCLENBQUMsR0FBUTtRQUN4QixNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLHVCQUF1QixDQUFDLGVBQWUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5RSxDQUFDOzhHQXZCVSw0QkFBNEI7a0dBQTVCLDRCQUE0Qiw4RENYekMsNDhEQWdEQTs7MkZEckNhLDRCQUE0QjtrQkFKeEMsU0FBUzsrQkFDRSx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgTXVsdGlDbGFzc0NvbmRpdGlvbiB9IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0YWtlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTZWFyY2hNdWx0aUNsYXNzQWN0aW9ucyB9IGZyb20gJy4uLy4uL3N0b3JlL3NlYXJjaC1tdWx0aS1jbGFzcy5hY3Rpb25zJztcbmltcG9ydCB7IFNlYXJjaE11bHRpQ2xhc3NTZWxlY3RvcnMgfSBmcm9tICcuLi8uLi9zdG9yZS9zZWFyY2gtbXVsdGktY2xhc3Muc2VsZWN0b3JzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LXNlYXJjaC1tdWx0aS1jbGFzcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2gtbXVsdGktY2xhc3MuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFByeVNlYXJjaE11bHRpQ2xhc3NDb21wb25lbnQge1xuICBjb25kaXRpb25zJDogT2JzZXJ2YWJsZTxNdWx0aUNsYXNzQ29uZGl0aW9uW10+O1xuICBtdWx0aVR5cGUkOiBPYnNlcnZhYmxlPCdBTkQnIHwgJ09SJz47XG5cbiAgb3B0aW9uc09wZW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0b3JlOiBTdG9yZTxhbnk+KSB7XG4gICAgdGhpcy5jb25kaXRpb25zJCA9IHRoaXMuc3RvcmUuc2VsZWN0KFNlYXJjaE11bHRpQ2xhc3NTZWxlY3RvcnMuY29uZGl0aW9ucyk7XG4gICAgdGhpcy5tdWx0aVR5cGUkID0gdGhpcy5zdG9yZS5zZWxlY3QoU2VhcmNoTXVsdGlDbGFzc1NlbGVjdG9ycy5tdWx0aVR5cGUpO1xuICAgIHRoaXMuY29uZGl0aW9ucyQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKGNvbmRpdGlvbnMpID0+IHtcbiAgICAgIGlmICgoY29uZGl0aW9ucz8ubGVuZ3RoID8/IDApID09PSAwKSB7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goU2VhcmNoTXVsdGlDbGFzc0FjdGlvbnMuYWRkTmV3RW1wdHlDb25kaXRpb24oKSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBvbkFkZENvbmRpdGlvbigpIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFNlYXJjaE11bHRpQ2xhc3NBY3Rpb25zLmFkZE5ld0VtcHR5Q29uZGl0aW9uKCkpO1xuICB9XG5cbiAgb25DaGFuZ2VNdWx0aVR5cGUoZXZ0OiBhbnkpIHtcbiAgICBjb25zdCBtdWx0aVR5cGUgPSBldnQgPyAnT1InIDogJ0FORCc7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChTZWFyY2hNdWx0aUNsYXNzQWN0aW9ucy51cGRhdGVNdWx0aVR5cGUoeyBtdWx0aVR5cGUgfSkpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiby1zZWFyY2gtbXVsdGktY2xhc3NcIj5cbiAgPGRpdiBjbGFzcz1cIm8tc2VhcmNoLW11bHRpLWNsYXNzX19oZWFkZXJcIj5cbiAgICA8aDMgY2xhc3M9XCJhLWgzXCI+e3sgJ0Bwcnkuc2VhcmNoLm11bHRpLnRpdGxlJyB8IGkxOG4gfX08L2gzPlxuICAgIDxkaXYgY2xhc3M9XCJcIiBbcHJ5T3ZlcmxheV09XCJvcHRpb25PdmVybGF5XCIgWyhvdmVybGF5T3BlbildPVwib3B0aW9uc09wZW5cIiAoY2xpY2spPVwib3B0aW9uc09wZW4gPSAhb3B0aW9uc09wZW5cIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0taWNvbi10ZXh0XCJcbiAgICAgICAgW3ByeVRvb2x0aXBdPVwiaW5mb1Rvb2x0aXBcIlxuICAgICAgICBwcnlUb29sdGlwUG9zaXRpb249XCJib3R0b21cIlxuICAgICAgICBhcmlhLWRlc2NyaWJlZGJ5PVwiaW5mb1Rvb2x0aXBfc2VhcmNoTXVsdGljbGFzc1wiXG4gICAgICA+XG4gICAgICAgIHt7ICdAcHJ5LnNlYXJjaC5tdWx0aS5vcHRpb25zJyB8IGkxOG4gfX1cbiAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJ0dW5lXCIgW3dpZHRoXT1cIjE2XCIgW2hlaWdodF09XCIxNlwiIFthbmltYXRpb25dPVwiZmFsc2VcIj48L3ByeS1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPG5nLXRlbXBsYXRlICNvcHRpb25PdmVybGF5PlxuICAgICAgPGRpdiBjbGFzcz1cIm8tc2VhcmNoLW11bHRpLWNsYXNzX19vcHRpb25zXCI+XG4gICAgICAgIDxwcnktdG9nZ2xlXG4gICAgICAgICAgW25nTW9kZWxdPVwiKG11bHRpVHlwZSQgfCBhc3luYykgPT09ICdPUidcIlxuICAgICAgICAgIFtsZWZ0d29yZF09XCInQHByeS5zZWFyY2gudHlwZS5vcicgfCBpMThuXCJcbiAgICAgICAgICBbcmlnaHR3b3JkXT1cIidAcHJ5LnNlYXJjaC50eXBlLmFuZCcgfCBpMThuXCJcbiAgICAgICAgICBbYWx3YXlzQWN0aXZlXT1cInRydWVcIlxuICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlTXVsdGlUeXBlKCRldmVudClcIlxuICAgICAgICAgID57eyAnQHByeS5zZWFyY2gubXVsdGkubXVsdGlUeXBlJyB8IGkxOG4gfX08L3ByeS10b2dnbGVcbiAgICAgICAgPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cIm8tc2VhcmNoLW11bHRpLWNsYXNzX19jb25kaXRpb25zLXdyYXBwZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiby1zZWFyY2gtbXVsdGktY2xhc3NfX2NvbmRpdGlvbnNcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbmRpdGlvbiBvZiBjb25kaXRpb25zJCB8IGFzeW5jXCI+XG4gICAgICAgIDxwcnktbXVsdGktY2xhc3MtY29uZGl0aW9uIFtpZF09XCJjb25kaXRpb24uaWRcIj48L3ByeS1tdWx0aS1jbGFzcy1jb25kaXRpb24+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiby1zZWFyY2gtbXVsdGktY2xhc3NfX2FkZC1jb25kaXRpb25cIj5cbiAgICAgIDxidXR0b24gKGNsaWNrKT1cIm9uQWRkQ29uZGl0aW9uKClcIiBjbGFzcz1cImEtYnRuIGEtYnRuLS1zZWNvbmRhcnkgLXNpemUtc21cIj5cbiAgICAgICAgPHByeS1pY29uIFtoZWlnaHRdPVwiMjBcIiBbd2lkdGhdPVwiMjBcIiBpY29uU3ZnPVwiYWRkXCI+PC9wcnktaWNvbj5cbiAgICAgICAge3sgJ0Bwcnkuc2VhcmNoLm11bHRpLmFkZENvbmRpdGlvbicgfCBpMThuIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNpbmZvVG9vbHRpcD5cbiAgPGRpdiBjbGFzcz1cIm0tdG9vbHRpcFwiIHJvbGU9XCJ0b29sdGlwXCIgaWQ9XCJpbmZvVG9vbHRpcF9zZWFyY2hNdWx0aWNsYXNzXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJtLXRvb2x0aXBfX3RleHRcIj4gT3B0aW9ucyBzdXBwbMOpbWVudGFpcmVzIDwvc3Bhbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLW11bHRpLWNsYXNzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3NlYXJjaC9zZWFyY2gtbXVsdGktY2xhc3MvY29tcG9uZW50cy9zZWFyY2gtbXVsdGktY2xhc3Mvc2VhcmNoLW11bHRpLWNsYXNzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3NlYXJjaC9zZWFyY2gtbXVsdGktY2xhc3MvY29tcG9uZW50cy9zZWFyY2gtbXVsdGktY2xhc3Mvc2VhcmNoLW11bHRpLWNsYXNzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHMUMsT0FBTyxFQUFjLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNqRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7OztBQU1yRixNQUFNLE9BQU8sNEJBQTRCO0lBTXZDLFlBQW9CLEtBQWlCO1FBQWpCLFVBQUssR0FBTCxLQUFLLENBQVk7UUFGckMsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFHbEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMzRSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQ3RELElBQUksQ0FBQyxVQUFVLEVBQUUsTUFBTSxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDbkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsdUJBQXVCLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO2FBQ3JFO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLHVCQUF1QixDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsaUJBQWlCLENBQUMsR0FBUTtRQUN4QixNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLHVCQUF1QixDQUFDLGVBQWUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5RSxDQUFDOzhHQXZCVSw0QkFBNEI7a0dBQTVCLDRCQUE0Qiw4RENYekMsd3ZEQTRDQTs7MkZEakNhLDRCQUE0QjtrQkFKeEMsU0FBUzsrQkFDRSx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgTXVsdGlDbGFzc0NvbmRpdGlvbiB9IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0YWtlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTZWFyY2hNdWx0aUNsYXNzQWN0aW9ucyB9IGZyb20gJy4uLy4uL3N0b3JlL3NlYXJjaC1tdWx0aS1jbGFzcy5hY3Rpb25zJztcbmltcG9ydCB7IFNlYXJjaE11bHRpQ2xhc3NTZWxlY3RvcnMgfSBmcm9tICcuLi8uLi9zdG9yZS9zZWFyY2gtbXVsdGktY2xhc3Muc2VsZWN0b3JzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LXNlYXJjaC1tdWx0aS1jbGFzcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2gtbXVsdGktY2xhc3MuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFByeVNlYXJjaE11bHRpQ2xhc3NDb21wb25lbnQge1xuICBjb25kaXRpb25zJDogT2JzZXJ2YWJsZTxNdWx0aUNsYXNzQ29uZGl0aW9uW10+O1xuICBtdWx0aVR5cGUkOiBPYnNlcnZhYmxlPCdBTkQnIHwgJ09SJz47XG5cbiAgb3B0aW9uc09wZW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0b3JlOiBTdG9yZTxhbnk+KSB7XG4gICAgdGhpcy5jb25kaXRpb25zJCA9IHRoaXMuc3RvcmUuc2VsZWN0KFNlYXJjaE11bHRpQ2xhc3NTZWxlY3RvcnMuY29uZGl0aW9ucyk7XG4gICAgdGhpcy5tdWx0aVR5cGUkID0gdGhpcy5zdG9yZS5zZWxlY3QoU2VhcmNoTXVsdGlDbGFzc1NlbGVjdG9ycy5tdWx0aVR5cGUpO1xuICAgIHRoaXMuY29uZGl0aW9ucyQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKGNvbmRpdGlvbnMpID0+IHtcbiAgICAgIGlmICgoY29uZGl0aW9ucz8ubGVuZ3RoID8/IDApID09PSAwKSB7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goU2VhcmNoTXVsdGlDbGFzc0FjdGlvbnMuYWRkTmV3RW1wdHlDb25kaXRpb24oKSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBvbkFkZENvbmRpdGlvbigpIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFNlYXJjaE11bHRpQ2xhc3NBY3Rpb25zLmFkZE5ld0VtcHR5Q29uZGl0aW9uKCkpO1xuICB9XG5cbiAgb25DaGFuZ2VNdWx0aVR5cGUoZXZ0OiBhbnkpIHtcbiAgICBjb25zdCBtdWx0aVR5cGUgPSBldnQgPyAnT1InIDogJ0FORCc7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChTZWFyY2hNdWx0aUNsYXNzQWN0aW9ucy51cGRhdGVNdWx0aVR5cGUoeyBtdWx0aVR5cGUgfSkpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiby1zZWFyY2gtbXVsdGktY2xhc3NcIj5cbiAgPGRpdiBjbGFzcz1cIm8tc2VhcmNoLW11bHRpLWNsYXNzX19oZWFkZXJcIj5cbiAgICA8aDMgY2xhc3M9XCJhLWgzXCI+e3sgJ0Bwcnkuc2VhcmNoLm11bHRpLnRpdGxlJyB8IGkxOG4gfX08L2gzPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiYS10b29sdGlwXCJcbiAgICAgIFthdHRyLmRhdGEtdG9vbHRpcF09XCInQHByeS5zZWFyY2gubXVsdGkuZXh0cmFPcHRpb25zJyB8IGkxOG5cIlxuICAgICAgZGF0YS10b29sdGlwLXBvc2l0aW9uPVwiYm90dG9tXCJcbiAgICAgIFtwcnlPdmVybGF5XT1cIm9wdGlvbk92ZXJsYXlcIlxuICAgICAgWyhvdmVybGF5T3BlbildPVwib3B0aW9uc09wZW5cIlxuICAgICAgKGNsaWNrKT1cIm9wdGlvbnNPcGVuID0gIW9wdGlvbnNPcGVuXCJcbiAgICA+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYS1idG4gYS1idG4tLWljb24tdGV4dFwiPlxuICAgICAgICB7eyAnQHByeS5zZWFyY2gubXVsdGkub3B0aW9ucycgfCBpMThuIH19XG4gICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwidHVuZVwiIFt3aWR0aF09XCIxNlwiIFtoZWlnaHRdPVwiMTZcIiBbYW5pbWF0aW9uXT1cImZhbHNlXCI+PC9wcnktaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxuZy10ZW1wbGF0ZSAjb3B0aW9uT3ZlcmxheT5cbiAgICAgIDxkaXYgY2xhc3M9XCJvLXNlYXJjaC1tdWx0aS1jbGFzc19fb3B0aW9uc1wiPlxuICAgICAgICA8cHJ5LXRvZ2dsZVxuICAgICAgICAgIFtuZ01vZGVsXT1cIihtdWx0aVR5cGUkIHwgYXN5bmMpID09PSAnT1InXCJcbiAgICAgICAgICBbbGVmdHdvcmRdPVwiJ0Bwcnkuc2VhcmNoLnR5cGUub3InIHwgaTE4blwiXG4gICAgICAgICAgW3JpZ2h0d29yZF09XCInQHByeS5zZWFyY2gudHlwZS5hbmQnIHwgaTE4blwiXG4gICAgICAgICAgW2Fsd2F5c0FjdGl2ZV09XCJ0cnVlXCJcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZU11bHRpVHlwZSgkZXZlbnQpXCJcbiAgICAgICAgICA+e3sgJ0Bwcnkuc2VhcmNoLm11bHRpLm11bHRpVHlwZScgfCBpMThuIH19PC9wcnktdG9nZ2xlXG4gICAgICAgID5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJvLXNlYXJjaC1tdWx0aS1jbGFzc19fY29uZGl0aW9ucy13cmFwcGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cIm8tc2VhcmNoLW11bHRpLWNsYXNzX19jb25kaXRpb25zXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb25kaXRpb24gb2YgY29uZGl0aW9ucyQgfCBhc3luY1wiPlxuICAgICAgICA8cHJ5LW11bHRpLWNsYXNzLWNvbmRpdGlvbiBbaWRdPVwiY29uZGl0aW9uLmlkXCI+PC9wcnktbXVsdGktY2xhc3MtY29uZGl0aW9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm8tc2VhcmNoLW11bHRpLWNsYXNzX19hZGQtY29uZGl0aW9uXCI+XG4gICAgICA8YnV0dG9uIChjbGljayk9XCJvbkFkZENvbmRpdGlvbigpXCIgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tc2Vjb25kYXJ5IC1zaXplLXNtXCI+XG4gICAgICAgIDxwcnktaWNvbiBbaGVpZ2h0XT1cIjIwXCIgW3dpZHRoXT1cIjIwXCIgaWNvblN2Zz1cImFkZFwiPjwvcHJ5LWljb24+XG4gICAgICAgIHt7ICdAcHJ5LnNlYXJjaC5tdWx0aS5hZGRDb25kaXRpb24nIHwgaTE4biB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -136,11 +136,11 @@ export class PrySearchToolsComponent {
136
136
  this.store.dispatch(DataSourceActions.namedQuery.updateCurrentEdit({ currentEdit: { visibility: $event } }));
137
137
  }
138
138
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PrySearchToolsComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
139
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: PrySearchToolsComponent, selector: "pry-search-tools", host: { properties: { "class.o-pry-search-tools-wrapper": "this.class", "class.is-close": "this.searchToolsClose" } }, ngImport: i0, template: "<div\n class=\"o-pry-search-tools\"\n [class.is-close]=\"searchToolsClose\"\n [class.is-mono]=\"isNewMono || (isEditMono$ | async)\"\n>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text -back\"\n (click)=\"onSearchTools()\"\n aria-pressed=\"false\"\n *ngIf=\"((editInProgress$ | async) && !(isRename$ | async)) || isSearchCriteria\"\n [pryTooltip]=\"infoTooltipBack\"\n pryTooltipPosition=\"bottom\"\n aria-describedby=\"infoTooltipBack_searchTools\"\n >\n <pry-icon iconSvg=\"arrow_back\" [width]=\"24\" [height]=\"24\" [animation]=\"false\"></pry-icon>\n <span>{{ '@pry.search.button.backSearch' | i18n }}</span>\n </button>\n <div class=\"o-pry-search-tools__content\" [class.is-close]=\"searchToolsClose\">\n <button\n *ngIf=\"((editInProgress$ | async) && !(isRename$ | async)) || isSearchCriteria\"\n class=\"a-btn a-btn--icon-text -link-like u-self-end\"\n (click)=\"reset()\"\n id=\"btn_reset\"\n >\n <pry-icon iconSvg=\"reset\" [width]=\"18\" [height]=\"18\"></pry-icon>\n {{ '@pry.search.button.reset' | i18n }}\n </button>\n <ng-container *ngIf=\"editInProgress$ | async\">\n <pry-share [ngModel]=\"(currentEdit$ | async)?.visibility\" (ngModelChange)=\"updateVisibility($event)\"></pry-share>\n </ng-container>\n <ng-container *ngIf=\"(editInProgress$ | async) && !(isRename$ | async) && !(loading$ | async); else noEdit\">\n <pry-edit-named-query\n (searchFulltextChange)=\"onSearchFulltextChange($event)\"\n (cancelled)=\"onSearchTools()\"\n ></pry-edit-named-query>\n </ng-container>\n <ng-template #noEdit>\n <ng-container *ngIf=\"isSearchCriteria && !(loading$ | async); else noSearch\">\n <pry-toggle\n class=\"o-pry-search-tools__content__toggle\"\n [ngModel]=\"isSearchMono\"\n (ngModelChange)=\"onMonoSearch()\"\n [alwaysActive]=\"true\"\n mode=\"action\"\n >\n {{ (isSearchMono ? '@pry.search.button.mono' : '@pry.search.button.multi') | i18n }}\n </pry-toggle>\n <div class=\"o-pry-search-tools__content__full\">\n <ng-container *ngIf=\"isSearchMono; else isMultiSearch\">\n <pry-search-mono-class></pry-search-mono-class>\n </ng-container>\n <ng-template #isMultiSearch>\n <pry-search-multi-class></pry-search-multi-class>\n </ng-template>\n </div>\n\n <div class=\"o-pry-search-tools__content__button-search\">\n <ng-container *ngIf=\"isSearchCriteria\">\n <pry-choose-widget (selected)=\"selectWidget($event)\"></pry-choose-widget>\n </ng-container>\n <button class=\"a-btn a-btn--primary\" (click)=\"onSearchTools()\" *ngIf=\"!isSearchCriteria\">\n {{ '@pry.search.button.cancel' | i18n }}\n </button>\n <button\n [disabled]=\"\n (!(searchMultiClassValid$ | async) && !isSearchMono) || (!(searchMonoClassValid$ | async) && isSearchMono)\n \"\n class=\"a-btn a-btn--primary\"\n (click)=\"onSearch()\"\n >\n <pry-icon iconSvg=\"search-line\"></pry-icon>\n {{ '@pry.search.button.search' | i18n }}\n </button>\n </div>\n </ng-container>\n </ng-template>\n\n <ng-template #noSearch>\n <div class=\"o-pry-search-tools__content__full\">\n <pry-search-home\n class=\"o-pry-search-home\"\n [isMoreList]=\"isMoreList\"\n [searchFulltextTpl]=\"searchFulltextTpl\"\n (changeListView)=\"onChangeListView($event)\"\n (changeSearchCriteria)=\"onSearchCriteria()\"\n ></pry-search-home>\n <ng-template #searchFulltextTpl>\n <pry-search-fulltext mode=\"vertical\" (searchChange)=\"onSearchFulltextChange($event)\"></pry-search-fulltext>\n </ng-template>\n </div>\n </ng-template>\n </div>\n <div class=\"o-pry-search-tools__footer\" [class.is-close]=\"searchToolsClose\">\n <pry-save-query-button\n [editInProgress]=\"editInProgress$ | async\"\n [currentEdit]=\"currentEdit$ | async\"\n [currentEditType]=\"currentEditType$ | async\"\n [fulltextValid]=\"isSearchFulltextValid\"\n [multiValid]=\"searchMultiClassValid$ | async\"\n [monoValid]=\"searchMonoClassValid$ | async\"\n [isNotFulltext]=\"isSearchCriteria\"\n [isMonoSearch]=\"isSearchMono\"\n [fulltextSearch]=\"searchFulltextTemp\"\n ></pry-save-query-button>\n </div>\n</div>\n\n<ng-template #infoTooltipBack>\n <div class=\"m-tooltip\" role=\"tooltip\" id=\"infoTooltipBack_searchTools\">\n <span class=\"m-tooltip__text\"> Retour \u00E0 la liste des recherches </span>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.PryToggleComponent, selector: "pry-toggle", inputs: ["alwaysActive", "disabled", "mode", "size", "dir", "leftword", "rightword"] }, { kind: "directive", type: i3.PryTooltipDirective, selector: "[pryTooltip]", inputs: ["pryTooltip", "styleReversed", "pryTooltipContext", "pryTooltipPosition", "pryTooltipShowDelay"] }, { kind: "component", type: i3.PryShareComponent, selector: "pry-share", inputs: ["value", "labelProperty", "valueProperty", "users$"] }, { kind: "component", type: i5.PrySearchHomeComponent, selector: "pry-search-home", inputs: ["searchFulltextTpl", "isMoreList"], outputs: ["changeListView", "changeSearchCriteria"] }, { kind: "component", type: i6.PrySearchMonoClassComponent, selector: "pry-search-mono-class" }, { kind: "component", type: i7.PrySearchMultiClassComponent, selector: "pry-search-multi-class" }, { kind: "component", type: i8.PrySearchFulltextComponent, selector: "pry-search-fulltext", inputs: ["mode", "launchButton", "currentEdit"], outputs: ["searchChange"] }, { kind: "component", type: i9.PrySaveQueryButtonComponent, selector: "pry-save-query-button", inputs: ["editInProgress", "currentEdit", "currentEditType", "fulltextValid", "multiValid", "monoValid", "isNotFulltext", "isMonoSearch", "fulltextSearch", "saveDisabled"] }, { kind: "component", type: i10.EditNamedQueryComponent, selector: "pry-edit-named-query", inputs: ["fromWidget"], outputs: ["searchFulltextChange", "cancelled", "searched"] }, { kind: "component", type: i11.ChooseWidgetComponent, selector: "pry-choose-widget", inputs: ["panelOpen", "mode", "width"], outputs: ["selected"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }] }); }
139
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: PrySearchToolsComponent, selector: "pry-search-tools", host: { properties: { "class.o-pry-search-tools-wrapper": "this.class", "class.is-close": "this.searchToolsClose" } }, ngImport: i0, template: "<div\n class=\"o-pry-search-tools\"\n [class.is-close]=\"searchToolsClose\"\n [class.is-mono]=\"isNewMono || (isEditMono$ | async)\"\n>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text -back a-tooltip\"\n (click)=\"onSearchTools()\"\n aria-pressed=\"false\"\n *ngIf=\"((editInProgress$ | async) && !(isRename$ | async)) || isSearchCriteria\"\n [attr.data-tooltip]=\"'@pry.search.button.backSearch' | i18n\"\n data-tooltip-position=\"bottom\"\n >\n <pry-icon iconSvg=\"arrow_back\" [width]=\"24\" [height]=\"24\" [animation]=\"false\"></pry-icon>\n <span>{{ '@pry.search.button.backSearch' | i18n }}</span>\n </button>\n <div class=\"o-pry-search-tools__content\" [class.is-close]=\"searchToolsClose\">\n <button\n *ngIf=\"((editInProgress$ | async) && !(isRename$ | async)) || isSearchCriteria\"\n class=\"a-btn a-btn--icon-text -link-like u-self-end\"\n (click)=\"reset()\"\n id=\"btn_reset\"\n >\n <pry-icon iconSvg=\"reset\" [width]=\"18\" [height]=\"18\"></pry-icon>\n {{ '@pry.search.button.reset' | i18n }}\n </button>\n <ng-container *ngIf=\"editInProgress$ | async\">\n <pry-share [ngModel]=\"(currentEdit$ | async)?.visibility\" (ngModelChange)=\"updateVisibility($event)\"></pry-share>\n </ng-container>\n <ng-container *ngIf=\"(editInProgress$ | async) && !(isRename$ | async) && !(loading$ | async); else noEdit\">\n <pry-edit-named-query\n (searchFulltextChange)=\"onSearchFulltextChange($event)\"\n (cancelled)=\"onSearchTools()\"\n ></pry-edit-named-query>\n </ng-container>\n <ng-template #noEdit>\n <ng-container *ngIf=\"isSearchCriteria && !(loading$ | async); else noSearch\">\n <pry-toggle\n class=\"o-pry-search-tools__content__toggle\"\n [ngModel]=\"isSearchMono\"\n (ngModelChange)=\"onMonoSearch()\"\n [alwaysActive]=\"true\"\n mode=\"action\"\n >\n {{ (isSearchMono ? '@pry.search.button.mono' : '@pry.search.button.multi') | i18n }}\n </pry-toggle>\n <div class=\"o-pry-search-tools__content__full\">\n <ng-container *ngIf=\"isSearchMono; else isMultiSearch\">\n <pry-search-mono-class></pry-search-mono-class>\n </ng-container>\n <ng-template #isMultiSearch>\n <pry-search-multi-class></pry-search-multi-class>\n </ng-template>\n </div>\n\n <div class=\"o-pry-search-tools__content__button-search\">\n <ng-container *ngIf=\"isSearchCriteria\">\n <pry-choose-widget (selected)=\"selectWidget($event)\"></pry-choose-widget>\n </ng-container>\n <button class=\"a-btn a-btn--primary\" (click)=\"onSearchTools()\" *ngIf=\"!isSearchCriteria\">\n {{ '@pry.search.button.cancel' | i18n }}\n </button>\n <button\n [disabled]=\"\n (!(searchMultiClassValid$ | async) && !isSearchMono) || (!(searchMonoClassValid$ | async) && isSearchMono)\n \"\n class=\"a-btn a-btn--primary\"\n (click)=\"onSearch()\"\n >\n <pry-icon iconSvg=\"search-line\"></pry-icon>\n {{ '@pry.search.button.search' | i18n }}\n </button>\n </div>\n </ng-container>\n </ng-template>\n\n <ng-template #noSearch>\n <div class=\"o-pry-search-tools__content__full\">\n <pry-search-home\n class=\"o-pry-search-home\"\n [isMoreList]=\"isMoreList\"\n [searchFulltextTpl]=\"searchFulltextTpl\"\n (changeListView)=\"onChangeListView($event)\"\n (changeSearchCriteria)=\"onSearchCriteria()\"\n ></pry-search-home>\n <ng-template #searchFulltextTpl>\n <pry-search-fulltext mode=\"vertical\" (searchChange)=\"onSearchFulltextChange($event)\"></pry-search-fulltext>\n </ng-template>\n </div>\n </ng-template>\n </div>\n <div class=\"o-pry-search-tools__footer\" [class.is-close]=\"searchToolsClose\">\n <pry-save-query-button\n [editInProgress]=\"editInProgress$ | async\"\n [currentEdit]=\"currentEdit$ | async\"\n [currentEditType]=\"currentEditType$ | async\"\n [fulltextValid]=\"isSearchFulltextValid\"\n [multiValid]=\"searchMultiClassValid$ | async\"\n [monoValid]=\"searchMonoClassValid$ | async\"\n [isNotFulltext]=\"isSearchCriteria\"\n [isMonoSearch]=\"isSearchMono\"\n [fulltextSearch]=\"searchFulltextTemp\"\n ></pry-save-query-button>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.PryToggleComponent, selector: "pry-toggle", inputs: ["alwaysActive", "disabled", "mode", "size", "dir", "leftword", "rightword"] }, { kind: "component", type: i3.PryShareComponent, selector: "pry-share", inputs: ["value", "labelProperty", "valueProperty", "users$"] }, { kind: "component", type: i5.PrySearchHomeComponent, selector: "pry-search-home", inputs: ["searchFulltextTpl", "isMoreList"], outputs: ["changeListView", "changeSearchCriteria"] }, { kind: "component", type: i6.PrySearchMonoClassComponent, selector: "pry-search-mono-class" }, { kind: "component", type: i7.PrySearchMultiClassComponent, selector: "pry-search-multi-class" }, { kind: "component", type: i8.PrySearchFulltextComponent, selector: "pry-search-fulltext", inputs: ["mode", "launchButton", "currentEdit"], outputs: ["searchChange"] }, { kind: "component", type: i9.PrySaveQueryButtonComponent, selector: "pry-save-query-button", inputs: ["editInProgress", "currentEdit", "currentEditType", "fulltextValid", "multiValid", "monoValid", "isNotFulltext", "isMonoSearch", "fulltextSearch", "saveDisabled"] }, { kind: "component", type: i10.EditNamedQueryComponent, selector: "pry-edit-named-query", inputs: ["fromWidget"], outputs: ["searchFulltextChange", "cancelled", "searched"] }, { kind: "component", type: i11.ChooseWidgetComponent, selector: "pry-choose-widget", inputs: ["panelOpen", "mode", "width"], outputs: ["selected"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }] }); }
140
140
  }
141
141
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PrySearchToolsComponent, decorators: [{
142
142
  type: Component,
143
- args: [{ selector: 'pry-search-tools', template: "<div\n class=\"o-pry-search-tools\"\n [class.is-close]=\"searchToolsClose\"\n [class.is-mono]=\"isNewMono || (isEditMono$ | async)\"\n>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text -back\"\n (click)=\"onSearchTools()\"\n aria-pressed=\"false\"\n *ngIf=\"((editInProgress$ | async) && !(isRename$ | async)) || isSearchCriteria\"\n [pryTooltip]=\"infoTooltipBack\"\n pryTooltipPosition=\"bottom\"\n aria-describedby=\"infoTooltipBack_searchTools\"\n >\n <pry-icon iconSvg=\"arrow_back\" [width]=\"24\" [height]=\"24\" [animation]=\"false\"></pry-icon>\n <span>{{ '@pry.search.button.backSearch' | i18n }}</span>\n </button>\n <div class=\"o-pry-search-tools__content\" [class.is-close]=\"searchToolsClose\">\n <button\n *ngIf=\"((editInProgress$ | async) && !(isRename$ | async)) || isSearchCriteria\"\n class=\"a-btn a-btn--icon-text -link-like u-self-end\"\n (click)=\"reset()\"\n id=\"btn_reset\"\n >\n <pry-icon iconSvg=\"reset\" [width]=\"18\" [height]=\"18\"></pry-icon>\n {{ '@pry.search.button.reset' | i18n }}\n </button>\n <ng-container *ngIf=\"editInProgress$ | async\">\n <pry-share [ngModel]=\"(currentEdit$ | async)?.visibility\" (ngModelChange)=\"updateVisibility($event)\"></pry-share>\n </ng-container>\n <ng-container *ngIf=\"(editInProgress$ | async) && !(isRename$ | async) && !(loading$ | async); else noEdit\">\n <pry-edit-named-query\n (searchFulltextChange)=\"onSearchFulltextChange($event)\"\n (cancelled)=\"onSearchTools()\"\n ></pry-edit-named-query>\n </ng-container>\n <ng-template #noEdit>\n <ng-container *ngIf=\"isSearchCriteria && !(loading$ | async); else noSearch\">\n <pry-toggle\n class=\"o-pry-search-tools__content__toggle\"\n [ngModel]=\"isSearchMono\"\n (ngModelChange)=\"onMonoSearch()\"\n [alwaysActive]=\"true\"\n mode=\"action\"\n >\n {{ (isSearchMono ? '@pry.search.button.mono' : '@pry.search.button.multi') | i18n }}\n </pry-toggle>\n <div class=\"o-pry-search-tools__content__full\">\n <ng-container *ngIf=\"isSearchMono; else isMultiSearch\">\n <pry-search-mono-class></pry-search-mono-class>\n </ng-container>\n <ng-template #isMultiSearch>\n <pry-search-multi-class></pry-search-multi-class>\n </ng-template>\n </div>\n\n <div class=\"o-pry-search-tools__content__button-search\">\n <ng-container *ngIf=\"isSearchCriteria\">\n <pry-choose-widget (selected)=\"selectWidget($event)\"></pry-choose-widget>\n </ng-container>\n <button class=\"a-btn a-btn--primary\" (click)=\"onSearchTools()\" *ngIf=\"!isSearchCriteria\">\n {{ '@pry.search.button.cancel' | i18n }}\n </button>\n <button\n [disabled]=\"\n (!(searchMultiClassValid$ | async) && !isSearchMono) || (!(searchMonoClassValid$ | async) && isSearchMono)\n \"\n class=\"a-btn a-btn--primary\"\n (click)=\"onSearch()\"\n >\n <pry-icon iconSvg=\"search-line\"></pry-icon>\n {{ '@pry.search.button.search' | i18n }}\n </button>\n </div>\n </ng-container>\n </ng-template>\n\n <ng-template #noSearch>\n <div class=\"o-pry-search-tools__content__full\">\n <pry-search-home\n class=\"o-pry-search-home\"\n [isMoreList]=\"isMoreList\"\n [searchFulltextTpl]=\"searchFulltextTpl\"\n (changeListView)=\"onChangeListView($event)\"\n (changeSearchCriteria)=\"onSearchCriteria()\"\n ></pry-search-home>\n <ng-template #searchFulltextTpl>\n <pry-search-fulltext mode=\"vertical\" (searchChange)=\"onSearchFulltextChange($event)\"></pry-search-fulltext>\n </ng-template>\n </div>\n </ng-template>\n </div>\n <div class=\"o-pry-search-tools__footer\" [class.is-close]=\"searchToolsClose\">\n <pry-save-query-button\n [editInProgress]=\"editInProgress$ | async\"\n [currentEdit]=\"currentEdit$ | async\"\n [currentEditType]=\"currentEditType$ | async\"\n [fulltextValid]=\"isSearchFulltextValid\"\n [multiValid]=\"searchMultiClassValid$ | async\"\n [monoValid]=\"searchMonoClassValid$ | async\"\n [isNotFulltext]=\"isSearchCriteria\"\n [isMonoSearch]=\"isSearchMono\"\n [fulltextSearch]=\"searchFulltextTemp\"\n ></pry-save-query-button>\n </div>\n</div>\n\n<ng-template #infoTooltipBack>\n <div class=\"m-tooltip\" role=\"tooltip\" id=\"infoTooltipBack_searchTools\">\n <span class=\"m-tooltip__text\"> Retour \u00E0 la liste des recherches </span>\n </div>\n</ng-template>\n" }]
143
+ args: [{ selector: 'pry-search-tools', template: "<div\n class=\"o-pry-search-tools\"\n [class.is-close]=\"searchToolsClose\"\n [class.is-mono]=\"isNewMono || (isEditMono$ | async)\"\n>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text -back a-tooltip\"\n (click)=\"onSearchTools()\"\n aria-pressed=\"false\"\n *ngIf=\"((editInProgress$ | async) && !(isRename$ | async)) || isSearchCriteria\"\n [attr.data-tooltip]=\"'@pry.search.button.backSearch' | i18n\"\n data-tooltip-position=\"bottom\"\n >\n <pry-icon iconSvg=\"arrow_back\" [width]=\"24\" [height]=\"24\" [animation]=\"false\"></pry-icon>\n <span>{{ '@pry.search.button.backSearch' | i18n }}</span>\n </button>\n <div class=\"o-pry-search-tools__content\" [class.is-close]=\"searchToolsClose\">\n <button\n *ngIf=\"((editInProgress$ | async) && !(isRename$ | async)) || isSearchCriteria\"\n class=\"a-btn a-btn--icon-text -link-like u-self-end\"\n (click)=\"reset()\"\n id=\"btn_reset\"\n >\n <pry-icon iconSvg=\"reset\" [width]=\"18\" [height]=\"18\"></pry-icon>\n {{ '@pry.search.button.reset' | i18n }}\n </button>\n <ng-container *ngIf=\"editInProgress$ | async\">\n <pry-share [ngModel]=\"(currentEdit$ | async)?.visibility\" (ngModelChange)=\"updateVisibility($event)\"></pry-share>\n </ng-container>\n <ng-container *ngIf=\"(editInProgress$ | async) && !(isRename$ | async) && !(loading$ | async); else noEdit\">\n <pry-edit-named-query\n (searchFulltextChange)=\"onSearchFulltextChange($event)\"\n (cancelled)=\"onSearchTools()\"\n ></pry-edit-named-query>\n </ng-container>\n <ng-template #noEdit>\n <ng-container *ngIf=\"isSearchCriteria && !(loading$ | async); else noSearch\">\n <pry-toggle\n class=\"o-pry-search-tools__content__toggle\"\n [ngModel]=\"isSearchMono\"\n (ngModelChange)=\"onMonoSearch()\"\n [alwaysActive]=\"true\"\n mode=\"action\"\n >\n {{ (isSearchMono ? '@pry.search.button.mono' : '@pry.search.button.multi') | i18n }}\n </pry-toggle>\n <div class=\"o-pry-search-tools__content__full\">\n <ng-container *ngIf=\"isSearchMono; else isMultiSearch\">\n <pry-search-mono-class></pry-search-mono-class>\n </ng-container>\n <ng-template #isMultiSearch>\n <pry-search-multi-class></pry-search-multi-class>\n </ng-template>\n </div>\n\n <div class=\"o-pry-search-tools__content__button-search\">\n <ng-container *ngIf=\"isSearchCriteria\">\n <pry-choose-widget (selected)=\"selectWidget($event)\"></pry-choose-widget>\n </ng-container>\n <button class=\"a-btn a-btn--primary\" (click)=\"onSearchTools()\" *ngIf=\"!isSearchCriteria\">\n {{ '@pry.search.button.cancel' | i18n }}\n </button>\n <button\n [disabled]=\"\n (!(searchMultiClassValid$ | async) && !isSearchMono) || (!(searchMonoClassValid$ | async) && isSearchMono)\n \"\n class=\"a-btn a-btn--primary\"\n (click)=\"onSearch()\"\n >\n <pry-icon iconSvg=\"search-line\"></pry-icon>\n {{ '@pry.search.button.search' | i18n }}\n </button>\n </div>\n </ng-container>\n </ng-template>\n\n <ng-template #noSearch>\n <div class=\"o-pry-search-tools__content__full\">\n <pry-search-home\n class=\"o-pry-search-home\"\n [isMoreList]=\"isMoreList\"\n [searchFulltextTpl]=\"searchFulltextTpl\"\n (changeListView)=\"onChangeListView($event)\"\n (changeSearchCriteria)=\"onSearchCriteria()\"\n ></pry-search-home>\n <ng-template #searchFulltextTpl>\n <pry-search-fulltext mode=\"vertical\" (searchChange)=\"onSearchFulltextChange($event)\"></pry-search-fulltext>\n </ng-template>\n </div>\n </ng-template>\n </div>\n <div class=\"o-pry-search-tools__footer\" [class.is-close]=\"searchToolsClose\">\n <pry-save-query-button\n [editInProgress]=\"editInProgress$ | async\"\n [currentEdit]=\"currentEdit$ | async\"\n [currentEditType]=\"currentEditType$ | async\"\n [fulltextValid]=\"isSearchFulltextValid\"\n [multiValid]=\"searchMultiClassValid$ | async\"\n [monoValid]=\"searchMonoClassValid$ | async\"\n [isNotFulltext]=\"isSearchCriteria\"\n [isMonoSearch]=\"isSearchMono\"\n [fulltextSearch]=\"searchFulltextTemp\"\n ></pry-save-query-button>\n </div>\n</div>\n" }]
144
144
  }], ctorParameters: function () { return [{ type: i1.Store }]; }, propDecorators: { class: [{
145
145
  type: HostBinding,
146
146
  args: ['class.o-pry-search-tools-wrapper']
@@ -148,4 +148,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
148
148
  type: HostBinding,
149
149
  args: ['class.is-close']
150
150
  }] } });
151
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXRvb2xzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3NlYXJjaC9zZWFyY2gtdG9vbHMvc2VhcmNoLXRvb2xzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3NlYXJjaC9zZWFyY2gtdG9vbHMvc2VhcmNoLXRvb2xzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRWxFLE9BQU8sRUFDTCxZQUFZLEVBRVosZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixtQkFBbUIsRUFFbkIsc0JBQXNCLEVBQ3RCLFlBQVksRUFHWixlQUFlLEVBQ2hCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQWMsRUFBRSxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4RSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkMsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxQixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUM5RixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNsRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUVqRyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQzs7Ozs7Ozs7Ozs7OztBQU1yRyxNQUFNLE9BQU8sdUJBQXVCO0lBZ0JsQyxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQ3BELENB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c0I7WUFDMUIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1NBQzVCLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDL0MsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFTyxZQUFZO1FBQ2xCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELFlBQVksQ0FBQyxNQUFjO1FBQ3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDO0lBQzNCLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsTUFBVztRQUMxQixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsRUFBRSxXQUFXLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0csQ0FBQzs4R0F0SlUsdUJBQXVCO2tHQUF2Qix1QkFBdUIsK0tDN0JwQyw0ckpBaUhBOzsyRkRwRmEsdUJBQXVCO2tCQUpuQyxTQUFTOytCQUNFLGtCQUFrQjs0RkFJcUIsS0FBSztzQkFBckQsV0FBVzt1QkFBQyxrQ0FBa0M7Z0JBQ2hCLGdCQUFnQjtzQkFBOUMsV0FBVzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHtcbiAgQ2xhc3NBY3Rpb25zLFxuICBDbGFzc1N0YXRlLFxuICBEYXNoYm9hcmRBY3Rpb25zLFxuICBEYXRhU291cmNlQWN0aW9ucyxcbiAgRGF0YVNvdXJjZVNlbGVjdG9ycyxcbiAgRGF0YVNvdXJjZVN0YXRlLFxuICBERUZBVUxUX05BTUVEX1FVRVJZX0lELFxuICBGaWVsZEFjdGlvbnMsXG4gIEZpZWxkU3RhdGUsXG4gIE5hbWVkUXVlcnksXG4gIE5hbWVkUXVlcnlUeXBlc1xufSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWxheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IHY0IH0gZnJvbSAndXVpZCc7XG5pbXBvcnQgeyBTZWFyY2hGdWxsdGV4dENoYW5nZSB9IGZyb20gJy4uL3NlYXJjaC1mdWxsdGV4dC9zZWFyY2gtZnVsbHRleHQvc2VhcmNoLWZ1bGx0ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWFyY2hNb25vQ2xhc3NBY3Rpb25zIH0gZnJvbSAnLi4vc2VhcmNoLW1vbm8tY2xhc3Mvc3RvcmUvc2VhcmNoLW1vbm8tY2xhc3MuYWN0aW9ucyc7XG5pbXBvcnQgeyBTZWFyY2hNb25vQ2xhc3NTZWxlY3RvcnMgfSBmcm9tICcuLi9zZWFyY2gtbW9uby1jbGFzcy9zdG9yZS9zZWFyY2gtbW9uby1jbGFzcy5zZWxlY3RvcnMnO1xuaW1wb3J0IHsgU2VhcmNoTXVsdGlDbGFzc0FjdGlvbnMgfSBmcm9tICcuLi9zZWFyY2gtbXVsdGktY2xhc3Mvc3RvcmUvc2VhcmNoLW11bHRpLWNsYXNzLmFjdGlvbnMnO1xuaW1wb3J0IHsgU2VhcmNoTXVsdGlDbGFzc1N0YXRlIH0gZnJvbSAnLi4vc2VhcmNoLW11bHRpLWNsYXNzL3N0b3JlL3NlYXJjaC1tdWx0aS1jbGFzcy5yZWR1Y2VyJztcbmltcG9ydCB7IFNlYXJjaE11bHRpQ2xhc3NTZWxlY3RvcnMgfSBmcm9tICcuLi9zZWFyY2gtbXVsdGktY2xhc3Mvc3RvcmUvc2VhcmNoLW11bHRpLWNsYXNzLnNlbGVjdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ByeS1zZWFyY2gtdG9vbHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoLXRvb2xzLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBQcnlTZWFyY2hUb29sc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIEBIb3N0QmluZGluZygnY2xhc3Muby1wcnktc2VhcmNoLXRvb2xzLXdyYXBwZXInKSBjbGFzcyA9IHRydWU7XG4gIEBIb3N0QmluZGluZygnY2xhc3MuaXMtY2xvc2UnKSBzZWFyY2hUb29sc0Nsb3NlID0gZmFsc2U7XG5cbiAgc2VhcmNoTXVsdGlDbGFzc1ZhbGlkJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgc2VhcmNoTW9ub0NsYXNzVmFsaWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBsb2FkaW5nJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgaXNSZW5hbWUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gIGlzU2VhcmNoQ3JpdGVyaWEgPSBmYWxzZTtcbiAgaXNTZWFyY2hNb25vID0gZmFsc2U7XG4gIGlzU2VhcmNoRnVsbFRleHQgPSBmYWxzZTtcbiAgaXNTZWFyY2hGdWxsdGV4dFZhbGlkID0gZmFsc2U7XG4gIGlzTW9yZUxpc3QgPSBmYWxzZTtcbiAgd2lkZ2V0VHlwZTogc3RyaW5nID0gJ3RhYmxlJztcblxuICBnZXQgaXNOZXdNb25vKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzU2VhcmNoQ3JpdGVyaWEgJiYgdGhpcy5pc1NlYXJjaE1vbm87XG4gIH1cblxuICBnZXQgaXNFZGl0TW9ubyQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW3RoaXMuY3VycmVudEVkaXRUeXBlJCwgdGhpcy5pc1JlbmFtZSRdKS5waXBlKFxuICAgICAgbWFwKChbdHlwZSwgaXNSZW5hbWVdKSA9PiB0eXBlID09PSBOYW1lZFF1ZXJ5VHlwZXMuTU9OT19DTEFTUyAmJiAhaXNSZW5hbWUpXG4gICAgKTtcbiAgfVxuXG4gIGdldEljb24gPSB7XG4gICAgY2FyYWN0ZXJpc3RpcXVlOiAnZGVmYXVsdCcsXG4gICAgbGlldTogJ2RlZmF1bHQnLFxuICAgIG1ldGVvOiAnZGVmYXVsdCcsXG4gICAgdXNhZ2VyOiAncHJvZmlsJyxcbiAgICB2YWxldXJfZm9uY2llcmU6ICdkZWZhdWx0JyxcbiAgICB2ZWhpY3VsZTogJ2NhcidcbiAgfSBhcyB7IFtjbGF6ejogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgaXRlbXM6IE9ic2VydmFibGU8YW55W10gfCBudWxsPiA9IG9mKFtcbiAgICB7IGlkOiAxLCBuYW1lOiAnMScgfSxcbiAgICB7IGlkOiAyLCBuYW1lOiAnMicgfSxcbiAgICB7IGlkOiAzLCBuYW1lOiAnMycgfSxcbiAgICB7IGlkOiA0LCBuYW1lOiAnNCcgfVxuICBdKTtcbiAgZWRpdEluUHJvZ3Jlc3MkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBjdXJyZW50RWRpdCQ6IE9ic2VydmFibGU8TmFtZWRRdWVyeSB8IHVuZGVmaW5lZD47XG4gIGN1cnJlbnRFZGl0VHlwZSQ6IE9ic2VydmFibGU8TmFtZWRRdWVyeVR5cGVzIHwgdW5kZWZpbmVkPjtcbiAgcmVhZG9ubHkgRlVMTF9URVhUID0gTmFtZWRRdWVyeVR5cGVzLkZVTExfVEVYVDtcbiAgcmVhZG9ubHkgTU9OT19DTEFTUyA9IE5hbWVkUXVlcnlUeXBlcy5NT05PX0NMQVNTO1xuICByZWFkb25seSBNVUxUSV9DTEFTUyA9IE5hbWVkUXVlcnlUeXBlcy5NVUxUSV9DTEFTUztcbiAgc2VhcmNoRnVsbHRleHRUZW1wPzogU2VhcmNoRnVsbHRleHRDaGFuZ2U7XG5cbiAgcHJpdmF0ZSBzdWIgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yZTogU3RvcmU8RGF0YVNvdXJjZVN0YXRlIHwgU2VhcmNoTXVsdGlDbGFzc1N0YXRlIHwgRmllbGRTdGF0ZSB8IENsYXNzU3RhdGU+KSB7XG4gICAgdGhpcy5sb2FkaW5nJCA9IHRoaXMuc3RvcmUuc2VsZWN0KERhdGFTb3VyY2VTZWxlY3RvcnMuc2VsZWN0RmVhdHVyZSkucGlwZShtYXAoKHN0YXRlKSA9PiBzdGF0ZS5pc0xvYWRpbmcpKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhdGFTb3VyY2VBY3Rpb25zLmxvYWQoKSk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChGaWVsZEFjdGlvbnMubG9hZCgpKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENsYXNzQWN0aW9ucy5sb2FkKCkpO1xuICAgIHRoaXMuc2VhcmNoTXVsdGlDbGFzc1ZhbGlkJCA9IHRoaXMuc3RvcmUuc2VsZWN0KFNlYXJjaE11bHRpQ2xhc3NTZWxlY3RvcnMuc2VhcmNoTXVsdGlDbGFzc1ZhbGlkKS5waXBlKGRlbGF5KDEwMCkpO1xuICAgIHRoaXMuc2VhcmNoTW9ub0NsYXNzVmFsaWQkID0gdGhpcy5zdG9yZS5zZWxlY3QoU2VhcmNoTW9ub0NsYXNzU2VsZWN0b3JzLnNlYXJjaE1vbm9DbGFzc1ZhbGlkKS5waXBlKGRlbGF5KDEwMCkpO1xuICAgIHRoaXMuZWRpdEluUHJvZ3Jlc3MkID0gdGhpcy5zdG9yZS5zZWxlY3QoRGF0YVNvdXJjZVNlbGVjdG9ycy5lZGl0SW5Qcm9ncmVzcyk7XG4gICAgdGhpcy5jdXJyZW50RWRpdFR5cGUkID0gdGhpcy5zdG9yZS5zZWxlY3QoRGF0YVNvdXJjZVNlbGVjdG9ycy5jdXJyZW50RWRpdFR5cGUpO1xuICAgIHRoaXMuY3VycmVudEVkaXQkID0gdGhpcy5zdG9yZS5zZWxlY3QoRGF0YVNvdXJjZVNlbGVjdG9ycy5jdXJyZW50RWRpdCk7XG4gICAgdGhpcy5pc1JlbmFtZSQgPSB0aGlzLnN0b3JlLnNlbGVjdChEYXRhU291cmNlU2VsZWN0b3JzLmlzUmVuYW1lKTtcbiAgICB0aGlzLnN1Yi5hZGQoXG4gICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLmVkaXRJblByb2dyZXNzJCwgdGhpcy5pc1JlbmFtZSRdKS5zdWJzY3JpYmUoKFtlZGl0SW5Qcm9ncmVzcywgaXNSZW5hbWVdKSA9PiB7XG4gICAgICAgIGlmIChlZGl0SW5Qcm9ncmVzcyAmJiB0aGlzLnNlYXJjaFRvb2xzQ2xvc2UgJiYgIWlzUmVuYW1lKSB7XG4gICAgICAgICAgdGhpcy5vbkNoYW5nZVBhbmVsKCk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3ViLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBvblNlYXJjaENyaXRlcmlhKCkge1xuICAgIHRoaXMuaXNTZWFyY2hDcml0ZXJpYSA9IHRydWU7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgIERhdGFTb3VyY2VBY3Rpb25zLm5hbWVkUXVlcnkub3BlbkVkaXQoe1xuICAgICAgICBjdXJyZW50RWRpdDoge1xuICAgICAgICAgIHNvdXJjZVR5cGU6ICduYW1lZFF1ZXJ5JyxcbiAgICAgICAgICBpZDogdjQoKSxcbiAgICAgICAgICByZXF1ZXN0OiB7IHR5cGU6IE5hbWVkUXVlcnlUeXBlcy5NVUxUSV9DTEFTUywgZnVsbFNlYXJjaDogbnVsbCwgZmllbGRzOiBbXSwgbXVsdGlUeXBlOiAnQU5EJyB9LFxuICAgICAgICAgIG5hbWU6ICcnXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG9uU2VhcmNoVG9vbHMoKSB7XG4gICAgdGhpcy5pc1NlYXJjaENyaXRlcmlhID0gZmFsc2U7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXRhU291cmNlQWN0aW9ucy5uYW1lZFF1ZXJ5LnN0b3BFZGl0KCkpO1xuICAgIHRoaXMucmVzaXplU2NyZWVuKCk7XG4gIH1cblxuICBiYWNrKCkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGF0YVNvdXJjZUFjdGlvbnMubmFtZWRRdWVyeS5zdG9wRWRpdCgpKTtcbiAgICB0aGlzLnJlc2l6ZVNjcmVlbigpO1xuICB9XG5cbiAgb25Nb25vU2VhcmNoKCkge1xuICAgIHRoaXMuaXNTZWFyY2hNb25vID0gIXRoaXMuaXNTZWFyY2hNb25vO1xuICAgIHRoaXMucmVzaXplU2NyZWVuKCk7XG4gIH1cblxuICBvbkNoYW5nZUxpc3RWaWV3KGlzTW9yZUxpc3Q6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlzTW9yZUxpc3QgPSAhaXNNb3JlTGlzdDtcbiAgfVxuXG4gIG9uU2VhcmNoRnVsbHRleHRDaGFuZ2UocGF5bG9hZDogU2VhcmNoRnVsbHRleHRDaGFuZ2UpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuaXNTZWFyY2hGdWxsdGV4dFZhbGlkID0gcGF5bG9hZC52YWx1ZSAhPT0gJyc7XG4gICAgICB0aGlzLnNlYXJjaEZ1bGx0ZXh0VGVtcCA9IHBheWxvYWQ7XG4gICAgfSwgMTApO1xuICB9XG5cbiAgb25TZWFyY2goKSB7XG4gICAgaWYgKHRoaXMuaXNTZWFyY2hNb25vKSB7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFNlYXJjaE1vbm9DbGFzc0FjdGlvbnMuc2VhcmNoKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFNlYXJjaE11bHRpQ2xhc3NBY3Rpb25zLnNlYXJjaCgpKTtcbiAgICB9XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlV2lkZ2V0SW5QcmVzZW50YXRpb24oe1xuICAgICAgICBpZDogREVGQVVMVF9OQU1FRF9RVUVSWV9JRCxcbiAgICAgICAgd2lkZ2V0VHlwZTogdGhpcy53aWRnZXRUeXBlXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBvbkNoYW5nZVBhbmVsKCkge1xuICAgIHRoaXMuc2VhcmNoVG9vbHNDbG9zZSA9ICF0aGlzLnNlYXJjaFRvb2xzQ2xvc2U7XG4gICAgdGhpcy5yZXNpemVTY3JlZW4oKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzaXplU2NyZWVuKCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4gd2luZG93Py5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgncmVzaXplJykpLCA0MDApO1xuICB9XG5cbiAgc2VsZWN0V2lkZ2V0KCRldmVudDogc3RyaW5nKSB7XG4gICAgdGhpcy53aWRnZXRUeXBlID0gJGV2ZW50O1xuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXRhU291cmNlQWN0aW9ucy5uYW1lZFF1ZXJ5LnN0b3BFZGl0KCkpO1xuICAgIHRoaXMuaXNTZWFyY2hDcml0ZXJpYSA9IHRydWU7XG4gIH1cblxuICB1cGRhdGVWaXNpYmlsaXR5KCRldmVudDogYW55KSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXRhU291cmNlQWN0aW9ucy5uYW1lZFF1ZXJ5LnVwZGF0ZUN1cnJlbnRFZGl0KHsgY3VycmVudEVkaXQ6IHsgdmlzaWJpbGl0eTogJGV2ZW50IH0gfSkpO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwiby1wcnktc2VhcmNoLXRvb2xzXCJcbiAgW2NsYXNzLmlzLWNsb3NlXT1cInNlYXJjaFRvb2xzQ2xvc2VcIlxuICBbY2xhc3MuaXMtbW9ub109XCJpc05ld01vbm8gfHwgKGlzRWRpdE1vbm8kIHwgYXN5bmMpXCJcbj5cbiAgPGJ1dHRvblxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLWljb24tdGV4dCAtYmFja1wiXG4gICAgKGNsaWNrKT1cIm9uU2VhcmNoVG9vbHMoKVwiXG4gICAgYXJpYS1wcmVzc2VkPVwiZmFsc2VcIlxuICAgICpuZ0lmPVwiKChlZGl0SW5Qcm9ncmVzcyQgfCBhc3luYykgJiYgIShpc1JlbmFtZSQgfCBhc3luYykpIHx8IGlzU2VhcmNoQ3JpdGVyaWFcIlxuICAgIFtwcnlUb29sdGlwXT1cImluZm9Ub29sdGlwQmFja1wiXG4gICAgcHJ5VG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCJcbiAgICBhcmlhLWRlc2NyaWJlZGJ5PVwiaW5mb1Rvb2x0aXBCYWNrX3NlYXJjaFRvb2xzXCJcbiAgPlxuICAgIDxwcnktaWNvbiBpY29uU3ZnPVwiYXJyb3dfYmFja1wiIFt3aWR0aF09XCIyNFwiIFtoZWlnaHRdPVwiMjRcIiBbYW5pbWF0aW9uXT1cImZhbHNlXCI+PC9wcnktaWNvbj5cbiAgICA8c3Bhbj57eyAnQHByeS5zZWFyY2guYnV0dG9uLmJhY2tTZWFyY2gnIHwgaTE4biB9fTwvc3Bhbj5cbiAgPC9idXR0b24+XG4gIDxkaXYgY2xhc3M9XCJvLXByeS1zZWFyY2gtdG9vbHNfX2NvbnRlbnRcIiBbY2xhc3MuaXMtY2xvc2VdPVwic2VhcmNoVG9vbHNDbG9zZVwiPlxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwiKChlZGl0SW5Qcm9ncmVzcyQgfCBhc3luYykgJiYgIShpc1JlbmFtZSQgfCBhc3luYykpIHx8IGlzU2VhcmNoQ3JpdGVyaWFcIlxuICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0taWNvbi10ZXh0IC1saW5rLWxpa2UgdS1zZWxmLWVuZFwiXG4gICAgICAoY2xpY2spPVwicmVzZXQoKVwiXG4gICAgICBpZD1cImJ0bl9yZXNldFwiXG4gICAgPlxuICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJyZXNldFwiIFt3aWR0aF09XCIxOFwiIFtoZWlnaHRdPVwiMThcIj48L3ByeS1pY29uPlxuICAgICAge3sgJ0Bwcnkuc2VhcmNoLmJ1dHRvbi5yZXNldCcgfCBpMThuIH19XG4gICAgPC9idXR0b24+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVkaXRJblByb2dyZXNzJCB8IGFzeW5jXCI+XG4gICAgICA8cHJ5LXNoYXJlIFtuZ01vZGVsXT1cIihjdXJyZW50RWRpdCQgfCBhc3luYyk/LnZpc2liaWxpdHlcIiAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVWaXNpYmlsaXR5KCRldmVudClcIj48L3ByeS1zaGFyZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGVkaXRJblByb2dyZXNzJCB8IGFzeW5jKSAmJiAhKGlzUmVuYW1lJCB8IGFzeW5jKSAmJiAhKGxvYWRpbmckIHwgYXN5bmMpOyBlbHNlIG5vRWRpdFwiPlxuICAgICAgPHByeS1lZGl0LW5hbWVkLXF1ZXJ5XG4gICAgICAgIChzZWFyY2hGdWxsdGV4dENoYW5nZSk9XCJvblNlYXJjaEZ1bGx0ZXh0Q2hhbmdlKCRldmVudClcIlxuICAgICAgICAoY2FuY2VsbGVkKT1cIm9uU2VhcmNoVG9vbHMoKVwiXG4gICAgICA+PC9wcnktZWRpdC1uYW1lZC1xdWVyeT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI25vRWRpdD5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1NlYXJjaENyaXRlcmlhICYmICEobG9hZGluZyQgfCBhc3luYyk7IGVsc2Ugbm9TZWFyY2hcIj5cbiAgICAgICAgPHByeS10b2dnbGVcbiAgICAgICAgICBjbGFzcz1cIm8tcHJ5LXNlYXJjaC10b29sc19fY29udGVudF9fdG9nZ2xlXCJcbiAgICAgICAgICBbbmdNb2RlbF09XCJpc1NlYXJjaE1vbm9cIlxuICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uTW9ub1NlYXJjaCgpXCJcbiAgICAgICAgICBbYWx3YXlzQWN0aXZlXT1cInRydWVcIlxuICAgICAgICAgIG1vZGU9XCJhY3Rpb25cIlxuICAgICAgICA+XG4gICAgICAgICAge3sgKGlzU2VhcmNoTW9ubyA/ICdAcHJ5LnNlYXJjaC5idXR0b24ubW9ubycgOiAnQHByeS5zZWFyY2guYnV0dG9uLm11bHRpJykgfCBpMThuIH19XG4gICAgICAgIDwvcHJ5LXRvZ2dsZT5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm8tcHJ5LXNlYXJjaC10b29sc19fY29udGVudF9fZnVsbFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1NlYXJjaE1vbm87IGVsc2UgaXNNdWx0aVNlYXJjaFwiPlxuICAgICAgICAgICAgPHByeS1zZWFyY2gtbW9uby1jbGFzcz48L3ByeS1zZWFyY2gtbW9uby1jbGFzcz5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2lzTXVsdGlTZWFyY2g+XG4gICAgICAgICAgICA8cHJ5LXNlYXJjaC1tdWx0aS1jbGFzcz48L3ByeS1zZWFyY2gtbXVsdGktY2xhc3M+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm8tcHJ5LXNlYXJjaC10b29sc19fY29udGVudF9fYnV0dG9uLXNlYXJjaFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1NlYXJjaENyaXRlcmlhXCI+XG4gICAgICAgICAgICA8cHJ5LWNob29zZS13aWRnZXQgKHNlbGVjdGVkKT1cInNlbGVjdFdpZGdldCgkZXZlbnQpXCI+PC9wcnktY2hvb3NlLXdpZGdldD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnlcIiAoY2xpY2spPVwib25TZWFyY2hUb29scygpXCIgKm5nSWY9XCIhaXNTZWFyY2hDcml0ZXJpYVwiPlxuICAgICAgICAgICAge3sgJ0Bwcnkuc2VhcmNoLmJ1dHRvbi5jYW5jZWwnIHwgaTE4biB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgKCEoc2VhcmNoTXVsdGlDbGFzc1ZhbGlkJCB8IGFzeW5jKSAmJiAhaXNTZWFyY2hNb25vKSB8fCAoIShzZWFyY2hNb25vQ2xhc3NWYWxpZCQgfCBhc3luYykgJiYgaXNTZWFyY2hNb25vKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnlcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VhcmNoKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwic2VhcmNoLWxpbmVcIj48L3ByeS1pY29uPlxuICAgICAgICAgICAge3sgJ0Bwcnkuc2VhcmNoLmJ1dHRvbi5zZWFyY2gnIHwgaTE4biB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctdGVtcGxhdGUgI25vU2VhcmNoPlxuICAgICAgPGRpdiBjbGFzcz1cIm8tcHJ5LXNlYXJjaC10b29sc19fY29udGVudF9fZnVsbFwiPlxuICAgICAgICA8cHJ5LXNlYXJjaC1ob21lXG4gICAgICAgICAgY2xhc3M9XCJvLXByeS1zZWFyY2gtaG9tZVwiXG4gICAgICAgICAgW2lzTW9yZUxpc3RdPVwiaXNNb3JlTGlzdFwiXG4gICAgICAgICAgW3NlYXJjaEZ1bGx0ZXh0VHBsXT1cInNlYXJjaEZ1bGx0ZXh0VHBsXCJcbiAgICAgICAgICAoY2hhbmdlTGlzdFZpZXcpPVwib25DaGFuZ2VMaXN0VmlldygkZXZlbnQpXCJcbiAgICAgICAgICAoY2hhbmdlU2VhcmNoQ3JpdGVyaWEpPVwib25TZWFyY2hDcml0ZXJpYSgpXCJcbiAgICAgICAgPjwvcHJ5LXNlYXJjaC1ob21lPlxuICAgICAgICA8bmctdGVtcGxhdGUgI3NlYXJjaEZ1bGx0ZXh0VHBsPlxuICAgICAgICAgIDxwcnktc2VhcmNoLWZ1bGx0ZXh0IG1vZGU9XCJ2ZXJ0aWNhbFwiIChzZWFyY2hDaGFuZ2UpPVwib25TZWFyY2hGdWxsdGV4dENoYW5nZSgkZXZlbnQpXCI+PC9wcnktc2VhcmNoLWZ1bGx0ZXh0PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJvLXByeS1zZWFyY2gtdG9vbHNfX2Zvb3RlclwiIFtjbGFzcy5pcy1jbG9zZV09XCJzZWFyY2hUb29sc0Nsb3NlXCI+XG4gICAgPHByeS1zYXZlLXF1ZXJ5LWJ1dHRvblxuICAgICAgW2VkaXRJblByb2dyZXNzXT1cImVkaXRJblByb2dyZXNzJCB8IGFzeW5jXCJcbiAgICAgIFtjdXJyZW50RWRpdF09XCJjdXJyZW50RWRpdCQgfCBhc3luY1wiXG4gICAgICBbY3VycmVudEVkaXRUeXBlXT1cImN1cnJlbnRFZGl0VHlwZSQgfCBhc3luY1wiXG4gICAgICBbZnVsbHRleHRWYWxpZF09XCJpc1NlYXJjaEZ1bGx0ZXh0VmFsaWRcIlxuICAgICAgW211bHRpVmFsaWRdPVwic2VhcmNoTXVsdGlDbGFzc1ZhbGlkJCB8IGFzeW5jXCJcbiAgICAgIFttb25vVmFsaWRdPVwic2VhcmNoTW9ub0NsYXNzVmFsaWQkIHwgYXN5bmNcIlxuICAgICAgW2lzTm90RnVsbHRleHRdPVwiaXNTZWFyY2hDcml0ZXJpYVwiXG4gICAgICBbaXNNb25vU2VhcmNoXT1cImlzU2VhcmNoTW9ub1wiXG4gICAgICBbZnVsbHRleHRTZWFyY2hdPVwic2VhcmNoRnVsbHRleHRUZW1wXCJcbiAgICA+PC9wcnktc2F2ZS1xdWVyeS1idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjaW5mb1Rvb2x0aXBCYWNrPlxuICA8ZGl2IGNsYXNzPVwibS10b29sdGlwXCIgcm9sZT1cInRvb2x0aXBcIiBpZD1cImluZm9Ub29sdGlwQmFja19zZWFyY2hUb29sc1wiPlxuICAgIDxzcGFuIGNsYXNzPVwibS10b29sdGlwX190ZXh0XCI+IFJldG91ciDDoCBsYSBsaXN0ZSBkZXMgcmVjaGVyY2hlcyA8L3NwYW4+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
151
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXRvb2xzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3NlYXJjaC9zZWFyY2gtdG9vbHMvc2VhcmNoLXRvb2xzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3NlYXJjaC9zZWFyY2gtdG9vbHMvc2VhcmNoLXRvb2xzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRWxFLE9BQU8sRUFDTCxZQUFZLEVBRVosZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixtQkFBbUIsRUFFbkIsc0JBQXNCLEVBQ3RCLFlBQVksRUFHWixlQUFlLEVBQ2hCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQWMsRUFBRSxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4RSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkMsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxQixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUM5RixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNsRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUVqRyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQzs7Ozs7Ozs7Ozs7OztBQU1yRyxNQUFNLE9BQU8sdUJBQXVCO0lBZ0JsQyxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQ3BELENB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c0I7WUFDMUIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1NBQzVCLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDL0MsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFTyxZQUFZO1FBQ2xCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELFlBQVksQ0FBQyxNQUFjO1FBQ3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDO0lBQzNCLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsTUFBVztRQUMxQixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsRUFBRSxXQUFXLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0csQ0FBQzs4R0F0SlUsdUJBQXVCO2tHQUF2Qix1QkFBdUIsK0tDN0JwQyxnOUlBMEdBOzsyRkQ3RWEsdUJBQXVCO2tCQUpuQyxTQUFTOytCQUNFLGtCQUFrQjs0RkFJcUIsS0FBSztzQkFBckQsV0FBVzt1QkFBQyxrQ0FBa0M7Z0JBQ2hCLGdCQUFnQjtzQkFBOUMsV0FBVzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHtcbiAgQ2xhc3NBY3Rpb25zLFxuICBDbGFzc1N0YXRlLFxuICBEYXNoYm9hcmRBY3Rpb25zLFxuICBEYXRhU291cmNlQWN0aW9ucyxcbiAgRGF0YVNvdXJjZVNlbGVjdG9ycyxcbiAgRGF0YVNvdXJjZVN0YXRlLFxuICBERUZBVUxUX05BTUVEX1FVRVJZX0lELFxuICBGaWVsZEFjdGlvbnMsXG4gIEZpZWxkU3RhdGUsXG4gIE5hbWVkUXVlcnksXG4gIE5hbWVkUXVlcnlUeXBlc1xufSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWxheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IHY0IH0gZnJvbSAndXVpZCc7XG5pbXBvcnQgeyBTZWFyY2hGdWxsdGV4dENoYW5nZSB9IGZyb20gJy4uL3NlYXJjaC1mdWxsdGV4dC9zZWFyY2gtZnVsbHRleHQvc2VhcmNoLWZ1bGx0ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWFyY2hNb25vQ2xhc3NBY3Rpb25zIH0gZnJvbSAnLi4vc2VhcmNoLW1vbm8tY2xhc3Mvc3RvcmUvc2VhcmNoLW1vbm8tY2xhc3MuYWN0aW9ucyc7XG5pbXBvcnQgeyBTZWFyY2hNb25vQ2xhc3NTZWxlY3RvcnMgfSBmcm9tICcuLi9zZWFyY2gtbW9uby1jbGFzcy9zdG9yZS9zZWFyY2gtbW9uby1jbGFzcy5zZWxlY3RvcnMnO1xuaW1wb3J0IHsgU2VhcmNoTXVsdGlDbGFzc0FjdGlvbnMgfSBmcm9tICcuLi9zZWFyY2gtbXVsdGktY2xhc3Mvc3RvcmUvc2VhcmNoLW11bHRpLWNsYXNzLmFjdGlvbnMnO1xuaW1wb3J0IHsgU2VhcmNoTXVsdGlDbGFzc1N0YXRlIH0gZnJvbSAnLi4vc2VhcmNoLW11bHRpLWNsYXNzL3N0b3JlL3NlYXJjaC1tdWx0aS1jbGFzcy5yZWR1Y2VyJztcbmltcG9ydCB7IFNlYXJjaE11bHRpQ2xhc3NTZWxlY3RvcnMgfSBmcm9tICcuLi9zZWFyY2gtbXVsdGktY2xhc3Mvc3RvcmUvc2VhcmNoLW11bHRpLWNsYXNzLnNlbGVjdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ByeS1zZWFyY2gtdG9vbHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoLXRvb2xzLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBQcnlTZWFyY2hUb29sc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIEBIb3N0QmluZGluZygnY2xhc3Muby1wcnktc2VhcmNoLXRvb2xzLXdyYXBwZXInKSBjbGFzcyA9IHRydWU7XG4gIEBIb3N0QmluZGluZygnY2xhc3MuaXMtY2xvc2UnKSBzZWFyY2hUb29sc0Nsb3NlID0gZmFsc2U7XG5cbiAgc2VhcmNoTXVsdGlDbGFzc1ZhbGlkJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgc2VhcmNoTW9ub0NsYXNzVmFsaWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBsb2FkaW5nJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgaXNSZW5hbWUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gIGlzU2VhcmNoQ3JpdGVyaWEgPSBmYWxzZTtcbiAgaXNTZWFyY2hNb25vID0gZmFsc2U7XG4gIGlzU2VhcmNoRnVsbFRleHQgPSBmYWxzZTtcbiAgaXNTZWFyY2hGdWxsdGV4dFZhbGlkID0gZmFsc2U7XG4gIGlzTW9yZUxpc3QgPSBmYWxzZTtcbiAgd2lkZ2V0VHlwZTogc3RyaW5nID0gJ3RhYmxlJztcblxuICBnZXQgaXNOZXdNb25vKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzU2VhcmNoQ3JpdGVyaWEgJiYgdGhpcy5pc1NlYXJjaE1vbm87XG4gIH1cblxuICBnZXQgaXNFZGl0TW9ubyQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW3RoaXMuY3VycmVudEVkaXRUeXBlJCwgdGhpcy5pc1JlbmFtZSRdKS5waXBlKFxuICAgICAgbWFwKChbdHlwZSwgaXNSZW5hbWVdKSA9PiB0eXBlID09PSBOYW1lZFF1ZXJ5VHlwZXMuTU9OT19DTEFTUyAmJiAhaXNSZW5hbWUpXG4gICAgKTtcbiAgfVxuXG4gIGdldEljb24gPSB7XG4gICAgY2FyYWN0ZXJpc3RpcXVlOiAnZGVmYXVsdCcsXG4gICAgbGlldTogJ2RlZmF1bHQnLFxuICAgIG1ldGVvOiAnZGVmYXVsdCcsXG4gICAgdXNhZ2VyOiAncHJvZmlsJyxcbiAgICB2YWxldXJfZm9uY2llcmU6ICdkZWZhdWx0JyxcbiAgICB2ZWhpY3VsZTogJ2NhcidcbiAgfSBhcyB7IFtjbGF6ejogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgaXRlbXM6IE9ic2VydmFibGU8YW55W10gfCBudWxsPiA9IG9mKFtcbiAgICB7IGlkOiAxLCBuYW1lOiAnMScgfSxcbiAgICB7IGlkOiAyLCBuYW1lOiAnMicgfSxcbiAgICB7IGlkOiAzLCBuYW1lOiAnMycgfSxcbiAgICB7IGlkOiA0LCBuYW1lOiAnNCcgfVxuICBdKTtcbiAgZWRpdEluUHJvZ3Jlc3MkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBjdXJyZW50RWRpdCQ6IE9ic2VydmFibGU8TmFtZWRRdWVyeSB8IHVuZGVmaW5lZD47XG4gIGN1cnJlbnRFZGl0VHlwZSQ6IE9ic2VydmFibGU8TmFtZWRRdWVyeVR5cGVzIHwgdW5kZWZpbmVkPjtcbiAgcmVhZG9ubHkgRlVMTF9URVhUID0gTmFtZWRRdWVyeVR5cGVzLkZVTExfVEVYVDtcbiAgcmVhZG9ubHkgTU9OT19DTEFTUyA9IE5hbWVkUXVlcnlUeXBlcy5NT05PX0NMQVNTO1xuICByZWFkb25seSBNVUxUSV9DTEFTUyA9IE5hbWVkUXVlcnlUeXBlcy5NVUxUSV9DTEFTUztcbiAgc2VhcmNoRnVsbHRleHRUZW1wPzogU2VhcmNoRnVsbHRleHRDaGFuZ2U7XG5cbiAgcHJpdmF0ZSBzdWIgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yZTogU3RvcmU8RGF0YVNvdXJjZVN0YXRlIHwgU2VhcmNoTXVsdGlDbGFzc1N0YXRlIHwgRmllbGRTdGF0ZSB8IENsYXNzU3RhdGU+KSB7XG4gICAgdGhpcy5sb2FkaW5nJCA9IHRoaXMuc3RvcmUuc2VsZWN0KERhdGFTb3VyY2VTZWxlY3RvcnMuc2VsZWN0RmVhdHVyZSkucGlwZShtYXAoKHN0YXRlKSA9PiBzdGF0ZS5pc0xvYWRpbmcpKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhdGFTb3VyY2VBY3Rpb25zLmxvYWQoKSk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChGaWVsZEFjdGlvbnMubG9hZCgpKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENsYXNzQWN0aW9ucy5sb2FkKCkpO1xuICAgIHRoaXMuc2VhcmNoTXVsdGlDbGFzc1ZhbGlkJCA9IHRoaXMuc3RvcmUuc2VsZWN0KFNlYXJjaE11bHRpQ2xhc3NTZWxlY3RvcnMuc2VhcmNoTXVsdGlDbGFzc1ZhbGlkKS5waXBlKGRlbGF5KDEwMCkpO1xuICAgIHRoaXMuc2VhcmNoTW9ub0NsYXNzVmFsaWQkID0gdGhpcy5zdG9yZS5zZWxlY3QoU2VhcmNoTW9ub0NsYXNzU2VsZWN0b3JzLnNlYXJjaE1vbm9DbGFzc1ZhbGlkKS5waXBlKGRlbGF5KDEwMCkpO1xuICAgIHRoaXMuZWRpdEluUHJvZ3Jlc3MkID0gdGhpcy5zdG9yZS5zZWxlY3QoRGF0YVNvdXJjZVNlbGVjdG9ycy5lZGl0SW5Qcm9ncmVzcyk7XG4gICAgdGhpcy5jdXJyZW50RWRpdFR5cGUkID0gdGhpcy5zdG9yZS5zZWxlY3QoRGF0YVNvdXJjZVNlbGVjdG9ycy5jdXJyZW50RWRpdFR5cGUpO1xuICAgIHRoaXMuY3VycmVudEVkaXQkID0gdGhpcy5zdG9yZS5zZWxlY3QoRGF0YVNvdXJjZVNlbGVjdG9ycy5jdXJyZW50RWRpdCk7XG4gICAgdGhpcy5pc1JlbmFtZSQgPSB0aGlzLnN0b3JlLnNlbGVjdChEYXRhU291cmNlU2VsZWN0b3JzLmlzUmVuYW1lKTtcbiAgICB0aGlzLnN1Yi5hZGQoXG4gICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLmVkaXRJblByb2dyZXNzJCwgdGhpcy5pc1JlbmFtZSRdKS5zdWJzY3JpYmUoKFtlZGl0SW5Qcm9ncmVzcywgaXNSZW5hbWVdKSA9PiB7XG4gICAgICAgIGlmIChlZGl0SW5Qcm9ncmVzcyAmJiB0aGlzLnNlYXJjaFRvb2xzQ2xvc2UgJiYgIWlzUmVuYW1lKSB7XG4gICAgICAgICAgdGhpcy5vbkNoYW5nZVBhbmVsKCk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3ViLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBvblNlYXJjaENyaXRlcmlhKCkge1xuICAgIHRoaXMuaXNTZWFyY2hDcml0ZXJpYSA9IHRydWU7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgIERhdGFTb3VyY2VBY3Rpb25zLm5hbWVkUXVlcnkub3BlbkVkaXQoe1xuICAgICAgICBjdXJyZW50RWRpdDoge1xuICAgICAgICAgIHNvdXJjZVR5cGU6ICduYW1lZFF1ZXJ5JyxcbiAgICAgICAgICBpZDogdjQoKSxcbiAgICAgICAgICByZXF1ZXN0OiB7IHR5cGU6IE5hbWVkUXVlcnlUeXBlcy5NVUxUSV9DTEFTUywgZnVsbFNlYXJjaDogbnVsbCwgZmllbGRzOiBbXSwgbXVsdGlUeXBlOiAnQU5EJyB9LFxuICAgICAgICAgIG5hbWU6ICcnXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG9uU2VhcmNoVG9vbHMoKSB7XG4gICAgdGhpcy5pc1NlYXJjaENyaXRlcmlhID0gZmFsc2U7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXRhU291cmNlQWN0aW9ucy5uYW1lZFF1ZXJ5LnN0b3BFZGl0KCkpO1xuICAgIHRoaXMucmVzaXplU2NyZWVuKCk7XG4gIH1cblxuICBiYWNrKCkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGF0YVNvdXJjZUFjdGlvbnMubmFtZWRRdWVyeS5zdG9wRWRpdCgpKTtcbiAgICB0aGlzLnJlc2l6ZVNjcmVlbigpO1xuICB9XG5cbiAgb25Nb25vU2VhcmNoKCkge1xuICAgIHRoaXMuaXNTZWFyY2hNb25vID0gIXRoaXMuaXNTZWFyY2hNb25vO1xuICAgIHRoaXMucmVzaXplU2NyZWVuKCk7XG4gIH1cblxuICBvbkNoYW5nZUxpc3RWaWV3KGlzTW9yZUxpc3Q6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlzTW9yZUxpc3QgPSAhaXNNb3JlTGlzdDtcbiAgfVxuXG4gIG9uU2VhcmNoRnVsbHRleHRDaGFuZ2UocGF5bG9hZDogU2VhcmNoRnVsbHRleHRDaGFuZ2UpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuaXNTZWFyY2hGdWxsdGV4dFZhbGlkID0gcGF5bG9hZC52YWx1ZSAhPT0gJyc7XG4gICAgICB0aGlzLnNlYXJjaEZ1bGx0ZXh0VGVtcCA9IHBheWxvYWQ7XG4gICAgfSwgMTApO1xuICB9XG5cbiAgb25TZWFyY2goKSB7XG4gICAgaWYgKHRoaXMuaXNTZWFyY2hNb25vKSB7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFNlYXJjaE1vbm9DbGFzc0FjdGlvbnMuc2VhcmNoKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFNlYXJjaE11bHRpQ2xhc3NBY3Rpb25zLnNlYXJjaCgpKTtcbiAgICB9XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlV2lkZ2V0SW5QcmVzZW50YXRpb24oe1xuICAgICAgICBpZDogREVGQVVMVF9OQU1FRF9RVUVSWV9JRCxcbiAgICAgICAgd2lkZ2V0VHlwZTogdGhpcy53aWRnZXRUeXBlXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBvbkNoYW5nZVBhbmVsKCkge1xuICAgIHRoaXMuc2VhcmNoVG9vbHNDbG9zZSA9ICF0aGlzLnNlYXJjaFRvb2xzQ2xvc2U7XG4gICAgdGhpcy5yZXNpemVTY3JlZW4oKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzaXplU2NyZWVuKCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4gd2luZG93Py5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgncmVzaXplJykpLCA0MDApO1xuICB9XG5cbiAgc2VsZWN0V2lkZ2V0KCRldmVudDogc3RyaW5nKSB7XG4gICAgdGhpcy53aWRnZXRUeXBlID0gJGV2ZW50O1xuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXRhU291cmNlQWN0aW9ucy5uYW1lZFF1ZXJ5LnN0b3BFZGl0KCkpO1xuICAgIHRoaXMuaXNTZWFyY2hDcml0ZXJpYSA9IHRydWU7XG4gIH1cblxuICB1cGRhdGVWaXNpYmlsaXR5KCRldmVudDogYW55KSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXRhU291cmNlQWN0aW9ucy5uYW1lZFF1ZXJ5LnVwZGF0ZUN1cnJlbnRFZGl0KHsgY3VycmVudEVkaXQ6IHsgdmlzaWJpbGl0eTogJGV2ZW50IH0gfSkpO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwiby1wcnktc2VhcmNoLXRvb2xzXCJcbiAgW2NsYXNzLmlzLWNsb3NlXT1cInNlYXJjaFRvb2xzQ2xvc2VcIlxuICBbY2xhc3MuaXMtbW9ub109XCJpc05ld01vbm8gfHwgKGlzRWRpdE1vbm8kIHwgYXN5bmMpXCJcbj5cbiAgPGJ1dHRvblxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLWljb24tdGV4dCAtYmFjayBhLXRvb2x0aXBcIlxuICAgIChjbGljayk9XCJvblNlYXJjaFRvb2xzKClcIlxuICAgIGFyaWEtcHJlc3NlZD1cImZhbHNlXCJcbiAgICAqbmdJZj1cIigoZWRpdEluUHJvZ3Jlc3MkIHwgYXN5bmMpICYmICEoaXNSZW5hbWUkIHwgYXN5bmMpKSB8fCBpc1NlYXJjaENyaXRlcmlhXCJcbiAgICBbYXR0ci5kYXRhLXRvb2x0aXBdPVwiJ0Bwcnkuc2VhcmNoLmJ1dHRvbi5iYWNrU2VhcmNoJyB8IGkxOG5cIlxuICAgIGRhdGEtdG9vbHRpcC1wb3NpdGlvbj1cImJvdHRvbVwiXG4gID5cbiAgICA8cHJ5LWljb24gaWNvblN2Zz1cImFycm93X2JhY2tcIiBbd2lkdGhdPVwiMjRcIiBbaGVpZ2h0XT1cIjI0XCIgW2FuaW1hdGlvbl09XCJmYWxzZVwiPjwvcHJ5LWljb24+XG4gICAgPHNwYW4+e3sgJ0Bwcnkuc2VhcmNoLmJ1dHRvbi5iYWNrU2VhcmNoJyB8IGkxOG4gfX08L3NwYW4+XG4gIDwvYnV0dG9uPlxuICA8ZGl2IGNsYXNzPVwiby1wcnktc2VhcmNoLXRvb2xzX19jb250ZW50XCIgW2NsYXNzLmlzLWNsb3NlXT1cInNlYXJjaFRvb2xzQ2xvc2VcIj5cbiAgICA8YnV0dG9uXG4gICAgICAqbmdJZj1cIigoZWRpdEluUHJvZ3Jlc3MkIHwgYXN5bmMpICYmICEoaXNSZW5hbWUkIHwgYXN5bmMpKSB8fCBpc1NlYXJjaENyaXRlcmlhXCJcbiAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLWljb24tdGV4dCAtbGluay1saWtlIHUtc2VsZi1lbmRcIlxuICAgICAgKGNsaWNrKT1cInJlc2V0KClcIlxuICAgICAgaWQ9XCJidG5fcmVzZXRcIlxuICAgID5cbiAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwicmVzZXRcIiBbd2lkdGhdPVwiMThcIiBbaGVpZ2h0XT1cIjE4XCI+PC9wcnktaWNvbj5cbiAgICAgIHt7ICdAcHJ5LnNlYXJjaC5idXR0b24ucmVzZXQnIHwgaTE4biB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlZGl0SW5Qcm9ncmVzcyQgfCBhc3luY1wiPlxuICAgICAgPHByeS1zaGFyZSBbbmdNb2RlbF09XCIoY3VycmVudEVkaXQkIHwgYXN5bmMpPy52aXNpYmlsaXR5XCIgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlVmlzaWJpbGl0eSgkZXZlbnQpXCI+PC9wcnktc2hhcmU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihlZGl0SW5Qcm9ncmVzcyQgfCBhc3luYykgJiYgIShpc1JlbmFtZSQgfCBhc3luYykgJiYgIShsb2FkaW5nJCB8IGFzeW5jKTsgZWxzZSBub0VkaXRcIj5cbiAgICAgIDxwcnktZWRpdC1uYW1lZC1xdWVyeVxuICAgICAgICAoc2VhcmNoRnVsbHRleHRDaGFuZ2UpPVwib25TZWFyY2hGdWxsdGV4dENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgKGNhbmNlbGxlZCk9XCJvblNlYXJjaFRvb2xzKClcIlxuICAgICAgPjwvcHJ5LWVkaXQtbmFtZWQtcXVlcnk+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNub0VkaXQ+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNTZWFyY2hDcml0ZXJpYSAmJiAhKGxvYWRpbmckIHwgYXN5bmMpOyBlbHNlIG5vU2VhcmNoXCI+XG4gICAgICAgIDxwcnktdG9nZ2xlXG4gICAgICAgICAgY2xhc3M9XCJvLXByeS1zZWFyY2gtdG9vbHNfX2NvbnRlbnRfX3RvZ2dsZVwiXG4gICAgICAgICAgW25nTW9kZWxdPVwiaXNTZWFyY2hNb25vXCJcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbk1vbm9TZWFyY2goKVwiXG4gICAgICAgICAgW2Fsd2F5c0FjdGl2ZV09XCJ0cnVlXCJcbiAgICAgICAgICBtb2RlPVwiYWN0aW9uXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IChpc1NlYXJjaE1vbm8gPyAnQHByeS5zZWFyY2guYnV0dG9uLm1vbm8nIDogJ0Bwcnkuc2VhcmNoLmJ1dHRvbi5tdWx0aScpIHwgaTE4biB9fVxuICAgICAgICA8L3ByeS10b2dnbGU+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJvLXByeS1zZWFyY2gtdG9vbHNfX2NvbnRlbnRfX2Z1bGxcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNTZWFyY2hNb25vOyBlbHNlIGlzTXVsdGlTZWFyY2hcIj5cbiAgICAgICAgICAgIDxwcnktc2VhcmNoLW1vbm8tY2xhc3M+PC9wcnktc2VhcmNoLW1vbm8tY2xhc3M+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNpc011bHRpU2VhcmNoPlxuICAgICAgICAgICAgPHByeS1zZWFyY2gtbXVsdGktY2xhc3M+PC9wcnktc2VhcmNoLW11bHRpLWNsYXNzPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJvLXByeS1zZWFyY2gtdG9vbHNfX2NvbnRlbnRfX2J1dHRvbi1zZWFyY2hcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNTZWFyY2hDcml0ZXJpYVwiPlxuICAgICAgICAgICAgPHByeS1jaG9vc2Utd2lkZ2V0IChzZWxlY3RlZCk9XCJzZWxlY3RXaWRnZXQoJGV2ZW50KVwiPjwvcHJ5LWNob29zZS13aWRnZXQ+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5XCIgKGNsaWNrKT1cIm9uU2VhcmNoVG9vbHMoKVwiICpuZ0lmPVwiIWlzU2VhcmNoQ3JpdGVyaWFcIj5cbiAgICAgICAgICAgIHt7ICdAcHJ5LnNlYXJjaC5idXR0b24uY2FuY2VsJyB8IGkxOG4gfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICAgICghKHNlYXJjaE11bHRpQ2xhc3NWYWxpZCQgfCBhc3luYykgJiYgIWlzU2VhcmNoTW9ubykgfHwgKCEoc2VhcmNoTW9ub0NsYXNzVmFsaWQkIHwgYXN5bmMpICYmIGlzU2VhcmNoTW9ubylcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5XCJcbiAgICAgICAgICAgIChjbGljayk9XCJvblNlYXJjaCgpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cInNlYXJjaC1saW5lXCI+PC9wcnktaWNvbj5cbiAgICAgICAgICAgIHt7ICdAcHJ5LnNlYXJjaC5idXR0b24uc2VhcmNoJyB8IGkxOG4gfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlICNub1NlYXJjaD5cbiAgICAgIDxkaXYgY2xhc3M9XCJvLXByeS1zZWFyY2gtdG9vbHNfX2NvbnRlbnRfX2Z1bGxcIj5cbiAgICAgICAgPHByeS1zZWFyY2gtaG9tZVxuICAgICAgICAgIGNsYXNzPVwiby1wcnktc2VhcmNoLWhvbWVcIlxuICAgICAgICAgIFtpc01vcmVMaXN0XT1cImlzTW9yZUxpc3RcIlxuICAgICAgICAgIFtzZWFyY2hGdWxsdGV4dFRwbF09XCJzZWFyY2hGdWxsdGV4dFRwbFwiXG4gICAgICAgICAgKGNoYW5nZUxpc3RWaWV3KT1cIm9uQ2hhbmdlTGlzdFZpZXcoJGV2ZW50KVwiXG4gICAgICAgICAgKGNoYW5nZVNlYXJjaENyaXRlcmlhKT1cIm9uU2VhcmNoQ3JpdGVyaWEoKVwiXG4gICAgICAgID48L3ByeS1zZWFyY2gtaG9tZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNzZWFyY2hGdWxsdGV4dFRwbD5cbiAgICAgICAgICA8cHJ5LXNlYXJjaC1mdWxsdGV4dCBtb2RlPVwidmVydGljYWxcIiAoc2VhcmNoQ2hhbmdlKT1cIm9uU2VhcmNoRnVsbHRleHRDaGFuZ2UoJGV2ZW50KVwiPjwvcHJ5LXNlYXJjaC1mdWxsdGV4dD5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiby1wcnktc2VhcmNoLXRvb2xzX19mb290ZXJcIiBbY2xhc3MuaXMtY2xvc2VdPVwic2VhcmNoVG9vbHNDbG9zZVwiPlxuICAgIDxwcnktc2F2ZS1xdWVyeS1idXR0b25cbiAgICAgIFtlZGl0SW5Qcm9ncmVzc109XCJlZGl0SW5Qcm9ncmVzcyQgfCBhc3luY1wiXG4gICAgICBbY3VycmVudEVkaXRdPVwiY3VycmVudEVkaXQkIHwgYXN5bmNcIlxuICAgICAgW2N1cnJlbnRFZGl0VHlwZV09XCJjdXJyZW50RWRpdFR5cGUkIHwgYXN5bmNcIlxuICAgICAgW2Z1bGx0ZXh0VmFsaWRdPVwiaXNTZWFyY2hGdWxsdGV4dFZhbGlkXCJcbiAgICAgIFttdWx0aVZhbGlkXT1cInNlYXJjaE11bHRpQ2xhc3NWYWxpZCQgfCBhc3luY1wiXG4gICAgICBbbW9ub1ZhbGlkXT1cInNlYXJjaE1vbm9DbGFzc1ZhbGlkJCB8IGFzeW5jXCJcbiAgICAgIFtpc05vdEZ1bGx0ZXh0XT1cImlzU2VhcmNoQ3JpdGVyaWFcIlxuICAgICAgW2lzTW9ub1NlYXJjaF09XCJpc1NlYXJjaE1vbm9cIlxuICAgICAgW2Z1bGx0ZXh0U2VhcmNoXT1cInNlYXJjaEZ1bGx0ZXh0VGVtcFwiXG4gICAgPjwvcHJ5LXNhdmUtcXVlcnktYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19