@sebgroup/green-angular 5.10.0 → 5.11.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 (35) hide show
  1. package/esm2022/lib/shared/core-control/index.mjs +2 -1
  2. package/esm2022/src/lib/shared/core-control/index.mjs +2 -1
  3. package/esm2022/src/v-angular/base-control-value-accessor/base-control-value-accessor.component.mjs +5 -2
  4. package/esm2022/src/v-angular/datepicker/components/date-input/date-input.component.mjs +3 -4
  5. package/esm2022/src/v-angular/datepicker/date-control-value-accessor/date-control-value-accessor.component.mjs +5 -2
  6. package/esm2022/src/v-angular/dropdown/dropdown.component.mjs +3 -3
  7. package/esm2022/src/v-angular/input/input.component.mjs +3 -3
  8. package/esm2022/src/v-angular/textarea/textarea.component.mjs +3 -3
  9. package/esm2022/v-angular/base-control-value-accessor/base-control-value-accessor.component.mjs +5 -2
  10. package/esm2022/v-angular/datepicker/components/date-input/date-input.component.mjs +3 -4
  11. package/esm2022/v-angular/datepicker/date-control-value-accessor/date-control-value-accessor.component.mjs +5 -2
  12. package/esm2022/v-angular/dropdown/dropdown.component.mjs +3 -3
  13. package/esm2022/v-angular/input/input.component.mjs +3 -3
  14. package/esm2022/v-angular/textarea/textarea.component.mjs +3 -3
  15. package/fesm2022/sebgroup-green-angular-src-lib-shared.mjs +1 -1
  16. package/fesm2022/sebgroup-green-angular-src-v-angular-base-control-value-accessor.mjs +4 -1
  17. package/fesm2022/sebgroup-green-angular-src-v-angular-base-control-value-accessor.mjs.map +1 -1
  18. package/fesm2022/sebgroup-green-angular-src-v-angular-datepicker.mjs +6 -3
  19. package/fesm2022/sebgroup-green-angular-src-v-angular-datepicker.mjs.map +1 -1
  20. package/fesm2022/sebgroup-green-angular-src-v-angular-dropdown.mjs +2 -2
  21. package/fesm2022/sebgroup-green-angular-src-v-angular-dropdown.mjs.map +1 -1
  22. package/fesm2022/sebgroup-green-angular-src-v-angular-input.mjs +2 -2
  23. package/fesm2022/sebgroup-green-angular-src-v-angular-input.mjs.map +1 -1
  24. package/fesm2022/sebgroup-green-angular-src-v-angular-textarea.mjs +2 -2
  25. package/fesm2022/sebgroup-green-angular-src-v-angular-textarea.mjs.map +1 -1
  26. package/fesm2022/sebgroup-green-angular-v-angular.mjs +16 -10
  27. package/fesm2022/sebgroup-green-angular-v-angular.mjs.map +1 -1
  28. package/fesm2022/sebgroup-green-angular.mjs +1 -1
  29. package/lib/shared/core-control/index.d.ts +1 -0
  30. package/package.json +2 -2
  31. package/src/lib/shared/core-control/index.d.ts +1 -0
  32. package/src/v-angular/base-control-value-accessor/base-control-value-accessor.component.d.ts +5 -1
  33. package/src/v-angular/datepicker/date-control-value-accessor/date-control-value-accessor.component.d.ts +5 -1
  34. package/v-angular/base-control-value-accessor/base-control-value-accessor.component.d.ts +5 -1
  35. package/v-angular/datepicker/date-control-value-accessor/date-control-value-accessor.component.d.ts +5 -1
@@ -1,3 +1,4 @@
1
1
  export * from './core-control.module';
2
2
  export * from './core-control.directive';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9zaGFyZWQvY29yZS1jb250cm9sL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsdUJBQXVCLENBQUE7QUFDckMsY0FBYywwQkFBMEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29yZS1jb250cm9sLm1vZHVsZSdcbmV4cG9ydCAqIGZyb20gJy4vY29yZS1jb250cm9sLmRpcmVjdGl2ZSdcbiJdfQ==
3
+ export * from './core-checkbox.directive';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9zaGFyZWQvY29yZS1jb250cm9sL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsdUJBQXVCLENBQUE7QUFDckMsY0FBYywwQkFBMEIsQ0FBQTtBQUN4QyxjQUFjLDJCQUEyQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb3JlLWNvbnRyb2wubW9kdWxlJ1xuZXhwb3J0ICogZnJvbSAnLi9jb3JlLWNvbnRyb2wuZGlyZWN0aXZlJ1xuZXhwb3J0ICogZnJvbSAnLi9jb3JlLWNoZWNrYm94LmRpcmVjdGl2ZSdcbiJdfQ==
@@ -1,3 +1,4 @@
1
1
  export * from './core-control.module';
2
2
  export * from './core-control.directive';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9zaGFyZWQvY29yZS1jb250cm9sL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsdUJBQXVCLENBQUE7QUFDckMsY0FBYywwQkFBMEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29yZS1jb250cm9sLm1vZHVsZSdcbmV4cG9ydCAqIGZyb20gJy4vY29yZS1jb250cm9sLmRpcmVjdGl2ZSdcbiJdfQ==
3
+ export * from './core-checkbox.directive';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9zaGFyZWQvY29yZS1jb250cm9sL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsdUJBQXVCLENBQUE7QUFDckMsY0FBYywwQkFBMEIsQ0FBQTtBQUN4QyxjQUFjLDJCQUEyQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb3JlLWNvbnRyb2wubW9kdWxlJ1xuZXhwb3J0ICogZnJvbSAnLi9jb3JlLWNvbnRyb2wuZGlyZWN0aXZlJ1xuZXhwb3J0ICogZnJvbSAnLi9jb3JlLWNoZWNrYm94LmRpcmVjdGl2ZSdcbiJdfQ==
@@ -221,7 +221,7 @@ export class NggvBaseControlValueAccessorComponent {
221
221
  return { code, params: errors[code] };
222
222
  }
223
223
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NggvBaseControlValueAccessorComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: TRANSLOCO_SCOPE, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
224
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NggvBaseControlValueAccessorComponent, selector: "ng-component", inputs: { id: "id", name: "name", label: "label", role: "role", value: "value", error: "error", errorList: "errorList", withErrorIcon: "withErrorIcon", description: "description", descriptionIsVisible: "descriptionIsVisible", autofocus: "autofocus", defaultValue: "defaultValue", reset: "reset", optional: "optional", locked: "locked", displayDisabledAsLocked: "displayDisabledAsLocked", required: "required", invalid: "invalid", valid: "valid", focused: "focused", disabled: "disabled" }, outputs: { nggvFocus: "nggvFocus", nggvBlur: "nggvBlur" }, host: { properties: { "attr.id": "this.id" } }, queries: [{ propertyName: "labelContentTpl", first: true, predicate: ["labelTpl"], descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true, read: ElementRef }], ngImport: i0, template: '', isInline: true }); }
224
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NggvBaseControlValueAccessorComponent, selector: "ng-component", inputs: { id: "id", name: "name", label: "label", role: "role", value: "value", error: "error", errorList: "errorList", withErrorIcon: "withErrorIcon", description: "description", descriptionIsVisible: "descriptionIsVisible", autofocus: "autofocus", defaultValue: "defaultValue", reset: "reset", optional: "optional", locked: "locked", displayDisabledAsLocked: "displayDisabledAsLocked", required: "required", invalid: "invalid", valid: "valid", focused: "focused", disabled: "disabled" }, outputs: { nggvFocus: "nggvFocus", nggvBlur: "nggvBlur" }, host: { properties: { "attr.id": "this.id" } }, queries: [{ propertyName: "labelContentTpl", first: true, predicate: ["labelTpl"], descendants: true, read: TemplateRef }, { propertyName: "lockedTpl", first: true, predicate: ["lockedTpl"], descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true, read: ElementRef }], ngImport: i0, template: '', isInline: true }); }
225
225
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NggvBaseControlValueAccessorComponent }); }
226
226
  }
227
227
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NggvBaseControlValueAccessorComponent, decorators: [{
@@ -241,6 +241,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
241
241
  }] }, { type: i0.ChangeDetectorRef }], propDecorators: { labelContentTpl: [{
242
242
  type: ContentChild,
243
243
  args: ['labelTpl', { read: TemplateRef }]
244
+ }], lockedTpl: [{
245
+ type: ContentChild,
246
+ args: ['lockedTpl', { read: TemplateRef }]
244
247
  }], inputRef: [{
245
248
  type: ViewChild,
246
249
  args: ['input', { read: ElementRef }]
@@ -294,4 +297,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
294
297
  }], nggvBlur: [{
295
298
  type: Output
296
299
  }] } });
