@resolveio/client-lib-core 15.1.10 → 15.1.12

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.
@@ -12,6 +12,8 @@ export class DateShortcutComponent extends BaseComponent {
12
12
  this._cd = _cd;
13
13
  this.startDateObjChange = new EventEmitter();
14
14
  this.endDateObjChange = new EventEmitter();
15
+ this.startDateObjFormChange = new EventEmitter();
16
+ this.endDateObjFormChange = new EventEmitter();
15
17
  this.datesChanged = new EventEmitter();
16
18
  this.shortcutValue = null;
17
19
  this.shortcutValueChange = new EventEmitter();
@@ -26,100 +28,191 @@ export class DateShortcutComponent extends BaseComponent {
26
28
  }
27
29
  onSelectShortcut() {
28
30
  if (this.shortcutValue) {
29
- let startDate = moment(new Date(this.startDateObj['year'], this.startDateObj['month'] - 1, this.startDateObj['day'])).toDate();
30
- let endDate = moment(new Date(this.endDateObj['year'], this.endDateObj['month'] - 1, this.endDateObj['day'])).toDate();
31
- if (this.shortcutValue === 'Q1') {
32
- startDate = moment().startOf('year').toDate();
33
- endDate = moment().startOf('year').quarter(2).subtract(1, 'days').toDate();
31
+ if (this.startDateObj && this.endDateObj) {
32
+ let startDate = moment(new Date(this.startDateObj['year'], this.startDateObj['month'] - 1, this.startDateObj['day'])).toDate();
33
+ let endDate = moment(new Date(this.endDateObj['year'], this.endDateObj['month'] - 1, this.endDateObj['day'])).toDate();
34
+ if (this.shortcutValue === 'Q1') {
35
+ startDate = moment().startOf('year').toDate();
36
+ endDate = moment().startOf('year').quarter(2).subtract(1, 'days').toDate();
37
+ }
38
+ else if (this.shortcutValue === 'Q2') {
39
+ startDate = moment().startOf('year').quarter(2).toDate();
40
+ endDate = moment().startOf('year').quarter(3).subtract(1, 'days').toDate();
41
+ }
42
+ else if (this.shortcutValue === 'Q3') {
43
+ startDate = moment().startOf('year').quarter(3).toDate();
44
+ endDate = moment().startOf('year').quarter(4).subtract(1, 'days').toDate();
45
+ }
46
+ else if (this.shortcutValue === 'Q4') {
47
+ startDate = moment().startOf('year').quarter(4).toDate();
48
+ endDate = moment().endOf('year').toDate();
49
+ }
50
+ else if (this.shortcutValue === 'Last Q1') {
51
+ startDate = moment().startOf('year').subtract(1, 'year').toDate();
52
+ endDate = moment().startOf('year').subtract(1, 'year').quarter(2).subtract(1, 'days').toDate();
53
+ }
54
+ else if (this.shortcutValue === 'Last Q2') {
55
+ startDate = moment().startOf('year').subtract(1, 'year').quarter(2).toDate();
56
+ endDate = moment().startOf('year').subtract(1, 'year').quarter(3).subtract(1, 'days').toDate();
57
+ }
58
+ else if (this.shortcutValue === 'Last Q3') {
59
+ startDate = moment().startOf('year').subtract(1, 'year').quarter(3).toDate();
60
+ endDate = moment().startOf('year').subtract(1, 'year').quarter(4).subtract(1, 'days').toDate();
61
+ }
62
+ else if (this.shortcutValue === 'Last Q4') {
63
+ startDate = moment().startOf('year').subtract(1, 'year').quarter(4).toDate();
64
+ endDate = moment().endOf('year').subtract(1, 'year').toDate();
65
+ }
66
+ else if (this.shortcutValue === 'Today') {
67
+ startDate = moment().startOf('day').toDate();
68
+ endDate = new Date();
69
+ }
70
+ else if (this.shortcutValue === 'Yesterday') {
71
+ startDate = moment().subtract(1, 'days').startOf('day').toDate();
72
+ endDate = moment().subtract(1, 'days').endOf('day').toDate();
73
+ }
74
+ else if (this.shortcutValue === 'Week') {
75
+ startDate = moment().startOf('isoWeek').toDate();
76
+ endDate = new Date();
77
+ }
78
+ else if (this.shortcutValue === 'Last Week') {
79
+ endDate = moment().startOf('isoWeek').subtract(1, 'days').toDate();
80
+ startDate = moment(endDate).startOf('isoWeek').toDate();
81
+ }
82
+ else if (this.shortcutValue === 'Month') {
83
+ startDate = moment().startOf('month').toDate();
84
+ endDate = new Date();
85
+ }
86
+ else if (this.shortcutValue === 'Last Month') {
87
+ endDate = moment().startOf('month').subtract(1, 'days').endOf('day').toDate();
88
+ startDate = moment(endDate).startOf('month').toDate();
89
+ }
90
+ else if (this.shortcutValue === 'Last 30 Days') {
91
+ endDate = new Date();
92
+ startDate = moment().subtract(30, 'days').startOf('day').toDate();
93
+ }
94
+ else if (this.shortcutValue === 'Quarter') {
95
+ startDate = moment().startOf('year').quarter(moment().quarter()).toDate();
96
+ endDate = new Date();
97
+ }
98
+ else if (this.shortcutValue === 'Last Quarter') {
99
+ endDate = moment().startOf('year').quarter(moment().quarter()).subtract(1, 'days').endOf('day').toDate();
100
+ startDate = moment(endDate).startOf('quarter').toDate();
101
+ }
102
+ else if (this.shortcutValue === 'Year') {
103
+ startDate = moment().startOf('year').toDate();
104
+ endDate = new Date();
105
+ }
106
+ else if (this.shortcutValue === 'Last Year') {
107
+ endDate = moment().startOf('year').subtract(1, 'days').endOf('day').toDate();
108
+ startDate = moment(endDate).startOf('year').toDate();
109
+ }
110
+ else if (this.shortcutValue === 'All') {
111
+ startDate = new Date(2017, 0, 1, 0, 0, 0, 0);
112
+ endDate = new Date();
113
+ }
114
+ this.startDateObj = { year: startDate.getFullYear(), month: startDate.getMonth() + 1, day: startDate.getDate() };
115
+ this.endDateObj = { year: endDate.getFullYear(), month: endDate.getMonth() + 1, day: endDate.getDate() };
116
+ this.startDateObjChange.emit(this.startDateObj);
117
+ this.endDateObjChange.emit(this.endDateObj);
118
+ this.datesChanged.emit([this.startDateObj, this.endDateObj]);
34
119
  }
35
- else if (this.shortcutValue === 'Q2') {
36
- startDate = moment().startOf('year').quarter(2).toDate();
37
- endDate = moment().startOf('year').quarter(3).subtract(1, 'days').toDate();
120
+ else if (this.startDateObjForm && this.endDateObjForm) {
121
+ let startDate = moment(new Date(this.startDateObjForm.value['year'], this.startDateObj.value['month'] - 1, this.startDateObj.value['day'])).toDate();
122
+ let endDate = moment(new Date(this.endDateObj.value['year'], this.endDateObj.value['month'] - 1, this.endDateObj.value['day'])).toDate();
123
+ if (this.shortcutValue === 'Q1') {
124
+ startDate = moment().startOf('year').toDate();
125
+ endDate = moment().startOf('year').quarter(2).subtract(1, 'days').toDate();
126
+ }
127
+ else if (this.shortcutValue === 'Q2') {
128
+ startDate = moment().startOf('year').quarter(2).toDate();
129
+ endDate = moment().startOf('year').quarter(3).subtract(1, 'days').toDate();
130
+ }
131
+ else if (this.shortcutValue === 'Q3') {
132
+ startDate = moment().startOf('year').quarter(3).toDate();
133
+ endDate = moment().startOf('year').quarter(4).subtract(1, 'days').toDate();
134
+ }
135
+ else if (this.shortcutValue === 'Q4') {
136
+ startDate = moment().startOf('year').quarter(4).toDate();
137
+ endDate = moment().endOf('year').toDate();
138
+ }
139
+ else if (this.shortcutValue === 'Last Q1') {
140
+ startDate = moment().startOf('year').subtract(1, 'year').toDate();
141
+ endDate = moment().startOf('year').subtract(1, 'year').quarter(2).subtract(1, 'days').toDate();
142
+ }
143
+ else if (this.shortcutValue === 'Last Q2') {
144
+ startDate = moment().startOf('year').subtract(1, 'year').quarter(2).toDate();
145
+ endDate = moment().startOf('year').subtract(1, 'year').quarter(3).subtract(1, 'days').toDate();
146
+ }
147
+ else if (this.shortcutValue === 'Last Q3') {
148
+ startDate = moment().startOf('year').subtract(1, 'year').quarter(3).toDate();
149
+ endDate = moment().startOf('year').subtract(1, 'year').quarter(4).subtract(1, 'days').toDate();
150
+ }
151
+ else if (this.shortcutValue === 'Last Q4') {
152
+ startDate = moment().startOf('year').subtract(1, 'year').quarter(4).toDate();
153
+ endDate = moment().endOf('year').subtract(1, 'year').toDate();
154
+ }
155
+ else if (this.shortcutValue === 'Today') {
156
+ startDate = moment().startOf('day').toDate();
157
+ endDate = new Date();
158
+ }
159
+ else if (this.shortcutValue === 'Yesterday') {
160
+ startDate = moment().subtract(1, 'days').startOf('day').toDate();
161
+ endDate = moment().subtract(1, 'days').endOf('day').toDate();
162
+ }
163
+ else if (this.shortcutValue === 'Week') {
164
+ startDate = moment().startOf('isoWeek').toDate();
165
+ endDate = new Date();
166
+ }
167
+ else if (this.shortcutValue === 'Last Week') {
168
+ endDate = moment().startOf('isoWeek').subtract(1, 'days').toDate();
169
+ startDate = moment(endDate).startOf('isoWeek').toDate();
170
+ }
171
+ else if (this.shortcutValue === 'Month') {
172
+ startDate = moment().startOf('month').toDate();
173
+ endDate = new Date();
174
+ }
175
+ else if (this.shortcutValue === 'Last Month') {
176
+ endDate = moment().startOf('month').subtract(1, 'days').endOf('day').toDate();
177
+ startDate = moment(endDate).startOf('month').toDate();
178
+ }
179
+ else if (this.shortcutValue === 'Last 30 Days') {
180
+ endDate = new Date();
181
+ startDate = moment().subtract(30, 'days').startOf('day').toDate();
182
+ }
183
+ else if (this.shortcutValue === 'Quarter') {
184
+ startDate = moment().startOf('year').quarter(moment().quarter()).toDate();
185
+ endDate = new Date();
186
+ }
187
+ else if (this.shortcutValue === 'Last Quarter') {
188
+ endDate = moment().startOf('year').quarter(moment().quarter()).subtract(1, 'days').endOf('day').toDate();
189
+ startDate = moment(endDate).startOf('quarter').toDate();
190
+ }
191
+ else if (this.shortcutValue === 'Year') {
192
+ startDate = moment().startOf('year').toDate();
193
+ endDate = new Date();
194
+ }
195
+ else if (this.shortcutValue === 'Last Year') {
196
+ endDate = moment().startOf('year').subtract(1, 'days').endOf('day').toDate();
197
+ startDate = moment(endDate).startOf('year').toDate();
198
+ }
199
+ else if (this.shortcutValue === 'All') {
200
+ startDate = new Date(2017, 0, 1, 0, 0, 0, 0);
201
+ endDate = new Date();
202
+ }
203
+ this.startDateObjForm.setValue({ year: startDate.getFullYear(), month: startDate.getMonth() + 1, day: startDate.getDate() });
204
+ this.endDateObjForm.setValue({ year: endDate.getFullYear(), month: endDate.getMonth() + 1, day: endDate.getDate() });
205
+ this.startDateObjFormChange.emit(this.startDateObjForm);
206
+ this.endDateObjFormChange.emit(this.endDateObjForm);
207
+ this.datesChanged.emit([this.startDateObjForm, this.endDateObjForm]);
38
208
  }
39
- else if (this.shortcutValue === 'Q3') {
40
- startDate = moment().startOf('year').quarter(3).toDate();
41
- endDate = moment().startOf('year').quarter(4).subtract(1, 'days').toDate();
42
- }
43
- else if (this.shortcutValue === 'Q4') {
44
- startDate = moment().startOf('year').quarter(4).toDate();
45
- endDate = moment().endOf('year').toDate();
46
- }
47
- else if (this.shortcutValue === 'Last Q1') {
48
- startDate = moment().startOf('year').subtract(1, 'year').toDate();
49
- endDate = moment().startOf('year').subtract(1, 'year').quarter(2).subtract(1, 'days').toDate();
50
- }
51
- else if (this.shortcutValue === 'Last Q2') {
52
- startDate = moment().startOf('year').subtract(1, 'year').quarter(2).toDate();
53
- endDate = moment().startOf('year').subtract(1, 'year').quarter(3).subtract(1, 'days').toDate();
54
- }
55
- else if (this.shortcutValue === 'Last Q3') {
56
- startDate = moment().startOf('year').subtract(1, 'year').quarter(3).toDate();
57
- endDate = moment().startOf('year').subtract(1, 'year').quarter(4).subtract(1, 'days').toDate();
58
- }
59
- else if (this.shortcutValue === 'Last Q4') {
60
- startDate = moment().startOf('year').subtract(1, 'year').quarter(4).toDate();
61
- endDate = moment().endOf('year').subtract(1, 'year').toDate();
62
- }
63
- else if (this.shortcutValue === 'Today') {
64
- startDate = moment().startOf('day').toDate();
65
- endDate = new Date();
66
- }
67
- else if (this.shortcutValue === 'Yesterday') {
68
- startDate = moment().subtract(1, 'days').startOf('day').toDate();
69
- endDate = moment().subtract(1, 'days').endOf('day').toDate();
70
- }
71
- else if (this.shortcutValue === 'Week') {
72
- startDate = moment().startOf('isoWeek').toDate();
73
- endDate = new Date();
74
- }
75
- else if (this.shortcutValue === 'Last Week') {
76
- endDate = moment().startOf('isoWeek').subtract(1, 'days').toDate();
77
- startDate = moment(endDate).startOf('isoWeek').toDate();
78
- }
79
- else if (this.shortcutValue === 'Month') {
80
- startDate = moment().startOf('month').toDate();
81
- endDate = new Date();
82
- }
83
- else if (this.shortcutValue === 'Last Month') {
84
- endDate = moment().startOf('month').subtract(1, 'days').endOf('day').toDate();
85
- startDate = moment(endDate).startOf('month').toDate();
86
- }
87
- else if (this.shortcutValue === 'Last 30 Days') {
88
- endDate = new Date();
89
- startDate = moment().subtract(30, 'days').startOf('day').toDate();
90
- }
91
- else if (this.shortcutValue === 'Quarter') {
92
- startDate = moment().startOf('year').quarter(moment().quarter()).toDate();
93
- endDate = new Date();
94
- }
95
- else if (this.shortcutValue === 'Last Quarter') {
96
- endDate = moment().startOf('year').quarter(moment().quarter()).subtract(1, 'days').endOf('day').toDate();
97
- startDate = moment(endDate).startOf('quarter').toDate();
98
- }
99
- else if (this.shortcutValue === 'Year') {
100
- startDate = moment().startOf('year').toDate();
101
- endDate = new Date();
102
- }
103
- else if (this.shortcutValue === 'Last Year') {
104
- endDate = moment().startOf('year').subtract(1, 'days').endOf('day').toDate();
105
- startDate = moment(endDate).startOf('year').toDate();
106
- }
107
- else if (this.shortcutValue === 'All') {
108
- startDate = new Date(2017, 0, 1, 0, 0, 0, 0);
109
- endDate = new Date();
110
- }
111
- this.startDateObj = { year: startDate.getFullYear(), month: startDate.getMonth() + 1, day: startDate.getDate() };
112
- this.endDateObj = { year: endDate.getFullYear(), month: endDate.getMonth() + 1, day: endDate.getDate() };
113
- this.startDateObjChange.emit(this.startDateObj);
114
- this.endDateObjChange.emit(this.endDateObj);
115
- this.datesChanged.emit([this.startDateObj, this.endDateObj]);
116
209
  this.shortcutValueChange.emit(this.shortcutValue);
117
210
  }
118
211
  this._cd.detectChanges();
119
212
  }
120
213
  }
121
214
  DateShortcutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DateShortcutComponent, deps: [{ token: i1.ProviderService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
122
- DateShortcutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DateShortcutComponent, selector: "date-shortcut", inputs: { startDateObj: "startDateObj", endDateObj: "endDateObj", shortcutValue: "shortcutValue" }, outputs: { startDateObjChange: "startDateObjChange", endDateObjChange: "endDateObjChange", datesChanged: "datesChanged", shortcutValueChange: "shortcutValueChange" }, providers: [ProviderService], usesInheritance: true, ngImport: i0, template: `
215
+ DateShortcutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DateShortcutComponent, selector: "date-shortcut", inputs: { startDateObj: "startDateObj", endDateObj: "endDateObj", startDateObjForm: "startDateObjForm", endDateObjForm: "endDateObjForm", shortcutValue: "shortcutValue" }, outputs: { startDateObjChange: "startDateObjChange", endDateObjChange: "endDateObjChange", startDateObjFormChange: "startDateObjFormChange", endDateObjFormChange: "endDateObjFormChange", datesChanged: "datesChanged", shortcutValueChange: "shortcutValueChange" }, providers: [ProviderService], usesInheritance: true, ngImport: i0, template: `
123
216
  <label class="form-control-label">Date Shortcuts</label>
124
217
  <ng-select [(ngModel)]="shortcutValue" (change)="onSelectShortcut()" placeholder="Select Shortcut" [clearable]="false">
125
218
  <ng-option value="Today">Today</ng-option>
@@ -180,10 +273,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
180
273
  type: Input
181
274
  }], endDateObj: [{
182
275
  type: Input
276
+ }], startDateObjForm: [{
277
+ type: Input
278
+ }], endDateObjForm: [{
279
+ type: Input
183
280
  }], startDateObjChange: [{
184
281
  type: Output
185
282
  }], endDateObjChange: [{
186
283
  type: Output
284
+ }], startDateObjFormChange: [{
285
+ type: Output
286
+ }], endDateObjFormChange: [{
287
+ type: Output
187
288
  }], datesChanged: [{
188
289
  type: Output
189
290
  }], shortcutValue: [{
@@ -191,4 +292,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
191
292
  }], shortcutValueChange: [{
192
293
  type: Output
193
294
  }] } });
