@sebgroup/green-angular 4.6.1 → 4.6.2

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 (133) hide show
  1. package/esm2022/src/v-angular/dropdown/typeahead/index.mjs +4 -1
  2. package/esm2022/src/v-angular/dropdown/typeahead/typeahead.directive.mjs +177 -0
  3. package/esm2022/v-angular/base-control-value-accessor/base-control-value-accessor.component.mjs +287 -0
  4. package/esm2022/v-angular/base-control-value-accessor/base-control-value-accessor.module.mjs +17 -0
  5. package/esm2022/v-angular/base-control-value-accessor/index.mjs +3 -0
  6. package/esm2022/v-angular/breadcrumbs/breadcrumbs.component.mjs +25 -0
  7. package/esm2022/v-angular/breadcrumbs/breadcrumbs.module.mjs +20 -0
  8. package/esm2022/v-angular/breadcrumbs/index.mjs +3 -0
  9. package/esm2022/v-angular/button/button.component.mjs +108 -0
  10. package/esm2022/v-angular/button/button.module.mjs +20 -0
  11. package/esm2022/v-angular/button/index.mjs +3 -0
  12. package/esm2022/v-angular/card/card.component.mjs +11 -0
  13. package/esm2022/v-angular/card/card.module.mjs +18 -0
  14. package/esm2022/v-angular/card/index.mjs +3 -0
  15. package/esm2022/v-angular/checkbox/checkbox.component.mjs +72 -0
  16. package/esm2022/v-angular/checkbox/checkbox.module.mjs +19 -0
  17. package/esm2022/v-angular/checkbox/index.mjs +3 -0
  18. package/esm2022/v-angular/dropdown/dropdown-list/dropdown-list.component.mjs +256 -0
  19. package/esm2022/v-angular/dropdown/dropdown-list/index.mjs +2 -0
  20. package/esm2022/v-angular/dropdown/dropdown.component.mjs +239 -0
  21. package/esm2022/v-angular/dropdown/dropdown.module.mjs +22 -0
  22. package/esm2022/v-angular/dropdown/index.mjs +6 -0
  23. package/esm2022/v-angular/dropdown/typeahead/index.mjs +6 -0
  24. package/esm2022/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.mjs +98 -0
  25. package/esm2022/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.mjs +85 -0
  26. package/esm2022/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.mjs +132 -0
  27. package/esm2022/v-angular/dropdown/typeahead/typeahead.directive.mjs +177 -0
  28. package/esm2022/v-angular/dropdown/typeahead/typeahead.module.mjs +33 -0
  29. package/esm2022/v-angular/i18n/i18n.json +12 -0
  30. package/esm2022/v-angular/i18n/i18n.module.mjs +83 -0
  31. package/esm2022/v-angular/i18n/i18n.test.module.mjs +89 -0
  32. package/esm2022/v-angular/i18n/index.mjs +3 -0
  33. package/esm2022/v-angular/index.mjs +17 -0
  34. package/esm2022/v-angular/info-circle/index.mjs +3 -0
  35. package/esm2022/v-angular/info-circle/info-circle.component.mjs +28 -0
  36. package/esm2022/v-angular/info-circle/info-circle.module.mjs +21 -0
  37. package/esm2022/v-angular/input/index.mjs +3 -0
  38. package/esm2022/v-angular/input/input.component.mjs +221 -0
  39. package/esm2022/v-angular/input/input.module.mjs +32 -0
  40. package/esm2022/v-angular/input-mask/config.mjs +9 -0
  41. package/esm2022/v-angular/input-mask/constants.mjs +2 -0
  42. package/esm2022/v-angular/input-mask/index.mjs +6 -0
  43. package/esm2022/v-angular/input-mask/input-mask-format.pipe.mjs +20 -0
  44. package/esm2022/v-angular/input-mask/input-mask.directive.mjs +165 -0
  45. package/esm2022/v-angular/input-mask/input-mask.module.mjs +35 -0
  46. package/esm2022/v-angular/input-mask/input-mask.types.mjs +2 -0
  47. package/esm2022/v-angular/modal/dialog/dialog.component.mjs +190 -0
  48. package/esm2022/v-angular/modal/fold-out/fold-out.component.mjs +56 -0
  49. package/esm2022/v-angular/modal/fold-out/fold-out.directive.mjs +19 -0
  50. package/esm2022/v-angular/modal/index.mjs +6 -0
  51. package/esm2022/v-angular/modal/modal.globals.mjs +20 -0
  52. package/esm2022/v-angular/modal/modal.module.mjs +40 -0
  53. package/esm2022/v-angular/modal/modal.types.mjs +2 -0
  54. package/esm2022/v-angular/modal/slide-out/slide-out.component.mjs +229 -0
  55. package/esm2022/v-angular/radio/index.mjs +3 -0
  56. package/esm2022/v-angular/radio/radio.component.mjs +130 -0
  57. package/esm2022/v-angular/radio/radio.module.mjs +20 -0
  58. package/esm2022/v-angular/sebgroup-green-angular-v-angular.mjs +5 -0
  59. package/esm2022/v-angular/textarea/index.mjs +3 -0
  60. package/esm2022/v-angular/textarea/textarea.component.mjs +101 -0
  61. package/esm2022/v-angular/textarea/textarea.module.mjs +18 -0
  62. package/esm2022/v-angular/tooltip/index.mjs +3 -0
  63. package/esm2022/v-angular/tooltip/tooltip.directive.mjs +273 -0
  64. package/esm2022/v-angular/tooltip/tooltip.module.mjs +18 -0
  65. package/esm2022/v-angular/v-angular.module.mjs +76 -0
  66. package/fesm2022/sebgroup-green-angular-src-v-angular-dropdown.mjs +172 -3
  67. package/fesm2022/sebgroup-green-angular-src-v-angular-dropdown.mjs.map +1 -1
  68. package/fesm2022/sebgroup-green-angular-v-angular.mjs +3341 -0
  69. package/fesm2022/sebgroup-green-angular-v-angular.mjs.map +1 -0
  70. package/package.json +8 -2
  71. package/src/v-angular/dropdown/typeahead/index.d.ts +3 -0
  72. package/src/v-angular/dropdown/typeahead/typeahead.directive.d.ts +76 -0
  73. package/v-angular/base-control-value-accessor/base-control-value-accessor.component.d.ts +124 -0
  74. package/v-angular/base-control-value-accessor/base-control-value-accessor.module.d.ts +7 -0
  75. package/v-angular/base-control-value-accessor/index.d.ts +2 -0
  76. package/v-angular/breadcrumbs/breadcrumbs.component.d.ts +18 -0
  77. package/v-angular/breadcrumbs/breadcrumbs.module.d.ts +10 -0
  78. package/v-angular/breadcrumbs/index.d.ts +2 -0
  79. package/v-angular/button/button.component.d.ts +62 -0
  80. package/v-angular/button/button.module.d.ts +10 -0
  81. package/v-angular/button/index.d.ts +2 -0
  82. package/v-angular/card/card.component.d.ts +5 -0
  83. package/v-angular/card/card.module.d.ts +8 -0
  84. package/v-angular/card/index.d.ts +2 -0
  85. package/v-angular/checkbox/checkbox.component.d.ts +27 -0
  86. package/v-angular/checkbox/checkbox.module.d.ts +9 -0
  87. package/v-angular/checkbox/index.d.ts +2 -0
  88. package/v-angular/dropdown/dropdown-list/dropdown-list.component.d.ts +89 -0
  89. package/v-angular/dropdown/dropdown-list/index.d.ts +1 -0
  90. package/v-angular/dropdown/dropdown.component.d.ts +99 -0
  91. package/v-angular/dropdown/dropdown.module.d.ts +12 -0
  92. package/v-angular/dropdown/index.d.ts +5 -0
  93. package/v-angular/dropdown/typeahead/index.d.ts +5 -0
  94. package/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.d.ts +34 -0
  95. package/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.d.ts +34 -0
  96. package/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.d.ts +59 -0
  97. package/v-angular/dropdown/typeahead/typeahead.directive.d.ts +76 -0
  98. package/v-angular/dropdown/typeahead/typeahead.module.d.ts +11 -0
  99. package/v-angular/i18n/i18n.module.d.ts +15 -0
  100. package/v-angular/i18n/i18n.test.module.d.ts +27 -0
  101. package/v-angular/i18n/index.d.ts +2 -0
  102. package/v-angular/index.d.ts +16 -0
  103. package/v-angular/info-circle/index.d.ts +2 -0
  104. package/v-angular/info-circle/info-circle.component.d.ts +16 -0
  105. package/v-angular/info-circle/info-circle.module.d.ts +10 -0
  106. package/v-angular/input/index.d.ts +2 -0
  107. package/v-angular/input/input.component.d.ts +90 -0
  108. package/v-angular/input/input.module.d.ts +11 -0
  109. package/v-angular/input-mask/config.d.ts +6 -0
  110. package/v-angular/input-mask/constants.d.ts +2 -0
  111. package/v-angular/input-mask/index.d.ts +5 -0
  112. package/v-angular/input-mask/input-mask-format.pipe.d.ts +8 -0
  113. package/v-angular/input-mask/input-mask.directive.d.ts +39 -0
  114. package/v-angular/input-mask/input-mask.module.d.ts +11 -0
  115. package/v-angular/input-mask/input-mask.types.d.ts +20 -0
  116. package/v-angular/modal/dialog/dialog.component.d.ts +55 -0
  117. package/v-angular/modal/fold-out/fold-out.component.d.ts +24 -0
  118. package/v-angular/modal/fold-out/fold-out.directive.d.ts +6 -0
  119. package/v-angular/modal/index.d.ts +5 -0
  120. package/v-angular/modal/modal.globals.d.ts +13 -0
  121. package/v-angular/modal/modal.module.d.ts +13 -0
  122. package/v-angular/modal/modal.types.d.ts +5 -0
  123. package/v-angular/modal/slide-out/slide-out.component.d.ts +76 -0
  124. package/v-angular/radio/index.d.ts +2 -0
  125. package/v-angular/radio/radio.component.d.ts +48 -0
  126. package/v-angular/radio/radio.module.d.ts +9 -0
  127. package/v-angular/textarea/index.d.ts +2 -0
  128. package/v-angular/textarea/textarea.component.d.ts +44 -0
  129. package/v-angular/textarea/textarea.module.d.ts +8 -0
  130. package/v-angular/tooltip/index.d.ts +2 -0
  131. package/v-angular/tooltip/tooltip.directive.d.ts +106 -0
  132. package/v-angular/tooltip/tooltip.module.d.ts +8 -0
  133. package/v-angular/v-angular.module.d.ts +22 -0
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ViZ3JvdXAtZ3JlZW4tYW5ndWxhci12LWFuZ3VsYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL3YtYW5ndWxhci9zZWJncm91cC1ncmVlbi1hbmd1bGFyLXYtYW5ndWxhci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export * from './textarea.component';
2
+ export * from './textarea.module';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL3YtYW5ndWxhci90ZXh0YXJlYS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFBO0FBQ3BDLGNBQWMsbUJBQW1CLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3RleHRhcmVhLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vdGV4dGFyZWEubW9kdWxlJ1xuIl19
@@ -0,0 +1,101 @@
1
+ import { ChangeDetectorRef, Component, HostBinding, Inject, Input, Optional, Self, } from '@angular/core';
2
+ import { NgControl } from '@angular/forms';
3
+ import { TRANSLOCO_SCOPE } from '@ngneat/transloco';
4
+ import { NgvBaseControlValueAccessorComponent } from '@sebgroup/green-angular/src/v-angular/base-control-value-accessor';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/forms";
7
+ import * as i2 from "@angular/common";
8
+ /** Textarea fields allow users to add and edit longer or multiple line text. */
9
+ export class NgvTextareaComponent extends NgvBaseControlValueAccessorComponent {
10
+ /** Minimum length (number of characters) of value. */
11
+ set minLength(length) {
12
+ this._minlength = length;
13
+ this.cdr.detectChanges();
14
+ }
15
+ get minlength() {
16
+ return this._minlength;
17
+ }
18
+ /**
19
+ * Minimum length (number of characters) of value.
20
+ * @deprecated minlength triggers angular-template-validation. Use @Input() minLength instead.
21
+ */
22
+ set minlength(length) {
23
+ this._minlength = length;
24
+ this.cdr.detectChanges();
25
+ }
26
+ /** Maximum length (number of characters) of value. */
27
+ set maxLength(length) {
28
+ this._maxlength = length;
29
+ this.cdr.detectChanges();
30
+ }
31
+ get maxlength() {
32
+ return this._maxlength;
33
+ }
34
+ /**
35
+ * Maximum length (number of characters) of value.
36
+ * @deprecated maxlength triggers angular-template-validation. Use @Input() maxLength instead.
37
+ */
38
+ set maxlength(length) {
39
+ this._maxlength = length;
40
+ this.cdr.detectChanges();
41
+ }
42
+ /** Returns if maxlength is used */
43
+ get hasMaxLength() {
44
+ return !!this.maxlength && this.maxlength !== Number.MAX_SAFE_INTEGER;
45
+ }
46
+ constructor(ngControl, translocoScope, cdr) {
47
+ super(ngControl, translocoScope, cdr);
48
+ this.ngControl = ngControl;
49
+ this.translocoScope = translocoScope;
50
+ this.cdr = cdr;
51
+ /** Special property used for selecting DOM elements during automated UI testing. */
52
+ this.thook = 'textarea';
53
+ /** If set to true, the value will not be editable. */
54
+ this.readonly = false;
55
+ this._maxlength = Number.MAX_SAFE_INTEGER;
56
+ this._minlength = 0;
57
+ }
58
+ /** @internal */
59
+ onInput(event) {
60
+ event.stopPropagation();
61
+ if (this.disabled)
62
+ return;
63
+ this.state = event.target.value;
64
+ this.onChange(this.state);
65
+ }
66
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvTextareaComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: TRANSLOCO_SCOPE, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
67
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NgvTextareaComponent, selector: "nggv-textarea", inputs: { thook: "thook", placeholder: "placeholder", readonly: "readonly", minLength: "minLength", minlength: "minlength", maxLength: "maxLength", maxlength: "maxlength", rows: "rows" }, host: { properties: { "attr.data-thook": "this.thook" } }, usesInheritance: true, ngImport: i0, template: "<!-- LABEL -->\n<label\n [id]=\"id + '-label'\"\n class=\"sdv-field-label hide-if-empty\"\n [attr.for]=\"id + '-textarea'\"\n *transloco=\"let t; read: scope\"\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=\"sdv-field-label--optional\"\n >\n ({{ t('label.optional') }})\n </span>\n </ng-container>\n </ng-template>\n</label>\n\n<!-- DESCRIPTION -->\n<div class=\"sdv-field-label--small description\">{{ description }}</div>\n\n<!-- LOCKED INPUT -->\n<ng-container *ngIf=\"locked\">\n <div\n [id]=\"id + '-textarea'\"\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 }}\n </ng-container>\n </div>\n</ng-container>\n\n<!-- INPUT FIELD -->\n<ng-container *ngIf=\"!locked\">\n <textarea\n #input\n [id]=\"id + '-textarea'\"\n class=\"sdv-field\"\n [ngClass]=\"{ 'no-resize': !!rows }\"\n [class.nggv-field--error]=\"invalid\"\n [attr.name]=\"name\"\n [attr.required]=\"required\"\n [disabled]=\"disabled\"\n [autofocus]=\"autofocus\"\n [readOnly]=\"readonly\"\n [attr.maxlength]=\"maxlength\"\n [attr.minlength]=\"minlength\"\n [attr.role]=\"role\"\n [attr.rows]=\"rows\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-label]=\"description\"\n [value]=\"state\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n ></textarea>\n\n <!-- ERRORS -->\n <div class=\"error-wrapper\" *transloco=\"let t; read: scope\">\n <label\n class=\"sdv-field-notice sdv-field-notice--error\"\n [attr.for]=\"id + '-textarea'\"\n *ngIf=\"invalid && (error || ngControl?.invalid)\"\n >\n <span *ngIf=\"error; else errorsRef\">{{ error }}</span>\n <ng-template #errorsRef>\n <span *ngIf=\"firstError as error\">\n {{ t('error.field' + error?.code, error?.params) }}\n </span>\n </ng-template>\n </label>\n\n <ng-container *ngIf=\"hasMaxLength\">\n <label\n *ngvCharacterCountdown=\"\n maxlength;\n currentLength: (inputRef?.nativeElement?.value ?? '').length;\n charactersLeft as charactersLeft\n \"\n class=\"sdv-field-notice\"\n style=\"text-align: right\"\n >\n {{ charactersLeft }} {{ t('label.maxlength') }}\n </label>\n </ng-container>\n </div>\n\n <!-- CHILDREN -->\n <ng-content></ng-content>\n</ng-container>\n", styles: [":host textarea{padding:.75rem 1rem;border-radius:var(--sg-border-radius);border:solid var(--sg-border-width) var(--sg-border-color);--border-color: var(--sg-border-color);align-items:center;background-color:var(--sg-form-control-bg);color:var(--text-primary-color);display:flex;justify-content:center;resize:vertical}:host textarea:focus:not(:focus-visible){box-shadow:none;outline:0}:host textarea:focus,:host textarea:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}@media screen and (-ms-high-contrast: active){:host textarea{border:2px solid currentcolor}}:host textarea:hover{background-color:var(--gds-ref-pallet-base100)}:host textarea:disabled,:host textarea.disabled,:host textarea[aria-disabled=true]{background:var(--sg-form-control-bg-disabled)!important;color:var(--text-disabled-color)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed}:host textarea:disabled::placeholder,:host textarea.disabled::placeholder,:host textarea[aria-disabled=true]::placeholder{color:var(--text-disabled-color)}:host label:not(.sdv-field-notice){margin-bottom:.5rem}:host label:not(.sdv-field-notice):is(label){margin-bottom:0}:host label:not(.sdv-field-notice).form-control{width:-moz-fit-content;width:fit-content}@supports (-moz-appearance: none){:host label:not(.sdv-field-notice).form-control:focus:not(:focus-visible){box-shadow:none;outline:0}:host label:not(.sdv-field-notice).form-control:focus,:host label:not(.sdv-field-notice).form-control:focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}}:host label:not(.sdv-field-notice):not(.form-control){font-weight:500;width:100%;line-height:1.25rem}:host label:not(.sdv-field-notice)+input,:host label:not(.sdv-field-notice)+textarea,fieldset :host label:not(.sdv-field-notice)+div,:host label:not(.sdv-field-notice)+button,:host label:not(.sdv-field-notice)+.group-stepper,:host label:not(.sdv-field-notice)+.stepper-wrapper,:host label:not(.sdv-field-notice)+.group{margin-top:.5rem}:host label:not(.sdv-field-notice)+.form-info{margin-bottom:.5rem}:host label:is(.sdv-field-label){margin-bottom:.5rem}:host .hide-if-empty:empty{display:none}:host .unset-state{padding-left:.5rem}:host .sdv-field-label--optional{font-weight:400}:host textarea{width:100%;max-width:100%}:host .description{margin-bottom:.5rem}:host .error-wrapper{margin-top:.5rem}:host .no-resize{resize:none}:host .no-resize::-webkit-scrollbar{-webkit-appearance:none}:host .no-resize::-webkit-scrollbar-thumb{border-radius:.5rem}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
68
+ }
69
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvTextareaComponent, decorators: [{
70
+ type: Component,
71
+ args: [{ selector: 'nggv-textarea', template: "<!-- LABEL -->\n<label\n [id]=\"id + '-label'\"\n class=\"sdv-field-label hide-if-empty\"\n [attr.for]=\"id + '-textarea'\"\n *transloco=\"let t; read: scope\"\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=\"sdv-field-label--optional\"\n >\n ({{ t('label.optional') }})\n </span>\n </ng-container>\n </ng-template>\n</label>\n\n<!-- DESCRIPTION -->\n<div class=\"sdv-field-label--small description\">{{ description }}</div>\n\n<!-- LOCKED INPUT -->\n<ng-container *ngIf=\"locked\">\n <div\n [id]=\"id + '-textarea'\"\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 }}\n </ng-container>\n </div>\n</ng-container>\n\n<!-- INPUT FIELD -->\n<ng-container *ngIf=\"!locked\">\n <textarea\n #input\n [id]=\"id + '-textarea'\"\n class=\"sdv-field\"\n [ngClass]=\"{ 'no-resize': !!rows }\"\n [class.nggv-field--error]=\"invalid\"\n [attr.name]=\"name\"\n [attr.required]=\"required\"\n [disabled]=\"disabled\"\n [autofocus]=\"autofocus\"\n [readOnly]=\"readonly\"\n [attr.maxlength]=\"maxlength\"\n [attr.minlength]=\"minlength\"\n [attr.role]=\"role\"\n [attr.rows]=\"rows\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-label]=\"description\"\n [value]=\"state\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n ></textarea>\n\n <!-- ERRORS -->\n <div class=\"error-wrapper\" *transloco=\"let t; read: scope\">\n <label\n class=\"sdv-field-notice sdv-field-notice--error\"\n [attr.for]=\"id + '-textarea'\"\n *ngIf=\"invalid && (error || ngControl?.invalid)\"\n >\n <span *ngIf=\"error; else errorsRef\">{{ error }}</span>\n <ng-template #errorsRef>\n <span *ngIf=\"firstError as error\">\n {{ t('error.field' + error?.code, error?.params) }}\n </span>\n </ng-template>\n </label>\n\n <ng-container *ngIf=\"hasMaxLength\">\n <label\n *ngvCharacterCountdown=\"\n maxlength;\n currentLength: (inputRef?.nativeElement?.value ?? '').length;\n charactersLeft as charactersLeft\n \"\n class=\"sdv-field-notice\"\n style=\"text-align: right\"\n >\n {{ charactersLeft }} {{ t('label.maxlength') }}\n </label>\n </ng-container>\n </div>\n\n <!-- CHILDREN -->\n <ng-content></ng-content>\n</ng-container>\n", styles: [":host textarea{padding:.75rem 1rem;border-radius:var(--sg-border-radius);border:solid var(--sg-border-width) var(--sg-border-color);--border-color: var(--sg-border-color);align-items:center;background-color:var(--sg-form-control-bg);color:var(--text-primary-color);display:flex;justify-content:center;resize:vertical}:host textarea:focus:not(:focus-visible){box-shadow:none;outline:0}:host textarea:focus,:host textarea:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}@media screen and (-ms-high-contrast: active){:host textarea{border:2px solid currentcolor}}:host textarea:hover{background-color:var(--gds-ref-pallet-base100)}:host textarea:disabled,:host textarea.disabled,:host textarea[aria-disabled=true]{background:var(--sg-form-control-bg-disabled)!important;color:var(--text-disabled-color)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed}:host textarea:disabled::placeholder,:host textarea.disabled::placeholder,:host textarea[aria-disabled=true]::placeholder{color:var(--text-disabled-color)}:host label:not(.sdv-field-notice){margin-bottom:.5rem}:host label:not(.sdv-field-notice):is(label){margin-bottom:0}:host label:not(.sdv-field-notice).form-control{width:-moz-fit-content;width:fit-content}@supports (-moz-appearance: none){:host label:not(.sdv-field-notice).form-control:focus:not(:focus-visible){box-shadow:none;outline:0}:host label:not(.sdv-field-notice).form-control:focus,:host label:not(.sdv-field-notice).form-control:focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}}:host label:not(.sdv-field-notice):not(.form-control){font-weight:500;width:100%;line-height:1.25rem}:host label:not(.sdv-field-notice)+input,:host label:not(.sdv-field-notice)+textarea,fieldset :host label:not(.sdv-field-notice)+div,:host label:not(.sdv-field-notice)+button,:host label:not(.sdv-field-notice)+.group-stepper,:host label:not(.sdv-field-notice)+.stepper-wrapper,:host label:not(.sdv-field-notice)+.group{margin-top:.5rem}:host label:not(.sdv-field-notice)+.form-info{margin-bottom:.5rem}:host label:is(.sdv-field-label){margin-bottom:.5rem}:host .hide-if-empty:empty{display:none}:host .unset-state{padding-left:.5rem}:host .sdv-field-label--optional{font-weight:400}:host textarea{width:100%;max-width:100%}:host .description{margin-bottom:.5rem}:host .error-wrapper{margin-top:.5rem}:host .no-resize{resize:none}:host .no-resize::-webkit-scrollbar{-webkit-appearance:none}:host .no-resize::-webkit-scrollbar-thumb{border-radius:.5rem}\n"] }]
72
+ }], ctorParameters: function () { return [{ type: i1.NgControl, decorators: [{
73
+ type: Self
74
+ }, {
75
+ type: Optional
76
+ }] }, { type: undefined, decorators: [{
77
+ type: Optional
78
+ }, {
79
+ type: Inject,
80
+ args: [TRANSLOCO_SCOPE]
81
+ }] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { thook: [{
82
+ type: HostBinding,
83
+ args: ['attr.data-thook']
84
+ }, {
85
+ type: Input
86
+ }], placeholder: [{
87
+ type: Input
88
+ }], readonly: [{
89
+ type: Input
90
+ }], minLength: [{
91
+ type: Input
92
+ }], minlength: [{
93
+ type: Input
94
+ }], maxLength: [{
95
+ type: Input
96
+ }], maxlength: [{
97
+ type: Input
98
+ }], rows: [{
99
+ type: Input
100
+ }] } });
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGFyZWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy92LWFuZ3VsYXIvdGV4dGFyZWEvdGV4dGFyZWEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy92LWFuZ3VsYXIvdGV4dGFyZWEvdGV4dGFyZWEuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUNSLElBQUksR0FDTCxNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFMUMsT0FBTyxFQUFFLGVBQWUsRUFBa0IsTUFBTSxtQkFBbUIsQ0FBQTtBQUVuRSxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSxtRUFBbUUsQ0FBQTs7OztBQUV4SCxnRkFBZ0Y7QUFNaEYsTUFBTSxPQUFPLG9CQUFxQixTQUFRLG9DQUFvQztJQU81RSxzREFBc0Q7SUFDdEQsSUFBYSxTQUFTLENBQUMsTUFBYztRQUNuQyxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQTtRQUN4QixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFBO0lBQzFCLENBQUM7SUFDRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUE7SUFDeEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQWEsU0FBUyxDQUFDLE1BQWM7UUFDbkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUE7UUFDeEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQTtJQUMxQixDQUFDO0lBQ0Qsc0RBQXNEO0lBQ3RELElBQWEsU0FBUyxDQUFDLE1BQWM7UUFDbkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUE7UUFDeEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQTtJQUMxQixDQUFDO0lBQ0QsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFBO0lBQ3hCLENBQUM7SUFDRDs7O09BR0c7SUFDSCxJQUFhLFNBQVMsQ0FBQyxNQUFjO1FBQ25DLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFBO1FBQ3hCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUE7SUFDMUIsQ0FBQztJQUVELG1DQUFtQztJQUNuQyxJQUFJLFlBQVk7UUFDZCxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssTUFBTSxDQUFDLGdCQUFnQixDQUFBO0lBQ3ZFLENBQUM7SUFTRCxZQUM2QixTQUFvQixFQUdyQyxjQUE4QixFQUM5QixHQUFzQjtRQUVoQyxLQUFLLENBQUMsU0FBUyxFQUFFLGNBQWMsRUFBRSxHQUFHLENBQUMsQ0FBQTtRQU5WLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFHckMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBekRsQyxvRkFBb0Y7UUFDM0MsVUFBSyxHQUFHLFVBQVUsQ0FBQTtRQUczRCxzREFBc0Q7UUFDN0MsYUFBUSxHQUFHLEtBQUssQ0FBQTtRQXdDakIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQTtRQUVwQyxlQUFVLEdBQUcsQ0FBQyxDQUFBO0lBYXRCLENBQUM7SUFFRCxnQkFBZ0I7SUFDaEIsT0FBTyxDQUFDLEtBQVk7UUFDbEIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFBO1FBQ3ZCLElBQUksSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFNO1FBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUksS0FBSyxDQUFDLE1BQThCLENBQUMsS0FBSyxDQUFBO1FBQ3hELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzNCLENBQUM7K0dBckVVLG9CQUFvQix1RUF3RHJCLGVBQWU7bUdBeERkLG9CQUFvQixtVUNyQmpDLG0wRkFxR0E7OzRGRGhGYSxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0UsZUFBZTs7MEJBMER0QixJQUFJOzswQkFBSSxRQUFROzswQkFDaEIsUUFBUTs7MEJBQ1IsTUFBTTsyQkFBQyxlQUFlOzRFQXREZ0IsS0FBSztzQkFBN0MsV0FBVzt1QkFBQyxpQkFBaUI7O3NCQUFHLEtBQUs7Z0JBRTdCLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFFTyxTQUFTO3NCQUFyQixLQUFLO2dCQVlPLFNBQVM7c0JBQXJCLEtBQUs7Z0JBS08sU0FBUztzQkFBckIsS0FBSztnQkFXTyxTQUFTO3NCQUFyQixLQUFLO2dCQWVHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEhvc3RCaW5kaW5nLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPcHRpb25hbCxcbiAgU2VsZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJ1xuXG5pbXBvcnQgeyBUUkFOU0xPQ09fU0NPUEUsIFRyYW5zbG9jb1Njb3BlIH0gZnJvbSAnQG5nbmVhdC90cmFuc2xvY28nXG5cbmltcG9ydCB7IE5ndkJhc2VDb250cm9sVmFsdWVBY2Nlc3NvckNvbXBvbmVudCB9IGZyb20gJ0BzZWJncm91cC9ncmVlbi1hbmd1bGFyL3NyYy92LWFuZ3VsYXIvYmFzZS1jb250cm9sLXZhbHVlLWFjY2Vzc29yJ1xuXG4vKiogVGV4dGFyZWEgZmllbGRzIGFsbG93IHVzZXJzIHRvIGFkZCBhbmQgZWRpdCBsb25nZXIgb3IgbXVsdGlwbGUgbGluZSB0ZXh0LiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmdndi10ZXh0YXJlYScsXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXh0YXJlYS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RleHRhcmVhLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIE5ndlRleHRhcmVhQ29tcG9uZW50IGV4dGVuZHMgTmd2QmFzZUNvbnRyb2xWYWx1ZUFjY2Vzc29yQ29tcG9uZW50IHtcbiAgLyoqIFNwZWNpYWwgcHJvcGVydHkgdXNlZCBmb3Igc2VsZWN0aW5nIERPTSBlbGVtZW50cyBkdXJpbmcgYXV0b21hdGVkIFVJIHRlc3RpbmcuICovXG4gIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLXRob29rJykgQElucHV0KCkgdGhvb2sgPSAndGV4dGFyZWEnXG4gIC8qKiBUZXh0IHNob3duIGJlZm9yZSBpbnB1dCBoYXMgYSB3cml0dGVuIHZhbHVlLiAqL1xuICBASW5wdXQoKSBwbGFjZWhvbGRlcj86IHN0cmluZ1xuICAvKiogSWYgc2V0IHRvIHRydWUsIHRoZSB2YWx1ZSB3aWxsIG5vdCBiZSBlZGl0YWJsZS4gKi9cbiAgQElucHV0KCkgcmVhZG9ubHkgPSBmYWxzZVxuICAvKiogTWluaW11bSBsZW5ndGggKG51bWJlciBvZiBjaGFyYWN0ZXJzKSBvZiB2YWx1ZS4gKi9cbiAgQElucHV0KCkgc2V0IG1pbkxlbmd0aChsZW5ndGg6IG51bWJlcikge1xuICAgIHRoaXMuX21pbmxlbmd0aCA9IGxlbmd0aFxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKVxuICB9XG4gIGdldCBtaW5sZW5ndGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbWlubGVuZ3RoXG4gIH1cblxuICAvKipcbiAgICogTWluaW11bSBsZW5ndGggKG51bWJlciBvZiBjaGFyYWN0ZXJzKSBvZiB2YWx1ZS5cbiAgICogQGRlcHJlY2F0ZWQgbWlubGVuZ3RoIHRyaWdnZXJzIGFuZ3VsYXItdGVtcGxhdGUtdmFsaWRhdGlvbi4gVXNlIEBJbnB1dCgpIG1pbkxlbmd0aCBpbnN0ZWFkLlxuICAgKi9cbiAgQElucHV0KCkgc2V0IG1pbmxlbmd0aChsZW5ndGg6IG51bWJlcikge1xuICAgIHRoaXMuX21pbmxlbmd0aCA9IGxlbmd0aFxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKVxuICB9XG4gIC8qKiBNYXhpbXVtIGxlbmd0aCAobnVtYmVyIG9mIGNoYXJhY3RlcnMpIG9mIHZhbHVlLiAqL1xuICBASW5wdXQoKSBzZXQgbWF4TGVuZ3RoKGxlbmd0aDogbnVtYmVyKSB7XG4gICAgdGhpcy5fbWF4bGVuZ3RoID0gbGVuZ3RoXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpXG4gIH1cbiAgZ2V0IG1heGxlbmd0aCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9tYXhsZW5ndGhcbiAgfVxuICAvKipcbiAgICogTWF4aW11bSBsZW5ndGggKG51bWJlciBvZiBjaGFyYWN0ZXJzKSBvZiB2YWx1ZS5cbiAgICogQGRlcHJlY2F0ZWQgbWF4bGVuZ3RoIHRyaWdnZXJzIGFuZ3VsYXItdGVtcGxhdGUtdmFsaWRhdGlvbi4gVXNlIEBJbnB1dCgpIG1heExlbmd0aCBpbnN0ZWFkLlxuICAgKi9cbiAgQElucHV0KCkgc2V0IG1heGxlbmd0aChsZW5ndGg6IG51bWJlcikge1xuICAgIHRoaXMuX21heGxlbmd0aCA9IGxlbmd0aFxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKVxuICB9XG5cbiAgLyoqIFJldHVybnMgaWYgbWF4bGVuZ3RoIGlzIHVzZWQgKi9cbiAgZ2V0IGhhc01heExlbmd0aCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLm1heGxlbmd0aCAmJiB0aGlzLm1heGxlbmd0aCAhPT0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJcbiAgfVxuXG4gIHByaXZhdGUgX21heGxlbmd0aCA9IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSXG5cbiAgcHJpdmF0ZSBfbWlubGVuZ3RoID0gMFxuXG4gIC8qKiBTZXRzIHRoZSBoZWlnaHQgb2YgdGhlIHRleHRhcmVhIGFuZCBkaXNhYmxlcyByZXNpemUuIEEgc2Nyb2xsYmFyIHdpbGwgYXBwZWFyIGlmIG5lY2Vzc2FyeS4gKi9cbiAgQElucHV0KCkgcm93cz86IG51bWJlclxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBTZWxmKCkgQE9wdGlvbmFsKCkgcHVibGljIG5nQ29udHJvbDogTmdDb250cm9sLFxuICAgIEBPcHRpb25hbCgpXG4gICAgQEluamVjdChUUkFOU0xPQ09fU0NPUEUpXG4gICAgcHJvdGVjdGVkIHRyYW5zbG9jb1Njb3BlOiBUcmFuc2xvY29TY29wZSxcbiAgICBwcm90ZWN0ZWQgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgKSB7XG4gICAgc3VwZXIobmdDb250cm9sLCB0cmFuc2xvY29TY29wZSwgY2RyKVxuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBvbklucHV0KGV2ZW50OiBFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHJldHVyblxuICAgIHRoaXMuc3RhdGUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxUZXh0QXJlYUVsZW1lbnQpLnZhbHVlXG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnN0YXRlKVxuICB9XG59XG4iLCI8IS0tIExBQkVMIC0tPlxuPGxhYmVsXG4gIFtpZF09XCJpZCArICctbGFiZWwnXCJcbiAgY2xhc3M9XCJzZHYtZmllbGQtbGFiZWwgaGlkZS1pZi1lbXB0eVwiXG4gIFthdHRyLmZvcl09XCJpZCArICctdGV4dGFyZWEnXCJcbiAgKnRyYW5zbG9jbz1cImxldCB0OyByZWFkOiBzY29wZVwiXG4+XG4gIDxuZy10ZW1wbGF0ZVxuICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwibGFiZWxDb250ZW50VHBsIHx8IGJhc2ljTGFiZWxDb250ZW50VHBsXCJcbiAgPjwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSAjYmFzaWNMYWJlbENvbnRlbnRUcGw+XG4gICAgPCEtLSB0byB0cmlnZ2VyIGNzczplbXB0eSBpZiBubyBsYWJlbCB3YXMgYWRkZWQgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxhYmVsXCI+XG4gICAgICB7eyBsYWJlbCB9fVxuICAgICAgPHNwYW5cbiAgICAgICAgKm5nSWY9XCJvcHRpb25hbCA9PT0gdHJ1ZSB8fCAocmVxdWlyZWQgIT09IHRydWUgJiYgb3B0aW9uYWwgIT09IGZhbHNlKVwiXG4gICAgICAgIGNsYXNzPVwic2R2LWZpZWxkLWxhYmVsLS1vcHRpb25hbFwiXG4gICAgICA+XG4gICAgICAgICh7eyB0KCdsYWJlbC5vcHRpb25hbCcpIH19KVxuICAgICAgPC9zcGFuPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLXRlbXBsYXRlPlxuPC9sYWJlbD5cblxuPCEtLSBERVNDUklQVElPTiAtLT5cbjxkaXYgY2xhc3M9XCJzZHYtZmllbGQtbGFiZWwtLXNtYWxsIGRlc2NyaXB0aW9uXCI+e3sgZGVzY3JpcHRpb24gfX08L2Rpdj5cblxuPCEtLSBMT0NLRUQgSU5QVVQgLS0+XG48bmctY29udGFpbmVyICpuZ0lmPVwibG9ja2VkXCI+XG4gIDxkaXZcbiAgICBbaWRdPVwiaWQgKyAnLXRleHRhcmVhJ1wiXG4gICAgY2xhc3M9XCJuZ2d2LWZpZWxkLS1sb2NrZWRcIlxuICAgIFthdHRyLm5hbWVdPVwibmFtZVwiXG4gICAgW2F0dHIudmFsdWVdPVwic3RhdGVcIlxuICAgIFthdHRyLnJvbGVdPVwicm9sZVwiXG4gID5cbiAgICA8c3BhbiAqbmdJZj1cIiFzdGF0ZVwiIGNsYXNzPVwidW5zZXQtc3RhdGVcIj4tPC9zcGFuPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdGF0ZVwiPlxuICAgICAge3sgc3RhdGUgfX1cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cblxuPCEtLSBJTlBVVCBGSUVMRCAtLT5cbjxuZy1jb250YWluZXIgKm5nSWY9XCIhbG9ja2VkXCI+XG4gIDx0ZXh0YXJlYVxuICAgICNpbnB1dFxuICAgIFtpZF09XCJpZCArICctdGV4dGFyZWEnXCJcbiAgICBjbGFzcz1cInNkdi1maWVsZFwiXG4gICAgW25nQ2xhc3NdPVwieyAnbm8tcmVzaXplJzogISFyb3dzIH1cIlxuICAgIFtjbGFzcy5uZ2d2LWZpZWxkLS1lcnJvcl09XCJpbnZhbGlkXCJcbiAgICBbYXR0ci5uYW1lXT1cIm5hbWVcIlxuICAgIFthdHRyLnJlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFthdXRvZm9jdXNdPVwiYXV0b2ZvY3VzXCJcbiAgICBbcmVhZE9ubHldPVwicmVhZG9ubHlcIlxuICAgIFthdHRyLm1heGxlbmd0aF09XCJtYXhsZW5ndGhcIlxuICAgIFthdHRyLm1pbmxlbmd0aF09XCJtaW5sZW5ndGhcIlxuICAgIFthdHRyLnJvbGVdPVwicm9sZVwiXG4gICAgW2F0dHIucm93c109XCJyb3dzXCJcbiAgICBbYXR0ci5wbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJkZXNjcmlwdGlvblwiXG4gICAgW3ZhbHVlXT1cInN0YXRlXCJcbiAgICAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQpXCJcbiAgICAoZm9jdXMpPVwib25Gb2N1cygkZXZlbnQpXCJcbiAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXG4gID48L3RleHRhcmVhPlxuXG4gIDwhLS0gRVJST1JTIC0tPlxuICA8ZGl2IGNsYXNzPVwiZXJyb3Itd3JhcHBlclwiICp0cmFuc2xvY289XCJsZXQgdDsgcmVhZDogc2NvcGVcIj5cbiAgICA8bGFiZWxcbiAgICAgIGNsYXNzPVwic2R2LWZpZWxkLW5vdGljZSBzZHYtZmllbGQtbm90aWNlLS1lcnJvclwiXG4gICAgICBbYXR0ci5mb3JdPVwiaWQgKyAnLXRleHRhcmVhJ1wiXG4gICAgICAqbmdJZj1cImludmFsaWQgJiYgKGVycm9yIHx8IG5nQ29udHJvbD8uaW52YWxpZClcIlxuICAgID5cbiAgICAgIDxzcGFuICpuZ0lmPVwiZXJyb3I7IGVsc2UgZXJyb3JzUmVmXCI+e3sgZXJyb3IgfX08L3NwYW4+XG4gICAgICA8bmctdGVtcGxhdGUgI2Vycm9yc1JlZj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJmaXJzdEVycm9yIGFzIGVycm9yXCI+XG4gICAgICAgICAge3sgdCgnZXJyb3IuZmllbGQnICsgZXJyb3I/LmNvZGUsIGVycm9yPy5wYXJhbXMpIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9sYWJlbD5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNNYXhMZW5ndGhcIj5cbiAgICAgIDxsYWJlbFxuICAgICAgICAqbmd2Q2hhcmFjdGVyQ291bnRkb3duPVwiXG4gICAgICAgICAgbWF4bGVuZ3RoO1xuICAgICAgICAgIGN1cnJlbnRMZW5ndGg6IChpbnB1dFJlZj8ubmF0aXZlRWxlbWVudD8udmFsdWUgPz8gJycpLmxlbmd0aDtcbiAgICAgICAgICBjaGFyYWN0ZXJzTGVmdCBhcyBjaGFyYWN0ZXJzTGVmdFxuICAgICAgICBcIlxuICAgICAgICBjbGFzcz1cInNkdi1maWVsZC1ub3RpY2VcIlxuICAgICAgICBzdHlsZT1cInRleHQtYWxpZ246IHJpZ2h0XCJcbiAgICAgID5cbiAgICAgICAge3sgY2hhcmFjdGVyc0xlZnQgfX0ge3sgdCgnbGFiZWwubWF4bGVuZ3RoJykgfX1cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuXG4gIDwhLS0gQ0hJTERSRU4gLS0+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvbmctY29udGFpbmVyPlxuIl19
@@ -0,0 +1,18 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { NgvTextareaComponent } from './textarea.component';
4
+ import * as i0 from "@angular/core";
5
+ export class NgvTextareaModule {
6
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvTextareaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: NgvTextareaModule, declarations: [NgvTextareaComponent], imports: [CommonModule], exports: [NgvTextareaComponent] }); }
8
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvTextareaModule, imports: [CommonModule] }); }
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvTextareaModule, decorators: [{
11
+ type: NgModule,
12
+ args: [{
13
+ declarations: [NgvTextareaComponent],
14
+ imports: [CommonModule],
15
+ exports: [NgvTextareaComponent],
16
+ }]
17
+ }] });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGFyZWEubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy92LWFuZ3VsYXIvdGV4dGFyZWEvdGV4dGFyZWEubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDeEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBRTlDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNCQUFzQixDQUFBOztBQU8zRCxNQUFNLE9BQU8saUJBQWlCOytHQUFqQixpQkFBaUI7Z0hBQWpCLGlCQUFpQixpQkFKYixvQkFBb0IsYUFDekIsWUFBWSxhQUNaLG9CQUFvQjtnSEFFbkIsaUJBQWlCLFlBSGxCLFlBQVk7OzRGQUdYLGlCQUFpQjtrQkFMN0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztvQkFDcEMsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixPQUFPLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztpQkFDaEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5cbmltcG9ydCB7IE5ndlRleHRhcmVhQ29tcG9uZW50IH0gZnJvbSAnLi90ZXh0YXJlYS5jb21wb25lbnQnXG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW05ndlRleHRhcmVhQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIGV4cG9ydHM6IFtOZ3ZUZXh0YXJlYUNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndlRleHRhcmVhTW9kdWxlIHt9XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export * from './tooltip.directive';
2
+ export * from './tooltip.module';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL3YtYW5ndWxhci90b29sdGlwL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUJBQXFCLENBQUE7QUFDbkMsY0FBYyxrQkFBa0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdG9vbHRpcC5kaXJlY3RpdmUnXG5leHBvcnQgKiBmcm9tICcuL3Rvb2x0aXAubW9kdWxlJ1xuIl19
@@ -0,0 +1,273 @@
1
+ import { Directive, ElementRef, EventEmitter, HostListener, Input, Output, Renderer2, } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * A tooltip is a text label that acts as a helper to a specific item.
5
+ * Recommended to use value `top` or `bottom` with `placement` for responsive design.
6
+ * Dynamic resizing and tooltip position are a work in progress.
7
+ * https://designlibrary.sebgroup.com/components/component-tooltip
8
+ */
9
+ export class NgvTooltipDirective {
10
+ /** @internal Check if changes should trigger a re-render */
11
+ static shouldUpdate(change) {
12
+ return (change &&
13
+ !change.firstChange &&
14
+ change.previousValue !== change.currentValue);
15
+ }
16
+ constructor(anchorElementRef, renderer) {
17
+ this.anchorElementRef = anchorElementRef;
18
+ this.renderer = renderer;
19
+ /** Special property used for selecting DOM elements during automated UI testing. */
20
+ this.thook = 'tooltip';
21
+ /** The side of the anchor which the tooltip will be rendered.
22
+ * Recommended `top` and `bottom` for responsive designs as these are more stable.
23
+ */
24
+ this.placement = 'top';
25
+ /** Initial state and subsequent updates on wether the tooltip is visible. */
26
+ this.shown = false;
27
+ /** How far off from the text the tooltip will be rendered. */
28
+ this.offset = 10;
29
+ /** How frequently the tooltip will be re-rendered when the page size changes. */
30
+ this.resizeThrottle = 50;
31
+ /** Numeric max-width for tooltip. */
32
+ this.maxWidth = 343;
33
+ /** Emits a show event triggered changing visibility state of the tooltip. */
34
+ this.ngvShow = new EventEmitter();
35
+ /** Emits a hide event triggered changing visibility state of the tooltip. */
36
+ this.ngvHide = new EventEmitter();
37
+ /** @internal */
38
+ this.timeout = 0;
39
+ this.anchorElement = this.anchorElementRef.nativeElement;
40
+ this.parentElement = document.body;
41
+ }
42
+ ngAfterViewInit() {
43
+ // Set a timeout to allow view to fully render before creating tooltip.
44
+ setTimeout(() => (this.shown ? this.show(true) : this.hide(true)));
45
+ }
46
+ ngOnChanges(changes) {
47
+ if (NgvTooltipDirective.shouldUpdate(changes.ngvTooltip) ||
48
+ NgvTooltipDirective.shouldUpdate(changes.placement) ||
49
+ NgvTooltipDirective.shouldUpdate(changes.thook)) {
50
+ this.shown ? this.show(true) : this.hide(true);
51
+ }
52
+ if (NgvTooltipDirective.shouldUpdate(changes.shown)) {
53
+ this.shown ? this.show() : this.hide();
54
+ }
55
+ if (NgvTooltipDirective.shouldUpdate(changes.offset)) {
56
+ this.updatePosition();
57
+ }
58
+ }
59
+ ngOnDestroy() {
60
+ this.hide(true);
61
+ }
62
+ /** @internal */
63
+ onMouseEnter() {
64
+ this.show();
65
+ }
66
+ /** @internal */
67
+ onMouseLeave() {
68
+ this.hide();
69
+ }
70
+ /** @internal */
71
+ resize() {
72
+ if (this.timeout)
73
+ return;
74
+ this.timeout = window.setTimeout(() => {
75
+ this.timeout = 0;
76
+ this.updatePosition();
77
+ }, this.resizeThrottle);
78
+ }
79
+ /**
80
+ * Sets the visibility state of the tooltip to true and creates a new tooltip if it doesn't exist or `recreate` is set.
81
+ * @param recreate if set to true, destroy any existing tooltip and create a new one.
82
+ */
83
+ show(recreate = false) {
84
+ // Require tooltip text to create
85
+ if (!this.ngvTooltip || this.ngvTooltip.length === 0)
86
+ return;
87
+ if (recreate || !this.tooltipElement) {
88
+ this.hide(true);
89
+ this.create(this.ngvTooltip);
90
+ }
91
+ else {
92
+ this.renderer.appendChild(this.parentElement, this.tooltipElement);
93
+ }
94
+ this.updatePosition();
95
+ this.shown = true;
96
+ this.ngvShow.emit(this.tooltipElement);
97
+ }
98
+ /**
99
+ * Sets the visibility state of the tooltip to false and destroys an existing tooltip if `destroy` is set.
100
+ * @param destroy if set to true, destroy any existing tooltip.
101
+ */
102
+ hide(destroy = false) {
103
+ if (!this.tooltipElement)
104
+ return;
105
+ if (this.parentElement.contains(this.tooltipElement))
106
+ this.renderer.removeChild(this.parentElement, this.tooltipElement);
107
+ if (destroy)
108
+ this.destroy();
109
+ this.shown = false;
110
+ this.ngvHide.emit(this.tooltipElement);
111
+ }
112
+ /**
113
+ * @internal
114
+ * Creates a new tooltip with the set placement and a given text as its body.
115
+ * @param text the string to be displayed in the tooltip body.
116
+ */
117
+ create(text) {
118
+ this.tooltipElement = this.renderer.createElement('div');
119
+ this.renderer.addClass(this.tooltipElement, 'gds-tooltip');
120
+ this.renderer.setAttribute(this.tooltipElement, 'data-thook', this.thook);
121
+ this.renderer.setStyle(this.tooltipElement, 'position', 'absolute');
122
+ this.renderer.setStyle(this.tooltipElement, 'z-index', '1040');
123
+ this.renderer.setStyle(this.tooltipElement, 'border-radius', '.25rem');
124
+ this.renderer.setStyle(this.tooltipElement, 'padding', '.5rem 1rem');
125
+ const relativeMaxWidth = this.pxToRem(this.maxWidth);
126
+ this.renderer.setStyle(this.tooltipElement, 'max-width', relativeMaxWidth);
127
+ this.renderer.appendChild(this.tooltipElement, this.renderer.createText(text));
128
+ // add tooltip to DOM
129
+ this.renderer.appendChild(this.parentElement, this.tooltipElement);
130
+ this.arrowElement = this.renderer.createElement('div');
131
+ this.renderer.addClass(this.arrowElement, `gds-tooltip__arrow-${this.placement}`);
132
+ // add arrow to tooltip element
133
+ this.renderer.appendChild(this.tooltipElement, this.arrowElement);
134
+ }
135
+ /**
136
+ * @internal
137
+ * Destroys the current tooltip by un-setting variables, should only be used after detaching elements from the DOM.
138
+ */
139
+ destroy() {
140
+ this.tooltipElement = undefined;
141
+ this.arrowElement = undefined;
142
+ }
143
+ /**
144
+ * @internal
145
+ * Recalculates the position of the tooltip.
146
+ */
147
+ updatePosition() {
148
+ if (!this.tooltipElement || !this.arrowElement)
149
+ return;
150
+ const scrollPos = window.pageYOffset ||
151
+ document.documentElement.scrollTop ||
152
+ this.parentElement.scrollTop ||
153
+ 0;
154
+ const anchorRect = this.anchorElement.getBoundingClientRect();
155
+ const tooltipRect = this.tooltipElement.getBoundingClientRect();
156
+ const arrowRect = this.arrowElement.getBoundingClientRect();
157
+ switch (this.placement) {
158
+ case 'top':
159
+ this.alignVertical(true, scrollPos, anchorRect, tooltipRect.width, tooltipRect.height, arrowRect.width);
160
+ break;
161
+ case 'bottom':
162
+ this.alignVertical(false, scrollPos, anchorRect, tooltipRect.width, tooltipRect.height, arrowRect.width);
163
+ break;
164
+ case 'left':
165
+ this.alignHorizontal(true, scrollPos, anchorRect, tooltipRect.height);
166
+ break;
167
+ case 'right':
168
+ this.alignHorizontal(false, scrollPos, anchorRect, tooltipRect.height);
169
+ break;
170
+ default:
171
+ return;
172
+ }
173
+ }
174
+ /**
175
+ * @internal
176
+ * Calculates and set the position of the tooltip when the placement is `top` or `bottom`.
177
+ */
178
+ alignVertical(above, scrollPos, anchor, tooltipWidth, tooltipHeight, arrowWidth) {
179
+ const width = this.parentElement.clientWidth;
180
+ const anchorMidX = anchor.left + anchor.width / 2;
181
+ const tooltip = {};
182
+ const arrow = {};
183
+ if (above)
184
+ tooltip.top = anchor.top - tooltipHeight - this.offset + scrollPos;
185
+ else
186
+ tooltip.top = anchor.bottom + this.offset + scrollPos;
187
+ if (anchorMidX < width / 2) {
188
+ tooltip.left = Math.max(0, anchorMidX - tooltipWidth / 2);
189
+ arrow.left = anchorMidX - tooltip.left;
190
+ }
191
+ else {
192
+ tooltip.right = Math.max(0, width - (anchorMidX + tooltipWidth / 2));
193
+ arrow.right = width - anchorMidX - tooltip.right - arrowWidth;
194
+ }
195
+ this.setStyle(tooltip, arrow);
196
+ }
197
+ /**
198
+ * @internal
199
+ * Calculates and set the position of the tooltip when the placement is `left` or `right`.
200
+ */
201
+ alignHorizontal(before, scrollPos, anchor, tooltipHeight) {
202
+ const width = this.parentElement.clientWidth;
203
+ const top = anchor.top + (anchor.height - tooltipHeight) / 2 + scrollPos;
204
+ const tooltip = { top };
205
+ const arrow = { top: tooltipHeight / 2 };
206
+ if (before)
207
+ tooltip.right = width - anchor.left + this.offset;
208
+ else
209
+ tooltip.left = anchor.right + this.offset;
210
+ this.setStyle(tooltip, arrow);
211
+ }
212
+ /**
213
+ * @internal
214
+ * Updates the CSS properties for the tooltip position.
215
+ */
216
+ setStyle(tooltip, arrow) {
217
+ // Tooltip
218
+ Object.entries(tooltip).forEach(([prop, value]) => {
219
+ const position = this.pxToRem(value);
220
+ this.renderer.setStyle(this.tooltipElement, prop, position);
221
+ });
222
+ // Arrow
223
+ Object.entries(arrow).forEach(([prop, value]) => {
224
+ const position = this.pxToRem(value);
225
+ this.renderer.setStyle(this.arrowElement, prop, position);
226
+ });
227
+ }
228
+ pxToRem(value) {
229
+ const fontSizePx = window
230
+ ?.getComputedStyle(this.parentElement)
231
+ ?.getPropertyValue('font-size');
232
+ const fontSizeNumberMatch = fontSizePx?.match(/\d{1,}/);
233
+ const fontSize = fontSizeNumberMatch ? +fontSizeNumberMatch[0] : 16;
234
+ const remValue = value / fontSize;
235
+ return `${remValue}rem`;
236
+ }
237
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvTooltipDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
238
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: NgvTooltipDirective, selector: "[ngvTooltip]", inputs: { ngvTooltip: "ngvTooltip", thook: "thook", placement: "placement", shown: "shown", offset: "offset", resizeThrottle: "resizeThrottle", maxWidth: "maxWidth" }, outputs: { ngvShow: "ngvShow", ngvHide: "ngvHide" }, host: { listeners: { "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()", "window:resize": "resize()" } }, usesOnChanges: true, ngImport: i0 }); }
239
+ }
240
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvTooltipDirective, decorators: [{
241
+ type: Directive,
242
+ args: [{
243
+ selector: '[ngvTooltip]',
244
+ }]
245
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { ngvTooltip: [{
246
+ type: Input
247
+ }], thook: [{
248
+ type: Input
249
+ }], placement: [{
250
+ type: Input
251
+ }], shown: [{
252
+ type: Input
253
+ }], offset: [{
254
+ type: Input
255
+ }], resizeThrottle: [{
256
+ type: Input
257
+ }], maxWidth: [{
258
+ type: Input
259
+ }], ngvShow: [{
260
+ type: Output
261
+ }], ngvHide: [{
262
+ type: Output
263
+ }], onMouseEnter: [{
264
+ type: HostListener,
265
+ args: ['mouseenter']
266
+ }], onMouseLeave: [{
267
+ type: HostListener,
268
+ args: ['mouseleave']
269
+ }], resize: [{
270
+ type: HostListener,
271
+ args: ['window:resize']
272
+ }] } });
273
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL3YtYW5ndWxhci90b29sdGlwL3Rvb2x0aXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEdBR1YsTUFBTSxlQUFlLENBQUE7O0FBV3RCOzs7OztHQUtHO0FBSUgsTUFBTSxPQUFPLG1CQUFtQjtJQXdDOUIsNERBQTREO0lBQzVELE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBb0I7UUFDdEMsT0FBTyxDQUNMLE1BQU07WUFDTixDQUFDLE1BQU0sQ0FBQyxXQUFXO1lBQ25CLE1BQU0sQ0FBQyxhQUFhLEtBQUssTUFBTSxDQUFDLFlBQVksQ0FDN0MsQ0FBQTtJQUNILENBQUM7SUFFRCxZQUNVLGdCQUE0QixFQUM1QixRQUFtQjtRQURuQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQVk7UUFDNUIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQTlDN0Isb0ZBQW9GO1FBQzNFLFVBQUssR0FBRyxTQUFTLENBQUE7UUFDMUI7O1dBRUc7UUFDTSxjQUFTLEdBQWMsS0FBSyxDQUFBO1FBQ3JDLDZFQUE2RTtRQUNwRSxVQUFLLEdBQUcsS0FBSyxDQUFBO1FBQ3RCLDhEQUE4RDtRQUNyRCxXQUFNLEdBQUcsRUFBRSxDQUFBO1FBQ3BCLGlGQUFpRjtRQUN4RSxtQkFBYyxHQUFHLEVBQUUsQ0FBQTtRQUM1QixxQ0FBcUM7UUFDNUIsYUFBUSxHQUFHLEdBQUcsQ0FBQTtRQUV2Qiw2RUFBNkU7UUFDbkUsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFlLENBQUE7UUFDbkQsNkVBQTZFO1FBQ25FLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBZSxDQUFBO1FBRW5ELGdCQUFnQjtRQUNOLFlBQU8sR0FBRyxDQUFDLENBQUE7UUEyQm5CLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQTtRQUN4RCxJQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUE7SUFDcEMsQ0FBQztJQUVELGVBQWU7UUFDYix1RUFBdUU7UUFDdkUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDcEUsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUNFLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO1lBQ3BELG1CQUFtQixDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDO1lBQ25ELG1CQUFtQixDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQy9DO1lBQ0EsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtTQUMvQztRQUVELElBQUksbUJBQW1CLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNuRCxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQTtTQUN2QztRQUVELElBQUksbUJBQW1CLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNwRCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUE7U0FDdEI7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDakIsQ0FBQztJQUVELGdCQUFnQjtJQUVoQixZQUFZO1FBQ1YsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFBO0lBQ2IsQ0FBQztJQUVELGdCQUFnQjtJQUVoQixZQUFZO1FBQ1YsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFBO0lBQ2IsQ0FBQztJQUVELGdCQUFnQjtJQUVoQixNQUFNO1FBQ0osSUFBSSxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU07UUFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNwQyxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQTtZQUNoQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUE7UUFDdkIsQ0FBQyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQTtJQUN6QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLO1FBQ25CLGlDQUFpQztRQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQUUsT0FBTTtRQUU1RCxJQUFJLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1NBQzdCO2FBQU07WUFDTCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQTtTQUNuRTtRQUVELElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQTtRQUNyQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQTtRQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUE7SUFDeEMsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSztRQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWM7WUFBRSxPQUFNO1FBQ2hDLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQztZQUNsRCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQTtRQUNwRSxJQUFJLE9BQU87WUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUE7UUFDM0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUE7UUFDbEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFBO0lBQ3hDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLElBQVk7UUFDakIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN4RCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLGFBQWEsQ0FBQyxDQUFBO1FBQzFELElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN6RSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQTtRQUNuRSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUM5RCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLGVBQWUsRUFBRSxRQUFRLENBQUMsQ0FBQTtRQUN0RSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQTtRQUNwRSxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQ3BELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixDQUFDLENBQUE7UUFDMUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQ3ZCLElBQUksQ0FBQyxjQUFjLEVBQ25CLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUMvQixDQUFBO1FBRUQscUJBQXFCO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFBO1FBRWxFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDdEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQ3BCLElBQUksQ0FBQyxZQUFZLEVBQ2pCLHNCQUFzQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQ3ZDLENBQUE7UUFFRCwrQkFBK0I7UUFDL0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUE7SUFDbkUsQ0FBQztJQUVEOzs7T0FHRztJQUNILE9BQU87UUFDTCxJQUFJLENBQUMsY0FBYyxHQUFHLFNBQVMsQ0FBQTtRQUMvQixJQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQTtJQUMvQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsY0FBYztRQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVk7WUFBRSxPQUFNO1FBQ3RELE1BQU0sU0FBUyxHQUNiLE1BQU0sQ0FBQyxXQUFXO1lBQ2xCLFFBQVEsQ0FBQyxlQUFlLENBQUMsU0FBUztZQUNsQyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVM7WUFDNUIsQ0FBQyxDQUFBO1FBQ0gsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFBO1FBQzdELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMscUJBQXFCLEVBQUUsQ0FBQTtRQUMvRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLHFCQUFxQixFQUFFLENBQUE7UUFFM0QsUUFBUSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ3RCLEtBQUssS0FBSztnQkFDUixJQUFJLENBQUMsYUFBYSxDQUNoQixJQUFJLEVBQ0osU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLENBQUMsS0FBSyxFQUNqQixXQUFXLENBQUMsTUFBTSxFQUNsQixTQUFTLENBQUMsS0FBSyxDQUNoQixDQUFBO2dCQUNELE1BQUs7WUFFUCxLQUFLLFFBQVE7Z0JBQ1gsSUFBSSxDQUFDLGFBQWEsQ0FDaEIsS0FBSyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsV0FBVyxDQUFDLEtBQUssRUFDakIsV0FBVyxDQUFDLE1BQU0sRUFDbEIsU0FBUyxDQUFDLEtBQUssQ0FDaEIsQ0FBQTtnQkFDRCxNQUFLO1lBRVAsS0FBSyxNQUFNO2dCQUNULElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFBO2dCQUNyRSxNQUFLO1lBRVAsS0FBSyxPQUFPO2dCQUNWLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFBO2dCQUN0RSxNQUFLO1lBRVA7Z0JBQ0UsT0FBTTtTQUNUO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILGFBQWEsQ0FDWCxLQUFjLEVBQ2QsU0FBaUIsRUFDakIsTUFBZSxFQUNmLFlBQW9CLEVBQ3BCLGFBQXFCLEVBQ3JCLFVBQWtCO1FBRWxCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFBO1FBQzVDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUE7UUFDakQsTUFBTSxPQUFPLEdBQWEsRUFBRSxDQUFBO1FBQzVCLE1BQU0sS0FBSyxHQUFhLEVBQUUsQ0FBQTtRQUUxQixJQUFJLEtBQUs7WUFDUCxPQUFPLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLEdBQUcsYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFBOztZQUMvRCxPQUFPLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUE7UUFFMUQsSUFBSSxVQUFVLEdBQUcsS0FBSyxHQUFHLENBQUMsRUFBRTtZQUMxQixPQUFPLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFVBQVUsR0FBRyxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUE7WUFDekQsS0FBSyxDQUFDLElBQUksR0FBRyxVQUFVLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQTtTQUN2QzthQUFNO1lBQ0wsT0FBTyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxVQUFVLEdBQUcsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDcEUsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLEdBQUcsVUFBVSxHQUFHLE9BQU8sQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFBO1NBQzlEO1FBRUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDL0IsQ0FBQztJQUVEOzs7T0FHRztJQUNILGVBQWUsQ0FDYixNQUFlLEVBQ2YsU0FBaUIsRUFDakIsTUFBZSxFQUNmLGFBQXFCO1FBRXJCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFBO1FBQzVDLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsR0FBRyxTQUFTLENBQUE7UUFDeEUsTUFBTSxPQUFPLEdBQWEsRUFBRSxHQUFHLEVBQUUsQ0FBQTtRQUNqQyxNQUFNLEtBQUssR0FBYSxFQUFFLEdBQUcsRUFBRSxhQUFhLEdBQUcsQ0FBQyxFQUFFLENBQUE7UUFFbEQsSUFBSSxNQUFNO1lBQUUsT0FBTyxDQUFDLEtBQUssR0FBRyxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFBOztZQUN4RCxPQUFPLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQTtRQUU5QyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUMvQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsUUFBUSxDQUFDLE9BQWlCLEVBQUUsS0FBZTtRQUN6QyxVQUFVO1FBQ1YsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO1lBQ2hELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDcEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUE7UUFDN0QsQ0FBQyxDQUFDLENBQUE7UUFFRixRQUFRO1FBQ1IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO1lBQzlDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDcEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUE7UUFDM0QsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRU8sT0FBTyxDQUFDLEtBQWE7UUFDM0IsTUFBTSxVQUFVLEdBQUcsTUFBTTtZQUN2QixFQUFFLGdCQUFnQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDdEMsRUFBRSxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUNqQyxNQUFNLG1CQUFtQixHQUFHLFVBQVUsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDdkQsTUFBTSxRQUFRLEdBQUcsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtRQUNuRSxNQUFNLFFBQVEsR0FBRyxLQUFLLEdBQUcsUUFBUSxDQUFBO1FBQ2pDLE9BQU8sR0FBRyxRQUFRLEtBQUssQ0FBQTtJQUN6QixDQUFDOytHQXZUVSxtQkFBbUI7bUdBQW5CLG1CQUFtQjs7NEZBQW5CLG1CQUFtQjtrQkFIL0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsY0FBYztpQkFDekI7eUhBS1UsVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBSUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFHSSxPQUFPO3NCQUFoQixNQUFNO2dCQUVHLE9BQU87c0JBQWhCLE1BQU07Z0JBK0RQLFlBQVk7c0JBRFgsWUFBWTt1QkFBQyxZQUFZO2dCQU8xQixZQUFZO3NCQURYLFlBQVk7dUJBQUMsWUFBWTtnQkFPMUIsTUFBTTtzQkFETCxZQUFZO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgUmVuZGVyZXIyLFxuICBTaW1wbGVDaGFuZ2UsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5cbmV4cG9ydCB0eXBlIFBsYWNlbWVudCA9ICd0b3AnIHwgJ3JpZ2h0JyB8ICdib3R0b20nIHwgJ2xlZnQnXG5cbnR5cGUgUG9zaXRpb24gPSB7XG4gIHRvcD86IG51bWJlclxuICByaWdodD86IG51bWJlclxuICBib3R0b20/OiBudW1iZXJcbiAgbGVmdD86IG51bWJlclxufVxuXG4vKipcbiAqIEEgdG9vbHRpcCBpcyBhIHRleHQgbGFiZWwgdGhhdCBhY3RzIGFzIGEgaGVscGVyIHRvIGEgc3BlY2lmaWMgaXRlbS5cbiAqIFJlY29tbWVuZGVkIHRvIHVzZSB2YWx1ZSBgdG9wYCBvciBgYm90dG9tYCB3aXRoIGBwbGFjZW1lbnRgIGZvciByZXNwb25zaXZlIGRlc2lnbi5cbiAqIER5bmFtaWMgcmVzaXppbmcgYW5kIHRvb2x0aXAgcG9zaXRpb24gYXJlIGEgd29yayBpbiBwcm9ncmVzcy5cbiAqIGh0dHBzOi8vZGVzaWdubGlicmFyeS5zZWJncm91cC5jb20vY29tcG9uZW50cy9jb21wb25lbnQtdG9vbHRpcFxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbmd2VG9vbHRpcF0nLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3ZUb29sdGlwRGlyZWN0aXZlXG4gIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3lcbntcbiAgLyoqIFRoZSB0ZXh0IHRoYXQgd2lsbCBiZSBzaG93biBpbiB0aGUgdG9vbHRpcC4gKi9cbiAgQElucHV0KCkgbmd2VG9vbHRpcD86IHN0cmluZ1xuICAvKiogU3BlY2lhbCBwcm9wZXJ0eSB1c2VkIGZvciBzZWxlY3RpbmcgRE9NIGVsZW1lbnRzIGR1cmluZyBhdXRvbWF0ZWQgVUkgdGVzdGluZy4gKi9cbiAgQElucHV0KCkgdGhvb2sgPSAndG9vbHRpcCdcbiAgLyoqIFRoZSBzaWRlIG9mIHRoZSBhbmNob3Igd2hpY2ggdGhlIHRvb2x0aXAgd2lsbCBiZSByZW5kZXJlZC5cbiAgICogUmVjb21tZW5kZWQgYHRvcGAgYW5kIGBib3R0b21gIGZvciByZXNwb25zaXZlIGRlc2lnbnMgYXMgdGhlc2UgYXJlIG1vcmUgc3RhYmxlLlxuICAgKi9cbiAgQElucHV0KCkgcGxhY2VtZW50OiBQbGFjZW1lbnQgPSAndG9wJ1xuICAvKiogSW5pdGlhbCBzdGF0ZSBhbmQgc3Vic2VxdWVudCB1cGRhdGVzIG9uIHdldGhlciB0aGUgdG9vbHRpcCBpcyB2aXNpYmxlLiAqL1xuICBASW5wdXQoKSBzaG93biA9IGZhbHNlXG4gIC8qKiBIb3cgZmFyIG9mZiBmcm9tIHRoZSB0ZXh0IHRoZSB0b29sdGlwIHdpbGwgYmUgcmVuZGVyZWQuICovXG4gIEBJbnB1dCgpIG9mZnNldCA9IDEwXG4gIC8qKiBIb3cgZnJlcXVlbnRseSB0aGUgdG9vbHRpcCB3aWxsIGJlIHJlLXJlbmRlcmVkIHdoZW4gdGhlIHBhZ2Ugc2l6ZSBjaGFuZ2VzLiAqL1xuICBASW5wdXQoKSByZXNpemVUaHJvdHRsZSA9IDUwXG4gIC8qKiBOdW1lcmljIG1heC13aWR0aCBmb3IgdG9vbHRpcC4gKi9cbiAgQElucHV0KCkgbWF4V2lkdGggPSAzNDNcblxuICAvKiogRW1pdHMgYSBzaG93IGV2ZW50IHRyaWdnZXJlZCBjaGFuZ2luZyB2aXNpYmlsaXR5IHN0YXRlIG9mIHRoZSB0b29sdGlwLiAqL1xuICBAT3V0cHV0KCkgbmd2U2hvdyA9IG5ldyBFdmVudEVtaXR0ZXI8SFRNTEVsZW1lbnQ+KClcbiAgLyoqIEVtaXRzIGEgaGlkZSBldmVudCB0cmlnZ2VyZWQgY2hhbmdpbmcgdmlzaWJpbGl0eSBzdGF0ZSBvZiB0aGUgdG9vbHRpcC4gKi9cbiAgQE91dHB1dCgpIG5ndkhpZGUgPSBuZXcgRXZlbnRFbWl0dGVyPEhUTUxFbGVtZW50PigpXG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwcm90ZWN0ZWQgdGltZW91dCA9IDBcblxuICAvKiogQGludGVybmFsICovXG4gIHByb3RlY3RlZCBwYXJlbnRFbGVtZW50OiBIVE1MRWxlbWVudFxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHJvdGVjdGVkIGFuY2hvckVsZW1lbnQ6IEhUTUxFbGVtZW50XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwcm90ZWN0ZWQgdG9vbHRpcEVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkXG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwcm90ZWN0ZWQgYXJyb3dFbGVtZW50OiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZFxuXG4gIC8qKiBAaW50ZXJuYWwgQ2hlY2sgaWYgY2hhbmdlcyBzaG91bGQgdHJpZ2dlciBhIHJlLXJlbmRlciAqL1xuICBzdGF0aWMgc2hvdWxkVXBkYXRlKGNoYW5nZTogU2ltcGxlQ2hhbmdlKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGNoYW5nZSAmJlxuICAgICAgIWNoYW5nZS5maXJzdENoYW5nZSAmJlxuICAgICAgY2hhbmdlLnByZXZpb3VzVmFsdWUgIT09IGNoYW5nZS5jdXJyZW50VmFsdWVcbiAgICApXG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFuY2hvckVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICApIHtcbiAgICB0aGlzLmFuY2hvckVsZW1lbnQgPSB0aGlzLmFuY2hvckVsZW1lbnRSZWYubmF0aXZlRWxlbWVudFxuICAgIHRoaXMucGFyZW50RWxlbWVudCA9IGRvY3VtZW50LmJvZHlcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAvLyBTZXQgYSB0aW1lb3V0IHRvIGFsbG93IHZpZXcgdG8gZnVsbHkgcmVuZGVyIGJlZm9yZSBjcmVhdGluZyB0b29sdGlwLlxuICAgIHNldFRpbWVvdXQoKCkgPT4gKHRoaXMuc2hvd24gPyB0aGlzLnNob3codHJ1ZSkgOiB0aGlzLmhpZGUodHJ1ZSkpKVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIE5ndlRvb2x0aXBEaXJlY3RpdmUuc2hvdWxkVXBkYXRlKGNoYW5nZXMubmd2VG9vbHRpcCkgfHxcbiAgICAgIE5ndlRvb2x0aXBEaXJlY3RpdmUuc2hvdWxkVXBkYXRlKGNoYW5nZXMucGxhY2VtZW50KSB8fFxuICAgICAgTmd2VG9vbHRpcERpcmVjdGl2ZS5zaG91bGRVcGRhdGUoY2hhbmdlcy50aG9vaylcbiAgICApIHtcbiAgICAgIHRoaXMuc2hvd24gPyB0aGlzLnNob3codHJ1ZSkgOiB0aGlzLmhpZGUodHJ1ZSlcbiAgICB9XG5cbiAgICBpZiAoTmd2VG9vbHRpcERpcmVjdGl2ZS5zaG91bGRVcGRhdGUoY2hhbmdlcy5zaG93bikpIHtcbiAgICAgIHRoaXMuc2hvd24gPyB0aGlzLnNob3coKSA6IHRoaXMuaGlkZSgpXG4gICAgfVxuXG4gICAgaWYgKE5ndlRvb2x0aXBEaXJlY3RpdmUuc2hvdWxkVXBkYXRlKGNoYW5nZXMub2Zmc2V0KSkge1xuICAgICAgdGhpcy51cGRhdGVQb3NpdGlvbigpXG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5oaWRlKHRydWUpXG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlZW50ZXInKVxuICBvbk1vdXNlRW50ZXIoKSB7XG4gICAgdGhpcy5zaG93KClcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScpXG4gIG9uTW91c2VMZWF2ZSgpIHtcbiAgICB0aGlzLmhpZGUoKVxuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcbiAgcmVzaXplKCkge1xuICAgIGlmICh0aGlzLnRpbWVvdXQpIHJldHVyblxuICAgIHRoaXMudGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMudGltZW91dCA9IDBcbiAgICAgIHRoaXMudXBkYXRlUG9zaXRpb24oKVxuICAgIH0sIHRoaXMucmVzaXplVGhyb3R0bGUpXG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdmlzaWJpbGl0eSBzdGF0ZSBvZiB0aGUgdG9vbHRpcCB0byB0cnVlIGFuZCBjcmVhdGVzIGEgbmV3IHRvb2x0aXAgaWYgaXQgZG9lc24ndCBleGlzdCBvciBgcmVjcmVhdGVgIGlzIHNldC5cbiAgICogQHBhcmFtIHJlY3JlYXRlIGlmIHNldCB0byB0cnVlLCBkZXN0cm95IGFueSBleGlzdGluZyB0b29sdGlwIGFuZCBjcmVhdGUgYSBuZXcgb25lLlxuICAgKi9cbiAgc2hvdyhyZWNyZWF0ZSA9IGZhbHNlKSB7XG4gICAgLy8gUmVxdWlyZSB0b29sdGlwIHRleHQgdG8gY3JlYXRlXG4gICAgaWYgKCF0aGlzLm5ndlRvb2x0aXAgfHwgdGhpcy5uZ3ZUb29sdGlwLmxlbmd0aCA9PT0gMCkgcmV0dXJuXG5cbiAgICBpZiAocmVjcmVhdGUgfHwgIXRoaXMudG9vbHRpcEVsZW1lbnQpIHtcbiAgICAgIHRoaXMuaGlkZSh0cnVlKVxuICAgICAgdGhpcy5jcmVhdGUodGhpcy5uZ3ZUb29sdGlwKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMucGFyZW50RWxlbWVudCwgdGhpcy50b29sdGlwRWxlbWVudClcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZVBvc2l0aW9uKClcbiAgICB0aGlzLnNob3duID0gdHJ1ZVxuICAgIHRoaXMubmd2U2hvdy5lbWl0KHRoaXMudG9vbHRpcEVsZW1lbnQpXG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdmlzaWJpbGl0eSBzdGF0ZSBvZiB0aGUgdG9vbHRpcCB0byBmYWxzZSBhbmQgZGVzdHJveXMgYW4gZXhpc3RpbmcgdG9vbHRpcCBpZiBgZGVzdHJveWAgaXMgc2V0LlxuICAgKiBAcGFyYW0gZGVzdHJveSBpZiBzZXQgdG8gdHJ1ZSwgZGVzdHJveSBhbnkgZXhpc3RpbmcgdG9vbHRpcC5cbiAgICovXG4gIGhpZGUoZGVzdHJveSA9IGZhbHNlKSB7XG4gICAgaWYgKCF0aGlzLnRvb2x0aXBFbGVtZW50KSByZXR1cm5cbiAgICBpZiAodGhpcy5wYXJlbnRFbGVtZW50LmNvbnRhaW5zKHRoaXMudG9vbHRpcEVsZW1lbnQpKVxuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZCh0aGlzLnBhcmVudEVsZW1lbnQsIHRoaXMudG9vbHRpcEVsZW1lbnQpXG4gICAgaWYgKGRlc3Ryb3kpIHRoaXMuZGVzdHJveSgpXG4gICAgdGhpcy5zaG93biA9IGZhbHNlXG4gICAgdGhpcy5uZ3ZIaWRlLmVtaXQodGhpcy50b29sdGlwRWxlbWVudClcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogQ3JlYXRlcyBhIG5ldyB0b29sdGlwIHdpdGggdGhlIHNldCBwbGFjZW1lbnQgYW5kIGEgZ2l2ZW4gdGV4dCBhcyBpdHMgYm9keS5cbiAgICogQHBhcmFtIHRleHQgdGhlIHN0cmluZyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHRvb2x0aXAgYm9keS5cbiAgICovXG4gIGNyZWF0ZSh0ZXh0OiBzdHJpbmcpIHtcbiAgICB0aGlzLnRvb2x0aXBFbGVtZW50ID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdkaXYnKVxuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy50b29sdGlwRWxlbWVudCwgJ2dkcy10b29sdGlwJylcbiAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLnRvb2x0aXBFbGVtZW50LCAnZGF0YS10aG9vaycsIHRoaXMudGhvb2spXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRvb2x0aXBFbGVtZW50LCAncG9zaXRpb24nLCAnYWJzb2x1dGUnKVxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy50b29sdGlwRWxlbWVudCwgJ3otaW5kZXgnLCAnMTA0MCcpXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRvb2x0aXBFbGVtZW50LCAnYm9yZGVyLXJhZGl1cycsICcuMjVyZW0nKVxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy50b29sdGlwRWxlbWVudCwgJ3BhZGRpbmcnLCAnLjVyZW0gMXJlbScpXG4gICAgY29uc3QgcmVsYXRpdmVNYXhXaWR0aCA9IHRoaXMucHhUb1JlbSh0aGlzLm1heFdpZHRoKVxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy50b29sdGlwRWxlbWVudCwgJ21heC13aWR0aCcsIHJlbGF0aXZlTWF4V2lkdGgpXG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChcbiAgICAgIHRoaXMudG9vbHRpcEVsZW1lbnQsXG4gICAgICB0aGlzLnJlbmRlcmVyLmNyZWF0ZVRleHQodGV4dCksXG4gICAgKVxuXG4gICAgLy8gYWRkIHRvb2x0aXAgdG8gRE9NXG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLnBhcmVudEVsZW1lbnQsIHRoaXMudG9vbHRpcEVsZW1lbnQpXG5cbiAgICB0aGlzLmFycm93RWxlbWVudCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnZGl2JylcbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKFxuICAgICAgdGhpcy5hcnJvd0VsZW1lbnQsXG4gICAgICBgZ2RzLXRvb2x0aXBfX2Fycm93LSR7dGhpcy5wbGFjZW1lbnR9YCxcbiAgICApXG5cbiAgICAvLyBhZGQgYXJyb3cgdG8gdG9vbHRpcCBlbGVtZW50XG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLnRvb2x0aXBFbGVtZW50LCB0aGlzLmFycm93RWxlbWVudClcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogRGVzdHJveXMgdGhlIGN1cnJlbnQgdG9vbHRpcCBieSB1bi1zZXR0aW5nIHZhcmlhYmxlcywgc2hvdWxkIG9ubHkgYmUgdXNlZCBhZnRlciBkZXRhY2hpbmcgZWxlbWVudHMgZnJvbSB0aGUgRE9NLlxuICAgKi9cbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLnRvb2x0aXBFbGVtZW50ID0gdW5kZWZpbmVkXG4gICAgdGhpcy5hcnJvd0VsZW1lbnQgPSB1bmRlZmluZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogUmVjYWxjdWxhdGVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgdG9vbHRpcC5cbiAgICovXG4gIHVwZGF0ZVBvc2l0aW9uKCkge1xuICAgIGlmICghdGhpcy50b29sdGlwRWxlbWVudCB8fCAhdGhpcy5hcnJvd0VsZW1lbnQpIHJldHVyblxuICAgIGNvbnN0IHNjcm9sbFBvcyA9XG4gICAgICB3aW5kb3cucGFnZVlPZmZzZXQgfHxcbiAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgfHxcbiAgICAgIHRoaXMucGFyZW50RWxlbWVudC5zY3JvbGxUb3AgfHxcbiAgICAgIDBcbiAgICBjb25zdCBhbmNob3JSZWN0ID0gdGhpcy5hbmNob3JFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgY29uc3QgdG9vbHRpcFJlY3QgPSB0aGlzLnRvb2x0aXBFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgY29uc3QgYXJyb3dSZWN0ID0gdGhpcy5hcnJvd0VsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcblxuICAgIHN3aXRjaCAodGhpcy5wbGFjZW1lbnQpIHtcbiAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgIHRoaXMuYWxpZ25WZXJ0aWNhbChcbiAgICAgICAgICB0cnVlLFxuICAgICAgICAgIHNjcm9sbFBvcyxcbiAgICAgICAgICBhbmNob3JSZWN0LFxuICAgICAgICAgIHRvb2x0aXBSZWN0LndpZHRoLFxuICAgICAgICAgIHRvb2x0aXBSZWN0LmhlaWdodCxcbiAgICAgICAgICBhcnJvd1JlY3Qud2lkdGgsXG4gICAgICAgIClcbiAgICAgICAgYnJlYWtcblxuICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgdGhpcy5hbGlnblZlcnRpY2FsKFxuICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgIHNjcm9sbFBvcyxcbiAgICAgICAgICBhbmNob3JSZWN0LFxuICAgICAgICAgIHRvb2x0aXBSZWN0LndpZHRoLFxuICAgICAgICAgIHRvb2x0aXBSZWN0LmhlaWdodCxcbiAgICAgICAgICBhcnJvd1JlY3Qud2lkdGgsXG4gICAgICAgIClcbiAgICAgICAgYnJlYWtcblxuICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgIHRoaXMuYWxpZ25Ib3Jpem9udGFsKHRydWUsIHNjcm9sbFBvcywgYW5jaG9yUmVjdCwgdG9vbHRpcFJlY3QuaGVpZ2h0KVxuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgIHRoaXMuYWxpZ25Ib3Jpem9udGFsKGZhbHNlLCBzY3JvbGxQb3MsIGFuY2hvclJlY3QsIHRvb2x0aXBSZWN0LmhlaWdodClcbiAgICAgICAgYnJlYWtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBDYWxjdWxhdGVzIGFuZCBzZXQgdGhlIHBvc2l0aW9uIG9mIHRoZSB0b29sdGlwIHdoZW4gdGhlIHBsYWNlbWVudCBpcyBgdG9wYCBvciBgYm90dG9tYC5cbiAgICovXG4gIGFsaWduVmVydGljYWwoXG4gICAgYWJvdmU6IGJvb2xlYW4sXG4gICAgc2Nyb2xsUG9zOiBudW1iZXIsXG4gICAgYW5jaG9yOiBET01SZWN0LFxuICAgIHRvb2x0aXBXaWR0aDogbnVtYmVyLFxuICAgIHRvb2x0aXBIZWlnaHQ6IG51bWJlcixcbiAgICBhcnJvd1dpZHRoOiBudW1iZXIsXG4gICkge1xuICAgIGNvbnN0IHdpZHRoID0gdGhpcy5wYXJlbnRFbGVtZW50LmNsaWVudFdpZHRoXG4gICAgY29uc3QgYW5jaG9yTWlkWCA9IGFuY2hvci5sZWZ0ICsgYW5jaG9yLndpZHRoIC8gMlxuICAgIGNvbnN0IHRvb2x0aXA6IFBvc2l0aW9uID0ge31cbiAgICBjb25zdCBhcnJvdzogUG9zaXRpb24gPSB7fVxuXG4gICAgaWYgKGFib3ZlKVxuICAgICAgdG9vbHRpcC50b3AgPSBhbmNob3IudG9wIC0gdG9vbHRpcEhlaWdodCAtIHRoaXMub2Zmc2V0ICsgc2Nyb2xsUG9zXG4gICAgZWxzZSB0b29sdGlwLnRvcCA9IGFuY2hvci5ib3R0b20gKyB0aGlzLm9mZnNldCArIHNjcm9sbFBvc1xuXG4gICAgaWYgKGFuY2hvck1pZFggPCB3aWR0aCAvIDIpIHtcbiAgICAgIHRvb2x0aXAubGVmdCA9IE1hdGgubWF4KDAsIGFuY2hvck1pZFggLSB0b29sdGlwV2lkdGggLyAyKVxuICAgICAgYXJyb3cubGVmdCA9IGFuY2hvck1pZFggLSB0b29sdGlwLmxlZnRcbiAgICB9IGVsc2Uge1xuICAgICAgdG9vbHRpcC5yaWdodCA9IE1hdGgubWF4KDAsIHdpZHRoIC0gKGFuY2hvck1pZFggKyB0b29sdGlwV2lkdGggLyAyKSlcbiAgICAgIGFycm93LnJpZ2h0ID0gd2lkdGggLSBhbmNob3JNaWRYIC0gdG9vbHRpcC5yaWdodCAtIGFycm93V2lkdGhcbiAgICB9XG5cbiAgICB0aGlzLnNldFN0eWxlKHRvb2x0aXAsIGFycm93KVxuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBDYWxjdWxhdGVzIGFuZCBzZXQgdGhlIHBvc2l0aW9uIG9mIHRoZSB0b29sdGlwIHdoZW4gdGhlIHBsYWNlbWVudCBpcyBgbGVmdGAgb3IgYHJpZ2h0YC5cbiAgICovXG4gIGFsaWduSG9yaXpvbnRhbChcbiAgICBiZWZvcmU6IGJvb2xlYW4sXG4gICAgc2Nyb2xsUG9zOiBudW1iZXIsXG4gICAgYW5jaG9yOiBET01SZWN0LFxuICAgIHRvb2x0aXBIZWlnaHQ6IG51bWJlcixcbiAgKSB7XG4gICAgY29uc3Qgd2lkdGggPSB0aGlzLnBhcmVudEVsZW1lbnQuY2xpZW50V2lkdGhcbiAgICBjb25zdCB0b3AgPSBhbmNob3IudG9wICsgKGFuY2hvci5oZWlnaHQgLSB0b29sdGlwSGVpZ2h0KSAvIDIgKyBzY3JvbGxQb3NcbiAgICBjb25zdCB0b29sdGlwOiBQb3NpdGlvbiA9IHsgdG9wIH1cbiAgICBjb25zdCBhcnJvdzogUG9zaXRpb24gPSB7IHRvcDogdG9vbHRpcEhlaWdodCAvIDIgfVxuXG4gICAgaWYgKGJlZm9yZSkgdG9vbHRpcC5yaWdodCA9IHdpZHRoIC0gYW5jaG9yLmxlZnQgKyB0aGlzLm9mZnNldFxuICAgIGVsc2UgdG9vbHRpcC5sZWZ0ID0gYW5jaG9yLnJpZ2h0ICsgdGhpcy5vZmZzZXRcblxuICAgIHRoaXMuc2V0U3R5bGUodG9vbHRpcCwgYXJyb3cpXG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIFVwZGF0ZXMgdGhlIENTUyBwcm9wZXJ0aWVzIGZvciB0aGUgdG9vbHRpcCBwb3NpdGlvbi5cbiAgICovXG4gIHNldFN0eWxlKHRvb2x0aXA6IFBvc2l0aW9uLCBhcnJvdzogUG9zaXRpb24pIHtcbiAgICAvLyBUb29sdGlwXG4gICAgT2JqZWN0LmVudHJpZXModG9vbHRpcCkuZm9yRWFjaCgoW3Byb3AsIHZhbHVlXSkgPT4ge1xuICAgICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLnB4VG9SZW0odmFsdWUpXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudG9vbHRpcEVsZW1lbnQsIHByb3AsIHBvc2l0aW9uKVxuICAgIH0pXG5cbiAgICAvLyBBcnJvd1xuICAgIE9iamVjdC5lbnRyaWVzKGFycm93KS5mb3JFYWNoKChbcHJvcCwgdmFsdWVdKSA9PiB7XG4gICAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMucHhUb1JlbSh2YWx1ZSlcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5hcnJvd0VsZW1lbnQsIHByb3AsIHBvc2l0aW9uKVxuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIHB4VG9SZW0odmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgZm9udFNpemVQeCA9IHdpbmRvd1xuICAgICAgPy5nZXRDb21wdXRlZFN0eWxlKHRoaXMucGFyZW50RWxlbWVudClcbiAgICAgID8uZ2V0UHJvcGVydHlWYWx1ZSgnZm9udC1zaXplJylcbiAgICBjb25zdCBmb250U2l6ZU51bWJlck1hdGNoID0gZm9udFNpemVQeD8ubWF0Y2goL1xcZHsxLH0vKVxuICAgIGNvbnN0IGZvbnRTaXplID0gZm9udFNpemVOdW1iZXJNYXRjaCA/ICtmb250U2l6ZU51bWJlck1hdGNoWzBdIDogMTZcbiAgICBjb25zdCByZW1WYWx1ZSA9IHZhbHVlIC8gZm9udFNpemVcbiAgICByZXR1cm4gYCR7cmVtVmFsdWV9cmVtYFxuICB9XG59XG4iXX0=
@@ -0,0 +1,18 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { NgvI18nModule } from '@sebgroup/green-angular/src/v-angular/i18n';
3
+ import { NgvTooltipDirective } from './tooltip.directive';
4
+ import * as i0 from "@angular/core";
5
+ export class NgvTooltipModule {
6
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvTooltipModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: NgvTooltipModule, declarations: [NgvTooltipDirective], imports: [NgvI18nModule], exports: [NgvTooltipDirective] }); }
8
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvTooltipModule, imports: [NgvI18nModule] }); }
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvTooltipModule, decorators: [{
11
+ type: NgModule,
12
+ args: [{
13
+ declarations: [NgvTooltipDirective],
14
+ exports: [NgvTooltipDirective],
15
+ imports: [NgvI18nModule],
16
+ }]
17
+ }] });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL3YtYW5ndWxhci90b29sdGlwL3Rvb2x0aXAubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDeEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRDQUE0QyxDQUFBO0FBQzFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFBOztBQU96RCxNQUFNLE9BQU8sZ0JBQWdCOytHQUFoQixnQkFBZ0I7Z0hBQWhCLGdCQUFnQixpQkFKWixtQkFBbUIsYUFFeEIsYUFBYSxhQURiLG1CQUFtQjtnSEFHbEIsZ0JBQWdCLFlBRmpCLGFBQWE7OzRGQUVaLGdCQUFnQjtrQkFMNUIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztvQkFDbkMsT0FBTyxFQUFFLENBQUMsbUJBQW1CLENBQUM7b0JBQzlCLE9BQU8sRUFBRSxDQUFDLGFBQWEsQ0FBQztpQkFDekIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBOZ3ZJMThuTW9kdWxlIH0gZnJvbSAnQHNlYmdyb3VwL2dyZWVuLWFuZ3VsYXIvc3JjL3YtYW5ndWxhci9pMThuJ1xuaW1wb3J0IHsgTmd2VG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJy4vdG9vbHRpcC5kaXJlY3RpdmUnXG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW05ndlRvb2x0aXBEaXJlY3RpdmVdLFxuICBleHBvcnRzOiBbTmd2VG9vbHRpcERpcmVjdGl2ZV0sXG4gIGltcG9ydHM6IFtOZ3ZJMThuTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd2VG9vbHRpcE1vZHVsZSB7fVxuIl19
@@ -0,0 +1,76 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { NgModule } from '@angular/core';
3
+ import { NgvBaseControlValueAccessorModule } from './base-control-value-accessor';
4
+ import { NgvBreadcrumbsModule } from './breadcrumbs';
5
+ import { NgvButtonModule } from './button';
6
+ import { NgvCardModule } from './card';
7
+ import { NgvCheckboxModule } from './checkbox';
8
+ import { NgvDropdownModule } from './dropdown';
9
+ import { NgvI18nModule } from './i18n';
10
+ import { NgvInfoCircleModule } from './info-circle';
11
+ import { NgvInputModule } from './input';
12
+ import { NgvInputMaskModule } from './input-mask';
13
+ import { NgvModalModule } from './modal';
14
+ import { NgvRadioModule } from './radio';
15
+ import { NgvTextareaModule } from './textarea';
16
+ import { NgvTooltipModule } from './tooltip';
17
+ import { NgvTypeaheadModule } from './dropdown/typeahead/typeahead.module';
18
+ import * as i0 from "@angular/core";
19
+ export class NggvModule {
20
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NggvModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
21
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: NggvModule, imports: [CommonModule], exports: [NgvBaseControlValueAccessorModule,
22
+ NgvBreadcrumbsModule,
23
+ NgvButtonModule,
24
+ NgvCardModule,
25
+ NgvCheckboxModule,
26
+ NgvDropdownModule,
27
+ NgvI18nModule,
28
+ NgvInfoCircleModule,
29
+ NgvInputModule,
30
+ NgvInputMaskModule,
31
+ NgvModalModule,
32
+ NgvRadioModule,
33
+ NgvTextareaModule,
34
+ NgvTooltipModule,
35
+ NgvTypeaheadModule] }); }
36
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NggvModule, imports: [CommonModule, NgvBaseControlValueAccessorModule,
37
+ NgvBreadcrumbsModule,
38
+ NgvButtonModule,
39
+ NgvCardModule,
40
+ NgvCheckboxModule,
41
+ NgvDropdownModule,
42
+ NgvI18nModule,
43
+ NgvInfoCircleModule,
44
+ NgvInputModule,
45
+ NgvInputMaskModule,
46
+ NgvModalModule,
47
+ NgvRadioModule,
48
+ NgvTextareaModule,
49
+ NgvTooltipModule,
50
+ NgvTypeaheadModule] }); }
51
+ }
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NggvModule, decorators: [{
53
+ type: NgModule,
54
+ args: [{
55
+ declarations: [],
56
+ imports: [CommonModule],
57
+ exports: [
58
+ NgvBaseControlValueAccessorModule,
59
+ NgvBreadcrumbsModule,
60
+ NgvButtonModule,
61
+ NgvCardModule,
62
+ NgvCheckboxModule,
63
+ NgvDropdownModule,
64
+ NgvI18nModule,
65
+ NgvInfoCircleModule,
66
+ NgvInputModule,
67
+ NgvInputMaskModule,
68
+ NgvModalModule,
69
+ NgvRadioModule,
70
+ NgvTextareaModule,
71
+ NgvTooltipModule,
72
+ NgvTypeaheadModule,
73
+ ],
74
+ }]
75
+ }] });
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidi1hbmd1bGFyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvdi1hbmd1bGFyL3YtYW5ndWxhci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzlDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDeEMsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sK0JBQStCLENBQUE7QUFDakYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3BELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDMUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUN0QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDOUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFDdEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFDeEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ2pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFDeEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQzVDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFBOztBQXVCMUUsTUFBTSxPQUFPLFVBQVU7K0dBQVYsVUFBVTtnSEFBVixVQUFVLFlBbkJYLFlBQVksYUFFcEIsaUNBQWlDO1lBQ2pDLG9CQUFvQjtZQUNwQixlQUFlO1lBQ2YsYUFBYTtZQUNiLGlCQUFpQjtZQUNqQixpQkFBaUI7WUFDakIsYUFBYTtZQUNiLG1CQUFtQjtZQUNuQixjQUFjO1lBQ2Qsa0JBQWtCO1lBQ2xCLGNBQWM7WUFDZCxjQUFjO1lBQ2QsaUJBQWlCO1lBQ2pCLGdCQUFnQjtZQUNoQixrQkFBa0I7Z0hBR1QsVUFBVSxZQW5CWCxZQUFZLEVBRXBCLGlDQUFpQztZQUNqQyxvQkFBb0I7WUFDcEIsZUFBZTtZQUNmLGFBQWE7WUFDYixpQkFBaUI7WUFDakIsaUJBQWlCO1lBQ2pCLGFBQWE7WUFDYixtQkFBbUI7WUFDbkIsY0FBYztZQUNkLGtCQUFrQjtZQUNsQixjQUFjO1lBQ2QsY0FBYztZQUNkLGlCQUFpQjtZQUNqQixnQkFBZ0I7WUFDaEIsa0JBQWtCOzs0RkFHVCxVQUFVO2tCQXJCdEIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsRUFBRTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixPQUFPLEVBQUU7d0JBQ1AsaUNBQWlDO3dCQUNqQyxvQkFBb0I7d0JBQ3BCLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixpQkFBaUI7d0JBQ2pCLGlCQUFpQjt3QkFDakIsYUFBYTt3QkFDYixtQkFBbUI7d0JBQ25CLGNBQWM7d0JBQ2Qsa0JBQWtCO3dCQUNsQixjQUFjO3dCQUNkLGNBQWM7d0JBQ2QsaUJBQWlCO3dCQUNqQixnQkFBZ0I7d0JBQ2hCLGtCQUFrQjtxQkFDbkI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBOZ3ZCYXNlQ29udHJvbFZhbHVlQWNjZXNzb3JNb2R1bGUgfSBmcm9tICcuL2Jhc2UtY29udHJvbC12YWx1ZS1hY2Nlc3NvcidcbmltcG9ydCB7IE5ndkJyZWFkY3J1bWJzTW9kdWxlIH0gZnJvbSAnLi9icmVhZGNydW1icydcbmltcG9ydCB7IE5ndkJ1dHRvbk1vZHVsZSB9IGZyb20gJy4vYnV0dG9uJ1xuaW1wb3J0IHsgTmd2Q2FyZE1vZHVsZSB9IGZyb20gJy4vY2FyZCdcbmltcG9ydCB7IE5ndkNoZWNrYm94TW9kdWxlIH0gZnJvbSAnLi9jaGVja2JveCdcbmltcG9ydCB7IE5ndkRyb3Bkb3duTW9kdWxlIH0gZnJvbSAnLi9kcm9wZG93bidcbmltcG9ydCB7IE5ndkkxOG5Nb2R1bGUgfSBmcm9tICcuL2kxOG4nXG5pbXBvcnQgeyBOZ3ZJbmZvQ2lyY2xlTW9kdWxlIH0gZnJvbSAnLi9pbmZvLWNpcmNsZSdcbmltcG9ydCB7IE5ndklucHV0TW9kdWxlIH0gZnJvbSAnLi9pbnB1dCdcbmltcG9ydCB7IE5ndklucHV0TWFza01vZHVsZSB9IGZyb20gJy4vaW5wdXQtbWFzaydcbmltcG9ydCB7IE5ndk1vZGFsTW9kdWxlIH0gZnJvbSAnLi9tb2RhbCdcbmltcG9ydCB7IE5ndlJhZGlvTW9kdWxlIH0gZnJvbSAnLi9yYWRpbydcbmltcG9ydCB7IE5ndlRleHRhcmVhTW9kdWxlIH0gZnJvbSAnLi90ZXh0YXJlYSdcbmltcG9ydCB7IE5ndlRvb2x0aXBNb2R1bGUgfSBmcm9tICcuL3Rvb2x0aXAnXG5pbXBvcnQgeyBOZ3ZUeXBlYWhlYWRNb2R1bGUgfSBmcm9tICcuL2Ryb3Bkb3duL3R5cGVhaGVhZC90eXBlYWhlYWQubW9kdWxlJ1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgZXhwb3J0czogW1xuICAgIE5ndkJhc2VDb250cm9sVmFsdWVBY2Nlc3Nvck1vZHVsZSxcbiAgICBOZ3ZCcmVhZGNydW1ic01vZHVsZSxcbiAgICBOZ3ZCdXR0b25Nb2R1bGUsXG4gICAgTmd2Q2FyZE1vZHVsZSxcbiAgICBOZ3ZDaGVja2JveE1vZHVsZSxcbiAgICBOZ3ZEcm9wZG93bk1vZHVsZSxcbiAgICBOZ3ZJMThuTW9kdWxlLFxuICAgIE5ndkluZm9DaXJjbGVNb2R1bGUsXG4gICAgTmd2SW5wdXRNb2R1bGUsXG4gICAgTmd2SW5wdXRNYXNrTW9kdWxlLFxuICAgIE5ndk1vZGFsTW9kdWxlLFxuICAgIE5ndlJhZGlvTW9kdWxlLFxuICAgIE5ndlRleHRhcmVhTW9kdWxlLFxuICAgIE5ndlRvb2x0aXBNb2R1bGUsXG4gICAgTmd2VHlwZWFoZWFkTW9kdWxlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ2d2TW9kdWxlIHt9XG4iXX0=