297
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jb250cm9sLXZhbHVlLWFjY2Vzc29yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvdi1hbmd1bGFyL2Jhc2UtY29udHJvbC12YWx1ZS1hY2Nlc3Nvci9iYXNlLWNvbnRyb2wtdmFsdWUtYWNjZXNzb3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxNQUFNLEVBQ04sVUFBVSxFQUNWLEtBQUssRUFHTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLElBQUksRUFDSixXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFHTCxTQUFTLEVBR1QsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUE7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBa0IsTUFBTSxvQkFBb0IsQ0FBQTtBQUNwRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUMxQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7OztBQUkxQyxrRUFBa0U7QUFDbEUsTUFBTSxPQUFPLHFDQUFxQztJQStDaEQsb0VBQW9FO0lBQ3BFLElBQWEsTUFBTSxDQUFDLEtBQWlDO1FBQ25ELElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFBO1FBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUE7SUFDMUIsQ0FBQztJQUNELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQTtJQUNyQixDQUFDO0lBT0QsbURBQW1EO0lBQ25ELElBQWEsUUFBUSxDQUFDLEtBQWlDO1FBQ3JELElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFBO0lBQ3hC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VSxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFJTCxRQUFRO3NCQUFqRCxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBS1AsRUFBRTtzQkFBbEMsV0FBVzt1QkFBQyxTQUFTOztzQkFBRyxLQUFLO2dCQUVyQixJQUFJO3NCQUFaLEtBQUs7Z0JBS0csS0FBSztzQkFBYixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBSU8sTUFBTTtzQkFBbEIsS0FBSztnQkFRRyx1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBTU8sUUFBUTtzQkFBcEIsS0FBSztnQkF3Qk8sT0FBTztzQkFBbkIsS0FBSztnQkFhTyxLQUFLO3NCQUFqQixLQUFLO2dCQVVHLE9BQU87c0JBQWYsS0FBSztnQkFJTyxRQUFRO3NCQUFwQixLQUFLO2dCQWFhLFNBQVM7c0JBQTNCLE1BQU07Z0JBRVksUUFBUTtzQkFBMUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5qZWN0LFxuICBJbmplY3RhYmxlLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFNlbGYsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBOZ0NvbnRyb2wsXG4gIFZhbGlkYXRpb25FcnJvcnMsXG4gIFZhbGlkYXRvcixcbiAgVmFsaWRhdG9ycyxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnXG5pbXBvcnQgeyBUUkFOU0xPQ09fU0NPUEUsIFRyYW5zbG9jb1Njb3BlIH0gZnJvbSAnQGpzdmVyc2UvdHJhbnNsb2NvJ1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcblxuQEluamVjdGFibGUoKSAvLyBXb3JrYXJvdW5kIGZvciBDb21wb2RvYyBodHRwczovL2dpdGh1Yi5jb20vY29tcG9kb2MvY29tcG9kb2MvaXNzdWVzLzk4NFxuQENvbXBvbmVudCh7IHRlbXBsYXRlOiAnJyB9KSAvLyBSZXF1aXJlZCB3aXRoIEFuZ3VsYXIgaXZ5IGNvbXBpbGVyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1jbGFzcy1zdWZmaXhcbmV4cG9ydCBjbGFzcyBOZ2d2QmFzZUNvbnRyb2xWYWx1ZUFjY2Vzc29yQ29tcG9uZW50XG4gIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25Jbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3JcbntcbiAgLyoqIEN1c3RvbSB0ZW1wbGF0ZSBmb3IgZGlzcGxheWluZyB0aGUgY29udGVudCBvZiB0aGUgbGFiZWwuXG4gICAqIFNwZWNpZmllZCBieSBuZXN0aW5nIGFuIGA8bmctdGVtcGxhdGUgI2xhYmVsVHBsPkN1c3RvbSBMYWJlbDwvbmctdGVtcGxhdGU+YC5cbiAgICovXG4gIEBDb250ZW50Q2hpbGQoJ2xhYmVsVHBsJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBsYWJlbENvbnRlbnRUcGw/OiBUZW1wbGF0ZVJlZjx1bmRlZmluZWQ+XG5cbiAgLyoqIFJlZmVyZW5jZSB0byB0aGUgbmF0aXZlIGNoaWxkIGlucHV0IGVsZW1lbnQuICovXG4gIEBWaWV3Q2hpbGQoJ2lucHV0JywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGlucHV0UmVmPzogRWxlbWVudFJlZlxuXG4gIC8qIEFUVFJJQlVURVMgKi9cblxuICAvKiogSWQgb2YgdGhlIGhvc3QgZWxlbWVudCBhbmQgaXMgYWNjZXNzaWJsZSBieSB0aGUgY2hpbGRyZW4sIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGlmIG5vdCBwcm92aWRlZC4gKi9cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJykgQElucHV0KCkgaWQgPSAod2luZG93IGFzIGFueSkubmdndj8ubmV4dElkKClcbiAgLyoqIE5hbWUgb2YgdGhlIGNoaWxkIGlucHV0IGVsZW1lbnQuICovXG4gIEBJbnB1dCgpIG5hbWU/OiBzdHJpbmdcbiAgLyoqXG4gICAqIExhYmVsIG9mIHRoZSBjaGlsZCBpbnB1dCBlbGVtZW50IHVzaW5nIHRoZSBkZWZhdWx0IHRlbXBsYXRlLlxuICAgKiBDYW4gYmUgb3ZlcndyaXR0ZW4gYnkgc3BlY2lmeWluZyBhbiBgPG5nLXRlbXBsYXRlICNsYWJlbFRwbD5DdXN0b20gTGFiZWw8L25nLXRlbXBsYXRlPmAuXG4gICAqL1xuICBASW5wdXQoKSBsYWJlbD86IHN0cmluZ1xuICAvKiogUm9sZSBvZiB0aGUgY2hpbGQgaW5wdXQgZWxlbWVudC4gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQWNjZXNzaWJpbGl0eS9BUklBL1JvbGVzICovXG4gIEBJbnB1dCgpIHJvbGU/OiBzdHJpbmdcbiAgLyoqIFZhbHVlIG9mIHRoZSBjaGlsZCBpbnB1dCBlbGVtZW50LiBNb3N0bHkgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIHJhZGlvIGFuZCBjaGVja2JveGVzLiAqL1xuICBASW5wdXQoKSB2YWx1ZTogYW55XG4gIC8qKiBBbiBlcnJvciBzdHJpbmcgdG8gYmUgc2hvd24gdW5kZXIgaW52YWxpZCBpbnB1dHMuIE92ZXJ3cml0ZXMgYW55IGZvcm0gZXJyb3JzLiAqL1xuICBASW5wdXQoKSBlcnJvcj86IHN0cmluZ1xuICAvKiogQGRlcHJlY2F0ZWQgT25seSBvbmUgZXJyb3Igc2hvdWxkIGJlIHNob3duIHVuZGVyIGVhY2ggZmllbGQuICovXG4gIEBJbnB1dCgpIGVycm9yTGlzdD86IHN0cmluZ1tdXG4gIC8qKiBAZGVwcmVjYXRlZCBJY29uIGlzIGFsd2F5cyBhZGRlZCBiZWZvcmUgZXJyb3IuICovXG4gIEBJbnB1dCgpIHdpdGhFcnJvckljb24/OiBib29sZWFuID0gZmFsc2VcbiAgLyoqIERlc2NyaXB0aW9uIG9mIHRoZSBjaGlsZCBpbnB1dCBlbGVtZW50LiBCb3RoIHZpc2libHkgYW5kIGFzIGBhcmlhLWxhYmVsYC4gKi9cbiAgQElucHV0KCkgZGVzY3JpcHRpb24/OiBzdHJpbmdcbiAgLyoqIERldGVybWluZXMgaWYgdGhlIGxhYmVsIHVzZWQgdG8gZGlzcGxheSB0aGUgXCJkZXNjcmlwdGlvblwiIHRleHQgd2lsbCBiZSByZW5kZXJlZCB0byBET00gKi9cbiAgQElucHV0KCkgZGVzY3JpcHRpb25Jc1Zpc2libGUgPSB0cnVlXG4gIC8qKiBJZiBzZXQgdG8gdHJ1ZSwgdGhlIGJyb3dzZXIgd2lsbCB0cnkgdG8gYXV0b21hdGljYWxseSBzZXQgZm9jdXMgdG8gdGhlIGNoaWxkIGlucHV0IGVsZW1lbnQuICovXG4gIEBJbnB1dCgpIGF1dG9mb2N1cyA9IGZhbHNlXG4gIC8qKiBEZWFmdWx0IHZhbHVlIG9mIHRoZSBjaGlsZCBpbnB1dCBlbGVtZW50LiBVc2VkIHdoZW4gcmVzZXR0aW5nIGNoaWxkIGVsZW1lbnQuICovXG4gIEBJbnB1dCgpIGRlZmF1bHRWYWx1ZT86IGFueVxuICAvKiogSWYgcGFzc2VkLCB0aGUgY29tcG9uZW50IHdpbGwgbGlzdGVuIGZvciB1cGRhdGVzIGFuZCB3aWxsIHJlc2V0IGl0cyB2YWx1ZS4gKi9cbiAgQElucHV0KCkgcmVzZXQ/OiBPYnNlcnZhYmxlPGFueT5cbiAgLyoqIEFkZHMgKE9wdGlvbmFsKSB0byBpbnB1dCBsYWJlbC4gKi9cbiAgQElucHV0KCkgb3B0aW9uYWw/OiBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZFxuXG4gIHByaXZhdGUgX2xvY2tlZDogYm9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWQgPSB1bmRlZmluZWRcbiAgLyoqIEhpZGVzIHRoZSBpbnB1dCBib3JkZXJzIGFuZCBkaXNwbGF5cyBjdXJyZW50IHZhbHVlIGFzIGEgdGV4dC4gKi9cbiAgQElucHV0KCkgc2V0IGxvY2tlZCh2YWx1ZTogYm9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9sb2NrZWQgPSB2YWx1ZVxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKVxuICB9XG4gIGdldCBsb2NrZWQoKTogYm9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9sb2NrZWRcbiAgfVxuICAvKiogSWYgc2V0IHRvIHRydWUsIHVzaW5nIGEgY29udHJvbHMgZGlzYWJsZWQgc3RhdGUgd2lsbCBkaXNwbGF5IGlucHV0IGFzIGxvY2tlZC4gKi9cbiAgQElucHV0KCkgZGlzcGxheURpc2FibGVkQXNMb2NrZWQ/OiBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZFxuXG4gIC8qIFNUQVRFUyAqL1xuXG4gIHByaXZhdGUgX3JlcXVpcmVkOiBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuICAvKiogT3ZlcnJpZGUgdGhlIHJlcXVpcmVkIGZsYWcgb2YgdGhlIGNvbXBvbmVudC4gKi9cbiAgQElucHV0KCkgc2V0IHJlcXVpcmVkKHZhbHVlOiBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX3JlcXVpcmVkID0gdmFsdWVcbiAgfVxuICAvKiogQ2hpbGQgaW5wdXQgZWxlbWVudCBpcyBjb25zaWRlcmVkIHJlcXVpcmVkIGFuZCBjaGFuZ2VzIGRlZmF1bHQgbGFiZWwgdGVtcGxhdGUgYWNjb3JkaW5nbHkuICovXG4gIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgLy8gaWYgcmVxdWlyZWQgaXMgc2V0ID0+IHJldHVybiByZXF1aXJlZFxuICAgIGlmICh0aGlzLl9yZXF1aXJlZCAhPT0gdW5kZWZpbmVkKSByZXR1cm4gdGhpcy5fcmVxdWlyZWRcblxuICAgIC8vIGlmIHJlcXVpcmVkIGNhbiBiZSBkZXRlcm1pbmVkIGZyb20gdGhlIGNvbnRyb2wgPT4gcmV0dXJuIGNvbnRyb2wucmVxdWlyZWRcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2w/LnZhbGlkYXRvcikge1xuICAgICAgY29uc3QgdmFsaWRhdG9yID0gdGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2w/LnZhbGlkYXRvcihcbiAgICAgICAge30gYXMgQWJzdHJhY3RDb250cm9sLFxuICAgICAgKVxuICAgICAgLy8gcmV0dXJucyB0cnVlIGZvciBhbnkgZXJyb3IgdGhhdCBzdGFydHMgd2l0aCByZXF1aXJlZFxuICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHZhbGlkYXRvciA/PyB7fSkuc29tZSgoa2V5KSA9PlxuICAgICAgICBrZXkuc3RhcnRzV2l0aCgncmVxdWlyZWQnKSxcbiAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm5cbiAgfVxuXG4gIHByaXZhdGUgX2ludmFsaWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSB1bmRlZmluZWRcbiAgLyoqIE92ZXJyaWRlIHRoZSBpbnZhbGlkIHN0YXRlIG9mIHRoZSBjb21wb25lbnQuICovXG4gIEBJbnB1dCgpIHNldCBpbnZhbGlkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5faW52YWxpZCA9IHZhbHVlXG4gIH1cbiAgLyoqIFRoZSBjb21wb25lbnQgaGFzIHRoZSBpbnZhbGlkIHN0YXRlLCB1c3VhbGx5IGRlY29yYXRpbmcgdGhlIGVsZW1lbnRzIHJlZCBhbmQgc2hvd3MgdGhlIGZpcnN0IGVycm9yLiAqL1xuICBnZXQgaW52YWxpZCgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5faW52YWxpZCA9PT0gdHJ1ZSB8fCB0aGlzLl9pbnZhbGlkID09PSBmYWxzZSkgcmV0dXJuIHRoaXMuX2ludmFsaWRcbiAgICByZXR1cm4gKFxuICAgICAgISF0aGlzLm5nQ29udHJvbD8uY29udHJvbD8uaW52YWxpZCAmJiB0aGlzLm5nQ29udHJvbD8uY29udHJvbD8udG91Y2hlZFxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgX3ZhbGlkOiBib29sZWFuIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkXG4gIC8qKiBPdmVycmlkZSB0aGUgdmFsaWQgc3RhdGUgb2YgdGhlIGNvbXBvbmVudC4gKi9cbiAgQElucHV0KCkgc2V0IHZhbGlkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fdmFsaWQgPSB2YWx1ZVxuICB9XG4gIC8qKiBUaGUgY29tcG9uZW50IGhhcyB0aGUgdmFsaWQgc3RhdGUsIHVzdWFsbHkgZGVjb3JhdGluZyB0aGUgZWxlbWVudHMgZ3JlZW4uICovXG4gIGdldCB2YWxpZCgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5fdmFsaWQgPT09IHRydWUgfHwgdGhpcy5fdmFsaWQgPT09IGZhbHNlKSByZXR1cm4gdGhpcy5fdmFsaWRcbiAgICByZXR1cm4gISF0aGlzLm5nQ29udHJvbD8uY29udHJvbD8udmFsaWQgJiYgdGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2w/LnRvdWNoZWRcbiAgfVxuXG4gIC8qKiBUaGUgY29tcG9uZW50IGhhcyB0aGUgZm9jdXNlZCBzdGF0ZSwgdXBkYXRlZCBieSB0aGUgY2hpbGQgaW5wdXQgZWxlbWVudCdzIGZvY3VzIHN0YXRlLiAqL1xuICBASW5wdXQoKSBmb2N1c2VkID0gZmFsc2VcblxuICBwcml2YXRlIF9kaXNhYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuICAvKiogT3ZlcnJpZGUgdGhlIGRpc2FibGVkIHN0YXRlIG9mIHRoZSBjb21wb25lbnQuICovXG4gIEBJbnB1dCgpIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gdmFsdWVcbiAgfVxuICAvKiogVGhlIGNvbXBvbmVudCBoYXMgdGhlIGRpc2FibGVkIHN0YXRlLCB1c3VhbGx5IG11dGluZyB0aGUgY29sb3JzIGFuZCByZW1vdmVzIGludGVyYWN0aW9uLiAqL1xuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuX2Rpc2FibGVkID09PSB0cnVlIHx8IHRoaXMuX2Rpc2FibGVkID09PSBmYWxzZSlcbiAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZFxuICAgIHJldHVybiAhIXRoaXMubmdDb250cm9sPy5jb250cm9sPy5kaXNhYmxlZFxuICB9XG5cbiAgLyogVFJJR0dFUlMgKi9cblxuICAvKiogRW1pdHMgZm9jdXMgZXZlbnRzIHRyaWdnZXJlZCBieSB0aGUgY2hpbGQgZWxlbWVudHMuICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBuZ2d2Rm9jdXMgPSBuZXcgRXZlbnRFbWl0dGVyKClcbiAgLyoqIEVtaXRzIGZvY3VzIGV2ZW50cyB0cmlnZ2VyZWQgYnkgdGhlIGNoaWxkIGVsZW1lbnRzLiAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgbmdndkJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyKClcblxuICAvKiBWQUxVRSBIQU5ETEVSUyAqL1xuXG4gIHByaXZhdGUgX3N0YXRlOiBhbnkgPSBudWxsXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHJvdGVjdGVkIG9uQ2hhbmdlID0gKF86IGFueSkgPT4ge1xuICAgIC8vIGRvIG5vdGhpbmdcbiAgfVxuICAvKiogQGludGVybmFsICovXG4gIHByb3RlY3RlZCBvblRvdWNoZWQgPSAoKSA9PiB7XG4gICAgLy8gZG8gbm90aGluZ1xuICB9XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHJvdGVjdGVkIG9uVmFsaWRhdG9yQ2hhbmdlOiAoKSA9PiB2b2lkID0gKCkgPT4gbnVsbFxuXG4gIC8qIE9USEVSIFZBUklBQkxFUyAqL1xuICBzY29wZTogc3RyaW5nIHwgdW5kZWZpbmVkXG5cbiAgLyogTElGRSBDWUNMRSBWQVJJQUJMRVMgKi9cblxuICBwcml2YXRlIF9vbkRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IEJhc2VDb250cm9sVmFsdWVBY2Nlc3NvckNvbXBvbmVudC5cbiAgICogQHBhcmFtIG5nQ29udHJvbCBvcHRpb25hbCBGb3JtQ29udHJvbCBwcm92aWRlZCB3aGVuIGNvbXBvbmVudCBpcyB1c2VkIGluIGEgZm9ybSwgdGhyb3VnaCBkZXBlbmRlbmN5IGluamVjdGlvbi5cbiAgICogQHBhcmFtIHRyYW5zbG9jb1Njb3BlIG9wdGlvbmFsIFRyYW5zbG9jb1Njb3BlIHByb3ZpZGVkIGlmIGNvbXBvbmVudCBpcyB1c2VkIHdpdGhpbiBhIHNjb3BlLlxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgQFNlbGYoKSBAT3B0aW9uYWwoKSBwdWJsaWMgbmdDb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgQE9wdGlvbmFsKClcbiAgICBASW5qZWN0KFRSQU5TTE9DT19TQ09QRSlcbiAgICBwcm90ZWN0ZWQgdHJhbnNsb2NvU2NvcGU6IFRyYW5zbG9jb1Njb3BlLFxuICAgIHByb3RlY3RlZCBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICApIHtcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgIC8vIE5vdGU6IHdlIHByb3ZpZGUgdGhlIHZhbHVlIGFjY2Vzc29yIHRocm91Z2ggaGVyZSwgaW5zdGVhZCBvZlxuICAgICAgLy8gdGhlIGBwcm92aWRlcnNgIHRvIGF2b2lkIHJ1bm5pbmcgaW50byBhIGNpcmN1bGFyIGltcG9ydC5cbiAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzXG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHJhbnNsb2NvU2NvcGUpIHRoaXMuc2NvcGUgPSB0aGlzLnRyYW5zbG9jb1Njb3BlLnRvU3RyaW5nKClcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29udGV4dHVhbC1saWZlY3ljbGVcbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubmdDb250cm9sICYmIHRoaXMubmdDb250cm9sLmNvbnRyb2wpIHtcbiAgICAgIHRoaXMubmdDb250cm9sLmNvbnRyb2wuc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFt0aGlzLm5nQ29udHJvbC5jb250cm9sLnZhbGlkYXRvciwgdGhpcy52YWxpZGF0ZV0pLFxuICAgICAgKVxuICAgIH1cblxuICAgIC8vIGlmIHJlc2V0IG9ic2VydmFibGUgaGFzIGJlZW4gcGFzc2VkLCBzdWJzY3JpYmUgYWZ0ZXIgdXBkYXRlc1xuICAgIHRoaXMucmVzZXQ/LnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICAvLyByZXNldCB2YWx1ZSBvZiBjb250cm9sbGVyXG4gICAgICAgIHRoaXMuc3RhdGUgPSB0aGlzLmRlZmF1bHRWYWx1ZVxuICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuc3RhdGUpXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKVxuICAgICAgfSxcbiAgICB9KVxuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb250ZXh0dWFsLWxpZmVjeWNsZVxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgLy8gaWYgZGVmYXVsdCB2YWx1ZSBpcyBzZXQsIHRoZW4gZG9uJ3QgYWx0ZXIgaXQuIE90aGVyd2lzZSwgdXNlXG4gICAgLy8gY3VycmVudCB2YWx1ZSBvZiBjb250cm9sbGVyIGFmdGVyIGluaXRpYXRpb24gYXMgZGVmYXVsdCB2YWx1ZVxuICAgIHRoaXMuZGVmYXVsdFZhbHVlID0gdGhpcy5kZWZhdWx0VmFsdWUgPz8gdGhpcy5uZ0NvbnRyb2w/LnZhbHVlXG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9vbkRlc3Ryb3kkLm5leHQodHJ1ZSlcbiAgICB0aGlzLl9vbkRlc3Ryb3kkLmNvbXBsZXRlKClcbiAgfVxuXG4gIGRldGVjdENoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpXG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIG9uRm9jdXMoZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uXG4gICAgICA/IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICA6IChldmVudC5jYW5jZWxCdWJibGUgPSB0cnVlKVxuICAgIHRoaXMuZm9jdXNlZCA9IHRydWVcbiAgICB0aGlzLm5nZ3ZGb2N1cy5lbWl0KGV2ZW50KVxuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBvbkJsdXIoZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uXG4gICAgICA/IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICA6IChldmVudC5jYW5jZWxCdWJibGUgPSB0cnVlKVxuICAgIHRoaXMub25Ub3VjaGVkKClcbiAgICB0aGlzLmZvY3VzZWQgPSBmYWxzZVxuICAgIHRoaXMubmdndkJsdXIuZW1pdChldmVudClcbiAgfVxuXG4gIC8qKiBTZXRzIHRoZSBmb2N1cyBvbiB0aGUgYWN0dWFsIGlucHV0IGVsZW1lbnQuICovXG4gIHNldEZvY3VzKCkge1xuICAgIGlmICh0aGlzLmlucHV0UmVmKSB0aGlzLmlucHV0UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKVxuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBDT05UUk9MIFZBTFVFIEFDQ0VTU09SXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAvKiogSW50ZXJuYWwgc3RhdGUvdmFsdWUgdGhhdCB0aGUgbmF0aXZlIGlucHV0IGVsZW1lbnQgaGFzLiAgKi9cbiAgZ2V0IHN0YXRlKCkge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZVxuICB9XG5cbiAgLyoqIEludGVybmFsIHN0YXRlL3ZhbHVlIHRoYXQgdGhlIG5hdGl2ZSBpbnB1dCBlbGVtZW50IGhhcy4gICovXG4gIHNldCBzdGF0ZSh2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnKSB2YWx1ZSA9IG51bGxcbiAgICB0aGlzLl9zdGF0ZSA9IHZhbHVlXG4gIH1cblxuICAvKiogV3JpdGVzIGEgbmV3IHZhbHVlIHRvIHRoZSBjaGlsZCBpbnB1dCBlbGVtZW50LiAqL1xuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlID0gdmFsdWVcbiAgfVxuXG4gIC8qKiBSZWdpc3RlcnMgYSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aGVuIHRoZSBjaGlsZCBpbnB1dCBlbGVtZW50J3MgdmFsdWUgY2hhbmdlcy4gKi9cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKF86IGFueSkgPT4gb2JqZWN0KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuXG4gIH1cblxuICAvKiogUmVnaXN0ZXJzIGEgY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgd2hlbiB0aGUgY2hpbGQgaW5wdXQgZWxlbWVudCB0cmlnZ2VycyBvbiBibHVyLiAqL1xuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm5cbiAgfVxuXG4gIC8qKiBGdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCBieSB0aGUgZm9ybXMgQVBJIHdoZW4gdGhlIGNvbnRyb2wgc3RhdHVzIGNoYW5nZXMgdG8gb3IgZnJvbSAnRElTQUJMRUQnLiAqL1xuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZFxuXG4gICAgLy8gaWYgZGlzcGxheURpc2FibGVkQXNMb2NrZWQgaXMgZW5hYmxlZCAtIHVwZGF0ZSBsb2NrZWQgc3RhdGUgYmFzZWQgb24gZGlzYWJsZWQgc3RhdGVcbiAgICBpZiAodGhpcy5kaXNwbGF5RGlzYWJsZWRBc0xvY2tlZCkge1xuICAgICAgdGhpcy5sb2NrZWQgPSBpc0Rpc2FibGVkXG4gICAgfVxuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBWQUxJREFUT1JTXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAvKiogTWV0aG9kIHRoYXQgcGVyZm9ybXMgc3luY2hyb25vdXMgdmFsaWRhdGlvbiBhZ2FpbnN0IHRoZSBwcm92aWRlZCBjb250cm9sLiBVc2VkIGZvciBpbnRlcm5hbCB2YWxpZGF0aW9uLiAqL1xuICB2YWxpZGF0ZShfY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBbbmFtZTogc3RyaW5nXTogYW55IH0gfCBudWxsIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgLyoqIFJlZ2lzdGVycyBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgdmFsaWRhdG9yIGlucHV0cyBjaGFuZ2UuICovXG4gIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVmFsaWRhdG9yQ2hhbmdlID0gZm5cbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gSEVMUEVSU1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLyoqIFJldHVybnMgdGhlIGZpcnN0IGVudHJ5IGluIGFuIGVycm9yIG9iamVjdC4gKi9cbiAgZ2V0IGZpcnN0RXJyb3IoKTogeyBjb2RlOiBzdHJpbmc7IHBhcmFtczogYW55IH0gfCBudWxsIHtcbiAgICBjb25zdCBlcnJvcnM6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0gdGhpcy5uZ0NvbnRyb2wuZXJyb3JzXG4gICAgaWYgKCFlcnJvcnMpIHJldHVybiBudWxsXG4gICAgY29uc3QgY29kZTogc3RyaW5nID0gT2JqZWN0LmtleXMoZXJyb3JzKVswXVxuICAgIHJldHVybiB7IGNvZGUsIHBhcmFtczogZXJyb3JzW2NvZGVdIH1cbiAgfVxufVxuIl19
300
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jb250cm9sLXZhbHVlLWFjY2Vzc29yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvdi1hbmd1bGFyL2Jhc2UtY29udHJvbC12YWx1ZS1hY2Nlc3Nvci9iYXNlLWNvbnRyb2wtdmFsdWUtYWNjZXNzb3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxNQUFNLEVBQ04sVUFBVSxFQUNWLEtBQUssRUFHTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLElBQUksRUFDSixXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFHTCxTQUFTLEVBR1QsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUE7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBa0IsTUFBTSxvQkFBb0IsQ0FBQTtBQUNwRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUMxQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7OztBQUkxQyxrRUFBa0U7QUFDbEUsTUFBTSxPQUFPLHFDQUFxQztJQXFEaEQsb0VBQW9FO0lBQ3BFLElBQWEsTUFBTSxDQUFDLEtBQWlDO1FBQ25ELElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFBO1FBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUE7SUFDMUIsQ0FBQztJQUNELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQTtJQUNyQixDQUFDO0lBT0QsbURBQW1EO0lBQ25ELElBQWEsUUFBUSxDQUFDLEtBQWlDO1FBQ3JELElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFBO0lBQ3hC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QVk7dUJBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFPL0MsU0FBUztzQkFEUixZQUFZO3VCQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBSU4sUUFBUTtzQkFBakQsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUtQLEVBQUU7c0JBQWxDLFdBQVc7dUJBQUMsU0FBUzs7c0JBQUcsS0FBSztnQkFFckIsSUFBSTtzQkFBWixLQUFLO2dCQUtHLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFFRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUlPLE1BQU07c0JBQWxCLEtBQUs7Z0JBUUcsdUJBQXVCO3NCQUEvQixLQUFLO2dCQU1PLFFBQVE7c0JBQXBCLEtBQUs7Z0JBd0JPLE9BQU87c0JBQW5CLEtBQUs7Z0JBYU8sS0FBSztzQkFBakIsS0FBSztnQkFVRyxPQUFPO3NCQUFmLEtBQUs7Z0JBSU8sUUFBUTtzQkFBcEIsS0FBSztnQkFhYSxTQUFTO3NCQUEzQixNQUFNO2dCQUVZLFFBQVE7c0JBQTFCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIEluamVjdCxcbiAgSW5qZWN0YWJsZSxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBTZWxmLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgTmdDb250cm9sLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3IsXG4gIFZhbGlkYXRvcnMsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJ1xuaW1wb3J0IHsgVFJBTlNMT0NPX1NDT1BFLCBUcmFuc2xvY29TY29wZSB9IGZyb20gJ0Bqc3ZlcnNlL3RyYW5zbG9jbydcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5cbkBJbmplY3RhYmxlKCkgLy8gV29ya2Fyb3VuZCBmb3IgQ29tcG9kb2MgaHR0cHM6Ly9naXRodWIuY29tL2NvbXBvZG9jL2NvbXBvZG9jL2lzc3Vlcy85ODRcbkBDb21wb25lbnQoeyB0ZW1wbGF0ZTogJycgfSkgLy8gUmVxdWlyZWQgd2l0aCBBbmd1bGFyIGl2eSBjb21waWxlclxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtY2xhc3Mtc3VmZml4XG5leHBvcnQgY2xhc3MgTmdndkJhc2VDb250cm9sVmFsdWVBY2Nlc3NvckNvbXBvbmVudFxuICBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uSW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yXG57XG4gIC8qKiBDdXN0b20gdGVtcGxhdGUgZm9yIGRpc3BsYXlpbmcgdGhlIGNvbnRlbnQgb2YgdGhlIGxhYmVsLlxuICAgKiBTcGVjaWZpZWQgYnkgbmVzdGluZyBhbiBgPG5nLXRlbXBsYXRlICNsYWJlbFRwbD5DdXN0b20gTGFiZWw8L25nLXRlbXBsYXRlPmAuXG4gICAqL1xuICBAQ29udGVudENoaWxkKCdsYWJlbFRwbCcsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgbGFiZWxDb250ZW50VHBsPzogVGVtcGxhdGVSZWY8dW5kZWZpbmVkPlxuXG4gIC8qKiBDdXN0b20gdGVtcGxhdGUgZm9yIGRpc3BsYXlpbmcgdmFsdWUgd2hlbiB0aGUgaW5wdXQgaXMgbG9ja2VkLlxuICAgKiBTcGVjaWZpZWQgYnkgbmVzdGluZyBhbiBgPG5nLXRlbXBsYXRlICNsb2NrZWRUcGwgbGV0LXN0YXRlPkN1c3RvbSBsb2NrZWQgY29udGVudCBzdGF0ZToge3sgc3RhdGUgfX08L25nLXRlbXBsYXRlPmAuXG4gICAqL1xuICBAQ29udGVudENoaWxkKCdsb2NrZWRUcGwnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIGxvY2tlZFRwbD86IFRlbXBsYXRlUmVmPHVuZGVmaW5lZD5cblxuICAvKiogUmVmZXJlbmNlIHRvIHRoZSBuYXRpdmUgY2hpbGQgaW5wdXQgZWxlbWVudC4gKi9cbiAgQFZpZXdDaGlsZCgnaW5wdXQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgaW5wdXRSZWY/OiBFbGVtZW50UmVmXG5cbiAgLyogQVRUUklCVVRFUyAqL1xuXG4gIC8qKiBJZCBvZiB0aGUgaG9zdCBlbGVtZW50IGFuZCBpcyBhY2Nlc3NpYmxlIGJ5IHRoZSBjaGlsZHJlbiwgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgaWYgbm90IHByb3ZpZGVkLiAqL1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuaWQnKSBASW5wdXQoKSBpZCA9ICh3aW5kb3cgYXMgYW55KS5uZ2d2Py5uZXh0SWQoKVxuICAvKiogTmFtZSBvZiB0aGUgY2hpbGQgaW5wdXQgZWxlbWVudC4gKi9cbiAgQElucHV0KCkgbmFtZT86IHN0cmluZ1xuICAvKipcbiAgICogTGFiZWwgb2YgdGhlIGNoaWxkIGlucHV0IGVsZW1lbnQgdXNpbmcgdGhlIGRlZmF1bHQgdGVtcGxhdGUuXG4gICAqIENhbiBiZSBvdmVyd3JpdHRlbiBieSBzcGVjaWZ5aW5nIGFuIGA8bmctdGVtcGxhdGUgI2xhYmVsVHBsPkN1c3RvbSBMYWJlbDwvbmctdGVtcGxhdGU+YC5cbiAgICovXG4gIEBJbnB1dCgpIGxhYmVsPzogc3RyaW5nXG4gIC8qKiBSb2xlIG9mIHRoZSBjaGlsZCBpbnB1dCBlbGVtZW50LiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BY2Nlc3NpYmlsaXR5L0FSSUEvUm9sZXMgKi9cbiAgQElucHV0KCkgcm9sZT86IHN0cmluZ1xuICAvKiogVmFsdWUgb2YgdGhlIGNoaWxkIGlucHV0IGVsZW1lbnQuIE1vc3RseSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggcmFkaW8gYW5kIGNoZWNrYm94ZXMuICovXG4gIEBJbnB1dCgpIHZhbHVlOiBhbnlcbiAgLyoqIEFuIGVycm9yIHN0cmluZyB0byBiZSBzaG93biB1bmRlciBpbnZhbGlkIGlucHV0cy4gT3ZlcndyaXRlcyBhbnkgZm9ybSBlcnJvcnMuICovXG4gIEBJbnB1dCgpIGVycm9yPzogc3RyaW5nXG4gIC8qKiBAZGVwcmVjYXRlZCBPbmx5IG9uZSBlcnJvciBzaG91bGQgYmUgc2hvd24gdW5kZXIgZWFjaCBmaWVsZC4gKi9cbiAgQElucHV0KCkgZXJyb3JMaXN0Pzogc3RyaW5nW11cbiAgLyoqIEBkZXByZWNhdGVkIEljb24gaXMgYWx3YXlzIGFkZGVkIGJlZm9yZSBlcnJvci4gKi9cbiAgQElucHV0KCkgd2l0aEVycm9ySWNvbj86IGJvb2xlYW4gPSBmYWxzZVxuICAvKiogRGVzY3JpcHRpb24gb2YgdGhlIGNoaWxkIGlucHV0IGVsZW1lbnQuIEJvdGggdmlzaWJseSBhbmQgYXMgYGFyaWEtbGFiZWxgLiAqL1xuICBASW5wdXQoKSBkZXNjcmlwdGlvbj86IHN0cmluZ1xuICAvKiogRGV0ZXJtaW5lcyBpZiB0aGUgbGFiZWwgdXNlZCB0byBkaXNwbGF5IHRoZSBcImRlc2NyaXB0aW9uXCIgdGV4dCB3aWxsIGJlIHJlbmRlcmVkIHRvIERPTSAqL1xuICBASW5wdXQoKSBkZXNjcmlwdGlvbklzVmlzaWJsZSA9IHRydWVcbiAgLyoqIElmIHNldCB0byB0cnVlLCB0aGUgYnJvd3NlciB3aWxsIHRyeSB0byBhdXRvbWF0aWNhbGx5IHNldCBmb2N1cyB0byB0aGUgY2hpbGQgaW5wdXQgZWxlbWVudC4gKi9cbiAgQElucHV0KCkgYXV0b2ZvY3VzID0gZmFsc2VcbiAgLyoqIERlYWZ1bHQgdmFsdWUgb2YgdGhlIGNoaWxkIGlucHV0IGVsZW1lbnQuIFVzZWQgd2hlbiByZXNldHRpbmcgY2hpbGQgZWxlbWVudC4gKi9cbiAgQElucHV0KCkgZGVmYXVsdFZhbHVlPzogYW55XG4gIC8qKiBJZiBwYXNzZWQsIHRoZSBjb21wb25lbnQgd2lsbCBsaXN0ZW4gZm9yIHVwZGF0ZXMgYW5kIHdpbGwgcmVzZXQgaXRzIHZhbHVlLiAqL1xuICBASW5wdXQoKSByZXNldD86IE9ic2VydmFibGU8YW55PlxuICAvKiogQWRkcyAoT3B0aW9uYWwpIHRvIGlucHV0IGxhYmVsLiAqL1xuICBASW5wdXQoKSBvcHRpb25hbD86IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkXG5cbiAgcHJpdmF0ZSBfbG9ja2VkOiBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuICAvKiogSGlkZXMgdGhlIGlucHV0IGJvcmRlcnMgYW5kIGRpc3BsYXlzIGN1cnJlbnQgdmFsdWUgYXMgYSB0ZXh0LiAqL1xuICBASW5wdXQoKSBzZXQgbG9ja2VkKHZhbHVlOiBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX2xvY2tlZCA9IHZhbHVlXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpXG4gIH1cbiAgZ2V0IGxvY2tlZCgpOiBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2xvY2tlZFxuICB9XG4gIC8qKiBJZiBzZXQgdG8gdHJ1ZSwgdXNpbmcgYSBjb250cm9scyBkaXNhYmxlZCBzdGF0ZSB3aWxsIGRpc3BsYXkgaW5wdXQgYXMgbG9ja2VkLiAqL1xuICBASW5wdXQoKSBkaXNwbGF5RGlzYWJsZWRBc0xvY2tlZD86IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkXG5cbiAgLyogU1RBVEVTICovXG5cbiAgcHJpdmF0ZSBfcmVxdWlyZWQ6IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkXG4gIC8qKiBPdmVycmlkZSB0aGUgcmVxdWlyZWQgZmxhZyBvZiB0aGUgY29tcG9uZW50LiAqL1xuICBASW5wdXQoKSBzZXQgcmVxdWlyZWQodmFsdWU6IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fcmVxdWlyZWQgPSB2YWx1ZVxuICB9XG4gIC8qKiBDaGlsZCBpbnB1dCBlbGVtZW50IGlzIGNvbnNpZGVyZWQgcmVxdWlyZWQgYW5kIGNoYW5nZXMgZGVmYXVsdCBsYWJlbCB0ZW1wbGF0ZSBhY2NvcmRpbmdseS4gKi9cbiAgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICAvLyBpZiByZXF1aXJlZCBpcyBzZXQgPT4gcmV0dXJuIHJlcXVpcmVkXG4gICAgaWYgKHRoaXMuX3JlcXVpcmVkICE9PSB1bmRlZmluZWQpIHJldHVybiB0aGlzLl9yZXF1aXJlZFxuXG4gICAgLy8gaWYgcmVxdWlyZWQgY2FuIGJlIGRldGVybWluZWQgZnJvbSB0aGUgY29udHJvbCA9PiByZXR1cm4gY29udHJvbC5yZXF1aXJlZFxuICAgIGlmICh0aGlzLm5nQ29udHJvbD8uY29udHJvbD8udmFsaWRhdG9yKSB7XG4gICAgICBjb25zdCB2YWxpZGF0b3IgPSB0aGlzLm5nQ29udHJvbD8uY29udHJvbD8udmFsaWRhdG9yKFxuICAgICAgICB7fSBhcyBBYnN0cmFjdENvbnRyb2wsXG4gICAgICApXG4gICAgICAvLyByZXR1cm5zIHRydWUgZm9yIGFueSBlcnJvciB0aGF0IHN0YXJ0cyB3aXRoIHJlcXVpcmVkXG4gICAgICByZXR1cm4gT2JqZWN0LmtleXModmFsaWRhdG9yID8/IHt9KS5zb21lKChrZXkpID0+XG4gICAgICAgIGtleS5zdGFydHNXaXRoKCdyZXF1aXJlZCcpLFxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVyblxuICB9XG5cbiAgcHJpdmF0ZSBfaW52YWxpZDogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuICAvKiogT3ZlcnJpZGUgdGhlIGludmFsaWQgc3RhdGUgb2YgdGhlIGNvbXBvbmVudC4gKi9cbiAgQElucHV0KCkgc2V0IGludmFsaWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9pbnZhbGlkID0gdmFsdWVcbiAgfVxuICAvKiogVGhlIGNvbXBvbmVudCBoYXMgdGhlIGludmFsaWQgc3RhdGUsIHVzdWFsbHkgZGVjb3JhdGluZyB0aGUgZWxlbWVudHMgcmVkIGFuZCBzaG93cyB0aGUgZmlyc3QgZXJyb3IuICovXG4gIGdldCBpbnZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLl9pbnZhbGlkID09PSB0cnVlIHx8IHRoaXMuX2ludmFsaWQgPT09IGZhbHNlKSByZXR1cm4gdGhpcy5faW52YWxpZFxuICAgIHJldHVybiAoXG4gICAgICAhIXRoaXMubmdDb250cm9sPy5jb250cm9sPy5pbnZhbGlkICYmIHRoaXMubmdDb250cm9sPy5jb250cm9sPy50b3VjaGVkXG4gICAgKVxuICB9XG5cbiAgcHJpdmF0ZSBfdmFsaWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSB1bmRlZmluZWRcbiAgLyoqIE92ZXJyaWRlIHRoZSB2YWxpZCBzdGF0ZSBvZiB0aGUgY29tcG9uZW50LiAqL1xuICBASW5wdXQoKSBzZXQgdmFsaWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl92YWxpZCA9IHZhbHVlXG4gIH1cbiAgLyoqIFRoZSBjb21wb25lbnQgaGFzIHRoZSB2YWxpZCBzdGF0ZSwgdXN1YWxseSBkZWNvcmF0aW5nIHRoZSBlbGVtZW50cyBncmVlbi4gKi9cbiAgZ2V0IHZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLl92YWxpZCA9PT0gdHJ1ZSB8fCB0aGlzLl92YWxpZCA9PT0gZmFsc2UpIHJldHVybiB0aGlzLl92YWxpZFxuICAgIHJldHVybiAhIXRoaXMubmdDb250cm9sPy5jb250cm9sPy52YWxpZCAmJiB0aGlzLm5nQ29udHJvbD8uY29udHJvbD8udG91Y2hlZFxuICB9XG5cbiAgLyoqIFRoZSBjb21wb25lbnQgaGFzIHRoZSBmb2N1c2VkIHN0YXRlLCB1cGRhdGVkIGJ5IHRoZSBjaGlsZCBpbnB1dCBlbGVtZW50J3MgZm9jdXMgc3RhdGUuICovXG4gIEBJbnB1dCgpIGZvY3VzZWQgPSBmYWxzZVxuXG4gIHByaXZhdGUgX2Rpc2FibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkXG4gIC8qKiBPdmVycmlkZSB0aGUgZGlzYWJsZWQgc3RhdGUgb2YgdGhlIGNvbXBvbmVudC4gKi9cbiAgQElucHV0KCkgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSB2YWx1ZVxuICB9XG4gIC8qKiBUaGUgY29tcG9uZW50IGhhcyB0aGUgZGlzYWJsZWQgc3RhdGUsIHVzdWFsbHkgbXV0aW5nIHRoZSBjb2xvcnMgYW5kIHJlbW92ZXMgaW50ZXJhY3Rpb24uICovXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5fZGlzYWJsZWQgPT09IHRydWUgfHwgdGhpcy5fZGlzYWJsZWQgPT09IGZhbHNlKVxuICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkXG4gICAgcmV0dXJuICEhdGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2w/LmRpc2FibGVkXG4gIH1cblxuICAvKiBUUklHR0VSUyAqL1xuXG4gIC8qKiBFbWl0cyBmb2N1cyBldmVudHMgdHJpZ2dlcmVkIGJ5IHRoZSBjaGlsZCBlbGVtZW50cy4gKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IG5nZ3ZGb2N1cyA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuICAvKiogRW1pdHMgZm9jdXMgZXZlbnRzIHRyaWdnZXJlZCBieSB0aGUgY2hpbGQgZWxlbWVudHMuICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBuZ2d2Qmx1ciA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuXG4gIC8qIFZBTFVFIEhBTkRMRVJTICovXG5cbiAgcHJpdmF0ZSBfc3RhdGU6IGFueSA9IG51bGxcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwcm90ZWN0ZWQgb25DaGFuZ2UgPSAoXzogYW55KSA9PiB7XG4gICAgLy8gZG8gbm90aGluZ1xuICB9XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHJvdGVjdGVkIG9uVG91Y2hlZCA9ICgpID0+IHtcbiAgICAvLyBkbyBub3RoaW5nXG4gIH1cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwcm90ZWN0ZWQgb25WYWxpZGF0b3JDaGFuZ2U6ICgpID0+IHZvaWQgPSAoKSA9PiBudWxsXG5cbiAgLyogT1RIRVIgVkFSSUFCTEVTICovXG4gIHNjb3BlOiBzdHJpbmcgfCB1bmRlZmluZWRcblxuICAvKiBMSUZFIENZQ0xFIFZBUklBQkxFUyAqL1xuXG4gIHByaXZhdGUgX29uRGVzdHJveSQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpXG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgQmFzZUNvbnRyb2xWYWx1ZUFjY2Vzc29yQ29tcG9uZW50LlxuICAgKiBAcGFyYW0gbmdDb250cm9sIG9wdGlvbmFsIEZvcm1Db250cm9sIHByb3ZpZGVkIHdoZW4gY29tcG9uZW50IGlzIHVzZWQgaW4gYSBmb3JtLCB0aHJvdWdoIGRlcGVuZGVuY3kgaW5qZWN0aW9uLlxuICAgKiBAcGFyYW0gdHJhbnNsb2NvU2NvcGUgb3B0aW9uYWwgVHJhbnNsb2NvU2NvcGUgcHJvdmlkZWQgaWYgY29tcG9uZW50IGlzIHVzZWQgd2l0aGluIGEgc2NvcGUuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBAU2VsZigpIEBPcHRpb25hbCgpIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICBAT3B0aW9uYWwoKVxuICAgIEBJbmplY3QoVFJBTlNMT0NPX1NDT1BFKVxuICAgIHByb3RlY3RlZCB0cmFuc2xvY29TY29wZTogVHJhbnNsb2NvU2NvcGUsXG4gICAgcHJvdGVjdGVkIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICkge1xuICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgLy8gTm90ZTogd2UgcHJvdmlkZSB0aGUgdmFsdWUgYWNjZXNzb3IgdGhyb3VnaCBoZXJlLCBpbnN0ZWFkIG9mXG4gICAgICAvLyB0aGUgYHByb3ZpZGVyc2AgdG8gYXZvaWQgcnVubmluZyBpbnRvIGEgY2lyY3VsYXIgaW1wb3J0LlxuICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXNcbiAgICB9XG5cbiAgICBpZiAodGhpcy50cmFuc2xvY29TY29wZSkgdGhpcy5zY29wZSA9IHRoaXMudHJhbnNsb2NvU2NvcGUudG9TdHJpbmcoKVxuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb250ZXh0dWFsLWxpZmVjeWNsZVxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wgJiYgdGhpcy5uZ0NvbnRyb2wuY29udHJvbCkge1xuICAgICAgdGhpcy5uZ0NvbnRyb2wuY29udHJvbC5zZXRWYWxpZGF0b3JzKFxuICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW3RoaXMubmdDb250cm9sLmNvbnRyb2wudmFsaWRhdG9yLCB0aGlzLnZhbGlkYXRlXSksXG4gICAgICApXG4gICAgfVxuXG4gICAgLy8gaWYgcmVzZXQgb2JzZXJ2YWJsZSBoYXMgYmVlbiBwYXNzZWQsIHN1YnNjcmliZSBhZnRlciB1cGRhdGVzXG4gICAgdGhpcy5yZXNldD8ucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgIC8vIHJlc2V0IHZhbHVlIG9mIGNvbnRyb2xsZXJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHRoaXMuZGVmYXVsdFZhbHVlXG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5zdGF0ZSlcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpXG4gICAgICB9LFxuICAgIH0pXG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbnRleHR1YWwtbGlmZWN5Y2xlXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAvLyBpZiBkZWZhdWx0IHZhbHVlIGlzIHNldCwgdGhlbiBkb24ndCBhbHRlciBpdC4gT3RoZXJ3aXNlLCB1c2VcbiAgICAvLyBjdXJyZW50IHZhbHVlIG9mIGNvbnRyb2xsZXIgYWZ0ZXIgaW5pdGlhdGlvbiBhcyBkZWZhdWx0IHZhbHVlXG4gICAgdGhpcy5kZWZhdWx0VmFsdWUgPSB0aGlzLmRlZmF1bHRWYWx1ZSA/PyB0aGlzLm5nQ29udHJvbD8udmFsdWVcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX29uRGVzdHJveSQubmV4dCh0cnVlKVxuICAgIHRoaXMuX29uRGVzdHJveSQuY29tcGxldGUoKVxuICB9XG5cbiAgZGV0ZWN0Q2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKClcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgb25Gb2N1cyhldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb25cbiAgICAgID8gZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIDogKGV2ZW50LmNhbmNlbEJ1YmJsZSA9IHRydWUpXG4gICAgdGhpcy5mb2N1c2VkID0gdHJ1ZVxuICAgIHRoaXMubmdndkZvY3VzLmVtaXQoZXZlbnQpXG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIG9uQmx1cihldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb25cbiAgICAgID8gZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIDogKGV2ZW50LmNhbmNlbEJ1YmJsZSA9IHRydWUpXG4gICAgdGhpcy5vblRvdWNoZWQoKVxuICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlXG4gICAgdGhpcy5uZ2d2Qmx1ci5lbWl0KGV2ZW50KVxuICB9XG5cbiAgLyoqIFNldHMgdGhlIGZvY3VzIG9uIHRoZSBhY3R1YWwgaW5wdXQgZWxlbWVudC4gKi9cbiAgc2V0Rm9jdXMoKSB7XG4gICAgaWYgKHRoaXMuaW5wdXRSZWYpIHRoaXMuaW5wdXRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpXG4gIH1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIENPTlRST0wgVkFMVUUgQUNDRVNTT1JcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8qKiBJbnRlcm5hbCBzdGF0ZS92YWx1ZSB0aGF0IHRoZSBuYXRpdmUgaW5wdXQgZWxlbWVudCBoYXMuICAqL1xuICBnZXQgc3RhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlXG4gIH1cblxuICAvKiogSW50ZXJuYWwgc3RhdGUvdmFsdWUgdGhhdCB0aGUgbmF0aXZlIGlucHV0IGVsZW1lbnQgaGFzLiAgKi9cbiAgc2V0IHN0YXRlKHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHZhbHVlID0gbnVsbFxuICAgIHRoaXMuX3N0YXRlID0gdmFsdWVcbiAgfVxuXG4gIC8qKiBXcml0ZXMgYSBuZXcgdmFsdWUgdG8gdGhlIGNoaWxkIGlucHV0IGVsZW1lbnQuICovXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGUgPSB2YWx1ZVxuICB9XG5cbiAgLyoqIFJlZ2lzdGVycyBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIHdoZW4gdGhlIGNoaWxkIGlucHV0IGVsZW1lbnQncyB2YWx1ZSBjaGFuZ2VzLiAqL1xuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoXzogYW55KSA9PiBvYmplY3QpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm5cbiAgfVxuXG4gIC8qKiBSZWdpc3RlcnMgYSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aGVuIHRoZSBjaGlsZCBpbnB1dCBlbGVtZW50IHRyaWdnZXJzIG9uIGJsdXIuICovXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmblxuICB9XG5cbiAgLyoqIEZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIGJ5IHRoZSBmb3JtcyBBUEkgd2hlbiB0aGUgY29udHJvbCBzdGF0dXMgY2hhbmdlcyB0byBvciBmcm9tICdESVNBQkxFRCcuICovXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkXG5cbiAgICAvLyBpZiBkaXNwbGF5RGlzYWJsZWRBc0xvY2tlZCBpcyBlbmFibGVkIC0gdXBkYXRlIGxvY2tlZCBzdGF0ZSBiYXNlZCBvbiBkaXNhYmxlZCBzdGF0ZVxuICAgIGlmICh0aGlzLmRpc3BsYXlEaXNhYmxlZEFzTG9ja2VkKSB7XG4gICAgICB0aGlzLmxvY2tlZCA9IGlzRGlzYWJsZWRcbiAgICB9XG4gIH1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIFZBTElEQVRPUlNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8qKiBNZXRob2QgdGhhdCBwZXJmb3JtcyBzeW5jaHJvbm91cyB2YWxpZGF0aW9uIGFnYWluc3QgdGhlIHByb3ZpZGVkIGNvbnRyb2wuIFVzZWQgZm9yIGludGVybmFsIHZhbGlkYXRpb24uICovXG4gIHZhbGlkYXRlKF9jb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSB8IG51bGwge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICAvKiogUmVnaXN0ZXJzIGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSB2YWxpZGF0b3IgaW5wdXRzIGNoYW5nZS4gKi9cbiAgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZShmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25WYWxpZGF0b3JDaGFuZ2UgPSBmblxuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBIRUxQRVJTXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAvKiogUmV0dXJucyB0aGUgZmlyc3QgZW50cnkgaW4gYW4gZXJyb3Igb2JqZWN0LiAqL1xuICBnZXQgZmlyc3RFcnJvcigpOiB7IGNvZGU6IHN0cmluZzsgcGFyYW1zOiBhbnkgfSB8IG51bGwge1xuICAgIGNvbnN0IGVycm9yczogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPSB0aGlzLm5nQ29udHJvbC5lcnJvcnNcbiAgICBpZiAoIWVycm9ycykgcmV0dXJuIG51bGxcbiAgICBjb25zdCBjb2RlOiBzdHJpbmcgPSBPYmplY3Qua2V5cyhlcnJvcnMpWzBdXG4gICAgcmV0dXJuIHsgY29kZSwgcGFyYW1zOiBlcnJvcnNbY29kZV0gfVxuICB9XG59XG4iXX0=
@@ -2,7 +2,6 @@ import '../../datepicker.globals';
2
2
  import { WeekDay } from '@angular/common';
