@jooler/inputs 0.0.58 → 0.0.59

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.
@@ -1,5 +1,6 @@
1
- import { Directive, Input, HostListener } from '@angular/core';
1
+ import { Directive, HostListener, Input } from '@angular/core';
2
2
  import { NgModel } from '@angular/forms';
3
+ import { PrimaryColors } from './primary-colors';
3
4
  import { ValidationError } from './services/validation-message.service';
4
5
  import * as i0 from "@angular/core";
5
6
  import * as i1 from "@angular/forms";
@@ -8,10 +9,11 @@ export class FormControlValidationMsgDirectiveForInput {
8
9
  control;
9
10
  errorMessage;
10
11
  errorNgSelectMessage;
11
- showBoxError = true;
12
+ showDot;
12
13
  errorDivId;
14
+ showBoxError = true;
13
15
  beforeBegin = false;
14
- afterEnd = false;
16
+ afterEnd = true;
15
17
  validationError = ValidationError;
16
18
  statusChangeSubscription;
17
19
  constructor(elRef, control) {
@@ -19,26 +21,27 @@ export class FormControlValidationMsgDirectiveForInput {
19
21
  this.control = control;
20
22
  }
21
23
  ngOnInit() {
22
- this.statusChangeSubscription = this.control.statusChanges.subscribe((status) => {
23
- if (status == 'INVALID') {
24
+ if (!this.errorDivId) {
25
+ this.errorDivId = this.control.name;
26
+ }
27
+ this.statusChangeSubscription = this.control.statusChanges.subscribe(status => {
28
+ // We don't want to show errors on status changed when the user never touched the input to begin with. So we add this.control.touched.
29
+ if (status == 'INVALID' && this.control.touched) {
24
30
  this.showError();
25
31
  }
26
32
  else {
27
33
  this.removeError();
28
34
  }
29
35
  });
30
- this.control.valueChanges.subscribe({
31
- next: (response) => {
32
- if (this.control.errors) {
33
- this.showError();
34
- }
35
- }
36
- });
37
36
  }
38
37
  ngOnDestroy() {
39
38
  this.statusChangeSubscription.unsubscribe();
40
39
  }
41
- handleBlurEvent(event) {
40
+ handleBlurEvent() {
41
+ if (this.control.value === '' ||
42
+ (this.control.value && !String(this.control.value).trim().length)) {
43
+ this.control.control.setValue(null, { emitEvent: false });
44
+ }
42
45
  if (this.control.errors) {
43
46
  this.showError();
44
47
  }
@@ -49,81 +52,211 @@ export class FormControlValidationMsgDirectiveForInput {
49
52
  showError() {
50
53
  this.removeError();
51
54
  const valErrors = this.control.errors;
55
+ if (this.control.errors.length > 1 || Object.entries(this.control.errors).length > 1) {
56
+ this.showDot = true;
57
+ }
58
+ else {
59
+ this.showDot = false;
60
+ }
52
61
  const keys = Object.keys(valErrors);
53
62
  for (let i = 0; i < keys.length; i++) {
54
63
  switch (keys[i]) {
55
- case 'minlength': {
56
- let message = this.validationError.getRelevantError(keys[i], valErrors.minlength.requiredLength);
57
- this.errorMessage += ` ${this.errorMessage ? "<br>" : ""}${"\u25CF " + message}`;
58
- break;
59
- }
60
64
  case 'required': {
61
65
  let message = this.validationError.getRelevantError(keys[i], valErrors);
62
- this.errorMessage += ` ${this.errorMessage ? "<br>" : ""}${"\u25CF " + message}`;
63
- this.control.control.setErrors({ 'required': true, 'message': message }, { emitEvent: false });
66
+ this.errorMessage += ` ${this.errorMessage ? '<br>' : ''}${this.showDot ? '\u25CF ' + message : message}`;
67
+ this.control.control.setErrors({ required: true, message: message }, { emitEvent: false });
68
+ break;
69
+ }
70
+ case 'minlength': {
71
+ let message = this.validationError.getRelevantError(keys[i], valErrors.minlength.requiredLength);
72
+ this.errorMessage += ` ${this.errorMessage ? '<br>' : ''}${this.showDot ? '\u25CF ' + message : message}`;
64
73
  break;
65
74
  }
66
75
  case 'maxlength': {
67
76
  let message = this.validationError.getRelevantError(keys[i], valErrors.maxlength.requiredLength);
68
- this.errorMessage += ` ${this.errorMessage ? "<br>" : ""}${"\u25CF " + message}`;
69
- this.control.control.setErrors({ 'maxlength': { 'requiredLength': valErrors.maxlength.requiredLength }, 'message': message }, { emitEvent: false });
77
+ this.errorMessage += ` ${this.errorMessage ? '<br>' : ''}${this.showDot ? '\u25CF ' + message : message}`;
78
+ this.control.control.setErrors({ maxlength: { requiredLength: valErrors.maxlength.requiredLength }, message: message }, { emitEvent: false });
70
79
  break;
71
80
  }
72
81
  case 'max': {
73
82
  let message = this.validationError.getRelevantError(keys[i], valErrors.max.max);
74
- this.errorMessage += ` ${this.errorMessage ? "<br>" : ""}${"\u25CF " + message}`;
75
- this.control.control.setErrors({ 'message': message, 'max': { 'max': valErrors.max.max } }, { emitEvent: false });
83
+ this.errorMessage += ` ${this.errorMessage ? '<br>' : ''}${this.showDot ? '\u25CF ' + message : message}`;
84
+ this.control.control.setErrors({ message: message, max: { max: valErrors.max.max } }, { emitEvent: false });
76
85
  break;
77
86
  }
78
87
  case 'min': {
79
88
  let message = this.validationError.getRelevantError(keys[i], valErrors.min.min);
80
- this.errorMessage += ` ${this.errorMessage ? "<br>" : ""}${"\u25CF " + message}`;
89
+ this.errorMessage += ` ${this.errorMessage ? '<br>' : ''}${this.showDot ? '\u25CF ' + message : message}`;
90
+ this.control.control.setErrors({ message: message, min: { min: valErrors.min.min } }, { emitEvent: false });
91
+ break;
92
+ }
93
+ case 'invalidMaxBudgetRange': {
94
+ let message = this.validationError.getRelevantError(keys[i], valErrors.lowScoreReq);
95
+ this.errorMessage += ` ${this.errorMessage ? '<br>' : ''}${'\u25CF ' + message}`;
96
+ break;
97
+ }
98
+ case 'invalidMinBudgetRange': {
99
+ let message = this.validationError.getRelevantError(keys[i], valErrors.highScoreReq);
100
+ this.errorMessage += ` ${this.errorMessage ? '<br>' : ''}${'\u25CF ' + message}`;
81
101
  break;
82
102
  }
83
103
  case 'pattern': {
84
104
  let message = this.validationError.getRelevantError(keys[i], valErrors.pattern.requiredPattern);
85
- this.errorMessage += ` ${this.errorMessage ? "<br>" : ""}${"\u25CF " + message}`;
105
+ this.errorMessage += ` ${this.errorMessage ? '<br>' : ''}${this.showDot ? '\u25CF ' + message : message}`;
86
106
  break;
87
107
  }
88
108
  case 'email': {
89
109
  let message = this.validationError.getRelevantError(keys[i], valErrors);
90
- this.errorMessage += ` ${this.errorMessage ? "<br>" : ""}${"\u25CF " + message}`;
110
+ this.errorMessage += ` ${this.errorMessage ? '<br>' : ''}${this.showDot ? '\u25CF ' + message : message}`;
91
111
  break;
92
112
  }
93
113
  case 'invalidIntegerNumber': {
94
114
  let message = this.validationError.getRelevantError(keys[i], valErrors);
95
- this.errorMessage += ` ${this.errorMessage ? "<br>" : ""}${"\u25CF " + message}`;
115
+ this.errorMessage += ` ${this.errorMessage ? '<br>' : ''}${this.showDot ? '\u25CF ' + message : message}`;
116
+ this.control.control.setErrors({ invalidIntegerNumber: true, message: message }, { emitEvent: false });
96
117
  break;
97
118
  }
98
119
  case 'invalidPositiveInteger': {
99
120
  let message = this.validationError.getRelevantError(keys[i], valErrors);
100
- this.errorMessage += ` ${this.errorMessage ? "<br>" : ""}${"\u25CF " + message}`;
101
- this.control.control.setErrors({ 'invalidPositiveInteger': true, 'message': message }, { emitEvent: false });
121
+ this.errorMessage += ` ${this.errorMessage ? '<br>' : ''}${this.showDot ? '\u25CF ' + message : message}`;
122
+ this.control.control.setErrors({ invalidPositiveInteger: true, message: message }, { emitEvent: false });
123
+ break;
124
+ }
125
+ case 'invalidPositiveDecimal': {
126
+ let message = this.validationError.getRelevantError(keys[i], valErrors);
127
+ this.errorMessage += ` ${this.errorMessage ? '<br>' : ''}${this.showDot ? '\u25CF ' + message : message}`;
128
+ this.control.control.setErrors({ invalidPositiveDecimal: true, message: message }, { emitEvent: false });
129
+ break;
130
+ }
131
+ case 'nonPositiveNumber': {
132
+ let message = this.validationError.getRelevantError(keys[i], valErrors);
133
+ this.errorMessage += ` ${this.errorMessage ? '<br>' : ''}${this.showDot ? '\u25CF ' + message : message}`;
134
+ this.control.control.setErrors({ nonPositiveNumber: true, message: message }, { emitEvent: false });
135
+ break;
136
+ }
137
+ case 'nonStrictlyPositiveNumber': {
138
+ let message = this.validationError.getRelevantError(keys[i], valErrors);
139
+ this.errorMessage += ` ${this.errorMessage ? '<br>' : ''}${this.showDot ? '\u25CF ' + message : message}`;
140
+ this.control.control.setErrors({ nonStrictlyPositiveNumber: true, message: message }, { emitEvent: false });
141
+ break;
142
+ }
143
+ case 'notUnique': {
144
+ let message = this.validationError.getRelevantError(keys[i], valErrors);
145
+ this.errorMessage += ` ${this.errorMessage ? '<br>' : ''}${this.showDot ? '\u25CF ' + message : message}`;
146
+ break;
147
+ }
148
+ case 'hexColorInvalid': {
149
+ let message = this.validationError.getRelevantError(keys[i], valErrors);
150
+ this.errorMessage += ` ${this.errorMessage ? '<br>' : ''}${this.showDot ? '\u25CF ' + message : message}`;
151
+ break;
152
+ }
153
+ case 'greaterThanAndLessThanOrEqualValue': {
154
+ let message = this.validationError.getRelevantError(keys[i], valErrors);
155
+ this.errorMessage += ` ${this.errorMessage ? '<br>' : ''}${this.showDot ? '\u25CF ' + message : message}`;
156
+ this.control.control.setErrors({
157
+ greaterThanAndLessThanOrEqualValue: {
158
+ min: valErrors.greaterThanAndLessThanOrEqualValue.min,
159
+ max: valErrors.greaterThanAndLessThanOrEqualValue.max,
160
+ },
161
+ message: message,
162
+ }, { emitEvent: false });
163
+ break;
164
+ }
165
+ case 'greaterThanOrEqualAndLessThanValue': {
166
+ let message = this.validationError.getRelevantError(keys[i], valErrors);
167
+ this.errorMessage += ` ${this.errorMessage ? '<br>' : ''}${this.showDot ? '\u25CF ' + message : message}`;
168
+ this.control.control.setErrors({
169
+ greaterThanOrEqualAndLessThanValue: {
170
+ min: valErrors.greaterThanOrEqualAndLessThanValue.min,
171
+ max: valErrors.greaterThanOrEqualAndLessThanValue.max,
172
+ },
173
+ message: message,
174
+ }, { emitEvent: false });
175
+ break;
176
+ }
177
+ case 'greaterThanOrEqualAndLessThanOrEqualValue': {
178
+ let message = this.validationError.getRelevantError(keys[i], valErrors);
179
+ this.errorMessage += ` ${this.errorMessage ? '<br>' : ''}${this.showDot ? '\u25CF ' + message : message}`;
180
+ this.control.control.setErrors({
181
+ greaterThanOrEqualAndLessThanOrEqualValue: {
182
+ min: valErrors.greaterThanOrEqualAndLessThanOrEqualValue.min,
183
+ max: valErrors.greaterThanOrEqualAndLessThanOrEqualValue.max,
184
+ },
185
+ message: message,
186
+ }, { emitEvent: false });
187
+ break;
188
+ }
189
+ case 'invalidUrl': {
190
+ let message = this.validationError.getRelevantError(keys[i], valErrors);
191
+ this.errorMessage += ` ${this.errorMessage ? '<br>' : ''}${this.showDot ? '\u25CF ' + message : message}`;
192
+ break;
193
+ }
194
+ case 'checkboxChecked': {
195
+ let message = this.validationError.getRelevantError(keys[i], valErrors);
196
+ this.errorMessage += ` ${this.errorMessage ? '<br>' : ''}${this.showDot ? '\u25CF ' + message : message}`;
197
+ break;
198
+ }
199
+ case 'customMessage': {
200
+ let message = valErrors.message;
201
+ this.errorMessage += ` ${this.errorMessage ? '<br>' : ''}${this.showDot ? '\u25CF ' + message : message}`;
202
+ break;
203
+ }
204
+ case 'checkboxChecked': {
205
+ let message = this.validationError.getRelevantError(keys[i], valErrors);
206
+ this.errorMessage += ` ${this.errorMessage ? '<br>' : ''}${this.showDot ? '\u25CF ' + message : message}`;
207
+ break;
208
+ }
209
+ case 'maxDecimalPlaces': {
210
+ let message = this.validationError.getRelevantError(keys[i], valErrors);
211
+ this.errorMessage += ` ${this.errorMessage ? '<br>' : ''}${this.showDot ? '\u25CF ' + message : message}`;
212
+ this.control.control.setErrors({ maxDecimalPlaces: valErrors.maxDecimalPlaces, message: message }, { emitEvent: false });
213
+ break;
214
+ }
215
+ case 'maxDigits': {
216
+ let message = this.validationError.getRelevantError(keys[i], valErrors);
217
+ this.errorMessage += ` ${this.errorMessage ? '<br>' : ''}${this.showDot ? '\u25CF ' + message : message}`;
218
+ this.control.control.setErrors({ maxDigits: valErrors.maxDigits, message: message }, { emitEvent: false });
102
219
  break;
103
220
  }
104
221
  }
105
222
  }
106
- if (this.showBoxError) {
107
- const errDiv = '<div style="color:#C34243; width=100%; background-color: #FFDBDB; padding: 1rem; border-radius: .5rem; border: .1rem solid #A80002 ;border-left: .75rem solid #A80002; margin-top:.5rem; font-size: 1.2rem; " id="' + this.errorDivId + '">' + '<h3 style= " font-size: 1.3rem; margin-bottom:.5rem; margin:0; color: #A80002; font-weight: 700; line-height: 1.6rem;">' + 'Please Complete all details' + '</h3>' + this.errorMessage + '</div>';
223
+ if (this.showBoxError && this.errorMessage) {
224
+ const errDiv = `<div style="color:${PrimaryColors.$primaryRedColor};
225
+ box-sizing: border-box;
226
+ width: ${this.elRef.nativeElement.offsetWidth}px;
227
+ background-color: ${PrimaryColors.$primaryLightRedColor};
228
+ padding: .5rem;
229
+ border-radius: .5rem;
230
+ border: .1rem solid ${PrimaryColors.$primaryRedColor};
231
+ border-left: .75rem solid ${PrimaryColors.$primaryRedColor};
232
+ margin-top:.5rem;
233
+ font-size: 1.2rem;
234
+ display: block;" id="${this.errorDivId}">` +
235
+ `<h3 style="font-size: 1.3rem; margin:0 0 .25rem 0; color: ${PrimaryColors.$primaryRedColor}; font-weight: 700; line-height: 1.6rem;">` +
236
+ 'Field contains errors:' +
237
+ '</h3>' +
238
+ this.errorMessage +
239
+ '</div>';
108
240
  if (!this.beforeBegin && !this.afterEnd)
109
241
  this.elRef.nativeElement.parentElement.parentElement.parentElement.parentElement.insertAdjacentHTML('afterend', errDiv);
110
242
  else if (this.beforeBegin)
111
243
  this.elRef.nativeElement.insertAdjacentHTML('beforebegin', errDiv);
112
- else if (this.afterEnd)
244
+ else if (this.afterEnd) {
113
245
  this.elRef.nativeElement.insertAdjacentHTML('afterend', errDiv);
246
+ }
114
247
  else
115
- throw Error("Adjustment not specified ");
248
+ throw Error('Adjustment not specified ');
116
249
  }
117
250
  }
118
251
  removeError() {
119
- this.errorMessage = "";
252
+ this.errorMessage = '';
120
253
  const errorElement = document.getElementById(this.errorDivId);
121
254
  if (errorElement) {
122
255
  errorElement.remove();
123
256
  }
124
257
  }
125
258
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormControlValidationMsgDirectiveForInput, deps: [{ token: i0.ElementRef }, { token: i1.NgControl }], target: i0.ɵɵFactoryTarget.Directive });
126
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: FormControlValidationMsgDirectiveForInput, selector: "[appFormControlValidationMsgForInputs]", inputs: { showBoxError: "showBoxError", errorDivId: "errorDivId", beforeBegin: "beforeBegin", afterEnd: "afterEnd" }, host: { listeners: { "blur": "handleBlurEvent($event)" } }, providers: [NgModel], ngImport: i0 });
259
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: FormControlValidationMsgDirectiveForInput, selector: "[appFormControlValidationMsgForInputs]", inputs: { showBoxError: "showBoxError", beforeBegin: "beforeBegin", afterEnd: "afterEnd" }, host: { listeners: { "blur": "handleBlurEvent()" } }, providers: [NgModel], ngImport: i0 });
127
260
  }
128
261
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormControlValidationMsgDirectiveForInput, decorators: [{
129
262
  type: Directive,
@@ -134,9 +267,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
134
267
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.NgControl }]; }, propDecorators: { showBoxError: [{
135
268
  type: Input,
136
269
  args: ['showBoxError']
137
- }], errorDivId: [{
138
- type: Input,
139
- args: ['errorDivId']
140
270
  }], beforeBegin: [{
141
271
  type: Input,
142
272
  args: ['beforeBegin']
@@ -145,6 +275,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
145
275
  args: ['afterEnd']
146
276
  }], handleBlurEvent: [{
147
277
  type: HostListener,
148
- args: ['blur', ["$event"]]
278
+ args: ['blur']
149
279
  }] } });
150
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWNvbnRyb2wtdmFsaWRhdGlvbi1tc2cuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvaW5wdXRzL3NyYy9saWIvZm9ybWNvbnRyb2wtdmFsaWRhdGlvbi1tc2cuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBdUQsTUFBTSxlQUFlLENBQUM7QUFDcEgsT0FBTyxFQUFhLE9BQU8sRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7OztBQU14RSxNQUFNLE9BQU8seUNBQXlDO0lBVzFDO0lBQ0E7SUFYVCxZQUFZLENBQU07SUFDbkIsb0JBQW9CLENBQU07SUFDSCxZQUFZLEdBQVUsSUFBSSxDQUFDO0lBQzdCLFVBQVUsQ0FBTTtJQUNmLFdBQVcsR0FBWSxLQUFLLENBQUM7SUFDaEMsUUFBUSxHQUFZLEtBQUssQ0FBQztJQUM3QyxlQUFlLEdBQUcsZUFBZSxDQUFDO0lBQ2xDLHdCQUF3QixDQUFlO0lBRXZDLFlBQ1UsS0FBaUIsRUFDakIsT0FBa0I7UUFEbEIsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNqQixZQUFPLEdBQVAsT0FBTyxDQUFXO0lBQ3hCLENBQUM7SUFFTCxRQUFRO1FBQ04sSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FDbEUsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNULElBQUksTUFBTSxJQUFJLFNBQVMsRUFBRTtnQkFDdkIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2FBRWxCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQzthQUNwQjtRQUNILENBQUMsQ0FDRixDQUFBO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMs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QztvQkFDVCxRQUFRLEVBQUUsd0NBQXdDO29CQUNsRCxTQUFTLEVBQUUsQ0FBQyxPQUFPLENBQUM7aUJBQ3JCO3lIQUl3QixZQUFZO3NCQUFsQyxLQUFLO3VCQUFDLGNBQWM7Z0JBQ0EsVUFBVTtzQkFBOUIsS0FBSzt1QkFBQyxZQUFZO2dCQUNHLFdBQVc7c0JBQWhDLEtBQUs7dUJBQUMsYUFBYTtnQkFDRCxRQUFRO3NCQUExQixLQUFLO3VCQUFDLFVBQVU7Z0JBa0NqQixlQUFlO3NCQURkLFlBQVk7dUJBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgSG9zdExpc3RlbmVyLCBFbGVtZW50UmVmLCBPbkluaXQsIE9uRGVzdHJveSwgRXZlbnRFbWl0dGVyLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdDb250cm9sLCBOZ01vZGVsLCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVmFsaWRhdGlvbkVycm9yIH0gZnJvbSAnLi9zZXJ2aWNlcy92YWxpZGF0aW9uLW1lc3NhZ2Uuc2VydmljZSc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1thcHBGb3JtQ29udHJvbFZhbGlkYXRpb25Nc2dGb3JJbnB1dHNdJyxcclxuICBwcm92aWRlcnM6IFtOZ01vZGVsXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEZvcm1Db250cm9sVmFsaWRhdGlvbk1zZ0RpcmVjdGl2ZUZvcklucHV0IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gICBlcnJvck1lc3NhZ2U6IGFueTtcclxuICBlcnJvck5nU2VsZWN0TWVzc2FnZTogYW55O1xyXG4gIEBJbnB1dCgnc2hvd0JveEVycm9yJykgc2hvd0JveEVycm9yOiBib29sZWFuPXRydWU7XHJcbiAgQElucHV0KCdlcnJvckRpdklkJykgZXJyb3JEaXZJZDogYW55O1xyXG4gIEBJbnB1dCgnYmVmb3JlQmVnaW4nKSBiZWZvcmVCZWdpbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgnYWZ0ZXJFbmQnKSBhZnRlckVuZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHZhbGlkYXRpb25FcnJvciA9IFZhbGlkYXRpb25FcnJvcjtcclxuICBzdGF0dXNDaGFuZ2VTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGVsUmVmOiBFbGVtZW50UmVmLFxyXG4gICAgcHJpdmF0ZSBjb250cm9sOiBOZ0NvbnRyb2wsXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnN0YXR1c0NoYW5nZVN1YnNjcmlwdGlvbiA9IHRoaXMuY29udHJvbC5zdGF0dXNDaGFuZ2VzLnN1YnNjcmliZShcclxuICAgICAgKHN0YXR1cykgPT4ge1xyXG4gICAgICAgIGlmIChzdGF0dXMgPT0gJ0lOVkFMSUQnKSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dFcnJvcigpO1xyXG5cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5yZW1vdmVFcnJvcigpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKVxyXG4gICAgdGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5jb250cm9sLmVycm9ycykge1xyXG4gICAgICAgICAgdGhpcy5zaG93RXJyb3IoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN0YXR1c0NoYW5nZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignYmx1cicsIFtcIiRldmVudFwiXSlcclxuICBoYW5kbGVCbHVyRXZlbnQoZXZlbnQpIHtcclxuICAgIGlmICh0aGlzLmNvbnRyb2wuZXJyb3JzKSB7XHJcbiAgICAgIHRoaXMuc2hvd0Vycm9yKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5yZW1vdmVFcnJvcigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgc2hvd0Vycm9yKCkge1xyXG4gICAgdGhpcy5yZW1vdmVFcnJvcigpO1xyXG4gICAgY29uc3QgdmFsRXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JzID0gdGhpcy5jb250cm9sLmVycm9ycztcclxuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh2YWxFcnJvcnMpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIHN3aXRjaCAoa2V5c1tpXSkge1xyXG4gICAgICAgIGNhc2UgJ21pbmxlbmd0aCc6IHtcclxuICAgICAgICAgIGxldCBtZXNzYWdlID0gdGhpcy52YWxpZGF0aW9uRXJyb3IuZ2V0UmVsZXZhbnRFcnJvcihrZXlzW2ldLCB2YWxFcnJvcnMubWlubGVuZ3RoLnJlcXVpcmVkTGVuZ3RoKTtcclxuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlICs9IGAgJHt0aGlzLmVycm9yTWVzc2FnZSA/IFwiPGJyPlwiIDogXCJcIn0ke1wiXFx1MjVDRiBcIiArIG1lc3NhZ2V9YDtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ3JlcXVpcmVkJzoge1xyXG4gICAgICAgICAgbGV0IG1lc3NhZ2UgPSB0aGlzLnZhbGlkYXRpb25FcnJvci5nZXRSZWxldmFudEVycm9yKGtleXNbaV0sIHZhbEVycm9ycyk7XHJcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSArPSBgICR7dGhpcy5lcnJvck1lc3NhZ2UgPyBcIjxicj5cIiA6IFwiXCJ9JHtcIlxcdTI1Q0YgXCIgKyBtZXNzYWdlfWA7XHJcbiAgICAgICAgICB0aGlzLmNvbnRyb2wuY29udHJvbC5zZXRFcnJvcnMoeyAncmVxdWlyZWQnOiB0cnVlLCAnbWVzc2FnZSc6IG1lc3NhZ2UgfSx7IGVtaXRFdmVudDpmYWxzZX0pXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnbWF4bGVuZ3RoJzoge1xyXG4gICAgICAgICAgbGV0IG1lc3NhZ2UgPSB0aGlzLnZhbGlkYXRpb25FcnJvci5nZXRSZWxldmFudEVycm9yKGtleXNbaV0sIHZhbEVycm9ycy5tYXhsZW5ndGgucmVxdWlyZWRMZW5ndGgpO1xyXG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgKz0gYCAke3RoaXMuZXJyb3JNZXNzYWdlID8gXCI8YnI+XCIgOiBcIlwifSR7XCJcXHUyNUNGIFwiICsgbWVzc2FnZX1gO1xyXG4gICAgICAgICAgdGhpcy5jb250cm9sLmNvbnRyb2wuc2V0RXJyb3JzKHsgJ21heGxlbmd0aCc6IHsgJ3JlcXVpcmVkTGVuZ3RoJzogdmFsRXJyb3JzLm1heGxlbmd0aC5yZXF1aXJlZExlbmd0aCB9LCAnbWVzc2FnZSc6IG1lc3NhZ2V9LCB7IGVtaXRFdmVudDogZmFsc2UgfSlcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlICdtYXgnOiB7XHJcbiAgICAgICAgICBsZXQgbWVzc2FnZSA9IHRoaXMudmFsaWRhdGlvbkVycm9yLmdldFJlbGV2YW50RXJyb3Ioa2V5c1tpXSwgdmFsRXJyb3JzLm1heC5tYXhcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSArPSBgICR7dGhpcy5lcnJvck1lc3NhZ2UgPyBcIjxicj5cIiA6IFwiXCJ9JHtcIlxcdTI1Q0YgXCIgKyBtZXNzYWdlfWA7XHJcbiAgICAgICAgICB0aGlzLmNvbnRyb2wuY29udHJvbC5zZXRFcnJvcnMoeyAnbWVzc2FnZSc6IG1lc3NhZ2UsICdtYXgnOiB7ICdtYXgnOiB2YWxFcnJvcnMubWF4Lm1heCB9IH0sIHsgZW1pdEV2ZW50OiBmYWxzZSB9KVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ21pbic6IHtcclxuICAgICAgICAgIGxldCBtZXNzYWdlID0gdGhpcy52YWxpZGF0aW9uRXJyb3IuZ2V0UmVsZXZhbnRFcnJvcihrZXlzW2ldLCB2YWxFcnJvcnMubWluLm1pblxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlICs9IGAgJHt0aGlzLmVycm9yTWVzc2FnZSA/IFwiPGJyPlwiIDogXCJcIn0ke1wiXFx1MjVDRiBcIiArIG1lc3NhZ2V9YDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY2FzZSAncGF0dGVybic6IHtcclxuICAgICAgICAgIGxldCBtZXNzYWdlID0gdGhpcy52YWxpZGF0aW9uRXJyb3IuZ2V0UmVsZXZhbnRFcnJvcihrZXlzW2ldLCB2YWxFcnJvcnMucGF0dGVybi5yZXF1aXJlZFBhdHRlcm4pO1xyXG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgKz0gYCAke3RoaXMuZXJyb3JNZXNzYWdlID8gXCI8YnI+XCIgOiBcIlwifSR7XCJcXHUyNUNGIFwiICsgbWVzc2FnZX1gO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ2VtYWlsJzoge1xyXG4gICAgICAgICAgbGV0IG1lc3NhZ2UgPSB0aGlzLnZhbGlkYXRpb25FcnJvci5nZXRSZWxldmFudEVycm9yKGtleXNbaV0sIHZhbEVycm9ycyk7XHJcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSArPSBgICR7dGhpcy5lcnJvck1lc3NhZ2UgPyBcIjxicj5cIiA6IFwiXCJ9JHtcIlxcdTI1Q0YgXCIgKyBtZXNzYWdlfWA7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnaW52YWxpZEludGVnZXJOdW1iZXInOiB7XHJcbiAgICAgICAgICBsZXQgbWVzc2FnZSA9IHRoaXMudmFsaWRhdGlvbkVycm9yLmdldFJlbGV2YW50RXJyb3Ioa2V5c1tpXSwgdmFsRXJyb3JzKTtcclxuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlICs9IGAgJHt0aGlzLmVycm9yTWVzc2FnZSA/IFwiPGJyPlwiIDogXCJcIn0ke1wiXFx1MjVDRiBcIiArIG1lc3NhZ2V9YDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlICdpbnZhbGlkUG9zaXRpdmVJbnRlZ2VyJzoge1xyXG4gICAgICAgICAgbGV0IG1lc3NhZ2UgPSB0aGlzLnZhbGlkYXRpb25FcnJvci5nZXRSZWxldmFudEVycm9yKGtleXNbaV0sIHZhbEVycm9ycyk7XHJcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSArPSBgICR7dGhpcy5lcnJvck1lc3NhZ2UgPyBcIjxicj5cIiA6IFwiXCJ9JHtcIlxcdTI1Q0YgXCIgKyBtZXNzYWdlfWA7XHJcbiAgICAgICAgICB0aGlzLmNvbnRyb2wuY29udHJvbC5zZXRFcnJvcnMoeyAnaW52YWxpZFBvc2l0aXZlSW50ZWdlcic6IHRydWUsICdtZXNzYWdlJzogbWVzc2FnZSB9LCB7IGVtaXRFdmVudDogZmFsc2UgfSlcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNob3dCb3hFcnJvcil7XHJcbiAgICBjb25zdCBlcnJEaXYgPSAnPGRpdiBzdHlsZT1cImNvbG9yOiNDMzQyNDM7IHdpZHRoPTEwMCU7IGJhY2tncm91bmQtY29sb3I6ICNGRkRCREI7IHBhZGRpbmc6IDFyZW07IGJvcmRlci1yYWRpdXM6IC41cmVtOyBib3JkZXI6IC4xcmVtIHNvbGlkICNBODAwMDIgO2JvcmRlci1sZWZ0OiAuNzVyZW0gc29saWQgI0E4MDAwMjsgIG1hcmdpbi10b3A6LjVyZW07ICBmb250LXNpemU6IDEuMnJlbTsgXCIgaWQ9XCInICsgdGhpcy5lcnJvckRpdklkICsgJ1wiPicgKyAnPGgzICAgc3R5bGU9IFwiIGZvbnQtc2l6ZTogMS4zcmVtOyAgbWFyZ2luLWJvdHRvbTouNXJlbTsgbWFyZ2luOjA7ICBjb2xvcjogI0E4MDAwMjsgZm9udC13ZWlnaHQ6IDcwMDsgbGluZS1oZWlnaHQ6IDEuNnJlbTtcIj4nICsgJ1BsZWFzZSBDb21wbGV0ZSBhbGwgZGV0YWlscycgKyAnPC9oMz4nICsgdGhpcy5lcnJvck1lc3NhZ2UgKyAnPC9kaXY+JztcclxuICAgIGlmICghdGhpcy5iZWZvcmVCZWdpbiAmJiAhdGhpcy5hZnRlckVuZClcclxuICAgICAgdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQuaW5zZXJ0QWRqYWNlbnRIVE1MKCdhZnRlcmVuZCcsIGVyckRpdik7XHJcbiAgICBlbHNlIGlmICh0aGlzLmJlZm9yZUJlZ2luKVxyXG4gICAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmViZWdpbicsIGVyckRpdik7XHJcbiAgICBlbHNlIGlmICh0aGlzLmFmdGVyRW5kKVxyXG4gICAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuaW5zZXJ0QWRqYWNlbnRIVE1MKCdhZnRlcmVuZCcsIGVyckRpdik7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRocm93IEVycm9yKFwiQWRqdXN0bWVudCBub3Qgc3BlY2lmaWVkIFwiKTtcclxuICB9XHJcbiAgfVxyXG4gIHByaXZhdGUgcmVtb3ZlRXJyb3IoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9IFwiXCI7XHJcbiAgICBjb25zdCBlcnJvckVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmVycm9yRGl2SWQpO1xyXG4gICAgaWYgKGVycm9yRWxlbWVudCkge1xyXG4gICAgICBlcnJvckVsZW1lbnQucmVtb3ZlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG59Il19
280
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWNvbnRyb2wtdmFsaWRhdGlvbi1tc2cuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvaW5wdXRzL3NyYy9saWIvZm9ybWNvbnRyb2wtdmFsaWRhdGlvbi1tc2cuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFhLE9BQU8sRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7QUFPeEUsTUFBTSxPQUFPLHlDQUF5QztJQVkxQztJQUNBO0lBWlYsWUFBWSxDQUFNO0lBQ2xCLG9CQUFvQixDQUFNO0lBQzFCLE9BQU8sQ0FBVTtJQUNqQixVQUFVLENBQWtCO0lBQ0wsWUFBWSxHQUFZLElBQUksQ0FBQztJQUM5QixXQUFXLEdBQVksS0FBSyxDQUFDO0lBQ2hDLFFBQVEsR0FBWSxJQUFJLENBQUM7SUFDNUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztJQUNsQyx3QkFBd0IsQ0FBZTtJQUV2QyxZQUNVLEtBQWlCLEVBQ2pCLE9BQWtCO1FBRGxCLFVBQUssR0FBTCxLQUFLLENBQVk7UUFDakIsWUFBTyxHQUFQLE9BQU8sQ0FBVztJQUN4QixDQUFDO0lBRUwsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7U0FDckM7UUFDRCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzVFLHNJQUFzSTtZ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UUFBUSxFQUFFO2dCQUN0QixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7YUFDakU7O2dCQUFNLE1BQU0sS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7U0FDakQ7SUFDSCxDQUFDO0lBRU8sV0FBVztRQUNqQixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFvQixDQUFDLENBQUM7UUFDeEUsSUFBSSxZQUFZLEVBQUU7WUFDaEIsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ3ZCO0lBQ0gsQ0FBQzt3R0FwVFUseUNBQXlDOzRGQUF6Qyx5Q0FBeUMsbU5BRnpDLENBQUMsT0FBTyxDQUFDOzs0RkFFVCx5Q0FBeUM7a0JBTHJELFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHdDQUF3QztvQkFFbEQsU0FBUyxFQUFFLENBQUMsT0FBTyxDQUFDO2lCQUNyQjt5SEFNd0IsWUFBWTtzQkFBbEMsS0FBSzt1QkFBQyxjQUFjO2dCQUNDLFdBQVc7c0JBQWhDLEtBQUs7dUJBQUMsYUFBYTtnQkFDRCxRQUFRO3NCQUExQixLQUFLO3VCQUFDLFVBQVU7Z0JBNEJqQixlQUFlO3NCQURkLFlBQVk7dUJBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdDb250cm9sLCBOZ01vZGVsLCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgUHJpbWFyeUNvbG9ycyB9IGZyb20gJy4vcHJpbWFyeS1jb2xvcnMnO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICcuL3NlcnZpY2VzL3ZhbGlkYXRpb24tbWVzc2FnZS5zZXJ2aWNlJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2FwcEZvcm1Db250cm9sVmFsaWRhdGlvbk1zZ0ZvcklucHV0c10nLFxyXG5cclxuICBwcm92aWRlcnM6IFtOZ01vZGVsXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEZvcm1Db250cm9sVmFsaWRhdGlvbk1zZ0RpcmVjdGl2ZUZvcklucHV0IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIGVycm9yTWVzc2FnZTogYW55O1xyXG4gIGVycm9yTmdTZWxlY3RNZXNzYWdlOiBhbnk7XHJcbiAgc2hvd0RvdDogYm9vbGVhbjtcclxuICBlcnJvckRpdklkOiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgQElucHV0KCdzaG93Qm94RXJyb3InKSBzaG93Qm94RXJyb3I6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgnYmVmb3JlQmVnaW4nKSBiZWZvcmVCZWdpbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgnYWZ0ZXJFbmQnKSBhZnRlckVuZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgdmFsaWRhdGlvbkVycm9yID0gVmFsaWRhdGlvbkVycm9yO1xyXG4gIHN0YXR1c0NoYW5nZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICBwcml2YXRlIGNvbnRyb2w6IE5nQ29udHJvbFxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmVycm9yRGl2SWQpIHtcclxuICAgICAgdGhpcy5lcnJvckRpdklkID0gdGhpcy5jb250cm9sLm5hbWU7XHJcbiAgICB9XHJcbiAgICB0aGlzLnN0YXR1c0NoYW5nZVN1YnNjcmlwdGlvbiA9IHRoaXMuY29udHJvbC5zdGF0dXNDaGFuZ2VzLnN1YnNjcmliZShzdGF0dXMgPT4ge1xyXG4gICAgICAvLyBXZSBkb24ndCB3YW50IHRvIHNob3cgZXJyb3JzIG9uIHN0YXR1cyBjaGFuZ2VkIHdoZW4gdGhlIHVzZXIgbmV2ZXIgdG91Y2hlZCB0aGUgaW5wdXQgdG8gYmVnaW4gd2l0aC4gU28gd2UgYWRkIHRoaXMuY29udHJvbC50b3VjaGVkLlxyXG4gICAgICBpZiAoc3RhdHVzID09ICdJTlZBTElEJyAmJiB0aGlzLmNvbnRyb2wudG91Y2hlZCkge1xyXG4gICAgICAgIHRoaXMuc2hvd0Vycm9yKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yZW1vdmVFcnJvcigpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdGF0dXNDaGFuZ2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2JsdXInKVxyXG4gIGhhbmRsZUJsdXJFdmVudCgpIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5jb250cm9sLnZhbHVlID09PSAnJyB8fFxyXG4gICAgICAodGhpcy5jb250cm9sLnZhbHVlICYmICFTdHJpbmcodGhpcy5jb250cm9sLnZhbHVlKS50cmltKCkubGVuZ3RoKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuY29udHJvbC5jb250cm9sLnNldFZhbHVlKG51bGwsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmNvbnRyb2wuZXJyb3JzKSB7XHJcbiAgICAgIHRoaXMuc2hvd0Vycm9yKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnJlbW92ZUVycm9yKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNob3dFcnJvcigpIHtcclxuICAgIHRoaXMucmVtb3ZlRXJyb3IoKTtcclxuICAgIGNvbnN0IHZhbEVycm9yczogVmFsaWRhdGlvbkVycm9ycyA9IHRoaXMuY29udHJvbC5lcnJvcnM7XHJcbiAgICBpZiAodGhpcy5jb250cm9sLmVycm9ycy5sZW5ndGggPiAxIHx8IE9iamVjdC5lbnRyaWVzKHRoaXMuY29udHJvbC5lcnJvcnMpLmxlbmd0aCA+IDEpIHtcclxuICAgICAgdGhpcy5zaG93RG90ID0gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2hvd0RvdCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHZhbEVycm9ycyk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgc3dpdGNoIChrZXlzW2ldKSB7XHJcbiAgICAgICAgY2FzZSAncmVxdWlyZWQnOiB7XHJcbiAgICAgICAgICBsZXQgbWVzc2FnZSA9IHRoaXMudmFsaWRhdGlvbkVycm9yLmdldFJlbGV2YW50RXJyb3Ioa2V5c1tpXSwgdmFsRXJyb3JzKTtcclxuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlICs9IGAgJHt0aGlzLmVycm9yTWVzc2FnZSA/ICc8YnI+JyA6ICcnfSR7dGhpcy5zaG93RG90ID8gJ1xcdTI1Q0YgJyArIG1lc3NhZ2UgOiBtZXNzYWdlfWA7XHJcbiAgICAgICAgICB0aGlzLmNvbnRyb2wuY29udHJvbC5zZXRFcnJvcnMoXHJcbiAgICAgICAgICAgIHsgcmVxdWlyZWQ6IHRydWUsIG1lc3NhZ2U6IG1lc3NhZ2UgfSxcclxuICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnbWlubGVuZ3RoJzoge1xyXG4gICAgICAgICAgbGV0IG1lc3NhZ2UgPSB0aGlzLnZhbGlkYXRpb25FcnJvci5nZXRSZWxldmFudEVycm9yKFxyXG4gICAgICAgICAgICBrZXlzW2ldLFxyXG4gICAgICAgICAgICB2YWxFcnJvcnMubWlubGVuZ3RoLnJlcXVpcmVkTGVuZ3RoXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgKz0gYCAke3RoaXMuZXJyb3JNZXNzYWdlID8gJzxicj4nIDogJyd9JHt0aGlzLnNob3dEb3QgPyAnXFx1MjVDRiAnICsgbWVzc2FnZSA6IG1lc3NhZ2V9YDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlICdtYXhsZW5ndGgnOiB7XHJcbiAgICAgICAgICBsZXQgbWVzc2FnZSA9IHRoaXMudmFsaWRhdGlvbkVycm9yLmdldFJlbGV2YW50RXJyb3IoXHJcbiAgICAgICAgICAgIGtleXNbaV0sXHJcbiAgICAgICAgICAgIHZhbEVycm9ycy5tYXhsZW5ndGgucmVxdWlyZWRMZW5ndGhcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSArPSBgICR7dGhpcy5lcnJvck1lc3NhZ2UgPyAnPGJyPicgOiAnJ30ke3RoaXMuc2hvd0RvdCA/ICdcXHUyNUNGICcgKyBtZXNzYWdlIDogbWVzc2FnZX1gO1xyXG4gICAgICAgICAgdGhpcy5jb250cm9sLmNvbnRyb2wuc2V0RXJyb3JzKFxyXG4gICAgICAgICAgICB7IG1heGxlbmd0aDogeyByZXF1aXJlZExlbmd0aDogdmFsRXJyb3JzLm1heGxlbmd0aC5yZXF1aXJlZExlbmd0aCB9LCBtZXNzYWdlOiBtZXNzYWdlIH0sXHJcbiAgICAgICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ21heCc6IHtcclxuICAgICAgICAgIGxldCBtZXNzYWdlID0gdGhpcy52YWxpZGF0aW9uRXJyb3IuZ2V0UmVsZXZhbnRFcnJvcihrZXlzW2ldLCB2YWxFcnJvcnMubWF4Lm1heCk7XHJcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSArPSBgICR7dGhpcy5lcnJvck1lc3NhZ2UgPyAnPGJyPicgOiAnJ30ke3RoaXMuc2hvd0RvdCA/ICdcXHUyNUNGICcgKyBtZXNzYWdlIDogbWVzc2FnZX1gO1xyXG4gICAgICAgICAgdGhpcy5jb250cm9sLmNvbnRyb2wuc2V0RXJyb3JzKFxyXG4gICAgICAgICAgICB7IG1lc3NhZ2U6IG1lc3NhZ2UsIG1heDogeyBtYXg6IHZhbEVycm9ycy5tYXgubWF4IH0gfSxcclxuICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnbWluJzoge1xyXG4gICAgICAgICAgbGV0IG1lc3NhZ2UgPSB0aGlzLnZhbGlkYXRpb25FcnJvci5nZXRSZWxldmFudEVycm9yKGtleXNbaV0sIHZhbEVycm9ycy5taW4ubWluKTtcclxuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlICs9IGAgJHt0aGlzLmVycm9yTWVzc2FnZSA/ICc8YnI+JyA6ICcnfSR7dGhpcy5zaG93RG90ID8gJ1xcdTI1Q0YgJyArIG1lc3NhZ2UgOiBtZXNzYWdlfWA7XHJcbiAgICAgICAgICB0aGlzLmNvbnRyb2wuY29udHJvbC5zZXRFcnJvcnMoXHJcbiAgICAgICAgICAgIHsgbWVzc2FnZTogbWVzc2FnZSwgbWluOiB7IG1pbjogdmFsRXJyb3JzLm1pbi5taW4gfSB9LFxyXG4gICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlICdpbnZhbGlkTWF4QnVkZ2V0UmFuZ2UnOiB7XHJcbiAgICAgICAgICBsZXQgbWVzc2FnZSA9IHRoaXMudmFsaWRhdGlvbkVycm9yLmdldFJlbGV2YW50RXJyb3Ioa2V5c1tpXSwgdmFsRXJyb3JzLmxvd1Njb3JlUmVxKTtcclxuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlICs9IGAgJHt0aGlzLmVycm9yTWVzc2FnZSA/ICc8YnI+JyA6ICcnfSR7J1xcdTI1Q0YgJyArIG1lc3NhZ2V9YDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlICdpbnZhbGlkTWluQnVkZ2V0UmFuZ2UnOiB7XHJcbiAgICAgICAgICBsZXQgbWVzc2FnZSA9IHRoaXMudmFsaWRhdGlvbkVycm9yLmdldFJlbGV2YW50RXJyb3Ioa2V5c1tpXSwgdmFsRXJyb3JzLmhpZ2hTY29yZVJlcSk7XHJcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSArPSBgICR7dGhpcy5lcnJvck1lc3NhZ2UgPyAnPGJyPicgOiAnJ30keydcXHUyNUNGICcgKyBtZXNzYWdlfWA7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAncGF0dGVybic6IHtcclxuICAgICAgICAgIGxldCBtZXNzYWdlID0gdGhpcy52YWxpZGF0aW9uRXJyb3IuZ2V0UmVsZXZhbnRFcnJvcihcclxuICAgICAgICAgICAga2V5c1tpXSxcclxuICAgICAgICAgICAgdmFsRXJyb3JzLnBhdHRlcm4ucmVxdWlyZWRQYXR0ZXJuXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgKz0gYCAke3RoaXMuZXJyb3JNZXNzYWdlID8gJzxicj4nIDogJyd9JHt0aGlzLnNob3dEb3QgPyAnXFx1MjVDRiAnICsgbWVzc2FnZSA6IG1lc3NhZ2V9YDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlICdlbWFpbCc6IHtcclxuICAgICAgICAgIGxldCBtZXNzYWdlID0gdGhpcy52YWxpZGF0aW9uRXJyb3IuZ2V0UmVsZXZhbnRFcnJvcihrZXlzW2ldLCB2YWxFcnJvcnMpO1xyXG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgKz0gYCAke3RoaXMuZXJyb3JNZXNzYWdlID8gJzxicj4nIDogJyd9JHt0aGlzLnNob3dEb3QgPyAnXFx1MjVDRiAnICsgbWVzc2FnZSA6IG1lc3NhZ2V9YDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlICdpbnZhbGlkSW50ZWdlck51bWJlcic6IHtcclxuICAgICAgICAgIGxldCBtZXNzYWdlID0gdGhpcy52YWxpZGF0aW9uRXJyb3IuZ2V0UmVsZXZhbnRFcnJvcihrZXlzW2ldLCB2YWxFcnJvcnMpO1xyXG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgKz0gYCAke3RoaXMuZXJyb3JNZXNzYWdlID8gJzxicj4nIDogJyd9JHt0aGlzLnNob3dEb3QgPyAnXFx1MjVDRiAnICsgbWVzc2FnZSA6IG1lc3NhZ2V9YDtcclxuICAgICAgICAgIHRoaXMuY29udHJvbC5jb250cm9sLnNldEVycm9ycyhcclxuICAgICAgICAgICAgeyBpbnZhbGlkSW50ZWdlck51bWJlcjogdHJ1ZSwgbWVzc2FnZTogbWVzc2FnZSB9LFxyXG4gICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlICdpbnZhbGlkUG9zaXRpdmVJbnRlZ2VyJzoge1xyXG4gICAgICAgICAgbGV0IG1lc3NhZ2UgPSB0aGlzLnZhbGlkYXRpb25FcnJvci5nZXRSZWxldmFudEVycm9yKGtleXNbaV0sIHZhbEVycm9ycyk7XHJcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSArPSBgICR7dGhpcy5lcnJvck1lc3NhZ2UgPyAnPGJyPicgOiAnJ30ke3RoaXMuc2hvd0RvdCA/ICdcXHUyNUNGICcgKyBtZXNzYWdlIDogbWVzc2FnZX1gO1xyXG4gICAgICAgICAgdGhpcy5jb250cm9sLmNvbnRyb2wuc2V0RXJyb3JzKFxyXG4gICAgICAgICAgICB7IGludmFsaWRQb3NpdGl2ZUludGVnZXI6IHRydWUsIG1lc3NhZ2U6IG1lc3NhZ2UgfSxcclxuICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnaW52YWxpZFBvc2l0aXZlRGVjaW1hbCc6IHtcclxuICAgICAgICAgIGxldCBtZXNzYWdlID0gdGhpcy52YWxpZGF0aW9uRXJyb3IuZ2V0UmVsZXZhbnRFcnJvcihrZXlzW2ldLCB2YWxFcnJvcnMpO1xyXG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgKz0gYCAke3RoaXMuZXJyb3JNZXNzYWdlID8gJzxicj4nIDogJyd9JHt0aGlzLnNob3dEb3QgPyAnXFx1MjVDRiAnICsgbWVzc2FnZSA6IG1lc3NhZ2V9YDtcclxuICAgICAgICAgIHRoaXMuY29udHJvbC5jb250cm9sLnNldEVycm9ycyhcclxuICAgICAgICAgICAgeyBpbnZhbGlkUG9zaXRpdmVEZWNpbWFsOiB0cnVlLCBtZXNzYWdlOiBtZXNzYWdlIH0sXHJcbiAgICAgICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjYXNlICdub25Qb3NpdGl2ZU51bWJlcic6IHtcclxuICAgICAgICAgIGxldCBtZXNzYWdlID0gdGhpcy52YWxpZGF0aW9uRXJyb3IuZ2V0UmVsZXZhbnRFcnJvcihrZXlzW2ldLCB2YWxFcnJvcnMpO1xyXG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgKz0gYCAke3RoaXMuZXJyb3JNZXNzYWdlID8gJzxicj4nIDogJyd9JHt0aGlzLnNob3dEb3QgPyAnXFx1MjVDRiAnICsgbWVzc2FnZSA6IG1lc3NhZ2V9YDtcclxuICAgICAgICAgIHRoaXMuY29udHJvbC5jb250cm9sLnNldEVycm9ycyhcclxuICAgICAgICAgICAgeyBub25Qb3NpdGl2ZU51bWJlcjogdHJ1ZSwgbWVzc2FnZTogbWVzc2FnZSB9LFxyXG4gICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlICdub25TdHJpY3RseVBvc2l0aXZlTnVtYmVyJzoge1xyXG4gICAgICAgICAgbGV0IG1lc3NhZ2UgPSB0aGlzLnZhbGlkYXRpb25FcnJvci5nZXRSZWxldmFudEVycm9yKGtleXNbaV0sIHZhbEVycm9ycyk7XHJcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSArPSBgICR7dGhpcy5lcnJvck1lc3NhZ2UgPyAnPGJyPicgOiAnJ30ke3RoaXMuc2hvd0RvdCA/ICdcXHUyNUNGICcgKyBtZXNzYWdlIDogbWVzc2FnZX1gO1xyXG4gICAgICAgICAgdGhpcy5jb250cm9sLmNvbnRyb2wuc2V0RXJyb3JzKFxyXG4gICAgICAgICAgICB7IG5vblN0cmljdGx5UG9zaXRpdmVOdW1iZXI6IHRydWUsIG1lc3NhZ2U6IG1lc3NhZ2UgfSxcclxuICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnbm90VW5pcXVlJzoge1xyXG4gICAgICAgICAgbGV0IG1lc3NhZ2UgPSB0aGlzLnZhbGlkYXRpb25FcnJvci5nZXRSZWxldmFudEVycm9yKGtleXNbaV0sIHZhbEVycm9ycyk7XHJcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSArPSBgICR7dGhpcy5lcnJvck1lc3NhZ2UgPyAnPGJyPicgOiAnJ30ke3RoaXMuc2hvd0RvdCA/ICdcXHUyNUNGICcgKyBtZXNzYWdlIDogbWVzc2FnZX1gO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ2hleENvbG9ySW52YWxpZCc6IHtcclxuICAgICAgICAgIGxldCBtZXNzYWdlID0gdGhpcy52YWxpZGF0aW9uRXJyb3IuZ2V0UmVsZXZhbnRFcnJvcihrZXlzW2ldLCB2YWxFcnJvcnMpO1xyXG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgKz0gYCAke3RoaXMuZXJyb3JNZXNzYWdlID8gJzxicj4nIDogJyd9JHt0aGlzLnNob3dEb3QgPyAnXFx1MjVDRiAnICsgbWVzc2FnZSA6IG1lc3NhZ2V9YDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlICdncmVhdGVyVGhhbkFuZExlc3NUaGFuT3JFcXVhbFZhbHVlJzoge1xyXG4gICAgICAgICAgbGV0IG1lc3NhZ2UgPSB0aGlzLnZhbGlkYXRpb25FcnJvci5nZXRSZWxldmFudEVycm9yKGtleXNbaV0sIHZhbEVycm9ycyk7XHJcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSArPSBgICR7dGhpcy5lcnJvck1lc3NhZ2UgPyAnPGJyPicgOiAnJ30ke3RoaXMuc2hvd0RvdCA/ICdcXHUyNUNGICcgKyBtZXNzYWdlIDogbWVzc2FnZX1gO1xyXG4gICAgICAgICAgdGhpcy5jb250cm9sLmNvbnRyb2wuc2V0RXJyb3JzKFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgZ3JlYXRlclRoYW5BbmRMZXNzVGhhbk9yRXF1YWxWYWx1ZToge1xyXG4gICAgICAgICAgICAgICAgbWluOiB2YWxFcnJvcnMuZ3JlYXRlclRoYW5BbmRMZXNzVGhhbk9yRXF1YWxWYWx1ZS5taW4sXHJcbiAgICAgICAgICAgICAgICBtYXg6IHZhbEVycm9ycy5ncmVhdGVyVGhhbkFuZExlc3NUaGFuT3JFcXVhbFZhbHVlLm1heCxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ2dyZWF0ZXJUaGFuT3JFcXVhbEFuZExlc3NUaGFuVmFsdWUnOiB7XHJcbiAgICAgICAgICBsZXQgbWVzc2FnZSA9IHRoaXMudmFsaWRhdGlvbkVycm9yLmdldFJlbGV2YW50RXJyb3Ioa2V5c1tpXSwgdmFsRXJyb3JzKTtcclxuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlICs9IGAgJHt0aGlzLmVycm9yTWVzc2FnZSA/ICc8YnI+JyA6ICcnfSR7dGhpcy5zaG93RG90ID8gJ1xcdTI1Q0YgJyArIG1lc3NhZ2UgOiBtZXNzYWdlfWA7XHJcbiAgICAgICAgICB0aGlzLmNvbnRyb2wuY29udHJvbC5zZXRFcnJvcnMoXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBncmVhdGVyVGhhbk9yRXF1YWxBbmRMZXNzVGhhblZhbHVlOiB7XHJcbiAgICAgICAgICAgICAgICBtaW46IHZhbEVycm9ycy5ncmVhdGVyVGhhbk9yRXF1YWxBbmRMZXNzVGhhblZhbHVlLm1pbixcclxuICAgICAgICAgICAgICAgIG1heDogdmFsRXJyb3JzLmdyZWF0ZXJUaGFuT3JFcXVhbEFuZExlc3NUaGFuVmFsdWUubWF4LFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgbWVzc2FnZTogbWVzc2FnZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnZ3JlYXRlclRoYW5PckVxdWFsQW5kTGVzc1RoYW5PckVxdWFsVmFsdWUnOiB7XHJcbiAgICAgICAgICBsZXQgbWVzc2FnZSA9IHRoaXMudmFsaWRhdGlvbkVycm9yLmdldFJlbGV2YW50RXJyb3Ioa2V5c1tpXSwgdmFsRXJyb3JzKTtcclxuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlICs9IGAgJHt0aGlzLmVycm9yTWVzc2FnZSA/ICc8YnI+JyA6ICcnfSR7dGhpcy5zaG93RG90ID8gJ1xcdTI1Q0YgJyArIG1lc3NhZ2UgOiBtZXNzYWdlfWA7XHJcbiAgICAgICAgICB0aGlzLmNvbnRyb2wuY29udHJvbC5zZXRFcnJvcnMoXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBncmVhdGVyVGhhbk9yRXF1YWxBbmRMZXNzVGhhbk9yRXF1YWxWYWx1ZToge1xyXG4gICAgICAgICAgICAgICAgbWluOiB2YWxFcnJvcnMuZ3JlYXRlclRoYW5PckVxdWFsQW5kTGVzc1RoYW5PckVxdWFsVmFsdWUubWluLFxyXG4gICAgICAgICAgICAgICAgbWF4OiB2YWxFcnJvcnMuZ3JlYXRlclRoYW5PckVxdWFsQW5kTGVzc1RoYW5PckVxdWFsVmFsdWUubWF4LFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgbWVzc2FnZTogbWVzc2FnZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnaW52YWxpZFVybCc6IHtcclxuICAgICAgICAgIGxldCBtZXNzYWdlID0gdGhpcy52YWxpZGF0aW9uRXJyb3IuZ2V0UmVsZXZhbnRFcnJvcihrZXlzW2ldLCB2YWxFcnJvcnMpO1xyXG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgKz0gYCAke3RoaXMuZXJyb3JNZXNzYWdlID8gJzxicj4nIDogJyd9JHt0aGlzLnNob3dEb3QgPyAnXFx1MjVDRiAnICsgbWVzc2FnZSA6IG1lc3NhZ2V9YDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlICdjaGVja2JveENoZWNrZWQnOiB7XHJcbiAgICAgICAgICBsZXQgbWVzc2FnZSA9IHRoaXMudmFsaWRhdGlvbkVycm9yLmdldFJlbGV2YW50RXJyb3Ioa2V5c1tpXSwgdmFsRXJyb3JzKTtcclxuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlICs9IGAgJHt0aGlzLmVycm9yTWVzc2FnZSA/ICc8YnI+JyA6ICcnfSR7dGhpcy5zaG93RG90ID8gJ1xcdTI1Q0YgJyArIG1lc3NhZ2UgOiBtZXNzYWdlfWA7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnY3VzdG9tTWVzc2FnZSc6IHtcclxuICAgICAgICAgIGxldCBtZXNzYWdlID0gdmFsRXJyb3JzLm1lc3NhZ2U7XHJcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSArPSBgICR7dGhpcy5lcnJvck1lc3NhZ2UgPyAnPGJyPicgOiAnJ30ke3RoaXMuc2hvd0RvdCA/ICdcXHUyNUNGICcgKyBtZXNzYWdlIDogbWVzc2FnZX1gO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ2NoZWNrYm94Q2hlY2tlZCc6IHtcclxuICAgICAgICAgIGxldCBtZXNzYWdlID0gdGhpcy52YWxpZGF0aW9uRXJyb3IuZ2V0UmVsZXZhbnRFcnJvcihrZXlzW2ldLCB2YWxFcnJvcnMpO1xyXG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgKz0gYCAke3RoaXMuZXJyb3JNZXNzYWdlID8gJzxicj4nIDogJyd9JHt0aGlzLnNob3dEb3QgPyAnXFx1MjVDRiAnICsgbWVzc2FnZSA6IG1lc3NhZ2V9YDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlICdtYXhEZWNpbWFsUGxhY2VzJzoge1xyXG4gICAgICAgICAgbGV0IG1lc3NhZ2UgPSB0aGlzLnZhbGlkYXRpb25FcnJvci5nZXRSZWxldmFudEVycm9yKGtleXNbaV0sIHZhbEVycm9ycyk7XHJcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSArPSBgICR7dGhpcy5lcnJvck1lc3NhZ2UgPyAnPGJyPicgOiAnJ30ke3RoaXMuc2hvd0RvdCA/ICdcXHUyNUNGICcgKyBtZXNzYWdlIDogbWVzc2FnZX1gO1xyXG4gICAgICAgICAgdGhpcy5jb250cm9sLmNvbnRyb2wuc2V0RXJyb3JzKFxyXG4gICAgICAgICAgICB7IG1heERlY2ltYWxQbGFjZXM6IHZhbEVycm9ycy5tYXhEZWNpbWFsUGxhY2VzLCBtZXNzYWdlOiBtZXNzYWdlIH0sXHJcbiAgICAgICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ21heERpZ2l0cyc6IHtcclxuICAgICAgICAgIGxldCBtZXNzYWdlID0gdGhpcy52YWxpZGF0aW9uRXJyb3IuZ2V0UmVsZXZhbnRFcnJvcihrZXlzW2ldLCB2YWxFcnJvcnMpO1xyXG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgKz0gYCAke3RoaXMuZXJyb3JNZXNzYWdlID8gJzxicj4nIDogJyd9JHt0aGlzLnNob3dEb3QgPyAnXFx1MjVDRiAnICsgbWVzc2FnZSA6IG1lc3NhZ2V9YDtcclxuICAgICAgICAgIHRoaXMuY29udHJvbC5jb250cm9sLnNldEVycm9ycyhcclxuICAgICAgICAgICAgeyBtYXhEaWdpdHM6IHZhbEVycm9ycy5tYXhEaWdpdHMsIG1lc3NhZ2U6IG1lc3NhZ2UgfSxcclxuICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNob3dCb3hFcnJvciAmJiB0aGlzLmVycm9yTWVzc2FnZSkge1xyXG4gICAgICBjb25zdCBlcnJEaXYgPVxyXG4gICAgICAgIGA8ZGl2IHN0eWxlPVwiY29sb3I6JHtQcmltYXJ5Q29sb3JzLiRwcmltYXJ5UmVkQ29sb3J9OyBcclxuICBib3gtc2l6aW5nOiBib3JkZXItYm94OyBcclxuICB3aWR0aDogJHt0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGh9cHg7IFxyXG4gIGJhY2tncm91bmQtY29sb3I6ICR7UHJpbWFyeUNvbG9ycy4kcHJpbWFyeUxpZ2h0UmVkQ29sb3J9OyBcclxuICBwYWRkaW5nOiAuNXJlbTsgXHJcbiAgYm9yZGVyLXJhZGl1czogLjVyZW07IFxyXG4gIGJvcmRlcjogLjFyZW0gc29saWQgJHtQcmltYXJ5Q29sb3JzLiRwcmltYXJ5UmVkQ29sb3J9OyBcclxuICBib3JkZXItbGVmdDogLjc1cmVtIHNvbGlkICR7UHJpbWFyeUNvbG9ycy4kcHJpbWFyeVJlZENvbG9yfTsgXHJcbiAgbWFyZ2luLXRvcDouNXJlbTsgXHJcbiAgZm9udC1zaXplOiAxLjJyZW07IFxyXG4gIGRpc3BsYXk6IGJsb2NrO1wiIGlkPVwiJHt0aGlzLmVycm9yRGl2SWR9XCI+YCArXHJcbiAgICAgICAgYDxoMyBzdHlsZT1cImZvbnQtc2l6ZTogMS4zcmVtOyBtYXJnaW46MCAwIC4yNXJlbSAwOyBjb2xvcjogJHtQcmltYXJ5Q29sb3JzLiRwcmltYXJ5UmVkQ29sb3J9OyBmb250LXdlaWdodDogNzAwOyBsaW5lLWhlaWdodDogMS42cmVtO1wiPmAgK1xyXG4gICAgICAgICdGaWVsZCBjb250YWlucyBlcnJvcnM6JyArXHJcbiAgICAgICAgJzwvaDM+JyArXHJcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgK1xyXG4gICAgICAgICc8L2Rpdj4nO1xyXG5cclxuICAgICAgaWYgKCF0aGlzLmJlZm9yZUJlZ2luICYmICF0aGlzLmFmdGVyRW5kKVxyXG4gICAgICAgIHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50Lmluc2VydEFkamFjZW50SFRNTChcclxuICAgICAgICAgICdhZnRlcmVuZCcsXHJcbiAgICAgICAgICBlcnJEaXZcclxuICAgICAgICApO1xyXG4gICAgICBlbHNlIGlmICh0aGlzLmJlZm9yZUJlZ2luKSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmViZWdpbicsIGVyckRpdik7XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMuYWZ0ZXJFbmQpIHtcclxuICAgICAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuaW5zZXJ0QWRqYWNlbnRIVE1MKCdhZnRlcmVuZCcsIGVyckRpdik7XHJcbiAgICAgIH0gZWxzZSB0aHJvdyBFcnJvcignQWRqdXN0bWVudCBub3Qgc3BlY2lmaWVkICcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW1vdmVFcnJvcigpOiB2b2lkIHtcclxuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJyc7XHJcbiAgICBjb25zdCBlcnJvckVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmVycm9yRGl2SWQgYXMgc3RyaW5nKTtcclxuICAgIGlmIChlcnJvckVsZW1lbnQpIHtcclxuICAgICAgZXJyb3JFbGVtZW50LnJlbW92ZSgpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -54,7 +54,7 @@ export class GeneralInputRendererComponent {
54
54
  return true;
55
55
  }
56
56
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GeneralInputRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
57
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GeneralInputRendererComponent, selector: "general-input-renderer-test", ngImport: i0, template: "<ng-container *ngIf=\"formGroup\" [formGroup]=\"formGroup\">\r\n <div [ngClass]=\"{ 'ag-description': params.isTypeTextArea }\" *ngIf=\"!isEdit\">\r\n <span>{{ formGroup.get(key).value }}</span>\r\n </div>\r\n\r\n <ng-container *ngIf=\"params.isTypeTextArea\">\r\n <div *ngIf=\"isEdit\" class=\"input-wrapper\">\r\n <textarea [readonly]=\"readonly\" appFormControlValidationMsgForInputs\r\n [showBoxError]=\"false\"\r\n [style.width.px]=\"params.column.getActualWidth() - 20\"\r\n [style.height.px]=\" params.node.rowHeight - 20\"\r\n (change)=\"onCellDataChanged($event)\" [placeholder]=\"params.placeholder\"\r\n [formControlName]=\"key\"></textarea>\r\n <tooltip-msg-error [control]=\"formGroup.get(this.key)\" *ngIf=\"\r\n formGroup.get(this.key).errors && formGroup.get(this.key).touched\r\n \"></tooltip-msg-error>\r\n </div>\r\n </ng-container>\r\n\r\n <div *ngIf=\"params.isTypeText && isEdit\" class=\"cont\">\r\n <input [readonly]=\"readonly\" [placeholder]=\"params.placeholder\"\r\n appFormControlValidationMsgForInputs [showBoxError]=\"false\"\r\n (change)=\"onCellDataChanged($event)\" [formControlName]=\"key\" />\r\n <span *ngIf=\"params.showSymbol\" style=\"margin-left: -2.2rem\">{{ params.symbol\r\n }}</span>\r\n <tooltip-msg-error\r\n *ngIf=\"formGroup.get(key).errors && formGroup.get(key) && formGroup.get(key).touched\"\r\n [message]=\"formGroup.get(key).errors.message\"></tooltip-msg-error>\r\n </div>\r\n\r\n <div *ngIf=\"params.isTypeNumber && isEdit\" class=\"input-wrapper\">\r\n <div class=\"input-symbol-group\">\r\n <input [readonly]=\"readonly\" appFormControlValidationMsgForInputs\r\n [showBoxError]=\"false\" [placeholder]=\"params.placeholder\"\r\n (change)=\"onCellDataChanged($event)\" [formControlName]=\"key\"\r\n type=\"number\" />\r\n <span class=\"symbol\" *ngIf=\"params.showSymbol\">{{ params.symbol }}</span>\r\n </div>\r\n\r\n <tooltip-msg-error\r\n *ngIf=\"formGroup.get(key)?.errors && formGroup.get(key)?.touched\"\r\n [message]=\"formGroup.get(key)?.errors.message\"></tooltip-msg-error>\r\n </div>\r\n <div *ngIf=\"params.isTypeIntegerNumber && isEdit\" class=\"cont\">\r\n <input [readonly]=\"readonly\" appFormControlValidationMsgForInputs\r\n [showBoxError]=\"false\" [placeholder]=\"params.placeholder\"\r\n (change)=\"onCellDataChanged($event)\" [formControlName]=\"key\" type=\"number\" />\r\n <span class=\"symbol\" *ngIf=\"params.showSymbol\" style=\"margin-left: -2.2rem\">{{\r\n params.symbol\r\n }}</span>\r\n <tooltip-msg-error *ngIf=\"formGroup.get(key).errors && formGroup.get(key).touched\"\r\n [message]=\"formGroup.get(key).errors.message\"></tooltip-msg-error>\r\n </div>\r\n</ng-container>", styles: [".symbol{color:#155ed4}textarea{height:98%}.cont{display:flex;align-items:center;gap:.5rem}.input-wrapper{display:flex;align-items:center;gap:.25rem}.input-symbol-group{display:flex;align-items:center;position:relative}.input-symbol-group input{padding-right:1.5rem}.symbol{position:absolute;right:1rem;pointer-events:none;color:#155ed4;z-index:2}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.FormControlValidationMsgDirectiveForInput, selector: "[appFormControlValidationMsgForInputs]", inputs: ["showBoxError", "errorDivId", "beforeBegin", "afterEnd"] }, { kind: "component", type: i4.TooltipMsgError, selector: "tooltip-msg-error", inputs: ["width", "control", "messageType", "message"] }] });
57
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GeneralInputRendererComponent, selector: "general-input-renderer-test", ngImport: i0, template: "<ng-container *ngIf=\"formGroup\" [formGroup]=\"formGroup\">\r\n <div [ngClass]=\"{ 'ag-description': params.isTypeTextArea }\" *ngIf=\"!isEdit\">\r\n <span>{{ formGroup.get(key).value }}</span>\r\n </div>\r\n\r\n <ng-container *ngIf=\"params.isTypeTextArea\">\r\n <div *ngIf=\"isEdit\" class=\"input-wrapper\">\r\n <textarea [readonly]=\"readonly\" appFormControlValidationMsgForInputs\r\n [showBoxError]=\"false\"\r\n [style.width.px]=\"params.column.getActualWidth() - 20\"\r\n [style.height.px]=\" params.node.rowHeight - 20\"\r\n (change)=\"onCellDataChanged($event)\" [placeholder]=\"params.placeholder\"\r\n [formControlName]=\"key\"></textarea>\r\n <tooltip-msg-error [control]=\"formGroup.get(this.key)\" *ngIf=\"\r\n formGroup.get(this.key).errors && formGroup.get(this.key).touched\r\n \"></tooltip-msg-error>\r\n </div>\r\n </ng-container>\r\n\r\n <div *ngIf=\"params.isTypeText && isEdit\" class=\"cont\">\r\n <input [readonly]=\"readonly\" [placeholder]=\"params.placeholder\"\r\n appFormControlValidationMsgForInputs [showBoxError]=\"false\"\r\n (change)=\"onCellDataChanged($event)\" [formControlName]=\"key\" />\r\n <span *ngIf=\"params.showSymbol\" style=\"margin-left: -2.2rem\">{{ params.symbol\r\n }}</span>\r\n <tooltip-msg-error\r\n *ngIf=\"formGroup.get(key).errors && formGroup.get(key) && formGroup.get(key).touched\"\r\n [message]=\"formGroup.get(key).errors.message\"></tooltip-msg-error>\r\n </div>\r\n\r\n <div *ngIf=\"params.isTypeNumber && isEdit\" class=\"input-wrapper\">\r\n <div class=\"input-symbol-group\">\r\n <input [readonly]=\"readonly\" appFormControlValidationMsgForInputs\r\n [showBoxError]=\"false\" [placeholder]=\"params.placeholder\"\r\n (change)=\"onCellDataChanged($event)\" [formControlName]=\"key\"\r\n type=\"number\" />\r\n <span class=\"symbol\" *ngIf=\"params.showSymbol\">{{ params.symbol }}</span>\r\n </div>\r\n\r\n <tooltip-msg-error\r\n *ngIf=\"formGroup.get(key)?.errors && formGroup.get(key)?.touched\"\r\n [message]=\"formGroup.get(key)?.errors.message\"></tooltip-msg-error>\r\n </div>\r\n <div *ngIf=\"params.isTypeIntegerNumber && isEdit\" class=\"cont\">\r\n <input [readonly]=\"readonly\" appFormControlValidationMsgForInputs\r\n [showBoxError]=\"false\" [placeholder]=\"params.placeholder\"\r\n (change)=\"onCellDataChanged($event)\" [formControlName]=\"key\" type=\"number\" />\r\n <span class=\"symbol\" *ngIf=\"params.showSymbol\" style=\"margin-left: -2.2rem\">{{\r\n params.symbol\r\n }}</span>\r\n <tooltip-msg-error *ngIf=\"formGroup.get(key).errors && formGroup.get(key).touched\"\r\n [message]=\"formGroup.get(key).errors.message\"></tooltip-msg-error>\r\n </div>\r\n</ng-container>", styles: [".symbol{color:#155ed4}textarea{height:98%}.cont{display:flex;align-items:center;gap:.5rem}.input-wrapper{display:flex;align-items:center;gap:.25rem}.input-symbol-group{display:flex;align-items:center;position:relative}.input-symbol-group input{padding-right:1.5rem}.symbol{position:absolute;right:1rem;pointer-events:none;color:#155ed4;z-index:2}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.FormControlValidationMsgDirectiveForInput, selector: "[appFormControlValidationMsgForInputs]", inputs: ["showBoxError", "beforeBegin", "afterEnd"] }, { kind: "component", type: i4.TooltipMsgError, selector: "tooltip-msg-error", inputs: ["width", "control", "messageType", "message"] }] });
58
58
  }
59
59
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GeneralInputRendererComponent, decorators: [{
60
60
  type: Component,