cax-design-system 1.2.13 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/README.md +1 -2
  2. package/badge/badge.d.ts +5 -7
  3. package/badge/badge.directive.d.ts +5 -5
  4. package/calendar/calendar.d.ts +1 -0
  5. package/checkbox/checkbox.d.ts +5 -1
  6. package/chip/chip.d.ts +4 -3
  7. package/colorpicker/colorpicker.d.ts +1 -8
  8. package/colorpicker/colorpicker.module.d.ts +9 -0
  9. package/colorpicker/public_api.d.ts +1 -0
  10. package/esm2022/avatar/avatar.mjs +3 -3
  11. package/esm2022/badge/badge.directive.mjs +15 -33
  12. package/esm2022/badge/badge.mjs +5 -6
  13. package/esm2022/calendar/calendar.mjs +22 -12
  14. package/esm2022/checkbox/checkbox.mjs +20 -5
  15. package/esm2022/chip/chip.mjs +11 -7
  16. package/esm2022/colorpicker/colorpicker.mjs +6 -120
  17. package/esm2022/colorpicker/colorpicker.module.mjs +19 -0
  18. package/esm2022/colorpicker/public_api.mjs +2 -1
  19. package/esm2022/confirmdialog/confirmdialog.mjs +2 -2
  20. package/esm2022/navigation/navigation.mjs +5 -14
  21. package/esm2022/radiobutton/radiobutton.mjs +10 -3
  22. package/esm2022/table/components/table-checkbox/table-checkbox.mjs +5 -4
  23. package/esm2022/table/components/table-header-checkbox/table-header-checkbox.mjs +3 -3
  24. package/esm2022/table/directives/cell-highlight.directive.mjs +42 -0
  25. package/esm2022/table/directives/dynamic-column-width.directive.mjs +34 -0
  26. package/esm2022/table/public_api.mjs +3 -1
  27. package/esm2022/table/table.mjs +20 -4
  28. package/esm2022/table/table.module.mjs +15 -5
  29. package/esm2022/tag/tag.mjs +3 -3
  30. package/fesm2022/cax-design-system-avatar.mjs +2 -2
  31. package/fesm2022/cax-design-system-avatar.mjs.map +1 -1
  32. package/fesm2022/cax-design-system-badge.mjs +18 -37
  33. package/fesm2022/cax-design-system-badge.mjs.map +1 -1
  34. package/fesm2022/cax-design-system-calendar.mjs +21 -11
  35. package/fesm2022/cax-design-system-calendar.mjs.map +1 -1
  36. package/fesm2022/cax-design-system-checkbox.mjs +19 -4
  37. package/fesm2022/cax-design-system-checkbox.mjs.map +1 -1
  38. package/fesm2022/cax-design-system-chip.mjs +10 -6
  39. package/fesm2022/cax-design-system-chip.mjs.map +1 -1
  40. package/fesm2022/cax-design-system-colorpicker.mjs +5 -104
  41. package/fesm2022/cax-design-system-colorpicker.mjs.map +1 -1
  42. package/fesm2022/cax-design-system-confirmdialog.mjs +1 -1
  43. package/fesm2022/cax-design-system-confirmdialog.mjs.map +1 -1
  44. package/fesm2022/cax-design-system-navigation.mjs +4 -13
  45. package/fesm2022/cax-design-system-navigation.mjs.map +1 -1
  46. package/fesm2022/cax-design-system-radiobutton.mjs +9 -2
  47. package/fesm2022/cax-design-system-radiobutton.mjs.map +1 -1
  48. package/fesm2022/cax-design-system-table.mjs +110 -13
  49. package/fesm2022/cax-design-system-table.mjs.map +1 -1
  50. package/fesm2022/cax-design-system-tag.mjs +2 -2
  51. package/fesm2022/cax-design-system-tag.mjs.map +1 -1
  52. package/navigation/navigation.d.ts +2 -6
  53. package/package.json +79 -79
  54. package/radiobutton/radiobutton.d.ts +6 -1
  55. package/resources/cax.min.scss +1 -1
  56. package/resources/cax.scss +9602 -6
  57. package/resources/components/avatar/avatar.scss +2 -1
  58. package/resources/components/calendar/calendar.scss +9 -4
  59. package/resources/components/chip/chip.scss +0 -57
  60. package/resources/components/colorpicker/colorpicker-images.css +2 -2
  61. package/resources/components/colorpicker/{colorpicker.css → colorpicker.scss} +19 -20
  62. package/resources/components/navigation/navigation.scss +2 -26
  63. package/resources/components/radiobutton/radiobutton.scss +0 -4
  64. package/resources/components/table/table.scss +92 -0
  65. package/resources/components/tag/tag.scss +9 -3
  66. package/resources/styles/colors.scss +397 -0
  67. package/resources/styles/shadow-blur.scss +22 -0
  68. package/resources/styles/space-radius-border.scss +49 -0
  69. package/resources/styles/typography.scss +135 -0
  70. package/table/components/table-checkbox/table-checkbox.d.ts +1 -0
  71. package/table/directives/cell-highlight.directive.d.ts +14 -0
  72. package/table/directives/dynamic-column-width.directive.d.ts +12 -0
  73. package/table/public_api.d.ts +2 -0
  74. package/table/table.d.ts +10 -1
  75. package/table/table.module.d.ts +5 -3
  76. package/resources/themes/cax-theme.scss +0 -9332
