@boldreports/angular-reporting-components 5.1.27 → 5.2.26
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.
- package/README.md +1 -2
- package/core.d.ts +90 -82
- package/esm2022/boldreports-angular-reporting-components.mjs +5 -0
- package/esm2022/core.mjs +405 -0
- package/esm2022/index.mjs +7 -0
- package/esm2022/reportdesigner.component.mjs +384 -0
- package/esm2022/reportdesigner.module.mjs +24 -0
- package/esm2022/reports.module.mjs +32 -0
- package/esm2022/reportviewer.component.mjs +380 -0
- package/esm2022/reportviewer.module.mjs +24 -0
- package/fesm2022/boldreports-angular-reporting-components.mjs +1236 -0
- package/fesm2022/boldreports-angular-reporting-components.mjs.map +1 -0
- package/index.d.ts +6 -4
- package/package.json +16 -30
- package/reportdesigner.component.d.ts +101 -99
- package/reportdesigner.module.d.ts +8 -2
- package/reports.module.d.ts +9 -2
- package/reportviewer.component.d.ts +100 -96
- package/reportviewer.module.d.ts +8 -2
- package/@boldreports/angular-reporting-components.es5.js +0 -821
- package/@boldreports/angular-reporting-components.es5.js.map +0 -1
- package/@boldreports/angular-reporting-components.js +0 -796
- package/@boldreports/angular-reporting-components.js.map +0 -1
- package/angular-reporting-components.d.ts +0 -6
- package/angular-reporting-components.metadata.json +0 -1
- package/bundles/angular-reporting-components.umd.js +0 -836
- package/bundles/angular-reporting-components.umd.js.map +0 -1
- package/bundles/angular-reporting-components.umd.min.js +0 -2
- package/bundles/angular-reporting-components.umd.min.js.map +0 -1
package/esm2022/core.mjs
ADDED
|
@@ -0,0 +1,405 @@
|
|
|
1
|
+
import { EventEmitter, Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export { ContentChild, Type, forwardRef } from '@angular/core';
|
|
4
|
+
export let currentTemplateElement;
|
|
5
|
+
let firstVal = {};
|
|
6
|
+
/** Internal Helpers */
|
|
7
|
+
export class Utils {
|
|
8
|
+
static IterateAndGetChanges(obj) {
|
|
9
|
+
if (ej.isNullOrUndefined(obj.tags) || obj.tags.length === 0) {
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
let res = {};
|
|
13
|
+
for (let i = 0, tags = obj.tags; i < tags.length; i++) {
|
|
14
|
+
let tag = tags[i], tagElement = obj['tag_' + tag.replace(/\./g, '_')];
|
|
15
|
+
if (!ej.isNullOrUndefined(tagElement) && tagElement.hasChanges) {
|
|
16
|
+
res[tag] = tagElement.getChangesAndReset();
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return res;
|
|
20
|
+
}
|
|
21
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: Utils, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
22
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: Utils });
|
|
23
|
+
}
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: Utils, decorators: [{
|
|
25
|
+
type: Injectable
|
|
26
|
+
}] });
|
|
27
|
+
// tslint:disable-next-line:max-line-length
|
|
28
|
+
export class BoldReportComponents {
|
|
29
|
+
controlName;
|
|
30
|
+
el;
|
|
31
|
+
cdRef;
|
|
32
|
+
tags;
|
|
33
|
+
ejIterableDiffers;
|
|
34
|
+
_ejKeyValueDiffers;
|
|
35
|
+
model = {};
|
|
36
|
+
widget;
|
|
37
|
+
outputs = [];
|
|
38
|
+
inputs = [];
|
|
39
|
+
twoways = [];
|
|
40
|
+
complexProperties;
|
|
41
|
+
isEditor;
|
|
42
|
+
firstCheck;
|
|
43
|
+
ejIterable;
|
|
44
|
+
ejKeyValueDif;
|
|
45
|
+
static bindAndRaiseEvent(instance, model, event) {
|
|
46
|
+
if (!event.startsWith('model.')) { // && instance[event]['observers'].length > 1) {
|
|
47
|
+
let originalEvt = event.startsWith('bold') ? event.substr(4) : event;
|
|
48
|
+
model[originalEvt] = function (params) {
|
|
49
|
+
instance[event + '_output']['emit'](params);
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
// tslint:disable-next-line:max-line-length
|
|
54
|
+
constructor(controlName, el, cdRef, tags, ejIterableDiffers, _ejKeyValueDiffers) {
|
|
55
|
+
this.controlName = controlName;
|
|
56
|
+
this.el = el;
|
|
57
|
+
this.cdRef = cdRef;
|
|
58
|
+
this.tags = tags;
|
|
59
|
+
this.ejIterableDiffers = ejIterableDiffers;
|
|
60
|
+
this._ejKeyValueDiffers = _ejKeyValueDiffers;
|
|
61
|
+
// this.__shadow = this.dom.getShadowRoot(this.el.nativeElement);
|
|
62
|
+
this.firstCheck = true;
|
|
63
|
+
this.ejIterable = this.ejIterableDiffers.find([]).create(null);
|
|
64
|
+
this.ejKeyValueDif = _ejKeyValueDiffers.find([]).create();
|
|
65
|
+
}
|
|
66
|
+
createTwoways(twoways) {
|
|
67
|
+
if (!twoways) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
let model = this.model;
|
|
71
|
+
for (let i = 0; i < twoways.length; i++) {
|
|
72
|
+
let element = twoways[i].replace(/\_/g, '.');
|
|
73
|
+
ej.createObject(element + 'Change', this[twoways[i] + '_twoChange'], model);
|
|
74
|
+
ej.createObject(element, this.addTwoways(element), model);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
addTwoways(prop) {
|
|
78
|
+
let model = this.model, value = firstVal; // , originalProp = prop.replace(/-/g, '.');
|
|
79
|
+
return function (newVal, isApp) {
|
|
80
|
+
if (value === firstVal) {
|
|
81
|
+
value = ej.getObject(prop + '_two', model);
|
|
82
|
+
if (value === undefined) {
|
|
83
|
+
value = ej.getObject(prop, this === undefined || this.defaults === undefined ? {} : this.defaults);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
if (newVal === undefined) {
|
|
87
|
+
return value;
|
|
88
|
+
}
|
|
89
|
+
if (value === newVal) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
value = newVal;
|
|
93
|
+
if (!isApp) {
|
|
94
|
+
ej.createObject(prop + '_two', newVal, model);
|
|
95
|
+
ej.getObject(prop + 'Change', model).emit(newVal);
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
ngOnInit() {
|
|
100
|
+
for (let key in this) {
|
|
101
|
+
if (key.indexOf('_input') != -1)
|
|
102
|
+
this.inputs.push(key);
|
|
103
|
+
if (key.indexOf('_output') != -1)
|
|
104
|
+
this.outputs.push(key);
|
|
105
|
+
if (key.indexOf('_two') != -1 && key.indexOf('_twoChange') == -1)
|
|
106
|
+
this.twoways.push(key.replace('_two', ''));
|
|
107
|
+
}
|
|
108
|
+
if (ej.isNullOrUndefined(this['options'])) {
|
|
109
|
+
this.createTwoways(this.twoways);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
ngAfterContentInit() {
|
|
113
|
+
this.firstCheck = false;
|
|
114
|
+
let model = this.model, events = this.outputs;
|
|
115
|
+
if (events) {
|
|
116
|
+
for (let i = 0; i < events.length; i++) {
|
|
117
|
+
let event = events[i].replace('_output', '');
|
|
118
|
+
BoldReportComponents.bindAndRaiseEvent(this, model, event);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
if (ej.isNullOrUndefined(this['options'])) {
|
|
122
|
+
for (let i = 0; i < this.tags.length; i++) {
|
|
123
|
+
let element = this.tags[i], item = this['tag_' + element.replace(/\./g, '_')];
|
|
124
|
+
if (!ej.isNullOrUndefined(item)) {
|
|
125
|
+
ej.createObject(element, item.getList(), this.model);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
for (let i = 0; i < this.inputs.length; i++) {
|
|
129
|
+
let property = this.inputs[i];
|
|
130
|
+
let modelProperty = this.inputs[i].replace('_input', '');
|
|
131
|
+
if (this[property] != null) {
|
|
132
|
+
if (modelProperty.indexOf('_') == -1) {
|
|
133
|
+
if (this.model[modelProperty]) {
|
|
134
|
+
$.extend(true, this.model[modelProperty], this[property]);
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
this.model[modelProperty] = this[property];
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
else if (modelProperty.indexOf('_two') == -1) {
|
|
141
|
+
let tempObj = {};
|
|
142
|
+
let key = modelProperty.replace(/\_/g, '.');
|
|
143
|
+
ej.createObject(key, this[property], tempObj);
|
|
144
|
+
let rootProp = key.split('.')[0];
|
|
145
|
+
if (this.model[rootProp] == undefined)
|
|
146
|
+
this.model[rootProp] = {};
|
|
147
|
+
$.extend(true, this.model[rootProp], tempObj[rootProp]);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
for (let i = 0; i < this.twoways.length; i++) {
|
|
152
|
+
let twoway = this.twoways[i];
|
|
153
|
+
let twowayProperty = twoway + '_two';
|
|
154
|
+
if (this[twowayProperty] != null) {
|
|
155
|
+
if (twoway.indexOf('_') == -1) {
|
|
156
|
+
this.model[twowayProperty] = this[twowayProperty];
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
let tempObj = {};
|
|
160
|
+
let key = twoway.replace(/\_/g, '.') + '_two';
|
|
161
|
+
ej.createObject(key, this[twowayProperty], tempObj);
|
|
162
|
+
let rootProp = twowayProperty.split('_')[0];
|
|
163
|
+
$.extend(true, this.model[rootProp], tempObj[rootProp]);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
else
|
|
169
|
+
this.model = jQuery.extend(this.model, this['options']);
|
|
170
|
+
}
|
|
171
|
+
ngDoCheck() {
|
|
172
|
+
if (ej.isNullOrUndefined(this['options'])) {
|
|
173
|
+
this.twoways.forEach(element => {
|
|
174
|
+
if (this[element + '_two'] instanceof Array) {
|
|
175
|
+
let changes = this.ejIterable.diff(this[element + '_two']);
|
|
176
|
+
if (changes) {
|
|
177
|
+
let ngChanges = {};
|
|
178
|
+
if (this.widget != undefined) {
|
|
179
|
+
ngChanges = this.getTwowayChanges(changes.collection, ngChanges, element.replace(/\_/g, '.'));
|
|
180
|
+
ej.createObject(element.replace(/\_/g, '.') + '.two', changes.collection, ngChanges);
|
|
181
|
+
this.widget['setModel'](ngChanges, $.isPlainObject(ngChanges));
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
let changes = this.ejKeyValueDif.diff(this['options']);
|
|
189
|
+
if (changes) {
|
|
190
|
+
if (this.widget != undefined) {
|
|
191
|
+
var ngchanges = {};
|
|
192
|
+
changes.forEachChangedItem((changedprop) => {
|
|
193
|
+
ej.createObject(changedprop.key, changedprop.currentValue, ngchanges);
|
|
194
|
+
});
|
|
195
|
+
this.widget['setModel'](ngchanges, $.isPlainObject(ngchanges));
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
ngAfterViewInit() {
|
|
201
|
+
let nativeElement = this.isEditor ? $(this.el.nativeElement.children) : $(this.el.nativeElement);
|
|
202
|
+
let controlName = this.lowerCaseFirstLetter(this.controlName);
|
|
203
|
+
this.widget = $(nativeElement)[controlName](this.model)[controlName]('instance');
|
|
204
|
+
}
|
|
205
|
+
lowerCaseFirstLetter(string) {
|
|
206
|
+
return string[0].toLowerCase() + string.slice(1);
|
|
207
|
+
}
|
|
208
|
+
ngOnChanges(changes) {
|
|
209
|
+
if (this.firstCheck) {
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
let ngChanges = {};
|
|
213
|
+
if (ej.isNullOrUndefined(this['options'])) {
|
|
214
|
+
for (let key in changes) {
|
|
215
|
+
let element = changes[key];
|
|
216
|
+
if (element.previousValue === element.currentValue) {
|
|
217
|
+
break;
|
|
218
|
+
}
|
|
219
|
+
key = key.replace('_input', '').replace(/\_/g, '.');
|
|
220
|
+
if (key.endsWith('.two')) {
|
|
221
|
+
let oKey = key.replace('.two', '');
|
|
222
|
+
ngChanges = this.getTwowayChanges(element.currentValue, ngChanges, oKey);
|
|
223
|
+
}
|
|
224
|
+
ej.createObject(key, element.currentValue, ngChanges);
|
|
225
|
+
}
|
|
226
|
+
this.widget['setModel'](ngChanges, $.isPlainObject(ngChanges));
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
getTwowayChanges(value, ngChanges, prop) {
|
|
230
|
+
let valFn = ej.getObject(prop, this.widget['model']);
|
|
231
|
+
valFn(value, true);
|
|
232
|
+
ej.createObject(prop, valFn, ngChanges);
|
|
233
|
+
return ngChanges;
|
|
234
|
+
}
|
|
235
|
+
ngAfterContentChecked() {
|
|
236
|
+
// TODO: ChangeDetection Third/Multi level
|
|
237
|
+
let changes = Utils.IterateAndGetChanges(this);
|
|
238
|
+
for (let key in changes) {
|
|
239
|
+
if (changes.hasOwnProperty(key)) {
|
|
240
|
+
let element = changes[key];
|
|
241
|
+
this.widget['_' + key](element);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
ngOnDestroy() {
|
|
246
|
+
this.widget['destroy']();
|
|
247
|
+
}
|
|
248
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: BoldReportComponents, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable });
|
|
249
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: BoldReportComponents });
|
|
250
|
+
}
|
|
251
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: BoldReportComponents, decorators: [{
|
|
252
|
+
type: Injectable
|
|
253
|
+
}], ctorParameters: function () { return [{ type: undefined }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: Array }, { type: i0.IterableDiffers }, { type: i0.KeyValueDiffers }]; } });
|
|
254
|
+
export class ComplexTagElement {
|
|
255
|
+
tags;
|
|
256
|
+
recentChanges;
|
|
257
|
+
hasChanges;
|
|
258
|
+
firstChange;
|
|
259
|
+
index;
|
|
260
|
+
valueChange = new EventEmitter();
|
|
261
|
+
complexProperties;
|
|
262
|
+
property;
|
|
263
|
+
parent;
|
|
264
|
+
complexes = [];
|
|
265
|
+
// tags: Array<string>;
|
|
266
|
+
constructor(tags) {
|
|
267
|
+
this.tags = tags;
|
|
268
|
+
this.hasChanges = false;
|
|
269
|
+
this.firstChange = true;
|
|
270
|
+
Object.defineProperty(this, 'parent', {
|
|
271
|
+
enumerable: false,
|
|
272
|
+
writable: true,
|
|
273
|
+
value: null
|
|
274
|
+
});
|
|
275
|
+
currentTemplateElement = this;
|
|
276
|
+
}
|
|
277
|
+
ngOnInit() {
|
|
278
|
+
this.firstChange = false;
|
|
279
|
+
for (let key in this) {
|
|
280
|
+
if (key.indexOf('_') != -1 && key.indexOf('tag_') == -1)
|
|
281
|
+
this.complexes.push(key);
|
|
282
|
+
}
|
|
283
|
+
for (let i = 0; i < this.complexes.length; i++) {
|
|
284
|
+
let property = this.complexes[i];
|
|
285
|
+
if (property.indexOf('_') != -1) {
|
|
286
|
+
let tempObj = {};
|
|
287
|
+
let key = property.replace(/\_/g, '.');
|
|
288
|
+
ej.createObject(key, this[property], tempObj);
|
|
289
|
+
let rootProp = key.split('.')[0];
|
|
290
|
+
if (this[rootProp] == undefined)
|
|
291
|
+
this[rootProp] = {};
|
|
292
|
+
$.extend(true, this[rootProp], tempObj[rootProp]);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
ensureCleanObject() {
|
|
297
|
+
let tags = this.tags;
|
|
298
|
+
for (let i = 0; i < tags.length; i++) {
|
|
299
|
+
let element = tags[i], tagElement = this['tag_' + element.replace(/\./g, '_')];
|
|
300
|
+
if (i === 0 && this[element]) {
|
|
301
|
+
return;
|
|
302
|
+
}
|
|
303
|
+
if (ej.isNullOrUndefined(tagElement)) {
|
|
304
|
+
continue;
|
|
305
|
+
}
|
|
306
|
+
ej.createObject(element, tagElement.getList(), this);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
ngOnChanges(changes) {
|
|
310
|
+
if (this.firstChange) {
|
|
311
|
+
return;
|
|
312
|
+
}
|
|
313
|
+
this.recentChanges = changes;
|
|
314
|
+
this.hasChanges = true;
|
|
315
|
+
}
|
|
316
|
+
getChangesAndReset() {
|
|
317
|
+
if (this.hasChanges === false) {
|
|
318
|
+
return;
|
|
319
|
+
}
|
|
320
|
+
let changes = this.recentChanges || {};
|
|
321
|
+
let contentChanges = Utils.IterateAndGetChanges(this);
|
|
322
|
+
if (!$.isEmptyObject(contentChanges)) {
|
|
323
|
+
for (let key in contentChanges) {
|
|
324
|
+
if (contentChanges.hasOwnProperty(key)) {
|
|
325
|
+
let element = contentChanges[key];
|
|
326
|
+
// this.el.nativeElement.
|
|
327
|
+
if (!ej.isNullOrUndefined(this.parent.widget['_' + this.property.replace(/\./g, '_') + '_' + key]))
|
|
328
|
+
this.parent.widget['_' + this.property.replace(/\./g, '_') + '_' + key](element);
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
this.hasChanges = false;
|
|
333
|
+
return changes;
|
|
334
|
+
}
|
|
335
|
+
ngAfterContentChecked() {
|
|
336
|
+
let tags = this.tags;
|
|
337
|
+
for (let i = 0, len = tags.length; i < len; i++) {
|
|
338
|
+
let element = tags[i], tagElement = this['tag_' + element.replace(/\./g, '_')];
|
|
339
|
+
if (tagElement && tagElement.hasChanges) {
|
|
340
|
+
this.hasChanges = true;
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: ComplexTagElement, deps: [{ token: Array }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
345
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: ComplexTagElement });
|
|
346
|
+
}
|
|
347
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: ComplexTagElement, decorators: [{
|
|
348
|
+
type: Injectable
|
|
349
|
+
}], ctorParameters: function () { return [{ type: Array }]; } });
|
|
350
|
+
export class ArrayTagElement {
|
|
351
|
+
propertyName;
|
|
352
|
+
list;
|
|
353
|
+
children;
|
|
354
|
+
recentChanges;
|
|
355
|
+
hasChanges;
|
|
356
|
+
constructor(propertyName) {
|
|
357
|
+
this.propertyName = propertyName;
|
|
358
|
+
this.hasChanges = false;
|
|
359
|
+
}
|
|
360
|
+
// TODO: Need to consider dynamic child change
|
|
361
|
+
ngAfterContentInit() {
|
|
362
|
+
let index = 0;
|
|
363
|
+
this.list = this.children.map((child) => {
|
|
364
|
+
child.index = index++;
|
|
365
|
+
child.property = this.propertyName;
|
|
366
|
+
return child;
|
|
367
|
+
});
|
|
368
|
+
}
|
|
369
|
+
getList() {
|
|
370
|
+
let list = this.list;
|
|
371
|
+
for (let i = 0; i < list.length; i++) {
|
|
372
|
+
list[i].ensureCleanObject();
|
|
373
|
+
}
|
|
374
|
+
return list;
|
|
375
|
+
}
|
|
376
|
+
getChangesAndReset() {
|
|
377
|
+
this.hasChanges = false;
|
|
378
|
+
return this.recentChanges;
|
|
379
|
+
}
|
|
380
|
+
ngAfterContentChecked() {
|
|
381
|
+
let changes = {}, res = changes[this.propertyName] = [], childChange;
|
|
382
|
+
for (let i = 0, list = this.list; i < list.length; i++) {
|
|
383
|
+
let child = list[i];
|
|
384
|
+
if (child.hasChanges) {
|
|
385
|
+
childChange = child.getChangesAndReset();
|
|
386
|
+
if (!ej.isNullOrUndefined(childChange)) {
|
|
387
|
+
res.push({
|
|
388
|
+
index: child.index,
|
|
389
|
+
change: childChange
|
|
390
|
+
});
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
if (res.length > 0) {
|
|
395
|
+
this.recentChanges = res;
|
|
396
|
+
this.hasChanges = true;
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: ArrayTagElement, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable });
|
|
400
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: ArrayTagElement });
|
|
401
|
+
}
|
|
402
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: ArrayTagElement, decorators: [{
|
|
403
|
+
type: Injectable
|
|
404
|
+
}], ctorParameters: function () { return [{ type: undefined }]; } });
|
|
405
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxZQUFZLEVBRXlFLFVBQVUsRUFFbEcsTUFBTSxlQUFlLENBQUM7O0FBRXZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvRCxNQUFNLENBQUMsSUFBSSxzQkFBMkIsQ0FBQztBQWlCdkMsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDO0FBR2xCLHVCQUF1QjtBQUN2QixNQUFNLE9BQU8sS0FBSztJQUNkLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxHQUFlO1FBQ3ZDLElBQUksRUFBRSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDekQsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUNELElBQUksR0FBRyxHQUFlLEVBQUUsQ0FBQztRQUN6QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNuRCxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxHQUFTLEdBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUM3RSxJQUFJLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxVQUFVLEVBQUU7Z0JBQzVELEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxVQUFVLENBQUMsa0JBQWtCLEVBQUUsQ0FBQzthQUM5QztTQUNKO1FBQ0QsT0FBTyxHQUFHLENBQUM7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QUVELElBQUksR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDaEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxHQUFHLENBQUM7WUFDekIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7U0FDMUI7SUFDTCxDQUFDO3VHQXJEUSxlQUFlOzJHQUFmLGVBQWU7OzJGQUFmLGVBQWU7a0JBRDNCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgRXZlbnRFbWl0dGVyLCBRdWVyeUxpc3QsIEVsZW1lbnRSZWYsIFNpbXBsZUNoYW5nZSxcclxuICAgIENoYW5nZURldGVjdG9yUmVmLCBJdGVyYWJsZURpZmZlcnMsIEtleVZhbHVlRGlmZmVycywgT25Jbml0LFxyXG4gICAgRG9DaGVjaywgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzLCBBZnRlckNvbnRlbnRDaGVja2VkLCBPbkRlc3Ryb3ksIEluamVjdGFibGVcclxuXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5leHBvcnQgeyBDb250ZW50Q2hpbGQsIFR5cGUsIGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmV4cG9ydCBsZXQgY3VycmVudFRlbXBsYXRlRWxlbWVudDogYW55O1xyXG5cclxuXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElQYXJlbnRUYWcge1xyXG4gICAgdGFnczogQXJyYXk8YW55PjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJQ2hpbGRDaGFuZ2Uge1xyXG4gICAgaW5kZXg6IG51bWJlcjtcclxuICAgIGNoYW5nZTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElDaGFuZ2VTZXQge1xyXG4gICAgW2tleTogc3RyaW5nXTogQXJyYXk8SUNoaWxkQ2hhbmdlPjtcclxufVxyXG5cclxubGV0IGZpcnN0VmFsID0ge307XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbi8qKiBJbnRlcm5hbCBIZWxwZXJzICovXHJcbmV4cG9ydCBjbGFzcyBVdGlscyB7XHJcbiAgICBzdGF0aWMgSXRlcmF0ZUFuZEdldENoYW5nZXMob2JqOiBJUGFyZW50VGFnKTogSUNoYW5nZVNldCB7XHJcbiAgICAgICAgaWYgKGVqLmlzTnVsbE9yVW5kZWZpbmVkKG9iai50YWdzKSB8fCBvYmoudGFncy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCByZXM6IElDaGFuZ2VTZXQgPSB7fTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMCwgdGFncyA9IG9iai50YWdzOyBpIDwgdGFncy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgdGFnID0gdGFnc1tpXSwgdGFnRWxlbWVudCA9ICg8YW55Pm9iailbJ3RhZ18nICsgdGFnLnJlcGxhY2UoL1xcLi9nLCAnXycpXTtcclxuICAgICAgICAgICAgaWYgKCFlai5pc051bGxPclVuZGVmaW5lZCh0YWdFbGVtZW50KSAmJiB0YWdFbGVtZW50Lmhhc0NoYW5nZXMpIHtcclxuICAgICAgICAgICAgICAgIHJlc1t0YWddID0gdGFnRWxlbWVudC5nZXRDaGFuZ2VzQW5kUmVzZXQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgfVxyXG5cclxufVxyXG5cclxuQEluamVjdGFibGUoKVxyXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bWF4LWxpbmUtbGVuZ3RoXHJcbmV4cG9ydCBjbGFzcyBCb2xkUmVwb3J0Q29tcG9uZW50czxXLCBUPiBpbXBsZW1lbnRzIElQYXJlbnRUYWcsIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgRG9DaGVjaywgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzLCBBZnRlckNvbnRlbnRDaGVja2VkLCBPbkRlc3Ryb3kge1xyXG4gICAgcHVibGljIG1vZGVsOiBUID0gPFQ+e307XHJcbiAgICBwdWJsaWMgd2lkZ2V0OiBXO1xyXG4gICAgcHJvdGVjdGVkIG91dHB1dHM6IEFycmF5PHN0cmluZz4gPSBbXTtcclxuICAgIHByb3RlY3RlZCBpbnB1dHM6IEFycmF5PHN0cmluZz4gPSBbXTtcclxuICAgIHByb3RlY3RlZCB0d293YXlzOiBBcnJheTxzdHJpbmc+ID0gW107XHJcbiAgICBwcm90ZWN0ZWQgY29tcGxleFByb3BlcnRpZXM6IEFycmF5PHN0cmluZz47XHJcbiAgICBwcm90ZWN0ZWQgaXNFZGl0b3I6IGJvb2xlYW47XHJcblxyXG4gICAgcHJpdmF0ZSBmaXJzdENoZWNrOiBib29sZWFuO1xyXG4gICAgZWpJdGVyYWJsZTogYW55O1xyXG4gICAgZWpLZXlWYWx1ZURpZjogYW55O1xyXG5cclxuICAgIHByaXZhdGUgc3RhdGljIGJpbmRBbmRSYWlzZUV2ZW50KGluc3RhbmNlOiBhbnksIG1vZGVsOiBhbnksIGV2ZW50OiBzdHJpbmcpIHtcclxuICAgICAgICBpZiAoIWV2ZW50LnN0YXJ0c1dpdGgoJ21vZGVsLicpKSB7Ly8gJiYgaW5zdGFuY2VbZXZlbnRdWydvYnNlcnZlcnMnXS5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgIGxldCBvcmlnaW5hbEV2dCA9IGV2ZW50LnN0YXJ0c1dpdGgoJ2JvbGQnKSA/IGV2ZW50LnN1YnN0cig0KSA6IGV2ZW50O1xyXG4gICAgICAgICAgICBtb2RlbFtvcmlnaW5hbEV2dF0gPSBmdW5jdGlvbiAocGFyYW1zOiBhbnkpIHtcclxuICAgICAgICAgICAgICAgIGluc3RhbmNlW2V2ZW50ICsgJ19vdXRwdXQnXVsnZW1pdCddKHBhcmFtcyk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm1heC1saW5lLWxlbmd0aFxyXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGNvbnRyb2xOYW1lOiBzdHJpbmcsIHByb3RlY3RlZCBlbDogRWxlbWVudFJlZiwgcHJvdGVjdGVkIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHVibGljIHRhZ3M6IEFycmF5PHN0cmluZz4sIHByaXZhdGUgZWpJdGVyYWJsZURpZmZlcnM6IEl0ZXJhYmxlRGlmZmVycywgcHJpdmF0ZSBfZWpLZXlWYWx1ZURpZmZlcnM6IEtleVZhbHVlRGlmZmVycykge1xyXG4gICAgICAgIC8vICAgICAgICB0aGlzLl9fc2hhZG93ID0gdGhpcy5kb20uZ2V0U2hhZG93Um9vdCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICAgIHRoaXMuZmlyc3RDaGVjayA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5lakl0ZXJhYmxlID0gdGhpcy5lakl0ZXJhYmxlRGlmZmVycy5maW5kKFtdKS5jcmVhdGUobnVsbCk7XHJcbiAgICAgICAgdGhpcy5laktleVZhbHVlRGlmID0gX2VqS2V5VmFsdWVEaWZmZXJzLmZpbmQoW10pLmNyZWF0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBjcmVhdGVUd293YXlzKHR3b3dheXM6IEFycmF5PHN0cmluZz4pIHtcclxuICAgICAgICBpZiAoIXR3b3dheXMpIHsgcmV0dXJuOyB9XHJcbiAgICAgICAgbGV0IG1vZGVsID0gdGhpcy5tb2RlbDtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHR3b3dheXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IGVsZW1lbnQgPSB0d293YXlzW2ldLnJlcGxhY2UoL1xcXy9nLCAnLicpO1xyXG4gICAgICAgICAgICBlai5jcmVhdGVPYmplY3QoZWxlbWVudCArICdDaGFuZ2UnLCAoPGFueT50aGlzKVt0d293YXlzW2ldICsgJ190d29DaGFuZ2UnXSwgbW9kZWwpO1xyXG4gICAgICAgICAgICBlai5jcmVhdGVPYmplY3QoZWxlbWVudCwgdGhpcy5hZGRUd293YXlzKGVsZW1lbnQpLCBtb2RlbCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBhZGRUd293YXlzKHByb3A6IHN0cmluZyk6IEZ1bmN0aW9uIHtcclxuICAgICAgICBsZXQgbW9kZWwgPSB0aGlzLm1vZGVsLCB2YWx1ZSA9IGZpcnN0VmFsOyAvLyAsIG9yaWdpbmFsUHJvcCA9IHByb3AucmVwbGFjZSgvLS9nLCAnLicpO1xyXG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAobmV3VmFsOiBhbnksIGlzQXBwOiBib29sZWFuKSB7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gZmlyc3RWYWwpIHtcclxuICAgICAgICAgICAgICAgIHZhbHVlID0gZWouZ2V0T2JqZWN0KHByb3AgKyAnX3R3bycsIG1vZGVsKTtcclxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBlai5nZXRPYmplY3QocHJvcCwgdGhpcyA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuZGVmYXVsdHMgPT09IHVuZGVmaW5lZCA/IHt9IDogdGhpcy5kZWZhdWx0cyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKG5ld1ZhbCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHZhbHVlID09PSBuZXdWYWwpIHsgcmV0dXJuOyB9XHJcbiAgICAgICAgICAgIHZhbHVlID0gbmV3VmFsO1xyXG4gICAgICAgICAgICBpZiAoIWlzQXBwKSB7XHJcbiAgICAgICAgICAgICAgICBlai5jcmVhdGVPYmplY3QocHJvcCArICdfdHdvJywgbmV3VmFsLCBtb2RlbCk7XHJcbiAgICAgICAgICAgICAgICBlai5nZXRPYmplY3QocHJvcCArICdDaGFuZ2UnLCBtb2RlbCkuZW1pdChuZXdWYWwpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIGZvciAobGV0IGtleSBpbiB0aGlzKSB7XHJcbiAgICAgICAgICAgIGlmIChrZXkuaW5kZXhPZignX2lucHV0JykgIT0gLTEpXHJcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0cy5wdXNoKGtleSk7XHJcbiAgICAgICAgICAgIGlmIChrZXkuaW5kZXhPZignX291dHB1dCcpICE9IC0xKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5vdXRwdXRzLnB1c2goa2V5KTtcclxuICAgICAgICAgICAgaWYgKGtleS5pbmRleE9mKCdfdHdvJykgIT0gLTEgJiYga2V5LmluZGV4T2YoJ190d29DaGFuZ2UnKSA9PSAtMSlcclxuICAgICAgICAgICAgICAgIHRoaXMudHdvd2F5cy5wdXNoKGtleS5yZXBsYWNlKCdfdHdvJywgJycpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGVqLmlzTnVsbE9yVW5kZWZpbmVkKCg8YW55PnRoaXMpWydvcHRpb25zJ10pKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlVHdvd2F5cyh0aGlzLnR3b3dheXMpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5maXJzdENoZWNrID0gZmFsc2U7XHJcblxyXG4gICAgICAgIGxldCBtb2RlbCA9IHRoaXMubW9kZWwsIGV2ZW50cyA9IHRoaXMub3V0cHV0cztcclxuICAgICAgICBpZiAoZXZlbnRzKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZXZlbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgZXZlbnQgPSBldmVudHNbaV0ucmVwbGFjZSgnX291dHB1dCcsICcnKTtcclxuICAgICAgICAgICAgICAgIEJvbGRSZXBvcnRDb21wb25lbnRzLmJpbmRBbmRSYWlzZUV2ZW50KHRoaXMsIG1vZGVsLCBldmVudCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGVqLmlzTnVsbE9yVW5kZWZpbmVkKCg8YW55PnRoaXMpWydvcHRpb25zJ10pKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50YWdzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgZWxlbWVudCA9IHRoaXMudGFnc1tpXSwgaXRlbSA9ICg8YW55PnRoaXMpWyd0YWdfJyArIGVsZW1lbnQucmVwbGFjZSgvXFwuL2csICdfJyldO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFlai5pc051bGxPclVuZGVmaW5lZChpdGVtKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGVqLmNyZWF0ZU9iamVjdChlbGVtZW50LCBpdGVtLmdldExpc3QoKSwgdGhpcy5tb2RlbCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5pbnB1dHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGxldCBwcm9wZXJ0eSA9IHRoaXMuaW5wdXRzW2ldO1xyXG4gICAgICAgICAgICAgICAgbGV0IG1vZGVsUHJvcGVydHkgPSB0aGlzLmlucHV0c1tpXS5yZXBsYWNlKCdfaW5wdXQnLCAnJyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoKDxhbnk+dGhpcylbcHJvcGVydHldICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobW9kZWxQcm9wZXJ0eS5pbmRleE9mKCdfJykgPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCg8YW55PnRoaXMubW9kZWwpW21vZGVsUHJvcGVydHldKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkLmV4dGVuZCh0cnVlLCAoPGFueT50aGlzLm1vZGVsKVttb2RlbFByb3BlcnR5XSwgKDxhbnk+dGhpcylbcHJvcGVydHldKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8YW55PnRoaXMubW9kZWwpW21vZGVsUHJvcGVydHldID0gKDxhbnk+dGhpcylbcHJvcGVydHldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtb2RlbFByb3BlcnR5LmluZGV4T2YoJ190d28nKSA9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcE9iajogYW55ID0ge307XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrZXkgPSBtb2RlbFByb3BlcnR5LnJlcGxhY2UoL1xcXy9nLCAnLicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlai5jcmVhdGVPYmplY3Qoa2V5LCAoPGFueT50aGlzKVtwcm9wZXJ0eV0sIHRlbXBPYmopO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcm9vdFByb3AgPSBrZXkuc3BsaXQoJy4nKVswXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCg8YW55PnRoaXMubW9kZWwpW3Jvb3RQcm9wXSA9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGFueT50aGlzLm1vZGVsKVtyb290UHJvcF0gPSB7fTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJC5leHRlbmQodHJ1ZSwgKDxhbnk+dGhpcy5tb2RlbClbcm9vdFByb3BdLCB0ZW1wT2JqW3Jvb3RQcm9wXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50d293YXlzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgdHdvd2F5ID0gdGhpcy50d293YXlzW2ldO1xyXG4gICAgICAgICAgICAgICAgbGV0IHR3b3dheVByb3BlcnR5ID0gdHdvd2F5ICsgJ190d28nO1xyXG4gICAgICAgICAgICAgICAgaWYgKCg8YW55PnRoaXMpW3R3b3dheVByb3BlcnR5XSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR3b3dheS5pbmRleE9mKCdfJykgPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgKDxhbnk+dGhpcy5tb2RlbClbdHdvd2F5UHJvcGVydHldID0gKDxhbnk+dGhpcylbdHdvd2F5UHJvcGVydHldO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0ZW1wT2JqOiBhbnkgPSB7fTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGtleSA9IHR3b3dheS5yZXBsYWNlKC9cXF8vZywgJy4nKSArICdfdHdvJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgZWouY3JlYXRlT2JqZWN0KGtleSwgKDxhbnk+dGhpcylbdHdvd2F5UHJvcGVydHldLCB0ZW1wT2JqKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJvb3RQcm9wID0gdHdvd2F5UHJvcGVydHkuc3BsaXQoJ18nKVswXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJC5leHRlbmQodHJ1ZSwgKDxhbnk+dGhpcy5tb2RlbClbcm9vdFByb3BdLCB0ZW1wT2JqW3Jvb3RQcm9wXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgICAgdGhpcy5tb2RlbCA9IGpRdWVyeS5leHRlbmQodGhpcy5tb2RlbCwgKDxhbnk+dGhpcylbJ29wdGlvbnMnXSk7XHJcblxyXG4gICAgfVxyXG4gICAgbmdEb0NoZWNrKCkge1xyXG4gICAgICAgIGlmIChlai5pc051bGxPclVuZGVmaW5lZCgoPGFueT50aGlzKVsnb3B0aW9ucyddKSkge1xyXG4gICAgICAgICAgICB0aGlzLnR3b3dheXMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICgoPGFueT50aGlzKVtlbGVtZW50ICsgJ190d28nXSBpbnN0YW5jZW9mIEFycmF5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNoYW5nZXMgPSB0aGlzLmVqSXRlcmFibGUuZGlmZigoPGFueT50aGlzKVtlbGVtZW50ICsgJ190d28nXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoYW5nZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5nQ2hhbmdlcyA9IHt9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy53aWRnZXQgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ0NoYW5nZXMgPSB0aGlzLmdldFR3b3dheUNoYW5nZXMoY2hhbmdlcy5jb2xsZWN0aW9uLCBuZ0NoYW5nZXMsIGVsZW1lbnQucmVwbGFjZSgvXFxfL2csICcuJykpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWouY3JlYXRlT2JqZWN0KGVsZW1lbnQucmVwbGFjZSgvXFxfL2csICcuJykgKyAnLnR3bycsIGNoYW5nZXMuY29sbGVjdGlvbiwgbmdDaGFuZ2VzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8YW55PnRoaXMud2lkZ2V0KVsnc2V0TW9kZWwnXShuZ0NoYW5nZXMsICQuaXNQbGFpbk9iamVjdChuZ0NoYW5nZXMpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgbGV0IGNoYW5nZXMgPSB0aGlzLmVqS2V5VmFsdWVEaWYuZGlmZigoPGFueT50aGlzKVsnb3B0aW9ucyddKTtcclxuICAgICAgICAgICAgaWYgKGNoYW5nZXMpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLndpZGdldCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgbmdjaGFuZ2VzID0ge307XHJcbiAgICAgICAgICAgICAgICAgICAgY2hhbmdlcy5mb3JFYWNoQ2hhbmdlZEl0ZW0oKGNoYW5nZWRwcm9wOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZWouY3JlYXRlT2JqZWN0KGNoYW5nZWRwcm9wLmtleSwgY2hhbmdlZHByb3AuY3VycmVudFZhbHVlLCBuZ2NoYW5nZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICg8YW55PnRoaXMud2lkZ2V0KVsnc2V0TW9kZWwnXShuZ2NoYW5nZXMsICQuaXNQbGFpbk9iamVjdChuZ2NoYW5nZXMpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgICAgICBsZXQgbmF0aXZlRWxlbWVudCA9IHRoaXMuaXNFZGl0b3IgPyAkKHRoaXMuZWwubmF0aXZlRWxlbWVudC5jaGlsZHJlbikgOiAkKHRoaXMuZWwubmF0aXZlRWxlbWVudCk7XHJcbiAgICAgICAgbGV0IGNvbnRyb2xOYW1lOiBzdHJpbmcgPSB0aGlzLmxvd2VyQ2FzZUZpcnN0TGV0dGVyKHRoaXMuY29udHJvbE5hbWUpO1xyXG4gICAgICAgIHRoaXMud2lkZ2V0ID0gKCQobmF0aXZlRWxlbWVudCkgYXMgYW55KVtjb250cm9sTmFtZV0odGhpcy5tb2RlbClbY29udHJvbE5hbWVdKCdpbnN0YW5jZScpO1xyXG4gICAgfVxyXG5cclxuICAgIGxvd2VyQ2FzZUZpcnN0TGV0dGVyKHN0cmluZzogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHN0cmluZ1swXS50b0xvd2VyQ2FzZSgpICsgc3RyaW5nLnNsaWNlKDEpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IHsgW2tleTogc3RyaW5nXTogU2ltcGxlQ2hhbmdlIH0pIHtcclxuICAgICAgICBpZiAodGhpcy5maXJzdENoZWNrKSB7IHJldHVybjsgfVxyXG4gICAgICAgIGxldCBuZ0NoYW5nZXMgPSB7fTtcclxuICAgICAgICBpZiAoZWouaXNOdWxsT3JVbmRlZmluZWQoKDxhbnk+dGhpcylbJ29wdGlvbnMnXSkpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQga2V5IGluIGNoYW5nZXMpIHtcclxuICAgICAgICAgICAgICAgIGxldCBlbGVtZW50ID0gY2hhbmdlc1trZXldO1xyXG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQucHJldmlvdXNWYWx1ZSA9PT0gZWxlbWVudC5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGtleSA9IGtleS5yZXBsYWNlKCdfaW5wdXQnLCAnJykucmVwbGFjZSgvXFxfL2csICcuJyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoa2V5LmVuZHNXaXRoKCcudHdvJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgb0tleSA9IGtleS5yZXBsYWNlKCcudHdvJywgJycpO1xyXG4gICAgICAgICAgICAgICAgICAgIG5nQ2hhbmdlcyA9IHRoaXMuZ2V0VHdvd2F5Q2hhbmdlcyhlbGVtZW50LmN1cnJlbnRWYWx1ZSwgbmdDaGFuZ2VzLCBvS2V5KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVqLmNyZWF0ZU9iamVjdChrZXksIGVsZW1lbnQuY3VycmVudFZhbHVlLCBuZ0NoYW5nZXMpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAoPGFueT50aGlzLndpZGdldClbJ3NldE1vZGVsJ10obmdDaGFuZ2VzLCAkLmlzUGxhaW5PYmplY3QobmdDaGFuZ2VzKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldFR3b3dheUNoYW5nZXModmFsdWU6IGFueSwgbmdDaGFuZ2VzOiBhbnksIHByb3A6IHN0cmluZykge1xyXG4gICAgICAgIGxldCB2YWxGbiA9IGVqLmdldE9iamVjdChwcm9wLCAoPGFueT50aGlzLndpZGdldClbJ21vZGVsJ10pO1xyXG4gICAgICAgIHZhbEZuKHZhbHVlLCB0cnVlKTtcclxuICAgICAgICBlai5jcmVhdGVPYmplY3QocHJvcCwgdmFsRm4sIG5nQ2hhbmdlcyk7XHJcbiAgICAgICAgcmV0dXJuIG5nQ2hhbmdlcztcclxuICAgIH1cclxuXHJcbiAgICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKSB7XHJcbiAgICAgICAgLy8gVE9ETzogQ2hhbmdlRGV0ZWN0aW9uIFRoaXJkL011bHRpIGxldmVsXHJcbiAgICAgICAgbGV0IGNoYW5nZXM6IElDaGFuZ2VTZXQgPSBVdGlscy5JdGVyYXRlQW5kR2V0Q2hhbmdlcyh0aGlzKTtcclxuICAgICAgICBmb3IgKGxldCBrZXkgaW4gY2hhbmdlcykge1xyXG4gICAgICAgICAgICBpZiAoY2hhbmdlcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgZWxlbWVudCA9IGNoYW5nZXNba2V5XTtcclxuICAgICAgICAgICAgICAgICg8YW55PnRoaXMud2lkZ2V0KVsnXycgKyBrZXldKGVsZW1lbnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgICg8YW55PnRoaXMud2lkZ2V0KVsnZGVzdHJveSddKCk7XHJcbiAgICB9XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIENvbXBsZXhUYWdFbGVtZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyQ29udGVudENoZWNrZWQge1xyXG4gICAgcmVjZW50Q2hhbmdlczogYW55O1xyXG4gICAgaGFzQ2hhbmdlczogYm9vbGVhbjtcclxuICAgIGZpcnN0Q2hhbmdlOiBib29sZWFuO1xyXG4gICAgaW5kZXg6IG51bWJlcjtcclxuICAgIHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIHByb3RlY3RlZCBjb21wbGV4UHJvcGVydGllczogQXJyYXk8c3RyaW5nPjtcclxuICAgIHByb3BlcnR5OiBzdHJpbmc7XHJcbiAgICBwYXJlbnQ6IEJvbGRSZXBvcnRDb21wb25lbnRzPGFueSwgYW55PjtcclxuICAgIGNvbXBsZXhlczogQXJyYXk8c3RyaW5nPiA9IFtdO1xyXG5cclxuICAgIC8vIHRhZ3M6IEFycmF5PHN0cmluZz47XHJcblxyXG4gICAgY29uc3RydWN0b3IocHVibGljIHRhZ3M6IEFycmF5PHN0cmluZz4pIHtcclxuICAgICAgICB0aGlzLmhhc0NoYW5nZXMgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmZpcnN0Q2hhbmdlID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdwYXJlbnQnLCB7XHJcbiAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgdmFsdWU6IG51bGxcclxuICAgICAgICB9KTtcclxuICAgICAgICBjdXJyZW50VGVtcGxhdGVFbGVtZW50ID0gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLmZpcnN0Q2hhbmdlID0gZmFsc2U7XHJcbiAgICAgICAgZm9yIChsZXQga2V5IGluIHRoaXMpIHtcclxuICAgICAgICAgICAgaWYgKGtleS5pbmRleE9mKCdfJykgIT0gLTEgJiYga2V5LmluZGV4T2YoJ3RhZ18nKSA9PSAtMSlcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tcGxleGVzLnB1c2goa2V5KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNvbXBsZXhlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgcHJvcGVydHkgPSB0aGlzLmNvbXBsZXhlc1tpXTtcclxuICAgICAgICAgICAgaWYgKHByb3BlcnR5LmluZGV4T2YoJ18nKSAhPSAtMSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IHRlbXBPYmo6IGFueSA9IHt9O1xyXG4gICAgICAgICAgICAgICAgbGV0IGtleSA9IHByb3BlcnR5LnJlcGxhY2UoL1xcXy9nLCAnLicpO1xyXG4gICAgICAgICAgICAgICAgZWouY3JlYXRlT2JqZWN0KGtleSwgKDxhbnk+dGhpcylbcHJvcGVydHldLCB0ZW1wT2JqKTtcclxuICAgICAgICAgICAgICAgIGxldCByb290UHJvcCA9IGtleS5zcGxpdCgnLicpWzBdO1xyXG4gICAgICAgICAgICAgICAgaWYgKCg8YW55PnRoaXMpW3Jvb3RQcm9wXSA9PSB1bmRlZmluZWQpICg8YW55PnRoaXMpW3Jvb3RQcm9wXSA9IHt9O1xyXG4gICAgICAgICAgICAgICAgJC5leHRlbmQodHJ1ZSwgKDxhbnk+dGhpcylbcm9vdFByb3BdLCB0ZW1wT2JqW3Jvb3RQcm9wXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZW5zdXJlQ2xlYW5PYmplY3QoKSB7XHJcbiAgICAgICAgbGV0IHRhZ3MgPSB0aGlzLnRhZ3M7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0YWdzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCBlbGVtZW50ID0gdGFnc1tpXSwgdGFnRWxlbWVudCA9ICg8YW55PnRoaXMpWyd0YWdfJyArIGVsZW1lbnQucmVwbGFjZSgvXFwuL2csICdfJyldO1xyXG5cclxuICAgICAgICAgICAgaWYgKGkgPT09IDAgJiYgKDxhbnk+dGhpcylbZWxlbWVudF0pIHsgcmV0dXJuOyB9XHJcbiAgICAgICAgICAgIGlmIChlai5pc051bGxPclVuZGVmaW5lZCh0YWdFbGVtZW50KSkgeyBjb250aW51ZTsgfVxyXG5cclxuICAgICAgICAgICAgZWouY3JlYXRlT2JqZWN0KGVsZW1lbnQsIHRhZ0VsZW1lbnQuZ2V0TGlzdCgpLCB0aGlzKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogeyBba2V5OiBzdHJpbmddOiBTaW1wbGVDaGFuZ2UgfSkge1xyXG4gICAgICAgIGlmICh0aGlzLmZpcnN0Q2hhbmdlKSB7IHJldHVybjsgfVxyXG4gICAgICAgIHRoaXMucmVjZW50Q2hhbmdlcyA9IGNoYW5nZXM7XHJcbiAgICAgICAgdGhpcy5oYXNDaGFuZ2VzID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRDaGFuZ2VzQW5kUmVzZXQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaGFzQ2hhbmdlcyA9PT0gZmFsc2UpIHsgcmV0dXJuOyB9XHJcblxyXG4gICAgICAgIGxldCBjaGFuZ2VzID0gdGhpcy5yZWNlbnRDaGFuZ2VzIHx8IHt9O1xyXG4gICAgICAgIGxldCBjb250ZW50Q2hhbmdlcyA9IFV0aWxzLkl0ZXJhdGVBbmRHZXRDaGFuZ2VzKHRoaXMpO1xyXG4gICAgICAgIGlmICghJC5pc0VtcHR5T2JqZWN0KGNvbnRlbnRDaGFuZ2VzKSkge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBrZXkgaW4gY29udGVudENoYW5nZXMpIHtcclxuICAgICAgICAgICAgICAgIGlmIChjb250ZW50Q2hhbmdlcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGVsZW1lbnQgPSBjb250ZW50Q2hhbmdlc1trZXldO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHRoaXMuZWwubmF0aXZlRWxlbWVudC5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWVqLmlzTnVsbE9yVW5kZWZpbmVkKHRoaXMucGFyZW50LndpZGdldFsnXycgKyB0aGlzLnByb3BlcnR5LnJlcGxhY2UoL1xcLi9nLCAnXycpICsgJ18nICsga2V5XSkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LndpZGdldFsnXycgKyB0aGlzLnByb3BlcnR5LnJlcGxhY2UoL1xcLi9nLCAnXycpICsgJ18nICsga2V5XShlbGVtZW50KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5oYXNDaGFuZ2VzID0gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuIGNoYW5nZXM7XHJcbiAgICB9XHJcblxyXG4gICAgbmdBZnRlckNvbnRlbnRDaGVja2VkKCkge1xyXG4gICAgICAgIGxldCB0YWdzID0gdGhpcy50YWdzO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSB0YWdzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCBlbGVtZW50ID0gdGFnc1tpXSwgdGFnRWxlbWVudCA9ICg8YW55PnRoaXMpWyd0YWdfJyArIGVsZW1lbnQucmVwbGFjZSgvXFwuL2csICdfJyldO1xyXG4gICAgICAgICAgICBpZiAodGFnRWxlbWVudCAmJiB0YWdFbGVtZW50Lmhhc0NoYW5nZXMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGFzQ2hhbmdlcyA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEFycmF5VGFnRWxlbWVudDxUIGV4dGVuZHMgQ29tcGxleFRhZ0VsZW1lbnQ+IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJDb250ZW50Q2hlY2tlZCB7XHJcbiAgICBsaXN0OiBBcnJheTxUPjtcclxuICAgIGNoaWxkcmVuOiBRdWVyeUxpc3Q8VD47XHJcbiAgICByZWNlbnRDaGFuZ2VzOiBBcnJheTxJQ2hpbGRDaGFuZ2U+O1xyXG4gICAgaGFzQ2hhbmdlczogYm9vbGVhbjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgcHJvcGVydHlOYW1lOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLmhhc0NoYW5nZXMgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBUT0RPOiBOZWVkIHRvIGNvbnNpZGVyIGR5bmFtaWMgY2hpbGQgY2hhbmdlXHJcbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XHJcbiAgICAgICAgbGV0IGluZGV4ID0gMDtcclxuICAgICAgICB0aGlzLmxpc3QgPSB0aGlzLmNoaWxkcmVuLm1hcCgoY2hpbGQpID0+IHtcclxuICAgICAgICAgICAgY2hpbGQuaW5kZXggPSBpbmRleCsrO1xyXG4gICAgICAgICAgICBjaGlsZC5wcm9wZXJ0eSA9IHRoaXMucHJvcGVydHlOYW1lO1xyXG4gICAgICAgICAgICByZXR1cm4gY2hpbGQ7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TGlzdCgpIHtcclxuICAgICAgICBsZXQgbGlzdCA9IHRoaXMubGlzdDtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGlzdFtpXS5lbnN1cmVDbGVhbk9iamVjdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbGlzdDtcclxuICAgIH1cclxuXHJcbiAgICBnZXRDaGFuZ2VzQW5kUmVzZXQoKTogQXJyYXk8SUNoaWxkQ2hhbmdlPiB7XHJcbiAgICAgICAgdGhpcy5oYXNDaGFuZ2VzID0gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucmVjZW50Q2hhbmdlcztcclxuICAgIH1cclxuXHJcbiAgICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZCB7XHJcbiAgICAgICAgbGV0IGNoYW5nZXMgPSB7fSwgcmVzOiBBcnJheTxJQ2hpbGRDaGFuZ2U+ID0gKDxhbnk+Y2hhbmdlcylbdGhpcy5wcm9wZXJ0eU5hbWVdID0gW10sIGNoaWxkQ2hhbmdlOiBhbnk7XHJcblxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsaXN0ID0gdGhpcy5saXN0OyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgY2hpbGQgPSBsaXN0W2ldO1xyXG4gICAgICAgICAgICBpZiAoY2hpbGQuaGFzQ2hhbmdlcykge1xyXG4gICAgICAgICAgICAgICAgY2hpbGRDaGFuZ2UgPSBjaGlsZC5nZXRDaGFuZ2VzQW5kUmVzZXQoKTtcclxuICAgICAgICAgICAgICAgIGlmICghZWouaXNOdWxsT3JVbmRlZmluZWQoY2hpbGRDaGFuZ2UpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLnB1c2goPElDaGlsZENoYW5nZT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBjaGlsZC5pbmRleCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlOiBjaGlsZENoYW5nZVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAocmVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5yZWNlbnRDaGFuZ2VzID0gcmVzO1xyXG4gICAgICAgICAgICB0aGlzLmhhc0NoYW5nZXMgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from './reportviewer.module';
|
|
2
|
+
export * from './reportdesigner.module';
|
|
3
|
+
export * from './reportviewer.component';
|
|
4
|
+
export * from './reportdesigner.component';
|
|
5
|
+
export * from './reports.module';
|
|
6
|
+
export * from './core';
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9yZXBvcnR2aWV3ZXIubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9yZXBvcnRkZXNpZ25lci5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3JlcG9ydHZpZXdlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3JlcG9ydGRlc2lnbmVyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcmVwb3J0cy5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2NvcmUnO1xyXG4iXX0=
|