ngx-material-entity 15.1.4 → 15.1.6
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/components/input/input.component.d.ts +32 -12
- package/components/table/default.actions.d.ts +21 -0
- package/components/table/table-data.builder.d.ts +3 -1
- package/components/table/table-data.d.ts +11 -0
- package/components/table/table.component.d.ts +3 -0
- package/decorators/array/array-decorator-internal.data.d.ts +12 -1
- package/decorators/array/array-decorator.data.d.ts +27 -5
- package/encapsulation/js-2-xml.utilities.d.ts +15 -0
- package/encapsulation/jszip.utilities.d.ts +3 -2
- package/encapsulation/lodash.utilities.d.ts +7 -0
- package/esm2020/components/input/input.component.mjs +68 -28
- package/esm2020/components/table/create-dialog/create-entity-dialog.component.mjs +3 -3
- package/esm2020/components/table/default.actions.mjs +65 -0
- package/esm2020/components/table/table-data.builder.mjs +11 -3
- package/esm2020/components/table/table-data.mjs +1 -1
- package/esm2020/components/table/table.component.mjs +34 -3
- package/esm2020/decorators/array/array-decorator-internal.data.mjs +13 -1
- package/esm2020/decorators/array/array-decorator.data.mjs +1 -1
- package/esm2020/encapsulation/js-2-xml.utilities.mjs +18 -0
- package/esm2020/encapsulation/jszip.utilities.mjs +1 -1
- package/esm2020/encapsulation/lodash.utilities.mjs +13 -1
- package/esm2020/public-api.mjs +2 -1
- package/esm2020/services/entity.service.mjs +17 -1
- package/esm2020/utilities/file.utilities.mjs +17 -4
- package/fesm2015/ngx-material-entity.mjs +250 -70
- package/fesm2015/ngx-material-entity.mjs.map +1 -1
- package/fesm2020/ngx-material-entity.mjs +246 -68
- package/fesm2020/ngx-material-entity.mjs.map +1 -1
- package/package.json +3 -2
- package/public-api.d.ts +1 -0
- package/services/entity.service.d.ts +7 -0
- package/utilities/file.utilities.d.ts +7 -0
- package/components/input/add-array-item-dialog-data.builder.d.ts +0 -22
- package/components/input/add-array-item-dialog-data.d.ts +0 -20
- package/esm2020/components/input/add-array-item-dialog-data.builder.mjs +0 -38
- package/esm2020/components/input/add-array-item-dialog-data.mjs +0 -2
|
@@ -60,6 +60,22 @@ export class EntityService {
|
|
|
60
60
|
}
|
|
61
61
|
// TODO: Find a way to use blobs with jest
|
|
62
62
|
/* istanbul ignore next */
|
|
63
|
+
/**
|
|
64
|
+
* Imports everything from the provided json file.
|
|
65
|
+
*
|
|
66
|
+
* @param file - The json file to import from.
|
|
67
|
+
* @returns All entities that have been imported.
|
|
68
|
+
*/
|
|
69
|
+
async import(file) {
|
|
70
|
+
const formData = new FormData();
|
|
71
|
+
formData.append('import', file);
|
|
72
|
+
const result = await firstValueFrom(this.http.post(`${this.baseUrl}/import`, formData));
|
|
73
|
+
this.entities.push(...result);
|
|
74
|
+
this.entitiesSubject.next(this.entities);
|
|
75
|
+
return result;
|
|
76
|
+
}
|
|
77
|
+
// TODO: Find a way to use blobs with jest
|
|
78
|
+
/* istanbul ignore next */
|
|
63
79
|
/**
|
|
64
80
|
* Creates the entity with form data when the entity contains files in contrast to creating it with a normal json body.
|
|
65
81
|
* All file values are stored inside their respective property key and their name.
|
|
@@ -233,4 +249,4 @@ export class EntityService {
|
|
|
233
249
|
this.entitiesSubject.next(this.entities);
|
|
234
250
|
}
|
|
235
251
|
}
|
|
236
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9zZXJ2aWNlcy9lbnRpdHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFFekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFNUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQWdCLGFBQWE7SUFtRC9CLFlBQTZCLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFwQzdDOztXQUVHO1FBQ00sa0JBQWEsR0FBVyxVQUFVLENBQUM7UUFFNUM7Ozs7V0FJRztRQUNNLFVBQUssR0FBcUIsSUFBd0IsQ0FBQztRQUU1RDs7O1dBR0c7UUFDTSxvQkFBZSxHQUFrQyxJQUFJLGVBQWUsQ0FBZSxFQUFFLENBQUMsQ0FBQztRQUdoRzs7O1dBR0c7UUFDZ0IsMEJBQXFCLEdBQVcsTUFBTSxDQUFDO0lBYVYsQ0FBQztJQVhqRDs7OztPQUlHO0lBQ0gsSUFBSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQztJQUN0QyxDQUFDO0lBTUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFrQjtRQUMzQixNQUFNLElBQUksR0FBd0IsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsZUFBZSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUF3QixDQUFDO1FBQ2hJLE1BQU0sZ0JBQWdCLEdB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QUMzQixNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN0RixxRUFBcUU7UUFDckUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1RixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDN0MsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEJhc2VFbnRpdHlUeXBlIH0gZnJvbSAnLi4vY2xhc3Nlcy9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHsgRGVjb3JhdG9yVHlwZXMgfSBmcm9tICcuLi9kZWNvcmF0b3JzL2Jhc2UvZGVjb3JhdG9yLXR5cGVzLmVudW0nO1xuaW1wb3J0IHsgRmlsZURhdGEgfSBmcm9tICcuLi9kZWNvcmF0b3JzL2ZpbGUvZmlsZS1kZWNvcmF0b3IuZGF0YSc7XG5pbXBvcnQgeyBMb2Rhc2hVdGlsaXRpZXMgfSBmcm9tICcuLi9lbmNhcHN1bGF0aW9uL2xvZGFzaC51dGlsaXRpZXMnO1xuaW1wb3J0IHsgRW50aXR5VXRpbGl0aWVzIH0gZnJvbSAnLi4vdXRpbGl0aWVzL2VudGl0eS51dGlsaXRpZXMnO1xuaW1wb3J0IHsgRmlsZVV0aWxpdGllcyB9IGZyb20gJy4uL3V0aWxpdGllcy9maWxlLnV0aWxpdGllcyc7XG5cbi8qKlxuICogQSBnZW5lcmljIEVudGl0eVNlcnZpY2UgY2xhc3MuXG4gKiBPZmZlcnMgYmFzaWMgQ1JVRC1mdW5jdGlvbmFsaXR5LlxuICogWW91IHNob3VsZCBjcmVhdGUgYSBzZXJ2aWNlIGZvciBldmVyeSBFbnRpdHkgeW91IGhhdmUuXG4gKiBJZiB5b3UgZXh0ZW5kIGZyb20gdGhpcyB5b3UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgZXh0ZW5kZWQgU2VydmljZSBjYW4gYmUgaW5qZWN0ZWQuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBFbnRpdHlTZXJ2aWNlPEVudGl0eVR5cGUgZXh0ZW5kcyBCYXNlRW50aXR5VHlwZTxFbnRpdHlUeXBlPj4ge1xuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIHVybCB1c2VkIGZvciBhcGkgcmVxdWVzdHMuIElmIHUgd2FudCB0byBoYXZlIG1vcmUgY29udHJvbCBvdmVyIHRoaXMsXG4gICAgICogeW91IGNhbiBvdmVycmlkZSB0aGUgY3JlYXRlLCByZWFkLCB1cGRhdGUgYW5kIGRlbGV0ZSBtZXRob2RzLlxuICAgICAqXG4gICAgICogQ3JlYXRlIFNlbmRzIGEgUE9TVC1SZXF1ZXN0IHRvIGJhc2VVcmwuXG4gICAgICpcbiAgICAgKiBSZWFkIFNlbmRzIGEgR0VULVJlcXVlc3QgdG8gYmFzZVVybC5cbiAgICAgKlxuICAgICAqIFVwZGF0ZSBTZW5kcyBhIFBBVENILVJlcXVlc3QgdG8gYmFzZVVybC97aWR9LlxuICAgICAqXG4gICAgICogRGVsZXRlIFNlbmRzIGEgREVMLVJlcXVlc3QgdG8gYmFzZVVybC97aWR9LlxuICAgICAqL1xuICAgIGFic3RyYWN0IHJlYWRvbmx5IGJhc2VVcmw6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFRoZSByb3V0ZSBzZWdtZW50IHRoYXQgY29tZXMgYmVmb3JlIHRoZSBpZCB3aGVuIGVkaXRpbmcgYW4gZW50aXR5IGluIGEgc2VwYXJhdGUgcGFnZS5cbiAgICAgKi9cbiAgICByZWFkb25seSBlZGl0QmFzZVJvdXRlOiBzdHJpbmcgPSAnZW50aXRpZXMnO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGtleSB3aGljaCBob2xkcyB0aGUgaWQgdmFsdWUuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAnaWQnXG4gICAgICovXG4gICAgcmVhZG9ubHkgaWRLZXk6IGtleW9mIEVudGl0eVR5cGUgPSAnaWQnIGFzIGtleW9mIEVudGl0eVR5cGU7XG5cbiAgICAvKipcbiAgICAgKiBBIHN1YmplY3Qgb2YgYWxsIHRoZSBlbnRpdHkgdmFsdWVzLlxuICAgICAqIENhbiBiZSBzdWJzY3JpYmVkIHRvIHdoZW4geW91IHdhbnQgdG8gZG8gYSBzcGVjaWZpYyB0aGluZyB3aGVuZXZlciB0aGUgZW50aXRpZXMgY2hhbmdlLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IGVudGl0aWVzU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PEVudGl0eVR5cGVbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEVudGl0eVR5cGVbXT4oW10pO1xuXG5cbiAgICAvKipcbiAgICAgKiBBIHN1YmplY3Qgb2YgYWxsIHRoZSBlbnRpdHkgdmFsdWVzLlxuICAgICAqIENhbiBiZSBzdWJzY3JpYmVkIHRvIHdoZW4geW91IHdhbnQgdG8gZG8gYSBzcGVjaWZpYyB0aGluZyB3aGVuZXZlciB0aGUgZW50aXRpZXMgY2hhbmdlLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBSRUFEX0VYUElSQVRJT05fSU5fTVM6IG51bWJlciA9IDkwMDAwMDtcblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGVudGl0aWVzIGluIGFuIGFycmF5IGZyb20gdGhlIGludGVybmFsIGVudGl0aWVzU3ViamVjdC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGVudGl0aWVzIGluIGZvcm0gb2YgYW4gYXJyYXkuXG4gICAgICovXG4gICAgZ2V0IGVudGl0aWVzKCk6IEVudGl0eVR5cGVbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVudGl0aWVzU3ViamVjdC52YWx1ZTtcbiAgICB9XG5cbiAgICBsYXN0UmVhZD86IERhdGU7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGh0dHA6IEh0dHBDbGllbnQpIHt9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IEVudGl0eSBhbmQgcHVzaGVzIGl0IHRvIHRoZSBlbnRpdGllcyBhcnJheS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBlbnRpdHkgLSBUaGUgZGF0YSBvZiB0aGUgZW50aXR5IHRvIGNyZWF0ZS5cbiAgICAgKiBBbGwgdmFsdWVzIHRoYXQgc2hvdWxkIGJlIG9taXR0ZWQgd2lsbCBiZSByZW1vdmVkIGZyb20gaXQgaW5zaWRlIHRoaXMgbWV0aG9kLlxuICAgICAqIEByZXR1cm5zIEEgUHJvbWlzZSBvZiB0aGUgY3JlYXRlZCBlbnRpdHkuXG4gICAgICovXG4gICAgYXN5bmMgY3JlYXRlKGVudGl0eTogRW50aXR5VHlwZSk6IFByb21pc2U8RW50aXR5VHlwZT4ge1xuICAgICAgICBjb25zdCBib2R5OiBQYXJ0aWFsPEVudGl0eVR5cGU+ID0gTG9kYXNoVXRpbGl0aWVzLm9taXQoZW50aXR5LCBFbnRpdHlVdGlsaXRpZXMuZ2V0T21pdEZvckNyZWF0ZShlbnRpdHkpKSBhcyBQYXJ0aWFsPEVudGl0eVR5cGU+O1xuICAgICAgICBjb25zdCBmaWxlUHJvcGVydHlLZXlzOiAoa2V5b2YgRW50aXR5VHlwZSlbXSA9IEVudGl0eVV0aWxpdGllcy5nZXRGaWxlUHJvcGVydGllcyhlbnRpdHkpO1xuICAgICAgICBpZiAoIWZpbGVQcm9wZXJ0eUtleXMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5jcmVhdGVXaXRoSnNvbihib2R5KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmNyZWF0ZVdpdGhGb3JtRGF0YShib2R5LCBmaWxlUHJvcGVydHlLZXlzLCBlbnRpdHkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVE9ETzogRmluZCBhIHdheSB0byB1c2UgYmxvYnMgd2l0aCBqZXN0XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIHRoZSBlbnRpdHkgd2l0aCBmb3JtIGRhdGEgd2hlbiB0aGUgZW50aXR5IGNvbnRhaW5zIGZpbGVzIGluIGNvbnRyYXN0IHRvIGNyZWF0aW5nIGl0IHdpdGggYSBub3JtYWwganNvbiBib2R5LlxuICAgICAqIEFsbCBmaWxlIHZhbHVlcyBhcmUgc3RvcmVkIGluc2lkZSB0aGVpciByZXNwZWN0aXZlIHByb3BlcnR5IGtleSBhbmQgdGhlaXIgbmFtZS5cbiAgICAgKiBGb3JtIGRhdGEgaXMgYWJsZSB0byBoYW5kbGUgc2V0dGluZyBtdWx0aXBsZSBmaWxlcyB0byB0aGUgc2FtZSBrZXkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYm9keSAtIFRoZSBib2R5IE9mIHRoZSByZXF1ZXN0LlxuICAgICAqIEBwYXJhbSBmaWxlUHJvcGVydHlLZXlzIC0gQWxsIHByb3BlcnR5IGtleXMgdGhhdCBhcmUgZmlsZXMgYW5kIG5lZWQgdG8gYmUgYWRkZWQgdG8gdGhlIGZvcm0gZGF0YS5cbiAgICAgKiBAcGFyYW0gZW50aXR5IC0gVGhlIGVudGl0eSB0byBjcmVhdGUuIFRoaXMgaXMgbmVlZGVkIGluIGFkZGl0aW9uIHRvIHRoZSBib2R5IGJlY2F1c2UgdGhlIGJvZHkgZG9lc24ndCBjb250YWluIGFueSBtZXRhZGF0YS5cbiAgICAgKiBAcmV0dXJucyBUaGUgY3JlYXRlZCBlbnRpdHkgZnJvbSB0aGUgc2VydmVyLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBhc3luYyBjcmVhdGVXaXRoRm9ybURhdGEoXG4gICAgICAgIGJvZHk6IFBhcnRpYWw8RW50aXR5VHlwZT4sXG4gICAgICAgIGZpbGVQcm9wZXJ0eUtleXM6IChrZXlvZiBFbnRpdHlUeXBlKVtdLFxuICAgICAgICBlbnRpdHk6IEVudGl0eVR5cGVcbiAgICApOiBQcm9taXNlPEVudGl0eVR5cGU+IHtcbiAgICAgICAgY29uc3QgZm9ybURhdGE6IEZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnYm9keScsIEpTT04uc3RyaW5naWZ5KExvZGFzaFV0aWxpdGllcy5vbWl0KGJvZHksIGZpbGVQcm9wZXJ0eUtleXMpKSk7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIGZpbGVQcm9wZXJ0eUtleXMpIHtcbiAgICAgICAgICAgIGlmIChFbnRpdHlVdGlsaXRpZXMuZ2V0UHJvcGVydHlNZXRhZGF0YShlbnRpdHksIGtleSwgRGVjb3JhdG9yVHlwZXMuRklMRV9ERUZBVUxUKS5tdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVEYXRhVmFsdWVzOiBGaWxlRGF0YVtdID0gYm9keVtrZXldIGFzIEZpbGVEYXRhW107XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCB2YWx1ZSBvZiBmaWxlRGF0YVZhbHVlcykge1xuICAgICAgICAgICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoa2V5IGFzIHN0cmluZywgKGF3YWl0IEZpbGVVdGlsaXRpZXMuZ2V0RmlsZURhdGEodmFsdWUpKS5maWxlLCB2YWx1ZS5uYW1lKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlRGF0YTogRmlsZURhdGEgPSBib2R5W2tleV0gYXMgRmlsZURhdGE7XG4gICAgICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKGtleSBhcyBzdHJpbmcsIChhd2FpdCBGaWxlVXRpbGl0aWVzLmdldEZpbGVEYXRhKGZpbGVEYXRhKSkuZmlsZSwgZmlsZURhdGEubmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZTogRW50aXR5VHlwZSB8IHVuZGVmaW5lZCA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5wb3N0PEVudGl0eVR5cGUgfCB1bmRlZmluZWQ+KHRoaXMuYmFzZVVybCwgZm9ybURhdGEpKTtcbiAgICAgICAgaWYgKCFlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFxuICAgICAgICAgICAgICAgIFRoZSBjcmVhdGVkIGVudGl0eSB3YXMgbm90IHJldHVybmVkIGluIHRoZSByZXNwb25zZS5cbiAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byBwcm92aWRlIGEgbG9naWMgdGhhdCBhbGxvd3MgdGhhdFxuICAgICAgICAgICAgICAgIHlvdSBuZWVkIHRvIG92ZXJyaWRlIHRoZSBjcmVhdGUgbWV0aG9kcyBvZiB0aGlzIGNsYXNzLlxuICAgICAgICAgICAgYCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lbnRpdGllcy5wdXNoKGUpO1xuICAgICAgICB0aGlzLmVudGl0aWVzU3ViamVjdC5uZXh0KHRoaXMuZW50aXRpZXMpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIHRoZSBlbnRpdHkgd2l0aCBhIG5vcm1hbCBqc29uIGJvZHkgaW4gY29udHJhc3QgdG8gY3JlYXRpbmcgaXQgd2l0aCBmb3JtIGRhdGEgd2hlbiB0aGUgZW50aXR5IGNvbnRhaW5zIGZpbGVzLlxuICAgICAqXG4gICAgICogQHBhcmFtIGJvZHkgLSBUaGUgYm9keSBPZiB0aGUgcmVxdWVzdC5cbiAgICAgKiBAcmV0dXJucyBUaGUgY3JlYXRlZCBlbnRpdHkgZnJvbSB0aGUgc2VydmVyLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBhc3luYyBjcmVhdGVXaXRoSnNvbihib2R5OiBQYXJ0aWFsPEVudGl0eVR5cGU+KTogUHJvbWlzZTxFbnRpdHlUeXBlPiB7XG4gICAgICAgIGNvbnN0IGU6IEVudGl0eVR5cGUgfCB1bmRlZmluZWQgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAucG9zdDxFbnRpdHlUeXBlIHwgdW5kZWZpbmVkPih0aGlzLmJhc2VVcmwsIGJvZHkpKTtcbiAgICAgICAgaWYgKCFlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFxuICAgICAgICAgICAgICAgIFRoZSBjcmVhdGVkIGVudGl0eSB3YXMgbm90IHJldHVybmVkIGluIHRoZSByZXNwb25zZS5cbiAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byBwcm92aWRlIGEgbG9naWMgdGhhdCBhbGxvd3MgdGhhdFxuICAgICAgICAgICAgICAgIHlvdSBuZWVkIHRvIG92ZXJyaWRlIHRoZSBjcmVhdGUgbWV0aG9kcyBvZiB0aGlzIGNsYXNzLlxuICAgICAgICAgICAgYCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lbnRpdGllcy5wdXNoKGUpO1xuICAgICAgICB0aGlzLmVudGl0aWVzU3ViamVjdC5uZXh0KHRoaXMuZW50aXRpZXMpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGFsbCBleGlzdGluZyBlbnRpdGllcyBhbmQgcHVzaGVzIHRoZW0gdG8gdGhlIGVudGl0aWVzIGFycmF5LlxuICAgICAqXG4gICAgICogQHJldHVybnMgQSBQcm9taXNlIG9mIGFsbCByZWNlaXZlZCBFbnRpdGllcy5cbiAgICAgKi9cbiAgICBhc3luYyByZWFkKCk6IFByb21pc2U8RW50aXR5VHlwZVtdPiB7XG4gICAgICAgIGNvbnN0IGU6IEVudGl0eVR5cGVbXSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5nZXQ8RW50aXR5VHlwZVtdPih0aGlzLmJhc2VVcmwpKTtcbiAgICAgICAgdGhpcy5lbnRpdGllc1N1YmplY3QubmV4dChlKTtcbiAgICAgICAgdGhpcy5sYXN0UmVhZCA9IG5ldyBEYXRlKCk7XG4gICAgICAgIHJldHVybiBlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyaWVzIHRvIGZpbmQgYW4gZW50aXR5IHdpdGggdGhlIGdpdmVuIGlkLlxuICAgICAqXG4gICAgICogQHBhcmFtIGlkIC0gVGhlIGlkIG9mIHRoZSBlbnRpdHkgdG8gZmluZC5cbiAgICAgKiBAcmV0dXJucyBUaGUgZm91bmQgZW50aXR5LlxuICAgICAqL1xuICAgIGFzeW5jIGZpbmRCeUlkKGlkOiBFbnRpdHlUeXBlW2tleW9mIEVudGl0eVR5cGVdKTogUHJvbWlzZTxFbnRpdHlUeXBlPiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMubGFzdFJlYWQgPT0gbnVsbFxuICAgICAgICAgICAgfHwgKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC0gdGhpcy5sYXN0UmVhZC5nZXRUaW1lKCkpID4gdGhpcy5SRUFEX0VYUElSQVRJT05fSU5fTVNcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20odGhpcy5odHRwLmdldDxFbnRpdHlUeXBlPihgJHt0aGlzLmJhc2VVcmx9LyR7aWR9YCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmVudGl0aWVzLmZpbmQoZSA9PiBlW3RoaXMuaWRLZXldID09PSBpZCkgPz8gZmlyc3RWYWx1ZUZyb20odGhpcy5odHRwLmdldDxFbnRpdHlUeXBlPihgJHt0aGlzLmJhc2VVcmx9LyR7aWR9YCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZXMgYSBzcGVjaWZpYyBFbnRpdHkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZW50aXR5IC0gVGhlIHVwZGF0ZWQgRW50aXR5XG4gICAgICogQWxsIHZhbHVlcyB0aGF0IHNob3VsZCBiZSBvbWl0dGVkIHdpbGwgYmUgcmVtb3ZlZCBmcm9tIGl0IGluc2lkZSB0aGlzIG1ldGhvZC5cbiAgICAgKiBAcGFyYW0gZW50aXR5UHJpb3JDaGFuZ2VzIC0gVGhlIGN1cnJlbnQgRW50aXR5LlxuICAgICAqIEl0IElzIHVzZWQgdG8gZ2V0IGNoYW5nZWQgdmFsdWVzIGFuZCBvbmx5IHVwZGF0ZSB0aGVtIGluc3RlYWQgb2Ygc2VuZGluZyB0aGUgd2hvbGUgZW50aXR5IGRhdGEuXG4gICAgICovXG4gICAgYXN5bmMgdXBkYXRlKGVudGl0eTogRW50aXR5VHlwZSwgZW50aXR5UHJpb3JDaGFuZ2VzOiBFbnRpdHlUeXBlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGJvZHk6IFBhcnRpYWw8RW50aXR5VHlwZT4gPSBMb2Rhc2hVdGlsaXRpZXMub21pdChcbiAgICAgICAgICAgIGF3YWl0IEVudGl0eVV0aWxpdGllcy5kaWZmZXJlbmNlKGVudGl0eSwgZW50aXR5UHJpb3JDaGFuZ2VzKSxcbiAgICAgICAgICAgIEVudGl0eVV0aWxpdGllcy5nZXRPbWl0Rm9yVXBkYXRlKGVudGl0eSlcbiAgICAgICAgKSBhcyB1bmtub3duIGFzIFBhcnRpYWw8RW50aXR5VHlwZT47XG4gICAgICAgIGNvbnN0IGZpbGVQcm9wZXJ0eUtleXM6IChrZXlvZiBFbnRpdHlUeXBlKVtdID0gRW50aXR5VXRpbGl0aWVzLmdldEZpbGVQcm9wZXJ0aWVzKGVudGl0eVByaW9yQ2hhbmdlcyk7XG4gICAgICAgIGlmICghZmlsZVByb3BlcnR5S2V5cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMudXBkYXRlV2l0aEpzb24oYm9keSwgZW50aXR5UHJpb3JDaGFuZ2VzW3RoaXMuaWRLZXldKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMudXBkYXRlV2l0aEZvcm1EYXRhKGJvZHksIGZpbGVQcm9wZXJ0eUtleXMsIGVudGl0eSwgZW50aXR5UHJpb3JDaGFuZ2VzW3RoaXMuaWRLZXldKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRPRE86IEZpbmQgYSB3YXkgdG8gdXNlIGJsb2JzIHdpdGggamVzdFxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgLyoqXG4gICAgICogVXBkYXRlcyB0aGUgZW50aXR5IHdpdGggZm9ybSBkYXRhIHdoZW4gdGhlIGVudGl0eSBjb250YWlucyBmaWxlcyBpbiBjb250cmFzdCB0byBjcmVhdGluZyBpdCB3aXRoIGEgbm9ybWFsIGpzb24gYm9keS5cbiAgICAgKiBBbGwgZmlsZSB2YWx1ZXMgYXJlIHN0b3JlZCBpbnNpZGUgdGhlaXIgcmVzcGVjdGl2ZSBwcm9wZXJ0eSBrZXkgYW5kIHRoZWlyIG5hbWUuXG4gICAgICogRm9ybSBkYXRhIGlzIGFibGUgdG8gaGFuZGxlIHNldHRpbmcgbXVsdGlwbGUgZmlsZXMgdG8gdGhlIHNhbWUga2V5LlxuICAgICAqXG4gICAgICogQHBhcmFtIGJvZHkgLSBUaGUgcmVxdWVzdCBib2R5LiBBbHJlYWR5IGNvbnRhaW5zIG9ubHkgcHJvcGVydGllcyB0aGF0IGhhdmUgY2hhbmdlZC5cbiAgICAgKiBAcGFyYW0gZmlsZVByb3BlcnR5S2V5cyAtIFRoZSBrZXlzIG9mIGFsbCBwcm9wZXJ0aWVzIHdoaWNoIGFyZSBmaWxlcyBhbmQgbmVlZCB0byBzZXBhcmF0ZWx5IGJlIGFwcGVuZGVkIHRvIHRoZSBmb3JtIGRhdGEuXG4gICAgICogQHBhcmFtIGVudGl0eSAtIFRoZSBvcmlnaW5hbCBlbnRpdHkuIElzIG5lZWRlZCB0byBnZXQgdGhlIG1ldGFkYXRhIG9mIGFsbCB0aGUgZmlsZXMuXG4gICAgICogQHBhcmFtIGlkIC0gVGhlIGlkIG9mIHRoZSBlbnRpdHkgdG8gdXBkYXRlLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBhc3luYyB1cGRhdGVXaXRoRm9ybURhdGEoXG4gICAgICAgIGJvZHk6IFBhcnRpYWw8RW50aXR5VHlwZT4sXG4gICAgICAgIGZpbGVQcm9wZXJ0eUtleXM6IChrZXlvZiBFbnRpdHlUeXBlKVtdLFxuICAgICAgICBlbnRpdHk6IEVudGl0eVR5cGUsXG4gICAgICAgIGlkOiBFbnRpdHlUeXBlW2tleW9mIEVudGl0eVR5cGVdXG4gICAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGZvcm1EYXRhOiBGb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2JvZHknLCBKU09OLnN0cmluZ2lmeShMb2Rhc2hVdGlsaXRpZXMub21pdEJ5KGJvZHksIExvZGFzaFV0aWxpdGllcy5pc05pbCkpKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgZmlsZVByb3BlcnR5S2V5cykge1xuICAgICAgICAgICAgaWYgKEVudGl0eVV0aWxpdGllcy5nZXRQcm9wZXJ0eU1ldGFkYXRhKGVudGl0eSwga2V5LCBEZWNvcmF0b3JUeXBlcy5GSUxFX0RFRkFVTFQpLm11bHRpcGxlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZURhdGFWYWx1ZXM6IEZpbGVEYXRhW10gPSBib2R5W2tleV0gYXMgRmlsZURhdGFbXTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIGZpbGVEYXRhVmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChrZXkgYXMgc3RyaW5nLCAoYXdhaXQgRmlsZVV0aWxpdGllcy5nZXRGaWxlRGF0YSh2YWx1ZSkpLmZpbGUsIHZhbHVlLm5hbWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVEYXRhOiBGaWxlRGF0YSA9IGJvZHlba2V5XSBhcyBGaWxlRGF0YTtcbiAgICAgICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoa2V5IGFzIHN0cmluZywgKGF3YWl0IEZpbGVVdGlsaXRpZXMuZ2V0RmlsZURhdGEoZmlsZURhdGEpKS5maWxlLCBmaWxlRGF0YS5uYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1cGRhdGVkRW50aXR5OiBFbnRpdHlUeXBlIHwgdW5kZWZpbmVkID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgICAgICB0aGlzLmh0dHAucGF0Y2g8RW50aXR5VHlwZSB8IHVuZGVmaW5lZD4oYCR7dGhpcy5iYXNlVXJsfS8ke2lkfWAsIGZvcm1EYXRhKVxuICAgICAgICApO1xuICAgICAgICBpZiAoIXVwZGF0ZWRFbnRpdHkpIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ1RoZSB1cGRhdGVkIGVudGl0eSB3YXMgbm90IHJldHVybmVkIGluIHRoZSByZXNwb25zZS4gQXBwbHlpbmcgdGhlIGNoYW5nZXMgZnJvbSB0aGUgcmVxdWVzdCBib2R5LicpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gYm9keSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZW50aXRpZXNbdGhpcy5lbnRpdGllcy5maW5kSW5kZXgoZSA9PiBlW3RoaXMuaWRLZXldID09PSBpZCldW2tleV1cbiAgICAgICAgICAgICAgICAgICAgPSBib2R5W2tleV0gYXMgRW50aXR5VHlwZVtFeHRyYWN0PGtleW9mIEVudGl0eVR5cGUsIHN0cmluZz5dO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5lbnRpdGllc1N1YmplY3QubmV4dCh0aGlzLmVudGl0aWVzKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVudGl0aWVzW3RoaXMuZW50aXRpZXMuZmluZEluZGV4KGUgPT4gZVt0aGlzLmlkS2V5XSA9PT0gaWQpXSA9IHVwZGF0ZWRFbnRpdHk7XG4gICAgICAgIHRoaXMuZW50aXRpZXNTdWJqZWN0Lm5leHQodGhpcy5lbnRpdGllcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlcyB0aGUgZW50aXR5IHdpdGggYSBub3JtYWwganNvbiBib2R5IGluIGNvbnRyYXN0IHRvIHVwZGF0aW5nIGl0IHdpdGggZm9ybSBkYXRhIHdoZW4gdGhlIGVudGl0eSBjb250YWlucyBmaWxlcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBib2R5IC0gVGhlIGJvZHkgb2YgdGhlIFJlcXVlc3QuIEhhcyBhbHJlYWR5IHJlbW92ZWQgYWxsIHVubmVjZXNzYXJ5IHZhbHVlcy5cbiAgICAgKiBAcGFyYW0gaWQgLSBUaGUgaWQgb2YgdGhlIGVudGl0eSB0byB1cGRhdGUuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGFzeW5jIHVwZGF0ZVdpdGhKc29uKGJvZHk6IFBhcnRpYWw8RW50aXR5VHlwZT4sIGlkOiBFbnRpdHlUeXBlW2tleW9mIEVudGl0eVR5cGVdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRFbnRpdHk6IEVudGl0eVR5cGUgfCB1bmRlZmluZWQgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShcbiAgICAgICAgICAgIHRoaXMuaHR0cC5wYXRjaDxFbnRpdHlUeXBlIHwgdW5kZWZpbmVkPihcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmJhc2VVcmx9LyR7aWR9YCxcbiAgICAgICAgICAgICAgICBMb2Rhc2hVdGlsaXRpZXMub21pdEJ5KGJvZHksIExvZGFzaFV0aWxpdGllcy5pc05pbClcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKCF1cGRhdGVkRW50aXR5KSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgICAgY29uc29sZS53YXJuKCdUaGUgdXBkYXRlZCBlbnRpdHkgd2FzIG5vdCByZXR1cm5lZCBpbiB0aGUgcmVzcG9uc2UuIEFwcGx5aW5nIHRoZSBjaGFuZ2VzIGZyb20gdGhlIHJlcXVlc3QgYm9keS4nKTtcbiAgICAgICAgICAgIGNvbnN0IGZvdW5kRW50aXR5OiBFbnRpdHlUeXBlID0gdGhpcy5lbnRpdGllc1t0aGlzLmVudGl0aWVzLmZpbmRJbmRleChlID0+IGVbdGhpcy5pZEtleV0gPT09IGlkKV07XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBib2R5KSB7XG4gICAgICAgICAgICAgICAgZm91bmRFbnRpdHlba2V5XVxuICAgICAgICAgICAgICAgICAgICA9IGJvZHlba2V5XSBhcyBFbnRpdHlUeXBlW0V4dHJhY3Q8a2V5b2YgRW50aXR5VHlwZSwgc3RyaW5nPl07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmVudGl0aWVzU3ViamVjdC5uZXh0KHRoaXMuZW50aXRpZXMpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZW50aXRpZXNbdGhpcy5lbnRpdGllcy5maW5kSW5kZXgoZSA9PiBlW3RoaXMuaWRLZXldID09PSBpZCldID0gdXBkYXRlZEVudGl0eTtcbiAgICAgICAgdGhpcy5lbnRpdGllc1N1YmplY3QubmV4dCh0aGlzLmVudGl0aWVzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWxldGVzIGEgc3BlY2lmaWMgRW50aXR5LlxuICAgICAqXG4gICAgICogQHBhcmFtIGVudGl0eSAtIFRoZSBlbnRpdHkgdG8gZGVsZXRlLlxuICAgICAqL1xuICAgIGFzeW5jIGRlbGV0ZShlbnRpdHk6IEVudGl0eVR5cGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5odHRwLmRlbGV0ZTx2b2lkPihgJHt0aGlzLmJhc2VVcmx9LyR7ZW50aXR5W3RoaXMuaWRLZXldfWApKTtcbiAgICAgICAgLy8gdGhlID09IGNvbXBhcmlzb24gaW5zdGVhZCBvZiA9PT0gaXMgdG8gY2F0Y2ggaWRzIHRoYXQgYXJlIG51bWJlcnMuXG4gICAgICAgIHRoaXMuZW50aXRpZXMuc3BsaWNlKHRoaXMuZW50aXRpZXMuZmluZEluZGV4KGUgPT4gZVt0aGlzLmlkS2V5XSA9PT0gZW50aXR5W3RoaXMuaWRLZXldKSwgMSk7XG4gICAgICAgIHRoaXMuZW50aXRpZXNTdWJqZWN0Lm5leHQodGhpcy5lbnRpdGllcyk7XG4gICAgfVxufSJdfQ==
|
|
252
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9zZXJ2aWNlcy9lbnRpdHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFFekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFNUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQWdCLGFBQWE7SUFtRC9CLFlBQTZCLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFwQzdDOztXQUVHO1FBQ00sa0JBQWEsR0FBVyxVQUFVLENBQUM7UUFFNUM7Ozs7V0FJRztRQUNNLFVBQUssR0FBcUIsSUFBd0IsQ0FBQztRQUU1RDs7O1dBR0c7UUFDTSxvQkFBZSxHQUFrQyxJQUFJLGVBQWUsQ0FBZSxFQUFFLENBQUMsQ0FBQztRQUdoRzs7O1dBR0c7UUFDZ0IsMEJBQXFCLEdBQVcsTUFBTSxDQUFDO0lBYVYsQ0FBQztJQVhqRDs7OztPQUlHO0lBQ0gsSUFBSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQztJQUN0QyxDQUFDO0lBTUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFrQjtRQUMzQixNQUFNLElBQUksR0FBd0IsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsZUFBZSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUF3QixDQUFDO1FBQ2hJLE1BQU0sZ0JBQWdCLEdB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S0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7Z0JBQ3BCLFdBQVcsQ0FBQyxHQUFHLENBQUM7c0JBQ1YsSUFBSSxDQUFDLEdBQUcsQ0FBa0QsQ0FBQzthQUNwRTtZQUNELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN6QyxPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQztRQUNsRixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQWtCO1FBQzNCLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3RGLHFFQUFxRTtRQUNyRSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVGLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM3QyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQmFzZUVudGl0eVR5cGUgfSBmcm9tICcuLi9jbGFzc2VzL2VudGl0eS5tb2RlbCc7XG5pbXBvcnQgeyBEZWNvcmF0b3JUeXBlcyB9IGZyb20gJy4uL2RlY29yYXRvcnMvYmFzZS9kZWNvcmF0b3ItdHlwZXMuZW51bSc7XG5pbXBvcnQgeyBGaWxlRGF0YSB9IGZyb20gJy4uL2RlY29yYXRvcnMvZmlsZS9maWxlLWRlY29yYXRvci5kYXRhJztcbmltcG9ydCB7IExvZGFzaFV0aWxpdGllcyB9IGZyb20gJy4uL2VuY2Fwc3VsYXRpb24vbG9kYXNoLnV0aWxpdGllcyc7XG5pbXBvcnQgeyBFbnRpdHlVdGlsaXRpZXMgfSBmcm9tICcuLi91dGlsaXRpZXMvZW50aXR5LnV0aWxpdGllcyc7XG5pbXBvcnQgeyBGaWxlVXRpbGl0aWVzIH0gZnJvbSAnLi4vdXRpbGl0aWVzL2ZpbGUudXRpbGl0aWVzJztcblxuLyoqXG4gKiBBIGdlbmVyaWMgRW50aXR5U2VydmljZSBjbGFzcy5cbiAqIE9mZmVycyBiYXNpYyBDUlVELWZ1bmN0aW9uYWxpdHkuXG4gKiBZb3Ugc2hvdWxkIGNyZWF0ZSBhIHNlcnZpY2UgZm9yIGV2ZXJ5IEVudGl0eSB5b3UgaGF2ZS5cbiAqIElmIHlvdSBleHRlbmQgZnJvbSB0aGlzIHlvdSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBleHRlbmRlZCBTZXJ2aWNlIGNhbiBiZSBpbmplY3RlZC5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEVudGl0eVNlcnZpY2U8RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PiB7XG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgdXJsIHVzZWQgZm9yIGFwaSByZXF1ZXN0cy4gSWYgdSB3YW50IHRvIGhhdmUgbW9yZSBjb250cm9sIG92ZXIgdGhpcyxcbiAgICAgKiB5b3UgY2FuIG92ZXJyaWRlIHRoZSBjcmVhdGUsIHJlYWQsIHVwZGF0ZSBhbmQgZGVsZXRlIG1ldGhvZHMuXG4gICAgICpcbiAgICAgKiBDcmVhdGUgU2VuZHMgYSBQT1NULVJlcXVlc3QgdG8gYmFzZVVybC5cbiAgICAgKlxuICAgICAqIFJlYWQgU2VuZHMgYSBHRVQtUmVxdWVzdCB0byBiYXNlVXJsLlxuICAgICAqXG4gICAgICogVXBkYXRlIFNlbmRzIGEgUEFUQ0gtUmVxdWVzdCB0byBiYXNlVXJsL3tpZH0uXG4gICAgICpcbiAgICAgKiBEZWxldGUgU2VuZHMgYSBERUwtUmVxdWVzdCB0byBiYXNlVXJsL3tpZH0uXG4gICAgICovXG4gICAgYWJzdHJhY3QgcmVhZG9ubHkgYmFzZVVybDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHJvdXRlIHNlZ21lbnQgdGhhdCBjb21lcyBiZWZvcmUgdGhlIGlkIHdoZW4gZWRpdGluZyBhbiBlbnRpdHkgaW4gYSBzZXBhcmF0ZSBwYWdlLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IGVkaXRCYXNlUm91dGU6IHN0cmluZyA9ICdlbnRpdGllcyc7XG5cbiAgICAvKipcbiAgICAgKiBUaGUga2V5IHdoaWNoIGhvbGRzIHRoZSBpZCB2YWx1ZS5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0ICdpZCdcbiAgICAgKi9cbiAgICByZWFkb25seSBpZEtleToga2V5b2YgRW50aXR5VHlwZSA9ICdpZCcgYXMga2V5b2YgRW50aXR5VHlwZTtcblxuICAgIC8qKlxuICAgICAqIEEgc3ViamVjdCBvZiBhbGwgdGhlIGVudGl0eSB2YWx1ZXMuXG4gICAgICogQ2FuIGJlIHN1YnNjcmliZWQgdG8gd2hlbiB5b3Ugd2FudCB0byBkbyBhIHNwZWNpZmljIHRoaW5nIHdoZW5ldmVyIHRoZSBlbnRpdGllcyBjaGFuZ2UuXG4gICAgICovXG4gICAgcmVhZG9ubHkgZW50aXRpZXNTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8RW50aXR5VHlwZVtdPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RW50aXR5VHlwZVtdPihbXSk7XG5cblxuICAgIC8qKlxuICAgICAqIEEgc3ViamVjdCBvZiBhbGwgdGhlIGVudGl0eSB2YWx1ZXMuXG4gICAgICogQ2FuIGJlIHN1YnNjcmliZWQgdG8gd2hlbiB5b3Ugd2FudCB0byBkbyBhIHNwZWNpZmljIHRoaW5nIHdoZW5ldmVyIHRoZSBlbnRpdGllcyBjaGFuZ2UuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IFJFQURfRVhQSVJBVElPTl9JTl9NUzogbnVtYmVyID0gOTAwMDAwO1xuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgZW50aXRpZXMgaW4gYW4gYXJyYXkgZnJvbSB0aGUgaW50ZXJuYWwgZW50aXRpZXNTdWJqZWN0LlxuICAgICAqXG4gICAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgZW50aXRpZXMgaW4gZm9ybSBvZiBhbiBhcnJheS5cbiAgICAgKi9cbiAgICBnZXQgZW50aXRpZXMoKTogRW50aXR5VHlwZVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW50aXRpZXNTdWJqZWN0LnZhbHVlO1xuICAgIH1cblxuICAgIGxhc3RSZWFkPzogRGF0ZTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgaHR0cDogSHR0cENsaWVudCkge31cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgRW50aXR5IGFuZCBwdXNoZXMgaXQgdG8gdGhlIGVudGl0aWVzIGFycmF5LlxuICAgICAqXG4gICAgICogQHBhcmFtIGVudGl0eSAtIFRoZSBkYXRhIG9mIHRoZSBlbnRpdHkgdG8gY3JlYXRlLlxuICAgICAqIEFsbCB2YWx1ZXMgdGhhdCBzaG91bGQgYmUgb21pdHRlZCB3aWxsIGJlIHJlbW92ZWQgZnJvbSBpdCBpbnNpZGUgdGhpcyBtZXRob2QuXG4gICAgICogQHJldHVybnMgQSBQcm9taXNlIG9mIHRoZSBjcmVhdGVkIGVudGl0eS5cbiAgICAgKi9cbiAgICBhc3luYyBjcmVhdGUoZW50aXR5OiBFbnRpdHlUeXBlKTogUHJvbWlzZTxFbnRpdHlUeXBlPiB7XG4gICAgICAgIGNvbnN0IGJvZHk6IFBhcnRpYWw8RW50aXR5VHlwZT4gPSBMb2Rhc2hVdGlsaXRpZXMub21pdChlbnRpdHksIEVudGl0eVV0aWxpdGllcy5nZXRPbWl0Rm9yQ3JlYXRlKGVudGl0eSkpIGFzIFBhcnRpYWw8RW50aXR5VHlwZT47XG4gICAgICAgIGNvbnN0IGZpbGVQcm9wZXJ0eUtleXM6IChrZXlvZiBFbnRpdHlUeXBlKVtdID0gRW50aXR5VXRpbGl0aWVzLmdldEZpbGVQcm9wZXJ0aWVzKGVudGl0eSk7XG4gICAgICAgIGlmICghZmlsZVByb3BlcnR5S2V5cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmNyZWF0ZVdpdGhKc29uKGJvZHkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuY3JlYXRlV2l0aEZvcm1EYXRhKGJvZHksIGZpbGVQcm9wZXJ0eUtleXMsIGVudGl0eSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUT0RPOiBGaW5kIGEgd2F5IHRvIHVzZSBibG9icyB3aXRoIGplc3RcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIC8qKlxuICAgICAqIEltcG9ydHMgZXZlcnl0aGluZyBmcm9tIHRoZSBwcm92aWRlZCBqc29uIGZpbGUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmlsZSAtIFRoZSBqc29uIGZpbGUgdG8gaW1wb3J0IGZyb20uXG4gICAgICogQHJldHVybnMgQWxsIGVudGl0aWVzIHRoYXQgaGF2ZSBiZWVuIGltcG9ydGVkLlxuICAgICAqL1xuICAgIGFzeW5jIGltcG9ydChmaWxlOiBGaWxlKTogUHJvbWlzZTxFbnRpdHlUeXBlW10+IHtcbiAgICAgICAgY29uc3QgZm9ybURhdGE6IEZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnaW1wb3J0JywgZmlsZSk7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogRW50aXR5VHlwZVtdID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5odHRwLnBvc3Q8RW50aXR5VHlwZVtdPihgJHt0aGlzLmJhc2VVcmx9L2ltcG9ydGAsIGZvcm1EYXRhKSk7XG4gICAgICAgIHRoaXMuZW50aXRpZXMucHVzaCguLi5yZXN1bHQpO1xuICAgICAgICB0aGlzLmVudGl0aWVzU3ViamVjdC5uZXh0KHRoaXMuZW50aXRpZXMpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8vIFRPRE86IEZpbmQgYSB3YXkgdG8gdXNlIGJsb2JzIHdpdGggamVzdFxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyB0aGUgZW50aXR5IHdpdGggZm9ybSBkYXRhIHdoZW4gdGhlIGVudGl0eSBjb250YWlucyBmaWxlcyBpbiBjb250cmFzdCB0byBjcmVhdGluZyBpdCB3aXRoIGEgbm9ybWFsIGpzb24gYm9keS5cbiAgICAgKiBBbGwgZmlsZSB2YWx1ZXMgYXJlIHN0b3JlZCBpbnNpZGUgdGhlaXIgcmVzcGVjdGl2ZSBwcm9wZXJ0eSBrZXkgYW5kIHRoZWlyIG5hbWUuXG4gICAgICogRm9ybSBkYXRhIGlzIGFibGUgdG8gaGFuZGxlIHNldHRpbmcgbXVsdGlwbGUgZmlsZXMgdG8gdGhlIHNhbWUga2V5LlxuICAgICAqXG4gICAgICogQHBhcmFtIGJvZHkgLSBUaGUgYm9keSBPZiB0aGUgcmVxdWVzdC5cbiAgICAgKiBAcGFyYW0gZmlsZVByb3BlcnR5S2V5cyAtIEFsbCBwcm9wZXJ0eSBrZXlzIHRoYXQgYXJlIGZpbGVzIGFuZCBuZWVkIHRvIGJlIGFkZGVkIHRvIHRoZSBmb3JtIGRhdGEuXG4gICAgICogQHBhcmFtIGVudGl0eSAtIFRoZSBlbnRpdHkgdG8gY3JlYXRlLiBUaGlzIGlzIG5lZWRlZCBpbiBhZGRpdGlvbiB0byB0aGUgYm9keSBiZWNhdXNlIHRoZSBib2R5IGRvZXNuJ3QgY29udGFpbiBhbnkgbWV0YWRhdGEuXG4gICAgICogQHJldHVybnMgVGhlIGNyZWF0ZWQgZW50aXR5IGZyb20gdGhlIHNlcnZlci5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYXN5bmMgY3JlYXRlV2l0aEZvcm1EYXRhKFxuICAgICAgICBib2R5OiBQYXJ0aWFsPEVudGl0eVR5cGU+LFxuICAgICAgICBmaWxlUHJvcGVydHlLZXlzOiAoa2V5b2YgRW50aXR5VHlwZSlbXSxcbiAgICAgICAgZW50aXR5OiBFbnRpdHlUeXBlXG4gICAgKTogUHJvbWlzZTxFbnRpdHlUeXBlPiB7XG4gICAgICAgIGNvbnN0IGZvcm1EYXRhOiBGb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2JvZHknLCBKU09OLnN0cmluZ2lmeShMb2Rhc2hVdGlsaXRpZXMub21pdChib2R5LCBmaWxlUHJvcGVydHlLZXlzKSkpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBmaWxlUHJvcGVydHlLZXlzKSB7XG4gICAgICAgICAgICBpZiAoRW50aXR5VXRpbGl0aWVzLmdldFByb3BlcnR5TWV0YWRhdGEoZW50aXR5LCBrZXksIERlY29yYXRvclR5cGVzLkZJTEVfREVGQVVMVCkubXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlRGF0YVZhbHVlczogRmlsZURhdGFbXSA9IGJvZHlba2V5XSBhcyBGaWxlRGF0YVtdO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgdmFsdWUgb2YgZmlsZURhdGFWYWx1ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKGtleSBhcyBzdHJpbmcsIChhd2FpdCBGaWxlVXRpbGl0aWVzLmdldEZpbGVEYXRhKHZhbHVlKSkuZmlsZSwgdmFsdWUubmFtZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZURhdGE6IEZpbGVEYXRhID0gYm9keVtrZXldIGFzIEZpbGVEYXRhO1xuICAgICAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChrZXkgYXMgc3RyaW5nLCAoYXdhaXQgRmlsZVV0aWxpdGllcy5nZXRGaWxlRGF0YShmaWxlRGF0YSkpLmZpbGUsIGZpbGVEYXRhLm5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGU6IEVudGl0eVR5cGUgfCB1bmRlZmluZWQgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAucG9zdDxFbnRpdHlUeXBlIHwgdW5kZWZpbmVkPih0aGlzLmJhc2VVcmwsIGZvcm1EYXRhKSk7XG4gICAgICAgIGlmICghZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBcbiAgICAgICAgICAgICAgICBUaGUgY3JlYXRlZCBlbnRpdHkgd2FzIG5vdCByZXR1cm5lZCBpbiB0aGUgcmVzcG9uc2UuXG4gICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gcHJvdmlkZSBhIGxvZ2ljIHRoYXQgYWxsb3dzIHRoYXRcbiAgICAgICAgICAgICAgICB5b3UgbmVlZCB0byBvdmVycmlkZSB0aGUgY3JlYXRlIG1ldGhvZHMgb2YgdGhpcyBjbGFzcy5cbiAgICAgICAgICAgIGApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZW50aXRpZXMucHVzaChlKTtcbiAgICAgICAgdGhpcy5lbnRpdGllc1N1YmplY3QubmV4dCh0aGlzLmVudGl0aWVzKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyB0aGUgZW50aXR5IHdpdGggYSBub3JtYWwganNvbiBib2R5IGluIGNvbnRyYXN0IHRvIGNyZWF0aW5nIGl0IHdpdGggZm9ybSBkYXRhIHdoZW4gdGhlIGVudGl0eSBjb250YWlucyBmaWxlcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBib2R5IC0gVGhlIGJvZHkgT2YgdGhlIHJlcXVlc3QuXG4gICAgICogQHJldHVybnMgVGhlIGNyZWF0ZWQgZW50aXR5IGZyb20gdGhlIHNlcnZlci5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYXN5bmMgY3JlYXRlV2l0aEpzb24oYm9keTogUGFydGlhbDxFbnRpdHlUeXBlPik6IFByb21pc2U8RW50aXR5VHlwZT4ge1xuICAgICAgICBjb25zdCBlOiBFbnRpdHlUeXBlIHwgdW5kZWZpbmVkID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5odHRwLnBvc3Q8RW50aXR5VHlwZSB8IHVuZGVmaW5lZD4odGhpcy5iYXNlVXJsLCBib2R5KSk7XG4gICAgICAgIGlmICghZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBcbiAgICAgICAgICAgICAgICBUaGUgY3JlYXRlZCBlbnRpdHkgd2FzIG5vdCByZXR1cm5lZCBpbiB0aGUgcmVzcG9uc2UuXG4gICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gcHJvdmlkZSBhIGxvZ2ljIHRoYXQgYWxsb3dzIHRoYXRcbiAgICAgICAgICAgICAgICB5b3UgbmVlZCB0byBvdmVycmlkZSB0aGUgY3JlYXRlIG1ldGhvZHMgb2YgdGhpcyBjbGFzcy5cbiAgICAgICAgICAgIGApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZW50aXRpZXMucHVzaChlKTtcbiAgICAgICAgdGhpcy5lbnRpdGllc1N1YmplY3QubmV4dCh0aGlzLmVudGl0aWVzKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhbGwgZXhpc3RpbmcgZW50aXRpZXMgYW5kIHB1c2hlcyB0aGVtIHRvIHRoZSBlbnRpdGllcyBhcnJheS5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIEEgUHJvbWlzZSBvZiBhbGwgcmVjZWl2ZWQgRW50aXRpZXMuXG4gICAgICovXG4gICAgYXN5bmMgcmVhZCgpOiBQcm9taXNlPEVudGl0eVR5cGVbXT4ge1xuICAgICAgICBjb25zdCBlOiBFbnRpdHlUeXBlW10gPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAuZ2V0PEVudGl0eVR5cGVbXT4odGhpcy5iYXNlVXJsKSk7XG4gICAgICAgIHRoaXMuZW50aXRpZXNTdWJqZWN0Lm5leHQoZSk7XG4gICAgICAgIHRoaXMubGFzdFJlYWQgPSBuZXcgRGF0ZSgpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmllcyB0byBmaW5kIGFuIGVudGl0eSB3aXRoIHRoZSBnaXZlbiBpZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBpZCAtIFRoZSBpZCBvZiB0aGUgZW50aXR5IHRvIGZpbmQuXG4gICAgICogQHJldHVybnMgVGhlIGZvdW5kIGVudGl0eS5cbiAgICAgKi9cbiAgICBhc3luYyBmaW5kQnlJZChpZDogRW50aXR5VHlwZVtrZXlvZiBFbnRpdHlUeXBlXSk6IFByb21pc2U8RW50aXR5VHlwZT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmxhc3RSZWFkID09IG51bGxcbiAgICAgICAgICAgIHx8IChuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIHRoaXMubGFzdFJlYWQuZ2V0VGltZSgpKSA+IHRoaXMuUkVBRF9FWFBJUkFUSU9OX0lOX01TXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5nZXQ8RW50aXR5VHlwZT4oYCR7dGhpcy5iYXNlVXJsfS8ke2lkfWApKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5lbnRpdGllcy5maW5kKGUgPT4gZVt0aGlzLmlkS2V5XSA9PT0gaWQpID8/IGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5nZXQ8RW50aXR5VHlwZT4oYCR7dGhpcy5iYXNlVXJsfS8ke2lkfWApKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIGEgc3BlY2lmaWMgRW50aXR5LlxuICAgICAqXG4gICAgICogQHBhcmFtIGVudGl0eSAtIFRoZSB1cGRhdGVkIEVudGl0eVxuICAgICAqIEFsbCB2YWx1ZXMgdGhhdCBzaG91bGQgYmUgb21pdHRlZCB3aWxsIGJlIHJlbW92ZWQgZnJvbSBpdCBpbnNpZGUgdGhpcyBtZXRob2QuXG4gICAgICogQHBhcmFtIGVudGl0eVByaW9yQ2hhbmdlcyAtIFRoZSBjdXJyZW50IEVudGl0eS5cbiAgICAgKiBJdCBJcyB1c2VkIHRvIGdldCBjaGFuZ2VkIHZhbHVlcyBhbmQgb25seSB1cGRhdGUgdGhlbSBpbnN0ZWFkIG9mIHNlbmRpbmcgdGhlIHdob2xlIGVudGl0eSBkYXRhLlxuICAgICAqL1xuICAgIGFzeW5jIHVwZGF0ZShlbnRpdHk6IEVudGl0eVR5cGUsIGVudGl0eVByaW9yQ2hhbmdlczogRW50aXR5VHlwZSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBib2R5OiBQYXJ0aWFsPEVudGl0eVR5cGU+ID0gTG9kYXNoVXRpbGl0aWVzLm9taXQoXG4gICAgICAgICAgICBhd2FpdCBFbnRpdHlVdGlsaXRpZXMuZGlmZmVyZW5jZShlbnRpdHksIGVudGl0eVByaW9yQ2hhbmdlcyksXG4gICAgICAgICAgICBFbnRpdHlVdGlsaXRpZXMuZ2V0T21pdEZvclVwZGF0ZShlbnRpdHkpXG4gICAgICAgICkgYXMgdW5rbm93biBhcyBQYXJ0aWFsPEVudGl0eVR5cGU+O1xuICAgICAgICBjb25zdCBmaWxlUHJvcGVydHlLZXlzOiAoa2V5b2YgRW50aXR5VHlwZSlbXSA9IEVudGl0eVV0aWxpdGllcy5nZXRGaWxlUHJvcGVydGllcyhlbnRpdHlQcmlvckNoYW5nZXMpO1xuICAgICAgICBpZiAoIWZpbGVQcm9wZXJ0eUtleXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnVwZGF0ZVdpdGhKc29uKGJvZHksIGVudGl0eVByaW9yQ2hhbmdlc1t0aGlzLmlkS2V5XSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnVwZGF0ZVdpdGhGb3JtRGF0YShib2R5LCBmaWxlUHJvcGVydHlLZXlzLCBlbnRpdHksIGVudGl0eVByaW9yQ2hhbmdlc1t0aGlzLmlkS2V5XSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUT0RPOiBGaW5kIGEgd2F5IHRvIHVzZSBibG9icyB3aXRoIGplc3RcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIC8qKlxuICAgICAqIFVwZGF0ZXMgdGhlIGVudGl0eSB3aXRoIGZvcm0gZGF0YSB3aGVuIHRoZSBlbnRpdHkgY29udGFpbnMgZmlsZXMgaW4gY29udHJhc3QgdG8gY3JlYXRpbmcgaXQgd2l0aCBhIG5vcm1hbCBqc29uIGJvZHkuXG4gICAgICogQWxsIGZpbGUgdmFsdWVzIGFyZSBzdG9yZWQgaW5zaWRlIHRoZWlyIHJlc3BlY3RpdmUgcHJvcGVydHkga2V5IGFuZCB0aGVpciBuYW1lLlxuICAgICAqIEZvcm0gZGF0YSBpcyBhYmxlIHRvIGhhbmRsZSBzZXR0aW5nIG11bHRpcGxlIGZpbGVzIHRvIHRoZSBzYW1lIGtleS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBib2R5IC0gVGhlIHJlcXVlc3QgYm9keS4gQWxyZWFkeSBjb250YWlucyBvbmx5IHByb3BlcnRpZXMgdGhhdCBoYXZlIGNoYW5nZWQuXG4gICAgICogQHBhcmFtIGZpbGVQcm9wZXJ0eUtleXMgLSBUaGUga2V5cyBvZiBhbGwgcHJvcGVydGllcyB3aGljaCBhcmUgZmlsZXMgYW5kIG5lZWQgdG8gc2VwYXJhdGVseSBiZSBhcHBlbmRlZCB0byB0aGUgZm9ybSBkYXRhLlxuICAgICAqIEBwYXJhbSBlbnRpdHkgLSBUaGUgb3JpZ2luYWwgZW50aXR5LiBJcyBuZWVkZWQgdG8gZ2V0IHRoZSBtZXRhZGF0YSBvZiBhbGwgdGhlIGZpbGVzLlxuICAgICAqIEBwYXJhbSBpZCAtIFRoZSBpZCBvZiB0aGUgZW50aXR5IHRvIHVwZGF0ZS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYXN5bmMgdXBkYXRlV2l0aEZvcm1EYXRhKFxuICAgICAgICBib2R5OiBQYXJ0aWFsPEVudGl0eVR5cGU+LFxuICAgICAgICBmaWxlUHJvcGVydHlLZXlzOiAoa2V5b2YgRW50aXR5VHlwZSlbXSxcbiAgICAgICAgZW50aXR5OiBFbnRpdHlUeXBlLFxuICAgICAgICBpZDogRW50aXR5VHlwZVtrZXlvZiBFbnRpdHlUeXBlXVxuICAgICk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBmb3JtRGF0YTogRm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdib2R5JywgSlNPTi5zdHJpbmdpZnkoTG9kYXNoVXRpbGl0aWVzLm9taXRCeShib2R5LCBMb2Rhc2hVdGlsaXRpZXMuaXNOaWwpKSk7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIGZpbGVQcm9wZXJ0eUtleXMpIHtcbiAgICAgICAgICAgIGlmIChFbnRpdHlVdGlsaXRpZXMuZ2V0UHJvcGVydHlNZXRhZGF0YShlbnRpdHksIGtleSwgRGVjb3JhdG9yVHlwZXMuRklMRV9ERUZBVUxUKS5tdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVEYXRhVmFsdWVzOiBGaWxlRGF0YVtdID0gYm9keVtrZXldIGFzIEZpbGVEYXRhW107XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCB2YWx1ZSBvZiBmaWxlRGF0YVZhbHVlcykge1xuICAgICAgICAgICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoa2V5IGFzIHN0cmluZywgKGF3YWl0IEZpbGVVdGlsaXRpZXMuZ2V0RmlsZURhdGEodmFsdWUpKS5maWxlLCB2YWx1ZS5uYW1lKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlRGF0YTogRmlsZURhdGEgPSBib2R5W2tleV0gYXMgRmlsZURhdGE7XG4gICAgICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKGtleSBhcyBzdHJpbmcsIChhd2FpdCBGaWxlVXRpbGl0aWVzLmdldEZpbGVEYXRhKGZpbGVEYXRhKSkuZmlsZSwgZmlsZURhdGEubmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdXBkYXRlZEVudGl0eTogRW50aXR5VHlwZSB8IHVuZGVmaW5lZCA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxuICAgICAgICAgICAgdGhpcy5odHRwLnBhdGNoPEVudGl0eVR5cGUgfCB1bmRlZmluZWQ+KGAke3RoaXMuYmFzZVVybH0vJHtpZH1gLCBmb3JtRGF0YSlcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKCF1cGRhdGVkRW50aXR5KSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgICAgY29uc29sZS53YXJuKCdUaGUgdXBkYXRlZCBlbnRpdHkgd2FzIG5vdCByZXR1cm5lZCBpbiB0aGUgcmVzcG9uc2UuIEFwcGx5aW5nIHRoZSBjaGFuZ2VzIGZyb20gdGhlIHJlcXVlc3QgYm9keS4nKTtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGJvZHkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVudGl0aWVzW3RoaXMuZW50aXRpZXMuZmluZEluZGV4KGUgPT4gZVt0aGlzLmlkS2V5XSA9PT0gaWQpXVtrZXldXG4gICAgICAgICAgICAgICAgICAgID0gYm9keVtrZXldIGFzIEVudGl0eVR5cGVbRXh0cmFjdDxrZXlvZiBFbnRpdHlUeXBlLCBzdHJpbmc+XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZW50aXRpZXNTdWJqZWN0Lm5leHQodGhpcy5lbnRpdGllcyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lbnRpdGllc1t0aGlzLmVudGl0aWVzLmZpbmRJbmRleChlID0+IGVbdGhpcy5pZEtleV0gPT09IGlkKV0gPSB1cGRhdGVkRW50aXR5O1xuICAgICAgICB0aGlzLmVudGl0aWVzU3ViamVjdC5uZXh0KHRoaXMuZW50aXRpZXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZXMgdGhlIGVudGl0eSB3aXRoIGEgbm9ybWFsIGpzb24gYm9keSBpbiBjb250cmFzdCB0byB1cGRhdGluZyBpdCB3aXRoIGZvcm0gZGF0YSB3aGVuIHRoZSBlbnRpdHkgY29udGFpbnMgZmlsZXMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYm9keSAtIFRoZSBib2R5IG9mIHRoZSBSZXF1ZXN0LiBIYXMgYWxyZWFkeSByZW1vdmVkIGFsbCB1bm5lY2Vzc2FyeSB2YWx1ZXMuXG4gICAgICogQHBhcmFtIGlkIC0gVGhlIGlkIG9mIHRoZSBlbnRpdHkgdG8gdXBkYXRlLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBhc3luYyB1cGRhdGVXaXRoSnNvbihib2R5OiBQYXJ0aWFsPEVudGl0eVR5cGU+LCBpZDogRW50aXR5VHlwZVtrZXlvZiBFbnRpdHlUeXBlXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCB1cGRhdGVkRW50aXR5OiBFbnRpdHlUeXBlIHwgdW5kZWZpbmVkID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgICAgICB0aGlzLmh0dHAucGF0Y2g8RW50aXR5VHlwZSB8IHVuZGVmaW5lZD4oXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5iYXNlVXJsfS8ke2lkfWAsXG4gICAgICAgICAgICAgICAgTG9kYXNoVXRpbGl0aWVzLm9taXRCeShib2R5LCBMb2Rhc2hVdGlsaXRpZXMuaXNOaWwpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICAgIGlmICghdXBkYXRlZEVudGl0eSkge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignVGhlIHVwZGF0ZWQgZW50aXR5IHdhcyBub3QgcmV0dXJuZWQgaW4gdGhlIHJlc3BvbnNlLiBBcHBseWluZyB0aGUgY2hhbmdlcyBmcm9tIHRoZSByZXF1ZXN0IGJvZHkuJyk7XG4gICAgICAgICAgICBjb25zdCBmb3VuZEVudGl0eTogRW50aXR5VHlwZSA9IHRoaXMuZW50aXRpZXNbdGhpcy5lbnRpdGllcy5maW5kSW5kZXgoZSA9PiBlW3RoaXMuaWRLZXldID09PSBpZCldO1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gYm9keSkge1xuICAgICAgICAgICAgICAgIGZvdW5kRW50aXR5W2tleV1cbiAgICAgICAgICAgICAgICAgICAgPSBib2R5W2tleV0gYXMgRW50aXR5VHlwZVtFeHRyYWN0PGtleW9mIEVudGl0eVR5cGUsIHN0cmluZz5dO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5lbnRpdGllc1N1YmplY3QubmV4dCh0aGlzLmVudGl0aWVzKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVudGl0aWVzW3RoaXMuZW50aXRpZXMuZmluZEluZGV4KGUgPT4gZVt0aGlzLmlkS2V5XSA9PT0gaWQpXSA9IHVwZGF0ZWRFbnRpdHk7XG4gICAgICAgIHRoaXMuZW50aXRpZXNTdWJqZWN0Lm5leHQodGhpcy5lbnRpdGllcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVsZXRlcyBhIHNwZWNpZmljIEVudGl0eS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBlbnRpdHkgLSBUaGUgZW50aXR5IHRvIGRlbGV0ZS5cbiAgICAgKi9cbiAgICBhc3luYyBkZWxldGUoZW50aXR5OiBFbnRpdHlUeXBlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5kZWxldGU8dm9pZD4oYCR7dGhpcy5iYXNlVXJsfS8ke2VudGl0eVt0aGlzLmlkS2V5XX1gKSk7XG4gICAgICAgIC8vIHRoZSA9PSBjb21wYXJpc29uIGluc3RlYWQgb2YgPT09IGlzIHRvIGNhdGNoIGlkcyB0aGF0IGFyZSBudW1iZXJzLlxuICAgICAgICB0aGlzLmVudGl0aWVzLnNwbGljZSh0aGlzLmVudGl0aWVzLmZpbmRJbmRleChlID0+IGVbdGhpcy5pZEtleV0gPT09IGVudGl0eVt0aGlzLmlkS2V5XSksIDEpO1xuICAgICAgICB0aGlzLmVudGl0aWVzU3ViamVjdC5uZXh0KHRoaXMuZW50aXRpZXMpO1xuICAgIH1cbn0iXX0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { LodashUtilities } from '../encapsulation/lodash.utilities';
|
|
2
1
|
import { JSZipUtilities } from '../encapsulation/jszip.utilities';
|
|
2
|
+
import { LodashUtilities } from '../encapsulation/lodash.utilities';
|
|
3
3
|
/**
|
|
4
4
|
* Provides functionality regarding files.
|
|
5
5
|
*/
|
|
@@ -87,10 +87,23 @@ export class FileUtilities {
|
|
|
87
87
|
* @param fileData - The file data. Needs to contain a blob.
|
|
88
88
|
*/
|
|
89
89
|
static downloadSingleFile(fileData) {
|
|
90
|
+
this.downLoadBlob(fileData.file, fileData.name);
|
|
91
|
+
}
|
|
92
|
+
// TODO: Find a way to use blobs with jest
|
|
93
|
+
/* istanbul ignore next */
|
|
94
|
+
/**
|
|
95
|
+
* Downloads a blob.
|
|
96
|
+
*
|
|
97
|
+
* @param blob - The blob to download.
|
|
98
|
+
* @param name - The name of the downloaded file.
|
|
99
|
+
*/
|
|
100
|
+
static downLoadBlob(blob, name) {
|
|
90
101
|
const a = document.createElement('a');
|
|
91
|
-
const objectUrl = URL.createObjectURL(
|
|
102
|
+
const objectUrl = URL.createObjectURL(blob);
|
|
92
103
|
a.href = objectUrl;
|
|
93
|
-
|
|
104
|
+
if (name) {
|
|
105
|
+
a.download = name;
|
|
106
|
+
}
|
|
94
107
|
a.click();
|
|
95
108
|
URL.revokeObjectURL(objectUrl);
|
|
96
109
|
}
|
|
@@ -160,4 +173,4 @@ export class FileUtilities {
|
|
|
160
173
|
}
|
|
161
174
|
}
|
|
162
175
|
}
|
|
163
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS51dGlsaXRpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy91dGlsaXRpZXMvZmlsZS51dGlsaXRpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBR3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUdsRTs7R0FFRztBQUNILE1BQU0sT0FBZ0IsYUFBYTtJQUMvQjs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxlQUFlLENBQUMsU0FBb0I7UUFDdkMsSUFBSSxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUU7WUFDcEIsT0FBTyxHQUFHLENBQUM7U0FDZDtRQUNELE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsMENBQTBDO0lBQzFDLDBCQUEwQjtJQUMxQjs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBVztRQUN2QyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1AsT0FBTyxTQUFTLENBQUM7U0FDcEI7UUFDRCxPQUFPLElBQUksT0FBTyxDQUFTLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQzNDLE1BQU0sTUFBTSxHQUFlLElBQUksVUFBVSxFQUFFLENBQUM7WUFDNUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQWdCLENBQUMsQ0FBQztZQUN6RCxNQUFNLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENB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b2Rhc2hVdGlsaXRpZXMgfSBmcm9tICcuLi9lbmNhcHN1bGF0aW9uL2xvZGFzaC51dGlsaXRpZXMnO1xuaW1wb3J0IHsgRmlsZURhdGFXaXRoRmlsZSB9IGZyb20gJy4uL2RlY29yYXRvcnMvZmlsZS9maWxlLWRlY29yYXRvci1pbnRlcm5hbC5kYXRhJztcbmltcG9ydCB7IEZpbGVEYXRhIH0gZnJvbSAnLi4vZGVjb3JhdG9ycy9maWxlL2ZpbGUtZGVjb3JhdG9yLmRhdGEnO1xuaW1wb3J0IHsgSlNaaXBVdGlsaXRpZXMgfSBmcm9tICcuLi9lbmNhcHN1bGF0aW9uL2pzemlwLnV0aWxpdGllcyc7XG5pbXBvcnQgSlNaaXAgZnJvbSAnanN6aXAnO1xuXG4vKipcbiAqIFByb3ZpZGVzIGZ1bmN0aW9uYWxpdHkgcmVnYXJkaW5nIGZpbGVzLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRmlsZVV0aWxpdGllcyB7XG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgYWNjZXB0IHZhbHVlIGZvciB0aGUgaHRtbCBpbnB1dC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBtaW1lVHlwZXMgLSBUaGUgbWltZVR5cGVzIHRvIGdldCB0aGUgYWNjZXB0IHN0cmluZyBmcm9tLlxuICAgICAqIEByZXR1cm5zIEEgY29tbWEgc2VwYXJhdGVkIHN0cmluZyBvZiBhbGwgdGhlIHByb3ZpZGVkIG1pbWUgdHlwZXMuXG4gICAgICovXG4gICAgc3RhdGljIGdldEFjY2VwdFN0cmluZyhtaW1lVHlwZXM/OiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgICAgIGlmICghbWltZVR5cGVzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiAnKic7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1pbWVUeXBlcy5qb2luKCcsICcpO1xuICAgIH1cblxuICAgIC8vIFRPRE86IEZpbmQgYSB3YXkgdG8gdXNlIGJsb2JzIHdpdGggamVzdFxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgLyoqXG4gICAgICogUmVhZHMgYSB1cmwgdG8gZGlzcGxheSB0aGUgZ2l2ZW4gZmlsZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWxlIC0gVGhlIGZpbGUgdG8gZ2V0IHRoZSB1cmwgZnJvbS5cbiAgICAgKiBAcmV0dXJucyBBIHByb21pc2Ugb2YgdGhlIHVybC4gVW5kZWZpbmVkIGlmIG5vIGZpbGUgd2FzIHByb3ZpZGVkLlxuICAgICAqL1xuICAgIHN0YXRpYyBhc3luYyBnZXREYXRhVVJMRnJvbUZpbGUoZmlsZT86IEJsb2IpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBpZiAoIWZpbGUpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVhZGVyOiBGaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSBlID0+IHJlc29sdmUoZS50YXJnZXQ/LnJlc3VsdCBhcyBzdHJpbmcpO1xuICAgICAgICAgICAgcmVhZGVyLm9uZXJyb3IgPSBlID0+IHJlamVjdChlKTtcbiAgICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBGaW5kIGEgd2F5IHRvIHVzZSBibG9icyB3aXRoIGplc3RcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIC8qKlxuICAgICAqIEdldHMgYSBmaWxlIGZyb20gdGhlIGdpdmVuIHVybC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB1cmwgLSBUaGUgdXJsIHRvIGdldCB0aGUgZmlsZSBmcm9tLlxuICAgICAqIEByZXR1cm5zIEEgcHJvbWlzZSBvZiB0aGUgRmlsZS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHN0YXRpYyBhc3luYyBnZXRGaWxlRnJvbVVybCh1cmw6IHN0cmluZyk6IFByb21pc2U8QmxvYj4ge1xuICAgICAgICBjb25zdCByZXM6IFJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsKTtcbiAgICAgICAgaWYgKCFyZXMub2spIHtcbiAgICAgICAgICAgIC8vIFRPRE8gbWFrZSBlcnJvciBtb3JlIHJvYnVzdFxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFcnJvciBmZXRjaGluZyB0aGUgZmlsZSBmcm9tIHRoZSB1cmwgJHt1cmx9YCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGF3YWl0IHJlcy5ibG9iKCk7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogRmluZCBhIHdheSB0byB1c2UgYmxvYnMgd2l0aCBqZXN0XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBmaWxlIGRhdGEgd2l0aCB0aGUgYmxvYiBmcm9tIHRoZSBnaXZlbiBGaWxlIERhdGEuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZGF0YSAtIFRoZSBGaWxlIERhdGEgdG8gZ2V0IHRoZSBmaWxlIGRhdGEgd2l0aCBibG9iIGZyb20uXG4gICAgICogQHJldHVybnMgRmlsZURhdGFXaXRoRmlsZS5cbiAgICAgKi9cbiAgICBzdGF0aWMgYXN5bmMgZ2V0RmlsZURhdGEoZGF0YTogRmlsZURhdGEpOiBQcm9taXNlPEZpbGVEYXRhV2l0aEZpbGU+IHtcbiAgICAgICAgaWYgKGRhdGEuZmlsZSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBmaWxlOiBkYXRhLmZpbGUsXG4gICAgICAgICAgICAgICAgbmFtZTogZGF0YS5uYW1lLFxuICAgICAgICAgICAgICAgIHVybDogZGF0YS51cmwsXG4gICAgICAgICAgICAgICAgdHlwZTogZGF0YS50eXBlLFxuICAgICAgICAgICAgICAgIHNpemU6IGRhdGEuc2l6ZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZmlsZTogYXdhaXQgRmlsZVV0aWxpdGllcy5nZXRGaWxlRnJvbVVybChkYXRhLnVybCBhcyBzdHJpbmcpLFxuICAgICAgICAgICAgICAgIG5hbWU6IGRhdGEubmFtZSxcbiAgICAgICAgICAgICAgICB1cmw6IGRhdGEudXJsLFxuICAgICAgICAgICAgICAgIHR5cGU6IGRhdGEudHlwZSxcbiAgICAgICAgICAgICAgICBzaXplOiBkYXRhLnNpemVcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUT0RPOiBGaW5kIGEgd2F5IHRvIHVzZSBibG9icyB3aXRoIGplc3RcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIC8qKlxuICAgICAqIERvd25sb2FkcyBhIHNpbmdsZSBmaWxlIGZyb20gdGhlIGdpdmVuIEZpbGUgRGF0YS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWxlRGF0YSAtIFRoZSBmaWxlIGRhdGEuIE5lZWRzIHRvIGNvbnRhaW4gYSBibG9iLlxuICAgICAqL1xuICAgIHN0YXRpYyBkb3dubG9hZFNpbmdsZUZpbGUoZmlsZURhdGE6IEZpbGVEYXRhV2l0aEZpbGUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYTogSFRNTEFuY2hvckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgIGNvbnN0IG9iamVjdFVybDogc3RyaW5nID0gVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlRGF0YS5maWxlKTtcbiAgICAgICAgYS5ocmVmID0gb2JqZWN0VXJsO1xuICAgICAgICBhLmRvd25sb2FkID0gZmlsZURhdGEubmFtZTtcbiAgICAgICAgYS5jbGljaygpO1xuICAgICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKG9iamVjdFVybCk7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogRmluZCBhIHdheSB0byB1c2UgYmxvYnMgd2l0aCBqZXN0XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAvKipcbiAgICAgKiBEb3dubG9hZHMgbXVsdGlwbGUgZmlsZXMgYXMgYSB6aXAgd2l0aCB0aGUgZ2l2ZW4gbmFtZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHppcCBmaWxlIHRvIGdlbmVyYXRlLlxuICAgICAqIEBwYXJhbSBtdWx0aUZpbGVEYXRhIC0gVGhlIGZpbGUgZGF0YSBhcnJheSB0byBwdXQgaW4gdGhlIHppcC5cbiAgICAgKi9cbiAgICBzdGF0aWMgYXN5bmMgZG93bmxvYWRNdWx0aXBsZUZpbGVzKG5hbWU6IHN0cmluZywgbXVsdGlGaWxlRGF0YTogRmlsZURhdGFbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCB6aXA6IEpTWmlwID0gSlNaaXBVdGlsaXRpZXMubmV3KCk7XG4gICAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBtdWx0aUZpbGVEYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBtdWx0aUZpbGVEYXRhW2ldID0gYXdhaXQgRmlsZVV0aWxpdGllcy5nZXRGaWxlRGF0YShtdWx0aUZpbGVEYXRhW2ldKTtcbiAgICAgICAgICAgIHppcC5maWxlKG11bHRpRmlsZURhdGFbaV0ubmFtZSwgKG11bHRpRmlsZURhdGFbaV0gYXMgRmlsZURhdGFXaXRoRmlsZSkuZmlsZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgemlwQmxvYjogQmxvYiA9IGF3YWl0IHppcC5nZW5lcmF0ZUFzeW5jKHsgdHlwZTogJ2Jsb2InIH0pO1xuICAgICAgICBjb25zdCBmaWxlRGF0YTogRmlsZURhdGFXaXRoRmlsZSA9IHtcbiAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICBmaWxlOiB6aXBCbG9iLFxuICAgICAgICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL3ppcCcsXG4gICAgICAgICAgICBzaXplOiB6aXBCbG9iLnNpemVcbiAgICAgICAgfTtcbiAgICAgICAgRmlsZVV0aWxpdGllcy5kb3dubG9hZFNpbmdsZUZpbGUoZmlsZURhdGEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gZmlsZSBoYXMgYSB2YWxpZCBtaW1lIHR5cGUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdHlwZSAtIFRoZSB0eXBlIG9mIHRoZSBmaWxlIHRvIGNoZWNrLlxuICAgICAqIEBwYXJhbSBhbGxvd2VkTWltZVR5cGVzIC0gVGhlIGFsbG93ZWQgbWltZSB0eXBlcy5cbiAgICAgKiBAcmV0dXJucyBXaGV0aGVyIG9yIG5vdCB0aGUgZ2l2ZW4gZmlsZSBoYXMgYSB2YWxpZCBtaW1lIHR5cGUuXG4gICAgICovXG4gICAgc3RhdGljIGlzTWltZVR5cGVWYWxpZCh0eXBlOiBzdHJpbmcsIGFsbG93ZWRNaW1lVHlwZXM6IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChhbGxvd2VkTWltZVR5cGVzLmluY2x1ZGVzKCcqJykpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgdCBvZiBhbGxvd2VkTWltZVR5cGVzKSB7XG4gICAgICAgICAgICBpZiAodCA9PT0gdHlwZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHQuZW5kc1dpdGgoJyonKSAmJiB0eXBlLnN0YXJ0c1dpdGgodC5zcGxpdCgnKicpWzBdKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmFuc2Zvcm0gdGhlIGdpdmVuIHZhbHVlIHRvIE1lZ2FieXRlcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBvcmlnaW5hbCB2YWx1ZS5cbiAgICAgKiBAcGFyYW0gdW5pdCAtIElmIHRoZSB2YWx1ZSBpcyBCLCBLQiBvciBHQi5cbiAgICAgKiBAcmV0dXJucyBUaGUgZ2l2ZW4gdmFsdWUgYXMgYnl0ZXMuXG4gICAgICovXG4gICAgc3RhdGljIHRyYW5zZm9ybVRvTWVnYUJ5dGVzKHZhbHVlOiBudW1iZXIsIHVuaXQ6ICdCJyB8ICdLQicgfCAnR0InKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgYnl0ZXM6IG51bWJlciA9IHRoaXMudHJhbnNmb3JtVG9CeXRlcyhMb2Rhc2hVdGlsaXRpZXMuY2xvbmVEZWVwKHZhbHVlKSwgdW5pdCk7XG4gICAgICAgIHJldHVybiBieXRlcyAvIDEwMDAwMDA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgdHJhbnNmb3JtVG9CeXRlcyh2YWx1ZTogbnVtYmVyLCB1bml0OiAnQicgfCAnS0InIHwgJ0dCJyk6IG51bWJlciB7XG4gICAgICAgIHN3aXRjaCAodW5pdCkge1xuICAgICAgICAgICAgY2FzZSAnQic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgY2FzZSAnS0InOlxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSAqIDEwMDA7XG4gICAgICAgICAgICBjYXNlICdHQic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlICogMTAwMDAwMDAwMDtcbiAgICAgICAgfVxuICAgIH1cbn0iXX0=
|
|
176
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS51dGlsaXRpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy91dGlsaXRpZXMvZmlsZS51dGlsaXRpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLGNBQWMsRUFBTyxNQUFNLGtDQUFrQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVwRTs7R0FFRztBQUNILE1BQU0sT0FBZ0IsYUFBYTtJQUMvQjs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxlQUFlLENBQUMsU0FBb0I7UUFDdkMsSUFBSSxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUU7WUFDcEIsT0FBTyxHQUFHLENBQUM7U0FDZDtRQUNELE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsMENBQTBDO0lBQzFDLDBCQUEwQjtJQUMxQjs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBVztRQUN2QyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1AsT0FBTyxTQUFTLENBQUM7U0FDcEI7UUFDRCxPQUFPLElBQUksT0FBTyxDQUFTLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQzNDLE1BQU0sTUFBTSxHQUFlLElBQUksVUFBVSxFQUFFLENBQUM7WUFDNUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQWdCLENBQUMsQ0FBQztZQUN6RCxNQUFNLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsMENBQTBDO0lBQzFDLDBCQUEwQjtJQUMxQjs7Ozs7T0FLRztJQUNLLE1BQU0sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLEdBQVc7UUFDM0MsTUFBTSxHQUFHLEdBQWEsTUFBTSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUU7WUFDVCw4QkFBOEI7WUFDOUIsTUFBTSxJQUFJLEtBQUssQ0FBQyx3Q0FBd0MsR0FBRyxFQUFFLENBQUMsQ0FBQztTQUNsRTtRQUNELE9BQU8sTUFBTSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELDBDQUEwQztJQUMxQywwQkFBMEI7SUFDMUI7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFjO1FBQ25DLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNYLE9BQU87Z0JBQ0gsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO2dCQUNmLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtnQkFDZixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7Z0JBQ2IsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO2dCQUNmLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTthQUNsQixDQUFDO1NBQ0w7YUFDSTtZQUNELE9BQU87Z0JBQ0gsSUFBSSxFQUFFLE1BQU0sYUFBYSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBYSxDQUFDO2dCQUM1RCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7Z0JBQ2YsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO2dCQUNiLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtnQkFDZixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7YUFDbEIsQ0FBQztTQUNMO0lBQ0wsQ0FBQztJQUVELDBDQUEwQztJQUMxQywwQkFBMEI7SUFDMUI7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxRQUEwQjtRQUNoRCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCwwQ0FBMEM7SUFDMUMsMEJBQTBCO0lBQzFCOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFVLEVBQUUsSUFBYTtRQUN6QyxNQUFNLENBQUMsR0FBc0IsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6RCxNQUFNLFNBQVMsR0FBVyxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BELENBQUMsQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDO1FBQ25CLElBQUksSUFBSSxFQUFFO1lBQ04sQ0FBQyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7U0FDckI7UUFDRCxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDVixHQUFHLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCwwQ0FBMEM7SUFDMUMsMEJBQTBCO0lBQzFCOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxJQUFZLEVBQUUsYUFBeUI7UUFDdEUsTUFBTSxHQUFHLEdBQVEsY0FBYyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3RDLEtBQUssSUFBSSxDQUFDLEdBQVcsQ0FBQyxFQUFFLENBQUMsR0FBRyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ25ELGFBQWEsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLGFBQWEsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDckUsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFHLGFBQWEsQ0FBQyxDQUFDLENBQXNCLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDaEY7UUFDRCxNQUFNLE9BQU8sR0FBUyxNQUFNLEdBQUcsQ0FBQyxhQUFhLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNoRSxNQUFNLFFBQVEsR0FBcUI7WUFDL0IsSUFBSSxFQUFFLElBQUk7WUFDVixJQUFJLEVBQUUsT0FBTztZQUNiLElBQUksRUFBRSxpQkFBaUI7WUFDdkIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO1NBQ3JCLENBQUM7UUFDRixhQUFhLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBWSxFQUFFLGdCQUEwQjtRQUMzRCxJQUFJLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNoQyxPQUFPLElBQUksQ0FBQztTQUNmO1FBQ0QsS0FBSyxNQUFNLENBQUMsSUFBSSxnQkFBZ0IsRUFBRTtZQUM5QixJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUU7Z0JBQ1osT0FBTyxJQUFJLENBQUM7YUFDZjtZQUNELElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDckQsT0FBTyxJQUFJLENBQUM7YUFDZjtTQUNKO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxLQUFhLEVBQUUsSUFBdUI7UUFDOUQsTUFBTSxLQUFLLEdBQVcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDcEYsT0FBTyxLQUFLLEdBQUcsT0FBTyxDQUFDO0lBQzNCLENBQUM7SUFFTyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBYSxFQUFFLElBQXVCO1FBQ2xFLFFBQVEsSUFBSSxFQUFFO1lBQ1YsS0FBSyxHQUFHO2dCQUNKLE9BQU8sS0FBSyxDQUFDO1lBQ2pCLEtBQUssSUFBSTtnQkFDTCxPQUFPLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDeEIsS0FBSyxJQUFJO2dCQUNMLE9BQU8sS0FBSyxHQUFHLFVBQVUsQ0FBQztTQUNqQztJQUNMLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZpbGVEYXRhV2l0aEZpbGUgfSBmcm9tICcuLi9kZWNvcmF0b3JzL2ZpbGUvZmlsZS1kZWNvcmF0b3ItaW50ZXJuYWwuZGF0YSc7XG5pbXBvcnQgeyBGaWxlRGF0YSB9IGZyb20gJy4uL2RlY29yYXRvcnMvZmlsZS9maWxlLWRlY29yYXRvci5kYXRhJztcbmltcG9ydCB7IEpTWmlwVXRpbGl0aWVzLCBaaXAgfSBmcm9tICcuLi9lbmNhcHN1bGF0aW9uL2pzemlwLnV0aWxpdGllcyc7XG5pbXBvcnQgeyBMb2Rhc2hVdGlsaXRpZXMgfSBmcm9tICcuLi9lbmNhcHN1bGF0aW9uL2xvZGFzaC51dGlsaXRpZXMnO1xuXG4vKipcbiAqIFByb3ZpZGVzIGZ1bmN0aW9uYWxpdHkgcmVnYXJkaW5nIGZpbGVzLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRmlsZVV0aWxpdGllcyB7XG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgYWNjZXB0IHZhbHVlIGZvciB0aGUgaHRtbCBpbnB1dC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBtaW1lVHlwZXMgLSBUaGUgbWltZVR5cGVzIHRvIGdldCB0aGUgYWNjZXB0IHN0cmluZyBmcm9tLlxuICAgICAqIEByZXR1cm5zIEEgY29tbWEgc2VwYXJhdGVkIHN0cmluZyBvZiBhbGwgdGhlIHByb3ZpZGVkIG1pbWUgdHlwZXMuXG4gICAgICovXG4gICAgc3RhdGljIGdldEFjY2VwdFN0cmluZyhtaW1lVHlwZXM/OiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgICAgIGlmICghbWltZVR5cGVzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiAnKic7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1pbWVUeXBlcy5qb2luKCcsICcpO1xuICAgIH1cblxuICAgIC8vIFRPRE86IEZpbmQgYSB3YXkgdG8gdXNlIGJsb2JzIHdpdGggamVzdFxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgLyoqXG4gICAgICogUmVhZHMgYSB1cmwgdG8gZGlzcGxheSB0aGUgZ2l2ZW4gZmlsZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWxlIC0gVGhlIGZpbGUgdG8gZ2V0IHRoZSB1cmwgZnJvbS5cbiAgICAgKiBAcmV0dXJucyBBIHByb21pc2Ugb2YgdGhlIHVybC4gVW5kZWZpbmVkIGlmIG5vIGZpbGUgd2FzIHByb3ZpZGVkLlxuICAgICAqL1xuICAgIHN0YXRpYyBhc3luYyBnZXREYXRhVVJMRnJvbUZpbGUoZmlsZT86IEJsb2IpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBpZiAoIWZpbGUpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVhZGVyOiBGaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSBlID0+IHJlc29sdmUoZS50YXJnZXQ/LnJlc3VsdCBhcyBzdHJpbmcpO1xuICAgICAgICAgICAgcmVhZGVyLm9uZXJyb3IgPSBlID0+IHJlamVjdChlKTtcbiAgICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBGaW5kIGEgd2F5IHRvIHVzZSBibG9icyB3aXRoIGplc3RcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIC8qKlxuICAgICAqIEdldHMgYSBmaWxlIGZyb20gdGhlIGdpdmVuIHVybC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB1cmwgLSBUaGUgdXJsIHRvIGdldCB0aGUgZmlsZSBmcm9tLlxuICAgICAqIEByZXR1cm5zIEEgcHJvbWlzZSBvZiB0aGUgRmlsZS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHN0YXRpYyBhc3luYyBnZXRGaWxlRnJvbVVybCh1cmw6IHN0cmluZyk6IFByb21pc2U8QmxvYj4ge1xuICAgICAgICBjb25zdCByZXM6IFJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsKTtcbiAgICAgICAgaWYgKCFyZXMub2spIHtcbiAgICAgICAgICAgIC8vIFRPRE8gbWFrZSBlcnJvciBtb3JlIHJvYnVzdFxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFcnJvciBmZXRjaGluZyB0aGUgZmlsZSBmcm9tIHRoZSB1cmwgJHt1cmx9YCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGF3YWl0IHJlcy5ibG9iKCk7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogRmluZCBhIHdheSB0byB1c2UgYmxvYnMgd2l0aCBqZXN0XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBmaWxlIGRhdGEgd2l0aCB0aGUgYmxvYiBmcm9tIHRoZSBnaXZlbiBGaWxlIERhdGEuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZGF0YSAtIFRoZSBGaWxlIERhdGEgdG8gZ2V0IHRoZSBmaWxlIGRhdGEgd2l0aCBibG9iIGZyb20uXG4gICAgICogQHJldHVybnMgRmlsZURhdGFXaXRoRmlsZS5cbiAgICAgKi9cbiAgICBzdGF0aWMgYXN5bmMgZ2V0RmlsZURhdGEoZGF0YTogRmlsZURhdGEpOiBQcm9taXNlPEZpbGVEYXRhV2l0aEZpbGU+IHtcbiAgICAgICAgaWYgKGRhdGEuZmlsZSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBmaWxlOiBkYXRhLmZpbGUsXG4gICAgICAgICAgICAgICAgbmFtZTogZGF0YS5uYW1lLFxuICAgICAgICAgICAgICAgIHVybDogZGF0YS51cmwsXG4gICAgICAgICAgICAgICAgdHlwZTogZGF0YS50eXBlLFxuICAgICAgICAgICAgICAgIHNpemU6IGRhdGEuc2l6ZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZmlsZTogYXdhaXQgRmlsZVV0aWxpdGllcy5nZXRGaWxlRnJvbVVybChkYXRhLnVybCBhcyBzdHJpbmcpLFxuICAgICAgICAgICAgICAgIG5hbWU6IGRhdGEubmFtZSxcbiAgICAgICAgICAgICAgICB1cmw6IGRhdGEudXJsLFxuICAgICAgICAgICAgICAgIHR5cGU6IGRhdGEudHlwZSxcbiAgICAgICAgICAgICAgICBzaXplOiBkYXRhLnNpemVcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUT0RPOiBGaW5kIGEgd2F5IHRvIHVzZSBibG9icyB3aXRoIGplc3RcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIC8qKlxuICAgICAqIERvd25sb2FkcyBhIHNpbmdsZSBmaWxlIGZyb20gdGhlIGdpdmVuIEZpbGUgRGF0YS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWxlRGF0YSAtIFRoZSBmaWxlIGRhdGEuIE5lZWRzIHRvIGNvbnRhaW4gYSBibG9iLlxuICAgICAqL1xuICAgIHN0YXRpYyBkb3dubG9hZFNpbmdsZUZpbGUoZmlsZURhdGE6IEZpbGVEYXRhV2l0aEZpbGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kb3duTG9hZEJsb2IoZmlsZURhdGEuZmlsZSwgZmlsZURhdGEubmFtZSk7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogRmluZCBhIHdheSB0byB1c2UgYmxvYnMgd2l0aCBqZXN0XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAvKipcbiAgICAgKiBEb3dubG9hZHMgYSBibG9iLlxuICAgICAqXG4gICAgICogQHBhcmFtIGJsb2IgLSBUaGUgYmxvYiB0byBkb3dubG9hZC5cbiAgICAgKiBAcGFyYW0gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBkb3dubG9hZGVkIGZpbGUuXG4gICAgICovXG4gICAgc3RhdGljIGRvd25Mb2FkQmxvYihibG9iOiBCbG9iLCBuYW1lPzogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGE6IEhUTUxBbmNob3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICBjb25zdCBvYmplY3RVcmw6IHN0cmluZyA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICAgIGEuaHJlZiA9IG9iamVjdFVybDtcbiAgICAgICAgaWYgKG5hbWUpIHtcbiAgICAgICAgICAgIGEuZG93bmxvYWQgPSBuYW1lO1xuICAgICAgICB9XG4gICAgICAgIGEuY2xpY2soKTtcbiAgICAgICAgVVJMLnJldm9rZU9iamVjdFVSTChvYmplY3RVcmwpO1xuICAgIH1cblxuICAgIC8vIFRPRE86IEZpbmQgYSB3YXkgdG8gdXNlIGJsb2JzIHdpdGggamVzdFxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgLyoqXG4gICAgICogRG93bmxvYWRzIG11bHRpcGxlIGZpbGVzIGFzIGEgemlwIHdpdGggdGhlIGdpdmVuIG5hbWUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB6aXAgZmlsZSB0byBnZW5lcmF0ZS5cbiAgICAgKiBAcGFyYW0gbXVsdGlGaWxlRGF0YSAtIFRoZSBmaWxlIGRhdGEgYXJyYXkgdG8gcHV0IGluIHRoZSB6aXAuXG4gICAgICovXG4gICAgc3RhdGljIGFzeW5jIGRvd25sb2FkTXVsdGlwbGVGaWxlcyhuYW1lOiBzdHJpbmcsIG11bHRpRmlsZURhdGE6IEZpbGVEYXRhW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgemlwOiBaaXAgPSBKU1ppcFV0aWxpdGllcy5uZXcoKTtcbiAgICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IG11bHRpRmlsZURhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIG11bHRpRmlsZURhdGFbaV0gPSBhd2FpdCBGaWxlVXRpbGl0aWVzLmdldEZpbGVEYXRhKG11bHRpRmlsZURhdGFbaV0pO1xuICAgICAgICAgICAgemlwLmZpbGUobXVsdGlGaWxlRGF0YVtpXS5uYW1lLCAobXVsdGlGaWxlRGF0YVtpXSBhcyBGaWxlRGF0YVdpdGhGaWxlKS5maWxlKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB6aXBCbG9iOiBCbG9iID0gYXdhaXQgemlwLmdlbmVyYXRlQXN5bmMoeyB0eXBlOiAnYmxvYicgfSk7XG4gICAgICAgIGNvbnN0IGZpbGVEYXRhOiBGaWxlRGF0YVdpdGhGaWxlID0ge1xuICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgIGZpbGU6IHppcEJsb2IsXG4gICAgICAgICAgICB0eXBlOiAnYXBwbGljYXRpb24vemlwJyxcbiAgICAgICAgICAgIHNpemU6IHppcEJsb2Iuc2l6ZVxuICAgICAgICB9O1xuICAgICAgICBGaWxlVXRpbGl0aWVzLmRvd25sb2FkU2luZ2xlRmlsZShmaWxlRGF0YSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHRoZSBnaXZlbiBmaWxlIGhhcyBhIHZhbGlkIG1pbWUgdHlwZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB0eXBlIC0gVGhlIHR5cGUgb2YgdGhlIGZpbGUgdG8gY2hlY2suXG4gICAgICogQHBhcmFtIGFsbG93ZWRNaW1lVHlwZXMgLSBUaGUgYWxsb3dlZCBtaW1lIHR5cGVzLlxuICAgICAqIEByZXR1cm5zIFdoZXRoZXIgb3Igbm90IHRoZSBnaXZlbiBmaWxlIGhhcyBhIHZhbGlkIG1pbWUgdHlwZS5cbiAgICAgKi9cbiAgICBzdGF0aWMgaXNNaW1lVHlwZVZhbGlkKHR5cGU6IHN0cmluZywgYWxsb3dlZE1pbWVUeXBlczogc3RyaW5nW10pOiBib29sZWFuIHtcbiAgICAgICAgaWYgKGFsbG93ZWRNaW1lVHlwZXMuaW5jbHVkZXMoJyonKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCB0IG9mIGFsbG93ZWRNaW1lVHlwZXMpIHtcbiAgICAgICAgICAgIGlmICh0ID09PSB0eXBlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodC5lbmRzV2l0aCgnKicpICYmIHR5cGUuc3RhcnRzV2l0aCh0LnNwbGl0KCcqJylbMF0pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyYW5zZm9ybSB0aGUgZ2l2ZW4gdmFsdWUgdG8gTWVnYWJ5dGVzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHZhbHVlIC0gVGhlIG9yaWdpbmFsIHZhbHVlLlxuICAgICAqIEBwYXJhbSB1bml0IC0gSWYgdGhlIHZhbHVlIGlzIEIsIEtCIG9yIEdCLlxuICAgICAqIEByZXR1cm5zIFRoZSBnaXZlbiB2YWx1ZSBhcyBieXRlcy5cbiAgICAgKi9cbiAgICBzdGF0aWMgdHJhbnNmb3JtVG9NZWdhQnl0ZXModmFsdWU6IG51bWJlciwgdW5pdDogJ0InIHwgJ0tCJyB8ICdHQicpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBieXRlczogbnVtYmVyID0gdGhpcy50cmFuc2Zvcm1Ub0J5dGVzKExvZGFzaFV0aWxpdGllcy5jbG9uZURlZXAodmFsdWUpLCB1bml0KTtcbiAgICAgICAgcmV0dXJuIGJ5dGVzIC8gMTAwMDAwMDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyB0cmFuc2Zvcm1Ub0J5dGVzKHZhbHVlOiBudW1iZXIsIHVuaXQ6ICdCJyB8ICdLQicgfCAnR0InKTogbnVtYmVyIHtcbiAgICAgICAgc3dpdGNoICh1bml0KSB7XG4gICAgICAgICAgICBjYXNlICdCJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICBjYXNlICdLQic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlICogMTAwMDtcbiAgICAgICAgICAgIGNhc2UgJ0dCJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgKiAxMDAwMDAwMDAwO1xuICAgICAgICB9XG4gICAgfVxufSJdfQ==
|