194
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1zaG9ydGN1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvd2lkZ2V0cy9kYXRlLXNob3J0Y3V0L2RhdGUtc2hvcnRjdXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDM0gsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBRTVCLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7O0FBaUN2RSxNQUFNLE9BQU8scUJBQXNCLFNBQVEsYUFBYTtJQVN2RCxZQUFvQixTQUEwQixFQUFVLEdBQXNCO1FBQzdFLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQURFLGNBQVMsR0FBVCxTQUFTLENBQWlCO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFOcEUsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNoRCxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzlDLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNuQyxrQkFBYSxHQUFHLElBQUksQ0FBQztRQUNwQix3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0lBSTNELENBQUM7SUFFRCxRQUFRO1FBQ1AsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELEtBQUs7UUFDSixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUVsRCxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEs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O2dCQUNFLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0ksbUJBQW1CO3NCQUE1QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5cbmltcG9ydCB7IFByb3ZpZGVyU2VydmljZSwgQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3Jlc29sdmVpby1jbGFzcyc7XG5cbkBDb21wb25lbnQoe1xuXHRwcm92aWRlcnM6IFtQcm92aWRlclNlcnZpY2VdLFxuXHRzZWxlY3RvcjogJ2RhdGUtc2hvcnRjdXQnLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxsYWJlbCBjbGFzcz1cImZvcm0tY29udHJvbC1sYWJlbFwiPkRhdGUgU2hvcnRjdXRzPC9sYWJlbD5cblx0XHQ8bmctc2VsZWN0IFsobmdNb2RlbCldPVwic2hvcnRjdXRWYWx1ZVwiIChjaGFuZ2UpPVwib25TZWxlY3RTaG9ydGN1dCgpXCIgcGxhY2Vob2xkZXI9XCJTZWxlY3QgU2hvcnRjdXRcIiBbY2xlYXJhYmxlXT1cImZhbHNlXCI+XG5cdFx0XHQ8bmctb3B0aW9uIHZhbHVlPVwiVG9kYXlcIj5Ub2RheTwvbmctb3B0aW9uPlxuXHRcdFx0PG5nLW9wdGlvbiB2YWx1ZT1cIlllc3RlcmRheVwiPlllc3RlcmRheTwvbmctb3B0aW9uPlxuXHRcdFx0PG5nLW9wdGlvbiB2YWx1ZT1cIldlZWtcIj5UaGlzIFdlZWs8L25nLW9wdGlvbj5cblx0XHRcdDxuZy1vcHRpb24gdmFsdWU9XCJMYXN0IFdlZWtcIj5MYXN0IFdlZWs8L25nLW9wdGlvbj5cblx0XHRcdDxuZy1vcHRpb24gdmFsdWU9XCJNb250aFwiPlRoaXMgTW9udGg8L25nLW9wdGlvbj5cblx0XHRcdDxuZy1vcHRpb24gdmFsdWU9XCJMYXN0IE1vbnRoXCI+TGFzdCBNb250aDwvbmctb3B0aW9uPlxuXHRcdFx0PG5nLW9wdGlvbiB2YWx1ZT1cIkxhc3QgMzAgRGF5c1wiPkxhc3QgMzAgRGF5czwvbmctb3B0aW9uPlxuXHRcdFx0PG5nLW9wdGlvbiB2YWx1ZT1cIlF1YXJ0ZXJcIj5UaGlzIFF1YXJ0ZXI8L25nLW9wdGlvbj5cblx0XHRcdDxuZy1vcHRpb24gdmFsdWU9XCJMYXN0IFF1YXJ0ZXJcIj5MYXN0IFF1YXJ0ZXI8L25nLW9wdGlvbj5cblx0XHRcdDxuZy1vcHRpb24gdmFsdWU9XCJZZWFyXCI+VGhpcyBZZWFyPC9uZy1vcHRpb24+XG5cdFx0XHQ8bmctb3B0aW9uIHZhbHVlPVwiTGFzdCBZZWFyXCI+TGFzdCBZZWFyPC9uZy1vcHRpb24+XG5cdFx0XHQ8bmctb3B0aW9uIHZhbHVlPVwiUTFcIj5RMTwvbmctb3B0aW9uPlxuXHRcdFx0PG5nLW9wdGlvbiB2YWx1ZT1cIlEyXCI+UTI8L25nLW9wdGlvbj5cblx0XHRcdDxuZy1vcHRpb24gdmFsdWU9XCJRM1wiPlEzPC9uZy1vcHRpb24+XG5cdFx0XHQ8bmctb3B0aW9uIHZhbHVlPVwiUTRcIj5RNDwvbmctb3B0aW9uPlxuXHRcdFx0PG5nLW9wdGlvbiB2YWx1ZT1cIkxhc3QgUTFcIj5MYXN0IFExPC9uZy1vcHRpb24+XG5cdFx0XHQ8bmctb3B0aW9uIHZhbHVlPVwiTGFzdCBRMlwiPkxhc3QgUTI8L25nLW9wdGlvbj5cblx0XHRcdDxuZy1vcHRpb24gdmFsdWU9XCJMYXN0IFEzXCI+TGFzdCBRMzwvbmctb3B0aW9uPlxuXHRcdFx0PG5nLW9wdGlvbiB2YWx1ZT1cIkxhc3QgUTRcIj5MYXN0IFE0PC9uZy1vcHRpb24+XG5cdFx0XHQ8bmctb3B0aW9uIHZhbHVlPVwiQWxsXCI+QWxsPC9uZy1vcHRpb24+XG5cdFx0PC9uZy1zZWxlY3Q+XG5cdGAsXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuXG5leHBvcnQgY2xhc3MgRGF0ZVNob3J0Y3V0Q29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7IFxuXHRASW5wdXQoKSBzdGFydERhdGVPYmo7XG5cdEBJbnB1dCgpIGVuZERhdGVPYmo7XG5cdEBPdXRwdXQoKSBzdGFydERhdGVPYmpDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE9iamVjdD4oKTtcblx0QE91dHB1dCgpIGVuZERhdGVPYmpDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE9iamVjdD4oKTtcblx0QE91dHB1dCgpIGRhdGVzQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblx0QElucHV0KCkgc2hvcnRjdXRWYWx1ZSA9IG51bGw7XG5cdEBPdXRwdXQoKSBzaG9ydGN1dFZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTdHJpbmc+KCk7XG5cblx0Y29uc3RydWN0b3IocHJpdmF0ZSBfc2VydmljZXM6IFByb3ZpZGVyU2VydmljZSwgcHJpdmF0ZSBfY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7XG5cdFx0c3VwZXIoX3NlcnZpY2VzKTtcblx0fVxuXG5cdG5nT25Jbml0KCkge1xuXHRcdHRoaXMub25TZWxlY3RTaG9ydGN1dCgpO1xuXHR9XG5cblx0cmVzZXQoKSB7XG5cdFx0dGhpcy5zaG9ydGN1dFZhbHVlID0gbnVsbDtcblx0XHR0aGlzLnNob3J0Y3V0VmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnNob3J0Y3V0VmFsdWUpO1xuXG5cdFx0dGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuXHR9XG5cblx0b25TZWxlY3RTaG9ydGN1dCgpIHtcblx0XHRpZiAodGhpcy5zaG9ydGN1dFZhbHVlKSB7XG5cdFx0XHRsZXQgc3RhcnREYXRlID0gbW9tZW50KG5ldyBEYXRlKHRoaXMuc3RhcnREYXRlT2JqWyd5ZWFyJ10sIHRoaXMuc3RhcnREYXRlT2JqWydtb250aCddIC0gMSwgdGhpcy5zdGFydERhdGVPYmpbJ2RheSddKSkudG9EYXRlKCk7XG5cdFx0XHRsZXQgZW5kRGF0ZSA9IG1vbWVudChuZXcgRGF0ZSh0aGlzLmVuZERhdGVPYmpbJ3llYXInXSwgdGhpcy5lbmREYXRlT2JqWydtb250aCddIC0gMSwgdGhpcy5lbmREYXRlT2JqWydkYXknXSkpLnRvRGF0ZSgpO1xuXG5cdFx0XHRpZiAodGhpcy5zaG9ydGN1dFZhbHVlID09PSAnUTEnKSB7XG5cdFx0XHRcdHN0YXJ0RGF0ZSA9IG1vbWVudCgpLnN0YXJ0T2YoJ3llYXInKS50b0RhdGUoKTtcblx0XHRcdFx0ZW5kRGF0ZSA9IG1vbWVudCgpLnN0YXJ0T2YoJ3llYXInKS5xdWFydGVyKDIpLnN1YnRyYWN0KDEsICdkYXlzJykudG9EYXRlKCk7XG5cdFx0XHR9XG5cdFx0XHRlbHNlIGlmICh0aGlzLnNob3J0Y3V0VmFsdWUgPT09ICdRMicpIHtcblx0XHRcdFx0c3RhcnREYXRlID0gbW9tZW50KCkuc3RhcnRPZigneWVhcicpLnF1YXJ0ZXIoMikudG9EYXRlKCk7XG5cdFx0XHRcdGVuZERhdGUgPSBtb21lbnQoKS5zdGFydE9mKCd5ZWFyJykucXVhcnRlcigzKS5zdWJ0cmFjdCgxLCAnZGF5cycpLnRvRGF0ZSgpO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZSBpZiAodGhpcy5zaG9ydGN1dFZhbHVlID09PSAnUTMnKSB7XG5cdFx0XHRcdHN0YXJ0RGF0ZSA9IG1vbWVudCgpLnN0YXJ0T2YoJ3llYXInKS5xdWFydGVyKDMpLnRvRGF0ZSgpO1xuXHRcdFx0XHRlbmREYXRlID0gbW9tZW50KCkuc3RhcnRPZigneWVhcicpLnF1YXJ0ZXIoNCkuc3VidHJhY3QoMSwgJ2RheXMnKS50b0RhdGUoKTtcblx0XHRcdH1cblx0XHRcdGVsc2UgaWYgKHRoaXMuc2hvcnRjdXRWYWx1ZSA9PT0gJ1E0Jykge1xuXHRcdFx0XHRzdGFydERhdGUgPSBtb21lbnQoKS5zdGFydE9mKCd5ZWFyJykucXVhcnRlcig0KS50b0RhdGUoKTtcblx0XHRcdFx0ZW5kRGF0ZSA9IG1vbWVudCgpLmVuZE9mKCd5ZWFyJykudG9EYXRlKCk7XG5cdFx0XHR9XG5cdFx0XHRlbHNlIGlmICh0aGlzLnNob3J0Y3V0VmFsdWUgPT09ICdMYXN0IFExJykge1xuXHRcdFx0XHRzdGFydERhdGUgPSBtb21lbnQoKS5zdGFydE9mKCd5ZWFyJykuc3VidHJhY3QoMSwgJ3llYXInKS50b0RhdGUoKTtcblx0XHRcdFx0ZW5kRGF0ZSA9IG1vbWVudCgpLnN0YXJ0T2YoJ3llYXInKS5zdWJ0cmFjdCgxLCAneWVhcicpLnF1YXJ0ZXIoMikuc3VidHJhY3QoMSwgJ2RheXMnKS50b0RhdGUoKTtcblx0XHRcdH1cblx0XHRcdGVsc2UgaWYgKHRoaXMuc2hvcnRjdXRWYWx1ZSA9PT0gJ0xhc3QgUTInKSB7XG5cdFx0XHRcdHN0YXJ0RGF0ZSA9IG1vbWVudCgpLnN0YXJ0T2YoJ3llYXInKS5zdWJ0cmFjdCgxLCAneWVhcicpLnF1YXJ0ZXIoMikudG9EYXRlKCk7XG5cdFx0XHRcdGVuZERhdGUgPSBtb21lbnQoKS5zdGFydE9mKCd5ZWFyJykuc3VidHJhY3QoMSwgJ3llYXInKS5xdWFydGVyKDMpLnN1YnRyYWN0KDEsICdkYXlzJykudG9EYXRlKCk7XG5cdFx0XHR9XG5cdFx0XHRlbHNlIGlmICh0aGlzLnNob3J0Y3V0VmFsdWUgPT09ICdMYXN0IFEzJykge1xuXHRcdFx0XHRzdGFydERhdGUgPSBtb21lbnQoKS5zdGFydE9mKCd5ZWFyJykuc3VidHJhY3QoMSwgJ3llYXInKS5xdWFydGVyKDMpLnRvRGF0ZSgpO1xuXHRcdFx0XHRlbmREYXRlID0gbW9tZW50KCkuc3RhcnRPZigneWVhcicpLnN1YnRyYWN0KDEsICd5ZWFyJykucXVhcnRlcig0KS5zdWJ0cmFjdCgxLCAnZGF5cycpLnRvRGF0ZSgpO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZSBpZiAodGhpcy5zaG9ydGN1dFZhbHVlID09PSAnTGFzdCBRNCcpIHtcblx0XHRcdFx0c3RhcnREYXRlID0gbW9tZW50KCkuc3RhcnRPZigneWVhcicpLnN1YnRyYWN0KDEsICd5ZWFyJykucXVhcnRlcig0KS50b0RhdGUoKTtcblx0XHRcdFx0ZW5kRGF0ZSA9IG1vbWVudCgpLmVuZE9mKCd5ZWFyJykuc3VidHJhY3QoMSwgJ3llYXInKS50b0RhdGUoKTtcblx0XHRcdH1cblx0XHRcdGVsc2UgaWYgKHRoaXMuc2hvcnRjdXRWYWx1ZSA9PT0gJ1RvZGF5Jykge1xuXHRcdFx0XHRzdGFydERhdGUgPSBtb21lbnQoKS5zdGFydE9mKCdkYXknKS50b0RhdGUoKTtcblx0XHRcdFx0ZW5kRGF0ZSA9IG5ldyBEYXRlKCk7XG5cdFx0XHR9XG5cdFx0XHRlbHNlIGlmICh0aGlzLnNob3J0Y3V0VmFsdWUgPT09ICdZZXN0ZXJkYXknKSB7XG5cdFx0XHRcdHN0YXJ0RGF0ZSA9IG1vbWVudCgpLnN1YnRyYWN0KDEsICdkYXlzJykuc3RhcnRPZignZGF5JykudG9EYXRlKCk7XG5cdFx0XHRcdGVuZERhdGUgPSBtb21lbnQoKS5zdWJ0cmFjdCgxLCAnZGF5cycpLmVuZE9mKCdkYXknKS50b0RhdGUoKTtcblx0XHRcdH1cblx0XHRcdGVsc2UgaWYgKHRoaXMuc2hvcnRjdXRWYWx1ZSA9PT0gJ1dlZWsnKSB7XG5cdFx0XHRcdHN0YXJ0RGF0ZSA9IG1vbWVudCgpLnN0YXJ0T2YoJ2lzb1dlZWsnKS50b0RhdGUoKTtcblx0XHRcdFx0ZW5kRGF0ZSA9IG5ldyBEYXRlKCk7XG5cdFx0XHR9XG5cdFx0XHRlbHNlIGlmICh0aGlzLnNob3J0Y3V0VmFsdWUgPT09ICdMYXN0IFdlZWsnKSB7XG5cdFx0XHRcdGVuZERhdGUgPSBtb21lbnQoKS5zdGFydE9mKCdpc29XZWVrJykuc3VidHJhY3QoMSwgJ2RheXMnKS50b0RhdGUoKTtcblx0XHRcdFx0c3RhcnREYXRlID0gbW9tZW50KGVuZERhdGUpLnN0YXJ0T2YoJ2lzb1dlZWsnKS50b0RhdGUoKTtcblx0XHRcdH1cblx0XHRcdGVsc2UgaWYgKHRoaXMuc2hvcnRjdXRWYWx1ZSA9PT0gJ01vbnRoJykge1xuXHRcdFx0XHRzdGFydERhdGUgPSBtb21lbnQoKS5zdGFydE9mKCdtb250aCcpLnRvRGF0ZSgpO1xuXHRcdFx0XHRlbmREYXRlID0gbmV3IERhdGUoKTtcblx0XHRcdH1cblx0XHRcdGVsc2UgaWYgKHRoaXMuc2hvcnRjdXRWYWx1ZSA9PT0gJ0xhc3QgTW9udGgnKSB7XG5cdFx0XHRcdGVuZERhdGUgPSBtb21lbnQoKS5zdGFydE9mKCdtb250aCcpLnN1YnRyYWN0KDEsICdkYXlzJykuZW5kT2YoJ2RheScpLnRvRGF0ZSgpO1xuXHRcdFx0XHRzdGFydERhdGUgPSBtb21lbnQoZW5kRGF0ZSkuc3RhcnRPZignbW9udGgnKS50b0RhdGUoKTtcblx0XHRcdH1cblx0XHRcdGVsc2UgaWYgKHRoaXMuc2hvcnRjdXRWYWx1ZSA9PT0gJ0xhc3QgMzAgRGF5cycpIHtcblx0XHRcdFx0ZW5kRGF0ZSA9IG5ldyBEYXRlKCk7XG5cdFx0XHRcdHN0YXJ0RGF0ZSA9IG1vbWVudCgpLnN1YnRyYWN0KDMwLCAnZGF5cycpLnN0YXJ0T2YoJ2RheScpLnRvRGF0ZSgpO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZSBpZiAodGhpcy5zaG9ydGN1dFZhbHVlID09PSAnUXVhcnRlcicpIHtcblx0XHRcdFx0c3RhcnREYXRlID0gbW9tZW50KCkuc3RhcnRPZigneWVhcicpLnF1YXJ0ZXIobW9tZW50KCkucXVhcnRlcigpKS50b0RhdGUoKTtcblx0XHRcdFx0ZW5kRGF0ZSA9IG5ldyBEYXRlKCk7XG5cdFx0XHR9XG5cdFx0XHRlbHNlIGlmICh0aGlzLnNob3J0Y3V0VmFsdWUgPT09ICdMYXN0IFF1YXJ0ZXInKSB7XG5cdFx0XHRcdGVuZERhdGUgPSBtb21lbnQoKS5zdGFydE9mKCd5ZWFyJykucXVhcnRlcihtb21lbnQoKS5xdWFydGVyKCkpLnN1YnRyYWN0KDEsICdkYXlzJykuZW5kT2YoJ2RheScpLnRvRGF0ZSgpO1xuXHRcdFx0XHRzdGFydERhdGUgPSBtb21lbnQoZW5kRGF0ZSkuc3RhcnRPZigncXVhcnRlcicpLnRvRGF0ZSgpO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZSBpZiAodGhpcy5zaG9ydGN1dFZhbHVlID09PSAnWWVhcicpIHtcblx0XHRcdFx0c3RhcnREYXRlID0gbW9tZW50KCkuc3RhcnRPZigneWVhcicpLnRvRGF0ZSgpO1xuXHRcdFx0XHRlbmREYXRlID0gbmV3IERhdGUoKTtcblx0XHRcdH1cblx0XHRcdGVsc2UgaWYgKHRoaXMuc2hvcnRjdXRWYWx1ZSA9PT0gJ0xhc3QgWWVhcicpIHtcblx0XHRcdFx0ZW5kRGF0ZSA9IG1vbWVudCgpLnN0YXJ0T2YoJ3llYXInKS5zdWJ0cmFjdCgxLCAnZGF5cycpLmVuZE9mKCdkYXknKS50b0RhdGUoKTtcblx0XHRcdFx0c3RhcnREYXRlID0gbW9tZW50KGVuZERhdGUpLnN0YXJ0T2YoJ3llYXInKS50b0RhdGUoKTtcblx0XHRcdH1cblx0XHRcdGVsc2UgaWYgKHRoaXMuc2hvcnRjdXRWYWx1ZSA9PT0gJ0FsbCcpIHtcblx0XHRcdFx0c3RhcnREYXRlID0gbmV3IERhdGUoMjAxNywgMCwgMSwgMCwgMCwgMCwgMCk7XG5cdFx0XHRcdGVuZERhdGUgPSBuZXcgRGF0ZSgpO1xuXHRcdFx0fVxuXG5cdFx0XHR0aGlzLnN0YXJ0RGF0ZU9iaiA9IHt5ZWFyOiBzdGFydERhdGUuZ2V0RnVsbFllYXIoKSwgbW9udGg6IHN0YXJ0RGF0ZS5nZXRNb250aCgpICsgMSwgZGF5OiBzdGFydERhdGUuZ2V0RGF0ZSgpfTtcblx0XHRcdHRoaXMuZW5kRGF0ZU9iaiA9IHt5ZWFyOiBlbmREYXRlLmdldEZ1bGxZZWFyKCksIG1vbnRoOiBlbmREYXRlLmdldE1vbnRoKCkgKyAxLCBkYXk6IGVuZERhdGUuZ2V0RGF0ZSgpfTtcblxuXHRcdFx0dGhpcy5zdGFydERhdGVPYmpDaGFuZ2UuZW1pdCh0aGlzLnN0YXJ0RGF0ZU9iaik7XG5cdFx0XHR0aGlzLmVuZERhdGVPYmpDaGFuZ2UuZW1pdCh0aGlzLmVuZERhdGVPYmopO1xuXG5cdFx0XHR0aGlzLmRhdGVzQ2hhbmdlZC5lbWl0KFt0aGlzLnN0YXJ0RGF0ZU9iaiwgdGhpcy5lbmREYXRlT2JqXSk7XG5cblx0XHRcdHRoaXMuc2hvcnRjdXRWYWx1ZUNoYW5nZS5lbWl0KHRoaXMuc2hvcnRjdXRWYWx1ZSk7XG5cdFx0fVxuXG5cdFx0dGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuXHR9XG59XG4iXX0=
295
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1zaG9ydGN1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvd2lkZ2V0cy9kYXRlLXNob3J0Y3V0L2RhdGUtc2hvcnRjdXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDM0gsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBRTVCLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7O0FBaUN2RSxNQUFNLE9BQU8scUJBQXNCLFNBQVEsYUFBYTtJQWF2RCxZQUFvQixTQUEwQixFQUFVLEdBQXNCO1FBQzdFLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQURFLGNBQVMsR0FBVCxTQUFTLENBQWlCO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFScEUsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNoRCxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzlDLDJCQUFzQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDcEQseUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNsRCxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbkMsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFDcEIsd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztJQUkzRCxDQUFDO0lBRUQsUUFBUTtRQUNQLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxLQUFLO1FBQ0osSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLG1C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IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5cbmltcG9ydCB7IFByb3ZpZGVyU2VydmljZSwgQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3Jlc29sdmVpby1jbGFzcyc7XG5cbkBDb21wb25lbnQoe1xuXHRwcm92aWRlcnM6IFtQcm92aWRlclNlcnZpY2VdLFxuXHRzZWxlY3RvcjogJ2RhdGUtc2hvcnRjdXQnLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxsYWJlbCBjbGFzcz1cImZvcm0tY29udHJvbC1sYWJlbFwiPkRhdGUgU2hvcnRjdXRzPC9sYWJlbD5cblx0XHQ8bmctc2VsZWN0IFsobmdNb2RlbCldPVwic2hvcnRjdXRWYWx1ZVwiIChjaGFuZ2UpPVwib25TZWxlY3RTaG9ydGN1dCgpXCIgcGxhY2Vob2xkZXI9XCJTZWxlY3QgU2hvcnRjdXRcIiBbY2xlYXJhYmxlXT1cImZhbHNlXCI+XG5cdFx0XHQ8bmctb3B0aW9uIHZhbHVlPVwiVG9kYXlcIj5Ub2RheTwvbmctb3B0aW9uPlxuXHRcdFx0PG5nLW9wdGlvbiB2YWx1ZT1cIlllc3RlcmRheVwiPlllc3RlcmRheTwvbmctb3B0aW9uPlxuXHRcdFx0PG5nLW9wdGlvbiB2YWx1ZT1cIldlZWtcIj5UaGlzIFdlZWs8L25nLW9wdGlvbj5cblx0XHRcdDxuZy1vcHRpb24gdmFsdWU9XCJMYXN0IFdlZWtcIj5MYXN0IFdlZWs8L25nLW9wdGlvbj5cblx0XHRcdDxuZy1vcHRpb24gdmFsdWU9XCJNb250aFwiPlRoaXMgTW9udGg8L25nLW9wdGlvbj5cblx0XHRcdDxuZy1vcHRpb24gdmFsdWU9XCJMYXN0IE1vbnRoXCI+TGFzdCBNb250aDwvbmctb3B0aW9uPlxuXHRcdFx0PG5nLW9wdGlvbiB2YWx1ZT1cIkxhc3QgMzAgRGF5c1wiPkxhc3QgMzAgRGF5czwvbmctb3B0aW9uPlxuXHRcdFx0PG5nLW9wdGlvbiB2YWx1ZT1cIlF1YXJ0ZXJcIj5UaGlzIFF1YXJ0ZXI8L25nLW9wdGlvbj5cblx0XHRcdDxuZy1vcHRpb24gdmFsdWU9XCJMYXN0IFF1YXJ0ZXJcIj5MYXN0IFF1YXJ0ZXI8L25nLW9wdGlvbj5cblx0XHRcdDxuZy1vcHRpb24gdmFsdWU9XCJZZWFyXCI+VGhpcyBZZWFyPC9uZy1vcHRpb24+XG5cdFx0XHQ8bmctb3B0aW9uIHZhbHVlPVwiTGFzdCBZZWFyXCI+TGFzdCBZZWFyPC9uZy1vcHRpb24+XG5cdFx0XHQ8bmctb3B0aW9uIHZhbHVlPVwiUTFcIj5RMTwvbmctb3B0aW9uPlxuXHRcdFx0PG5nLW9wdGlvbiB2YWx1ZT1cIlEyXCI+UTI8L25nLW9wdGlvbj5cblx0XHRcdDxuZy1vcHRpb24gdmFsdWU9XCJRM1wiPlEzPC9uZy1vcHRpb24+XG5cdFx0XHQ8bmctb3B0aW9uIHZhbHVlPVwiUTRcIj5RNDwvbmctb3B0aW9uPlxuXHRcdFx0PG5nLW9wdGlvbiB2YWx1ZT1cIkxhc3QgUTFcIj5MYXN0IFExPC9uZy1vcHRpb24+XG5cdFx0XHQ8bmctb3B0aW9uIHZhbHVlPVwiTGFzdCBRMlwiPkxhc3QgUTI8L25nLW9wdGlvbj5cblx0XHRcdDxuZy1vcHRpb24gdmFsdWU9XCJMYXN0IFEzXCI+TGFzdCBRMzwvbmctb3B0aW9uPlxuXHRcdFx0PG5nLW9wdGlvbiB2YWx1ZT1cIkxhc3QgUTRcIj5MYXN0IFE0PC9uZy1vcHRpb24+XG5cdFx0XHQ8bmctb3B0aW9uIHZhbHVlPVwiQWxsXCI+QWxsPC9uZy1vcHRpb24+XG5cdFx0PC9uZy1zZWxlY3Q+XG5cdGAsXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuXG5leHBvcnQgY2xhc3MgRGF0ZVNob3J0Y3V0Q29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7IFxuXHRASW5wdXQoKSBzdGFydERhdGVPYmo7XG5cdEBJbnB1dCgpIGVuZERhdGVPYmo7XG5cdEBJbnB1dCgpIHN0YXJ0RGF0ZU9iakZvcm07XG5cdEBJbnB1dCgpIGVuZERhdGVPYmpGb3JtO1xuXHRAT3V0cHV0KCkgc3RhcnREYXRlT2JqQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxPYmplY3Q+KCk7XG5cdEBPdXRwdXQoKSBlbmREYXRlT2JqQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxPYmplY3Q+KCk7XG5cdEBPdXRwdXQoKSBzdGFydERhdGVPYmpGb3JtQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxPYmplY3Q+KCk7XG5cdEBPdXRwdXQoKSBlbmREYXRlT2JqRm9ybUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8T2JqZWN0PigpO1xuXHRAT3V0cHV0KCkgZGF0ZXNDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXHRASW5wdXQoKSBzaG9ydGN1dFZhbHVlID0gbnVsbDtcblx0QE91dHB1dCgpIHNob3J0Y3V0VmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFN0cmluZz4oKTtcblxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIF9zZXJ2aWNlczogUHJvdmlkZXJTZXJ2aWNlLCBwcml2YXRlIF9jZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcblx0XHRzdXBlcihfc2VydmljZXMpO1xuXHR9XG5cblx0bmdPbkluaXQoKSB7XG5cdFx0dGhpcy5vblNlbGVjdFNob3J0Y3V0KCk7XG5cdH1cblxuXHRyZXNldCgpIHtcblx0XHR0aGlzLnNob3J0Y3V0VmFsdWUgPSBudWxsO1xuXHRcdHRoaXMuc2hvcnRjdXRWYWx1ZUNoYW5nZS5lbWl0KHRoaXMuc2hvcnRjdXRWYWx1ZSk7XG5cblx0XHR0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG5cdH1cblxuXHRvblNlbGVjdFNob3J0Y3V0KCkge1xuXHRcdGlmICh0aGlzLnNob3J0Y3V0VmFsdWUpIHtcblx0XHRcdGlmICh0aGlzLnN0YXJ0RGF0ZU9iaiAmJiB0aGlzLmVuZERhdGVPYmopIHtcblx0XHRcdFx0bGV0IHN0YXJ0RGF0ZSA9IG1vbWVudChuZXcgRGF0ZSh0aGlzLnN0YXJ0RGF0ZU9ialsneWVhciddLCB0aGlzLnN0YXJ0RGF0ZU9ialsnbW9udGgnXSAtIDEsIHRoaXMuc3RhcnREYXRlT2JqWydkYXknXSkpLnRvRGF0ZSgpO1xuXHRcdFx0XHRsZXQgZW5kRGF0ZSA9IG1vbWVudChuZXcgRGF0ZSh0aGlzLmVuZERhdGVPYmpbJ3llYXInXSwgdGhpcy5lbmREYXRlT2JqWydtb250aCddIC0gMSwgdGhpcy5lbmREYXRlT2JqWydkYXknXSkpLnRvRGF0ZSgpO1xuXG5cdFx0XHRcdGlmICh0aGlzLnNob3J0Y3V0VmFsdWUgPT09ICdRMScpIHtcblx0XHRcdFx0XHRzdGFydERhdGUgPSBtb21lbnQoKS5zdGFydE9mKCd5ZWFyJykudG9EYXRlKCk7XG5cdFx0XHRcdFx0ZW5kRGF0ZSA9IG1vbWVudCgpLnN0YXJ0T2YoJ3llYXInKS5xdWFydGVyKDIpLnN1YnRyYWN0KDEsICdkYXlzJykudG9EYXRlKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSBpZiAodGhpcy5zaG9ydGN1dFZhbHVlID09PSAnUTInKSB7XG5cdFx0XHRcdFx0c3RhcnREYXRlID0gbW9tZW50KCkuc3RhcnRPZigneWVhcicpLnF1YXJ0ZXIoMikudG9EYXRlKCk7XG5cdFx0XHRcdFx0ZW5kRGF0ZSA9IG1vbWVudCgpLnN0YXJ0T2YoJ3llYXInKS5xdWFydGVyKDMpLnN1YnRyYWN0KDEsICdkYXlzJykudG9EYXRlKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSBpZiAodGhpcy5zaG9ydGN1dFZhbHVlID09PSAnUTMnKSB7XG5cdFx0XHRcdFx0c3RhcnREYXRlID0gbW9tZW50KCkuc3RhcnRPZigneWVhcicpLnF1YXJ0ZXIoMykudG9EYXRlKCk7XG5cdFx0XHRcdFx0ZW5kRGF0ZSA9IG1vbWVudCgpLnN0YXJ0T2YoJ3llYXInKS5xdWFydGVyKDQpLnN1YnRyYWN0KDEsICdkYXlzJykudG9EYXRlKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSBpZiAodGhpcy5zaG9ydGN1dFZhbHVlID09PSAnUTQnKSB7XG5cdFx0XHRcdFx0c3RhcnREYXRlID0gbW9tZW50KCkuc3RhcnRPZigneWVhcicpLnF1YXJ0ZXIoNCkudG9EYXRlKCk7XG5cdFx0XHRcdFx0ZW5kRGF0ZSA9IG1vbWVudCgpLmVuZE9mKCd5ZWFyJykudG9EYXRlKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSBpZiAodGhpcy5zaG9ydGN1dFZhbHVlID09PSAnTGFzdCBRMScpIHtcblx0XHRcdFx0XHRzdGFydERhdGUgPSBtb21lbnQoKS5zdGFydE9mKCd5ZWFyJykuc3VidHJhY3QoMSwgJ3llYXInKS50b0RhdGUoKTtcblx0XHRcdFx0XHRlbmREYXRlID0gbW9tZW50KCkuc3RhcnRPZigneWVhcicpLnN1YnRyYWN0KDEsICd5ZWFyJykucXVhcnRlcigyKS5zdWJ0cmFjdCgxLCAnZGF5cycpLnRvRGF0ZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2UgaWYgKHRoaXMuc2hvcnRjdXRWYWx1ZSA9PT0gJ0xhc3QgUTInKSB7XG5cdFx0XHRcdFx0c3RhcnREYXRlID0gbW9tZW50KCkuc3RhcnRPZigneWVhcicpLnN1YnRyYWN0KDEsICd5ZWFyJykucXVhcnRlcigyKS50b0RhdGUoKTtcblx0XHRcdFx0XHRlbmREYXRlID0gbW9tZW50KCkuc3RhcnRPZigneWVhcicpLnN1YnRyYWN0KDEsICd5ZWFyJykucXVhcnRlcigzKS5zdWJ0cmFjdCgxLCAnZGF5cycpLnRvRGF0ZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2UgaWYgKHRoaXMuc2hvcnRjdXRWYWx1ZSA9PT0gJ0xhc3QgUTMnKSB7XG5cdFx0XHRcdFx0c3RhcnREYXRlID0gbW9tZW50KCkuc3RhcnRPZigneWVhcicpLnN1YnRyYWN0KDEsICd5ZWFyJykucXVhcnRlcigzKS50b0RhdGUoKTtcblx0XHRcdFx0XHRlbmREYXRlID0gbW9tZW50KCkuc3RhcnRPZigneWVhcicpLnN1YnRyYWN0KDEsICd5ZWFyJykucXVhcnRlcig0KS5zdWJ0cmFjdCgxLCAnZGF5cycpLnRvRGF0ZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2UgaWYgKHRoaXMuc2hvcnRjdXRWYWx1ZSA9PT0gJ0xhc3QgUTQnKSB7XG5cdFx0XHRcdFx0c3RhcnREYXRlID0gbW9tZW50KCkuc3RhcnRPZigneWVhcicpLnN1YnRyYWN0KDEsICd5ZWFyJykucXVhcnRlcig0KS50b0RhdGUoKTtcblx0XHRcdFx0XHRlbmREYXRlID0gbW9tZW50KCkuZW5kT2YoJ3llYXInKS5zdWJ0cmFjdCgxLCAneWVhcicpLnRvRGF0ZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2UgaWYgKHRoaXMuc2hvcnRjdXRWYWx1ZSA9PT0gJ1RvZGF5Jykge1xuXHRcdFx0XHRcdHN0YXJ0RGF0ZSA9IG1vbWVudCgpLnN0YXJ0T2YoJ2RheScpLnRvRGF0ZSgpO1xuXHRcdFx0XHRcdGVuZERhdGUgPSBuZXcgRGF0ZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2UgaWYgKHRoaXMuc2hvcnRjdXRWYWx1ZSA9PT0gJ1llc3RlcmRheScpIHtcblx0XHRcdFx0XHRzdGFydERhdGUgPSBtb21lbnQoKS5zdWJ0cmFjdCgxLCAnZGF5cycpLnN0YXJ0T2YoJ2RheScpLnRvRGF0ZSgpO1xuXHRcdFx0XHRcdGVuZERhdGUgPSBtb21lbnQoKS5zdWJ0cmFjdCgxLCAnZGF5cycpLmVuZE9mKCdkYXknKS50b0RhdGUoKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIGlmICh0aGlzLnNob3J0Y3V0VmFsdWUgPT09ICdXZWVrJykge1xuXHRcdFx0XHRcdHN0YXJ0RGF0ZSA9IG1vbWVudCgpLnN0YXJ0T2YoJ2lzb1dlZWsnKS50b0RhdGUoKTtcblx0XHRcdFx0XHRlbmREYXRlID0gbmV3IERhdGUoKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIGlmICh0aGlzLnNob3J0Y3V0VmFsdWUgPT09ICdMYXN0IFdlZWsnKSB7XG5cdFx0XHRcdFx0ZW5kRGF0ZSA9IG1vbWVudCgpLnN0YXJ0T2YoJ2lzb1dlZWsnKS5zdWJ0cmFjdCgxLCAnZGF5cycpLnRvRGF0ZSgpO1xuXHRcdFx0XHRcdHN0YXJ0RGF0ZSA9IG1vbWVudChlbmREYXRlKS5zdGFydE9mKCdpc29XZWVrJykudG9EYXRlKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSBpZiAodGhpcy5zaG9ydGN1dFZhbHVlID09PSAnTW9udGgnKSB7XG5cdFx0XHRcdFx0c3RhcnREYXRlID0gbW9tZW50KCkuc3RhcnRPZignbW9udGgnKS50b0RhdGUoKTtcblx0XHRcdFx0XHRlbmREYXRlID0gbmV3IERhdGUoKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIGlmICh0aGlzLnNob3J0Y3V0VmFsdWUgPT09ICdMYXN0IE1vbnRoJykge1xuXHRcdFx0XHRcdGVuZERhdGUgPSBtb21lbnQoKS5zdGFydE9mKCdtb250aCcpLnN1YnRyYWN0KDEsICdkYXlzJykuZW5kT2YoJ2RheScpLnRvRGF0ZSgpO1xuXHRcdFx0XHRcdHN0YXJ0RGF0ZSA9IG1vbWVudChlbmREYXRlKS5zdGFydE9mKCdtb250aCcpLnRvRGF0ZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2UgaWYgKHRoaXMuc2hvcnRjdXRWYWx1ZSA9PT0gJ0xhc3QgMzAgRGF5cycpIHtcblx0XHRcdFx0XHRlbmREYXRlID0gbmV3IERhdGUoKTtcblx0XHRcdFx0XHRzdGFydERhdGUgPSBtb21lbnQoKS5zdWJ0cmFjdCgzMCwgJ2RheXMnKS5zdGFydE9mKCdkYXknKS50b0RhdGUoKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIGlmICh0aGlzLnNob3J0Y3V0VmFsdWUgPT09ICdRdWFydGVyJykge1xuXHRcdFx0XHRcdHN0YXJ0RGF0ZSA9IG1vbWVudCgpLnN0YXJ0T2YoJ3llYXInKS5xdWFydGVyKG1vbWVudCgpLnF1YXJ0ZXIoKSkudG9EYXRlKCk7XG5cdFx0XHRcdFx0ZW5kRGF0ZSA9IG5ldyBEYXRlKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSBpZiAodGhpcy5zaG9ydGN1dFZhbHVlID09PSAnTGFzdCBRdWFydGVyJykge1xuXHRcdFx0XHRcdGVuZERhdGUgPSBtb21lbnQoKS5zdGFydE9mKCd5ZWFyJykucXVhcnRlcihtb21lbnQoKS5xdWFydGVyKCkpLnN1YnRyYWN0KDEsICdkYXlzJykuZW5kT2YoJ2RheScpLnRvRGF0ZSgpO1xuXHRcdFx0XHRcdHN0YXJ0RGF0ZSA9IG1vbWVudChlbmREYXRlKS5zdGFydE9mKCdxdWFydGVyJykudG9EYXRlKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSBpZiAodGhpcy5zaG9ydGN1dFZhbHVlID09PSAnWWVhcicpIHtcblx0XHRcdFx0XHRzdGFydERhdGUgPSBtb21lbnQoKS5zdGFydE9mKCd5ZWFyJykudG9EYXRlKCk7XG5cdFx0XHRcdFx0ZW5kRGF0ZSA9IG5ldyBEYXRlKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSBpZiAodGhpcy5zaG9ydGN1dFZhbHVlID09PSAnTGFzdCBZZWFyJykge1xuXHRcdFx0XHRcdGVuZERhdGUgPSBtb21lbnQoKS5zdGFydE9mKCd5ZWFyJykuc3VidHJhY3QoMSwgJ2RheXMnKS5lbmRPZignZGF5JykudG9EYXRlKCk7XG5cdFx0XHRcdFx0c3RhcnREYXRlID0gbW9tZW50KGVuZERhdGUpLnN0YXJ0T2YoJ3llYXInKS50b0RhdGUoKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIGlmICh0aGlzLnNob3J0Y3V0VmFsdWUgPT09ICdBbGwnKSB7XG5cdFx0XHRcdFx0c3RhcnREYXRlID0gbmV3IERhdGUoMjAxNywgMCwgMSwgMCwgMCwgMCwgMCk7XG5cdFx0XHRcdFx0ZW5kRGF0ZSA9IG5ldyBEYXRlKCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR0aGlzLnN0YXJ0RGF0ZU9iaiA9IHt5ZWFyOiBzdGFydERhdGUuZ2V0RnVsbFllYXIoKSwgbW9udGg6IHN0YXJ0RGF0ZS5nZXRNb250aCgpICsgMSwgZGF5OiBzdGFydERhdGUuZ2V0RGF0ZSgpfTtcblx0XHRcdFx0dGhpcy5lbmREYXRlT2JqID0ge3llYXI6IGVuZERhdGUuZ2V0RnVsbFllYXIoKSwgbW9udGg6IGVuZERhdGUuZ2V0TW9udGgoKSArIDEsIGRheTogZW5kRGF0ZS5nZXREYXRlKCl9O1xuXG5cdFx0XHRcdHRoaXMuc3RhcnREYXRlT2JqQ2hhbmdlLmVtaXQodGhpcy5zdGFydERhdGVPYmopO1xuXHRcdFx0XHR0aGlzLmVuZERhdGVPYmpDaGFuZ2UuZW1pdCh0aGlzLmVuZERhdGVPYmopO1xuXG5cdFx0XHRcdHRoaXMuZGF0ZXNDaGFuZ2VkLmVtaXQoW3RoaXMuc3RhcnREYXRlT2JqLCB0aGlzLmVuZERhdGVPYmpdKTtcblx0XHRcdH1cblx0XHRcdGVsc2UgaWYgKHRoaXMuc3RhcnREYXRlT2JqRm9ybSAmJiB0aGlzLmVuZERhdGVPYmpGb3JtKSB7XG5cdFx0XHRcdGxldCBzdGFydERhdGUgPSBtb21lbnQobmV3IERhdGUodGhpcy5zdGFydERhdGVPYmpGb3JtLnZhbHVlWyd5ZWFyJ10sIHRoaXMuc3RhcnREYXRlT2JqLnZhbHVlWydtb250aCddIC0gMSwgdGhpcy5zdGFydERhdGVPYmoudmFsdWVbJ2RheSddKSkudG9EYXRlKCk7XG5cdFx0XHRcdGxldCBlbmREYXRlID0gbW9tZW50KG5ldyBEYXRlKHRoaXMuZW5kRGF0ZU9iai52YWx1ZVsneWVhciddLCB0aGlzLmVuZERhdGVPYmoudmFsdWVbJ21vbnRoJ10gLSAxLCB0aGlzLmVuZERhdGVPYmoudmFsdWVbJ2RheSddKSkudG9EYXRlKCk7XG5cblx0XHRcdFx0aWYgKHRoaXMuc2hvcnRjdXRWYWx1ZSA9PT0gJ1ExJykge1xuXHRcdFx0XHRcdHN0YXJ0RGF0ZSA9IG1vbWVudCgpLnN0YXJ0T2YoJ3llYXInKS50b0RhdGUoKTtcblx0XHRcdFx0XHRlbmREYXRlID0gbW9tZW50KCkuc3RhcnRPZigneWVhcicpLnF1YXJ0ZXIoMikuc3VidHJhY3QoMSwgJ2RheXMnKS50b0RhdGUoKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIGlmICh0aGlzLnNob3J0Y3V0VmFsdWUgPT09ICdRMicpIHtcblx0XHRcdFx0XHRzdGFydERhdGUgPSBtb21lbnQoKS5zdGFydE9mKCd5ZWFyJykucXVhcnRlcigyKS50b0RhdGUoKTtcblx0XHRcdFx0XHRlbmREYXRlID0gbW9tZW50KCkuc3RhcnRPZigneWVhcicpLnF1YXJ0ZXIoMykuc3VidHJhY3QoMSwgJ2RheXMnKS50b0RhdGUoKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIGlmICh0aGlzLnNob3J0Y3V0VmFsdWUgPT09ICdRMycpIHtcblx0XHRcdFx0XHRzdGFydERhdGUgPSBtb21lbnQoKS5zdGFydE9mKCd5ZWFyJykucXVhcnRlcigzKS50b0RhdGUoKTtcblx0XHRcdFx0XHRlbmREYXRlID0gbW9tZW50KCkuc3RhcnRPZigneWVhcicpLnF1YXJ0ZXIoNCkuc3VidHJhY3QoMSwgJ2RheXMnKS50b0RhdGUoKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIGlmICh0aGlzLnNob3J0Y3V0VmFsdWUgPT09ICdRNCcpIHtcblx0XHRcdFx0XHRzdGFydERhdGUgPSBtb21lbnQoKS5zdGFydE9mKCd5ZWFyJykucXVhcnRlcig0KS50b0RhdGUoKTtcblx0XHRcdFx0XHRlbmREYXRlID0gbW9tZW50KCkuZW5kT2YoJ3llYXInKS50b0RhdGUoKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIGlmICh0aGlzLnNob3J0Y3V0VmFsdWUgPT09ICdMYXN0IFExJykge1xuXHRcdFx0XHRcdHN0YXJ0RGF0ZSA9IG1vbWVudCgpLnN0YXJ0T2YoJ3llYXInKS5zdWJ0cmFjdCgxLCAneWVhcicpLnRvRGF0ZSgpO1xuXHRcdFx0XHRcdGVuZERhdGUgPSBtb21lbnQoKS5zdGFydE9mKCd5ZWFyJykuc3VidHJhY3QoMSwgJ3llYXInKS5xdWFydGVyKDIpLnN1YnRyYWN0KDEsICdkYXlzJykudG9EYXRlKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSBpZiAodGhpcy5zaG9ydGN1dFZhbHVlID09PSAnTGFzdCBRMicpIHtcblx0XHRcdFx0XHRzdGFydERhdGUgPSBtb21lbnQoKS5zdGFydE9mKCd5ZWFyJykuc3VidHJhY3QoMSwgJ3llYXInKS5xdWFydGVyKDIpLnRvRGF0ZSgpO1xuXHRcdFx0XHRcdGVuZERhdGUgPSBtb21lbnQoKS5zdGFydE9mKCd5ZWFyJykuc3VidHJhY3QoMSwgJ3llYXInKS5xdWFydGVyKDMpLnN1YnRyYWN0KDEsICdkYXlzJykudG9EYXRlKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSBpZiAodGhpcy5zaG9ydGN1dFZhbHVlID09PSAnTGFzdCBRMycpIHtcblx0XHRcdFx0XHRzdGFydERhdGUgPSBtb21lbnQoKS5zdGFydE9mKCd5ZWFyJykuc3VidHJhY3QoMSwgJ3llYXInKS5xdWFydGVyKDMpLnRvRGF0ZSgpO1xuXHRcdFx0XHRcdGVuZERhdGUgPSBtb21lbnQoKS5zdGFydE9mKCd5ZWFyJykuc3VidHJhY3QoMSwgJ3llYXInKS5xdWFydGVyKDQpLnN1YnRyYWN0KDEsICdkYXlzJykudG9EYXRlKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSBpZiAodGhpcy5zaG9ydGN1dFZhbHVlID09PSAnTGFzdCBRNCcpIHtcblx0XHRcdFx0XHRzdGFydERhdGUgPSBtb21lbnQoKS5zdGFydE9mKCd5ZWFyJykuc3VidHJhY3QoMSwgJ3llYXInKS5xdWFydGVyKDQpLnRvRGF0ZSgpO1xuXHRcdFx0XHRcdGVuZERhdGUgPSBtb21lbnQoKS5lbmRPZigneWVhcicpLnN1YnRyYWN0KDEsICd5ZWFyJykudG9EYXRlKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSBpZiAodGhpcy5zaG9ydGN1dFZhbHVlID09PSAnVG9kYXknKSB7XG5cdFx0XHRcdFx0c3RhcnREYXRlID0gbW9tZW50KCkuc3RhcnRPZignZGF5JykudG9EYXRlKCk7XG5cdFx0XHRcdFx0ZW5kRGF0ZSA9IG5ldyBEYXRlKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSBpZiAodGhpcy5zaG9ydGN1dFZhbHVlID09PSAnWWVzdGVyZGF5Jykge1xuXHRcdFx0XHRcdHN0YXJ0RGF0ZSA9IG1vbWVudCgpLnN1YnRyYWN0KDEsICdkYXlzJykuc3RhcnRPZignZGF5JykudG9EYXRlKCk7XG5cdFx0XHRcdFx0ZW5kRGF0ZSA9IG1vbWVudCgpLnN1YnRyYWN0KDEsICdkYXlzJykuZW5kT2YoJ2RheScpLnRvRGF0ZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2UgaWYgKHRoaXMuc2hvcnRjdXRWYWx1ZSA9PT0gJ1dlZWsnKSB7XG5cdFx0XHRcdFx0c3RhcnREYXRlID0gbW9tZW50KCkuc3RhcnRPZignaXNvV2VlaycpLnRvRGF0ZSgpO1xuXHRcdFx0XHRcdGVuZERhdGUgPSBuZXcgRGF0ZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2UgaWYgKHRoaXMuc2hvcnRjdXRWYWx1ZSA9PT0gJ0xhc3QgV2VlaycpIHtcblx0XHRcdFx0XHRlbmREYXRlID0gbW9tZW50KCkuc3RhcnRPZignaXNvV2VlaycpLnN1YnRyYWN0KDEsICdkYXlzJykudG9EYXRlKCk7XG5cdFx0XHRcdFx0c3RhcnREYXRlID0gbW9tZW50KGVuZERhdGUpLnN0YXJ0T2YoJ2lzb1dlZWsnKS50b0RhdGUoKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIGlmICh0aGlzLnNob3J0Y3V0VmFsdWUgPT09ICdNb250aCcpIHtcblx0XHRcdFx0XHRzdGFydERhdGUgPSBtb21lbnQoKS5zdGFydE9mKCdtb250aCcpLnRvRGF0ZSgpO1xuXHRcdFx0XHRcdGVuZERhdGUgPSBuZXcgRGF0ZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2UgaWYgKHRoaXMuc2hvcnRjdXRWYWx1ZSA9PT0gJ0xhc3QgTW9udGgnKSB7XG5cdFx0XHRcdFx0ZW5kRGF0ZSA9IG1vbWVudCgpLnN0YXJ0T2YoJ21vbnRoJykuc3VidHJhY3QoMSwgJ2RheXMnKS5lbmRPZignZGF5JykudG9EYXRlKCk7XG5cdFx0XHRcdFx0c3RhcnREYXRlID0gbW9tZW50KGVuZERhdGUpLnN0YXJ0T2YoJ21vbnRoJykudG9EYXRlKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSBpZiAodGhpcy5zaG9ydGN1dFZhbHVlID09PSAnTGFzdCAzMCBEYXlzJykge1xuXHRcdFx0XHRcdGVuZERhdGUgPSBuZXcgRGF0ZSgpO1xuXHRcdFx0XHRcdHN0YXJ0RGF0ZSA9IG1vbWVudCgpLnN1YnRyYWN0KDMwLCAnZGF5cycpLnN0YXJ0T2YoJ2RheScpLnRvRGF0ZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2UgaWYgKHRoaXMuc2hvcnRjdXRWYWx1ZSA9PT0gJ1F1YXJ0ZXInKSB7XG5cdFx0XHRcdFx0c3RhcnREYXRlID0gbW9tZW50KCkuc3RhcnRPZigneWVhcicpLnF1YXJ0ZXIobW9tZW50KCkucXVhcnRlcigpKS50b0RhdGUoKTtcblx0XHRcdFx0XHRlbmREYXRlID0gbmV3IERhdGUoKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIGlmICh0aGlzLnNob3J0Y3V0VmFsdWUgPT09ICdMYXN0IFF1YXJ0ZXInKSB7XG5cdFx0XHRcdFx0ZW5kRGF0ZSA9IG1vbWVudCgpLnN0YXJ0T2YoJ3llYXInKS5xdWFydGVyKG1vbWVudCgpLnF1YXJ0ZXIoKSkuc3VidHJhY3QoMSwgJ2RheXMnKS5lbmRPZignZGF5JykudG9EYXRlKCk7XG5cdFx0XHRcdFx0c3RhcnREYXRlID0gbW9tZW50KGVuZERhdGUpLnN0YXJ0T2YoJ3F1YXJ0ZXInKS50b0RhdGUoKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIGlmICh0aGlzLnNob3J0Y3V0VmFsdWUgPT09ICdZZWFyJykge1xuXHRcdFx0XHRcdHN0YXJ0RGF0ZSA9IG1vbWVudCgpLnN0YXJ0T2YoJ3llYXInKS50b0RhdGUoKTtcblx0XHRcdFx0XHRlbmREYXRlID0gbmV3IERhdGUoKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIGlmICh0aGlzLnNob3J0Y3V0VmFsdWUgPT09ICdMYXN0IFllYXInKSB7XG5cdFx0XHRcdFx0ZW5kRGF0ZSA9IG1vbWVudCgpLnN0YXJ0T2YoJ3llYXInKS5zdWJ0cmFjdCgxLCAnZGF5cycpLmVuZE9mKCdkYXknKS50b0RhdGUoKTtcblx0XHRcdFx0XHRzdGFydERhdGUgPSBtb21lbnQoZW5kRGF0ZSkuc3RhcnRPZigneWVhcicpLnRvRGF0ZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2UgaWYgKHRoaXMuc2hvcnRjdXRWYWx1ZSA9PT0gJ0FsbCcpIHtcblx0XHRcdFx0XHRzdGFydERhdGUgPSBuZXcgRGF0ZSgyMDE3LCAwLCAxLCAwLCAwLCAwLCAwKTtcblx0XHRcdFx0XHRlbmREYXRlID0gbmV3IERhdGUoKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHRoaXMuc3RhcnREYXRlT2JqRm9ybS5zZXRWYWx1ZSh7eWVhcjogc3RhcnREYXRlLmdldEZ1bGxZZWFyKCksIG1vbnRoOiBzdGFydERhdGUuZ2V0TW9udGgoKSArIDEsIGRheTogc3RhcnREYXRlLmdldERhdGUoKX0pO1xuXHRcdFx0XHR0aGlzLmVuZERhdGVPYmpGb3JtLnNldFZhbHVlKHt5ZWFyOiBlbmREYXRlLmdldEZ1bGxZZWFyKCksIG1vbnRoOiBlbmREYXRlLmdldE1vbnRoKCkgKyAxLCBkYXk6IGVuZERhdGUuZ2V0RGF0ZSgpfSk7XG5cblx0XHRcdFx0dGhpcy5zdGFydERhdGVPYmpGb3JtQ2hhbmdlLmVtaXQodGhpcy5zdGFydERhdGVPYmpGb3JtKTtcblx0XHRcdFx0dGhpcy5lbmREYXRlT2JqRm9ybUNoYW5nZS5lbWl0KHRoaXMuZW5kRGF0ZU9iakZvcm0pO1xuXG5cdFx0XHRcdHRoaXMuZGF0ZXNDaGFuZ2VkLmVtaXQoW3RoaXMuc3RhcnREYXRlT2JqRm9ybSwgdGhpcy5lbmREYXRlT2JqRm9ybV0pO1xuXHRcdFx0fVxuXG5cdFx0XHR0aGlzLnNob3J0Y3V0VmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnNob3J0Y3V0VmFsdWUpO1xuXHRcdH1cblxuXHRcdHRoaXMuX2NkLmRldGVjdENoYW5nZXMoKTtcblx0fVxufVxuIl19