3
3
  import { ChangeDetectorRef, Component, ElementRef, HostBinding, HostListener, Inject, Input, Optional, Self, ViewChild, } from '@angular/core';
4
4
  import { NgControl } from '@angular/forms';
5
- // import { faCalendarDays, IconDefinition } from '@fortawesome/pro-regular-svg-icons';
6
5
  import { TRANSLOCO_SCOPE, TranslocoService, } from '@jsverse/transloco';
7
6
  import { fromEvent, Subject } from 'rxjs';
8
7
  import { startWith, takeUntil } from 'rxjs/operators';
@@ -154,11 +153,11 @@ export class DateInputComponent extends DateControlValueAccessorComponent {
154
153
  });
155
154
  }
156
155
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DateInputComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: TRANSLOCO_SCOPE, optional: true }, { token: i2.TranslocoService }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
157
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DateInputComponent, selector: "nggv-dateinput,nggv-input[type=date]", inputs: { thook: "thook", type: "type", readonly: "readonly", disableDates: "disableDates", disableWeekDays: "disableWeekDays", minRows: "minRows", firstValid: "firstValid", lastValid: "lastValid", closingTime: "closingTime", firstDayOfWeek: "firstDayOfWeek", closeCalendarOnEscape: "closeCalendarOnEscape" }, host: { listeners: { "keydown": "keyListener($event)" }, properties: { "attr.data-thook": "this.thook" } }, viewQueries: [{ propertyName: "toggleButtonRef", first: true, predicate: ["toggleCalendarButton"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<!-- LABEL -->\n<ng-container *transloco=\"let t; read: scope\">\n <label\n [id]=\"id + '-label'\"\n class=\"gds-field-label hide-if-empty\"\n [attr.for]=\"id + '-input'\"\n >\n <ng-template\n *ngTemplateOutlet=\"labelContentTpl || basicLabelContentTpl\"\n ></ng-template>\n <ng-template #basicLabelContentTpl>\n <!-- to trigger css:empty if no label was added -->\n <ng-container *ngIf=\"label\">\n {{ label }}\n <span\n *ngIf=\"optional === true || (required !== true && optional !== false)\"\n class=\"gds-field-label--optional\"\n >\n ({{ t('label.optional') }})\n </span>\n </ng-container>\n </ng-template>\n </label>\n\n <!-- DESCRIPTION -->\n <div\n class=\"gds-field-label--small description hide-if-empty\"\n *ngIf=\"description\"\n >\n {{ description }}\n </div>\n\n <!-- LOCKED INPUT -->\n <ng-container *ngIf=\"locked\">\n <div\n [id]=\"id + '-input'\"\n class=\"nggv-field--locked\"\n [attr.name]=\"name\"\n [attr.value]=\"state\"\n [attr.role]=\"role\"\n >\n <span *ngIf=\"!state\" class=\"unset-state\">-</span>\n <ng-container *ngIf=\"state\">\n {{ state | nggvInputMaskFormat: dateInputMask }}\n </ng-container>\n </div>\n </ng-container>\n\n <!-- INPUT WRAPPER -->\n <ng-container *ngIf=\"!locked\">\n <div\n class=\"field-wrap\"\n [class.nggv-field--error]=\"invalid\"\n *ngIf=\"showInput$ | async\"\n >\n <!-- INPUT FIELD -->\n <input\n #input\n [id]=\"id + '-input'\"\n class=\"nggv-field-date\"\n type=\"text\"\n autocomplete=\"off\"\n [attr.name]=\"name\"\n [attr.required]=\"required\"\n [disabled]=\"disabled\"\n [readOnly]=\"readonly\"\n [attr.role]=\"role\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-label]=\"description\"\n [nggvInputMask]=\"dateInputMask\"\n [value]=\"state\"\n title=\"\"\n (change)=\"onValueChange($event.target)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n />\n\n <button\n aria-label=\"toggle calendar\"\n #toggleCalendarButton\n class=\"nggv-button-date\"\n type=\"button\"\n data-thook=\"toggle-calendar-button\"\n (click)=\"toggleDatepicker()\"\n [disabled]=\"disabled\"\n >\n <gds-icon-calendar\n *nggCoreElement\n width=\"20\"\n height=\"20\"\n ></gds-icon-calendar>\n </button>\n </div>\n\n <!-- DATEPICKER -->\n <div class=\"nggv-datepicker\" *ngIf=\"shown\">\n <nggv-datepicker\n #input\n [type]=\"type\"\n [disableDates]=\"disableDates\"\n [disableWeekDays]=\"disableWeekDays\"\n [selected]=\"state\"\n [locale]=\"locale\"\n [minCalendarRows]=\"minRows\"\n [firstDayOfWeek]=\"firstDayOfWeek\"\n [firstValid]=\"firstValid\"\n [lastValid]=\"lastValid\"\n [closingTime]=\"closingTime\"\n (ngvDateChange)=\"onDateChange($event)\"\n >\n <ng-content></ng-content>\n </nggv-datepicker>\n </div>\n\n <!-- ERRORS -->\n <ng-container\n *ngIf=\"\n invalid &&\n (error || ngControl?.invalid) &&\n (!errorList || !errorList.length)\n \"\n >\n <label\n class=\"gds-field-notice gds-field-notice--error\"\n [attr.for]=\"id + '-input'\"\n >\n <span class=\"error-item\">\n <span class=\"error-item--icon\">\n <gds-icon-triangle-exclamation\n *nggCoreElement\n [solid]=\"true\"\n width=\"16\"\n height=\"16\"\n ></gds-icon-triangle-exclamation>\n </span>\n <span\n *ngIf=\"error; else errorsRef\"\n class=\"error-item--text\"\n [attr.data-thook]=\"thook + '-errorlabel'\"\n >{{ error }}</span\n >\n <ng-template #errorsRef>\n <span\n *ngIf=\"firstError as error\"\n class=\"error-item--text\"\n [attr.data-thook]=\"thook + '-errorlabel'\"\n >\n {{ t('error.field' + error?.code, error?.params) }}\n </span>\n </ng-template>\n </span>\n </label>\n </ng-container>\n\n <ng-container *ngFor=\"let error of errorList ?? []\">\n <label\n class=\"gds-field-notice gds-field-notice--error\"\n [attr.for]=\"id + '-input'\"\n *ngIf=\"invalid && error\"\n >\n <span class=\"error-item\">\n <span class=\"error-item--icon\">\n <gds-icon-triangle-exclamation\n *nggCoreElement\n [solid]=\"true\"\n width=\"16\"\n height=\"16\"\n ></gds-icon-triangle-exclamation>\n </span>\n <span\n class=\"error-item--text\"\n [attr.data-thook]=\"thook + '-errorlabel'\"\n >{{ error }}</span\n >\n </span>\n </label>\n </ng-container>\n </ng-container>\n</ng-container>\n", styles: [":host{display:block;position:relative}@media (max-width: 47.98em){:host{min-width:100%}}:host .hide-if-empty:empty{display:none}:host .unset-state{padding-left:.5rem}:host .gds-field-label{display:block}:host .gds-field-label:is(label){margin-bottom:0}:host .gds-field-label.form-control{width:fit-content}@supports (-moz-appearance: none){:host .gds-field-label.form-control:focus:not(:focus-visible){box-shadow:none;outline:0}:host .gds-field-label.form-control:focus,:host .gds-field-label.form-control:focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}}:host .gds-field-label:not(.form-control){font-weight:500;width:100%;line-height:1.25rem}:host .gds-field-label+input,:host .gds-field-label+textarea,fieldset :host .gds-field-label+div,:host .gds-field-label+button,:host .gds-field-label+.group-stepper,:host .gds-field-label+.stepper-wrapper,:host .gds-field-label+.group{margin-top:.5rem}:host .gds-field-label+.form-info{margin-bottom:.5rem}:host label+.field-wrap,:host label+.nggv-field--locked{margin-top:.5rem}:host .description{font-size:.875rem;margin-bottom:.5rem;line-height:1.25rem;width:100%}:host .gds-field-label--optional:is(label){margin-bottom:0}:host .gds-field-label--optional.form-control{width:fit-content}@supports (-moz-appearance: none){:host .gds-field-label--optional.form-control:focus:not(:focus-visible){box-shadow:none;outline:0}:host .gds-field-label--optional.form-control:focus,:host .gds-field-label--optional.form-control:focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}}:host .gds-field-label--optional:not(.form-control){font-weight:500;width:100%;line-height:1.25rem}:host .gds-field-label--optional+input,:host .gds-field-label--optional+textarea,fieldset :host .gds-field-label--optional+div,:host .gds-field-label--optional+button,:host .gds-field-label--optional+.group-stepper,:host .gds-field-label--optional+.stepper-wrapper,:host .gds-field-label--optional+.group{margin-top:.5rem}:host .gds-field-label--optional+.form-info{margin-bottom:.5rem}:host .nggv-datepicker{margin-top:.25rem;position:absolute}:host .nggv-field--error{border-bottom:.125rem solid #9f000a!important}:host .nggv-field--error:focus,:host .nggv-field--error:active,:host .nggv-field--error:hover{border-bottom:.125rem solid #9f000a!important}:host .error-item{display:flex;gap:.5rem;color:#9f000a}:host .gds-field-notice{margin-top:.5rem;display:block;font-size:.875rem;line-height:1;font-weight:500}:host .field-wrap{border:1px solid #868686;border-radius:4px;outline:none;box-sizing:border-box;min-height:2.75rem;line-height:1.5;font-size:1rem;font-family:inherit;height:2.625rem;display:flex}:host .field-wrap *,:host .field-wrap *:before,:host .field-wrap *:after{box-sizing:border-box}:host .field-wrap .nggv-button-date{--text-disabled-color: #adadad;padding:.75rem 1rem;border-radius:var(--sg-border-radius);border:solid var(--sg-border-width) var(--sg-border-color);font-weight:500;min-height:2.75rem;align-items:center;display:inline-flex;justify-content:center;transition:all .3s cubic-bezier(.23,1,.32,1),outline-offset 0s,outline-width 0s;border-color:#333;color:#333;--color: rgb(51, 51, 51);background-color:transparent;min-height:2.5rem;border:none;border-radius:3px;width:2.625rem;height:2.625rem;min-width:2.625rem;border-top-left-radius:0!important;border-bottom-left-radius:0!important;text-align:right}:host .field-wrap .nggv-button-date:focus:not(:focus-visible){box-shadow:none;outline:0}:host .field-wrap .nggv-button-date:focus,:host .field-wrap .nggv-button-date:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}@media (max-width: 35.98em){:host .field-wrap .nggv-button-date{min-width:100%}}@media screen and (-ms-high-contrast: active){:host .field-wrap .nggv-button-date{border:2px solid currentcolor}}:host .field-wrap .nggv-button-date.small{min-height:2rem;padding:.4375rem .75rem;line-height:1rem}:host .field-wrap .nggv-button-date.large{min-height:4rem;padding:1rem 1.5rem;font-size:1.5rem;line-height:2rem}:host .field-wrap .nggv-button-date:not(:disabled,.disabled,[aria-disabled]):hover{background-color:#333;color:#fff;--background: rgb(51, 51, 51);--color: rgb(255, 255, 255);border-color:#333}:host .field-wrap .nggv-button-date[aria-selected=true],:host .field-wrap .nggv-button-date:active,:host .field-wrap .nggv-button-date.active,:host .field-wrap .nggv-button-date.active:hover,:host .field-wrap .nggv-button-date:active:hover{background-color:#333;color:#fff;--background: rgb(51, 51, 51);--color: rgb(255, 255, 255);border-color:#333}:host .field-wrap .nggv-button-date[aria-selected]:hover,:host .field-wrap .nggv-button-date.active:hover,:host .field-wrap .nggv-button-date:active:hover{opacity:.9}:host .field-wrap .nggv-button-date:focus-visible{background-color:#333;color:#fff;--background: rgb(51, 51, 51);--color: rgb(255, 255, 255);border-color:#333!important}:host .field-wrap .nggv-button-date:disabled,:host .field-wrap .nggv-button-date.disabled,:host .field-wrap .nggv-button-date[aria-disabled=true]{color:var(--text-disabled-color)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed}:host .field-wrap .nggv-button-date:disabled::placeholder,:host .field-wrap .nggv-button-date.disabled::placeholder,:host .field-wrap .nggv-button-date[aria-disabled=true]::placeholder{color:var(--text-disabled-color)}@media (max-width: 47.98em){:host .field-wrap .nggv-button-date{width:2.625rem;height:2.625rem}}:host .field-wrap .nggv-button-date:focus{outline-color:#1a1a1a;outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host .field-wrap .nggv-button-date[disabled]{background-color:#f8f8f8!important;color:#adadad}@media (max-width: 35.98em){:host .field-wrap .nggv-button-date{min-width:initial}}:host .field-wrap input[type=text]::-webkit-inner-spin-button,:host .field-wrap input[type=text]::-webkit-calendar-picker-indicator{display:none;-webkit-appearance:none;font-size:1rem;font-family:inherit}:host .field-wrap .nggv-field-date{border:1px solid #cecece;border-radius:4px 0 0 4px;outline:none;box-sizing:border-box;min-height:2.75rem;line-height:1.5;font-size:1rem;font-family:inherit;border:none;min-height:2.375rem;width:100%;padding-left:1rem}:host .field-wrap .nggv-field-date *,:host .field-wrap .nggv-field-date *:before,:host .field-wrap .nggv-field-date *:after{box-sizing:border-box}:host .field-wrap .nggv-field-date:hover{border-color:#41b0ee}:host .field-wrap .nggv-field-date:focus{outline-color:#1a1a1a;outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host .field-wrap .nggv-field-date:active{border-color:#cecece}:host .field-wrap .nggv-field-date[disabled]{background-color:#f8f8f8;border-color:#cecece}:host .field-wrap .nggv-field-date[disabled]::placeholder{color:#cecece}:host .field-wrap .nggv-field-date:not(:focus){border-right:none;padding-right:0}:host .field-wrap .nggv-field-date:focus{padding-right:0}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "directive", type: i4.NggvInputMaskDirective, selector: "[nggvInputMask]", inputs: ["nggvInputMask"] }, { kind: "directive", type: i5.NggCoreElementDirective, selector: "[nggCoreElement]" }, { kind: "component", type: i6.DatepickerComponent, selector: "nggv-datepicker", inputs: ["firstDayOfWeek", "disableDates", "disableWeekDays", "minCalendarRows", "selected", "locale", "type", "firstValid", "lastValid", "closingTime"], outputs: ["ngvDateChange"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.InputMaskFormatPipe, name: "nggvInputMaskFormat" }] }); }
156
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DateInputComponent, selector: "nggv-dateinput,nggv-input[type=date]", inputs: { thook: "thook", type: "type", readonly: "readonly", disableDates: "disableDates", disableWeekDays: "disableWeekDays", minRows: "minRows", firstValid: "firstValid", lastValid: "lastValid", closingTime: "closingTime", firstDayOfWeek: "firstDayOfWeek", closeCalendarOnEscape: "closeCalendarOnEscape" }, host: { listeners: { "keydown": "keyListener($event)" }, properties: { "attr.data-thook": "this.thook" } }, viewQueries: [{ propertyName: "toggleButtonRef", first: true, predicate: ["toggleCalendarButton"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<!-- LABEL -->\n<ng-container *transloco=\"let t; read: scope\">\n <label\n [id]=\"id + '-label'\"\n class=\"gds-field-label hide-if-empty\"\n [attr.for]=\"id + '-input'\"\n >\n <ng-template\n *ngTemplateOutlet=\"labelContentTpl || basicLabelContentTpl\"\n ></ng-template>\n <ng-template #basicLabelContentTpl>\n <!-- to trigger css:empty if no label was added -->\n <ng-container *ngIf=\"label\">\n {{ label }}\n <span\n *ngIf=\"optional === true || (required !== true && optional !== false)\"\n class=\"gds-field-label--optional\"\n >\n ({{ t('label.optional') }})\n </span>\n </ng-container>\n </ng-template>\n </label>\n\n <!-- DESCRIPTION -->\n <div\n class=\"gds-field-label--small description hide-if-empty\"\n *ngIf=\"description\"\n >\n {{ description }}\n </div>\n\n <!-- LOCKED INPUT -->\n <ng-container *ngIf=\"locked\">\n <ng-template\n *ngTemplateOutlet=\"\n lockedTpl || defaultLockedTpl;\n context: { $implicit: state }\n \"\n ></ng-template>\n <ng-template #defaultLockedTpl>\n <div\n [id]=\"id + '-input'\"\n class=\"nggv-field--locked\"\n [attr.name]=\"name\"\n [attr.value]=\"state\"\n [attr.role]=\"role\"\n >\n <span *ngIf=\"!state\" class=\"unset-state\">-</span>\n <ng-container *ngIf=\"state\">\n {{ state | nggvInputMaskFormat: dateInputMask }}\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- INPUT WRAPPER -->\n <ng-container *ngIf=\"!locked\">\n <div\n class=\"field-wrap\"\n [class.nggv-field--error]=\"invalid\"\n *ngIf=\"showInput$ | async\"\n >\n <!-- INPUT FIELD -->\n <input\n #input\n [id]=\"id + '-input'\"\n class=\"nggv-field-date\"\n type=\"text\"\n autocomplete=\"off\"\n [attr.name]=\"name\"\n [attr.required]=\"required\"\n [disabled]=\"disabled\"\n [readOnly]=\"readonly\"\n [attr.role]=\"role\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-label]=\"description\"\n [nggvInputMask]=\"dateInputMask\"\n [value]=\"state\"\n title=\"\"\n (change)=\"onValueChange($event.target)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n />\n\n <button\n aria-label=\"toggle calendar\"\n #toggleCalendarButton\n class=\"nggv-button-date\"\n type=\"button\"\n data-thook=\"toggle-calendar-button\"\n (click)=\"toggleDatepicker()\"\n [disabled]=\"disabled\"\n >\n <gds-icon-calendar\n *nggCoreElement\n width=\"20\"\n height=\"20\"\n ></gds-icon-calendar>\n </button>\n </div>\n\n <!-- DATEPICKER -->\n <div class=\"nggv-datepicker\" *ngIf=\"shown\">\n <nggv-datepicker\n #input\n [type]=\"type\"\n [disableDates]=\"disableDates\"\n [disableWeekDays]=\"disableWeekDays\"\n [selected]=\"state\"\n [locale]=\"locale\"\n [minCalendarRows]=\"minRows\"\n [firstDayOfWeek]=\"firstDayOfWeek\"\n [firstValid]=\"firstValid\"\n [lastValid]=\"lastValid\"\n [closingTime]=\"closingTime\"\n (ngvDateChange)=\"onDateChange($event)\"\n >\n <ng-content></ng-content>\n </nggv-datepicker>\n </div>\n\n <!-- ERRORS -->\n <ng-container\n *ngIf=\"\n invalid &&\n (error || ngControl?.invalid) &&\n (!errorList || !errorList.length)\n \"\n >\n <label\n class=\"gds-field-notice gds-field-notice--error\"\n [attr.for]=\"id + '-input'\"\n >\n <span class=\"error-item\">\n <span class=\"error-item--icon\">\n <gds-icon-triangle-exclamation\n *nggCoreElement\n [solid]=\"true\"\n width=\"16\"\n height=\"16\"\n ></gds-icon-triangle-exclamation>\n </span>\n <span\n *ngIf=\"error; else errorsRef\"\n class=\"error-item--text\"\n [attr.data-thook]=\"thook + '-errorlabel'\"\n >{{ error }}</span\n >\n <ng-template #errorsRef>\n <span\n *ngIf=\"firstError as error\"\n class=\"error-item--text\"\n [attr.data-thook]=\"thook + '-errorlabel'\"\n >\n {{ t('error.field' + error?.code, error?.params) }}\n </span>\n </ng-template>\n </span>\n </label>\n </ng-container>\n\n <ng-container *ngFor=\"let error of errorList ?? []\">\n <label\n class=\"gds-field-notice gds-field-notice--error\"\n [attr.for]=\"id + '-input'\"\n *ngIf=\"invalid && error\"\n >\n <span class=\"error-item\">\n <span class=\"error-item--icon\">\n <gds-icon-triangle-exclamation\n *nggCoreElement\n [solid]=\"true\"\n width=\"16\"\n height=\"16\"\n ></gds-icon-triangle-exclamation>\n </span>\n <span\n class=\"error-item--text\"\n [attr.data-thook]=\"thook + '-errorlabel'\"\n >{{ error }}</span\n >\n </span>\n </label>\n </ng-container>\n </ng-container>\n</ng-container>\n", styles: [":host{display:block;position:relative}@media (max-width: 47.98em){:host{min-width:100%}}:host .hide-if-empty:empty{display:none}:host .unset-state{padding-left:.5rem}:host .gds-field-label{display:block}:host .gds-field-label:is(label){margin-bottom:0}:host .gds-field-label.form-control{width:fit-content}@supports (-moz-appearance: none){:host .gds-field-label.form-control:focus:not(:focus-visible){box-shadow:none;outline:0}:host .gds-field-label.form-control:focus,:host .gds-field-label.form-control:focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}}:host .gds-field-label:not(.form-control){font-weight:500;width:100%;line-height:1.25rem}:host .gds-field-label+input,:host .gds-field-label+textarea,fieldset :host .gds-field-label+div,:host .gds-field-label+button,:host .gds-field-label+.group-stepper,:host .gds-field-label+.stepper-wrapper,:host .gds-field-label+.group{margin-top:.5rem}:host .gds-field-label+.form-info{margin-bottom:.5rem}:host label+.field-wrap,:host label+.nggv-field--locked{margin-top:.5rem}:host .description{font-size:.875rem;margin-bottom:.5rem;line-height:1.25rem;width:100%}:host .gds-field-label--optional:is(label){margin-bottom:0}:host .gds-field-label--optional.form-control{width:fit-content}@supports (-moz-appearance: none){:host .gds-field-label--optional.form-control:focus:not(:focus-visible){box-shadow:none;outline:0}:host .gds-field-label--optional.form-control:focus,:host .gds-field-label--optional.form-control:focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}}:host .gds-field-label--optional:not(.form-control){font-weight:500;width:100%;line-height:1.25rem}:host .gds-field-label--optional+input,:host .gds-field-label--optional+textarea,fieldset :host .gds-field-label--optional+div,:host .gds-field-label--optional+button,:host .gds-field-label--optional+.group-stepper,:host .gds-field-label--optional+.stepper-wrapper,:host .gds-field-label--optional+.group{margin-top:.5rem}:host .gds-field-label--optional+.form-info{margin-bottom:.5rem}:host .nggv-datepicker{margin-top:.25rem;position:absolute}:host .nggv-field--error{border-bottom:.125rem solid #9f000a!important}:host .nggv-field--error:focus,:host .nggv-field--error:active,:host .nggv-field--error:hover{border-bottom:.125rem solid #9f000a!important}:host .error-item{display:flex;gap:.5rem;color:#9f000a}:host .gds-field-notice{margin-top:.5rem;display:block;font-size:.875rem;line-height:1;font-weight:500}:host .field-wrap{border:1px solid #868686;border-radius:4px;outline:none;box-sizing:border-box;min-height:2.75rem;line-height:1.5;font-size:1rem;font-family:inherit;height:2.625rem;display:flex}:host .field-wrap *,:host .field-wrap *:before,:host .field-wrap *:after{box-sizing:border-box}:host .field-wrap .nggv-button-date{--text-disabled-color: #adadad;padding:.75rem 1rem;border-radius:var(--sg-border-radius);border:solid var(--sg-border-width) var(--sg-border-color);font-weight:500;min-height:2.75rem;align-items:center;display:inline-flex;justify-content:center;transition:all .3s cubic-bezier(.23,1,.32,1),outline-offset 0s,outline-width 0s;border-color:#333;color:#333;--color: rgb(51, 51, 51);background-color:transparent;min-height:2.5rem;border:none;border-radius:3px;width:2.625rem;height:2.625rem;min-width:2.625rem;border-top-left-radius:0!important;border-bottom-left-radius:0!important;text-align:right}:host .field-wrap .nggv-button-date:focus:not(:focus-visible){box-shadow:none;outline:0}:host .field-wrap .nggv-button-date:focus,:host .field-wrap .nggv-button-date:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}@media (max-width: 35.98em){:host .field-wrap .nggv-button-date{min-width:100%}}@media screen and (-ms-high-contrast: active){:host .field-wrap .nggv-button-date{border:2px solid currentcolor}}:host .field-wrap .nggv-button-date.small{min-height:2rem;padding:.4375rem .75rem;line-height:1rem}:host .field-wrap .nggv-button-date.large{min-height:4rem;padding:1rem 1.5rem;font-size:1.5rem;line-height:2rem}:host .field-wrap .nggv-button-date:not(:disabled,.disabled,[aria-disabled]):hover{background-color:#333;color:#fff;--background: rgb(51, 51, 51);--color: rgb(255, 255, 255);border-color:#333}:host .field-wrap .nggv-button-date[aria-selected=true],:host .field-wrap .nggv-button-date:active,:host .field-wrap .nggv-button-date.active,:host .field-wrap .nggv-button-date.active:hover,:host .field-wrap .nggv-button-date:active:hover{background-color:#333;color:#fff;--background: rgb(51, 51, 51);--color: rgb(255, 255, 255);border-color:#333}:host .field-wrap .nggv-button-date[aria-selected]:hover,:host .field-wrap .nggv-button-date.active:hover,:host .field-wrap .nggv-button-date:active:hover{opacity:.9}:host .field-wrap .nggv-button-date:focus-visible{background-color:#333;color:#fff;--background: rgb(51, 51, 51);--color: rgb(255, 255, 255);border-color:#333!important}:host .field-wrap .nggv-button-date:disabled,:host .field-wrap .nggv-button-date.disabled,:host .field-wrap .nggv-button-date[aria-disabled=true]{color:var(--text-disabled-color)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed}:host .field-wrap .nggv-button-date:disabled::placeholder,:host .field-wrap .nggv-button-date.disabled::placeholder,:host .field-wrap .nggv-button-date[aria-disabled=true]::placeholder{color:var(--text-disabled-color)}@media (max-width: 47.98em){:host .field-wrap .nggv-button-date{width:2.625rem;height:2.625rem}}:host .field-wrap .nggv-button-date:focus{outline-color:#1a1a1a;outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host .field-wrap .nggv-button-date[disabled]{background-color:#f8f8f8!important;color:#adadad}@media (max-width: 35.98em){:host .field-wrap .nggv-button-date{min-width:initial}}:host .field-wrap input[type=text]::-webkit-inner-spin-button,:host .field-wrap input[type=text]::-webkit-calendar-picker-indicator{display:none;-webkit-appearance:none;font-size:1rem;font-family:inherit}:host .field-wrap .nggv-field-date{border:1px solid #cecece;border-radius:4px 0 0 4px;outline:none;box-sizing:border-box;min-height:2.75rem;line-height:1.5;font-size:1rem;font-family:inherit;border:none;min-height:2.375rem;width:100%;padding-left:1rem}:host .field-wrap .nggv-field-date *,:host .field-wrap .nggv-field-date *:before,:host .field-wrap .nggv-field-date *:after{box-sizing:border-box}:host .field-wrap .nggv-field-date:hover{border-color:#41b0ee}:host .field-wrap .nggv-field-date:focus{outline-color:#1a1a1a;outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host .field-wrap .nggv-field-date:active{border-color:#cecece}:host .field-wrap .nggv-field-date[disabled]{background-color:#f8f8f8;border-color:#cecece}:host .field-wrap .nggv-field-date[disabled]::placeholder{color:#cecece}:host .field-wrap .nggv-field-date:not(:focus){border-right:none;padding-right:0}:host .field-wrap .nggv-field-date:focus{padding-right:0}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "directive", type: i4.NggvInputMaskDirective, selector: "[nggvInputMask]", inputs: ["nggvInputMask"] }, { kind: "directive", type: i5.NggCoreElementDirective, selector: "[nggCoreElement]" }, { kind: "component", type: i6.DatepickerComponent, selector: "nggv-datepicker", inputs: ["firstDayOfWeek", "disableDates", "disableWeekDays", "minCalendarRows", "selected", "locale", "type", "firstValid", "lastValid", "closingTime"], outputs: ["ngvDateChange"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.InputMaskFormatPipe, name: "nggvInputMaskFormat" }] }); }
158
157
  }
159
158
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DateInputComponent, decorators: [{
160
159
  type: Component,
161
- args: [{ selector: 'nggv-dateinput,nggv-input[type=date]', template: "<!-- LABEL -->\n<ng-container *transloco=\"let t; read: scope\">\n <label\n [id]=\"id + '-label'\"\n class=\"gds-field-label hide-if-empty\"\n [attr.for]=\"id + '-input'\"\n >\n <ng-template\n *ngTemplateOutlet=\"labelContentTpl || basicLabelContentTpl\"\n ></ng-template>\n <ng-template #basicLabelContentTpl>\n <!-- to trigger css:empty if no label was added -->\n <ng-container *ngIf=\"label\">\n {{ label }}\n <span\n *ngIf=\"optional === true || (required !== true && optional !== false)\"\n class=\"gds-field-label--optional\"\n >\n ({{ t('label.optional') }})\n </span>\n </ng-container>\n </ng-template>\n </label>\n\n <!-- DESCRIPTION -->\n <div\n class=\"gds-field-label--small description hide-if-empty\"\n *ngIf=\"description\"\n >\n {{ description }}\n </div>\n\n <!-- LOCKED INPUT -->\n <ng-container *ngIf=\"locked\">\n <div\n [id]=\"id + '-input'\"\n class=\"nggv-field--locked\"\n [attr.name]=\"name\"\n [attr.value]=\"state\"\n [attr.role]=\"role\"\n >\n <span *ngIf=\"!state\" class=\"unset-state\">-</span>\n <ng-container *ngIf=\"state\">\n {{ state | nggvInputMaskFormat: dateInputMask }}\n </ng-container>\n </div>\n </ng-container>\n\n <!-- INPUT WRAPPER -->\n <ng-container *ngIf=\"!locked\">\n <div\n class=\"field-wrap\"\n [class.nggv-field--error]=\"invalid\"\n *ngIf=\"showInput$ | async\"\n >\n <!-- INPUT FIELD -->\n <input\n #input\n [id]=\"id + '-input'\"\n class=\"nggv-field-date\"\n type=\"text\"\n autocomplete=\"off\"\n [attr.name]=\"name\"\n [attr.required]=\"required\"\n [disabled]=\"disabled\"\n [readOnly]=\"readonly\"\n [attr.role]=\"role\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-label]=\"description\"\n [nggvInputMask]=\"dateInputMask\"\n [value]=\"state\"\n title=\"\"\n (change)=\"onValueChange($event.target)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n />\n\n <button\n aria-label=\"toggle calendar\"\n #toggleCalendarButton\n class=\"nggv-button-date\"\n type=\"button\"\n data-thook=\"toggle-calendar-button\"\n (click)=\"toggleDatepicker()\"\n [disabled]=\"disabled\"\n >\n <gds-icon-calendar\n *nggCoreElement\n width=\"20\"\n height=\"20\"\n ></gds-icon-calendar>\n </button>\n </div>\n\n <!-- DATEPICKER -->\n <div class=\"nggv-datepicker\" *ngIf=\"shown\">\n <nggv-datepicker\n #input\n [type]=\"type\"\n [disableDates]=\"disableDates\"\n [disableWeekDays]=\"disableWeekDays\"\n [selected]=\"state\"\n [locale]=\"locale\"\n [minCalendarRows]=\"minRows\"\n [firstDayOfWeek]=\"firstDayOfWeek\"\n [firstValid]=\"firstValid\"\n [lastValid]=\"lastValid\"\n [closingTime]=\"closingTime\"\n (ngvDateChange)=\"onDateChange($event)\"\n >\n <ng-content></ng-content>\n </nggv-datepicker>\n </div>\n\n <!-- ERRORS -->\n <ng-container\n *ngIf=\"\n invalid &&\n (error || ngControl?.invalid) &&\n (!errorList || !errorList.length)\n \"\n >\n <label\n class=\"gds-field-notice gds-field-notice--error\"\n [attr.for]=\"id + '-input'\"\n >\n <span class=\"error-item\">\n <span class=\"error-item--icon\">\n <gds-icon-triangle-exclamation\n *nggCoreElement\n [solid]=\"true\"\n width=\"16\"\n height=\"16\"\n ></gds-icon-triangle-exclamation>\n </span>\n <span\n *ngIf=\"error; else errorsRef\"\n class=\"error-item--text\"\n [attr.data-thook]=\"thook + '-errorlabel'\"\n >{{ error }}</span\n >\n <ng-template #errorsRef>\n <span\n *ngIf=\"firstError as error\"\n class=\"error-item--text\"\n [attr.data-thook]=\"thook + '-errorlabel'\"\n >\n {{ t('error.field' + error?.code, error?.params) }}\n </span>\n </ng-template>\n </span>\n </label>\n </ng-container>\n\n <ng-container *ngFor=\"let error of errorList ?? []\">\n <label\n class=\"gds-field-notice gds-field-notice--error\"\n [attr.for]=\"id + '-input'\"\n *ngIf=\"invalid && error\"\n >\n <span class=\"error-item\">\n <span class=\"error-item--icon\">\n <gds-icon-triangle-exclamation\n *nggCoreElement\n [solid]=\"true\"\n width=\"16\"\n height=\"16\"\n ></gds-icon-triangle-exclamation>\n </span>\n <span\n class=\"error-item--text\"\n [attr.data-thook]=\"thook + '-errorlabel'\"\n >{{ error }}</span\n >\n </span>\n </label>\n </ng-container>\n </ng-container>\n</ng-container>\n", styles: [":host{display:block;position:relative}@media (max-width: 47.98em){:host{min-width:100%}}:host .hide-if-empty:empty{display:none}:host .unset-state{padding-left:.5rem}:host .gds-field-label{display:block}:host .gds-field-label:is(label){margin-bottom:0}:host .gds-field-label.form-control{width:fit-content}@supports (-moz-appearance: none){:host .gds-field-label.form-control:focus:not(:focus-visible){box-shadow:none;outline:0}:host .gds-field-label.form-control:focus,:host .gds-field-label.form-control:focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}}:host .gds-field-label:not(.form-control){font-weight:500;width:100%;line-height:1.25rem}:host .gds-field-label+input,:host .gds-field-label+textarea,fieldset :host .gds-field-label+div,:host .gds-field-label+button,:host .gds-field-label+.group-stepper,:host .gds-field-label+.stepper-wrapper,:host .gds-field-label+.group{margin-top:.5rem}:host .gds-field-label+.form-info{margin-bottom:.5rem}:host label+.field-wrap,:host label+.nggv-field--locked{margin-top:.5rem}:host .description{font-size:.875rem;margin-bottom:.5rem;line-height:1.25rem;width:100%}:host .gds-field-label--optional:is(label){margin-bottom:0}:host .gds-field-label--optional.form-control{width:fit-content}@supports (-moz-appearance: none){:host .gds-field-label--optional.form-control:focus:not(:focus-visible){box-shadow:none;outline:0}:host .gds-field-label--optional.form-control:focus,:host .gds-field-label--optional.form-control:focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}}:host .gds-field-label--optional:not(.form-control){font-weight:500;width:100%;line-height:1.25rem}:host .gds-field-label--optional+input,:host .gds-field-label--optional+textarea,fieldset :host .gds-field-label--optional+div,:host .gds-field-label--optional+button,:host .gds-field-label--optional+.group-stepper,:host .gds-field-label--optional+.stepper-wrapper,:host .gds-field-label--optional+.group{margin-top:.5rem}:host .gds-field-label--optional+.form-info{margin-bottom:.5rem}:host .nggv-datepicker{margin-top:.25rem;position:absolute}:host .nggv-field--error{border-bottom:.125rem solid #9f000a!important}:host .nggv-field--error:focus,:host .nggv-field--error:active,:host .nggv-field--error:hover{border-bottom:.125rem solid #9f000a!important}:host .error-item{display:flex;gap:.5rem;color:#9f000a}:host .gds-field-notice{margin-top:.5rem;display:block;font-size:.875rem;line-height:1;font-weight:500}:host .field-wrap{border:1px solid #868686;border-radius:4px;outline:none;box-sizing:border-box;min-height:2.75rem;line-height:1.5;font-size:1rem;font-family:inherit;height:2.625rem;display:flex}:host .field-wrap *,:host .field-wrap *:before,:host .field-wrap *:after{box-sizing:border-box}:host .field-wrap .nggv-button-date{--text-disabled-color: #adadad;padding:.75rem 1rem;border-radius:var(--sg-border-radius);border:solid var(--sg-border-width) var(--sg-border-color);font-weight:500;min-height:2.75rem;align-items:center;display:inline-flex;justify-content:center;transition:all .3s cubic-bezier(.23,1,.32,1),outline-offset 0s,outline-width 0s;border-color:#333;color:#333;--color: rgb(51, 51, 51);background-color:transparent;min-height:2.5rem;border:none;border-radius:3px;width:2.625rem;height:2.625rem;min-width:2.625rem;border-top-left-radius:0!important;border-bottom-left-radius:0!important;text-align:right}:host .field-wrap .nggv-button-date:focus:not(:focus-visible){box-shadow:none;outline:0}:host .field-wrap .nggv-button-date:focus,:host .field-wrap .nggv-button-date:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}@media (max-width: 35.98em){:host .field-wrap .nggv-button-date{min-width:100%}}@media screen and (-ms-high-contrast: active){:host .field-wrap .nggv-button-date{border:2px solid currentcolor}}:host .field-wrap .nggv-button-date.small{min-height:2rem;padding:.4375rem .75rem;line-height:1rem}:host .field-wrap .nggv-button-date.large{min-height:4rem;padding:1rem 1.5rem;font-size:1.5rem;line-height:2rem}:host .field-wrap .nggv-button-date:not(:disabled,.disabled,[aria-disabled]):hover{background-color:#333;color:#fff;--background: rgb(51, 51, 51);--color: rgb(255, 255, 255);border-color:#333}:host .field-wrap .nggv-button-date[aria-selected=true],:host .field-wrap .nggv-button-date:active,:host .field-wrap .nggv-button-date.active,:host .field-wrap .nggv-button-date.active:hover,:host .field-wrap .nggv-button-date:active:hover{background-color:#333;color:#fff;--background: rgb(51, 51, 51);--color: rgb(255, 255, 255);border-color:#333}:host .field-wrap .nggv-button-date[aria-selected]:hover,:host .field-wrap .nggv-button-date.active:hover,:host .field-wrap .nggv-button-date:active:hover{opacity:.9}:host .field-wrap .nggv-button-date:focus-visible{background-color:#333;color:#fff;--background: rgb(51, 51, 51);--color: rgb(255, 255, 255);border-color:#333!important}:host .field-wrap .nggv-button-date:disabled,:host .field-wrap .nggv-button-date.disabled,:host .field-wrap .nggv-button-date[aria-disabled=true]{color:var(--text-disabled-color)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed}:host .field-wrap .nggv-button-date:disabled::placeholder,:host .field-wrap .nggv-button-date.disabled::placeholder,:host .field-wrap .nggv-button-date[aria-disabled=true]::placeholder{color:var(--text-disabled-color)}@media (max-width: 47.98em){:host .field-wrap .nggv-button-date{width:2.625rem;height:2.625rem}}:host .field-wrap .nggv-button-date:focus{outline-color:#1a1a1a;outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host .field-wrap .nggv-button-date[disabled]{background-color:#f8f8f8!important;color:#adadad}@media (max-width: 35.98em){:host .field-wrap .nggv-button-date{min-width:initial}}:host .field-wrap input[type=text]::-webkit-inner-spin-button,:host .field-wrap input[type=text]::-webkit-calendar-picker-indicator{display:none;-webkit-appearance:none;font-size:1rem;font-family:inherit}:host .field-wrap .nggv-field-date{border:1px solid #cecece;border-radius:4px 0 0 4px;outline:none;box-sizing:border-box;min-height:2.75rem;line-height:1.5;font-size:1rem;font-family:inherit;border:none;min-height:2.375rem;width:100%;padding-left:1rem}:host .field-wrap .nggv-field-date *,:host .field-wrap .nggv-field-date *:before,:host .field-wrap .nggv-field-date *:after{box-sizing:border-box}:host .field-wrap .nggv-field-date:hover{border-color:#41b0ee}:host .field-wrap .nggv-field-date:focus{outline-color:#1a1a1a;outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host .field-wrap .nggv-field-date:active{border-color:#cecece}:host .field-wrap .nggv-field-date[disabled]{background-color:#f8f8f8;border-color:#cecece}:host .field-wrap .nggv-field-date[disabled]::placeholder{color:#cecece}:host .field-wrap .nggv-field-date:not(:focus){border-right:none;padding-right:0}:host .field-wrap .nggv-field-date:focus{padding-right:0}\n"] }]
160
+ args: [{ selector: 'nggv-dateinput,nggv-input[type=date]', template: "<!-- LABEL -->\n<ng-container *transloco=\"let t; read: scope\">\n <label\n [id]=\"id + '-label'\"\n class=\"gds-field-label hide-if-empty\"\n [attr.for]=\"id + '-input'\"\n >\n <ng-template\n *ngTemplateOutlet=\"labelContentTpl || basicLabelContentTpl\"\n ></ng-template>\n <ng-template #basicLabelContentTpl>\n <!-- to trigger css:empty if no label was added -->\n <ng-container *ngIf=\"label\">\n {{ label }}\n <span\n *ngIf=\"optional === true || (required !== true && optional !== false)\"\n class=\"gds-field-label--optional\"\n >\n ({{ t('label.optional') }})\n </span>\n </ng-container>\n </ng-template>\n </label>\n\n <!-- DESCRIPTION -->\n <div\n class=\"gds-field-label--small description hide-if-empty\"\n *ngIf=\"description\"\n >\n {{ description }}\n </div>\n\n <!-- LOCKED INPUT -->\n <ng-container *ngIf=\"locked\">\n <ng-template\n *ngTemplateOutlet=\"\n lockedTpl || defaultLockedTpl;\n context: { $implicit: state }\n \"\n ></ng-template>\n <ng-template #defaultLockedTpl>\n <div\n [id]=\"id + '-input'\"\n class=\"nggv-field--locked\"\n [attr.name]=\"name\"\n [attr.value]=\"state\"\n [attr.role]=\"role\"\n >\n <span *ngIf=\"!state\" class=\"unset-state\">-</span>\n <ng-container *ngIf=\"state\">\n {{ state | nggvInputMaskFormat: dateInputMask }}\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- INPUT WRAPPER -->\n <ng-container *ngIf=\"!locked\">\n <div\n class=\"field-wrap\"\n [class.nggv-field--error]=\"invalid\"\n *ngIf=\"showInput$ | async\"\n >\n <!-- INPUT FIELD -->\n <input\n #input\n [id]=\"id + '-input'\"\n class=\"nggv-field-date\"\n type=\"text\"\n autocomplete=\"off\"\n [attr.name]=\"name\"\n [attr.required]=\"required\"\n [disabled]=\"disabled\"\n [readOnly]=\"readonly\"\n [attr.role]=\"role\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-label]=\"description\"\n [nggvInputMask]=\"dateInputMask\"\n [value]=\"state\"\n title=\"\"\n (change)=\"onValueChange($event.target)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n />\n\n <button\n aria-label=\"toggle calendar\"\n #toggleCalendarButton\n class=\"nggv-button-date\"\n type=\"button\"\n data-thook=\"toggle-calendar-button\"\n (click)=\"toggleDatepicker()\"\n [disabled]=\"disabled\"\n >\n <gds-icon-calendar\n *nggCoreElement\n width=\"20\"\n height=\"20\"\n ></gds-icon-calendar>\n </button>\n </div>\n\n <!-- DATEPICKER -->\n <div class=\"nggv-datepicker\" *ngIf=\"shown\">\n <nggv-datepicker\n #input\n [type]=\"type\"\n [disableDates]=\"disableDates\"\n [disableWeekDays]=\"disableWeekDays\"\n [selected]=\"state\"\n [locale]=\"locale\"\n [minCalendarRows]=\"minRows\"\n [firstDayOfWeek]=\"firstDayOfWeek\"\n [firstValid]=\"firstValid\"\n [lastValid]=\"lastValid\"\n [closingTime]=\"closingTime\"\n (ngvDateChange)=\"onDateChange($event)\"\n >\n <ng-content></ng-content>\n </nggv-datepicker>\n </div>\n\n <!-- ERRORS -->\n <ng-container\n *ngIf=\"\n invalid &&\n (error || ngControl?.invalid) &&\n (!errorList || !errorList.length)\n \"\n >\n <label\n class=\"gds-field-notice gds-field-notice--error\"\n [attr.for]=\"id + '-input'\"\n >\n <span class=\"error-item\">\n <span class=\"error-item--icon\">\n <gds-icon-triangle-exclamation\n *nggCoreElement\n [solid]=\"true\"\n width=\"16\"\n height=\"16\"\n ></gds-icon-triangle-exclamation>\n </span>\n <span\n *ngIf=\"error; else errorsRef\"\n class=\"error-item--text\"\n [attr.data-thook]=\"thook + '-errorlabel'\"\n >{{ error }}</span\n >\n <ng-template #errorsRef>\n <span\n *ngIf=\"firstError as error\"\n class=\"error-item--text\"\n [attr.data-thook]=\"thook + '-errorlabel'\"\n >\n {{ t('error.field' + error?.code, error?.params) }}\n </span>\n </ng-template>\n </span>\n </label>\n </ng-container>\n\n <ng-container *ngFor=\"let error of errorList ?? []\">\n <label\n class=\"gds-field-notice gds-field-notice--error\"\n [attr.for]=\"id + '-input'\"\n *ngIf=\"invalid && error\"\n >\n <span class=\"error-item\">\n <span class=\"error-item--icon\">\n <gds-icon-triangle-exclamation\n *nggCoreElement\n [solid]=\"true\"\n width=\"16\"\n height=\"16\"\n ></gds-icon-triangle-exclamation>\n </span>\n <span\n class=\"error-item--text\"\n [attr.data-thook]=\"thook + '-errorlabel'\"\n >{{ error }}</span\n >\n </span>\n </label>\n </ng-container>\n </ng-container>\n</ng-container>\n", styles: [":host{display:block;position:relative}@media (max-width: 47.98em){:host{min-width:100%}}:host .hide-if-empty:empty{display:none}:host .unset-state{padding-left:.5rem}:host .gds-field-label{display:block}:host .gds-field-label:is(label){margin-bottom:0}:host .gds-field-label.form-control{width:fit-content}@supports (-moz-appearance: none){:host .gds-field-label.form-control:focus:not(:focus-visible){box-shadow:none;outline:0}:host .gds-field-label.form-control:focus,:host .gds-field-label.form-control:focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}}:host .gds-field-label:not(.form-control){font-weight:500;width:100%;line-height:1.25rem}:host .gds-field-label+input,:host .gds-field-label+textarea,fieldset :host .gds-field-label+div,:host .gds-field-label+button,:host .gds-field-label+.group-stepper,:host .gds-field-label+.stepper-wrapper,:host .gds-field-label+.group{margin-top:.5rem}:host .gds-field-label+.form-info{margin-bottom:.5rem}:host label+.field-wrap,:host label+.nggv-field--locked{margin-top:.5rem}:host .description{font-size:.875rem;margin-bottom:.5rem;line-height:1.25rem;width:100%}:host .gds-field-label--optional:is(label){margin-bottom:0}:host .gds-field-label--optional.form-control{width:fit-content}@supports (-moz-appearance: none){:host .gds-field-label--optional.form-control:focus:not(:focus-visible){box-shadow:none;outline:0}:host .gds-field-label--optional.form-control:focus,:host .gds-field-label--optional.form-control:focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}}:host .gds-field-label--optional:not(.form-control){font-weight:500;width:100%;line-height:1.25rem}:host .gds-field-label--optional+input,:host .gds-field-label--optional+textarea,fieldset :host .gds-field-label--optional+div,:host .gds-field-label--optional+button,:host .gds-field-label--optional+.group-stepper,:host .gds-field-label--optional+.stepper-wrapper,:host .gds-field-label--optional+.group{margin-top:.5rem}:host .gds-field-label--optional+.form-info{margin-bottom:.5rem}:host .nggv-datepicker{margin-top:.25rem;position:absolute}:host .nggv-field--error{border-bottom:.125rem solid #9f000a!important}:host .nggv-field--error:focus,:host .nggv-field--error:active,:host .nggv-field--error:hover{border-bottom:.125rem solid #9f000a!important}:host .error-item{display:flex;gap:.5rem;color:#9f000a}:host .gds-field-notice{margin-top:.5rem;display:block;font-size:.875rem;line-height:1;font-weight:500}:host .field-wrap{border:1px solid #868686;border-radius:4px;outline:none;box-sizing:border-box;min-height:2.75rem;line-height:1.5;font-size:1rem;font-family:inherit;height:2.625rem;display:flex}:host .field-wrap *,:host .field-wrap *:before,:host .field-wrap *:after{box-sizing:border-box}:host .field-wrap .nggv-button-date{--text-disabled-color: #adadad;padding:.75rem 1rem;border-radius:var(--sg-border-radius);border:solid var(--sg-border-width) var(--sg-border-color);font-weight:500;min-height:2.75rem;align-items:center;display:inline-flex;justify-content:center;transition:all .3s cubic-bezier(.23,1,.32,1),outline-offset 0s,outline-width 0s;border-color:#333;color:#333;--color: rgb(51, 51, 51);background-color:transparent;min-height:2.5rem;border:none;border-radius:3px;width:2.625rem;height:2.625rem;min-width:2.625rem;border-top-left-radius:0!important;border-bottom-left-radius:0!important;text-align:right}:host .field-wrap .nggv-button-date:focus:not(:focus-visible){box-shadow:none;outline:0}:host .field-wrap .nggv-button-date:focus,:host .field-wrap .nggv-button-date:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}@media (max-width: 35.98em){:host .field-wrap .nggv-button-date{min-width:100%}}@media screen and (-ms-high-contrast: active){:host .field-wrap .nggv-button-date{border:2px solid currentcolor}}:host .field-wrap .nggv-button-date.small{min-height:2rem;padding:.4375rem .75rem;line-height:1rem}:host .field-wrap .nggv-button-date.large{min-height:4rem;padding:1rem 1.5rem;font-size:1.5rem;line-height:2rem}:host .field-wrap .nggv-button-date:not(:disabled,.disabled,[aria-disabled]):hover{background-color:#333;color:#fff;--background: rgb(51, 51, 51);--color: rgb(255, 255, 255);border-color:#333}:host .field-wrap .nggv-button-date[aria-selected=true],:host .field-wrap .nggv-button-date:active,:host .field-wrap .nggv-button-date.active,:host .field-wrap .nggv-button-date.active:hover,:host .field-wrap .nggv-button-date:active:hover{background-color:#333;color:#fff;--background: rgb(51, 51, 51);--color: rgb(255, 255, 255);border-color:#333}:host .field-wrap .nggv-button-date[aria-selected]:hover,:host .field-wrap .nggv-button-date.active:hover,:host .field-wrap .nggv-button-date:active:hover{opacity:.9}:host .field-wrap .nggv-button-date:focus-visible{background-color:#333;color:#fff;--background: rgb(51, 51, 51);--color: rgb(255, 255, 255);border-color:#333!important}:host .field-wrap .nggv-button-date:disabled,:host .field-wrap .nggv-button-date.disabled,:host .field-wrap .nggv-button-date[aria-disabled=true]{color:var(--text-disabled-color)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed}:host .field-wrap .nggv-button-date:disabled::placeholder,:host .field-wrap .nggv-button-date.disabled::placeholder,:host .field-wrap .nggv-button-date[aria-disabled=true]::placeholder{color:var(--text-disabled-color)}@media (max-width: 47.98em){:host .field-wrap .nggv-button-date{width:2.625rem;height:2.625rem}}:host .field-wrap .nggv-button-date:focus{outline-color:#1a1a1a;outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host .field-wrap .nggv-button-date[disabled]{background-color:#f8f8f8!important;color:#adadad}@media (max-width: 35.98em){:host .field-wrap .nggv-button-date{min-width:initial}}:host .field-wrap input[type=text]::-webkit-inner-spin-button,:host .field-wrap input[type=text]::-webkit-calendar-picker-indicator{display:none;-webkit-appearance:none;font-size:1rem;font-family:inherit}:host .field-wrap .nggv-field-date{border:1px solid #cecece;border-radius:4px 0 0 4px;outline:none;box-sizing:border-box;min-height:2.75rem;line-height:1.5;font-size:1rem;font-family:inherit;border:none;min-height:2.375rem;width:100%;padding-left:1rem}:host .field-wrap .nggv-field-date *,:host .field-wrap .nggv-field-date *:before,:host .field-wrap .nggv-field-date *:after{box-sizing:border-box}:host .field-wrap .nggv-field-date:hover{border-color:#41b0ee}:host .field-wrap .nggv-field-date:focus{outline-color:#1a1a1a;outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host .field-wrap .nggv-field-date:active{border-color:#cecece}:host .field-wrap .nggv-field-date[disabled]{background-color:#f8f8f8;border-color:#cecece}:host .field-wrap .nggv-field-date[disabled]::placeholder{color:#cecece}:host .field-wrap .nggv-field-date:not(:focus){border-right:none;padding-right:0}:host .field-wrap .nggv-field-date:focus{padding-right:0}\n"] }]
162
161
  }], ctorParameters: () => [{ type: i1.NgControl, decorators: [{
163
162
  type: Self
164
163
  }, {
@@ -200,4 +199,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
200
199
  type: HostListener,
201
200
  args: ['keydown', ['$event']]
202
201
  }] } });
203
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL3YtYW5ndWxhci9kYXRlcGlja2VyL2NvbXBvbmVudHMvZGF0ZS1pbnB1dC9kYXRlLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvdi1hbmd1bGFyL2RhdGVwaWNrZXIvY29tcG9uZW50cy9kYXRlLWlucHV0L2RhdGUtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTywwQkFBMEIsQ0FBQTtBQUVqQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDekMsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxRQUFRLEVBQ1IsSUFBSSxFQUNKLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDMUMsdUZBQXVGO0FBQ3ZGLE9BQU8sRUFDTCxlQUFlLEVBRWYsZ0JBQWdCLEdBQ2pCLE1BQU0sb0JBQW9CLENBQUE7QUFDM0IsT0FBTyxFQUFFLFNBQVMsRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUVyRCxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx5RUFBeUUsQ0FBQTtBQUkzSCxPQUFPLHdEQUF3RCxDQUFBO0FBQy9ELE9BQU8sb0VBQW9FLENBQUE7Ozs7Ozs7O0FBRTNFOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBTUgsTUFBTSxPQUFPLGtCQUNYLFNBQVEsaUNBQWlDO0lBaUR6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LG1CQUFtQjtvQkFBRSxPQUFNO2dCQUMvQiwrREFBK0Q7Z0JBQy9ELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUM3QixDQUFDO1NBQ0YsQ0FBQyxDQUFBO0lBQ0osQ0FBQzsrR0EzSlUsa0JBQWtCLHVFQXFEbkIsZUFBZTttR0FyRGQsa0JBQWtCLDhuQkNyRC9CLDhsS0FtTEE7OzRGRDlIYSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0Usc0NBQXNDOzswQkF1RDdDLElBQUk7OzBCQUFJLFFBQVE7OzBCQUNoQixRQUFROzswQkFDUixNQUFNOzJCQUFDLGVBQWU7aUlBaER6QixlQUFlO3NCQURkLFNBQVM7dUJBQUMsc0JBQXNCO2dCQUdRLEtBQUs7c0JBQTdDLFdBQVc7dUJBQUMsaUJBQWlCOztzQkFBRyxLQUFLO2dCQUc3QixJQUFJO3NCQUFaLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFLRyxZQUFZO3NCQUFwQixLQUFLO2dCQUtHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUcscUJBQXFCO3NCQUE3QixLQUFLO2dCQTRFTixXQUFXO3NCQURWLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICcuLi8uLi9kYXRlcGlja2VyLmdsb2JhbHMnXG5cbmltcG9ydCB7IFdlZWtEYXkgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsLFxuICBTZWxmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcydcbi8vIGltcG9ydCB7IGZhQ2FsZW5kYXJEYXlzLCBJY29uRGVmaW5pdGlvbiB9IGZyb20gJ0Bmb3J0YXdlc29tZS9wcm8tcmVndWxhci1zdmctaWNvbnMnO1xuaW1wb3J0IHtcbiAgVFJBTlNMT0NPX1NDT1BFLFxuICBUcmFuc2xvY29TY29wZSxcbiAgVHJhbnNsb2NvU2VydmljZSxcbn0gZnJvbSAnQGpzdmVyc2UvdHJhbnNsb2NvJ1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcydcbmltcG9ydCB7IHN0YXJ0V2l0aCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5cbmltcG9ydCB7IERhdGVDb250cm9sVmFsdWVBY2Nlc3NvckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2RhdGUtY29udHJvbC12YWx1ZS1hY2Nlc3Nvci9kYXRlLWNvbnRyb2wtdmFsdWUtYWNjZXNzb3IuY29tcG9uZW50J1xuXG5pbXBvcnQgdHlwZSB7IENhbGVuZGFyVHlwZSB9IGZyb20gJy4uLy4uL2RhdGVwaWNrZXIubW9kZWxzJ1xuXG5pbXBvcnQgJ0BzZWJncm91cC9ncmVlbi1jb3JlL2NvbXBvbmVudHMvaWNvbi9pY29ucy9jYWxlbmRhci5qcydcbmltcG9ydCAnQHNlYmdyb3VwL2dyZWVuLWNvcmUvY29tcG9uZW50cy9pY29uL2ljb25zL3RyaWFuZ2xlLWV4Y2xhbWF0aW9uLmpzJ1xuXG4vKipcbiAqIERhdGUgcGlja2VycyBzaW1wbGlmeSB0aGUgdGFzayBvZiBzZWxlY3RpbmcgYSBkYXRlIGluIGEgdmlzdWFsIHJlcHJlc2VudGF0aW9uIG9mIGEgY2FsZW5kYXIuXG4gKiBodHRwczovL2Rlc2lnbmxpYnJhcnkuc2ViZ3JvdXAuY29tL2NvbXBvbmVudHMvY29tcG9uZW50LWRhdGVwaWNrZXJcbiAqXG4gKiBTZWxlY3RvcjogYG5nZ3YtZGF0ZWlucHV0YFxuICpcbiAqIFdoZW4gZm9jdXNpbmcgYW4gZGF0ZSBlbGVtZW50LCB0aGUgY2FsZW5kYXIgYWxsb3dzIGZvciBuYXZpZ2F0aW9uIHVzaW5nIGJvdGggdGFiIGFuZCBhcnJvdyBrZXlzLlxuICogUHJlc3NpbmcgJ2VzYycgd2lsbCBjbG9zZSB0aGUgY2FsZW5kYXIuXG4gKlxuICogUmVxdWlyZXMgVHJhbnNsb2NvTG9jYWxlLCBidXQgaW4gdHVybiBhbGxvd3MgZm9yIHNldHRpbmcgbG9jYWxlIGR5bmFtaWNhbGx5OlxuICogaHR0cHM6Ly9qc3ZlcnNlLmdpdGh1Yi5pby90cmFuc2xvY28vZG9jcy9wbHVnaW5zL2xvY2FsZS8jbWFudWFsbHktc2V0dGluZy1sb2NhbGVcbiAqXG4gKiBUbyBjb25maWd1cmUgVHJhbnNsb2NvTG9jYWxlLCBmb2xsb3cgdGhpcyBndWlkZTpcbiAqIGh0dHBzOi8vanN2ZXJzZS5naXRodWIuaW8vdHJhbnNsb2NvL2RvY3MvcGx1Z2lucy9sb2NhbGUvI3NldHVwXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nZ3YtZGF0ZWlucHV0LG5nZ3YtaW5wdXRbdHlwZT1kYXRlXScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZS1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRlSW5wdXRDb21wb25lbnRcbiAgZXh0ZW5kcyBEYXRlQ29udHJvbFZhbHVlQWNjZXNzb3JDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkRlc3Ryb3lcbntcbiAgQFZpZXdDaGlsZCgndG9nZ2xlQ2FsZW5kYXJCdXR0b24nKVxuICB0b2dnbGVCdXR0b25SZWY/OiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PlxuICAvKiogU3BlY2lhbCBwcm9wZXJ0eSB1c2VkIGZvciBzZWxlY3RpbmcgRE9NIGVsZW1lbnRzIGR1cmluZyBhdXRvbWF0ZWQgVUkgdGVzdGluZy4gKi9cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtdGhvb2snKSBASW5wdXQoKSB0aG9vazogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCA9XG4gICAgJ2RhdGUtaW5wdXQnXG4gIC8qKiBTZXQgdHlwZSBvZiBjYWxlbmRhcjogZWl0aGVyICdub3JtYWwnIG9yICdleHBhbmRlZCcuIERlZmF1bHQgaXMgJ25vcm1hbCcuICovXG4gIEBJbnB1dCgpIHR5cGU6IENhbGVuZGFyVHlwZSA9ICdub3JtYWwnXG4gIC8qKiBJZiBzZXQgdG8gdHJ1ZSwgdGhlIHZhbHVlIHdpbGwgbm90IGJlIGVkaXRhYmxlLiAqL1xuICBASW5wdXQoKSByZWFkb25seSA9IGZhbHNlXG4gIC8qKlxuICAgKiBBbiBhcnJheSBvZiBEYXRlcyBvciBwYXJzYWJsZSBzdHJpbmdzIHRoYXQgY29ycmVzcG9uZHMgd2l0aCBkYXRlcyB0aGF0IHNob3VsZCBub3QgYmUgc2VsZWN0YWJsZSBpbiB0aGUgY2FsZW5kYXIuXG4gICAqIEkuZS4gYmFuayBob2xpZGF5cy5cbiAgICovXG4gIEBJbnB1dCgpIGRpc2FibGVEYXRlczogKHN0cmluZyB8IERhdGUpW10gPSBbXVxuICAvKipcbiAgICogQW4gYXJyYXkgb2Ygd2Vla2RheXMgdGhhdCBzaG91bGQgbm90IGJlIHNlbGVjdGFibGUgaW4gdGhlIGNhbGVuZGFyLlxuICAgKiBDYW4gYmUgdXNlZCB0b2dldGhlciB3aXRoIG9yIGluc3RlYWQgb2YgQElucHV0KCkgZGlzYWJsZURhdGVzLlxuICAgKi9cbiAgQElucHV0KCkgZGlzYWJsZVdlZWtEYXlzOiBXZWVrRGF5W10gPSBbXVxuICAvKiogTWluaW51bSBudW1iZXIgb2Ygcm93cyBzaG93biBpbiB0aGUgY2FsZW5kYXIuICovXG4gIEBJbnB1dCgpIG1pblJvd3MgPSA1XG4gIC8qKiBTZXRzIGEgZnJvbS1kYXRlIG9mIHdoaWNoIGFsbCBkYXRlcyBiZWZvcmUgd2lsbCBiZSBpbnZhbGlkLiAqL1xuICBASW5wdXQoKSBmaXJzdFZhbGlkOiBEYXRlIHwgdW5kZWZpbmVkXG4gIC8qKiBTZXRzIGEgdG8tZGF0ZSBvZiB3aGljaCBhbGwgZGF0ZXMgYWZ0ZXIgd2lsbCBiZSBpbnZhbGlkLiAqL1xuICBASW5wdXQoKSBsYXN0VmFsaWQ6IERhdGUgfCB1bmRlZmluZWRcbiAgLyoqIFNldHMgYSBjbG9zaW5nIHRpbWUgZm9yIHRvZGF5IHRvIHRvZ2dsZSBhdmFpbGFiaWxpdHkgZm9yIHRvZGF5J3MgZGF0ZS4gKi9cbiAgQElucHV0KCkgY2xvc2luZ1RpbWU6IERhdGUgfCB1bmRlZmluZWRcbiAgLyoqIFNldHMgZmlyc3QgZGF5IG9mIHdlZWsgaW4gY2FsZW5kYXIuIERlZmF1bHRzIHRvIE1vbmRheS4gKi9cbiAgQElucHV0KCkgZmlyc3REYXlPZldlZWs6IFdlZWtEYXkgPSBXZWVrRGF5Lk1vbmRheVxuICAvKiogSWYgc2V0IHRvIHRydWUsIGl0IHdpbGwgYWxsb3cgdG8gY2xvc2UgdGhlIGNhbGVuZGFyIG9uIGVzY2FwZSBidXR0b24gY2xpY2suICovXG4gIEBJbnB1dCgpIGNsb3NlQ2FsZW5kYXJPbkVzY2FwZSA9IHRydWVcblxuICAvKiogQGludGVybmFsICovXG4gIC8vIGNhbGVuZGFySWNvbjogSWNvbkRlZmluaXRpb24gPSBmYUNhbGVuZGFyRGF5cztcblxuICAvKiogQGludGVybmFsICovXG4gIHNob3duID0gZmFsc2VcblxuICAvKiogQGludGVybmFsICovXG4gIHNob3dJbnB1dCQgPSB0aGlzLnNob3dJbnB1dERhdGVTcmMuYXNPYnNlcnZhYmxlKCkucGlwZShzdGFydFdpdGgodHJ1ZSkpXG5cbiAgLyoqIE9ic2VydmFibGUgZm9yIGxpc3RlbmluZyB0byBjbGlja3Mgb3V0c2lkZSBvZiB0aGUgZGF0ZXBpY2tlci4gKi9cbiAgcHJpdmF0ZSBkb2N1bWVudENsaWNrJDogT2JzZXJ2YWJsZTxFdmVudD4gPSBmcm9tRXZlbnQoZG9jdW1lbnQsICdjbGljaycpXG4gIC8qKiBTdWJqZWN0IHVzZWQgZm9yIHVuc3Vic2NyaWJlIHBhdHRlcm4gb24gYWJvdmUgb2JzZXJ2YWJsZS4gKi9cbiAgcHJpdmF0ZSBkYXRlcGlja2VyQ2xvc2VkJCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KClcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAU2VsZigpIEBPcHRpb25hbCgpIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICBAT3B0aW9uYWwoKVxuICAgIEBJbmplY3QoVFJBTlNMT0NPX1NDT1BFKVxuICAgIHByb3RlY3RlZCB0cmFuc2xvY29TY29wZTogVHJhbnNsb2NvU2NvcGUsXG4gICAgcHJvdGVjdGVkIHRyYW5zbG9jbzogVHJhbnNsb2NvU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcm90ZWN0ZWQgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgKSB7XG4gICAgc3VwZXIobmdDb250cm9sLCB0cmFuc2xvY29TY29wZSwgZWxlbWVudFJlZiwgY2RyLCB0cmFuc2xvY28pXG4gICAgLy8gdGhpcy5zaG93SW5wdXQkID0gdGhpcy5zaG93SW5wdXREYXRlU3JjLmFzT2JzZXJ2YWJsZSgpXG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGVwaWNrZXJDbG9zZWQkLm5leHQodHJ1ZSlcbiAgICB0aGlzLmRhdGVwaWNrZXJDbG9zZWQkLmNvbXBsZXRlKClcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogQ2FsbGVkIGZyb20gdGhlIGRhdGVwaWNrZXItY29tcG9uZW50IHdoZW4gYSBkYXRlIGJ1dHRvbiBpcyBjbGlja2VkIGluIHRoZSBjYWxlbmRhci5cbiAgICpcbiAgICogQHBhcmFtIGRhdGUgZGF0ZSBvYmplY3QgZW1pdHRlZCB3aGVuIHNlbGVjdGluZyBhIGRhdGUgaW4gdGhlIGRhdGVwaWNrZXIuXG4gICAqL1xuICBvbkRhdGVDaGFuZ2UoZGF0ZTogRGF0ZSk6IHZvaWQge1xuICAgIC8vIGNvbnRyb2wgdmFsdWUgYWNjZXNzb3Igd2lsbCBlbnN1cmUgY29ycmVjdCBmb3JtYXR0aW5nIG9mIHN0YXRlXG4gICAgdGhpcy5zdGF0ZSA9IERhdGVDb250cm9sVmFsdWVBY2Nlc3NvckNvbXBvbmVudC5wYXJzZURhdGVMaWtlKGRhdGUpXG4gICAgLy8gZW1pdCBzdGF0ZVxuICAgIHRoaXMub25DaGFuZ2UodGhpcy5zdGF0ZSlcbiAgICAvLyBjbG9zZSBkYXRlcGlja2VyIGFuZCBtb3ZlIGZvY3VzIHRvIGRhdGVwaWNrZXIgYnV0dG9uXG4gICAgdGhpcy5zZXRTaG93bihmYWxzZSlcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudG9nZ2xlQnV0dG9uUmVmPy5uYXRpdmVFbGVtZW50LmZvY3VzKCksIDEpXG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIENhbGxlZCB3aGVuIGVudGVyaW5nIGRhdGUgbWFudWFsbHkgaW4gaW5wdXQgZmllbGQuXG4gICAqL1xuICBvblZhbHVlQ2hhbmdlKGV2ZW50VGFyZ2V0OiBhbnkpOiB2b2lkIHtcbiAgICAvLyBXaWxsIGJlIGluIHRoZSBmb3JtYXQgc2VsZWN0ZWQgaW4gaW5wdXRNYXNrXG4gICAgY29uc3QgdmFsdWUgPSBgJHtldmVudFRhcmdldC5pbnB1dG1hc2sudW5kb1ZhbHVlfWAgPz8gJydcblxuICAgIC8vIFVzZSBwYXJzZXJmdW5jdGlvbiBmcm9tIGlucHV0TWFzayB0byBwYXJzZSB0byBhIGRhdGUgb2JqZWN0IHNpbmNlIHZhbHVlIGNhbiBiZSBpbiBtdWx0aXBsZSBmb3JtYXRzXG4gICAgLy8gVGhlbiBvbnRyb2wgdmFsdWUgYWNjZXNzb3Igd2lsbCBlbnN1cmUgY29ycmVjdCBmb3JtYXR0aW5nIG9mIHN0YXRlXG4gICAgY29uc3QgcGFyc2VkRGF0ZSA9IERhdGVDb250cm9sVmFsdWVBY2Nlc3NvckNvbXBvbmVudC5wYXJzZURhdGVMaWtlKFxuICAgICAgdGhpcy5kYXRlSW5wdXRNYXNrLnBhcnNlciEodmFsdWUpLFxuICAgIClcblxuICAgIHRoaXMuc3RhdGUgPSBwYXJzZWREYXRlXG5cbiAgICAvLyBlbWl0IHBhcnNlZCBkYXRlXG4gICAgdGhpcy5vbkNoYW5nZShwYXJzZWREYXRlKVxuICAgIHRoaXMub25Ub3VjaGVkKClcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogTGlzdGVuIHRvICdlc2MnIGtleXByZXNzIGFuZCBjbG9zZXMgZGF0ZXBpY2tlciBpZiBvcGVuLlxuICAgKi9cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIGtleUxpc3RlbmVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2xvc2VDYWxlbmRhck9uRXNjYXBlICYmIGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpXG4gICAgICB0aGlzLnNldFNob3duKGZhbHNlKVxuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICB0b2dnbGVEYXRlcGlja2VyKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0U2hvd24oIXRoaXMuc2hvd24pXG4gIH1cblxuICAvKiogVG8gZXh0ZXJuYWxseSB0cmlnZ2VyIHRoZSBkYXRlcGlja2VyIHRvIGNsb3NlLiAqL1xuICBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLnNldFNob3duKGZhbHNlKVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgc2hvd24gc3RhdGUgb2YgdGhlIGRhdGVwaWNrZXIgcG9wdXAuIElmIHRydWUgdGhlIHBvcHVwIHdpbGwgYmUgdmlzaWJsZS5cbiAgICogSWYgdGhlIHN0YXRlIGlzIHNldCB0byBmYWxzZSwgY2FsbCBvblRvdWNoZWQgdG8gbm90aWZ5IGFueSBzdGF0ZSBsaXN0ZW5lcnNcbiAgICogQHBhcmFtIHN0YXRlIHRoZSBzaG93biBzdGF0ZSB3aGljaCB0byBzZXQuXG4gICAqL1xuICBwcml2YXRlIHNldFNob3duKHN0YXRlID0gdHJ1ZSk6IHZvaWQge1xuICAgIHRoaXMuc2hvd24gPSBzdGF0ZVxuICAgIGlmICghdGhpcy5zaG93bikge1xuICAgICAgLy8gaWYgc2hvd24gaXMgc2V0IHRvIGZhbHNlLCBzdG9wIGxpc3RlbmluZyB0byBjbGlja3NcbiAgICAgIHRoaXMuZGF0ZXBpY2tlckNsb3NlZCQubmV4dCh0cnVlKVxuICAgICAgcmV0dXJuIHRoaXMub25Ub3VjaGVkKClcbiAgICB9XG4gICAgLy8gaWYgc2hvd24gaXMgc2V0IHRvIHRydWUsIHJlc2V0IHVuc3Vic2NyaWJlIHZhcmlhYmxlXG4gICAgdGhpcy5kYXRlcGlja2VyQ2xvc2VkJC5uZXh0KGZhbHNlKVxuICAgIC8vIHN0YXJ0IGxpc3RlbmluZyBmb3IgY2xpY2tzIG91dHNpZGUgdGhlIGNvbXBvbmVudFxuICAgIHRoaXMuZG9jdW1lbnRDbGljayQucGlwZSh0YWtlVW50aWwodGhpcy5kYXRlcGlja2VyQ2xvc2VkJCkpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICAgIC8vIGNsaWNraW5nIG9uIGEgZ3JheSBkYXRlIGNhdXNlcyB0aGUgZGF0ZXBpY2tlciB0byByZWxvYWQgdGhlIGNhbGVuZGFyIGRhdGVzLFxuICAgICAgICAvLyBhbmQgdGhlIGJ1dHRvbiBlbGVtZW50IGNsaWNrZWQgd2lsbCBubyBsb25nZXIgYmUgY29uc2lkZXJlZCBhcyBhIGNoaWxkIG9mIHRoZSBkYXRlcGlja2VyLlxuICAgICAgICAvLyBidXQgdGhlIGV2ZW50IHRhcmdldCBwYXRoIHdpbGwgc3RpbGwgY29udGFpbiB0aGUgcGFyZW50IGVsZW1lbnRcbiAgICAgICAgLy8gaWYgdGFyZ2V0IGhhcyBkYXRlcGlja2VyIHBhcmVudCwga2VlcCBsaXN0ZW5pbmdcbiAgICAgICAgY29uc3QgZXZlbnRQYXRoID0gZXZlbnQuY29tcG9zZWRQYXRoKClcbiAgICAgICAgY29uc3QgaGFzRGF0ZXBpY2tlclBhcmVudCA9ICEhZXZlbnRQYXRoLmZpbmQoXG4gICAgICAgICAgKGUpID0+IGUgPT09IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICApXG4gICAgICAgIGlmIChoYXNEYXRlcGlja2VyUGFyZW50KSByZXR1cm5cbiAgICAgICAgLy8gZWxzZSB0aGUgY2xpY2sgaXMgY29uc2lkZXJlZCB0byBiZSBvdXRzaWRlLCBjbG9zZSBkYXRlcGlja2VyXG4gICAgICAgIHJldHVybiB0aGlzLnNldFNob3duKGZhbHNlKVxuICAgICAgfSxcbiAgICB9KVxuICB9XG59XG4iLCI8IS0tIExBQkVMIC0tPlxuPG5nLWNvbnRhaW5lciAqdHJhbnNsb2NvPVwibGV0IHQ7IHJlYWQ6IHNjb3BlXCI+XG4gIDxsYWJlbFxuICAgIFtpZF09XCJpZCArICctbGFiZWwnXCJcbiAgICBjbGFzcz1cImdkcy1maWVsZC1sYWJlbCBoaWRlLWlmLWVtcHR5XCJcbiAgICBbYXR0ci5mb3JdPVwiaWQgKyAnLWlucHV0J1wiXG4gID5cbiAgICA8bmctdGVtcGxhdGVcbiAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwibGFiZWxDb250ZW50VHBsIHx8IGJhc2ljTGFiZWxDb250ZW50VHBsXCJcbiAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2Jhc2ljTGFiZWxDb250ZW50VHBsPlxuICAgICAgPCEtLSB0byB0cmlnZ2VyIGNzczplbXB0eSBpZiBubyBsYWJlbCB3YXMgYWRkZWQgLS0+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibGFiZWxcIj5cbiAgICAgICAge3sgbGFiZWwgfX1cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAqbmdJZj1cIm9wdGlvbmFsID09PSB0cnVlIHx8IChyZXF1aXJlZCAhPT0gdHJ1ZSAmJiBvcHRpb25hbCAhPT0gZmFsc2UpXCJcbiAgICAgICAgICBjbGFzcz1cImdkcy1maWVsZC1sYWJlbC0tb3B0aW9uYWxcIlxuICAgICAgICA+XG4gICAgICAgICAgKHt7IHQoJ2xhYmVsLm9wdGlvbmFsJykgfX0pXG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbGFiZWw+XG5cbiAgPCEtLSBERVNDUklQVElPTiAtLT5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZ2RzLWZpZWxkLWxhYmVsLS1zbWFsbCBkZXNjcmlwdGlvbiBoaWRlLWlmLWVtcHR5XCJcbiAgICAqbmdJZj1cImRlc2NyaXB0aW9uXCJcbiAgPlxuICAgIHt7IGRlc2NyaXB0aW9uIH19XG4gIDwvZGl2PlxuXG4gIDwhLS0gTE9DS0VEIElOUFVUIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9ja2VkXCI+XG4gICAgPGRpdlxuICAgICAgW2lkXT1cImlkICsgJy1pbnB1dCdcIlxuICAgICAgY2xhc3M9XCJuZ2d2LWZpZWxkLS1sb2NrZWRcIlxuICAgICAgW2F0dHIubmFtZV09XCJuYW1lXCJcbiAgICAgIFthdHRyLnZhbHVlXT1cInN0YXRlXCJcbiAgICAgIFthdHRyLnJvbGVdPVwicm9sZVwiXG4gICAgPlxuICAgICAgPHNwYW4gKm5nSWY9XCIhc3RhdGVcIiBjbGFzcz1cInVuc2V0LXN0YXRlXCI+LTwvc3Bhbj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdGF0ZVwiPlxuICAgICAgICB7eyBzdGF0ZSB8IG5nZ3ZJbnB1dE1hc2tGb3JtYXQ6IGRhdGVJbnB1dE1hc2sgfX1cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIElOUFVUIFdSQVBQRVIgLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbG9ja2VkXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJmaWVsZC13cmFwXCJcbiAgICAgIFtjbGFzcy5uZ2d2LWZpZWxkLS1lcnJvcl09XCJpbnZhbGlkXCJcbiAgICAgICpuZ0lmPVwic2hvd0lucHV0JCB8IGFzeW5jXCJcbiAgICA+XG4gICAgICA8IS0tIElOUFVUIEZJRUxEIC0tPlxuICAgICAgPGlucHV0XG4gICAgICAgICNpbnB1dFxuICAgICAgICBbaWRdPVwiaWQgKyAnLWlucHV0J1wiXG4gICAgICAgIGNsYXNzPVwibmdndi1maWVsZC1kYXRlXCJcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICBbYXR0ci5uYW1lXT1cIm5hbWVcIlxuICAgICAgICBbYXR0ci5yZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtyZWFkT25seV09XCJyZWFkb25seVwiXG4gICAgICAgIFthdHRyLnJvbGVdPVwicm9sZVwiXG4gICAgICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJkZXNjcmlwdGlvblwiXG4gICAgICAgIFtuZ2d2SW5wdXRNYXNrXT1cImRhdGVJbnB1dE1hc2tcIlxuICAgICAgICBbdmFsdWVdPVwic3RhdGVcIlxuICAgICAgICB0aXRsZT1cIlwiXG4gICAgICAgIChjaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQudGFyZ2V0KVwiXG4gICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKCRldmVudClcIlxuICAgICAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXG4gICAgICAvPlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgIGFyaWEtbGFiZWw9XCJ0b2dnbGUgY2FsZW5kYXJcIlxuICAgICAgICAjdG9nZ2xlQ2FsZW5kYXJCdXR0b25cbiAgICAgICAgY2xhc3M9XCJuZ2d2LWJ1dHRvbi1kYXRlXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGRhdGEtdGhvb2s9XCJ0b2dnbGUtY2FsZW5kYXItYnV0dG9uXCJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURhdGVwaWNrZXIoKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICA+XG4gICAgICAgIDxnZHMtaWNvbi1jYWxlbmRhclxuICAgICAgICAgICpuZ2dDb3JlRWxlbWVudFxuICAgICAgICAgIHdpZHRoPVwiMjBcIlxuICAgICAgICAgIGhlaWdodD1cIjIwXCJcbiAgICAgICAgPjwvZ2RzLWljb24tY2FsZW5kYXI+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gREFURVBJQ0tFUiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibmdndi1kYXRlcGlja2VyXCIgKm5nSWY9XCJzaG93blwiPlxuICAgICAgPG5nZ3YtZGF0ZXBpY2tlclxuICAgICAgICAjaW5wdXRcbiAgICAgICAgW3R5cGVdPVwidHlwZVwiXG4gICAgICAgIFtkaXNhYmxlRGF0ZXNdPVwiZGlzYWJsZURhdGVzXCJcbiAgICAgICAgW2Rpc2FibGVXZWVrRGF5c109XCJkaXNhYmxlV2Vla0RheXNcIlxuICAgICAgICBbc2VsZWN0ZWRdPVwic3RhdGVcIlxuICAgICAgICBbbG9jYWxlXT1cImxvY2FsZVwiXG4gICAgICAgIFttaW5DYWxlbmRhclJvd3NdPVwibWluUm93c1wiXG4gICAgICAgIFtmaXJzdERheU9mV2Vla109XCJmaXJzdERheU9mV2Vla1wiXG4gICAgICAgIFtmaXJzdFZhbGlkXT1cImZpcnN0VmFsaWRcIlxuICAgICAgICBbbGFzdFZhbGlkXT1cImxhc3RWYWxpZFwiXG4gICAgICAgIFtjbG9zaW5nVGltZV09XCJjbG9zaW5nVGltZVwiXG4gICAgICAgIChuZ3ZEYXRlQ2hhbmdlKT1cIm9uRGF0ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgPC9uZ2d2LWRhdGVwaWNrZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIEVSUk9SUyAtLT5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdJZj1cIlxuICAgICAgICBpbnZhbGlkICYmXG4gICAgICAgIChlcnJvciB8fCBuZ0NvbnRyb2w/LmludmFsaWQpICYmXG4gICAgICAgICghZXJyb3JMaXN0IHx8ICFlcnJvckxpc3QubGVuZ3RoKVxuICAgICAgXCJcbiAgICA+XG4gICAgICA8bGFiZWxcbiAgICAgICAgY2xhc3M9XCJnZHMtZmllbGQtbm90aWNlIGdkcy1maWVsZC1ub3RpY2UtLWVycm9yXCJcbiAgICAgICAgW2F0dHIuZm9yXT1cImlkICsgJy1pbnB1dCdcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImVycm9yLWl0ZW1cIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImVycm9yLWl0ZW0tLWljb25cIj5cbiAgICAgICAgICAgIDxnZHMtaWNvbi10cmlhbmdsZS1leGNsYW1hdGlvblxuICAgICAgICAgICAgICAqbmdnQ29yZUVsZW1lbnRcbiAgICAgICAgICAgICAgW3NvbGlkXT1cInRydWVcIlxuICAgICAgICAgICAgICB3aWR0aD1cIjE2XCJcbiAgICAgICAgICAgICAgaGVpZ2h0PVwiMTZcIlxuICAgICAgICAgICAgPjwvZ2RzLWljb24tdHJpYW5nbGUtZXhjbGFtYXRpb24+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAqbmdJZj1cImVycm9yOyBlbHNlIGVycm9yc1JlZlwiXG4gICAgICAgICAgICBjbGFzcz1cImVycm9yLWl0ZW0tLXRleHRcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS10aG9va109XCJ0aG9vayArICctZXJyb3JsYWJlbCdcIlxuICAgICAgICAgICAgPnt7IGVycm9yIH19PC9zcGFuXG4gICAgICAgICAgPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZXJyb3JzUmVmPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgKm5nSWY9XCJmaXJzdEVycm9yIGFzIGVycm9yXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJlcnJvci1pdGVtLS10ZXh0XCJcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS10aG9va109XCJ0aG9vayArICctZXJyb3JsYWJlbCdcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyB0KCdlcnJvci5maWVsZCcgKyBlcnJvcj8uY29kZSwgZXJyb3I/LnBhcmFtcykgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2xhYmVsPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZXJyb3Igb2YgZXJyb3JMaXN0ID8/IFtdXCI+XG4gICAgICA8bGFiZWxcbiAgICAgICAgY2xhc3M9XCJnZHMtZmllbGQtbm90aWNlIGdkcy1maWVsZC1ub3RpY2UtLWVycm9yXCJcbiAgICAgICAgW2F0dHIuZm9yXT1cImlkICsgJy1pbnB1dCdcIlxuICAgICAgICAqbmdJZj1cImludmFsaWQgJiYgZXJyb3JcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImVycm9yLWl0ZW1cIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImVycm9yLWl0ZW0tLWljb25cIj5cbiAgICAgICAgICAgIDxnZHMtaWNvbi10cmlhbmdsZS1leGNsYW1hdGlvblxuICAgICAgICAgICAgICAqbmdnQ29yZUVsZW1lbnRcbiAgICAgICAgICAgICAgW3NvbGlkXT1cInRydWVcIlxuICAgICAgICAgICAgICB3aWR0aD1cIjE2XCJcbiAgICAgICAgICAgICAgaGVpZ2h0PVwiMTZcIlxuICAgICAgICAgICAgPjwvZ2RzLWljb24tdHJpYW5nbGUtZXhjbGFtYXRpb24+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cImVycm9yLWl0ZW0tLXRleHRcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS10aG9va109XCJ0aG9vayArICctZXJyb3JsYWJlbCdcIlxuICAgICAgICAgICAgPnt7IGVycm9yIH19PC9zcGFuXG4gICAgICAgICAgPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2xhYmVsPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuIl19
202
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL3YtYW5ndWxhci9kYXRlcGlja2VyL2NvbXBvbmVudHMvZGF0ZS1pbnB1dC9kYXRlLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvdi1hbmd1bGFyL2RhdGVwaWNrZXIvY29tcG9uZW50cy9kYXRlLWlucHV0L2RhdGUtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTywwQkFBMEIsQ0FBQTtBQUVqQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDekMsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxRQUFRLEVBQ1IsSUFBSSxFQUNKLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDMUMsT0FBTyxFQUNMLGVBQWUsRUFFZixnQkFBZ0IsR0FDakIsTUFBTSxvQkFBb0IsQ0FBQTtBQUMzQixPQUFPLEVBQUUsU0FBUyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRXJELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHlFQUF5RSxDQUFBO0FBSTNILE9BQU8sd0RBQXdELENBQUE7QUFDL0QsT0FBTyxvRUFBb0UsQ0FBQTs7Ozs7Ozs7QUFFM0U7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFNSCxNQUFNLE9BQU8sa0JBQ1gsU0FBUSxpQ0FBaUM7SUFpRHpDLFlBQzZCLFNBQW9C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LE9BQU07Z0JBQy9CLCtEQUErRDtnQkFDL0QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQzdCLENBQUM7U0FDRixDQUFDLENBQUE7SUFDSixDQUFDOytHQTNKVSxrQkFBa0IsdUVBcURuQixlQUFlO21HQXJEZCxrQkFBa0IsOG5CQ3BEL0IsMjBLQTJMQTs7NEZEdklhLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDRSxzQ0FBc0M7OzBCQXVEN0MsSUFBSTs7MEJBQUksUUFBUTs7MEJBQ2hCLFFBQVE7OzBCQUNSLE1BQU07MkJBQUMsZUFBZTtpSUFoRHpCLGVBQWU7c0JBRGQsU0FBUzt1QkFBQyxzQkFBc0I7Z0JBR1EsS0FBSztzQkFBN0MsV0FBVzt1QkFBQyxpQkFBaUI7O3NCQUFHLEtBQUs7Z0JBRzdCLElBQUk7c0JBQVosS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUtHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBS0csZUFBZTtzQkFBdkIsS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsY0FBYztzQkFBdEIsS0FBSztnQkFFRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBNEVOLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJy4uLy4uL2RhdGVwaWNrZXIuZ2xvYmFscydcblxuaW1wb3J0IHsgV2Vla0RheSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3B0aW9uYWwsXG4gIFNlbGYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJ1xuaW1wb3J0IHtcbiAgVFJBTlNMT0NPX1NDT1BFLFxuICBUcmFuc2xvY29TY29wZSxcbiAgVHJhbnNsb2NvU2VydmljZSxcbn0gZnJvbSAnQGpzdmVyc2UvdHJhbnNsb2NvJ1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcydcbmltcG9ydCB7IHN0YXJ0V2l0aCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5cbmltcG9ydCB7IERhdGVDb250cm9sVmFsdWVBY2Nlc3NvckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2RhdGUtY29udHJvbC12YWx1ZS1hY2Nlc3Nvci9kYXRlLWNvbnRyb2wtdmFsdWUtYWNjZXNzb3IuY29tcG9uZW50J1xuXG5pbXBvcnQgdHlwZSB7IENhbGVuZGFyVHlwZSB9IGZyb20gJy4uLy4uL2RhdGVwaWNrZXIubW9kZWxzJ1xuXG5pbXBvcnQgJ0BzZWJncm91cC9ncmVlbi1jb3JlL2NvbXBvbmVudHMvaWNvbi9pY29ucy9jYWxlbmRhci5qcydcbmltcG9ydCAnQHNlYmdyb3VwL2dyZWVuLWNvcmUvY29tcG9uZW50cy9pY29uL2ljb25zL3RyaWFuZ2xlLWV4Y2xhbWF0aW9uLmpzJ1xuXG4vKipcbiAqIERhdGUgcGlja2VycyBzaW1wbGlmeSB0aGUgdGFzayBvZiBzZWxlY3RpbmcgYSBkYXRlIGluIGEgdmlzdWFsIHJlcHJlc2VudGF0aW9uIG9mIGEgY2FsZW5kYXIuXG4gKiBodHRwczovL2Rlc2lnbmxpYnJhcnkuc2ViZ3JvdXAuY29tL2NvbXBvbmVudHMvY29tcG9uZW50LWRhdGVwaWNrZXJcbiAqXG4gKiBTZWxlY3RvcjogYG5nZ3YtZGF0ZWlucHV0YFxuICpcbiAqIFdoZW4gZm9jdXNpbmcgYW4gZGF0ZSBlbGVtZW50LCB0aGUgY2FsZW5kYXIgYWxsb3dzIGZvciBuYXZpZ2F0aW9uIHVzaW5nIGJvdGggdGFiIGFuZCBhcnJvdyBrZXlzLlxuICogUHJlc3NpbmcgJ2VzYycgd2lsbCBjbG9zZSB0aGUgY2FsZW5kYXIuXG4gKlxuICogUmVxdWlyZXMgVHJhbnNsb2NvTG9jYWxlLCBidXQgaW4gdHVybiBhbGxvd3MgZm9yIHNldHRpbmcgbG9jYWxlIGR5bmFtaWNhbGx5OlxuICogaHR0cHM6Ly9qc3ZlcnNlLmdpdGh1Yi5pby90cmFuc2xvY28vZG9jcy9wbHVnaW5zL2xvY2FsZS8jbWFudWFsbHktc2V0dGluZy1sb2NhbGVcbiAqXG4gKiBUbyBjb25maWd1cmUgVHJhbnNsb2NvTG9jYWxlLCBmb2xsb3cgdGhpcyBndWlkZTpcbiAqIGh0dHBzOi8vanN2ZXJzZS5naXRodWIuaW8vdHJhbnNsb2NvL2RvY3MvcGx1Z2lucy9sb2NhbGUvI3NldHVwXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nZ3YtZGF0ZWlucHV0LG5nZ3YtaW5wdXRbdHlwZT1kYXRlXScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZS1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRlSW5wdXRDb21wb25lbnRcbiAgZXh0ZW5kcyBEYXRlQ29udHJvbFZhbHVlQWNjZXNzb3JDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkRlc3Ryb3lcbntcbiAgQFZpZXdDaGlsZCgndG9nZ2xlQ2FsZW5kYXJCdXR0b24nKVxuICB0b2dnbGVCdXR0b25SZWY/OiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PlxuICAvKiogU3BlY2lhbCBwcm9wZXJ0eSB1c2VkIGZvciBzZWxlY3RpbmcgRE9NIGVsZW1lbnRzIGR1cmluZyBhdXRvbWF0ZWQgVUkgdGVzdGluZy4gKi9cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtdGhvb2snKSBASW5wdXQoKSB0aG9vazogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCA9XG4gICAgJ2RhdGUtaW5wdXQnXG4gIC8qKiBTZXQgdHlwZSBvZiBjYWxlbmRhcjogZWl0aGVyICdub3JtYWwnIG9yICdleHBhbmRlZCcuIERlZmF1bHQgaXMgJ25vcm1hbCcuICovXG4gIEBJbnB1dCgpIHR5cGU6IENhbGVuZGFyVHlwZSA9ICdub3JtYWwnXG4gIC8qKiBJZiBzZXQgdG8gdHJ1ZSwgdGhlIHZhbHVlIHdpbGwgbm90IGJlIGVkaXRhYmxlLiAqL1xuICBASW5wdXQoKSByZWFkb25seSA9IGZhbHNlXG4gIC8qKlxuICAgKiBBbiBhcnJheSBvZiBEYXRlcyBvciBwYXJzYWJsZSBzdHJpbmdzIHRoYXQgY29ycmVzcG9uZHMgd2l0aCBkYXRlcyB0aGF0IHNob3VsZCBub3QgYmUgc2VsZWN0YWJsZSBpbiB0aGUgY2FsZW5kYXIuXG4gICAqIEkuZS4gYmFuayBob2xpZGF5cy5cbiAgICovXG4gIEBJbnB1dCgpIGRpc2FibGVEYXRlczogKHN0cmluZyB8IERhdGUpW10gPSBbXVxuICAvKipcbiAgICogQW4gYXJyYXkgb2Ygd2Vla2RheXMgdGhhdCBzaG91bGQgbm90IGJlIHNlbGVjdGFibGUgaW4gdGhlIGNhbGVuZGFyLlxuICAgKiBDYW4gYmUgdXNlZCB0b2dldGhlciB3aXRoIG9yIGluc3RlYWQgb2YgQElucHV0KCkgZGlzYWJsZURhdGVzLlxuICAgKi9cbiAgQElucHV0KCkgZGlzYWJsZVdlZWtEYXlzOiBXZWVrRGF5W10gPSBbXVxuICAvKiogTWluaW51bSBudW1iZXIgb2Ygcm93cyBzaG93biBpbiB0aGUgY2FsZW5kYXIuICovXG4gIEBJbnB1dCgpIG1pblJvd3MgPSA1XG4gIC8qKiBTZXRzIGEgZnJvbS1kYXRlIG9mIHdoaWNoIGFsbCBkYXRlcyBiZWZvcmUgd2lsbCBiZSBpbnZhbGlkLiAqL1xuICBASW5wdXQoKSBmaXJzdFZhbGlkOiBEYXRlIHwgdW5kZWZpbmVkXG4gIC8qKiBTZXRzIGEgdG8tZGF0ZSBvZiB3aGljaCBhbGwgZGF0ZXMgYWZ0ZXIgd2lsbCBiZSBpbnZhbGlkLiAqL1xuICBASW5wdXQoKSBsYXN0VmFsaWQ6IERhdGUgfCB1bmRlZmluZWRcbiAgLyoqIFNldHMgYSBjbG9zaW5nIHRpbWUgZm9yIHRvZGF5IHRvIHRvZ2dsZSBhdmFpbGFiaWxpdHkgZm9yIHRvZGF5J3MgZGF0ZS4gKi9cbiAgQElucHV0KCkgY2xvc2luZ1RpbWU6IERhdGUgfCB1bmRlZmluZWRcbiAgLyoqIFNldHMgZmlyc3QgZGF5IG9mIHdlZWsgaW4gY2FsZW5kYXIuIERlZmF1bHRzIHRvIE1vbmRheS4gKi9cbiAgQElucHV0KCkgZmlyc3REYXlPZldlZWs6IFdlZWtEYXkgPSBXZWVrRGF5Lk1vbmRheVxuICAvKiogSWYgc2V0IHRvIHRydWUsIGl0IHdpbGwgYWxsb3cgdG8gY2xvc2UgdGhlIGNhbGVuZGFyIG9uIGVzY2FwZSBidXR0b24gY2xpY2suICovXG4gIEBJbnB1dCgpIGNsb3NlQ2FsZW5kYXJPbkVzY2FwZSA9IHRydWVcblxuICAvKiogQGludGVybmFsICovXG4gIC8vIGNhbGVuZGFySWNvbjogSWNvbkRlZmluaXRpb24gPSBmYUNhbGVuZGFyRGF5cztcblxuICAvKiogQGludGVybmFsICovXG4gIHNob3duID0gZmFsc2VcblxuICAvKiogQGludGVybmFsICovXG4gIHNob3dJbnB1dCQgPSB0aGlzLnNob3dJbnB1dERhdGVTcmMuYXNPYnNlcnZhYmxlKCkucGlwZShzdGFydFdpdGgodHJ1ZSkpXG5cbiAgLyoqIE9ic2VydmFibGUgZm9yIGxpc3RlbmluZyB0byBjbGlja3Mgb3V0c2lkZSBvZiB0aGUgZGF0ZXBpY2tlci4gKi9cbiAgcHJpdmF0ZSBkb2N1bWVudENsaWNrJDogT2JzZXJ2YWJsZTxFdmVudD4gPSBmcm9tRXZlbnQoZG9jdW1lbnQsICdjbGljaycpXG4gIC8qKiBTdWJqZWN0IHVzZWQgZm9yIHVuc3Vic2NyaWJlIHBhdHRlcm4gb24gYWJvdmUgb2JzZXJ2YWJsZS4gKi9cbiAgcHJpdmF0ZSBkYXRlcGlja2VyQ2xvc2VkJCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KClcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAU2VsZigpIEBPcHRpb25hbCgpIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICBAT3B0aW9uYWwoKVxuICAgIEBJbmplY3QoVFJBTlNMT0NPX1NDT1BFKVxuICAgIHByb3RlY3RlZCB0cmFuc2xvY29TY29wZTogVHJhbnNsb2NvU2NvcGUsXG4gICAgcHJvdGVjdGVkIHRyYW5zbG9jbzogVHJhbnNsb2NvU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcm90ZWN0ZWQgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgKSB7XG4gICAgc3VwZXIobmdDb250cm9sLCB0cmFuc2xvY29TY29wZSwgZWxlbWVudFJlZiwgY2RyLCB0cmFuc2xvY28pXG4gICAgLy8gdGhpcy5zaG93SW5wdXQkID0gdGhpcy5zaG93SW5wdXREYXRlU3JjLmFzT2JzZXJ2YWJsZSgpXG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGVwaWNrZXJDbG9zZWQkLm5leHQodHJ1ZSlcbiAgICB0aGlzLmRhdGVwaWNrZXJDbG9zZWQkLmNvbXBsZXRlKClcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogQ2FsbGVkIGZyb20gdGhlIGRhdGVwaWNrZXItY29tcG9uZW50IHdoZW4gYSBkYXRlIGJ1dHRvbiBpcyBjbGlja2VkIGluIHRoZSBjYWxlbmRhci5cbiAgICpcbiAgICogQHBhcmFtIGRhdGUgZGF0ZSBvYmplY3QgZW1pdHRlZCB3aGVuIHNlbGVjdGluZyBhIGRhdGUgaW4gdGhlIGRhdGVwaWNrZXIuXG4gICAqL1xuICBvbkRhdGVDaGFuZ2UoZGF0ZTogRGF0ZSk6IHZvaWQge1xuICAgIC8vIGNvbnRyb2wgdmFsdWUgYWNjZXNzb3Igd2lsbCBlbnN1cmUgY29ycmVjdCBmb3JtYXR0aW5nIG9mIHN0YXRlXG4gICAgdGhpcy5zdGF0ZSA9IERhdGVDb250cm9sVmFsdWVBY2Nlc3NvckNvbXBvbmVudC5wYXJzZURhdGVMaWtlKGRhdGUpXG4gICAgLy8gZW1pdCBzdGF0ZVxuICAgIHRoaXMub25DaGFuZ2UodGhpcy5zdGF0ZSlcbiAgICAvLyBjbG9zZSBkYXRlcGlja2VyIGFuZCBtb3ZlIGZvY3VzIHRvIGRhdGVwaWNrZXIgYnV0dG9uXG4gICAgdGhpcy5zZXRTaG93bihmYWxzZSlcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudG9nZ2xlQnV0dG9uUmVmPy5uYXRpdmVFbGVtZW50LmZvY3VzKCksIDEpXG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIENhbGxlZCB3aGVuIGVudGVyaW5nIGRhdGUgbWFudWFsbHkgaW4gaW5wdXQgZmllbGQuXG4gICAqL1xuICBvblZhbHVlQ2hhbmdlKGV2ZW50VGFyZ2V0OiBhbnkpOiB2b2lkIHtcbiAgICAvLyBXaWxsIGJlIGluIHRoZSBmb3JtYXQgc2VsZWN0ZWQgaW4gaW5wdXRNYXNrXG4gICAgY29uc3QgdmFsdWUgPSBgJHtldmVudFRhcmdldC5pbnB1dG1hc2sudW5kb1ZhbHVlfWAgPz8gJydcblxuICAgIC8vIFVzZSBwYXJzZXJmdW5jdGlvbiBmcm9tIGlucHV0TWFzayB0byBwYXJzZSB0byBhIGRhdGUgb2JqZWN0IHNpbmNlIHZhbHVlIGNhbiBiZSBpbiBtdWx0aXBsZSBmb3JtYXRzXG4gICAgLy8gVGhlbiBvbnRyb2wgdmFsdWUgYWNjZXNzb3Igd2lsbCBlbnN1cmUgY29ycmVjdCBmb3JtYXR0aW5nIG9mIHN0YXRlXG4gICAgY29uc3QgcGFyc2VkRGF0ZSA9IERhdGVDb250cm9sVmFsdWVBY2Nlc3NvckNvbXBvbmVudC5wYXJzZURhdGVMaWtlKFxuICAgICAgdGhpcy5kYXRlSW5wdXRNYXNrLnBhcnNlciEodmFsdWUpLFxuICAgIClcblxuICAgIHRoaXMuc3RhdGUgPSBwYXJzZWREYXRlXG5cbiAgICAvLyBlbWl0IHBhcnNlZCBkYXRlXG4gICAgdGhpcy5vbkNoYW5nZShwYXJzZWREYXRlKVxuICAgIHRoaXMub25Ub3VjaGVkKClcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogTGlzdGVuIHRvICdlc2MnIGtleXByZXNzIGFuZCBjbG9zZXMgZGF0ZXBpY2tlciBpZiBvcGVuLlxuICAgKi9cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIGtleUxpc3RlbmVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2xvc2VDYWxlbmRhck9uRXNjYXBlICYmIGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpXG4gICAgICB0aGlzLnNldFNob3duKGZhbHNlKVxuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICB0b2dnbGVEYXRlcGlja2VyKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0U2hvd24oIXRoaXMuc2hvd24pXG4gIH1cblxuICAvKiogVG8gZXh0ZXJuYWxseSB0cmlnZ2VyIHRoZSBkYXRlcGlja2VyIHRvIGNsb3NlLiAqL1xuICBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLnNldFNob3duKGZhbHNlKVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgc2hvd24gc3RhdGUgb2YgdGhlIGRhdGVwaWNrZXIgcG9wdXAuIElmIHRydWUgdGhlIHBvcHVwIHdpbGwgYmUgdmlzaWJsZS5cbiAgICogSWYgdGhlIHN0YXRlIGlzIHNldCB0byBmYWxzZSwgY2FsbCBvblRvdWNoZWQgdG8gbm90aWZ5IGFueSBzdGF0ZSBsaXN0ZW5lcnNcbiAgICogQHBhcmFtIHN0YXRlIHRoZSBzaG93biBzdGF0ZSB3aGljaCB0byBzZXQuXG4gICAqL1xuICBwcml2YXRlIHNldFNob3duKHN0YXRlID0gdHJ1ZSk6IHZvaWQge1xuICAgIHRoaXMuc2hvd24gPSBzdGF0ZVxuICAgIGlmICghdGhpcy5zaG93bikge1xuICAgICAgLy8gaWYgc2hvd24gaXMgc2V0IHRvIGZhbHNlLCBzdG9wIGxpc3RlbmluZyB0byBjbGlja3NcbiAgICAgIHRoaXMuZGF0ZXBpY2tlckNsb3NlZCQubmV4dCh0cnVlKVxuICAgICAgcmV0dXJuIHRoaXMub25Ub3VjaGVkKClcbiAgICB9XG4gICAgLy8gaWYgc2hvd24gaXMgc2V0IHRvIHRydWUsIHJlc2V0IHVuc3Vic2NyaWJlIHZhcmlhYmxlXG4gICAgdGhpcy5kYXRlcGlja2VyQ2xvc2VkJC5uZXh0KGZhbHNlKVxuICAgIC8vIHN0YXJ0IGxpc3RlbmluZyBmb3IgY2xpY2tzIG91dHNpZGUgdGhlIGNvbXBvbmVudFxuICAgIHRoaXMuZG9jdW1lbnRDbGljayQucGlwZSh0YWtlVW50aWwodGhpcy5kYXRlcGlja2VyQ2xvc2VkJCkpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICAgIC8vIGNsaWNraW5nIG9uIGEgZ3JheSBkYXRlIGNhdXNlcyB0aGUgZGF0ZXBpY2tlciB0byByZWxvYWQgdGhlIGNhbGVuZGFyIGRhdGVzLFxuICAgICAgICAvLyBhbmQgdGhlIGJ1dHRvbiBlbGVtZW50IGNsaWNrZWQgd2lsbCBubyBsb25nZXIgYmUgY29uc2lkZXJlZCBhcyBhIGNoaWxkIG9mIHRoZSBkYXRlcGlja2VyLlxuICAgICAgICAvLyBidXQgdGhlIGV2ZW50IHRhcmdldCBwYXRoIHdpbGwgc3RpbGwgY29udGFpbiB0aGUgcGFyZW50IGVsZW1lbnRcbiAgICAgICAgLy8gaWYgdGFyZ2V0IGhhcyBkYXRlcGlja2VyIHBhcmVudCwga2VlcCBsaXN0ZW5pbmdcbiAgICAgICAgY29uc3QgZXZlbnRQYXRoID0gZXZlbnQuY29tcG9zZWRQYXRoKClcbiAgICAgICAgY29uc3QgaGFzRGF0ZXBpY2tlclBhcmVudCA9ICEhZXZlbnRQYXRoLmZpbmQoXG4gICAgICAgICAgKGUpID0+IGUgPT09IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICApXG4gICAgICAgIGlmIChoYXNEYXRlcGlja2VyUGFyZW50KSByZXR1cm5cbiAgICAgICAgLy8gZWxzZSB0aGUgY2xpY2sgaXMgY29uc2lkZXJlZCB0byBiZSBvdXRzaWRlLCBjbG9zZSBkYXRlcGlja2VyXG4gICAgICAgIHJldHVybiB0aGlzLnNldFNob3duKGZhbHNlKVxuICAgICAgfSxcbiAgICB9KVxuICB9XG59XG4iLCI8IS0tIExBQkVMIC0tPlxuPG5nLWNvbnRhaW5lciAqdHJhbnNsb2NvPVwibGV0IHQ7IHJlYWQ6IHNjb3BlXCI+XG4gIDxsYWJlbFxuICAgIFtpZF09XCJpZCArICctbGFiZWwnXCJcbiAgICBjbGFzcz1cImdkcy1maWVsZC1sYWJlbCBoaWRlLWlmLWVtcHR5XCJcbiAgICBbYXR0ci5mb3JdPVwiaWQgKyAnLWlucHV0J1wiXG4gID5cbiAgICA8bmctdGVtcGxhdGVcbiAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwibGFiZWxDb250ZW50VHBsIHx8IGJhc2ljTGFiZWxDb250ZW50VHBsXCJcbiAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2Jhc2ljTGFiZWxDb250ZW50VHBsPlxuICAgICAgPCEtLSB0byB0cmlnZ2VyIGNzczplbXB0eSBpZiBubyBsYWJlbCB3YXMgYWRkZWQgLS0+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibGFiZWxcIj5cbiAgICAgICAge3sgbGFiZWwgfX1cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAqbmdJZj1cIm9wdGlvbmFsID09PSB0cnVlIHx8IChyZXF1aXJlZCAhPT0gdHJ1ZSAmJiBvcHRpb25hbCAhPT0gZmFsc2UpXCJcbiAgICAgICAgICBjbGFzcz1cImdkcy1maWVsZC1sYWJlbC0tb3B0aW9uYWxcIlxuICAgICAgICA+XG4gICAgICAgICAgKHt7IHQoJ2xhYmVsLm9wdGlvbmFsJykgfX0pXG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbGFiZWw+XG5cbiAgPCEtLSBERVNDUklQVElPTiAtLT5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZ2RzLWZpZWxkLWxhYmVsLS1zbWFsbCBkZXNjcmlwdGlvbiBoaWRlLWlmLWVtcHR5XCJcbiAgICAqbmdJZj1cImRlc2NyaXB0aW9uXCJcbiAgPlxuICAgIHt7IGRlc2NyaXB0aW9uIH19XG4gIDwvZGl2PlxuXG4gIDwhLS0gTE9DS0VEIElOUFVUIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9ja2VkXCI+XG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICBsb2NrZWRUcGwgfHwgZGVmYXVsdExvY2tlZFRwbDtcbiAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IHN0YXRlIH1cbiAgICAgIFwiXG4gICAgPjwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0TG9ja2VkVHBsPlxuICAgICAgPGRpdlxuICAgICAgICBbaWRdPVwiaWQgKyAnLWlucHV0J1wiXG4gICAgICAgIGNsYXNzPVwibmdndi1maWVsZC0tbG9ja2VkXCJcbiAgICAgICAgW2F0dHIubmFtZV09XCJuYW1lXCJcbiAgICAgICAgW2F0dHIudmFsdWVdPVwic3RhdGVcIlxuICAgICAgICBbYXR0ci5yb2xlXT1cInJvbGVcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiAqbmdJZj1cIiFzdGF0ZVwiIGNsYXNzPVwidW5zZXQtc3RhdGVcIj4tPC9zcGFuPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3RhdGVcIj5cbiAgICAgICAgICB7eyBzdGF0ZSB8IG5nZ3ZJbnB1dE1hc2tGb3JtYXQ6IGRhdGVJbnB1dE1hc2sgfX1cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIElOUFVUIFdSQVBQRVIgLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbG9ja2VkXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJmaWVsZC13cmFwXCJcbiAgICAgIFtjbGFzcy5uZ2d2LWZpZWxkLS1lcnJvcl09XCJpbnZhbGlkXCJcbiAgICAgICpuZ0lmPVwic2hvd0lucHV0JCB8IGFzeW5jXCJcbiAgICA+XG4gICAgICA8IS0tIElOUFVUIEZJRUxEIC0tPlxuICAgICAgPGlucHV0XG4gICAgICAgICNpbnB1dFxuICAgICAgICBbaWRdPVwiaWQgKyAnLWlucHV0J1wiXG4gICAgICAgIGNsYXNzPVwibmdndi1maWVsZC1kYXRlXCJcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICBbYXR0ci5uYW1lXT1cIm5hbWVcIlxuICAgICAgICBbYXR0ci5yZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtyZWFkT25seV09XCJyZWFkb25seVwiXG4gICAgICAgIFthdHRyLnJvbGVdPVwicm9sZVwiXG4gICAgICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJkZXNjcmlwdGlvblwiXG4gICAgICAgIFtuZ2d2SW5wdXRNYXNrXT1cImRhdGVJbnB1dE1hc2tcIlxuICAgICAgICBbdmFsdWVdPVwic3RhdGVcIlxuICAgICAgICB0aXRsZT1cIlwiXG4gICAgICAgIChjaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQudGFyZ2V0KVwiXG4gICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKCRldmVudClcIlxuICAgICAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXG4gICAgICAvPlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgIGFyaWEtbGFiZWw9XCJ0b2dnbGUgY2FsZW5kYXJcIlxuICAgICAgICAjdG9nZ2xlQ2FsZW5kYXJCdXR0b25cbiAgICAgICAgY2xhc3M9XCJuZ2d2LWJ1dHRvbi1kYXRlXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGRhdGEtdGhvb2s9XCJ0b2dnbGUtY2FsZW5kYXItYnV0dG9uXCJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURhdGVwaWNrZXIoKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICA+XG4gICAgICAgIDxnZHMtaWNvbi1jYWxlbmRhclxuICAgICAgICAgICpuZ2dDb3JlRWxlbWVudFxuICAgICAgICAgIHdpZHRoPVwiMjBcIlxuICAgICAgICAgIGhlaWdodD1cIjIwXCJcbiAgICAgICAgPjwvZ2RzLWljb24tY2FsZW5kYXI+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gREFURVBJQ0tFUiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibmdndi1kYXRlcGlja2VyXCIgKm5nSWY9XCJzaG93blwiPlxuICAgICAgPG5nZ3YtZGF0ZXBpY2tlclxuICAgICAgICAjaW5wdXRcbiAgICAgICAgW3R5cGVdPVwidHlwZVwiXG4gICAgICAgIFtkaXNhYmxlRGF0ZXNdPVwiZGlzYWJsZURhdGVzXCJcbiAgICAgICAgW2Rpc2FibGVXZWVrRGF5c109XCJkaXNhYmxlV2Vla0RheXNcIlxuICAgICAgICBbc2VsZWN0ZWRdPVwic3RhdGVcIlxuICAgICAgICBbbG9jYWxlXT1cImxvY2FsZVwiXG4gICAgICAgIFttaW5DYWxlbmRhclJvd3NdPVwibWluUm93c1wiXG4gICAgICAgIFtmaXJzdERheU9mV2Vla109XCJmaXJzdERheU9mV2Vla1wiXG4gICAgICAgIFtmaXJzdFZhbGlkXT1cImZpcnN0VmFsaWRcIlxuICAgICAgICBbbGFzdFZhbGlkXT1cImxhc3RWYWxpZFwiXG4gICAgICAgIFtjbG9zaW5nVGltZV09XCJjbG9zaW5nVGltZVwiXG4gICAgICAgIChuZ3ZEYXRlQ2hhbmdlKT1cIm9uRGF0ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgPC9uZ2d2LWRhdGVwaWNrZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIEVSUk9SUyAtLT5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdJZj1cIlxuICAgICAgICBpbnZhbGlkICYmXG4gICAgICAgIChlcnJvciB8fCBuZ0NvbnRyb2w/LmludmFsaWQpICYmXG4gICAgICAgICghZXJyb3JMaXN0IHx8ICFlcnJvckxpc3QubGVuZ3RoKVxuICAgICAgXCJcbiAgICA+XG4gICAgICA8bGFiZWxcbiAgICAgICAgY2xhc3M9XCJnZHMtZmllbGQtbm90aWNlIGdkcy1maWVsZC1ub3RpY2UtLWVycm9yXCJcbiAgICAgICAgW2F0dHIuZm9yXT1cImlkICsgJy1pbnB1dCdcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImVycm9yLWl0ZW1cIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImVycm9yLWl0ZW0tLWljb25cIj5cbiAgICAgICAgICAgIDxnZHMtaWNvbi10cmlhbmdsZS1leGNsYW1hdGlvblxuICAgICAgICAgICAgICAqbmdnQ29yZUVsZW1lbnRcbiAgICAgICAgICAgICAgW3NvbGlkXT1cInRydWVcIlxuICAgICAgICAgICAgICB3aWR0aD1cIjE2XCJcbiAgICAgICAgICAgICAgaGVpZ2h0PVwiMTZcIlxuICAgICAgICAgICAgPjwvZ2RzLWljb24tdHJpYW5nbGUtZXhjbGFtYXRpb24+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAqbmdJZj1cImVycm9yOyBlbHNlIGVycm9yc1JlZlwiXG4gICAgICAgICAgICBjbGFzcz1cImVycm9yLWl0ZW0tLXRleHRcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS10aG9va109XCJ0aG9vayArICctZXJyb3JsYWJlbCdcIlxuICAgICAgICAgICAgPnt7IGVycm9yIH19PC9zcGFuXG4gICAgICAgICAgPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZXJyb3JzUmVmPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgKm5nSWY9XCJmaXJzdEVycm9yIGFzIGVycm9yXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJlcnJvci1pdGVtLS10ZXh0XCJcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS10aG9va109XCJ0aG9vayArICctZXJyb3JsYWJlbCdcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyB0KCdlcnJvci5maWVsZCcgKyBlcnJvcj8uY29kZSwgZXJyb3I/LnBhcmFtcykgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2xhYmVsPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZXJyb3Igb2YgZXJyb3JMaXN0ID8/IFtdXCI+XG4gICAgICA8bGFiZWxcbiAgICAgICAgY2xhc3M9XCJnZHMtZmllbGQtbm90aWNlIGdkcy1maWVsZC1ub3RpY2UtLWVycm9yXCJcbiAgICAgICAgW2F0dHIuZm9yXT1cImlkICsgJy1pbnB1dCdcIlxuICAgICAgICAqbmdJZj1cImludmFsaWQgJiYgZXJyb3JcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImVycm9yLWl0ZW1cIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImVycm9yLWl0ZW0tLWljb25cIj5cbiAgICAgICAgICAgIDxnZHMtaWNvbi10cmlhbmdsZS1leGNsYW1hdGlvblxuICAgICAgICAgICAgICAqbmdnQ29yZUVsZW1lbnRcbiAgICAgICAgICAgICAgW3NvbGlkXT1cInRydWVcIlxuICAgICAgICAgICAgICB3aWR0aD1cIjE2XCJcbiAgICAgICAgICAgICAgaGVpZ2h0PVwiMTZcIlxuICAgICAgICAgICAgPjwvZ2RzLWljb24tdHJpYW5nbGUtZXhjbGFtYXRpb24+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cImVycm9yLWl0ZW0tLXRleHRcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS10aG9va109XCJ0aG9vayArICctZXJyb3JsYWJlbCdcIlxuICAgICAgICAgICAgPnt7IGVycm9yIH19PC9zcGFuXG4gICAgICAgICAgPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2xhYmVsPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuIl19