@jooler/inputs 0.0.57 → 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWNvbnRyb2wtdmFsaWRhdGlvbi1tc2cuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvaW5wdXRzL3NyYy9saWIvZm9ybWNvbnRyb2wtdmFsaWRhdGlvbi1tc2cuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBdUQsTUFBTSxlQUFlLENBQUM7QUFDcEgsT0FBTyxFQUFhLE9BQU8sRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7OztBQU14RSxNQUFNLE9BQU8seUNBQXlDO0lBVzFDO0lBQ0E7SUFYVCxZQUFZLENBQU07SUFDbkIsb0JBQW9CLENBQU07SUFDSCxZQUFZLEdBQVUsSUFBSSxDQUFDO0lBQzdCLFVBQVUsQ0FBTTtJQUNmLFdBQVcsR0FBWSxLQUFLLENBQUM7SUFDaEMsUUFBUSxHQUFZLEtBQUssQ0FBQztJQUM3QyxlQUFlLEdBQUcsZUFBZSxDQUFDO0lBQ2xDLHdCQUF3QixDQUFlO0lBRXZDLFlBQ1UsS0FBaUIsRUFDakIsT0FBa0I7UUFEbEIsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNqQixZQUFPLEdBQVAsT0FBTyxDQUFXO0lBQ3hCLENBQUM7SUFFTCxRQUFRO1FBQ04sSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FDbEUsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNULElBQUksTUFBTSxJQUFJLFNBQVMsRUFBRTtnQkFDdkIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2FBRWxCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQzthQUNwQjtRQUNILENBQUMsQ0FDRixDQUFBO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDO1lBQ2xDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUNqQixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFO29CQUN2QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7aUJBQ2xCO1lBQ0gsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzlDLENBQUM7SUFHRCxlQUFlLENBQUMsS0FBSztRQUNuQixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztTQUNsQjthQUNJO1lBQ0gsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQztJQUdPLFNBQVM7UUFDZixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsTUFBTSxTQUFTLEdBQXFCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQ3hELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDcEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDcEMsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2YsS0FBSyxXQUFXLENBQUMsQ0FBQztvQkFDaEIsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQztvQkFDakcsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLFNBQVMsR0FBRyxPQUFPLEVBQUUsQ0FBQztvQkFFakYsTUFBTTtpQkFDUDtnQkFDRCxLQUFLLFVBQVUsQ0FBQyxDQUFDO29CQUNmLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO29CQUN4RSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsU0FBUyxHQUFHLE9BQU8sRUFBRSxDQUFDO29CQUNqRixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsRUFBQyxFQUFFLFNBQVMsRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFBO29CQUMzRixNQUFNO2lCQUNQO2dCQUNELEtBQUssV0FBVyxDQUFDLENBQUM7b0JBQ2hCLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUM7b0JBQ2pHLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxTQUFTLEdBQUcsT0FBTyxFQUFFLENBQUM7b0JBQ2pGLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxFQUFFLGdCQUFnQixFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUE7b0JBQ2xKLE1BQU07aUJBQ1A7Z0JBQ0QsS0FBSyxLQUFLLENBQUMsQ0FBQztvQkFDVixJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FDN0UsQ0FBQztvQkFDRixJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsU0FBUyxHQUFHLE9BQU8sRUFBRSxDQUFDO29CQUNqRixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQTtvQkFDakgsTUFBTTtpQkFDUDtnQkFDRCxLQUFLLEtBQUssQ0FBQyxDQUFDO29CQUNWLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUM3RSxDQUFDO29CQUNGLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxTQUFTLEdBQUcsT0FBTyxFQUFFLENBQUM7b0JBQ2pGLE1BQU07aUJBQ1A7Z0JBRUQsS0FBSyxTQUFTLENBQUMsQ0FBQztvQkFDZCxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO29CQUNoRyxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsU0FBUyxHQUFHLE9BQU8sRUFBRSxDQUFDO29CQUNqRixNQUFNO2lCQUNQO2dCQUNELEtBQUssT0FBTyxDQUFDLENBQUM7b0JBQ1osSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7b0JBQ3hFLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxTQUFTLEdBQUcsT0FBTyxFQUFFLENBQUM7b0JBQ2pGLE1BQU07aUJBQ1A7Z0JBQ0QsS0FBSyxzQkFBc0IsQ0FBQyxDQUFDO29CQUMzQixJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztvQkFDeEUsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLFNBQVMsR0FBRyxPQUFPLEVBQUUsQ0FBQztvQkFDakYsTUFBTTtpQkFDUDtnQkFDRCxLQUFLLHdCQUF3QixDQUFDLENBQUM7b0JBQzdCLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO29CQUN4RSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsU0FBUyxHQUFHLE9BQU8sRUFBRSxDQUFDO29CQUNqRixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSx3QkFBd0IsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUE7b0JBQzVHLE1BQU07aUJBQ1A7YUFFRjtTQUNGO1FBQ0QsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFDO1lBQ3RCLE1BQU0sTUFBTSxHQUFHLHNOQUFzTixHQUFHLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxHQUFHLDZIQUE2SCxHQUFHLDZCQUE2QixHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQztZQUN4YyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRO2dCQUNyQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2lCQUNySCxJQUFJLElBQUksQ0FBQyxXQUFXO2dCQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUM7aUJBQ2hFLElBQUksSUFBSSxDQUFDLFFBQVE7Z0JBQ3BCLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQzs7Z0JBRWhFLE1BQU0sS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7U0FDNUM7SUFDRCxDQUFDO0lBQ08sV0FBVztRQUNqQixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5RCxJQUFJLFlBQVksRUFBRTtZQUNoQixZQUFZLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDdkI7SUFDSCxDQUFDO3dHQWxJVSx5Q0FBeUM7NEZBQXpDLHlDQUF5QyxtUEFGekMsQ0FBQyxPQUFPLENBQUM7OzRGQUVULHlDQUF5QztrQkFKckQsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsd0NBQXdDO29CQUNsRCxTQUFTLEVBQUUsQ0FBQyxPQUFPLENBQUM7aUJBQ3JCO3lIQUl3QixZQUFZO3NCQUFsQyxLQUFLO3VCQUFDLGNBQWM7Z0JBQ0EsVUFBVTtzQkFBOUIsS0FBSzt1QkFBQyxZQUFZO2dCQUNHLFdBQVc7c0JBQWhDLEtBQUs7dUJBQUMsYUFBYTtnQkFDRCxRQUFRO3NCQUExQixLQUFLO3VCQUFDLFVBQVU7Z0JBa0NqQixlQUFlO3NCQURkLFlBQVk7dUJBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgSG9zdExpc3RlbmVyLCBFbGVtZW50UmVmLCBPbkluaXQsIE9uRGVzdHJveSwgRXZlbnRFbWl0dGVyLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdDb250cm9sLCBOZ01vZGVsLCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVmFsaWRhdGlvbkVycm9yIH0gZnJvbSAnLi9zZXJ2aWNlcy92YWxpZGF0aW9uLW1lc3NhZ2Uuc2VydmljZSc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1thcHBGb3JtQ29udHJvbFZhbGlkYXRpb25Nc2dGb3JJbnB1dHNdJyxcclxuICBwcm92aWRlcnM6IFtOZ01vZGVsXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEZvcm1Db250cm9sVmFsaWRhdGlvbk1zZ0RpcmVjdGl2ZUZvcklucHV0IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gICBlcnJvck1lc3NhZ2U6IGFueTtcclxuICBlcnJvck5nU2VsZWN0TWVzc2FnZTogYW55O1xyXG4gIEBJbnB1dCgnc2hvd0JveEVycm9yJykgc2hvd0JveEVycm9yOiBib29sZWFuPXRydWU7XHJcbiAgQElucHV0KCdlcnJvckRpdklkJykgZXJyb3JEaXZJZDogYW55O1xyXG4gIEBJbnB1dCgnYmVmb3JlQmVnaW4nKSBiZWZvcmVCZWdpbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgnYWZ0ZXJFbmQnKSBhZnRlckVuZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHZhbGlkYXRpb25FcnJvciA9IFZhbGlkYXRpb25FcnJvcjtcclxuICBzdGF0dXNDaGFuZ2VTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGVsUmVmOiBFbGVtZW50UmVmLFxyXG4gICAgcHJpdmF0ZSBjb250cm9sOiBOZ0NvbnRyb2wsXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnN0YXR1c0NoYW5nZVN1YnNjcmlwdGlvbiA9IHRoaXMuY29udHJvbC5zdGF0dXNDaGFuZ2VzLnN1YnNjcmliZShcclxuICAgICAgKHN0YXR1cykgPT4ge1xyXG4gICAgICAgIGlmIChzdGF0dXMgPT0gJ0lOVkFMSUQnKSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dFcnJvcigpO1xyXG5cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5yZW1vdmVFcnJvcigpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKVxyXG4gICAgdGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzcG9uc2UpID0+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,
@@ -70,7 +70,8 @@ export class InputsModule {
70
70
  EditableSavableInputComponent,
71
71
  DropdownActionsComponent,
72
72
  DynamicPipe,
73
- AddAsteriskDirective] });
73
+ AddAsteriskDirective,
74
+ TooltipMsgError] });
74
75
  static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: InputsModule, imports: [CommonModule,
75
76
  NgSelectModule,
76
77
  FormsModule,
@@ -121,8 +122,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
121
122
  EditableSavableInputComponent,
122
123
  DropdownActionsComponent,
123
124
  DynamicPipe,
124
- AddAsteriskDirective
125
+ AddAsteriskDirective,
126
+ TooltipMsgError
125
127
  ]