@@ -19,6 +19,7 @@ export class Checkbox {
19
19
  cd;
20
20
  injector;
21
21
  config;
22
+ size = 'md';
22
23
  /**
23
24
  * Value of the checkbox.
24
25
  * @group Props
@@ -124,6 +125,9 @@ export class Checkbox {
124
125
  * @param {CheckboxChangeEvent} event - Custom value change event.
125
126
  * @group Emits
126
127
  */
128
+ indeterminate = false;
129
+ // New event emitter for indeterminate change
130
+ indeterminateChange = new EventEmitter();
127
131
  onChange = new EventEmitter();
128
132
  /**
129
133
  * Callback to invoke when the receives focus.
@@ -189,6 +193,10 @@ export class Checkbox {
189
193
  }
190
194
  }
191
195
  else {
196
+ if (this.indeterminate) {
197
+ this.indeterminate = false; // Reset indeterminate state on user interaction
198
+ this.indeterminateChange.emit(this.indeterminate);
199
+ }
192
200
  newModelValue = this.checked() ? this.falseValue : this.trueValue;
193
201
  this.model = newModelValue;
194
202
  this.onModelChange(newModelValue);
@@ -229,17 +237,19 @@ export class Checkbox {
229
237
  });
230
238
  }
231
239
  checked() {
232
- return this.binary ? this.model === this.trueValue : ObjectUtils.contains(this.value, this.model);
240
+ return !this.indeterminate && (this.binary ? this.model === this.trueValue : ObjectUtils.contains(this.value, this.model));
233
241
  }
234
242
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: Checkbox, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.Injector }, { token: i1.caxConfig }], target: i0.ɵɵFactoryTarget.Component });
235
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.9", type: Checkbox, selector: "cax-checkbox", inputs: { value: "value", name: "name", disabled: ["disabled", "disabled", booleanAttribute], binary: ["binary", "binary", booleanAttribute], label: "label", ariaLabelledBy: "ariaLabelledBy", ariaLabel: "ariaLabel", tabindex: ["tabindex", "tabindex", numberAttribute], inputId: "inputId", style: "style", styleClass: "styleClass", labelStyleClass: "labelStyleClass", formControl: "formControl", checkboxIcon: "checkboxIcon", readonly: ["readonly", "readonly", booleanAttribute], required: ["required", "required", booleanAttribute], autofocus: ["autofocus", "autofocus", booleanAttribute], trueValue: "trueValue", falseValue: "falseValue", variant: "variant", model: "model" }, outputs: { onChange: "onChange", onFocus: "onFocus", onBlur: "onBlur" }, host: { classAttribute: "cax-element" }, providers: [CHECKBOX_VALUE_ACCESSOR], queries: [{ propertyName: "templates", predicate: CaxTemplate }], viewQueries: [{ propertyName: "inputViewChild", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<div\r\n [ngStyle]=\"style\"\r\n [ngClass]=\"{\r\n 'cax-checkbox cax-component': true,\r\n 'cax-checkbox-checked': checked(),\r\n 'cax-checkbox-disabled': disabled,\r\n 'cax-checkbox-focused': focused,\r\n 'cax-variant-filled': variant === 'filled' || config.inputStyle() === 'filled'\r\n}\"\r\n [class]=\"styleClass\"\r\n [attr.data-pc-name]=\"'checkbox'\"\r\n [attr.data-pc-section]=\"'root'\"\r\n>\r\n <div class=\"cax-hidden-accessible\" [attr.data-pc-section]=\"'hiddenInputWrapper'\" [attr.data-cax-hidden-accessible]=\"true\">\r\n <input\r\n #input\r\n [attr.id]=\"inputId\"\r\n type=\"checkbox\"\r\n [value]=\"value\"\r\n [attr.name]=\"name\"\r\n [checked]=\"checked()\"\r\n [attr.tabindex]=\"tabindex\"\r\n [disabled]=\"disabled\"\r\n [readonly]=\"readonly\"\r\n [attr.required]=\"required\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [attr.aria-checked]=\"checked()\"\r\n (change)=\"handleChange($event)\"\r\n (focus)=\"onInputFocus($event)\"\r\n (blur)=\"onInputBlur($event)\"\r\n [attr.data-pc-section]=\"'hiddenInput'\"\r\n caxAutoFocus\r\n [autofocus]=\"autofocus\"\r\n />\r\n </div>\r\n <div\r\n class=\"cax-checkbox-box\"\r\n [ngClass]=\"{ 'cax-highlight': checked(), 'cax-disabled': disabled, 'cax-focus': focused }\"\r\n (click)=\"onClick($event, input, true)\"\r\n [attr.data-cax-highlight]=\"checked()\"\r\n [attr.data-cax-disabled]=\"disabled\"\r\n [attr.data-cax-focused]=\"focused\"\r\n [attr.data-pc-section]=\"'input'\"\r\n >\r\n <ng-container *ngIf=\"checked()\">\r\n <ng-container *ngIf=\"!checkboxIconTemplate\">\r\n <span *ngIf=\"checkboxIcon\" class=\"cax-checkbox-icon\" [ngClass]=\"checkboxIcon\" [attr.data-pc-section]=\"'icon'\"></span>\r\n <!-- <CheckIcon *ngIf=\"!checkboxIcon\" [styleClass]=\"'cax-checkbox-icon'\" [attr.data-pc-section]=\"'icon'\" /> -->\r\n <ng-container *ngIf=\"!checkboxIcon\" >\r\n <svg\r\n width=\"11\"\r\n height=\"10\"\r\n viewBox=\"0 0 14 14\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [attr.aria-hidden]=\"ariaHidden\"\r\n [attr.role]=\"role\"\r\n >\r\n <path\r\n d=\"M4.86199 11.5948C4.78717 11.5923 4.71366 11.5745 4.64596 11.5426C4.57826 11.5107 4.51779 11.4652 4.46827 11.4091L0.753985 7.69483C0.683167 7.64891 0.623706 7.58751 0.580092 7.51525C0.536478 7.44299 0.509851 7.36177 0.502221 7.27771C0.49459 7.19366 0.506156 7.10897 0.536046 7.03004C0.565935 6.95111 0.613367 6.88 0.674759 6.82208C0.736151 6.76416 0.8099 6.72095 0.890436 6.69571C0.970973 6.67046 1.05619 6.66385 1.13966 6.67635C1.22313 6.68886 1.30266 6.72017 1.37226 6.76792C1.44186 6.81567 1.4997 6.8786 1.54141 6.95197L4.86199 10.2503L12.6397 2.49483C12.7444 2.42694 12.8689 2.39617 12.9932 2.40745C13.1174 2.41873 13.2343 2.47141 13.3251 2.55705C13.4159 2.64268 13.4753 2.75632 13.4938 2.87973C13.5123 3.00315 13.4888 3.1292 13.4271 3.23768L5.2557 11.4091C5.20618 11.4652 5.14571 11.5107 5.07801 11.5426C5.01031 11.5745 4.9368 11.5923 4.86199 11.5948Z\"\r\n fill=\"currentColor\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"1\"\r\n />\r\n </svg>\r\n\r\n </ng-container>\r\n </ng-container>\r\n <span *ngIf=\"checkboxIconTemplate\" class=\"cax-checkbox-icon\" [attr.data-pc-section]=\"'icon'\">\r\n <ng-template *ngTemplateOutlet=\"checkboxIconTemplate\"></ng-template>\r\n </span>\r\n </ng-container>\r\n </div>\r\n</div>\r\n<label\r\n (click)=\"onClick($event, input, true)\"\r\n [class]=\"labelStyleClass\"\r\n [ngClass]=\"{ 'cax-checkbox-label': true, 'cax-checkbox-label-active': checked(), 'cax-disabled': disabled, 'cax-checkbox-label-focus': focused }\"\r\n *ngIf=\"label\"\r\n [attr.for]=\"inputId\"\r\n [attr.data-pc-section]=\"'label'\"\r\n>\r\n {{ label }}</label\r\n>\r\n", styles: ["@layer cax{.cax-checkbox{display:inline-flex;cursor:pointer;-webkit-user-select:none;user-select:none;vertical-align:bottom;position:relative}.cax-checkbox-disabled{cursor:default!important;pointer-events:none}.cax-checkbox-box{display:flex;justify-content:center;align-items:center}cax-checkbox{display:inline-flex;vertical-align:bottom;align-items:center}.cax-checkbox-label{line-height:1}}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.AutoFocus, selector: "[caxAutoFocus]", inputs: ["autofocus"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
243
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.9", type: Checkbox, selector: "cax-checkbox", inputs: { size: "size", value: "value", name: "name", disabled: ["disabled", "disabled", booleanAttribute], binary: ["binary", "binary", booleanAttribute], label: "label", ariaLabelledBy: "ariaLabelledBy", ariaLabel: "ariaLabel", tabindex: ["tabindex", "tabindex", numberAttribute], inputId: "inputId", style: "style", styleClass: "styleClass", labelStyleClass: "labelStyleClass", formControl: "formControl", checkboxIcon: "checkboxIcon", readonly: ["readonly", "readonly", booleanAttribute], required: ["required", "required", booleanAttribute], autofocus: ["autofocus", "autofocus", booleanAttribute], trueValue: "trueValue", falseValue: "falseValue", variant: "variant", indeterminate: ["indeterminate", "indeterminate", booleanAttribute], model: "model" }, outputs: { indeterminateChange: "indeterminateChange", onChange: "onChange", onFocus: "onFocus", onBlur: "onBlur" }, host: { classAttribute: "cax-element" }, providers: [CHECKBOX_VALUE_ACCESSOR], queries: [{ propertyName: "templates", predicate: CaxTemplate }], viewQueries: [{ propertyName: "inputViewChild", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<div\r\n [ngStyle]=\"style\"\r\n [ngClass]=\"{\r\n 'cax-checkbox cax-component': true,\r\n 'cax-checkbox-checked': checked(),\r\n 'cax-checkbox-indeterminate': indeterminate,\r\n 'cax-checkbox-disabled': disabled,\r\n 'cax-checkbox-focused': focused,\r\n 'cax-variant-filled': variant === 'filled' || config.inputStyle() === 'filled'\r\n}\"\r\n [class]=\"styleClass\"\r\n [attr.data-pc-name]=\"'checkbox'\"\r\n [attr.data-pc-section]=\"'root'\"\r\n>\r\n <div class=\"cax-hidden-accessible\" [attr.data-pc-section]=\"'hiddenInputWrapper'\" [attr.data-cax-hidden-accessible]=\"true\">\r\n <input\r\n #input\r\n [attr.id]=\"inputId\"\r\n type=\"checkbox\"\r\n [value]=\"value\"\r\n [attr.name]=\"name\"\r\n [checked]=\"checked()\"\r\n [attr.indeterminate]=\"indeterminate ? 'true' : null\"\r\n [attr.tabindex]=\"tabindex\"\r\n [disabled]=\"disabled\"\r\n [readonly]=\"readonly\"\r\n [attr.required]=\"required\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [attr.aria-checked]=\"checked()\"\r\n (change)=\"handleChange($event)\"\r\n (focus)=\"onInputFocus($event)\"\r\n (blur)=\"onInputBlur($event)\"\r\n [attr.data-pc-section]=\"'hiddenInput'\"\r\n caxAutoFocus\r\n [autofocus]=\"autofocus\"\r\n />\r\n </div>\r\n <div\r\n class=\"cax-checkbox-box\"\r\n [ngClass]=\"{ 'cax-highlight': checked(), 'cax-disabled': disabled, 'cax-focus': focused,\r\n 'cax-checkbox-indeterminate': indeterminate, \r\n 'cax-checkbox-sm': size == 'sm',\r\n 'cax-checkbox-md': size == 'md',\r\n 'cax-checkbox-lg': size == 'lg', }\"\r\n (click)=\"onClick($event, input, true)\"\r\n [attr.data-cax-highlight]=\"checked()\"\r\n [attr.data-cax-disabled]=\"disabled\"\r\n [attr.data-cax-focused]=\"focused\"\r\n [attr.data-pc-section]=\"'input'\"\r\n >\r\n <ng-container *ngIf=\"indeterminate\">\r\n <span class=\"cax cax-leaf cax-checkbox-leaf-indeterminate cax-checkbox-icon\"></span> \r\n </ng-container>\r\n <ng-container *ngIf=\"checked() && !indeterminate\">\r\n <ng-container *ngIf=\"!checkboxIconTemplate\">\r\n <span *ngIf=\"checkboxIcon\" class=\"cax-checkbox-icon\" [ngClass]=\"checkboxIcon\" [attr.data-pc-section]=\"'icon'\"></span>\r\n <!-- <CheckIcon *ngIf=\"!checkboxIcon\" [styleClass]=\"'cax-checkbox-icon'\" [attr.data-pc-section]=\"'icon'\" /> -->\r\n <ng-container *ngIf=\"!checkboxIcon\" >\r\n <svg\r\n width=\"11\"\r\n height=\"10\"\r\n viewBox=\"0 0 14 14\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [attr.aria-hidden]=\"ariaHidden\"\r\n [attr.role]=\"role\"\r\n >\r\n <path\r\n d=\"M4.86199 11.5948C4.78717 11.5923 4.71366 11.5745 4.64596 11.5426C4.57826 11.5107 4.51779 11.4652 4.46827 11.4091L0.753985 7.69483C0.683167 7.64891 0.623706 7.58751 0.580092 7.51525C0.536478 7.44299 0.509851 7.36177 0.502221 7.27771C0.49459 7.19366 0.506156 7.10897 0.536046 7.03004C0.565935 6.95111 0.613367 6.88 0.674759 6.82208C0.736151 6.76416 0.8099 6.72095 0.890436 6.69571C0.970973 6.67046 1.05619 6.66385 1.13966 6.67635C1.22313 6.68886 1.30266 6.72017 1.37226 6.76792C1.44186 6.81567 1.4997 6.8786 1.54141 6.95197L4.86199 10.2503L12.6397 2.49483C12.7444 2.42694 12.8689 2.39617 12.9932 2.40745C13.1174 2.41873 13.2343 2.47141 13.3251 2.55705C13.4159 2.64268 13.4753 2.75632 13.4938 2.87973C13.5123 3.00315 13.4888 3.1292 13.4271 3.23768L5.2557 11.4091C5.20618 11.4652 5.14571 11.5107 5.07801 11.5426C5.01031 11.5745 4.9368 11.5923 4.86199 11.5948Z\"\r\n fill=\"currentColor\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"1\"\r\n />\r\n </svg>\r\n\r\n </ng-container>\r\n </ng-container>\r\n <span *ngIf=\"checkboxIconTemplate\" class=\"cax-checkbox-icon\" [attr.data-pc-section]=\"'icon'\">\r\n <ng-template *ngTemplateOutlet=\"checkboxIconTemplate\"></ng-template>\r\n </span>\r\n </ng-container>\r\n </div>\r\n</div>\r\n<label\r\n (click)=\"onClick($event, input, true)\"\r\n [class]=\"labelStyleClass\"\r\n [ngClass]=\"{\r\n 'cax-checkbox-label': true, \r\n 'cax-checkbox-label-active': checked(), \r\n 'cax-disabled': disabled, \r\n 'cax-checkbox-label-focus': focused,\r\n 'cax-checkbox-label-sm': size === 'sm',\r\n 'cax-checkbox-label-md': size === 'md',\r\n 'cax-checkbox-label-lg': size === 'lg'\r\n }\"\r\n *ngIf=\"label\"\r\n [attr.for]=\"inputId\"\r\n [attr.data-pc-section]=\"'label'\"\r\n>\r\n {{ label }}</label\r\n>\r\n", styles: ["@layer cax{.cax-checkbox{display:inline-flex;cursor:pointer;-webkit-user-select:none;user-select:none;vertical-align:bottom;position:relative}.cax-checkbox-disabled{cursor:default!important;pointer-events:none}.cax-checkbox-box{display:flex;justify-content:center;align-items:center}cax-checkbox{display:inline-flex;vertical-align:bottom;align-items:center}.cax-checkbox-label{line-height:1}}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.AutoFocus, selector: "[caxAutoFocus]", inputs: ["autofocus"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
236
244
  }
237
245
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: Checkbox, decorators: [{
238
246
  type: Component,
239
247
  args: [{ selector: 'cax-checkbox', providers: [CHECKBOX_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
240
248
  class: 'cax-element'
241
- }, template: "<div\r\n [ngStyle]=\"style\"\r\n [ngClass]=\"{\r\n 'cax-checkbox cax-component': true,\r\n 'cax-checkbox-checked': checked(),\r\n 'cax-checkbox-disabled': disabled,\r\n 'cax-checkbox-focused': focused,\r\n 'cax-variant-filled': variant === 'filled' || config.inputStyle() === 'filled'\r\n}\"\r\n [class]=\"styleClass\"\r\n [attr.data-pc-name]=\"'checkbox'\"\r\n [attr.data-pc-section]=\"'root'\"\r\n>\r\n <div class=\"cax-hidden-accessible\" [attr.data-pc-section]=\"'hiddenInputWrapper'\" [attr.data-cax-hidden-accessible]=\"true\">\r\n <input\r\n #input\r\n [attr.id]=\"inputId\"\r\n type=\"checkbox\"\r\n [value]=\"value\"\r\n [attr.name]=\"name\"\r\n [checked]=\"checked()\"\r\n [attr.tabindex]=\"tabindex\"\r\n [disabled]=\"disabled\"\r\n [readonly]=\"readonly\"\r\n [attr.required]=\"required\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [attr.aria-checked]=\"checked()\"\r\n (change)=\"handleChange($event)\"\r\n (focus)=\"onInputFocus($event)\"\r\n (blur)=\"onInputBlur($event)\"\r\n [attr.data-pc-section]=\"'hiddenInput'\"\r\n caxAutoFocus\r\n [autofocus]=\"autofocus\"\r\n />\r\n </div>\r\n <div\r\n class=\"cax-checkbox-box\"\r\n [ngClass]=\"{ 'cax-highlight': checked(), 'cax-disabled': disabled, 'cax-focus': focused }\"\r\n (click)=\"onClick($event, input, true)\"\r\n [attr.data-cax-highlight]=\"checked()\"\r\n [attr.data-cax-disabled]=\"disabled\"\r\n [attr.data-cax-focused]=\"focused\"\r\n [attr.data-pc-section]=\"'input'\"\r\n >\r\n <ng-container *ngIf=\"checked()\">\r\n <ng-container *ngIf=\"!checkboxIconTemplate\">\r\n <span *ngIf=\"checkboxIcon\" class=\"cax-checkbox-icon\" [ngClass]=\"checkboxIcon\" [attr.data-pc-section]=\"'icon'\"></span>\r\n <!-- <CheckIcon *ngIf=\"!checkboxIcon\" [styleClass]=\"'cax-checkbox-icon'\" [attr.data-pc-section]=\"'icon'\" /> -->\r\n <ng-container *ngIf=\"!checkboxIcon\" >\r\n <svg\r\n width=\"11\"\r\n height=\"10\"\r\n viewBox=\"0 0 14 14\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [attr.aria-hidden]=\"ariaHidden\"\r\n [attr.role]=\"role\"\r\n >\r\n <path\r\n d=\"M4.86199 11.5948C4.78717 11.5923 4.71366 11.5745 4.64596 11.5426C4.57826 11.5107 4.51779 11.4652 4.46827 11.4091L0.753985 7.69483C0.683167 7.64891 0.623706 7.58751 0.580092 7.51525C0.536478 7.44299 0.509851 7.36177 0.502221 7.27771C0.49459 7.19366 0.506156 7.10897 0.536046 7.03004C0.565935 6.95111 0.613367 6.88 0.674759 6.82208C0.736151 6.76416 0.8099 6.72095 0.890436 6.69571C0.970973 6.67046 1.05619 6.66385 1.13966 6.67635C1.22313 6.68886 1.30266 6.72017 1.37226 6.76792C1.44186 6.81567 1.4997 6.8786 1.54141 6.95197L4.86199 10.2503L12.6397 2.49483C12.7444 2.42694 12.8689 2.39617 12.9932 2.40745C13.1174 2.41873 13.2343 2.47141 13.3251 2.55705C13.4159 2.64268 13.4753 2.75632 13.4938 2.87973C13.5123 3.00315 13.4888 3.1292 13.4271 3.23768L5.2557 11.4091C5.20618 11.4652 5.14571 11.5107 5.07801 11.5426C5.01031 11.5745 4.9368 11.5923 4.86199 11.5948Z\"\r\n fill=\"currentColor\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"1\"\r\n />\r\n </svg>\r\n\r\n </ng-container>\r\n </ng-container>\r\n <span *ngIf=\"checkboxIconTemplate\" class=\"cax-checkbox-icon\" [attr.data-pc-section]=\"'icon'\">\r\n <ng-template *ngTemplateOutlet=\"checkboxIconTemplate\"></ng-template>\r\n </span>\r\n </ng-container>\r\n </div>\r\n</div>\r\n<label\r\n (click)=\"onClick($event, input, true)\"\r\n [class]=\"labelStyleClass\"\r\n [ngClass]=\"{ 'cax-checkbox-label': true, 'cax-checkbox-label-active': checked(), 'cax-disabled': disabled, 'cax-checkbox-label-focus': focused }\"\r\n *ngIf=\"label\"\r\n [attr.for]=\"inputId\"\r\n [attr.data-pc-section]=\"'label'\"\r\n>\r\n {{ label }}</label\r\n>\r\n", styles: ["@layer cax{.cax-checkbox{display:inline-flex;cursor:pointer;-webkit-user-select:none;user-select:none;vertical-align:bottom;position:relative}.cax-checkbox-disabled{cursor:default!important;pointer-events:none}.cax-checkbox-box{display:flex;justify-content:center;align-items:center}cax-checkbox{display:inline-flex;vertical-align:bottom;align-items:center}.cax-checkbox-label{line-height:1}}\n"] }]
242
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.Injector }, { type: i1.caxConfig }], propDecorators: { value: [{
249
+ }, template: "<div\r\n [ngStyle]=\"style\"\r\n [ngClass]=\"{\r\n 'cax-checkbox cax-component': true,\r\n 'cax-checkbox-checked': checked(),\r\n 'cax-checkbox-indeterminate': indeterminate,\r\n 'cax-checkbox-disabled': disabled,\r\n 'cax-checkbox-focused': focused,\r\n 'cax-variant-filled': variant === 'filled' || config.inputStyle() === 'filled'\r\n}\"\r\n [class]=\"styleClass\"\r\n [attr.data-pc-name]=\"'checkbox'\"\r\n [attr.data-pc-section]=\"'root'\"\r\n>\r\n <div class=\"cax-hidden-accessible\" [attr.data-pc-section]=\"'hiddenInputWrapper'\" [attr.data-cax-hidden-accessible]=\"true\">\r\n <input\r\n #input\r\n [attr.id]=\"inputId\"\r\n type=\"checkbox\"\r\n [value]=\"value\"\r\n [attr.name]=\"name\"\r\n [checked]=\"checked()\"\r\n [attr.indeterminate]=\"indeterminate ? 'true' : null\"\r\n [attr.tabindex]=\"tabindex\"\r\n [disabled]=\"disabled\"\r\n [readonly]=\"readonly\"\r\n [attr.required]=\"required\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [attr.aria-checked]=\"checked()\"\r\n (change)=\"handleChange($event)\"\r\n (focus)=\"onInputFocus($event)\"\r\n (blur)=\"onInputBlur($event)\"\r\n [attr.data-pc-section]=\"'hiddenInput'\"\r\n caxAutoFocus\r\n [autofocus]=\"autofocus\"\r\n />\r\n </div>\r\n <div\r\n class=\"cax-checkbox-box\"\r\n [ngClass]=\"{ 'cax-highlight': checked(), 'cax-disabled': disabled, 'cax-focus': focused,\r\n 'cax-checkbox-indeterminate': indeterminate, \r\n 'cax-checkbox-sm': size == 'sm',\r\n 'cax-checkbox-md': size == 'md',\r\n 'cax-checkbox-lg': size == 'lg', }\"\r\n (click)=\"onClick($event, input, true)\"\r\n [attr.data-cax-highlight]=\"checked()\"\r\n [attr.data-cax-disabled]=\"disabled\"\r\n [attr.data-cax-focused]=\"focused\"\r\n [attr.data-pc-section]=\"'input'\"\r\n >\r\n <ng-container *ngIf=\"indeterminate\">\r\n <span class=\"cax cax-leaf cax-checkbox-leaf-indeterminate cax-checkbox-icon\"></span> \r\n </ng-container>\r\n <ng-container *ngIf=\"checked() && !indeterminate\">\r\n <ng-container *ngIf=\"!checkboxIconTemplate\">\r\n <span *ngIf=\"checkboxIcon\" class=\"cax-checkbox-icon\" [ngClass]=\"checkboxIcon\" [attr.data-pc-section]=\"'icon'\"></span>\r\n <!-- <CheckIcon *ngIf=\"!checkboxIcon\" [styleClass]=\"'cax-checkbox-icon'\" [attr.data-pc-section]=\"'icon'\" /> -->\r\n <ng-container *ngIf=\"!checkboxIcon\" >\r\n <svg\r\n width=\"11\"\r\n height=\"10\"\r\n viewBox=\"0 0 14 14\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [attr.aria-hidden]=\"ariaHidden\"\r\n [attr.role]=\"role\"\r\n >\r\n <path\r\n d=\"M4.86199 11.5948C4.78717 11.5923 4.71366 11.5745 4.64596 11.5426C4.57826 11.5107 4.51779 11.4652 4.46827 11.4091L0.753985 7.69483C0.683167 7.64891 0.623706 7.58751 0.580092 7.51525C0.536478 7.44299 0.509851 7.36177 0.502221 7.27771C0.49459 7.19366 0.506156 7.10897 0.536046 7.03004C0.565935 6.95111 0.613367 6.88 0.674759 6.82208C0.736151 6.76416 0.8099 6.72095 0.890436 6.69571C0.970973 6.67046 1.05619 6.66385 1.13966 6.67635C1.22313 6.68886 1.30266 6.72017 1.37226 6.76792C1.44186 6.81567 1.4997 6.8786 1.54141 6.95197L4.86199 10.2503L12.6397 2.49483C12.7444 2.42694 12.8689 2.39617 12.9932 2.40745C13.1174 2.41873 13.2343 2.47141 13.3251 2.55705C13.4159 2.64268 13.4753 2.75632 13.4938 2.87973C13.5123 3.00315 13.4888 3.1292 13.4271 3.23768L5.2557 11.4091C5.20618 11.4652 5.14571 11.5107 5.07801 11.5426C5.01031 11.5745 4.9368 11.5923 4.86199 11.5948Z\"\r\n fill=\"currentColor\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"1\"\r\n />\r\n </svg>\r\n\r\n </ng-container>\r\n </ng-container>\r\n <span *ngIf=\"checkboxIconTemplate\" class=\"cax-checkbox-icon\" [attr.data-pc-section]=\"'icon'\">\r\n <ng-template *ngTemplateOutlet=\"checkboxIconTemplate\"></ng-template>\r\n </span>\r\n </ng-container>\r\n </div>\r\n</div>\r\n<label\r\n (click)=\"onClick($event, input, true)\"\r\n [class]=\"labelStyleClass\"\r\n [ngClass]=\"{\r\n 'cax-checkbox-label': true, \r\n 'cax-checkbox-label-active': checked(), \r\n 'cax-disabled': disabled, \r\n 'cax-checkbox-label-focus': focused,\r\n 'cax-checkbox-label-sm': size === 'sm',\r\n 'cax-checkbox-label-md': size === 'md',\r\n 'cax-checkbox-label-lg': size === 'lg'\r\n }\"\r\n *ngIf=\"label\"\r\n [attr.for]=\"inputId\"\r\n [attr.data-pc-section]=\"'label'\"\r\n>\r\n {{ label }}</label\r\n>\r\n", styles: ["@layer cax{.cax-checkbox{display:inline-flex;cursor:pointer;-webkit-user-select:none;user-select:none;vertical-align:bottom;position:relative}.cax-checkbox-disabled{cursor:default!important;pointer-events:none}.cax-checkbox-box{display:flex;justify-content:center;align-items:center}cax-checkbox{display:inline-flex;vertical-align:bottom;align-items:center}.cax-checkbox-label{line-height:1}}\n"] }]
250
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.Injector }, { type: i1.caxConfig }], propDecorators: { size: [{
251
+ type: Input
252
+ }], value: [{
243
253
  type: Input
244
254
  }], name: [{
245
255
  type: Input
@@ -285,6 +295,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
285
295
  type: Input
286
296
  }], variant: [{
287
297
  type: Input
298
+ }], indeterminate: [{
299
+ type: Input,
300
+ args: [{ transform: booleanAttribute }]
301
+ }], indeterminateChange: [{
302
+ type: Output
288
303
  }], onChange: [{
289
304
  type: Output
290
305
  }], onFocus: [{
@@ -300,4 +315,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
300
315
  }], model: [{
301
316
  type: Input
302
317
  }] } });
303
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvY2hlY2tib3gvY2hlY2tib3gudHMiLCIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvY2hlY2tib3gvY2hlY2tib3guaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsZUFBZSxFQUVmLFlBQVksRUFDWixVQUFVLEVBRVYsS0FBSyxFQUNMLGVBQWUsRUFDZixNQUFNLEVBR04sU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXFDLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pHLE9BQU8sRUFBRSxXQUFXLEVBQWEsTUFBTSx1QkFBdUIsQ0FBQztBQUUvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7O0FBR3RELE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFRO0lBQ3hDLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUM7SUFDdkMsS0FBSyxFQUFFLElBQUk7Q0FDZCxDQUFDO0FBQ0Y7OztHQUdHO0FBWUgsTUFBTSxPQUFPLFFBQVE7SUF1SU47SUFDVTtJQUNWO0lBeElYOzs7T0FHRztJQUNNLEtBQUssQ0FBTTtJQUNwQjs7O09BR0c7SUFDTSxJQUFJLENBQXFCO0lBQ2xDOzs7T0FHRztJQUNxQyxRQUFRLENBQXNCO0lBQ3RFOzs7T0FHRztJQUNxQyxNQUFNLENBQXNCO0lBQ3BFOzs7T0FHRztJQUNNLEtBQUssQ0FBcUI7SUFDbkM7OztPQUdHO0lBQ00sY0FBYyxDQUFxQjtJQUM1Qzs7O09BR0c7SUFDTSxTQUFTLENBQXFCO0lBQ3ZDOzs7T0FHRztJQUNvQyxRQUFRLENB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YSxjQUFjO3NCQUFqQyxTQUFTO3VCQUFDLE9BQU87Z0JBRVksU0FBUztzQkFBdEMsZUFBZTt1QkFBQyxXQUFXO2dCQUluQixLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEluamVjdG9yLFxuICAgIElucHV0LFxuICAgIG51bWJlckF0dHJpYnV0ZSxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtQ29udHJvbCwgTkdfVkFMVUVfQUNDRVNTT1IsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENheFRlbXBsYXRlLCBjYXhDb25maWcgfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS9hcGknO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS90cy1oZWxwZXJzJztcbmltcG9ydCB7IE9iamVjdFV0aWxzIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vdXRpbHMnO1xuaW1wb3J0IHsgQ2hlY2tib3hDaGFuZ2VFdmVudCB9IGZyb20gJy4vY2hlY2tib3guaW50ZXJmYWNlJztcblxuZXhwb3J0IGNvbnN0IENIRUNLQk9YX1ZBTFVFX0FDQ0VTU09SOiBhbnkgPSB7XG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQ2hlY2tib3gpLFxuICAgIG11bHRpOiB0cnVlXG59O1xuLyoqXG4gKiBDaGVja2JveCBpcyBhbiBleHRlbnNpb24gdG8gc3RhbmRhcmQgY2hlY2tib3ggZWxlbWVudCB3aXRoIHRoZW1pbmcuXG4gKiBAZ3JvdXAgQ29tcG9uZW50c1xuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2NheC1jaGVja2JveCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NoZWNrYm94Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW0NIRUNLQk9YX1ZBTFVFX0FDQ0VTU09SXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHN0eWxlVXJsczogWycuL2NoZWNrYm94LnNjc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnY2F4LWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBDaGVja2JveCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgICAvKipcbiAgICAgKiBWYWx1ZSBvZiB0aGUgY2hlY2tib3guXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgdmFsdWU6IGFueTtcbiAgICAvKipcbiAgICAgKiBOYW1lIG9mIHRoZSBjaGVja2JveCBncm91cC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBuYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogV2hlbiBwcmVzZW50LCBpdCBzcGVjaWZpZXMgdGhhdCB0aGUgZWxlbWVudCBzaG91bGQgYmUgZGlzYWJsZWQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGRpc2FibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIEFsbG93cyB0byBzZWxlY3QgYSBib29sZWFuIHZhbHVlIGluc3RlYWQgb2YgbXVsdGlwbGUgdmFsdWVzLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBiaW5hcnk6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogTGFiZWwgb2YgdGhlIGNoZWNrYm94LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogRXN0YWJsaXNoZXMgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoZSBjb21wb25lbnQgYW5kIGxhYmVsKHMpIHdoZXJlIGl0cyB2YWx1ZSBzaG91bGQgYmUgb25lIG9yIG1vcmUgZWxlbWVudCBJRHMuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgYXJpYUxhYmVsbGVkQnk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBVc2VkIHRvIGRlZmluZSBhIHN0cmluZyB0aGF0IGxhYmVscyB0aGUgaW5wdXQgZWxlbWVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBhcmlhTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBJbmRleCBvZiB0aGUgZWxlbWVudCBpbiB0YWJiaW5nIG9yZGVyLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIHRhYmluZGV4OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogSWRlbnRpZmllciBvZiB0aGUgZm9jdXMgaW5wdXQgdG8gbWF0Y2ggYSBsYWJlbCBkZWZpbmVkIGZvciB0aGUgY29tcG9uZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGlucHV0SWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBJbmxpbmUgc3R5bGUgb2YgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzdHlsZTogeyBba2xhc3M6IHN0cmluZ106IGFueSB9IHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBTdHlsZSBjbGFzcyBvZiB0aGUgY29tcG9uZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBTdHlsZSBjbGFzcyBvZiB0aGUgbGFiZWwuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgbGFiZWxTdHlsZUNsYXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogRm9ybSBjb250cm9sIHZhbHVlLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGZvcm1Db250cm9sOiBGb3JtQ29udHJvbCB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBJY29uIGNsYXNzIG9mIHRoZSBjaGVja2JveCBpY29uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGNoZWNrYm94SWNvbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFdoZW4gcHJlc2VudCwgaXQgc3BlY2lmaWVzIHRoYXQgdGhlIGNvbXBvbmVudCBjYW5ub3QgYmUgZWRpdGVkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSByZWFkb25seTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBXaGVuIHByZXNlbnQsIGl0IHNwZWNpZmllcyB0aGF0IGNoZWNrYm94IG11c3QgYmUgY2hlY2tlZCBiZWZvcmUgc3VibWl0dGluZyB0aGUgZm9ybS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgcmVxdWlyZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogV2hlbiBwcmVzZW50LCBpdCBzcGVjaWZpZXMgdGhhdCB0aGUgY29tcG9uZW50IHNob3VsZCBhdXRvbWF0aWNhbGx5IGdldCBmb2N1cyBvbiBsb2FkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBhdXRvZm9jdXM6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogVmFsdWUgaW4gY2hlY2tlZCBzdGF0ZS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0cnVlVmFsdWU6IGFueSA9IHRydWU7XG4gICAgLyoqXG4gICAgICogVmFsdWUgaW4gdW5jaGVja2VkIHN0YXRlLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGZhbHNlVmFsdWU6IGFueSA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIFNwZWNpZmllcyB0aGUgaW5wdXQgdmFyaWFudCBvZiB0aGUgY29tcG9uZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHZhcmlhbnQ6ICdmaWxsZWQnIHwgJ291dGxpbmVkJyA9ICdvdXRsaW5lZCc7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIG9uIHZhbHVlIGNoYW5nZS5cbiAgICAgKiBAcGFyYW0ge0NoZWNrYm94Q2hhbmdlRXZlbnR9IGV2ZW50IC0gQ3VzdG9tIHZhbHVlIGNoYW5nZSBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxDaGVja2JveENoYW5nZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiB0aGUgcmVjZWl2ZXMgZm9jdXMuXG4gICAgICogQHBhcmFtIHtFdmVudH0gZXZlbnQgLSBCcm93c2VyIGV2ZW50LlxuICAgICAqIEBncm91cCBFbWl0c1xuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvbkZvY3VzOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiB0aGUgbG9zZXMgZm9jdXMuXG4gICAgICogQHBhcmFtIHtFdmVudH0gZXZlbnQgLSBCcm93c2VyIGV2ZW50LlxuICAgICAqIEBncm91cCBFbWl0c1xuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvbkJsdXI6IEV2ZW50RW1pdHRlcjxFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuXG4gICAgQFZpZXdDaGlsZCgnaW5wdXQnKSBpbnB1dFZpZXdDaGlsZDogTnVsbGFibGU8RWxlbWVudFJlZj47XG5cbiAgICBAQ29udGVudENoaWxkcmVuKENheFRlbXBsYXRlKSB0ZW1wbGF0ZXM6IE51bGxhYmxlPFF1ZXJ5TGlzdDxDYXhUZW1wbGF0ZT4+O1xuXG4gICAgY2hlY2tib3hJY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBASW5wdXQoKSBtb2RlbDogYW55O1xuXG4gICAgb25Nb2RlbENoYW5nZTogRnVuY3Rpb24gPSAoKSA9PiB7fTtcblxuICAgIG9uTW9kZWxUb3VjaGVkOiBGdW5jdGlvbiA9ICgpID0+IHt9O1xuXG4gICAgZm9jdXNlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwdWJsaWMgY29uZmlnOiBjYXhDb25maWdcbiAgICApIHt9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMudGVtcGxhdGVzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHN3aXRjaCAoaXRlbS5nZXRUeXBlKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdpY29uJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVja2JveEljb25UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkNsaWNrKGV2ZW50LCBjaGVja2JveCwgZm9jdXM6IGJvb2xlYW4pIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZU1vZGVsKGV2ZW50KTtcblxuICAgICAgICBpZiAoZm9jdXMpIHtcbiAgICAgICAgICAgIGNoZWNrYm94LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1cGRhdGVNb2RlbChldmVudCkge1xuICAgICAgICBsZXQgbmV3TW9kZWxWYWx1ZTtcblxuICAgICAgICAvKlxuICAgICAgICAgKiBXaGVuIGBmb3JtQ29udHJvbE5hbWVgIG9yIGBmb3JtQ29udHJvbGAgaXMgdXNlZCAtIGB3cml0ZVZhbHVlYCBpcyBub3QgY2FsbGVkIGFmdGVyIGNvbnRyb2wgY2hhbmdlcy5cbiAgICAgICAgICogT3RoZXJ3aXNlIGl0IGlzIGNhdXNpbmcgbXVsdGlwbGUgcmVmZXJlbmNlcyB0byB0aGUgYWN0dWFsIHZhbHVlOiB0aGVyZSBpcyBvbmUgYXJyYXkgcmVmZXJlbmNlIGluc2lkZSB0aGUgY29tcG9uZW50IGFuZCBhbm90aGVyIG9uZSBpbiB0aGUgY29udHJvbCB2YWx1ZS5cbiAgICAgICAgICogYHNlbGZDb250cm9sYCBpcyB0aGUgc291cmNlIG9mIHRydXRoIG9mIHJlZmVyZW5jZXMsIGl0IGlzIG1hZGUgdG8gYXZvaWQgcmVmZXJlbmNlIGxvc3MuXG4gICAgICAgICAqICovXG4gICAgICAgIGNvbnN0IHNlbGZDb250cm9sID0gdGhpcy5pbmplY3Rvci5nZXQ8TmdDb250cm9sIHwgbnVsbD4oTmdDb250cm9sLCBudWxsLCB7IG9wdGlvbmFsOiB0cnVlLCBzZWxmOiB0cnVlIH0pO1xuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRNb2RlbFZhbHVlID0gc2VsZkNvbnRyb2wgJiYgIXRoaXMuZm9ybUNvbnRyb2wgPyBzZWxmQ29udHJvbC52YWx1ZSA6IHRoaXMubW9kZWw7XG5cbiAgICAgICAgaWYgKCF0aGlzLmJpbmFyeSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuY2hlY2tlZCgpKSBuZXdNb2RlbFZhbHVlID0gY3VycmVudE1vZGVsVmFsdWUuZmlsdGVyKCh2YWwpID0+ICFPYmplY3RVdGlscy5lcXVhbHModmFsLCB0aGlzLnZhbHVlKSk7XG4gICAgICAgICAgICBlbHNlIG5ld01vZGVsVmFsdWUgPSBjdXJyZW50TW9kZWxWYWx1ZSA/IFsuLi5jdXJyZW50TW9kZWxWYWx1ZSwgdGhpcy52YWx1ZV0gOiBbdGhpcy52YWx1ZV07XG5cbiAgICAgICAgICAgIHRoaXMub25Nb2RlbENoYW5nZShuZXdNb2RlbFZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMubW9kZWwgPSBuZXdNb2RlbFZhbHVlO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5mb3JtQ29udHJvbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUobmV3TW9kZWxWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXdNb2RlbFZhbHVlID0gdGhpcy5jaGVja2VkKCkgPyB0aGlzLmZhbHNlVmFsdWUgOiB0aGlzLnRydWVWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMubW9kZWwgPSBuZXdNb2RlbFZhbHVlO1xuICAgICAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKG5ld01vZGVsVmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHsgY2hlY2tlZDogbmV3TW9kZWxWYWx1ZSwgb3JpZ2luYWxFdmVudDogZXZlbnQgfSk7XG4gICAgfVxuXG4gICAgaGFuZGxlQ2hhbmdlKGV2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5yZWFkb25seSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVNb2RlbChldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbklucHV0Rm9jdXMoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5mb2N1c2VkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5vbkZvY3VzLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIG9uSW5wdXRCbHVyKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLm9uQmx1ci5lbWl0KGV2ZW50KTtcbiAgICAgICAgdGhpcy5vbk1vZGVsVG91Y2hlZCgpO1xuICAgIH1cblxuICAgIGZvY3VzKCkge1xuICAgICAgICB0aGlzLmlucHV0Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKG1vZGVsOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tb2RlbCA9IG1vZGVsO1xuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBGdW5jdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLm9uTW9kZWxUb3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZSh2YWw6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVkID0gdmFsO1xuICAgICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY2hlY2tlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmluYXJ5ID8gdGhpcy5tb2RlbCA9PT0gdGhpcy50cnVlVmFsdWUgOiBPYmplY3RVdGlscy5jb250YWlucyh0aGlzLnZhbHVlLCB0aGlzLm1vZGVsKTtcbiAgICB9XG59XG4iLCI8ZGl2XHJcbiAgICBbbmdTdHlsZV09XCJzdHlsZVwiXHJcbiAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAnY2F4LWNoZWNrYm94IGNheC1jb21wb25lbnQnOiB0cnVlLFxyXG4gICAgJ2NheC1jaGVja2JveC1jaGVja2VkJzogY2hlY2tlZCgpLFxyXG4gICAgJ2NheC1jaGVja2JveC1kaXNhYmxlZCc6IGRpc2FibGVkLFxyXG4gICAgJ2NheC1jaGVja2JveC1mb2N1c2VkJzogZm9jdXNlZCxcclxuICAgICdjYXgtdmFyaWFudC1maWxsZWQnOiB2YXJpYW50ID09PSAnZmlsbGVkJyB8fCBjb25maWcuaW5wdXRTdHlsZSgpID09PSAnZmlsbGVkJ1xyXG59XCJcclxuICAgIFtjbGFzc109XCJzdHlsZUNsYXNzXCJcclxuICAgIFthdHRyLmRhdGEtcGMtbmFtZV09XCInY2hlY2tib3gnXCJcclxuICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCIncm9vdCdcIlxyXG4+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2F4LWhpZGRlbi1hY2Nlc3NpYmxlXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidoaWRkZW5JbnB1dFdyYXBwZXInXCIgW2F0dHIuZGF0YS1jYXgtaGlkZGVuLWFjY2Vzc2libGVdPVwidHJ1ZVwiPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAjaW5wdXRcclxuICAgICAgICAgICAgW2F0dHIuaWRdPVwiaW5wdXRJZFwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgIFthdHRyLm5hbWVdPVwibmFtZVwiXHJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cImNoZWNrZWQoKVwiXHJcbiAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cInRhYmluZGV4XCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgICAgICAgW2F0dHIucmVxdWlyZWRdPVwicmVxdWlyZWRcIlxyXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnlcIlxyXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiXHJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtY2hlY2tlZF09XCJjaGVja2VkKClcIlxyXG4gICAgICAgICAgICAoY2hhbmdlKT1cImhhbmRsZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgKGZvY3VzKT1cIm9uSW5wdXRGb2N1cygkZXZlbnQpXCJcclxuICAgICAgICAgICAgKGJsdXIpPVwib25JbnB1dEJsdXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInaGlkZGVuSW5wdXQnXCJcclxuICAgICAgICAgICAgY2F4QXV0b0ZvY3VzXHJcbiAgICAgICAgICAgIFthdXRvZm9jdXNdPVwiYXV0b2ZvY3VzXCJcclxuICAgICAgICAvPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJjYXgtY2hlY2tib3gtYm94XCJcclxuICAgICAgICBbbmdDbGFzc109XCJ7ICdjYXgtaGlnaGxpZ2h0JzogY2hlY2tlZCgpLCAnY2F4LWRpc2FibGVkJzogZGlzYWJsZWQsICdjYXgtZm9jdXMnOiBmb2N1c2VkIH1cIlxyXG4gICAgICAgIChjbGljayk9XCJvbkNsaWNrKCRldmVudCwgaW5wdXQsIHRydWUpXCJcclxuICAgICAgICBbYXR0ci5kYXRhLWNheC1oaWdobGlnaHRdPVwiY2hlY2tlZCgpXCJcclxuICAgICAgICBbYXR0ci5kYXRhLWNheC1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgW2F0dHIuZGF0YS1jYXgtZm9jdXNlZF09XCJmb2N1c2VkXCJcclxuICAgICAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2lucHV0J1wiXHJcbiAgICA+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNoZWNrZWQoKVwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNoZWNrYm94SWNvblRlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNoZWNrYm94SWNvblwiIGNsYXNzPVwiY2F4LWNoZWNrYm94LWljb25cIiBbbmdDbGFzc109XCJjaGVja2JveEljb25cIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2ljb24nXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPCEtLSA8Q2hlY2tJY29uICpuZ0lmPVwiIWNoZWNrYm94SWNvblwiIFtzdHlsZUNsYXNzXT1cIidjYXgtY2hlY2tib3gtaWNvbidcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2ljb24nXCIgLz4gLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNoZWNrYm94SWNvblwiID5cclxuICAgICAgICAgICAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgICAgICAgICB3aWR0aD1cIjExXCJcclxuICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTBcIlxyXG4gICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE0IDE0XCJcclxuICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWhpZGRlbl09XCJhcmlhSGlkZGVuXCJcclxuICAgICAgICAgICAgICAgICAgW2F0dHIucm9sZV09XCJyb2xlXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICBkPVwiTTQuODYxOTkgMTEuNTk0OEM0Ljc4NzE3IDExLjU5MjMgNC43MTM2NiAxMS41NzQ1IDQuNjQ1OTYgMTEuNTQyNkM0LjU3ODI2IDExLjUxMDcgNC41MTc3OSAxMS40NjUyIDQuNDY4MjcgMTEuNDA5MUwwLjc1Mzk4NSA3LjY5NDgzQzAuNjgzMTY3IDcuNjQ4OTEgMC42MjM3MDYgNy41ODc1MSAwLjU4MDA5MiA3LjUxNTI1QzAuNTM2NDc4IDcuNDQyOTkgMC41MDk4NTEgNy4zNjE3NyAwLjUwMjIyMSA3LjI3NzcxQzAuNDk0NTkgNy4xOTM2NiAwLjUwNjE1NiA3LjEwODk3IDAuNTM2MDQ2IDcuMDMwMDRDMC41NjU5MzUgNi45NTExMSAwLjYxMzM2NyA2Ljg4IDAuNjc0NzU5IDYuODIyMDhDMC43MzYxNTEgNi43NjQxNiAwLjgwOTkgNi43MjA5NSAwLjg5MDQzNiA2LjY5NTcxQzAuOTcwOTczIDYuNjcwNDYgMS4wNTYxOSA2LjY2Mzg1IDEuMTM5NjYgNi42NzYzNUMxLjIyMzEzIDYuNjg4ODYgMS4zMDI2NiA2LjcyMDE3IDEuMzcyMjYgNi43Njc5MkMxLjQ0MTg2IDYuODE1NjcgMS40OTk3IDYuODc4NiAxLjU0MTQxIDYuOTUxOTdMNC44NjE5OSAxMC4yNTAzTDEyLjYzOTcgMi40OTQ4M0MxMi43NDQ0IDIuNDI2OTQgMTIuODY4OSAyLjM5NjE3IDEyLjk5MzIgMi40MDc0NUMxMy4xMTc0IDIuNDE4NzMgMTMuMjM0MyAyLjQ3MTQxIDEzLjMyNTEgMi41NTcwNUMxMy40MTU5IDIuNjQyNjggMTMuNDc1MyAyLjc1NjMyIDEzLjQ5MzggMi44Nzk3M0MxMy41MTIzIDMuMDAzMTUgMTMuNDg4OCAzLjEyOTIgMTMuNDI3MSAzLjIzNzY4TDUuMjU1NyAxMS40MDkxQzUuMjA2MTggMTEuNDY1MiA1LjE0NTcxIDExLjUxMDcgNS4wNzgwMSAxMS41NDI2QzUuMDEwMzEgMTEuNTc0NSA0LjkzNjggMTEuNTkyMyA0Ljg2MTk5IDExLjU5NDhaXCJcclxuICAgICAgICAgICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcclxuICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjFcIlxyXG4gICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+XHJcblxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjaGVja2JveEljb25UZW1wbGF0ZVwiIGNsYXNzPVwiY2F4LWNoZWNrYm94LWljb25cIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2ljb24nXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjaGVja2JveEljb25UZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuPGxhYmVsXHJcbiAgICAoY2xpY2spPVwib25DbGljaygkZXZlbnQsIGlucHV0LCB0cnVlKVwiXHJcbiAgICBbY2xhc3NdPVwibGFiZWxTdHlsZUNsYXNzXCJcclxuICAgIFtuZ0NsYXNzXT1cInsgJ2NheC1jaGVja2JveC1sYWJlbCc6IHRydWUsICdjYXgtY2hlY2tib3gtbGFiZWwtYWN0aXZlJzogY2hlY2tlZCgpLCAnY2F4LWRpc2FibGVkJzogZGlzYWJsZWQsICdjYXgtY2hlY2tib3gtbGFiZWwtZm9jdXMnOiBmb2N1c2VkIH1cIlxyXG4gICAgKm5nSWY9XCJsYWJlbFwiXHJcbiAgICBbYXR0ci5mb3JdPVwiaW5wdXRJZFwiXHJcbiAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2xhYmVsJ1wiXHJcbj5cclxuICAgIHt7IGxhYmVsIH19PC9sYWJlbFxyXG4+XHJcbiJdfQ==
318
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvY2hlY2tib3gvY2hlY2tib3gudHMiLCIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvY2hlY2tib3gvY2hlY2tib3guaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsZUFBZSxFQUVmLFlBQVksRUFDWixVQUFVLEVBRVYsS0FBSyxFQUNMLGVBQWUsRUFDZixNQUFNLEVBR04sU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXFDLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pHLE9BQU8sRUFBRSxXQUFXLEVBQWEsTUFBTSx1QkFBdUIsQ0FBQztBQUUvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7O0FBR3RELE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFRO0lBQ3hDLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUM7SUFDdkMsS0FBSyxFQUFFLElBQUk7Q0FDZCxDQUFDO0FBQ0Y7OztHQUdHO0FBWUgsTUFBTSxPQUFPLFFBQVE7SUE0SU47SUFDVTtJQUNWO0lBN0lGLElBQUksR0FBdUIsSUFBSSxDQUFDO0lBQ3pDOzs7T0FHRztJQUNNLEtBQUssQ0FBTTtJQUNwQjs7O09BR0c7SUFDTSxJQUFJLENBQXFCO0lBQ2xDOzs7T0FHRztJQUNxQyxRQUFRLENBQXNCO0lBQ3RFOzs7T0FHRztJQUNxQyxNQUFNLENBQXNCO0lBQ3BFOzs7T0FHRztJQUNNLEtBQUssQ0FBcUI7SUFDbkM7OztPQUdHO0lBQ00sY0FBYyxDQUFxQjtJQUM1Qzs7O09BR0c7SUFDTSxTQUFTLENBQXFC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S0FBSztnQkFLRyxZQUFZO3NCQUFwQixLQUFLO2dCQUtrQyxRQUFRO3NCQUEvQyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUtFLFFBQVE7c0JBQS9DLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBS0UsU0FBUztzQkFBaEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFLN0IsU0FBUztzQkFBakIsS0FBSztnQkFLRyxVQUFVO3NCQUFsQixLQUFLO2dCQUtHLE9BQU87c0JBQWYsS0FBSztnQkFNa0MsYUFBYTtzQkFBcEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFHNUIsbUJBQW1CO3NCQUE1QixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBTUcsT0FBTztzQkFBaEIsTUFBTTtnQkFNRyxNQUFNO3NCQUFmLE1BQU07Z0JBRWEsY0FBYztzQkFBakMsU0FBUzt1QkFBQyxPQUFPO2dCQUVZLFNBQVM7c0JBQXRDLGVBQWU7dUJBQUMsV0FBVztnQkFJbkIsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBJbmplY3RvcixcbiAgICBJbnB1dCxcbiAgICBudW1iZXJBdHRyaWJ1dGUsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUNvbnRyb2wsIE5HX1ZBTFVFX0FDQ0VTU09SLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDYXhUZW1wbGF0ZSwgY2F4Q29uZmlnIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vYXBpJztcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vdHMtaGVscGVycyc7XG5pbXBvcnQgeyBPYmplY3RVdGlscyB9IGZyb20gJ2NheC1kZXNpZ24tc3lzdGVtL3V0aWxzJztcbmltcG9ydCB7IENoZWNrYm94Q2hhbmdlRXZlbnQgfSBmcm9tICcuL2NoZWNrYm94LmludGVyZmFjZSc7XG5cbmV4cG9ydCBjb25zdCBDSEVDS0JPWF9WQUxVRV9BQ0NFU1NPUjogYW55ID0ge1xuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IENoZWNrYm94KSxcbiAgICBtdWx0aTogdHJ1ZVxufTtcbi8qKlxuICogQ2hlY2tib3ggaXMgYW4gZXh0ZW5zaW9uIHRvIHN0YW5kYXJkIGNoZWNrYm94IGVsZW1lbnQgd2l0aCB0aGVtaW5nLlxuICogQGdyb3VwIENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdjYXgtY2hlY2tib3gnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jaGVja2JveC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtDSEVDS0JPWF9WQUxVRV9BQ0NFU1NPUl0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdHlsZVVybHM6IFsnLi9jaGVja2JveC5zY3NzJ10sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2NheC1lbGVtZW50J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgQ2hlY2tib3ggaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gICAgQElucHV0KCkgc2l6ZTogJ3NtJyB8ICdtZCcgfCAnbGcnID0gJ21kJztcbiAgICAvKipcbiAgICAgKiBWYWx1ZSBvZiB0aGUgY2hlY2tib3guXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgdmFsdWU6IGFueTtcbiAgICAvKipcbiAgICAgKiBOYW1lIG9mIHRoZSBjaGVja2JveCBncm91cC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBuYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogV2hlbiBwcmVzZW50LCBpdCBzcGVjaWZpZXMgdGhhdCB0aGUgZWxlbWVudCBzaG91bGQgYmUgZGlzYWJsZWQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGRpc2FibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIEFsbG93cyB0byBzZWxlY3QgYSBib29sZWFuIHZhbHVlIGluc3RlYWQgb2YgbXVsdGlwbGUgdmFsdWVzLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBiaW5hcnk6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogTGFiZWwgb2YgdGhlIGNoZWNrYm94LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogRXN0YWJsaXNoZXMgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoZSBjb21wb25lbnQgYW5kIGxhYmVsKHMpIHdoZXJlIGl0cyB2YWx1ZSBzaG91bGQgYmUgb25lIG9yIG1vcmUgZWxlbWVudCBJRHMuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgYXJpYUxhYmVsbGVkQnk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBVc2VkIHRvIGRlZmluZSBhIHN0cmluZyB0aGF0IGxhYmVscyB0aGUgaW5wdXQgZWxlbWVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBhcmlhTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBJbmRleCBvZiB0aGUgZWxlbWVudCBpbiB0YWJiaW5nIG9yZGVyLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIHRhYmluZGV4OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogSWRlbnRpZmllciBvZiB0aGUgZm9jdXMgaW5wdXQgdG8gbWF0Y2ggYSBsYWJlbCBkZWZpbmVkIGZvciB0aGUgY29tcG9uZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGlucHV0SWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBJbmxpbmUgc3R5bGUgb2YgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzdHlsZTogeyBba2xhc3M6IHN0cmluZ106IGFueSB9IHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBTdHlsZSBjbGFzcyBvZiB0aGUgY29tcG9uZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBTdHlsZSBjbGFzcyBvZiB0aGUgbGFiZWwuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgbGFiZWxTdHlsZUNsYXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogRm9ybSBjb250cm9sIHZhbHVlLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGZvcm1Db250cm9sOiBGb3JtQ29udHJvbCB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBJY29uIGNsYXNzIG9mIHRoZSBjaGVja2JveCBpY29uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGNoZWNrYm94SWNvbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFdoZW4gcHJlc2VudCwgaXQgc3BlY2lmaWVzIHRoYXQgdGhlIGNvbXBvbmVudCBjYW5ub3QgYmUgZWRpdGVkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSByZWFkb25seTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBXaGVuIHByZXNlbnQsIGl0IHNwZWNpZmllcyB0aGF0IGNoZWNrYm94IG11c3QgYmUgY2hlY2tlZCBiZWZvcmUgc3VibWl0dGluZyB0aGUgZm9ybS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgcmVxdWlyZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogV2hlbiBwcmVzZW50LCBpdCBzcGVjaWZpZXMgdGhhdCB0aGUgY29tcG9uZW50IHNob3VsZCBhdXRvbWF0aWNhbGx5IGdldCBmb2N1cyBvbiBsb2FkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBhdXRvZm9jdXM6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogVmFsdWUgaW4gY2hlY2tlZCBzdGF0ZS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0cnVlVmFsdWU6IGFueSA9IHRydWU7XG4gICAgLyoqXG4gICAgICogVmFsdWUgaW4gdW5jaGVja2VkIHN0YXRlLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGZhbHNlVmFsdWU6IGFueSA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIFNwZWNpZmllcyB0aGUgaW5wdXQgdmFyaWFudCBvZiB0aGUgY29tcG9uZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHZhcmlhbnQ6ICdmaWxsZWQnIHwgJ291dGxpbmVkJyA9ICdvdXRsaW5lZCc7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIG9uIHZhbHVlIGNoYW5nZS5cbiAgICAgKiBAcGFyYW0ge0NoZWNrYm94Q2hhbmdlRXZlbnR9IGV2ZW50IC0gQ3VzdG9tIHZhbHVlIGNoYW5nZSBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaW5kZXRlcm1pbmF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLy8gTmV3IGV2ZW50IGVtaXR0ZXIgZm9yIGluZGV0ZXJtaW5hdGUgY2hhbmdlXG4gICAgQE91dHB1dCgpIGluZGV0ZXJtaW5hdGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgICBAT3V0cHV0KCkgb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxDaGVja2JveENoYW5nZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiB0aGUgcmVjZWl2ZXMgZm9jdXMuXG4gICAgICogQHBhcmFtIHtFdmVudH0gZXZlbnQgLSBCcm93c2VyIGV2ZW50LlxuICAgICAqIEBncm91cCBFbWl0c1xuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvbkZvY3VzOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiB0aGUgbG9zZXMgZm9jdXMuXG4gICAgICogQHBhcmFtIHtFdmVudH0gZXZlbnQgLSBCcm93c2VyIGV2ZW50LlxuICAgICAqIEBncm91cCBFbWl0c1xuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvbkJsdXI6IEV2ZW50RW1pdHRlcjxFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuXG4gICAgQFZpZXdDaGlsZCgnaW5wdXQnKSBpbnB1dFZpZXdDaGlsZDogTnVsbGFibGU8RWxlbWVudFJlZj47XG5cbiAgICBAQ29udGVudENoaWxkcmVuKENheFRlbXBsYXRlKSB0ZW1wbGF0ZXM6IE51bGxhYmxlPFF1ZXJ5TGlzdDxDYXhUZW1wbGF0ZT4+O1xuXG4gICAgY2hlY2tib3hJY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBASW5wdXQoKSBtb2RlbDogYW55O1xuXG4gICAgb25Nb2RlbENoYW5nZTogRnVuY3Rpb24gPSAoKSA9PiB7fTtcblxuICAgIG9uTW9kZWxUb3VjaGVkOiBGdW5jdGlvbiA9ICgpID0+IHt9O1xuXG4gICAgZm9jdXNlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwdWJsaWMgY29uZmlnOiBjYXhDb25maWdcbiAgICApIHt9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMudGVtcGxhdGVzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHN3aXRjaCAoaXRlbS5nZXRUeXBlKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdpY29uJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVja2JveEljb25UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkNsaWNrKGV2ZW50LCBjaGVja2JveCwgZm9jdXM6IGJvb2xlYW4pIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZU1vZGVsKGV2ZW50KTtcblxuICAgICAgICBpZiAoZm9jdXMpIHtcbiAgICAgICAgICAgIGNoZWNrYm94LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1cGRhdGVNb2RlbChldmVudCkge1xuICAgICAgICBsZXQgbmV3TW9kZWxWYWx1ZTtcblxuICAgICAgICAvKlxuICAgICAgICAgKiBXaGVuIGBmb3JtQ29udHJvbE5hbWVgIG9yIGBmb3JtQ29udHJvbGAgaXMgdXNlZCAtIGB3cml0ZVZhbHVlYCBpcyBub3QgY2FsbGVkIGFmdGVyIGNvbnRyb2wgY2hhbmdlcy5cbiAgICAgICAgICogT3RoZXJ3aXNlIGl0IGlzIGNhdXNpbmcgbXVsdGlwbGUgcmVmZXJlbmNlcyB0byB0aGUgYWN0dWFsIHZhbHVlOiB0aGVyZSBpcyBvbmUgYXJyYXkgcmVmZXJlbmNlIGluc2lkZSB0aGUgY29tcG9uZW50IGFuZCBhbm90aGVyIG9uZSBpbiB0aGUgY29udHJvbCB2YWx1ZS5cbiAgICAgICAgICogYHNlbGZDb250cm9sYCBpcyB0aGUgc291cmNlIG9mIHRydXRoIG9mIHJlZmVyZW5jZXMsIGl0IGlzIG1hZGUgdG8gYXZvaWQgcmVmZXJlbmNlIGxvc3MuXG4gICAgICAgICAqICovXG4gICAgICAgIGNvbnN0IHNlbGZDb250cm9sID0gdGhpcy5pbmplY3Rvci5nZXQ8TmdDb250cm9sIHwgbnVsbD4oTmdDb250cm9sLCBudWxsLCB7IG9wdGlvbmFsOiB0cnVlLCBzZWxmOiB0cnVlIH0pO1xuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRNb2RlbFZhbHVlID0gc2VsZkNvbnRyb2wgJiYgIXRoaXMuZm9ybUNvbnRyb2wgPyBzZWxmQ29udHJvbC52YWx1ZSA6IHRoaXMubW9kZWw7XG5cbiAgICAgICAgaWYgKCF0aGlzLmJpbmFyeSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuY2hlY2tlZCgpKSBuZXdNb2RlbFZhbHVlID0gY3VycmVudE1vZGVsVmFsdWUuZmlsdGVyKCh2YWwpID0+ICFPYmplY3RVdGlscy5lcXVhbHModmFsLCB0aGlzLnZhbHVlKSk7XG4gICAgICAgICAgICBlbHNlIG5ld01vZGVsVmFsdWUgPSBjdXJyZW50TW9kZWxWYWx1ZSA/IFsuLi5jdXJyZW50TW9kZWxWYWx1ZSwgdGhpcy52YWx1ZV0gOiBbdGhpcy52YWx1ZV07XG5cbiAgICAgICAgICAgIHRoaXMub25Nb2RlbENoYW5nZShuZXdNb2RlbFZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMubW9kZWwgPSBuZXdNb2RlbFZhbHVlO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5mb3JtQ29udHJvbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUobmV3TW9kZWxWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pbmRldGVybWluYXRlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbmRldGVybWluYXRlID0gZmFsc2U7IC8vIFJlc2V0IGluZGV0ZXJtaW5hdGUgc3RhdGUgb24gdXNlciBpbnRlcmFjdGlvblxuICAgICAgICAgICAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZUNoYW5nZS5lbWl0KHRoaXMuaW5kZXRlcm1pbmF0ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBuZXdNb2RlbFZhbHVlID0gdGhpcy5jaGVja2VkKCkgPyB0aGlzLmZhbHNlVmFsdWUgOiB0aGlzLnRydWVWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMubW9kZWwgPSBuZXdNb2RlbFZhbHVlO1xuICAgICAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKG5ld01vZGVsVmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHsgY2hlY2tlZDogbmV3TW9kZWxWYWx1ZSwgb3JpZ2luYWxFdmVudDogZXZlbnQgfSk7XG4gICAgfVxuXG4gICAgaGFuZGxlQ2hhbmdlKGV2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5yZWFkb25seSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVNb2RlbChldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbklucHV0Rm9jdXMoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5mb2N1c2VkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5vbkZvY3VzLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIG9uSW5wdXRCbHVyKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLm9uQmx1ci5lbWl0KGV2ZW50KTtcbiAgICAgICAgdGhpcy5vbk1vZGVsVG91Y2hlZCgpO1xuICAgIH1cblxuICAgIGZvY3VzKCkge1xuICAgICAgICB0aGlzLmlucHV0Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKG1vZGVsOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tb2RlbCA9IG1vZGVsO1xuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBGdW5jdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLm9uTW9kZWxUb3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZSh2YWw6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVkID0gdmFsO1xuICAgICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY2hlY2tlZCgpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmluZGV0ZXJtaW5hdGUgJiYgKHRoaXMuYmluYXJ5ID8gdGhpcy5tb2RlbCA9PT0gdGhpcy50cnVlVmFsdWUgOiBPYmplY3RVdGlscy5jb250YWlucyh0aGlzLnZhbHVlLCB0aGlzLm1vZGVsKSk7XG4gICAgfVxufVxuIiwiPGRpdlxyXG4gICAgW25nU3R5bGVdPVwic3R5bGVcIlxyXG4gICAgW25nQ2xhc3NdPVwie1xyXG4gICAgJ2NheC1jaGVja2JveCBjYXgtY29tcG9uZW50JzogdHJ1ZSxcclxuICAgICdjYXgtY2hlY2tib3gtY2hlY2tlZCc6IGNoZWNrZWQoKSxcclxuICAgICdjYXgtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSc6IGluZGV0ZXJtaW5hdGUsXHJcbiAgICAnY2F4LWNoZWNrYm94LWRpc2FibGVkJzogZGlzYWJsZWQsXHJcbiAgICAnY2F4LWNoZWNrYm94LWZvY3VzZWQnOiBmb2N1c2VkLFxyXG4gICAgJ2NheC12YXJpYW50LWZpbGxlZCc6IHZhcmlhbnQgPT09ICdmaWxsZWQnIHx8IGNvbmZpZy5pbnB1dFN0eWxlKCkgPT09ICdmaWxsZWQnXHJcbn1cIlxyXG4gICAgW2NsYXNzXT1cInN0eWxlQ2xhc3NcIlxyXG4gICAgW2F0dHIuZGF0YS1wYy1uYW1lXT1cIidjaGVja2JveCdcIlxyXG4gICAgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidyb290J1wiXHJcbj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXgtaGlkZGVuLWFjY2Vzc2libGVcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2hpZGRlbklucHV0V3JhcHBlcidcIiBbYXR0ci5kYXRhLWNheC1oaWRkZW4tYWNjZXNzaWJsZV09XCJ0cnVlXCI+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICNpbnB1dFxyXG4gICAgICAgICAgICBbYXR0ci5pZF09XCJpbnB1dElkXCJcclxuICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcclxuICAgICAgICAgICAgW2F0dHIubmFtZV09XCJuYW1lXCJcclxuICAgICAgICAgICAgW2NoZWNrZWRdPVwiY2hlY2tlZCgpXCJcclxuICAgICAgICAgICAgW2F0dHIuaW5kZXRlcm1pbmF0ZV09XCJpbmRldGVybWluYXRlID8gJ3RydWUnIDogbnVsbFwiXHJcbiAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cInRhYmluZGV4XCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgICAgICAgW2F0dHIucmVxdWlyZWRdPVwicmVxdWlyZWRcIlxyXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnlcIlxyXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiXHJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtY2hlY2tlZF09XCJjaGVja2VkKClcIlxyXG4gICAgICAgICAgICAoY2hhbmdlKT1cImhhbmRsZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgKGZvY3VzKT1cIm9uSW5wdXRGb2N1cygkZXZlbnQpXCJcclxuICAgICAgICAgICAgKGJsdXIpPVwib25JbnB1dEJsdXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInaGlkZGVuSW5wdXQnXCJcclxuICAgICAgICAgICAgY2F4QXV0b0ZvY3VzXHJcbiAgICAgICAgICAgIFthdXRvZm9jdXNdPVwiYXV0b2ZvY3VzXCJcclxuICAgICAgICAvPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJjYXgtY2hlY2tib3gtYm94XCJcclxuICAgICAgICBbbmdDbGFzc109XCJ7ICdjYXgtaGlnaGxpZ2h0JzogY2hlY2tlZCgpLCAnY2F4LWRpc2FibGVkJzogZGlzYWJsZWQsICdjYXgtZm9jdXMnOiBmb2N1c2VkLFxyXG4gICAgICAgICdjYXgtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSc6IGluZGV0ZXJtaW5hdGUsIFxyXG4gICAgICAgICdjYXgtY2hlY2tib3gtc20nOiBzaXplID09ICdzbScsXHJcbiAgICAgICAgJ2NheC1jaGVja2JveC1tZCc6IHNpemUgPT0gJ21kJyxcclxuICAgICAgICAnY2F4LWNoZWNrYm94LWxnJzogc2l6ZSA9PSAnbGcnLCB9XCJcclxuICAgICAgICAoY2xpY2spPVwib25DbGljaygkZXZlbnQsIGlucHV0LCB0cnVlKVwiXHJcbiAgICAgICAgW2F0dHIuZGF0YS1jYXgtaGlnaGxpZ2h0XT1cImNoZWNrZWQoKVwiXHJcbiAgICAgICAgW2F0dHIuZGF0YS1jYXgtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgIFthdHRyLmRhdGEtY2F4LWZvY3VzZWRdPVwiZm9jdXNlZFwiXHJcbiAgICAgICAgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidpbnB1dCdcIlxyXG4gICAgPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImluZGV0ZXJtaW5hdGVcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImNheCBjYXgtbGVhZiBjYXgtY2hlY2tib3gtbGVhZi1pbmRldGVybWluYXRlIGNheC1jaGVja2JveC1pY29uXCI+PC9zcGFuPiAgXHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2hlY2tlZCgpICYmICFpbmRldGVybWluYXRlXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY2hlY2tib3hJY29uVGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY2hlY2tib3hJY29uXCIgY2xhc3M9XCJjYXgtY2hlY2tib3gtaWNvblwiIFtuZ0NsYXNzXT1cImNoZWNrYm94SWNvblwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInaWNvbidcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDxDaGVja0ljb24gKm5nSWY9XCIhY2hlY2tib3hJY29uXCIgW3N0eWxlQ2xhc3NdPVwiJ2NheC1jaGVja2JveC1pY29uJ1wiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInaWNvbidcIiAvPiAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY2hlY2tib3hJY29uXCIgPlxyXG4gICAgICAgICAgICAgICAgICA8c3ZnXHJcbiAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTFcIlxyXG4gICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxMFwiXHJcbiAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTQgMTRcIlxyXG4gICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtaGlkZGVuXT1cImFyaWFIaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgICBbYXR0ci5yb2xlXT1cInJvbGVcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgIGQ9XCJNNC44NjE5OSAxMS41OTQ4QzQuNzg3MTcgMTEuNTkyMyA0LjcxMzY2IDExLjU3NDUgNC42NDU5NiAxMS41NDI2QzQuNTc4MjYgMTEuNTEwNyA0LjUxNzc5IDExLjQ2NTIgNC40NjgyNyAxMS40MDkxTDAuNzUzOTg1IDcuNjk0ODNDMC42ODMxNjcgNy42NDg5MSAwLjYyMzcwNiA3LjU4NzUxIDAuNTgwMDkyIDcuNTE1MjVDMC41MzY0NzggNy40NDI5OSAwLjUwOTg1MSA3LjM2MTc3IDAuNTAyMjIxIDcuMjc3NzFDMC40OTQ1OSA3LjE5MzY2IDAuNTA2MTU2IDcuMTA4OTcgMC41MzYwNDYgNy4wMzAwNEMwLjU2NTkzNSA2Ljk1MTExIDAuNjEzMzY3IDYuODggMC42NzQ3NTkgNi44MjIwOEMwLjczNjE1MSA2Ljc2NDE2IDAuODA5OSA2LjcyMDk1IDAuODkwNDM2IDYuNjk1NzFDMC45NzA5NzMgNi42NzA0NiAxLjA1NjE5IDYuNjYzODUgMS4xMzk2NiA2LjY3NjM1QzEuMjIzMTMgNi42ODg4NiAxLjMwMjY2IDYuNzIwMTcgMS4zNzIyNiA2Ljc2NzkyQzEuNDQxODYgNi44MTU2NyAxLjQ5OTcgNi44Nzg2IDEuNTQxNDEgNi45NTE5N0w0Ljg2MTk5IDEwLjI1MDNMMTIuNjM5NyAyLjQ5NDgzQzEyLjc0NDQgMi40MjY5NCAxMi44Njg5IDIuMzk2MTcgMTIuOTkzMiAyLjQwNzQ1QzEzLjExNzQgMi40MTg3MyAxMy4yMzQzIDIuNDcxNDEgMTMuMzI1MSAyLjU1NzA1QzEzLjQxNTkgMi42NDI2OCAxMy40NzUzIDIuNzU2MzIgMTMuNDkzOCAyLjg3OTczQzEzLjUxMjMgMy4wMDMxNSAxMy40ODg4IDMuMTI5MiAxMy40MjcxIDMuMjM3NjhMNS4yNTU3IDExLjQwOTFDNS4yMDYxOCAxMS40NjUyIDUuMTQ1NzEgMTEuNTEwNyA1LjA3ODAxIDExLjU0MjZDNS4wMTAzMSAxMS41NzQ1IDQuOTM2OCAxMS41OTIzIDQuODYxOTkgMTEuNTk0OFpcIlxyXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMVwiXHJcbiAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz5cclxuXHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNoZWNrYm94SWNvblRlbXBsYXRlXCIgY2xhc3M9XCJjYXgtY2hlY2tib3gtaWNvblwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInaWNvbidcIj5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cImNoZWNrYm94SWNvblRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG48bGFiZWxcclxuICAgIChjbGljayk9XCJvbkNsaWNrKCRldmVudCwgaW5wdXQsIHRydWUpXCJcclxuICAgIFtjbGFzc109XCJsYWJlbFN0eWxlQ2xhc3NcIlxyXG4gICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICdjYXgtY2hlY2tib3gtbGFiZWwnOiB0cnVlLCBcclxuICAgICAgICAnY2F4LWNoZWNrYm94LWxhYmVsLWFjdGl2ZSc6IGNoZWNrZWQoKSwgXHJcbiAgICAgICAgJ2NheC1kaXNhYmxlZCc6IGRpc2FibGVkLCBcclxuICAgICAgICAnY2F4LWNoZWNrYm94LWxhYmVsLWZvY3VzJzogZm9jdXNlZCxcclxuICAgICAgICAnY2F4LWNoZWNrYm94LWxhYmVsLXNtJzogc2l6ZSA9PT0gJ3NtJyxcclxuICAgICAgICAnY2F4LWNoZWNrYm94LWxhYmVsLW1kJzogc2l6ZSA9PT0gJ21kJyxcclxuICAgICAgICAnY2F4LWNoZWNrYm94LWxhYmVsLWxnJzogc2l6ZSA9PT0gJ2xnJ1xyXG4gICAgICB9XCJcclxuICAgICpuZ0lmPVwibGFiZWxcIlxyXG4gICAgW2F0dHIuZm9yXT1cImlucHV0SWRcIlxyXG4gICAgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidsYWJlbCdcIlxyXG4+XHJcbiAgICB7eyBsYWJlbCB9fTwvbGFiZWxcclxuPlxyXG4iXX0=
@@ -10,9 +10,10 @@ export class Chip {
10
10
  alt;
11
11
  style;
12
12
  styleClass;
13
- type = 'default';
14
13
  removable = false;
15
14
  removeIcon;
15
+ size = 'md';
16
+ severity = 'primary';
16
17
  onRemove = new EventEmitter();
17
18
  onImageError = new EventEmitter();
18
19
  config = inject(caxConfig);
@@ -33,7 +34,8 @@ export class Chip {
33
34
  return {
34
35
  'cax-chip cax-component': true,
35
36
  'cax-chip-image': this.image != null,
36
- [`cax-chip-${this.type}`]: !!this.type
37
+ [`cax-chip-${this.severity}`]: !!this.severity,
38
+ [`cax-chip-${this.size}`]: !!this.size
37
39
  };
38
40
  }
39
41
  close(event) {
@@ -49,13 +51,13 @@ export class Chip {
49
51
  this.onImageError.emit(event);
50
52
  }
51
53
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: Chip, deps: [], target: i0.ɵɵFactoryTarget.Component });
52
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.9", type: Chip, selector: "cax-chip", inputs: { label: "label", icon: "icon", image: "image", alt: "alt", style: "style", styleClass: "styleClass", type: "type", removable: ["removable", "removable", booleanAttribute], removeIcon: "removeIcon" }, outputs: { onRemove: "onRemove", onImageError: "onImageError" }, host: { classAttribute: "cax-element" }, queries: [{ propertyName: "templates", predicate: CaxTemplate }], ngImport: i0, template: "<div\r\n [ngClass]=\"containerClass()\"\r\n [class]=\"styleClass\"\r\n [ngStyle]=\"style\"\r\n *ngIf=\"visible\"\r\n [attr.data-pc-name]=\"'chip'\"\r\n [attr.aria-label]=\"label\"\r\n [attr.data-pc-section]=\"'root'\"\r\n>\r\n <ng-content></ng-content>\r\n <img [src]=\"image\" *ngIf=\"image; else iconTemplate\" (error)=\"imageError($event)\" [alt]=\"alt\" />\r\n <ng-template #iconTemplate>\r\n <span *ngIf=\"icon\" [class]=\"icon\" [ngClass]=\"'cax-chip-icon'\" [attr.data-pc-section]=\"'icon'\"></span>\r\n </ng-template>\r\n <div class=\"-chip-text\" *ngIf=\"label\" [attr.data-pc-section]=\"'label'\">{{ label }}</div>\r\n <ng-container *ngIf=\"removable\">\r\n <ng-container *ngIf=\"!removeIconTemplate\">\r\n <span\r\n tabindex=\"0\"\r\n *ngIf=\"removeIcon\"\r\n [class]=\"removeIcon\"\r\n [ngClass]=\"'cax-chip-remove-icon'\"\r\n [attr.data-pc-section]=\"'removeicon'\"\r\n (click)=\"close($event)\"\r\n (keydown)=\"onKeydown($event)\"\r\n [attr.aria-label]=\"removeAriaLabel\"\r\n role=\"button\"\r\n ></span>\r\n <TimesCircleIcon\r\n tabindex=\"0\"\r\n *ngIf=\"!removeIcon\"\r\n [class]=\"'cax-chip-remove-icon'\"\r\n [attr.data-pc-section]=\"'removeicon'\"\r\n (click)=\"close($event)\"\r\n (keydown)=\"onKeydown($event)\"\r\n [attr.aria-label]=\"removeAriaLabel\"\r\n role=\"button\"\r\n />\r\n </ng-container>\r\n <span\r\n *ngIf=\"removeIconTemplate\"\r\n tabindex=\"0\"\r\n [attr.data-pc-section]=\"'removeicon'\"\r\n class=\"cax-chip-remove-icon\"\r\n (click)=\"close($event)\"\r\n (keydown)=\"onKeydown($event)\"\r\n [attr.aria-label]=\"removeAriaLabel\"\r\n role=\"button\"\r\n >\r\n <ng-template *ngTemplateOutlet=\"removeIconTemplate\"></ng-template>\r\n </span>\r\n </ng-container>\r\n</div>\r\n", styles: ["@layer cax{.cax-chip{display:inline-flex;align-items:center;padding:6px 8px;height:30px!important}.cax-chip-text{line-height:1.5;font-weight:600}.cax-chip-icon,.cax-chip-remove-icon{line-height:1.5;font-weight:600!important}.cax-chip-remove-icon{cursor:pointer}.cax-chip img{border-radius:50%}.cax-chip-success{background-color:var(--green-200);color:var(--green-base);transition:background-color .3s ease}.cax-chip-success:hover{background-color:var(--green-300);cursor:pointer}.cax-chip-warning{background-color:var(--orange-200);color:var(--orange-base);transition:background-color .3s ease}.cax-chip-warning:hover{background-color:var(--orange-300);cursor:pointer}.cax-chip-danger{background-color:#ffebeb;color:var(--red-base);transition:background-color .3s ease}.cax-chip-danger:hover{background-color:var(--red-200);cursor:pointer}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.TimesCircleIcon, selector: "TimesCircleIcon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
54
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.9", type: Chip, selector: "cax-chip", inputs: { label: "label", icon: "icon", image: "image", alt: "alt", style: "style", styleClass: "styleClass", removable: ["removable", "removable", booleanAttribute], removeIcon: "removeIcon", size: "size", severity: "severity" }, outputs: { onRemove: "onRemove", onImageError: "onImageError" }, host: { classAttribute: "cax-element" }, queries: [{ propertyName: "templates", predicate: CaxTemplate }], ngImport: i0, template: "<div\r\n [ngClass]=\"containerClass()\"\r\n [class]=\"styleClass\"\r\n [ngStyle]=\"style\"\r\n *ngIf=\"visible\"\r\n [attr.data-pc-name]=\"'chip'\"\r\n [attr.aria-label]=\"label\"\r\n [attr.data-pc-section]=\"'root'\"\r\n>\r\n <ng-content></ng-content>\r\n <img [src]=\"image\" *ngIf=\"image; else iconTemplate\" (error)=\"imageError($event)\" [alt]=\"alt\" />\r\n <ng-template #iconTemplate>\r\n <span *ngIf=\"icon\" [class]=\"icon\" [ngClass]=\"'cax-chip-icon'\" [attr.data-pc-section]=\"'icon'\"></span>\r\n </ng-template>\r\n <div class=\"-chip-text\" *ngIf=\"label\" [attr.data-pc-section]=\"'label'\">{{ label }}</div>\r\n <ng-container *ngIf=\"removable\">\r\n <ng-container *ngIf=\"!removeIconTemplate\">\r\n <span\r\n tabindex=\"0\"\r\n *ngIf=\"removeIcon\"\r\n [class]=\"removeIcon\"\r\n [ngClass]=\"'cax-chip-remove-icon'\"\r\n [attr.data-pc-section]=\"'removeicon'\"\r\n (click)=\"close($event)\"\r\n (keydown)=\"onKeydown($event)\"\r\n [attr.aria-label]=\"removeAriaLabel\"\r\n role=\"button\"\r\n ></span>\r\n <TimesCircleIcon\r\n tabindex=\"0\"\r\n *ngIf=\"!removeIcon\"\r\n [class]=\"'cax-chip-remove-icon'\"\r\n [attr.data-pc-section]=\"'removeicon'\"\r\n (click)=\"close($event)\"\r\n (keydown)=\"onKeydown($event)\"\r\n [attr.aria-label]=\"removeAriaLabel\"\r\n role=\"button\"\r\n />\r\n </ng-container>\r\n <span\r\n *ngIf=\"removeIconTemplate\"\r\n tabindex=\"0\"\r\n [attr.data-pc-section]=\"'removeicon'\"\r\n class=\"cax-chip-remove-icon\"\r\n (click)=\"close($event)\"\r\n (keydown)=\"onKeydown($event)\"\r\n [attr.aria-label]=\"removeAriaLabel\"\r\n role=\"button\"\r\n >\r\n <ng-template *ngTemplateOutlet=\"removeIconTemplate\"></ng-template>\r\n </span>\r\n </ng-container>\r\n</div>\r\n", styles: ["@layer cax{.cax-chip{display:inline-flex;align-items:center}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.TimesCircleIcon, selector: "TimesCircleIcon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
53
55
  }
54
56
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: Chip, decorators: [{
55
57
  type: Component,
56
58
  args: [{ selector: 'cax-chip', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
57
59
  class: 'cax-element'
58
- }, template: "<div\r\n [ngClass]=\"containerClass()\"\r\n [class]=\"styleClass\"\r\n [ngStyle]=\"style\"\r\n *ngIf=\"visible\"\r\n [attr.data-pc-name]=\"'chip'\"\r\n [attr.aria-label]=\"label\"\r\n [attr.data-pc-section]=\"'root'\"\r\n>\r\n <ng-content></ng-content>\r\n <img [src]=\"image\" *ngIf=\"image; else iconTemplate\" (error)=\"imageError($event)\" [alt]=\"alt\" />\r\n <ng-template #iconTemplate>\r\n <span *ngIf=\"icon\" [class]=\"icon\" [ngClass]=\"'cax-chip-icon'\" [attr.data-pc-section]=\"'icon'\"></span>\r\n </ng-template>\r\n <div class=\"-chip-text\" *ngIf=\"label\" [attr.data-pc-section]=\"'label'\">{{ label }}</div>\r\n <ng-container *ngIf=\"removable\">\r\n <ng-container *ngIf=\"!removeIconTemplate\">\r\n <span\r\n tabindex=\"0\"\r\n *ngIf=\"removeIcon\"\r\n [class]=\"removeIcon\"\r\n [ngClass]=\"'cax-chip-remove-icon'\"\r\n [attr.data-pc-section]=\"'removeicon'\"\r\n (click)=\"close($event)\"\r\n (keydown)=\"onKeydown($event)\"\r\n [attr.aria-label]=\"removeAriaLabel\"\r\n role=\"button\"\r\n ></span>\r\n <TimesCircleIcon\r\n tabindex=\"0\"\r\n *ngIf=\"!removeIcon\"\r\n [class]=\"'cax-chip-remove-icon'\"\r\n [attr.data-pc-section]=\"'removeicon'\"\r\n (click)=\"close($event)\"\r\n (keydown)=\"onKeydown($event)\"\r\n [attr.aria-label]=\"removeAriaLabel\"\r\n role=\"button\"\r\n />\r\n </ng-container>\r\n <span\r\n *ngIf=\"removeIconTemplate\"\r\n tabindex=\"0\"\r\n [attr.data-pc-section]=\"'removeicon'\"\r\n class=\"cax-chip-remove-icon\"\r\n (click)=\"close($event)\"\r\n (keydown)=\"onKeydown($event)\"\r\n [attr.aria-label]=\"removeAriaLabel\"\r\n role=\"button\"\r\n >\r\n <ng-template *ngTemplateOutlet=\"removeIconTemplate\"></ng-template>\r\n </span>\r\n </ng-container>\r\n</div>\r\n", styles: ["@layer cax{.cax-chip{display:inline-flex;align-items:center;padding:6px 8px;height:30px!important}.cax-chip-text{line-height:1.5;font-weight:600}.cax-chip-icon,.cax-chip-remove-icon{line-height:1.5;font-weight:600!important}.cax-chip-remove-icon{cursor:pointer}.cax-chip img{border-radius:50%}.cax-chip-success{background-color:var(--green-200);color:var(--green-base);transition:background-color .3s ease}.cax-chip-success:hover{background-color:var(--green-300);cursor:pointer}.cax-chip-warning{background-color:var(--orange-200);color:var(--orange-base);transition:background-color .3s ease}.cax-chip-warning:hover{background-color:var(--orange-300);cursor:pointer}.cax-chip-danger{background-color:#ffebeb;color:var(--red-base);transition:background-color .3s ease}.cax-chip-danger:hover{background-color:var(--red-200);cursor:pointer}}\n"] }]
60
+ }, template: "<div\r\n [ngClass]=\"containerClass()\"\r\n [class]=\"styleClass\"\r\n [ngStyle]=\"style\"\r\n *ngIf=\"visible\"\r\n [attr.data-pc-name]=\"'chip'\"\r\n [attr.aria-label]=\"label\"\r\n [attr.data-pc-section]=\"'root'\"\r\n>\r\n <ng-content></ng-content>\r\n <img [src]=\"image\" *ngIf=\"image; else iconTemplate\" (error)=\"imageError($event)\" [alt]=\"alt\" />\r\n <ng-template #iconTemplate>\r\n <span *ngIf=\"icon\" [class]=\"icon\" [ngClass]=\"'cax-chip-icon'\" [attr.data-pc-section]=\"'icon'\"></span>\r\n </ng-template>\r\n <div class=\"-chip-text\" *ngIf=\"label\" [attr.data-pc-section]=\"'label'\">{{ label }}</div>\r\n <ng-container *ngIf=\"removable\">\r\n <ng-container *ngIf=\"!removeIconTemplate\">\r\n <span\r\n tabindex=\"0\"\r\n *ngIf=\"removeIcon\"\r\n [class]=\"removeIcon\"\r\n [ngClass]=\"'cax-chip-remove-icon'\"\r\n [attr.data-pc-section]=\"'removeicon'\"\r\n (click)=\"close($event)\"\r\n (keydown)=\"onKeydown($event)\"\r\n [attr.aria-label]=\"removeAriaLabel\"\r\n role=\"button\"\r\n ></span>\r\n <TimesCircleIcon\r\n tabindex=\"0\"\r\n *ngIf=\"!removeIcon\"\r\n [class]=\"'cax-chip-remove-icon'\"\r\n [attr.data-pc-section]=\"'removeicon'\"\r\n (click)=\"close($event)\"\r\n (keydown)=\"onKeydown($event)\"\r\n [attr.aria-label]=\"removeAriaLabel\"\r\n role=\"button\"\r\n />\r\n </ng-container>\r\n <span\r\n *ngIf=\"removeIconTemplate\"\r\n tabindex=\"0\"\r\n [attr.data-pc-section]=\"'removeicon'\"\r\n class=\"cax-chip-remove-icon\"\r\n (click)=\"close($event)\"\r\n (keydown)=\"onKeydown($event)\"\r\n [attr.aria-label]=\"removeAriaLabel\"\r\n role=\"button\"\r\n >\r\n <ng-template *ngTemplateOutlet=\"removeIconTemplate\"></ng-template>\r\n </span>\r\n </ng-container>\r\n</div>\r\n", styles: ["@layer cax{.cax-chip{display:inline-flex;align-items:center}}\n"] }]
59
61
  }], propDecorators: { label: [{
60
62
  type: Input
61
63
  }], icon: [{
@@ -68,13 +70,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
68
70
  type: Input
69
71
  }], styleClass: [{
70
72
  type: Input
71
- }], type: [{
72
- type: Input
73
73
  }], removable: [{
74
74
  type: Input,
75
75
  args: [{ transform: booleanAttribute }]
76
76
  }], removeIcon: [{
77
77
  type: Input
78
+ }], size: [{
79
+ type: Input
80
+ }], severity: [{
81
+ type: Input
78
82
  }], onRemove: [{
79
83
  type: Output
80
84
  }], onImageError: [{
@@ -83,4 +87,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
83
87
  type: ContentChildren,
84
88
  args: [CaxTemplate]
85
89
  }] } });
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9jaGlwL2NoaXAudHMiLCIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvY2hpcC9jaGlwLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQixTQUFTLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUEwQix1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeE0sT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7QUFjaEYsTUFBTSxPQUFPLElBQUk7SUFDSixLQUFLLENBQXFCO0lBQzFCLElBQUksQ0FBcUI7SUFDekIsS0FBSyxDQUFxQjtJQUMxQixHQUFHLENBQXFCO0lBQ3hCLEtBQUssQ0FBOEM7SUFDbkQsVUFBVSxDQUFxQjtJQUMvQixJQUFJLEdBQWEsU0FBUyxDQUFDO0lBQ0ksU0FBUyxHQUF3QixLQUFLLENBQUM7SUFDdEUsVUFBVSxDQUFxQjtJQUU5QixRQUFRLEdBQTZCLElBQUksWUFBWSxFQUFjLENBQUM7SUFDcEUsWUFBWSxHQUF3QixJQUFJLFlBQVksRUFBUyxDQUFDO0lBRXhFLE1BQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFM0IsT0FBTyxHQUFZLElBQUksQ0FBQztJQUN4QixrQkFBa0IsQ0FBK0I7SUFFakQsSUFBSSxlQUFlO1FBQ2YsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUU2QixTQUFTLENBQXFDO0lBRTVFLGtCQUFrQjtRQUNiLElBQUksQ0FBQyxTQUFvQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3hELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLFlBQVksRUFBRSxDQUFDO2dCQUNsQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUM1QyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsY0FBYztRQUNWLE9BQU87WUFDSCx3QkFBd0IsRUFBRSxJQUFJO1lBQzlCLGdCQUFnQixFQUFFLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSTtZQUNwQyxDQUFDLFlBQVksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJO1NBQ3pDLENBQUM7SUFDTixDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQVk7UUFDZCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFtQixDQUFDLENBQUMsQ0FBQyxxREFBcUQ7SUFDbEcsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFvQjtRQUMxQixJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssT0FBTyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDckQsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QixDQUFDO0lBQ0wsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFZO1FBQ25CLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7dUdBdERRLElBQUk7MkZBQUosSUFBSSwwTEFRTyxnQkFBZ0IsMkxBZW5CLFdBQVcsNkJDdENoQywrNERBcURBOzsyRkR0Q2EsSUFBSTtrQkFWaEIsU0FBUzsrQkFDSSxVQUFVLG1CQUdILHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksUUFDL0I7d0JBQ0YsS0FBSyxFQUFFLGFBQWE7cUJBQ3ZCOzhCQUdRLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ2tDLFNBQVM7c0JBQWhELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQzdCLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUksUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQVd1QixTQUFTO3NCQUF0QyxlQUFlO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlckNvbnRlbnRJbml0LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBRdWVyeUxpc3QsIFRlbXBsYXRlUmVmLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0VuY2Fwc3VsYXRpb24sIGluamVjdCwgYm9vbGVhbkF0dHJpYnV0ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY2F4Q29uZmlnLCBDYXhUZW1wbGF0ZSwgVHJhbnNsYXRpb25LZXlzIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vYXBpJztcblxudHlwZSBDaGlwVHlwZSA9ICdkZWZhdWx0JyB8ICdzdWNjZXNzJyB8ICd3YXJuaW5nJyB8ICdkYW5nZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2NheC1jaGlwJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2hpcC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jaGlwLnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdjYXgtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIENoaXAgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcbiAgICBASW5wdXQoKSBsYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIEBJbnB1dCgpIGljb246IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBASW5wdXQoKSBpbWFnZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIEBJbnB1dCgpIGFsdDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIEBJbnB1dCgpIHN0eWxlOiB7IFtrbGFzczogc3RyaW5nXTogYW55IH0gfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBASW5wdXQoKSB0eXBlOiBDaGlwVHlwZSA9ICdkZWZhdWx0JztcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgcmVtb3ZhYmxlOiBib29sZWFuIHwgdW5kZWZpbmVkID0gZmFsc2U7XG4gICAgQElucHV0KCkgcmVtb3ZlSWNvbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgQE91dHB1dCgpIG9uUmVtb3ZlOiBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+KCk7XG4gICAgQE91dHB1dCgpIG9uSW1hZ2VFcnJvcjogRXZlbnRFbWl0dGVyPEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG5cbiAgICBjb25maWcgPSBpbmplY3QoY2F4Q29uZmlnKTtcblxuICAgIHZpc2libGU6IGJvb2xlYW4gPSB0cnVlO1xuICAgIHJlbW92ZUljb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIGdldCByZW1vdmVBcmlhTGFiZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5nZXRUcmFuc2xhdGlvbihUcmFuc2xhdGlvbktleXMuQVJJQSlbJ3JlbW92ZUxhYmVsJ107XG4gICAgfVxuXG4gICAgQENvbnRlbnRDaGlsZHJlbihDYXhUZW1wbGF0ZSkgdGVtcGxhdGVzOiBRdWVyeUxpc3Q8Q2F4VGVtcGxhdGU+IHwgdW5kZWZpbmVkO1xuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICAodGhpcy50ZW1wbGF0ZXMgYXMgUXVlcnlMaXN0PENheFRlbXBsYXRlPikuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgaWYgKGl0ZW0uZ2V0VHlwZSgpID09PSAncmVtb3ZlaWNvbicpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUljb25UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnRhaW5lckNsYXNzKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJ2NheC1jaGlwIGNheC1jb21wb25lbnQnOiB0cnVlLFxuICAgICAgICAgICAgJ2NheC1jaGlwLWltYWdlJzogdGhpcy5pbWFnZSAhPSBudWxsLFxuICAgICAgICAgICAgW2BjYXgtY2hpcC0ke3RoaXMudHlwZX1gXTogISF0aGlzLnR5cGVcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBjbG9zZShldmVudDogRXZlbnQpIHtcbiAgICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XG4gICAgICAgIHRoaXMub25SZW1vdmUuZW1pdChldmVudCBhcyBNb3VzZUV2ZW50KTsgLy8gQ2FzdCBpZiBuZWNlc3NhcnkgZm9yIE1vdXNlRXZlbnQtc3BlY2lmaWMgaGFuZGxlcnNcbiAgICB9XG5cbiAgICBvbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJyB8fCBldmVudC5rZXkgPT09ICdCYWNrc3BhY2UnKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlKGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGltYWdlRXJyb3IoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMub25JbWFnZUVycm9yLmVtaXQoZXZlbnQpO1xuICAgIH1cbn1cbiIsIjxkaXZcclxuICBbbmdDbGFzc109XCJjb250YWluZXJDbGFzcygpXCJcclxuICBbY2xhc3NdPVwic3R5bGVDbGFzc1wiXHJcbiAgW25nU3R5bGVdPVwic3R5bGVcIlxyXG4gICpuZ0lmPVwidmlzaWJsZVwiXHJcbiAgW2F0dHIuZGF0YS1wYy1uYW1lXT1cIidjaGlwJ1wiXHJcbiAgW2F0dHIuYXJpYS1sYWJlbF09XCJsYWJlbFwiXHJcbiAgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidyb290J1wiXHJcbj5cclxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgPGltZyBbc3JjXT1cImltYWdlXCIgKm5nSWY9XCJpbWFnZTsgZWxzZSBpY29uVGVtcGxhdGVcIiAoZXJyb3IpPVwiaW1hZ2VFcnJvcigkZXZlbnQpXCIgW2FsdF09XCJhbHRcIiAvPlxyXG4gIDxuZy10ZW1wbGF0ZSAjaWNvblRlbXBsYXRlPlxyXG4gICAgPHNwYW4gKm5nSWY9XCJpY29uXCIgW2NsYXNzXT1cImljb25cIiBbbmdDbGFzc109XCInY2F4LWNoaXAtaWNvbidcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2ljb24nXCI+PC9zcGFuPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbiAgPGRpdiBjbGFzcz1cIi1jaGlwLXRleHRcIiAqbmdJZj1cImxhYmVsXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidsYWJlbCdcIj57eyBsYWJlbCB9fTwvZGl2PlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZW1vdmFibGVcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhcmVtb3ZlSWNvblRlbXBsYXRlXCI+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcclxuICAgICAgICAqbmdJZj1cInJlbW92ZUljb25cIlxyXG4gICAgICAgIFtjbGFzc109XCJyZW1vdmVJY29uXCJcclxuICAgICAgICBbbmdDbGFzc109XCInY2F4LWNoaXAtcmVtb3ZlLWljb24nXCJcclxuICAgICAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3JlbW92ZWljb24nXCJcclxuICAgICAgICAoY2xpY2spPVwiY2xvc2UoJGV2ZW50KVwiXHJcbiAgICAgICAgKGtleWRvd24pPVwib25LZXlkb3duKCRldmVudClcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicmVtb3ZlQXJpYUxhYmVsXCJcclxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcclxuICAgICAgPjwvc3Bhbj5cclxuICAgICAgPFRpbWVzQ2lyY2xlSWNvblxyXG4gICAgICAgIHRhYmluZGV4PVwiMFwiXHJcbiAgICAgICAgKm5nSWY9XCIhcmVtb3ZlSWNvblwiXHJcbiAgICAgICAgW2NsYXNzXT1cIidjYXgtY2hpcC1yZW1vdmUtaWNvbidcIlxyXG4gICAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCIncmVtb3ZlaWNvbidcIlxyXG4gICAgICAgIChjbGljayk9XCJjbG9zZSgkZXZlbnQpXCJcclxuICAgICAgICAoa2V5ZG93bik9XCJvbktleWRvd24oJGV2ZW50KVwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJyZW1vdmVBcmlhTGFiZWxcIlxyXG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxyXG4gICAgICAvPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8c3BhblxyXG4gICAgICAqbmdJZj1cInJlbW92ZUljb25UZW1wbGF0ZVwiXHJcbiAgICAgIHRhYmluZGV4PVwiMFwiXHJcbiAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCIncmVtb3ZlaWNvbidcIlxyXG4gICAgICBjbGFzcz1cImNheC1jaGlwLXJlbW92ZS1pY29uXCJcclxuICAgICAgKGNsaWNrKT1cImNsb3NlKCRldmVudClcIlxyXG4gICAgICAoa2V5ZG93bik9XCJvbktleWRvd24oJGV2ZW50KVwiXHJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicmVtb3ZlQXJpYUxhYmVsXCJcclxuICAgICAgcm9sZT1cImJ1dHRvblwiXHJcbiAgICA+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cInJlbW92ZUljb25UZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICA8L3NwYW4+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvZGl2PlxyXG4iXX0=
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9jaGlwL2NoaXAudHMiLCIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvY2hpcC9jaGlwLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQixTQUFTLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUEwQix1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeE0sT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7QUFjaEYsTUFBTSxPQUFPLElBQUk7SUFDSixLQUFLLENBQXFCO0lBQzFCLElBQUksQ0FBcUI7SUFDekIsS0FBSyxDQUFxQjtJQUMxQixHQUFHLENBQXFCO0lBQ3hCLEtBQUssQ0FBOEM7SUFDbkQsVUFBVSxDQUFxQjtJQUNBLFNBQVMsR0FBd0IsS0FBSyxDQUFDO0lBQ3RFLFVBQVUsQ0FBcUI7SUFDL0IsSUFBSSxHQUF1QixJQUFJLENBQUM7SUFDaEMsUUFBUSxHQUFpQixTQUFTLENBQUM7SUFDbEMsUUFBUSxHQUE2QixJQUFJLFlBQVksRUFBYyxDQUFDO0lBQ3BFLFlBQVksR0FBd0IsSUFBSSxZQUFZLEVBQVMsQ0FBQztJQUN4RSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzNCLE9BQU8sR0FBWSxJQUFJLENBQUM7SUFDeEIsa0JBQWtCLENBQStCO0lBRWpELElBQUksZUFBZTtRQUNmLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFNkIsU0FBUyxDQUFxQztJQUU1RSxrQkFBa0I7UUFDYixJQUFJLENBQUMsU0FBb0MsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN4RCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxZQUFZLEVBQUUsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDNUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGNBQWM7UUFDVixPQUFPO1lBQ0gsd0JBQXdCLEVBQUUsSUFBSTtZQUM5QixnQkFBZ0IsRUFBRSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUk7WUFDcEMsQ0FBQyxZQUFZLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUTtZQUM5QyxDQUFDLFlBQVksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJO1NBQ3pDLENBQUM7SUFDTixDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQVk7UUFDZCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFtQixDQUFDLENBQUMsQ0FBQyxxREFBcUQ7SUFDbEcsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFvQjtRQUMxQixJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssT0FBTyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDckQsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QixDQUFDO0lBQ0wsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFZO1FBQ25CLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7dUdBckRRLElBQUk7MkZBQUosSUFBSSw0S0FPTyxnQkFBZ0IsK05BY25CLFdBQVcsNkJDcENoQywrNERBcURBOzsyRkR0Q2EsSUFBSTtrQkFWaEIsU0FBUzsrQkFDSSxVQUFVLG1CQUdILHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksUUFDL0I7d0JBQ0YsS0FBSyxFQUFFLGFBQWE7cUJBQ3ZCOzhCQUdRLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDa0MsU0FBUztzQkFBaEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDN0IsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBU3VCLFNBQVM7c0JBQXRDLGVBQWU7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyQ29udGVudEluaXQsIENvbXBvbmVudCwgQ29udGVudENoaWxkcmVuLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFF1ZXJ5TGlzdCwgVGVtcGxhdGVSZWYsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3RW5jYXBzdWxhdGlvbiwgaW5qZWN0LCBib29sZWFuQXR0cmlidXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjYXhDb25maWcsIENheFRlbXBsYXRlLCBUcmFuc2xhdGlvbktleXMgfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS9hcGknO1xuXG50eXBlIENoaXBTZXZlcml0eSA9ICdwcmltYXJ5JyB8ICdzZWNvbmRhcnknIHwgJ3N1Y2Nlc3MnIHwgJ3dhcm5pbmcnIHwgJ2Vycm9yJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdjYXgtY2hpcCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NoaXAuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY2hpcC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnY2F4LWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBDaGlwIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgQElucHV0KCkgbGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBASW5wdXQoKSBpY29uOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgQElucHV0KCkgaW1hZ2U6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBASW5wdXQoKSBhbHQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBASW5wdXQoKSBzdHlsZTogeyBba2xhc3M6IHN0cmluZ106IGFueSB9IHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHJlbW92YWJsZTogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHJlbW92ZUljb246IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBASW5wdXQoKSBzaXplOiAnc20nIHwgJ21kJyB8ICdsZycgPSAnbWQnO1xuICAgIEBJbnB1dCgpIHNldmVyaXR5OiBDaGlwU2V2ZXJpdHkgPSAncHJpbWFyeSc7XG4gICAgQE91dHB1dCgpIG9uUmVtb3ZlOiBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+KCk7XG4gICAgQE91dHB1dCgpIG9uSW1hZ2VFcnJvcjogRXZlbnRFbWl0dGVyPEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG4gICAgY29uZmlnID0gaW5qZWN0KGNheENvbmZpZyk7XG4gICAgdmlzaWJsZTogYm9vbGVhbiA9IHRydWU7XG4gICAgcmVtb3ZlSWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgZ2V0IHJlbW92ZUFyaWFMYWJlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLmdldFRyYW5zbGF0aW9uKFRyYW5zbGF0aW9uS2V5cy5BUklBKVsncmVtb3ZlTGFiZWwnXTtcbiAgICB9XG5cbiAgICBAQ29udGVudENoaWxkcmVuKENheFRlbXBsYXRlKSB0ZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxDYXhUZW1wbGF0ZT4gfCB1bmRlZmluZWQ7XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgICh0aGlzLnRlbXBsYXRlcyBhcyBRdWVyeUxpc3Q8Q2F4VGVtcGxhdGU+KS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXRlbS5nZXRUeXBlKCkgPT09ICdyZW1vdmVpY29uJykge1xuICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlSWNvblRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29udGFpbmVyQ2xhc3MoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAnY2F4LWNoaXAgY2F4LWNvbXBvbmVudCc6IHRydWUsXG4gICAgICAgICAgICAnY2F4LWNoaXAtaW1hZ2UnOiB0aGlzLmltYWdlICE9IG51bGwsXG4gICAgICAgICAgICBbYGNheC1jaGlwLSR7dGhpcy5zZXZlcml0eX1gXTogISF0aGlzLnNldmVyaXR5LFxuICAgICAgICAgICAgW2BjYXgtY2hpcC0ke3RoaXMuc2l6ZX1gXTogISF0aGlzLnNpemVcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBjbG9zZShldmVudDogRXZlbnQpIHtcbiAgICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XG4gICAgICAgIHRoaXMub25SZW1vdmUuZW1pdChldmVudCBhcyBNb3VzZUV2ZW50KTsgLy8gQ2FzdCBpZiBuZWNlc3NhcnkgZm9yIE1vdXNlRXZlbnQtc3BlY2lmaWMgaGFuZGxlcnNcbiAgICB9XG5cbiAgICBvbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJyB8fCBldmVudC5rZXkgPT09ICdCYWNrc3BhY2UnKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlKGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGltYWdlRXJyb3IoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMub25JbWFnZUVycm9yLmVtaXQoZXZlbnQpO1xuICAgIH1cbn1cbiIsIjxkaXZcclxuICBbbmdDbGFzc109XCJjb250YWluZXJDbGFzcygpXCJcclxuICBbY2xhc3NdPVwic3R5bGVDbGFzc1wiXHJcbiAgW25nU3R5bGVdPVwic3R5bGVcIlxyXG4gICpuZ0lmPVwidmlzaWJsZVwiXHJcbiAgW2F0dHIuZGF0YS1wYy1uYW1lXT1cIidjaGlwJ1wiXHJcbiAgW2F0dHIuYXJpYS1sYWJlbF09XCJsYWJlbFwiXHJcbiAgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidyb290J1wiXHJcbj5cclxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgPGltZyBbc3JjXT1cImltYWdlXCIgKm5nSWY9XCJpbWFnZTsgZWxzZSBpY29uVGVtcGxhdGVcIiAoZXJyb3IpPVwiaW1hZ2VFcnJvcigkZXZlbnQpXCIgW2FsdF09XCJhbHRcIiAvPlxyXG4gIDxuZy10ZW1wbGF0ZSAjaWNvblRlbXBsYXRlPlxyXG4gICAgPHNwYW4gKm5nSWY9XCJpY29uXCIgW2NsYXNzXT1cImljb25cIiBbbmdDbGFzc109XCInY2F4LWNoaXAtaWNvbidcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2ljb24nXCI+PC9zcGFuPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbiAgPGRpdiBjbGFzcz1cIi1jaGlwLXRleHRcIiAqbmdJZj1cImxhYmVsXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidsYWJlbCdcIj57eyBsYWJlbCB9fTwvZGl2PlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZW1vdmFibGVcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhcmVtb3ZlSWNvblRlbXBsYXRlXCI+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcclxuICAgICAgICAqbmdJZj1cInJlbW92ZUljb25cIlxyXG4gICAgICAgIFtjbGFzc109XCJyZW1vdmVJY29uXCJcclxuICAgICAgICBbbmdDbGFzc109XCInY2F4LWNoaXAtcmVtb3ZlLWljb24nXCJcclxuICAgICAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3JlbW92ZWljb24nXCJcclxuICAgICAgICAoY2xpY2spPVwiY2xvc2UoJGV2ZW50KVwiXHJcbiAgICAgICAgKGtleWRvd24pPVwib25LZXlkb3duKCRldmVudClcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicmVtb3ZlQXJpYUxhYmVsXCJcclxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcclxuICAgICAgPjwvc3Bhbj5cclxuICAgICAgPFRpbWVzQ2lyY2xlSWNvblxyXG4gICAgICAgIHRhYmluZGV4PVwiMFwiXHJcbiAgICAgICAgKm5nSWY9XCIhcmVtb3ZlSWNvblwiXHJcbiAgICAgICAgW2NsYXNzXT1cIidjYXgtY2hpcC1yZW1vdmUtaWNvbidcIlxyXG4gICAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCIncmVtb3ZlaWNvbidcIlxyXG4gICAgICAgIChjbGljayk9XCJjbG9zZSgkZXZlbnQpXCJcclxuICAgICAgICAoa2V5ZG93bik9XCJvbktleWRvd24oJGV2ZW50KVwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJyZW1vdmVBcmlhTGFiZWxcIlxyXG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxyXG4gICAgICAvPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8c3BhblxyXG4gICAgICAqbmdJZj1cInJlbW92ZUljb25UZW1wbGF0ZVwiXHJcbiAgICAgIHRhYmluZGV4PVwiMFwiXHJcbiAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCIncmVtb3ZlaWNvbidcIlxyXG4gICAgICBjbGFzcz1cImNheC1jaGlwLXJlbW92ZS1pY29uXCJcclxuICAgICAgKGNsaWNrKT1cImNsb3NlKCRldmVudClcIlxyXG4gICAgICAoa2V5ZG93bik9XCJvbktleWRvd24oJGV2ZW50KVwiXHJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicmVtb3ZlQXJpYUxhYmVsXCJcclxuICAgICAgcm9sZT1cImJ1dHRvblwiXHJcbiAgICA+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cInJlbW92ZUljb25UZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICA8L3NwYW4+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvZGl2PlxyXG4iXX0=