126
128
  }]
127
129
  }] });
128
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXRzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2lucHV0cy9zcmMvbGliL2lucHV0cy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDcEcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sdUVBQXVFLENBQUM7QUFDM0gsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDakcsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDN0YsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDeEYsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDakgsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDdkYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDekYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQzFHLE9BQU8sRUFBRSw0Q0FBNEMsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQ3BILE9BQU8sRUFBRSx5Q0FBeUMsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ25HLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLG9FQUFvRSxDQUFDO0FBQzFILE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQzFHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpREFBaUQsQ0FBQzs7QUE4Q2xGLE1BQU0sT0FBTyxZQUFZO0lBRWhCLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBZ0I7UUFFcEMsT0FBTztZQUNMLFFBQVEsRUFBRSxZQUFZO1lBQ3RCLFNBQVMsRUFBRTtnQkFDVCx3QkFBd0I7Z0JBQ3hCO29CQUNFLE9BQU8sRUFBRSxLQUFLO29CQUNkLFFBQVEsRUFBRSxXQUFXO2lCQUN0QjthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7d0dBZFUsWUFBWTt5R0FBWixZQUFZLGlCQXpDckIsbUJBQW1CO1lBQ25CLDJCQUEyQjtZQUMzQiwwQkFBMEI7WUFDMUIsNkJBQTZCO1lBQzdCLHVCQUF1QjtZQUN2QixzQkFBc0I7WUFDdEIsOEJBQThCO1lBQzlCLDZCQUE2QjtZQUM3QixXQUFXO1lBQ1gsa0NBQWtDO1lBQ2xDLG9DQUFvQztZQUNwQyx3QkFBd0I7WUFDeEIseUNBQXlDO1lBQ3pDLHdCQUF3QjtZQUN4QixvQkFBb0I7WUFDcEIsNENBQTRDO1lBQzVDLGVBQWUsYUFHZixZQUFZO1lBQ1osY0FBYztZQUNkLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsaUJBQWlCO1lBQ2pCLDZCQUE2QjtZQUM3QixpQkFBaUIsYUFHakIsbUJBQW1CO1lBQ25CLDJCQUEyQjtZQUMzQiwwQkFBMEI7WUFDMUIsNkJBQTZCO1lBQzdCLHVCQUF1QjtZQUN2QixzQkFBc0I7WUFDdEIsOEJBQThCO1lBQzlCLDZCQUE2QjtZQUM3Qix3QkFBd0I7WUFDeEIsV0FBVztZQUNYLG9CQUFvQjt5R0FHWCxZQUFZLFlBdEJyQixZQUFZO1lBQ1osY0FBYztZQUNkLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsaUJBQWlCO1lBQ2pCLDZCQUE2QjtZQUM3QixpQkFBaUI7OzRGQWdCUixZQUFZO2tCQTNDeEIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osbUJBQW1CO3dCQUNuQiwyQkFBMkI7d0JBQzNCLDBCQUEwQjt3QkFDMUIsNkJBQTZCO3dCQUM3Qix1QkFBdUI7d0JBQ3ZCLHNCQUFzQjt3QkFDdEIsOEJBQThCO3dCQUM5Qiw2QkFBNkI7d0JBQzdCLFdBQVc7d0JBQ1gsa0NBQWtDO3dCQUNsQyxvQ0FBb0M7d0JBQ3BDLHdCQUF3Qjt3QkFDeEIseUNBQXlDO3dCQUN6Qyx3QkFBd0I7d0JBQ3hCLG9CQUFvQjt3QkFDcEIsNENBQTRDO3dCQUM1QyxlQUFlO3FCQUNoQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixjQUFjO3dCQUNkLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixpQkFBaUI7d0JBQ2pCLDZCQUE2Qjt3QkFDN0IsaUJBQWlCO3FCQUNsQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsbUJBQW1CO3dCQUNuQiwyQkFBMkI7d0JBQzNCLDBCQUEwQjt3QkFDMUIsNkJBQTZCO3dCQUM3Qix1QkFBdUI7d0JBQ3ZCLHNCQUFzQjt3QkFDdEIsOEJBQThCO3dCQUM5Qiw2QkFBNkI7d0JBQzdCLHdCQUF3Qjt3QkFDeEIsV0FBVzt3QkFDWCxvQkFBb0I7cUJBQ3JCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEZvbnRBd2Vzb21lTW9kdWxlIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2FuZ3VsYXItZm9udGF3ZXNvbWUnO1xyXG5pbXBvcnQgeyBBcHBNYXRlcmlhbE1vZHVsZSB9IGZyb20gJ0Bqb29sZXIvYXBwLW1hdGVyaWFsJztcclxuaW1wb3J0IHsgU2hhcmVkR2VuZXJhbENvbXBvbmVudHNNb2R1bGUgfSBmcm9tICdAam9vbGVyL3NoYXJlZC1nZW5lcmFsLWNvbXBvbmVudHMnO1xyXG5pbXBvcnQgeyBOZ1NlbGVjdE1vZHVsZSB9IGZyb20gJ0BuZy1zZWxlY3Qvbmctc2VsZWN0JztcclxuaW1wb3J0IHsgQWRkQXN0ZXJpc2tEaXJlY3RpdmUgfSBmcm9tICcuL2FkZC1hc3Rlcmlzay5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDaG9vc2VFbnVtUmVuZGVyZXJDb21wb25lbnQgfSBmcm9tICcuL2Nob29zZS1lbnVtLXJlbmRlcmVyL2Nob29zZS1lbnVtLXJlbmRlcmVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENob29zZUVudW1Db21wb25lbnQgfSBmcm9tICcuL2Nob29zZS1lbnVtL2Nob29zZS1lbnVtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENob29zZUdlbmVyYWxJdGVtUmVuZGVyZXJDb21wb25lbnQgfSBmcm9tICcuL2Nob29zZS1nZW5lcmFsLWl0ZW0tcmVuZGVyZXIvY2hvb3NlLWdlbmVyYWwtaXRlbS1yZW5kZXJlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDaG9vc2VHZW5lcmFsSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vY2hvb3NlLWdlbmVyYWwtaXRlbS9jaG9vc2UtZ2VuZXJhbC1pdGVtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENob29zZUdlbmVyYWxJdGVtU2VydmljZSB9IGZyb20gJy4vY2hvb3NlLWdlbmVyYWwtaXRlbS9jaG9vc2UtZ2VuZXJhbC1pdGVtLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDaG9vc2VMaW5lVHlwZUNvbXBvbmVudCB9IGZyb20gJy4vY2hvb3NlLWxpbmUtdHlwZS9jaG9vc2UtbGluZS10eXBlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENob29zZVllc09yTm9SZW5kZXJlckNvbXBvbmVudCB9IGZyb20gJy4vY2hvb3NlLXllcy1vci1uby1yZW5kZXJlci9jaG9vc2UteWVzLW9yLW5vLXJlbmRlcmVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENob29zZVllc09yTm9Db21wb25lbnQgfSBmcm9tICcuL2Nob29zZS15ZXMtb3Itbm8vY2hvb3NlLXllcy1vci1uby5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEcm9wZG93bkFjdGlvbnNDb21wb25lbnQgfSBmcm9tICcuL2Ryb3Bkb3duLWFjdGlvbnMvZHJvcGRvd24tYWN0aW9ucy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEeW5hbWljUGlwZSB9IGZyb20gJy4vZWRpdGFibGUtc2F2YWJsZS1pbnB1dC9keW5hbWljUGlwZSc7XHJcbmltcG9ydCB7IEVkaXRhYmxlU2F2YWJsZUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9lZGl0YWJsZS1zYXZhYmxlLWlucHV0L2VkaXRhYmxlLXNhdmFibGUtaW5wdXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2xWYWxpZGF0aW9uTXNnRGlyZWN0aXZlRm9yTmdTZWxlY3QgfSBmcm9tICcuL2Zvcm1jb250cm9sLXZhbGlkYXRpb24tbXNnLWZvci1uZy1zZWxlY3QuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2xWYWxpZGF0aW9uTXNnRGlyZWN0aXZlRm9ySW5wdXQgfSBmcm9tICcuL2Zvcm1jb250cm9sLXZhbGlkYXRpb24tbXNnLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEN1c3RvbURlY2ltYWxQb2ludFR3b0RpZ2l0c0RpcmVjdGl2ZSB9IGZyb20gJy4vZ2VuZXJhbC1pbnB1dC1yZW5kZXJlci9jdXN0b20tZGVjaW1hbC1wb2ludC10d28tZGlnaXRzLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEdlbmVyYWxJbnB1dFJlbmRlcmVyQ29tcG9uZW50IH0gZnJvbSAnLi9nZW5lcmFsLWlucHV0LXJlbmRlcmVyL2dlbmVyYWwtaW5wdXQtcmVuZGVyZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2hvd1RhYmxlRXJyb3JzQ29tcG9uZW50IH0gZnJvbSAnLi9zaG93LXRhYmxlLWVycm9ycy9zaG93LXRhYmxlLWVycm9ycy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUb29sdGlwTXNnRXJyb3IgfSBmcm9tICcuL3Rvb2x0aXAtbXNnLWVycm9yL3Rvb2x0aXAtbXNnLWVycm9yLmNvbXBvbmVudCc7XHJcblxyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIENob29zZUVudW1Db21wb25lbnQsXHJcbiAgICBDaG9vc2VFbnVtUmVuZGVyZXJDb21wb25lbnQsXHJcbiAgICBDaG9vc2VHZW5lcmFsSXRlbUNvbXBvbmVudCxcclxuICAgIEdlbmVyYWxJbnB1dFJlbmRlcmVyQ29tcG9uZW50LFxyXG4gICAgQ2hvb3NlTGluZVR5cGVDb21wb25lbnQsXHJcbiAgICBDaG9vc2VZZXNPck5vQ29tcG9uZW50LFxyXG4gICAgQ2hvb3NlWWVzT3JOb1JlbmRlcmVyQ29tcG9uZW50LFxyXG4gICAgRWRpdGFibGVTYXZhYmxlSW5wdXRDb21wb25lbnQsXHJcbiAgICBEeW5hbWljUGlwZSxcclxuICAgIENob29zZUdlbmVyYWxJdGVtUmVuZGVyZXJDb21wb25lbnQsXHJcbiAgICBDdXN0b21EZWNpbWFsUG9pbnRUd29EaWdpdHNEaXJlY3RpdmUsXHJcbiAgICBTaG93VGFibGVFcnJvcnNDb21wb25lbnQsXHJcbiAgICBGb3JtQ29udHJvbFZhbGlkYXRpb25Nc2dEaXJlY3RpdmVGb3JJbnB1dCxcclxuICAgIERyb3Bkb3duQWN0aW9uc0NvbXBvbmVudCxcclxuICAgIEFkZEFzdGVyaXNrRGlyZWN0aXZlLFxyXG4gICAgRm9ybUNvbnRyb2xWYWxpZGF0aW9uTXNnRGlyZWN0aXZlRm9yTmdTZWxlY3QsXHJcbiAgICBUb29sdGlwTXNnRXJyb3JcclxuICBdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIE5nU2VsZWN0TW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgQXBwTWF0ZXJpYWxNb2R1bGUsXHJcbiAgICBTaGFyZWRHZW5lcmFsQ29tcG9uZW50c01vZHVsZSxcclxuICAgIEZvbnRBd2Vzb21lTW9kdWxlLFxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgQ2hvb3NlRW51bUNvbXBvbmVudCxcclxuICAgIENob29zZUVudW1SZW5kZXJlckNvbXBvbmVudCxcclxuICAgIENob29zZUdlbmVyYWxJdGVtQ29tcG9uZW50LFxyXG4gICAgR2VuZXJhbElucHV0UmVuZGVyZXJDb21wb25lbnQsXHJcbiAgICBDaG9vc2VMaW5lVHlwZUNvbXBvbmVudCxcclxuICAgIENob29zZVllc09yTm9Db21wb25lbnQsXHJcbiAgICBDaG9vc2VZZXNPck5vUmVuZGVyZXJDb21wb25lbnQsXHJcbiAgICBFZGl0YWJsZVNhdmFibGVJbnB1dENvbXBvbmVudCxcclxuICAgIERyb3Bkb3duQWN0aW9uc0NvbXBvbmVudCxcclxuICAgIER5bmFtaWNQaXBlLFxyXG4gICAgQWRkQXN0ZXJpc2tEaXJlY3RpdmVcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbnB1dHNNb2R1bGUge1xyXG5cclxuICBwdWJsaWMgc3RhdGljIGZvclJvb3QoZW52aXJvbm1lbnQ6IGFueSk6IE1vZHVsZVdpdGhQcm92aWRlcnM8SW5wdXRzTW9kdWxlPiB7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbmdNb2R1bGU6IElucHV0c01vZHVsZSxcclxuICAgICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgQ2hvb3NlR2VuZXJhbEl0ZW1TZXJ2aWNlLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHByb3ZpZGU6ICdlbnYnLFxyXG4gICAgICAgICAgdXNlVmFsdWU6IGVudmlyb25tZW50XHJcbiAgICAgICAgfVxyXG4gICAgICBdXHJcbiAgICB9O1xyXG4gIH1cclxufSJdfQ==
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXRzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2lucHV0cy9zcmMvbGliL2lucHV0cy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDcEcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sdUVBQXVFLENBQUM7QUFDM0gsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDakcsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDN0YsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDeEYsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDakgsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDdkYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDekYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQzFHLE9BQU8sRUFBRSw0Q0FBNEMsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQ3BILE9BQU8sRUFBRSx5Q0FBeUMsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ25HLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLG9FQUFvRSxDQUFDO0FBQzFILE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQzFHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpREFBaUQsQ0FBQzs7QUErQ2xGLE1BQU0sT0FBTyxZQUFZO0lBRWhCLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBZ0I7UUFFcEMsT0FBTztZQUNMLFFBQVEsRUFBRSxZQUFZO1lBQ3RCLFNBQVMsRUFBRTtnQkFDVCx3QkFBd0I7Z0JBQ3hCO29CQUNFLE9BQU8sRUFBRSxLQUFLO29CQUNkLFFBQVEsRUFBRSxXQUFXO2lCQUN0QjthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7d0dBZFUsWUFBWTt5R0FBWixZQUFZLGlCQTFDckIsbUJBQW1CO1lBQ25CLDJCQUEyQjtZQUMzQiwwQkFBMEI7WUFDMUIsNkJBQTZCO1lBQzdCLHVCQUF1QjtZQUN2QixzQkFBc0I7WUFDdEIsOEJBQThCO1lBQzlCLDZCQUE2QjtZQUM3QixXQUFXO1lBQ1gsa0NBQWtDO1lBQ2xDLG9DQUFvQztZQUNwQyx3QkFBd0I7WUFDeEIseUNBQXlDO1lBQ3pDLHdCQUF3QjtZQUN4QixvQkFBb0I7WUFDcEIsNENBQTRDO1lBQzVDLGVBQWUsYUFHZixZQUFZO1lBQ1osY0FBYztZQUNkLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsaUJBQWlCO1lBQ2pCLDZCQUE2QjtZQUM3QixpQkFBaUIsYUFHakIsbUJBQW1CO1lBQ25CLDJCQUEyQjtZQUMzQiwwQkFBMEI7WUFDMUIsNkJBQTZCO1lBQzdCLHVCQUF1QjtZQUN2QixzQkFBc0I7WUFDdEIsOEJBQThCO1lBQzlCLDZCQUE2QjtZQUM3Qix3QkFBd0I7WUFDeEIsV0FBVztZQUNYLG9CQUFvQjtZQUNwQixlQUFlO3lHQUdOLFlBQVksWUF2QnJCLFlBQVk7WUFDWixjQUFjO1lBQ2QsV0FBVztZQUNYLG1CQUFtQjtZQUNuQixpQkFBaUI7WUFDakIsNkJBQTZCO1lBQzdCLGlCQUFpQjs7NEZBaUJSLFlBQVk7a0JBNUN4QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixtQkFBbUI7d0JBQ25CLDJCQUEyQjt3QkFDM0IsMEJBQTBCO3dCQUMxQiw2QkFBNkI7d0JBQzdCLHVCQUF1Qjt3QkFDdkIsc0JBQXNCO3dCQUN0Qiw4QkFBOEI7d0JBQzlCLDZCQUE2Qjt3QkFDN0IsV0FBVzt3QkFDWCxrQ0FBa0M7d0JBQ2xDLG9DQUFvQzt3QkFDcEMsd0JBQXdCO3dCQUN4Qix5Q0FBeUM7d0JBQ3pDLHdCQUF3Qjt3QkFDeEIsb0JBQW9CO3dCQUNwQiw0Q0FBNEM7d0JBQzVDLGVBQWU7cUJBQ2hCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGNBQWM7d0JBQ2QsV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLGlCQUFpQjt3QkFDakIsNkJBQTZCO3dCQUM3QixpQkFBaUI7cUJBQ2xCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxtQkFBbUI7d0JBQ25CLDJCQUEyQjt3QkFDM0IsMEJBQTBCO3dCQUMxQiw2QkFBNkI7d0JBQzdCLHVCQUF1Qjt3QkFDdkIsc0JBQXNCO3dCQUN0Qiw4QkFBOEI7d0JBQzlCLDZCQUE2Qjt3QkFDN0Isd0JBQXdCO3dCQUN4QixXQUFXO3dCQUNYLG9CQUFvQjt3QkFDcEIsZUFBZTtxQkFDaEI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRm9udEF3ZXNvbWVNb2R1bGUgfSBmcm9tICdAZm9ydGF3ZXNvbWUvYW5ndWxhci1mb250YXdlc29tZSc7XHJcbmltcG9ydCB7IEFwcE1hdGVyaWFsTW9kdWxlIH0gZnJvbSAnQGpvb2xlci9hcHAtbWF0ZXJpYWwnO1xyXG5pbXBvcnQgeyBTaGFyZWRHZW5lcmFsQ29tcG9uZW50c01vZHVsZSB9IGZyb20gJ0Bqb29sZXIvc2hhcmVkLWdlbmVyYWwtY29tcG9uZW50cyc7XHJcbmltcG9ydCB7IE5nU2VsZWN0TW9kdWxlIH0gZnJvbSAnQG5nLXNlbGVjdC9uZy1zZWxlY3QnO1xyXG5pbXBvcnQgeyBBZGRBc3Rlcmlza0RpcmVjdGl2ZSB9IGZyb20gJy4vYWRkLWFzdGVyaXNrLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IENob29zZUVudW1SZW5kZXJlckNvbXBvbmVudCB9IGZyb20gJy4vY2hvb3NlLWVudW0tcmVuZGVyZXIvY2hvb3NlLWVudW0tcmVuZGVyZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2hvb3NlRW51bUNvbXBvbmVudCB9IGZyb20gJy4vY2hvb3NlLWVudW0vY2hvb3NlLWVudW0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2hvb3NlR2VuZXJhbEl0ZW1SZW5kZXJlckNvbXBvbmVudCB9IGZyb20gJy4vY2hvb3NlLWdlbmVyYWwtaXRlbS1yZW5kZXJlci9jaG9vc2UtZ2VuZXJhbC1pdGVtLXJlbmRlcmVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENob29zZUdlbmVyYWxJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9jaG9vc2UtZ2VuZXJhbC1pdGVtL2Nob29zZS1nZW5lcmFsLWl0ZW0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2hvb3NlR2VuZXJhbEl0ZW1TZXJ2aWNlIH0gZnJvbSAnLi9jaG9vc2UtZ2VuZXJhbC1pdGVtL2Nob29zZS1nZW5lcmFsLWl0ZW0uc2VydmljZSc7XHJcbmltcG9ydCB7IENob29zZUxpbmVUeXBlQ29tcG9uZW50IH0gZnJvbSAnLi9jaG9vc2UtbGluZS10eXBlL2Nob29zZS1saW5lLXR5cGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2hvb3NlWWVzT3JOb1JlbmRlcmVyQ29tcG9uZW50IH0gZnJvbSAnLi9jaG9vc2UteWVzLW9yLW5vLXJlbmRlcmVyL2Nob29zZS15ZXMtb3Itbm8tcmVuZGVyZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2hvb3NlWWVzT3JOb0NvbXBvbmVudCB9IGZyb20gJy4vY2hvb3NlLXllcy1vci1uby9jaG9vc2UteWVzLW9yLW5vLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERyb3Bkb3duQWN0aW9uc0NvbXBvbmVudCB9IGZyb20gJy4vZHJvcGRvd24tYWN0aW9ucy9kcm9wZG93bi1hY3Rpb25zLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IER5bmFtaWNQaXBlIH0gZnJvbSAnLi9lZGl0YWJsZS1zYXZhYmxlLWlucHV0L2R5bmFtaWNQaXBlJztcclxuaW1wb3J0IHsgRWRpdGFibGVTYXZhYmxlSW5wdXRDb21wb25lbnQgfSBmcm9tICcuL2VkaXRhYmxlLXNhdmFibGUtaW5wdXQvZWRpdGFibGUtc2F2YWJsZS1pbnB1dC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbFZhbGlkYXRpb25Nc2dEaXJlY3RpdmVGb3JOZ1NlbGVjdCB9IGZyb20gJy4vZm9ybWNvbnRyb2wtdmFsaWRhdGlvbi1tc2ctZm9yLW5nLXNlbGVjdC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbFZhbGlkYXRpb25Nc2dEaXJlY3RpdmVGb3JJbnB1dCB9IGZyb20gJy4vZm9ybWNvbnRyb2wtdmFsaWRhdGlvbi1tc2cuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ3VzdG9tRGVjaW1hbFBvaW50VHdvRGlnaXRzRGlyZWN0aXZlIH0gZnJvbSAnLi9nZW5lcmFsLWlucHV0LXJlbmRlcmVyL2N1c3RvbS1kZWNpbWFsLXBvaW50LXR3by1kaWdpdHMuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgR2VuZXJhbElucHV0UmVuZGVyZXJDb21wb25lbnQgfSBmcm9tICcuL2dlbmVyYWwtaW5wdXQtcmVuZGVyZXIvZ2VuZXJhbC1pbnB1dC1yZW5kZXJlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTaG93VGFibGVFcnJvcnNDb21wb25lbnQgfSBmcm9tICcuL3Nob3ctdGFibGUtZXJyb3JzL3Nob3ctdGFibGUtZXJyb3JzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRvb2x0aXBNc2dFcnJvciB9IGZyb20gJy4vdG9vbHRpcC1tc2ctZXJyb3IvdG9vbHRpcC1tc2ctZXJyb3IuY29tcG9uZW50JztcclxuXHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgQ2hvb3NlRW51bUNvbXBvbmVudCxcclxuICAgIENob29zZUVudW1SZW5kZXJlckNvbXBvbmVudCxcclxuICAgIENob29zZUdlbmVyYWxJdGVtQ29tcG9uZW50LFxyXG4gICAgR2VuZXJhbElucHV0UmVuZGVyZXJDb21wb25lbnQsXHJcbiAgICBDaG9vc2VMaW5lVHlwZUNvbXBvbmVudCxcclxuICAgIENob29zZVllc09yTm9Db21wb25lbnQsXHJcbiAgICBDaG9vc2VZZXNPck5vUmVuZGVyZXJDb21wb25lbnQsXHJcbiAgICBFZGl0YWJsZVNhdmFibGVJbnB1dENvbXBvbmVudCxcclxuICAgIER5bmFtaWNQaXBlLFxyXG4gICAgQ2hvb3NlR2VuZXJhbEl0ZW1SZW5kZXJlckNvbXBvbmVudCxcclxuICAgIEN1c3RvbURlY2ltYWxQb2ludFR3b0RpZ2l0c0RpcmVjdGl2ZSxcclxuICAgIFNob3dUYWJsZUVycm9yc0NvbXBvbmVudCxcclxuICAgIEZvcm1Db250cm9sVmFsaWRhdGlvbk1zZ0RpcmVjdGl2ZUZvcklucHV0LFxyXG4gICAgRHJvcGRvd25BY3Rpb25zQ29tcG9uZW50LFxyXG4gICAgQWRkQXN0ZXJpc2tEaXJlY3RpdmUsXHJcbiAgICBGb3JtQ29udHJvbFZhbGlkYXRpb25Nc2dEaXJlY3RpdmVGb3JOZ1NlbGVjdCxcclxuICAgIFRvb2x0aXBNc2dFcnJvclxyXG4gIF0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgTmdTZWxlY3RNb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBBcHBNYXRlcmlhbE1vZHVsZSxcclxuICAgIFNoYXJlZEdlbmVyYWxDb21wb25lbnRzTW9kdWxlLFxyXG4gICAgRm9udEF3ZXNvbWVNb2R1bGUsXHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBDaG9vc2VFbnVtQ29tcG9uZW50LFxyXG4gICAgQ2hvb3NlRW51bVJlbmRlcmVyQ29tcG9uZW50LFxyXG4gICAgQ2hvb3NlR2VuZXJhbEl0ZW1Db21wb25lbnQsXHJcbiAgICBHZW5lcmFsSW5wdXRSZW5kZXJlckNvbXBvbmVudCxcclxuICAgIENob29zZUxpbmVUeXBlQ29tcG9uZW50LFxyXG4gICAgQ2hvb3NlWWVzT3JOb0NvbXBvbmVudCxcclxuICAgIENob29zZVllc09yTm9SZW5kZXJlckNvbXBvbmVudCxcclxuICAgIEVkaXRhYmxlU2F2YWJsZUlucHV0Q29tcG9uZW50LFxyXG4gICAgRHJvcGRvd25BY3Rpb25zQ29tcG9uZW50LFxyXG4gICAgRHluYW1pY1BpcGUsXHJcbiAgICBBZGRBc3Rlcmlza0RpcmVjdGl2ZSxcclxuICAgIFRvb2x0aXBNc2dFcnJvclxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIElucHV0c01vZHVsZSB7XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgZm9yUm9vdChlbnZpcm9ubWVudDogYW55KTogTW9kdWxlV2l0aFByb3ZpZGVyczxJbnB1dHNNb2R1bGU+IHtcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBuZ01vZHVsZTogSW5wdXRzTW9kdWxlLFxyXG4gICAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICBDaG9vc2VHZW5lcmFsSXRlbVNlcnZpY2UsXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgcHJvdmlkZTogJ2VudicsXHJcbiAgICAgICAgICB1c2VWYWx1ZTogZW52aXJvbm1lbnRcclxuICAgICAgICB9XHJcbiAgICAgIF1cclxuICAgIH07XHJcbiAgfVxyXG59Il19