@wertzui/ngx-restworld-client 7.2.0 → 8.0.0
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/esm2020/lib/components/restworld-file/restworld-file.component.mjs +57 -0
- package/esm2020/lib/components/restworld-form/restworld-form.component.mjs +188 -0
- package/esm2020/lib/components/restworld-id-navigation/restworld-id-navigation.component.mjs +65 -0
- package/esm2020/lib/components/restworld-image/restworld-image.component.mjs +164 -0
- package/esm2020/lib/components/restworld-inputs/restworld-inputs.mjs +306 -0
- package/esm2020/lib/components/restworld-label/restworld-label.component.mjs +24 -0
- package/esm2020/lib/components/restworld-menu-button/restworld-menu-button.component.mjs +40 -0
- package/esm2020/lib/components/restworld-table/restworld-table.component.mjs +157 -0
- package/esm2020/lib/components/restworld-validation-errors/restworld-validation-errors.component.mjs +21 -0
- package/esm2020/lib/models/o-data.mjs +2 -0
- package/esm2020/lib/models/restworld-image.mjs +2 -0
- package/esm2020/lib/models/restworld-options.mjs +2 -2
- package/esm2020/lib/models/special-properties.mjs +6 -0
- package/esm2020/lib/models/templating.mjs +2 -0
- package/esm2020/lib/restworld-client.module.mjs +83 -25
- package/esm2020/lib/services/o-data.service.mjs +6 -3
- package/esm2020/lib/services/restworld-client-collection.mjs +7 -7
- package/esm2020/lib/services/restworld-client.mjs +40 -29
- package/esm2020/lib/services/settings.service.mjs +5 -5
- package/esm2020/lib/views/restworld-edit-view/restworld-edit-view.component.mjs +24 -255
- package/esm2020/lib/views/restworld-list-view/restworld-list-view.component.mjs +49 -101
- package/esm2020/public-api.mjs +17 -6
- package/fesm2015/wertzui-ngx-restworld-client.mjs +1373 -1017
- package/fesm2015/wertzui-ngx-restworld-client.mjs.map +1 -1
- package/fesm2020/wertzui-ngx-restworld-client.mjs +1322 -978
- package/fesm2020/wertzui-ngx-restworld-client.mjs.map +1 -1
- package/index.d.ts +1 -0
- package/lib/components/restworld-avatar/restworld-avatar.component.d.ts +1 -0
- package/lib/components/restworld-avatar/restworld-avatar.component.d.ts.map +1 -0
- package/lib/{views/restworld-file-view/restworld-file-view.component.d.ts → components/restworld-file/restworld-file.component.d.ts} +4 -3
- package/lib/components/restworld-file/restworld-file.component.d.ts.map +1 -0
- package/lib/components/restworld-form/restworld-form.component.d.ts +53 -0
- package/lib/components/restworld-form/restworld-form.component.d.ts.map +1 -0
- package/lib/components/restworld-id-navigation/restworld-id-navigation.component.d.ts +27 -0
- package/lib/components/restworld-id-navigation/restworld-id-navigation.component.d.ts.map +1 -0
- package/lib/components/restworld-image/restworld-image.component.d.ts +62 -0
- package/lib/components/restworld-image/restworld-image.component.d.ts.map +1 -0
- package/lib/components/restworld-inputs/restworld-inputs.d.ts +146 -0
- package/lib/components/restworld-inputs/restworld-inputs.d.ts.map +1 -0
- package/lib/components/restworld-label/restworld-label.component.d.ts +14 -0
- package/lib/components/restworld-label/restworld-label.component.d.ts.map +1 -0
- package/lib/components/restworld-menu-button/restworld-menu-button.component.d.ts +12 -0
- package/lib/components/restworld-menu-button/restworld-menu-button.component.d.ts.map +1 -0
- package/lib/components/restworld-table/restworld-table.component.d.ts +54 -0
- package/lib/components/restworld-table/restworld-table.component.d.ts.map +1 -0
- package/lib/components/restworld-validation-errors/restworld-validation-errors.component.d.ts +15 -0
- package/lib/components/restworld-validation-errors/restworld-validation-errors.component.d.ts.map +1 -0
- package/lib/constants/link-names.d.ts +1 -0
- package/lib/constants/link-names.d.ts.map +1 -0
- package/lib/models/api-url.d.ts +1 -0
- package/lib/models/api-url.d.ts.map +1 -0
- package/lib/models/client-settings.d.ts +1 -0
- package/lib/models/client-settings.d.ts.map +1 -0
- package/lib/models/o-data.d.ts +7 -0
- package/lib/models/o-data.d.ts.map +1 -0
- package/lib/models/problem-details.d.ts +1 -0
- package/lib/models/problem-details.d.ts.map +1 -0
- package/lib/models/restworld-image.d.ts +28 -0
- package/lib/models/restworld-image.d.ts.map +1 -0
- package/lib/models/restworld-options.d.ts +2 -1
- package/lib/models/restworld-options.d.ts.map +1 -0
- package/lib/models/special-properties.d.ts +9 -0
- package/lib/models/special-properties.d.ts.map +1 -0
- package/lib/models/templating.d.ts +8 -0
- package/lib/models/templating.d.ts.map +1 -0
- package/lib/pipes/as.pipe.d.ts +1 -0
- package/lib/pipes/as.pipe.d.ts.map +1 -0
- package/lib/pipes/safe-url.pipe.d.ts +1 -0
- package/lib/pipes/safe-url.pipe.d.ts.map +1 -0
- package/lib/restworld-client.module.d.ts +45 -37
- package/lib/restworld-client.module.d.ts.map +1 -0
- package/lib/services/avatar-generator.d.ts +1 -0
- package/lib/services/avatar-generator.d.ts.map +1 -0
- package/lib/services/form.service.d.ts +1 -0
- package/lib/services/form.service.d.ts.map +1 -0
- package/lib/services/o-data.service.d.ts +1 -0
- package/lib/services/o-data.service.d.ts.map +1 -0
- package/lib/services/restworld-client-collection.d.ts +9 -8
- package/lib/services/restworld-client-collection.d.ts.map +1 -0
- package/lib/services/restworld-client.d.ts +12 -4
- package/lib/services/restworld-client.d.ts.map +1 -0
- package/lib/services/settings.service.d.ts +3 -2
- package/lib/services/settings.service.d.ts.map +1 -0
- package/lib/views/restworld-edit-view/restworld-edit-view.component.d.ts +16 -68
- package/lib/views/restworld-edit-view/restworld-edit-view.component.d.ts.map +1 -0
- package/lib/views/restworld-list-view/restworld-list-view.component.d.ts +25 -41
- package/lib/views/restworld-list-view/restworld-list-view.component.d.ts.map +1 -0
- package/package.json +6 -6
- package/public-api.d.ts +17 -5
- package/public-api.d.ts.map +1 -0
- package/wertzui-ngx-restworld-client.d.ts.map +1 -0
- package/esm2020/lib/views/restworld-edit-form/restworld-edit-form.component.mjs +0 -233
- package/esm2020/lib/views/restworld-file-view/restworld-file-view.component.mjs +0 -57
- package/esm2020/lib/views/restworld-image-view/restworld-image-view.component.mjs +0 -139
- package/lib/views/restworld-edit-form/restworld-edit-form.component.d.ts +0 -74
- package/lib/views/restworld-image-view/restworld-image-view.component.d.ts +0 -57
|
@@ -11,9 +11,9 @@ export class ODataService {
|
|
|
11
11
|
case 'not contains':
|
|
12
12
|
case 'startswith':
|
|
13
13
|
case 'endswith':
|
|
14
|
-
return `${oDataOperator}(${property}, ${comparisonValue})`;
|
|
14
|
+
return `${oDataOperator}(${property.name}, ${comparisonValue})`;
|
|
15
15
|
default:
|
|
16
|
-
return `${property} ${oDataOperator} ${comparisonValue}`;
|
|
16
|
+
return `${property.name} ${oDataOperator} ${comparisonValue}`;
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
static createFilterForPropertyArray(property, filters) {
|
|
@@ -75,6 +75,9 @@ export class ODataService {
|
|
|
75
75
|
return `cast(${value.toISOString()}, Edm.TimeOnly)`;
|
|
76
76
|
case PropertyType.Duration:
|
|
77
77
|
return `cast(${value.toISOString()}, Edm.TimeSpan)`;
|
|
78
|
+
case PropertyType.Bool:
|
|
79
|
+
case PropertyType.Number:
|
|
80
|
+
return '' + value;
|
|
78
81
|
default:
|
|
79
82
|
return `'${value}'`;
|
|
80
83
|
}
|
|
@@ -130,4 +133,4 @@ export class ODataService {
|
|
|
130
133
|
return property;
|
|
131
134
|
}
|
|
132
135
|
}
|
|
133
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1kYXRhLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVzdHdvcmxkLWNsaWVudC9zcmMvbGliL3NlcnZpY2VzL28tZGF0YS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQWlDLE1BQU0sYUFBYSxDQUFDO0FBQzdFLE9BQU8sRUFBWSxZQUFZLEVBQVksTUFBTSx5QkFBeUIsQ0FBQztBQUUzRSxNQUFNLE9BQU8sWUFBWTtJQUNoQixNQUFNLENBQUMsdUJBQXVCLENBQUMsUUFBa0IsRUFBRSxNQUFzQjtRQUM5RSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUs7WUFDZixPQUFPLFNBQVMsQ0FBQztRQUVuQixNQUFNLGFBQWEsR0FBRyxZQUFZLENBQUMsbUJBQW1CLENBQ3BELE1BQU0sQ0FBQyxTQUFTLENBQ2pCLENBQUM7UUFDRixNQUFNLGVBQWUsR0FBRyxZQUFZLENBQUMscUJBQXFCLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVuRixRQUFRLGFBQWEsRUFBRTtZQUNyQixLQUFLLFVBQVUsQ0FBQztZQUNoQixLQUFLLGNBQWMsQ0FBQztZQUNwQixLQUFLLFlBQVksQ0FBQztZQUNsQixLQUFLLFVBQVU7Z0JBQ2IsT0FBTyxHQUFHLGFBQWEsSUFBSSxRQUFRLEtBQUssZUFBZSxHQUFHLENBQUM7WUFDN0Q7Z0JBQ0UsT0FBTyxHQUFHLFFBQVEsSUFBSSxhQUFhLElBQUksZUFBZSxFQUFFLENBQUM7U0FDNUQ7SUFDSCxDQUFDO0lBRU0sTUFBTSxDQUFDLDRCQUE0QixDQUFDLFFBQWtCLEVBQUUsT0FBeUI7UUFDdEYsTUFBTSxNQUFNLEdBQUcsT0FBTzthQUNuQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsdUJBQXVCLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQzNELE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDaEIsSUFBSSxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFFcEMsSUFBSSxNQUFNLEtBQUssRUFBRTtZQUNmLE9BQU8sU0FBUyxDQUFDO1FBRW5CLE9BQU8sSUFBSSxNQUFNLEdBQUcsQ0FBQztJQUN2QixDQUFDO0lBRU0sTUFBTSxDQUFDLDhCQUE4QixDQUFDLEtBQW9CLEVBQUUsVUFBdUI7UUFDeEYsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksVUFBVSxLQUFLLFNBQVM7WUFDNUMsT0FBTyxTQUFTLENBQUM7UUFFbkIsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1lBQzFDLDBHQUEwRzthQUN6RyxHQUFHLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxZQUFZLENBQUMsa0JBQWtCLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxFQUFFLE9BQU8sRUFBRSxNQUEwQixFQUFFLENBQUMsQ0FBQzthQUMvSSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDMUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNoQixJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFakIsSUFBSSxNQUFNLEtBQUssRUFBRTtZQUNmLE9BQU8sU0FBUyxDQUFDO1FBRW5CLE9BQU8sSUFBSSxNQUFNLEdBQUcsQ0FBQztJQUN2QixDQUFDO0lBRU0sTUFBTSxDQUFDLCtCQUErQixDQUFDLEtBQW9CO1FBQ2hFLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRTtZQUNuQixNQUFNLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1lBQ3ZFLE9BQU8sR0FBRyxLQUFLLENBQUMsU0FBUyxJQUFJLEtBQUssRUFBRSxDQUFDO1NBQ3RDO1FBRUQsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxrQ0FBa0MsQ0FBQyxLQUFvQixFQUFFLFFBQW1CO1FBQ3hGLE1BQU0sZUFBZSxHQUFHO1lBQ3RCLE9BQU8sRUFBRSxZQUFZLENBQUMsOEJBQThCLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUM7WUFDakYsUUFBUSxFQUFFLFlBQVksQ0FBQywrQkFBK0IsQ0FBQyxLQUFLLENBQUM7WUFDN0QsSUFBSSxFQUFFLFlBQVksQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLENBQUM7WUFDckQsS0FBSyxFQUFFLFlBQVksQ0FBQyw0QkFBNEIsQ0FBQyxLQUFLLENBQUM7U0FDeEQsQ0FBQztRQUVGLE9BQU8sZUFBZSxDQUFDO0lBQ3pCLENBQUM7SUFFTSxNQUFNLENBQUMsNEJBQTRCLENBQUMsS0FBb0I7UUFDN0QsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQ3JCLENBQUM7SUFFTSxNQUFNLENBQUMsMkJBQTJCLENBQUMsS0FBb0I7UUFDNUQsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDO0lBQ3BCLENBQUM7SUFFTyxNQUFNLENBQUMscUJBQXFCLENBQUMsUUFBa0IsRUFBRSxLQUFjO1FBQ3JFLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssU0FBUztZQUN2QyxPQUFPLE1BQU0sQ0FBQztRQUVoQixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBRTNCLFFBQVEsSUFBSSxFQUFFO1lBQ1osS0FBSyxZQUFZLENBQUMsSUFBSTtnQkFDcEIsT0FBTyxRQUFTLEtBQWMsQ0FBQyxXQUFXLEVBQUUsaUJBQWlCLENBQUM7WUFDaEUsS0FBSyxZQUFZLENBQUMsYUFBYTtnQkFDN0IsT0FBTyxRQUFTLEtBQWMsQ0FBQyxXQUFXLEVBQUUsaUJBQWlCLENBQUM7WUFDaEUsS0FBSyxZQUFZLENBQUMsY0FBYztnQkFDOUIsT0FBTyxRQUFTLEtBQWMsQ0FBQyxXQUFXLEVBQUUsdUJBQXVCLENBQUM7WUFDcEUsS0FBSyxZQUFZLENBQUMsSUFBSTtnQkFDcEIsT0FBTyxRQUFTLEtBQWMsQ0FBQyxXQUFXLEVBQUUsaUJBQWlCLENBQUM7WUFDOUQsS0FBSyxZQUFZLENBQUMsUUFBUTtnQkFDeEIsT0FBTyxRQUFTLEtBQWMsQ0FBQyxXQUFXLEVBQUUsaUJBQWlCLENBQUM7WUFDcEU7Z0JBQ0UsT0FBTyxJQUFJLEtBQUssR0FBRyxDQUFDO1NBQ3ZCO0lBQ0gsQ0FBQztJQUVPLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxTQUFrQjtRQUNuRCxRQUFRLFNBQVMsRUFBRTtZQUNqQixLQUFLLGVBQWUsQ0FBQyxXQUFXO2dCQUM5QixPQUFPLFlBQVksQ0FBQztZQUN0QixLQUFLLGVBQWUsQ0FBQyxRQUFRO2dCQUMzQixPQUFPLFVBQVUsQ0FBQztZQUNwQixLQUFLLGVBQWUsQ0FBQyxZQUFZO2dCQUMvQixPQUFPLGNBQWMsQ0FBQztZQUN4QixLQUFLLGVBQWUsQ0FBQyxTQUFTO2dCQUM1QixPQUFPLFVBQVUsQ0FBQztZQUNwQixLQUFLLGVBQWUsQ0FBQyxNQUFNO2dCQUN6QixPQUFPLElBQUksQ0FBQztZQUNkLEtBQUssZUFBZSxDQUFDLFVBQVU7Z0JBQzdCLE9BQU8sSUFBSSxDQUFDO1lBQ2QsS0FBSyxlQUFlLENBQUMsRUFBRTtnQkFDckIsT0FBTyxJQUFJLENBQUM7WUFDZCxLQUFLLGVBQWUsQ0FBQyxTQUFTO2dCQUM1QixPQUFPLElBQUksQ0FBQztZQUNkLEtBQUssZUFBZSxDQUFDLHFCQUFxQjtnQkFDeEMsT0FBTyxJQUFJLENBQUM7WUFDZCxLQUFLLGVBQWUsQ0FBQyxZQUFZO2dCQUMvQixPQUFPLElBQUksQ0FBQztZQUNkLEtBQUssZUFBZSxDQUFDLHdCQUF3QjtnQkFDM0MsT0FBTyxJQUFJLENBQUM7WUFDZCxLQUFLLGVBQWUsQ0FBQyxFQUFFO2dCQUNyQixPQUFPLElBQUksQ0FBQztZQUNkLEtBQUssZUFBZSxDQUFDLE1BQU07Z0JBQ3pCLE9BQU8sSUFBSSxDQUFDO1lBQ2QsS0FBSyxlQUFlLENBQUMsTUFBTTtnQkFDekIsT0FBTyxJQUFJLENBQUM7WUFDZCxLQUFLLGVBQWUsQ0FBQyxLQUFLO2dCQUN4QixPQUFPLElBQUksQ0FBQztZQUNkLEtBQUssZUFBZSxDQUFDLFVBQVU7Z0JBQzdCLE9BQU8sSUFBSSxDQUFDO1lBQ2QsS0FBSyxlQUFlLENBQUMsV0FBVztnQkFDOUIsT0FBTyxJQUFJLENBQUM7WUFDZCxLQUFLLGVBQWUsQ0FBQyxPQUFPO2dCQUMxQixPQUFPLElBQUksQ0FBQztZQUNkLEtBQUssZUFBZSxDQUFDLFdBQVc7Z0JBQzlCLE9BQU8sSUFBSSxDQUFDO1lBQ2Q7Z0JBQ0UsTUFBTSxLQUFLLENBQUMscUJBQXFCLFNBQVMsRUFBRSxDQUFDLENBQUM7U0FDakQ7SUFDSCxDQUFDO0lBRU8sTUFBTSxDQUFDLGtCQUFrQixDQUFDLFVBQXNCLEVBQUUsWUFBb0I7UUFDNUUsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUFDLENBQUM7UUFDL0QsSUFBSSxRQUFRLEtBQUssU0FBUztZQUN4QixNQUFNLElBQUksS0FBSyxDQUFDLHdDQUF3QyxZQUFZLGlEQUFpRCxDQUFDLENBQUM7UUFFekgsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmlsdGVyTWF0Y2hNb2RlLCBGaWx0ZXJNZXRhZGF0YSwgTGF6eUxvYWRFdmVudCB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgUHJvcGVydHksIFByb3BlcnR5VHlwZSwgVGVtcGxhdGUgfSBmcm9tICdAd2VydHp1aS9uZ3gtaGFsLWNsaWVudCc7XHJcblxyXG5leHBvcnQgY2xhc3MgT0RhdGFTZXJ2aWNlIHtcclxuICBwdWJsaWMgc3RhdGljIGNyZWF0ZUZpbHRlckZvclByb3BlcnR5KHByb3BlcnR5OiBQcm9wZXJ0eSwgZmlsdGVyOiBGaWx0ZXJNZXRhZGF0YSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICBpZiAoIWZpbHRlci52YWx1ZSlcclxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuXHJcbiAgICBjb25zdCBvRGF0YU9wZXJhdG9yID0gT0RhdGFTZXJ2aWNlLmNyZWF0ZU9EYXRhT3BlcmF0b3IoXHJcbiAgICAgIGZpbHRlci5tYXRjaE1vZGUsXHJcbiAgICApO1xyXG4gICAgY29uc3QgY29tcGFyaXNvblZhbHVlID0gT0RhdGFTZXJ2aWNlLmNyZWF0ZUNvbXBhcmlzb25WYWx1ZShwcm9wZXJ0eSwgZmlsdGVyLnZhbHVlKTtcclxuXHJcbiAgICBzd2l0Y2ggKG9EYXRhT3BlcmF0b3IpIHtcclxuICAgICAgY2FzZSAnY29udGFpbnMnOlxyXG4gICAgICBjYXNlICdub3QgY29udGFpbnMnOlxyXG4gICAgICBjYXNlICdzdGFydHN3aXRoJzpcclxuICAgICAgY2FzZSAnZW5kc3dpdGgnOlxyXG4gICAgICAgIHJldHVybiBgJHtvRGF0YU9wZXJhdG9yfSgke3Byb3BlcnR5fSwgJHtjb21wYXJpc29uVmFsdWV9KWA7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIGAke3Byb3BlcnR5fSAke29EYXRhT3BlcmF0b3J9ICR7Y29tcGFyaXNvblZhbHVlfWA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGNyZWF0ZUZpbHRlckZvclByb3BlcnR5QXJyYXkocHJvcGVydHk6IFByb3BlcnR5LCBmaWx0ZXJzOiBGaWx0ZXJNZXRhZGF0YVtdKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgIGNvbnN0IGZpbHRlciA9IGZpbHRlcnNcclxuICAgICAgLm1hcChmID0+IE9EYXRhU2VydmljZS5jcmVhdGVGaWx0ZXJGb3JQcm9wZXJ0eShwcm9wZXJ0eSwgZikpXHJcbiAgICAgIC5maWx0ZXIoZiA9PiAhIWYpXHJcbiAgICAgIC5qb2luKGAgJHtmaWx0ZXJzWzBdLm9wZXJhdG9yfSBgKTtcclxuXHJcbiAgICBpZiAoZmlsdGVyID09PSAnJylcclxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuXHJcbiAgICByZXR1cm4gYCgke2ZpbHRlcn0pYDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgY3JlYXRlRmlsdGVyRnJvbVRhYmxlTG9hZEV2ZW50KGV2ZW50OiBMYXp5TG9hZEV2ZW50LCBwcm9wZXJ0aWVzPzogUHJvcGVydHlbXSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICBpZiAoIWV2ZW50LmZpbHRlcnMgfHwgcHJvcGVydGllcyA9PT0gdW5kZWZpbmVkKVxyXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG5cclxuICAgIGNvbnN0IGZpbHRlciA9IE9iamVjdC5lbnRyaWVzKGV2ZW50LmZpbHRlcnMpXHJcbiAgICAgIC8vIFRoZSB0eXBlIGRlZmluaXRpb24gaXMgd3JvbmcsIGV2ZW50LmZpbHRlcnMgaGFzIHZhbHVlcyBvZiB0eXBlIEZpbHRlck1ldGFkYXRhW10gYW5kIG5vdCBGaWx0ZXJNZXRhZGF0YS5cclxuICAgICAgLm1hcCgoW3Byb3BlcnR5TmFtZSwgZmlsdGVyXSkgPT4gKHsgcHJvcGVydHk6IE9EYXRhU2VydmljZS5maW5kUHJvcGVydHlCeU5hbWUocHJvcGVydGllcywgcHJvcGVydHlOYW1lKSwgZmlsdGVyczogZmlsdGVyIGFzIEZpbHRlck1ldGFkYXRhW10gfSkpXHJcbiAgICAgIC5tYXAoZiA9PiBPRGF0YVNlcnZpY2UuY3JlYXRlRmlsdGVyRm9yUHJvcGVydHlBcnJheShmLnByb3BlcnR5LCBmLmZpbHRlcnMpKVxyXG4gICAgICAuZmlsdGVyKGYgPT4gISFmKVxyXG4gICAgICAuam9pbignIGFuZCAnKTtcclxuXHJcbiAgICBpZiAoZmlsdGVyID09PSAnJylcclxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuXHJcbiAgICByZXR1cm4gYCgke2ZpbHRlcn0pYDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgY3JlYXRlT3JkZXJCeUZyb21UYWJsZUxvYWRFdmVudChldmVudDogTGF6eUxvYWRFdmVudCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICBpZiAoZXZlbnQuc29ydEZpZWxkKSB7XHJcbiAgICAgIGNvbnN0IG9yZGVyID0gIWV2ZW50LnNvcnRPcmRlciB8fCBldmVudC5zb3J0T3JkZXIgPiAwID8gJ2FzYycgOiAnZGVzYyc7XHJcbiAgICAgIHJldHVybiBgJHtldmVudC5zb3J0RmllbGR9ICR7b3JkZXJ9YDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBjcmVhdGVQYXJhbWV0ZXJzRnJvbVRhYmxlTG9hZEV2ZW50KGV2ZW50OiBMYXp5TG9hZEV2ZW50LCB0ZW1wbGF0ZT86IFRlbXBsYXRlKSB7XHJcbiAgICBjb25zdCBvRGF0YVBhcmFtZXRlcnMgPSB7XHJcbiAgICAgICRmaWx0ZXI6IE9EYXRhU2VydmljZS5jcmVhdGVGaWx0ZXJGcm9tVGFibGVMb2FkRXZlbnQoZXZlbnQsIHRlbXBsYXRlPy5wcm9wZXJ0aWVzKSxcclxuICAgICAgJG9yZGVyYnk6IE9EYXRhU2VydmljZS5jcmVhdGVPcmRlckJ5RnJvbVRhYmxlTG9hZEV2ZW50KGV2ZW50KSxcclxuICAgICAgJHRvcDogT0RhdGFTZXJ2aWNlLmNyZWF0ZVRvcEZyb21UYWJsZUxvYWRFdmVudChldmVudCksXHJcbiAgICAgICRza2lwOiBPRGF0YVNlcnZpY2UuY3JlYXRlU2tpcEZyb21UYWJsZUxvYWRFdmVudChldmVudClcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIG9EYXRhUGFyYW1ldGVycztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgY3JlYXRlU2tpcEZyb21UYWJsZUxvYWRFdmVudChldmVudDogTGF6eUxvYWRFdmVudCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gZXZlbnQuZmlyc3Q7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGNyZWF0ZVRvcEZyb21UYWJsZUxvYWRFdmVudChldmVudDogTGF6eUxvYWRFdmVudCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gZXZlbnQucm93cztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGNyZWF0ZUNvbXBhcmlzb25WYWx1ZShwcm9wZXJ0eTogUHJvcGVydHksIHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcclxuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKVxyXG4gICAgICByZXR1cm4gJ251bGwnO1xyXG5cclxuICAgIGNvbnN0IHR5cGUgPSBwcm9wZXJ0eS50eXBlO1xyXG5cclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlIFByb3BlcnR5VHlwZS5EYXRlOlxyXG4gICAgICAgIHJldHVybiBgY2FzdCgkeyh2YWx1ZSBhcyBEYXRlKS50b0lTT1N0cmluZygpfSwgRWRtLkRhdGVPbmx5KWA7XHJcbiAgICAgIGNhc2UgUHJvcGVydHlUeXBlLkRhdGV0aW1lTG9jYWw6XHJcbiAgICAgICAgcmV0dXJuIGBjYXN0KCR7KHZhbHVlIGFzIERhdGUpLnRvSVNPU3RyaW5nKCl9LCBFZG0uRGF0ZVRpbWUpYDtcclxuICAgICAgY2FzZSBQcm9wZXJ0eVR5cGUuRGF0ZXRpbWVPZmZzZXQ6XHJcbiAgICAgICAgcmV0dXJuIGBjYXN0KCR7KHZhbHVlIGFzIERhdGUpLnRvSVNPU3RyaW5nKCl9LCBFZG0uRGF0ZVRpbWVPZmZzZXQpYDtcclxuICAgICAgICBjYXNlIFByb3BlcnR5VHlwZS5UaW1lOlxyXG4gICAgICAgICAgcmV0dXJuIGBjYXN0KCR7KHZhbHVlIGFzIERhdGUpLnRvSVNPU3RyaW5nKCl9LCBFZG0uVGltZU9ubHkpYDtcclxuICAgICAgICAgIGNhc2UgUHJvcGVydHlUeXBlLkR1cmF0aW9uOlxyXG4gICAgICAgICAgICByZXR1cm4gYGNhc3QoJHsodmFsdWUgYXMgRGF0ZSkudG9JU09TdHJpbmcoKX0sIEVkbS5UaW1lU3BhbilgO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBgJyR7dmFsdWV9J2A7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBjcmVhdGVPRGF0YU9wZXJhdG9yKG1hdGNoTW9kZT86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBzd2l0Y2ggKG1hdGNoTW9kZSkge1xyXG4gICAgICBjYXNlIEZpbHRlck1hdGNoTW9kZS5TVEFSVFNfV0lUSDpcclxuICAgICAgICByZXR1cm4gJ3N0YXJ0c3dpdGgnO1xyXG4gICAgICBjYXNlIEZpbHRlck1hdGNoTW9kZS5DT05UQUlOUzpcclxuICAgICAgICByZXR1cm4gJ2NvbnRhaW5zJztcclxuICAgICAgY2FzZSBGaWx0ZXJNYXRjaE1vZGUuTk9UX0NPTlRBSU5TOlxyXG4gICAgICAgIHJldHVybiAnbm90IGNvbnRhaW5zJztcclxuICAgICAgY2FzZSBGaWx0ZXJNYXRjaE1vZGUuRU5EU19XSVRIOlxyXG4gICAgICAgIHJldHVybiAnZW5kc3dpdGgnO1xyXG4gICAgICBjYXNlIEZpbHRlck1hdGNoTW9kZS5FUVVBTFM6XHJcbiAgICAgICAgcmV0dXJuICdlcSc7XHJcbiAgICAgIGNhc2UgRmlsdGVyTWF0Y2hNb2RlLk5PVF9FUVVBTFM6XHJcbiAgICAgICAgcmV0dXJuICduZSc7XHJcbiAgICAgIGNhc2UgRmlsdGVyTWF0Y2hNb2RlLklOOlxyXG4gICAgICAgIHJldHVybiAnaW4nO1xyXG4gICAgICBjYXNlIEZpbHRlck1hdGNoTW9kZS5MRVNTX1RIQU46XHJcbiAgICAgICAgcmV0dXJuICdsdCc7XHJcbiAgICAgIGNhc2UgRmlsdGVyTWF0Y2hNb2RlLkxFU1NfVEhBTl9PUl9FUVVBTF9UTzpcclxuICAgICAgICByZXR1cm4gJ2xlJztcclxuICAgICAgY2FzZSBGaWx0ZXJNYXRjaE1vZGUuR1JFQVRFUl9USEFOOlxyXG4gICAgICAgIHJldHVybiAnZ3QnO1xyXG4gICAgICBjYXNlIEZpbHRlck1hdGNoTW9kZS5HUkVBVEVSX1RIQU5fT1JfRVFVQUxfVE86XHJcbiAgICAgICAgcmV0dXJuICdnZSc7XHJcbiAgICAgIGNhc2UgRmlsdGVyTWF0Y2hNb2RlLklTOlxyXG4gICAgICAgIHJldHVybiAnZXEnO1xyXG4gICAgICBjYXNlIEZpbHRlck1hdGNoTW9kZS5JU19OT1Q6XHJcbiAgICAgICAgcmV0dXJuICduZSc7XHJcbiAgICAgIGNhc2UgRmlsdGVyTWF0Y2hNb2RlLkJFRk9SRTpcclxuICAgICAgICByZXR1cm4gJ2x0JztcclxuICAgICAgY2FzZSBGaWx0ZXJNYXRjaE1vZGUuQUZURVI6XHJcbiAgICAgICAgcmV0dXJuICdndCc7XHJcbiAgICAgIGNhc2UgRmlsdGVyTWF0Y2hNb2RlLkRBVEVfQUZURVI6XHJcbiAgICAgICAgcmV0dXJuICdnZSc7XHJcbiAgICAgIGNhc2UgRmlsdGVyTWF0Y2hNb2RlLkRBVEVfQkVGT1JFOlxyXG4gICAgICAgIHJldHVybiAnbHQnO1xyXG4gICAgICBjYXNlIEZpbHRlck1hdGNoTW9kZS5EQVRFX0lTOlxyXG4gICAgICAgIHJldHVybiAnZXEnO1xyXG4gICAgICBjYXNlIEZpbHRlck1hdGNoTW9kZS5EQVRFX0lTX05PVDpcclxuICAgICAgICByZXR1cm4gJ25lJztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aHJvdyBFcnJvcihgVW5rbm93biBtYXRjaE1vZGUgJHttYXRjaE1vZGV9YCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBmaW5kUHJvcGVydHlCeU5hbWUocHJvcGVydGllczogUHJvcGVydHlbXSwgcHJvcGVydHlOYW1lOiBzdHJpbmcpOiBQcm9wZXJ0eSB7XHJcbiAgICBjb25zdCBwcm9wZXJ0eSA9IHByb3BlcnRpZXMuZmluZChwID0+IHAubmFtZSA9PT0gcHJvcGVydHlOYW1lKTtcclxuICAgIGlmIChwcm9wZXJ0eSA9PT0gdW5kZWZpbmVkKVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kIGEgcHJvcGVydHkgd2l0aCB0aGUgbmFtZSAke3Byb3BlcnR5TmFtZX0gaW4gdGhlIHByb3BlcnRpZXMgb2YgdGhlIHNlYXJjaCBmb3JtIHRlbXBsYXRlLmApO1xyXG5cclxuICAgIHJldHVybiBwcm9wZXJ0eTtcclxuICB9XHJcbn1cclxuIl19
|
|
136
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1kYXRhLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVzdHdvcmxkLWNsaWVudC9zcmMvbGliL3NlcnZpY2VzL28tZGF0YS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQWlDLE1BQU0sYUFBYSxDQUFDO0FBQzdFLE9BQU8sRUFBWSxZQUFZLEVBQVksTUFBTSx5QkFBeUIsQ0FBQztBQUUzRSxNQUFNLE9BQU8sWUFBWTtJQUNoQixNQUFNLENBQUMsdUJBQXVCLENBQUMsUUFBa0IsRUFBRSxNQUFzQjtRQUM5RSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUs7WUFDZixPQUFPLFNBQVMsQ0FBQztRQUVuQixNQUFNLGFBQWEsR0FBRyxZQUFZLENBQUMsbUJBQW1CLENBQ3BELE1BQU0sQ0FBQyxTQUFTLENBQ2pCLENBQUM7UUFDRixNQUFNLGVBQWUsR0FBRyxZQUFZLENBQUMscUJBQXFCLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVuRixRQUFRLGFBQWEsRUFBRTtZQUNyQixLQUFLLFVBQVUsQ0FBQztZQUNoQixLQUFLLGNBQWMsQ0FBQztZQUNwQixLQUFLLFlBQVksQ0FBQztZQUNsQixLQUFLLFVBQVU7Z0JBQ2IsT0FBTyxHQUFHLGFBQWEsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLGVBQWUsR0FBRyxDQUFDO1lBQ2xFO2dCQUNFLE9BQU8sR0FBRyxRQUFRLENBQUMsSUFBSSxJQUFJLGFBQWEsSUFBSSxlQUFlLEVBQUUsQ0FBQztTQUNqRTtJQUNILENBQUM7SUFFTSxNQUFNLENBQUMsNEJBQTRCLENBQUMsUUFBa0IsRUFBRSxPQUF5QjtRQUN0RixNQUFNLE1BQU0sR0FBRyxPQUFPO2FBQ25CLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDM0QsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNoQixJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUVwQyxJQUFJLE1BQU0sS0FBSyxFQUFFO1lBQ2YsT0FBTyxTQUFTLENBQUM7UUFFbkIsT0FBTyxJQUFJLE1BQU0sR0FBRyxDQUFDO0lBQ3ZCLENBQUM7SUFFTSxNQUFNLENBQUMsOEJBQThCLENBQUMsS0FBb0IsRUFBRSxVQUF1QjtRQUN4RixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxVQUFVLEtBQUssU0FBUztZQUM1QyxPQUFPLFNBQVMsQ0FBQztRQUVuQixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDMUMsMEdBQTBHO2FBQ3pHLEdBQUcsQ0FBQyxDQUFDLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQTBCLEVBQUUsQ0FBQyxDQUFDO2FBQy9JLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUMxRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2hCLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVqQixJQUFJLE1BQU0sS0FBSyxFQUFFO1lBQ2YsT0FBTyxTQUFTLENBQUM7UUFFbkIsT0FBTyxJQUFJLE1BQU0sR0FBRyxDQUFDO0lBQ3ZCLENBQUM7SUFFTSxNQUFNLENBQUMsK0JBQStCLENBQUMsS0FBb0I7UUFDaEUsSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFO1lBQ25CLE1BQU0sS0FBSyxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsSUFBSSxLQUFLLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFDdkUsT0FBTyxHQUFHLEtBQUssQ0FBQyxTQUFTLElBQUksS0FBSyxFQUFFLENBQUM7U0FDdEM7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRU0sTUFBTSxDQUFDLGtDQUFrQyxDQUFDLEtBQW9CLEVBQUUsUUFBbUI7UUFDeEYsTUFBTSxlQUFlLEdBQUc7WUFDdEIsT0FBTyxFQUFFLFlBQVksQ0FBQyw4QkFBOEIsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQztZQUNqRixRQUFRLEVBQUUsWUFBWSxDQUFDLCtCQUErQixDQUFDLEtBQUssQ0FBQztZQUM3RCxJQUFJLEVBQUUsWUFBWSxDQUFDLDJCQUEyQixDQUFDLEtBQUssQ0FBQztZQUNyRCxLQUFLLEVBQUUsWUFBWSxDQUFDLDRCQUE0QixDQUFDLEtBQUssQ0FBQztTQUN4RCxDQUFDO1FBRUYsT0FBTyxlQUFlLENBQUM7SUFDekIsQ0FBQztJQUVNLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxLQUFvQjtRQUM3RCxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVNLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxLQUFvQjtRQUM1RCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUM7SUFDcEIsQ0FBQztJQUVPLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxRQUFrQixFQUFFLEtBQWM7UUFDckUsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTO1lBQ3ZDLE9BQU8sTUFBTSxDQUFDO1FBRWhCLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFFM0IsUUFBUSxJQUFJLEVBQUU7WUFDWixLQUFLLFlBQVksQ0FBQyxJQUFJO2dCQUNwQixPQUFPLFFBQVMsS0FBYyxDQUFDLFdBQVcsRUFBRSxpQkFBaUIsQ0FBQztZQUNoRSxLQUFLLFlBQVksQ0FBQyxhQUFhO2dCQUM3QixPQUFPLFFBQVMsS0FBYyxDQUFDLFdBQVcsRUFBRSxpQkFBaUIsQ0FBQztZQUNoRSxLQUFLLFlBQVksQ0FBQyxjQUFjO2dCQUM5QixPQUFPLFFBQVMsS0FBYyxDQUFDLFdBQVcsRUFBRSx1QkFBdUIsQ0FBQztZQUN0RSxLQUFLLFlBQVksQ0FBQyxJQUFJO2dCQUNwQixPQUFPLFFBQVMsS0FBYyxDQUFDLFdBQVcsRUFBRSxpQkFBaUIsQ0FBQztZQUNoRSxLQUFLLFlBQVksQ0FBQyxRQUFRO2dCQUN4QixPQUFPLFFBQVMsS0FBYyxDQUFDLFdBQVcsRUFBRSxpQkFBaUIsQ0FBQztZQUNoRSxLQUFLLFlBQVksQ0FBQyxJQUFJLENBQUM7WUFDdkIsS0FBSyxZQUFZLENBQUMsTUFBTTtnQkFDdEIsT0FBTyxFQUFFLEdBQUcsS0FBSyxDQUFDO1lBQ3BCO2dCQUNFLE9BQU8sSUFBSSxLQUFLLEdBQUcsQ0FBQztTQUN2QjtJQUNILENBQUM7SUFFTyxNQUFNLENBQUMsbUJBQW1CLENBQUMsU0FBa0I7UUFDbkQsUUFBUSxTQUFTLEVBQUU7WUFDakIsS0FBSyxlQUFlLENBQUMsV0FBVztnQkFDOUIsT0FBTyxZQUFZLENBQUM7WUFDdEIsS0FBSyxlQUFlLENBQUMsUUFBUTtnQkFDM0IsT0FBTyxVQUFVLENBQUM7WUFDcEIsS0FBSyxlQUFlLENBQUMsWUFBWTtnQkFDL0IsT0FBTyxjQUFjLENBQUM7WUFDeEIsS0FBSyxlQUFlLENBQUMsU0FBUztnQkFDNUIsT0FBTyxVQUFVLENBQUM7WUFDcEIsS0FBSyxlQUFlLENBQUMsTUFBTTtnQkFDekIsT0FBTyxJQUFJLENBQUM7WUFDZCxLQUFLLGVBQWUsQ0FBQyxVQUFVO2dCQUM3QixPQUFPLElBQUksQ0FBQztZQUNkLEtBQUssZUFBZSxDQUFDLEVBQUU7Z0JBQ3JCLE9BQU8sSUFBSSxDQUFDO1lBQ2QsS0FBSyxlQUFlLENBQUMsU0FBUztnQkFDNUIsT0FBTyxJQUFJLENBQUM7WUFDZCxLQUFLLGVBQWUsQ0FBQyxxQkFBcUI7Z0JBQ3hDLE9BQU8sSUFBSSxDQUFDO1lBQ2QsS0FBSyxlQUFlLENBQUMsWUFBWTtnQkFDL0IsT0FBTyxJQUFJLENBQUM7WUFDZCxLQUFLLGVBQWUsQ0FBQyx3QkFBd0I7Z0JBQzNDLE9BQU8sSUFBSSxDQUFDO1lBQ2QsS0FBSyxlQUFlLENBQUMsRUFBRTtnQkFDckIsT0FBTyxJQUFJLENBQUM7WUFDZCxLQUFLLGVBQWUsQ0FBQyxNQUFNO2dCQUN6QixPQUFPLElBQUksQ0FBQztZQUNkLEtBQUssZUFBZSxDQUFDLE1BQU07Z0JBQ3pCLE9BQU8sSUFBSSxDQUFDO1lBQ2QsS0FBSyxlQUFlLENBQUMsS0FBSztnQkFDeEIsT0FBTyxJQUFJLENBQUM7WUFDZCxLQUFLLGVBQWUsQ0FBQyxVQUFVO2dCQUM3QixPQUFPLElBQUksQ0FBQztZQUNkLEtBQUssZUFBZSxDQUFDLFdBQVc7Z0JBQzlCLE9BQU8sSUFBSSxDQUFDO1lBQ2QsS0FBSyxlQUFlLENBQUMsT0FBTztnQkFDMUIsT0FBTyxJQUFJLENBQUM7WUFDZCxLQUFLLGVBQWUsQ0FBQyxXQUFXO2dCQUM5QixPQUFPLElBQUksQ0FBQztZQUNkO2dCQUNFLE1BQU0sS0FBSyxDQUFDLHFCQUFxQixTQUFTLEVBQUUsQ0FBQyxDQUFDO1NBQ2pEO0lBQ0gsQ0FBQztJQUVPLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxVQUFzQixFQUFFLFlBQW9CO1FBQzVFLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxDQUFDO1FBQy9ELElBQUksUUFBUSxLQUFLLFNBQVM7WUFDeEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx3Q0FBd0MsWUFBWSxpREFBaUQsQ0FBQyxDQUFDO1FBRXpILE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZpbHRlck1hdGNoTW9kZSwgRmlsdGVyTWV0YWRhdGEsIExhenlMb2FkRXZlbnQgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IFByb3BlcnR5LCBQcm9wZXJ0eVR5cGUsIFRlbXBsYXRlIH0gZnJvbSAnQHdlcnR6dWkvbmd4LWhhbC1jbGllbnQnO1xyXG5cclxuZXhwb3J0IGNsYXNzIE9EYXRhU2VydmljZSB7XHJcbiAgcHVibGljIHN0YXRpYyBjcmVhdGVGaWx0ZXJGb3JQcm9wZXJ0eShwcm9wZXJ0eTogUHJvcGVydHksIGZpbHRlcjogRmlsdGVyTWV0YWRhdGEpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgaWYgKCFmaWx0ZXIudmFsdWUpXHJcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcblxyXG4gICAgY29uc3Qgb0RhdGFPcGVyYXRvciA9IE9EYXRhU2VydmljZS5jcmVhdGVPRGF0YU9wZXJhdG9yKFxyXG4gICAgICBmaWx0ZXIubWF0Y2hNb2RlLFxyXG4gICAgKTtcclxuICAgIGNvbnN0IGNvbXBhcmlzb25WYWx1ZSA9IE9EYXRhU2VydmljZS5jcmVhdGVDb21wYXJpc29uVmFsdWUocHJvcGVydHksIGZpbHRlci52YWx1ZSk7XHJcblxyXG4gICAgc3dpdGNoIChvRGF0YU9wZXJhdG9yKSB7XHJcbiAgICAgIGNhc2UgJ2NvbnRhaW5zJzpcclxuICAgICAgY2FzZSAnbm90IGNvbnRhaW5zJzpcclxuICAgICAgY2FzZSAnc3RhcnRzd2l0aCc6XHJcbiAgICAgIGNhc2UgJ2VuZHN3aXRoJzpcclxuICAgICAgICByZXR1cm4gYCR7b0RhdGFPcGVyYXRvcn0oJHtwcm9wZXJ0eS5uYW1lfSwgJHtjb21wYXJpc29uVmFsdWV9KWA7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIGAke3Byb3BlcnR5Lm5hbWV9ICR7b0RhdGFPcGVyYXRvcn0gJHtjb21wYXJpc29uVmFsdWV9YDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgY3JlYXRlRmlsdGVyRm9yUHJvcGVydHlBcnJheShwcm9wZXJ0eTogUHJvcGVydHksIGZpbHRlcnM6IEZpbHRlck1ldGFkYXRhW10pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgY29uc3QgZmlsdGVyID0gZmlsdGVyc1xyXG4gICAgICAubWFwKGYgPT4gT0RhdGFTZXJ2aWNlLmNyZWF0ZUZpbHRlckZvclByb3BlcnR5KHByb3BlcnR5LCBmKSlcclxuICAgICAgLmZpbHRlcihmID0+ICEhZilcclxuICAgICAgLmpvaW4oYCAke2ZpbHRlcnNbMF0ub3BlcmF0b3J9IGApO1xyXG5cclxuICAgIGlmIChmaWx0ZXIgPT09ICcnKVxyXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG5cclxuICAgIHJldHVybiBgKCR7ZmlsdGVyfSlgO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBjcmVhdGVGaWx0ZXJGcm9tVGFibGVMb2FkRXZlbnQoZXZlbnQ6IExhenlMb2FkRXZlbnQsIHByb3BlcnRpZXM/OiBQcm9wZXJ0eVtdKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgIGlmICghZXZlbnQuZmlsdGVycyB8fCBwcm9wZXJ0aWVzID09PSB1bmRlZmluZWQpXHJcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcblxyXG4gICAgY29uc3QgZmlsdGVyID0gT2JqZWN0LmVudHJpZXMoZXZlbnQuZmlsdGVycylcclxuICAgICAgLy8gVGhlIHR5cGUgZGVmaW5pdGlvbiBpcyB3cm9uZywgZXZlbnQuZmlsdGVycyBoYXMgdmFsdWVzIG9mIHR5cGUgRmlsdGVyTWV0YWRhdGFbXSBhbmQgbm90IEZpbHRlck1ldGFkYXRhLlxyXG4gICAgICAubWFwKChbcHJvcGVydHlOYW1lLCBmaWx0ZXJdKSA9PiAoeyBwcm9wZXJ0eTogT0RhdGFTZXJ2aWNlLmZpbmRQcm9wZXJ0eUJ5TmFtZShwcm9wZXJ0aWVzLCBwcm9wZXJ0eU5hbWUpLCBmaWx0ZXJzOiBmaWx0ZXIgYXMgRmlsdGVyTWV0YWRhdGFbXSB9KSlcclxuICAgICAgLm1hcChmID0+IE9EYXRhU2VydmljZS5jcmVhdGVGaWx0ZXJGb3JQcm9wZXJ0eUFycmF5KGYucHJvcGVydHksIGYuZmlsdGVycykpXHJcbiAgICAgIC5maWx0ZXIoZiA9PiAhIWYpXHJcbiAgICAgIC5qb2luKCcgYW5kICcpO1xyXG5cclxuICAgIGlmIChmaWx0ZXIgPT09ICcnKVxyXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG5cclxuICAgIHJldHVybiBgKCR7ZmlsdGVyfSlgO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBjcmVhdGVPcmRlckJ5RnJvbVRhYmxlTG9hZEV2ZW50KGV2ZW50OiBMYXp5TG9hZEV2ZW50KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgIGlmIChldmVudC5zb3J0RmllbGQpIHtcclxuICAgICAgY29uc3Qgb3JkZXIgPSAhZXZlbnQuc29ydE9yZGVyIHx8IGV2ZW50LnNvcnRPcmRlciA+IDAgPyAnYXNjJyA6ICdkZXNjJztcclxuICAgICAgcmV0dXJuIGAke2V2ZW50LnNvcnRGaWVsZH0gJHtvcmRlcn1gO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGNyZWF0ZVBhcmFtZXRlcnNGcm9tVGFibGVMb2FkRXZlbnQoZXZlbnQ6IExhenlMb2FkRXZlbnQsIHRlbXBsYXRlPzogVGVtcGxhdGUpIHtcclxuICAgIGNvbnN0IG9EYXRhUGFyYW1ldGVycyA9IHtcclxuICAgICAgJGZpbHRlcjogT0RhdGFTZXJ2aWNlLmNyZWF0ZUZpbHRlckZyb21UYWJsZUxvYWRFdmVudChldmVudCwgdGVtcGxhdGU/LnByb3BlcnRpZXMpLFxyXG4gICAgICAkb3JkZXJieTogT0RhdGFTZXJ2aWNlLmNyZWF0ZU9yZGVyQnlGcm9tVGFibGVMb2FkRXZlbnQoZXZlbnQpLFxyXG4gICAgICAkdG9wOiBPRGF0YVNlcnZpY2UuY3JlYXRlVG9wRnJvbVRhYmxlTG9hZEV2ZW50KGV2ZW50KSxcclxuICAgICAgJHNraXA6IE9EYXRhU2VydmljZS5jcmVhdGVTa2lwRnJvbVRhYmxlTG9hZEV2ZW50KGV2ZW50KVxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gb0RhdGFQYXJhbWV0ZXJzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBjcmVhdGVTa2lwRnJvbVRhYmxlTG9hZEV2ZW50KGV2ZW50OiBMYXp5TG9hZEV2ZW50KTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiBldmVudC5maXJzdDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgY3JlYXRlVG9wRnJvbVRhYmxlTG9hZEV2ZW50KGV2ZW50OiBMYXp5TG9hZEV2ZW50KTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiBldmVudC5yb3dzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgY3JlYXRlQ29tcGFyaXNvblZhbHVlKHByb3BlcnR5OiBQcm9wZXJ0eSwgdmFsdWU6IHVua25vd24pOiBzdHJpbmcge1xyXG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpXHJcbiAgICAgIHJldHVybiAnbnVsbCc7XHJcblxyXG4gICAgY29uc3QgdHlwZSA9IHByb3BlcnR5LnR5cGU7XHJcblxyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgUHJvcGVydHlUeXBlLkRhdGU6XHJcbiAgICAgICAgcmV0dXJuIGBjYXN0KCR7KHZhbHVlIGFzIERhdGUpLnRvSVNPU3RyaW5nKCl9LCBFZG0uRGF0ZU9ubHkpYDtcclxuICAgICAgY2FzZSBQcm9wZXJ0eVR5cGUuRGF0ZXRpbWVMb2NhbDpcclxuICAgICAgICByZXR1cm4gYGNhc3QoJHsodmFsdWUgYXMgRGF0ZSkudG9JU09TdHJpbmcoKX0sIEVkbS5EYXRlVGltZSlgO1xyXG4gICAgICBjYXNlIFByb3BlcnR5VHlwZS5EYXRldGltZU9mZnNldDpcclxuICAgICAgICByZXR1cm4gYGNhc3QoJHsodmFsdWUgYXMgRGF0ZSkudG9JU09TdHJpbmcoKX0sIEVkbS5EYXRlVGltZU9mZnNldClgO1xyXG4gICAgICBjYXNlIFByb3BlcnR5VHlwZS5UaW1lOlxyXG4gICAgICAgIHJldHVybiBgY2FzdCgkeyh2YWx1ZSBhcyBEYXRlKS50b0lTT1N0cmluZygpfSwgRWRtLlRpbWVPbmx5KWA7XHJcbiAgICAgIGNhc2UgUHJvcGVydHlUeXBlLkR1cmF0aW9uOlxyXG4gICAgICAgIHJldHVybiBgY2FzdCgkeyh2YWx1ZSBhcyBEYXRlKS50b0lTT1N0cmluZygpfSwgRWRtLlRpbWVTcGFuKWA7XHJcbiAgICAgIGNhc2UgUHJvcGVydHlUeXBlLkJvb2w6XHJcbiAgICAgIGNhc2UgUHJvcGVydHlUeXBlLk51bWJlcjpcclxuICAgICAgICByZXR1cm4gJycgKyB2YWx1ZTtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gYCcke3ZhbHVlfSdgO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgY3JlYXRlT0RhdGFPcGVyYXRvcihtYXRjaE1vZGU/OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgc3dpdGNoIChtYXRjaE1vZGUpIHtcclxuICAgICAgY2FzZSBGaWx0ZXJNYXRjaE1vZGUuU1RBUlRTX1dJVEg6XHJcbiAgICAgICAgcmV0dXJuICdzdGFydHN3aXRoJztcclxuICAgICAgY2FzZSBGaWx0ZXJNYXRjaE1vZGUuQ09OVEFJTlM6XHJcbiAgICAgICAgcmV0dXJuICdjb250YWlucyc7XHJcbiAgICAgIGNhc2UgRmlsdGVyTWF0Y2hNb2RlLk5PVF9DT05UQUlOUzpcclxuICAgICAgICByZXR1cm4gJ25vdCBjb250YWlucyc7XHJcbiAgICAgIGNhc2UgRmlsdGVyTWF0Y2hNb2RlLkVORFNfV0lUSDpcclxuICAgICAgICByZXR1cm4gJ2VuZHN3aXRoJztcclxuICAgICAgY2FzZSBGaWx0ZXJNYXRjaE1vZGUuRVFVQUxTOlxyXG4gICAgICAgIHJldHVybiAnZXEnO1xyXG4gICAgICBjYXNlIEZpbHRlck1hdGNoTW9kZS5OT1RfRVFVQUxTOlxyXG4gICAgICAgIHJldHVybiAnbmUnO1xyXG4gICAgICBjYXNlIEZpbHRlck1hdGNoTW9kZS5JTjpcclxuICAgICAgICByZXR1cm4gJ2luJztcclxuICAgICAgY2FzZSBGaWx0ZXJNYXRjaE1vZGUuTEVTU19USEFOOlxyXG4gICAgICAgIHJldHVybiAnbHQnO1xyXG4gICAgICBjYXNlIEZpbHRlck1hdGNoTW9kZS5MRVNTX1RIQU5fT1JfRVFVQUxfVE86XHJcbiAgICAgICAgcmV0dXJuICdsZSc7XHJcbiAgICAgIGNhc2UgRmlsdGVyTWF0Y2hNb2RlLkdSRUFURVJfVEhBTjpcclxuICAgICAgICByZXR1cm4gJ2d0JztcclxuICAgICAgY2FzZSBGaWx0ZXJNYXRjaE1vZGUuR1JFQVRFUl9USEFOX09SX0VRVUFMX1RPOlxyXG4gICAgICAgIHJldHVybiAnZ2UnO1xyXG4gICAgICBjYXNlIEZpbHRlck1hdGNoTW9kZS5JUzpcclxuICAgICAgICByZXR1cm4gJ2VxJztcclxuICAgICAgY2FzZSBGaWx0ZXJNYXRjaE1vZGUuSVNfTk9UOlxyXG4gICAgICAgIHJldHVybiAnbmUnO1xyXG4gICAgICBjYXNlIEZpbHRlck1hdGNoTW9kZS5CRUZPUkU6XHJcbiAgICAgICAgcmV0dXJuICdsdCc7XHJcbiAgICAgIGNhc2UgRmlsdGVyTWF0Y2hNb2RlLkFGVEVSOlxyXG4gICAgICAgIHJldHVybiAnZ3QnO1xyXG4gICAgICBjYXNlIEZpbHRlck1hdGNoTW9kZS5EQVRFX0FGVEVSOlxyXG4gICAgICAgIHJldHVybiAnZ2UnO1xyXG4gICAgICBjYXNlIEZpbHRlck1hdGNoTW9kZS5EQVRFX0JFRk9SRTpcclxuICAgICAgICByZXR1cm4gJ2x0JztcclxuICAgICAgY2FzZSBGaWx0ZXJNYXRjaE1vZGUuREFURV9JUzpcclxuICAgICAgICByZXR1cm4gJ2VxJztcclxuICAgICAgY2FzZSBGaWx0ZXJNYXRjaE1vZGUuREFURV9JU19OT1Q6XHJcbiAgICAgICAgcmV0dXJuICduZSc7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgdGhyb3cgRXJyb3IoYFVua25vd24gbWF0Y2hNb2RlICR7bWF0Y2hNb2RlfWApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgZmluZFByb3BlcnR5QnlOYW1lKHByb3BlcnRpZXM6IFByb3BlcnR5W10sIHByb3BlcnR5TmFtZTogc3RyaW5nKTogUHJvcGVydHkge1xyXG4gICAgY29uc3QgcHJvcGVydHkgPSBwcm9wZXJ0aWVzLmZpbmQocCA9PiBwLm5hbWUgPT09IHByb3BlcnR5TmFtZSk7XHJcbiAgICBpZiAocHJvcGVydHkgPT09IHVuZGVmaW5lZClcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCBhIHByb3BlcnR5IHdpdGggdGhlIG5hbWUgJHtwcm9wZXJ0eU5hbWV9IGluIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBzZWFyY2ggZm9ybSB0ZW1wbGF0ZS5gKTtcclxuXHJcbiAgICByZXR1cm4gcHJvcGVydHk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Injectable } from "@angular/core";
|
|
2
|
-
import {
|
|
2
|
+
import { RestWorldClient } from "./restworld-client";
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "@wertzui/ngx-hal-client";
|
|
5
|
-
export class
|
|
5
|
+
export class RestWorldClientCollection {
|
|
6
6
|
constructor(_halClient) {
|
|
7
7
|
this._halClient = _halClient;
|
|
8
8
|
this._clients = {};
|
|
@@ -13,7 +13,7 @@ export class RESTworldClientCollection {
|
|
|
13
13
|
async addOrGetExistingClient(name, options) {
|
|
14
14
|
if (Object.keys(this._clients).includes(name))
|
|
15
15
|
return this.getClient(name);
|
|
16
|
-
const client = new
|
|
16
|
+
const client = new RestWorldClient(this._halClient, options);
|
|
17
17
|
await client.ensureHomeResourceIsSet();
|
|
18
18
|
this._clients[name] = client;
|
|
19
19
|
return client;
|
|
@@ -28,12 +28,12 @@ export class RESTworldClientCollection {
|
|
|
28
28
|
return this._clients;
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type:
|
|
31
|
+
RestWorldClientCollection.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: RestWorldClientCollection, deps: [{ token: i1.HalClient }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
32
|
+
RestWorldClientCollection.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: RestWorldClientCollection, providedIn: 'root' });
|
|
33
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: RestWorldClientCollection, decorators: [{
|
|
34
34
|
type: Injectable,
|
|
35
35
|
args: [{
|
|
36
36
|
providedIn: 'root'
|
|
37
37
|
}]
|
|
38
38
|
}], ctorParameters: function () { return [{ type: i1.HalClient }]; } });
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdHdvcmxkLWNsaWVudC1jb2xsZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlc3R3b3JsZC1jbGllbnQvc3JjL2xpYi9zZXJ2aWNlcy9yZXN0d29ybGQtY2xpZW50LWNvbGxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7OztBQUtyRCxNQUFNLE9BQU8seUJBQXlCO0lBSXBDLFlBQW9CLFVBQXFCO1FBQXJCLGVBQVUsR0FBVixVQUFVLENBQVc7UUFDdkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVNLGNBQWMsQ0FBQyxJQUFZO1FBQ2hDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFTSxLQUFLLENBQUMsc0JBQXNCLENBQUMsSUFBWSxFQUFFLE9BQXlCO1FBQ3pFLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztZQUMzQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFOUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM3RCxNQUFNLE1BQU0sQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDO1FBQzdCLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxTQUFTLENBQUMsSUFBWTtRQUMzQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxNQUFNO1lBQ1QsTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsSUFBSSxXQUFXLENBQUMsQ0FBQztRQUUvRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsSUFBVyxHQUFHO1FBQ1osT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7O3NIQWhDVSx5QkFBeUI7MEhBQXpCLHlCQUF5QixjQUZ4QixNQUFNOzJGQUVQLHlCQUF5QjtrQkFIckMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgSGFsQ2xpZW50IH0gZnJvbSBcIkB3ZXJ0enVpL25neC1oYWwtY2xpZW50XCI7XHJcbmltcG9ydCB7IFJlc3RXb3JsZE9wdGlvbnMgfSBmcm9tIFwiLi4vbW9kZWxzL3Jlc3R3b3JsZC1vcHRpb25zXCI7XHJcbmltcG9ydCB7IFJlc3RXb3JsZENsaWVudCB9IGZyb20gXCIuL3Jlc3R3b3JsZC1jbGllbnRcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFJlc3RXb3JsZENsaWVudENvbGxlY3Rpb24ge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2NsaWVudHM6IHtcclxuICAgIFtuYW1lOiBzdHJpbmddOiBSZXN0V29ybGRDbGllbnQ7XHJcbiAgfTtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9oYWxDbGllbnQ6IEhhbENsaWVudCkge1xyXG4gICAgdGhpcy5fY2xpZW50cyA9IHt9O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNvbnRhaW5zQ2xpZW50KG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuX2NsaWVudHMpLmluY2x1ZGVzKG5hbWUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGFkZE9yR2V0RXhpc3RpbmdDbGllbnQobmFtZTogc3RyaW5nLCBvcHRpb25zOiBSZXN0V29ybGRPcHRpb25zKTogUHJvbWlzZTxSZXN0V29ybGRDbGllbnQ+IHtcclxuICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLl9jbGllbnRzKS5pbmNsdWRlcyhuYW1lKSlcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2xpZW50KG5hbWUpO1xyXG5cclxuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBSZXN0V29ybGRDbGllbnQodGhpcy5faGFsQ2xpZW50LCBvcHRpb25zKTtcclxuICAgIGF3YWl0IGNsaWVudC5lbnN1cmVIb21lUmVzb3VyY2VJc1NldCgpO1xyXG4gICAgdGhpcy5fY2xpZW50c1tuYW1lXSA9IGNsaWVudDtcclxuICAgIHJldHVybiBjbGllbnQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0Q2xpZW50KG5hbWU6IHN0cmluZyk6IFJlc3RXb3JsZENsaWVudCB7XHJcbiAgICBjb25zdCBjbGllbnQgPSB0aGlzLl9jbGllbnRzW25hbWVdO1xyXG4gICAgaWYgKCFjbGllbnQpXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gY2xpZW50IHdpdGggdGhlIG5hbWUgJyR7bmFtZX0nIGV4aXN0cy5gKTtcclxuXHJcbiAgICByZXR1cm4gY2xpZW50O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBhbGwoKTogeyBbbmFtZTogc3RyaW5nXTogUmVzdFdvcmxkQ2xpZW50IH0ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NsaWVudHM7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -4,7 +4,7 @@ import { FormsResource, Link, PagedListResource, Resource } from "@wertzui/ngx-h
|
|
|
4
4
|
import { LinkNames } from "../constants/link-names";
|
|
5
5
|
import { ProblemDetails } from "../models/problem-details";
|
|
6
6
|
import { lastValueFrom } from 'rxjs';
|
|
7
|
-
export class
|
|
7
|
+
export class RestWorldClient {
|
|
8
8
|
constructor(_halClient, _options) {
|
|
9
9
|
this._halClient = _halClient;
|
|
10
10
|
this._options = _options;
|
|
@@ -40,7 +40,7 @@ export class RESTworldClient {
|
|
|
40
40
|
if (!deleteLink)
|
|
41
41
|
throw new Error(`The resource ${resource} does not have a delete link.`);
|
|
42
42
|
const uri = deleteLink.href;
|
|
43
|
-
const header =
|
|
43
|
+
const header = RestWorldClient.createHeaders('application/hal+json', this._options.Version);
|
|
44
44
|
const response = await this.halClient.delete(uri, ProblemDetails, header);
|
|
45
45
|
return response;
|
|
46
46
|
}
|
|
@@ -58,11 +58,14 @@ export class RESTworldClient {
|
|
|
58
58
|
}
|
|
59
59
|
async getAllForms(resource) {
|
|
60
60
|
const urls = resource.getFormLinkHrefs();
|
|
61
|
-
const
|
|
62
|
-
const formsPromises = urls.map(url => this._halClient.get(url, FormsResource, ProblemDetails, header));
|
|
61
|
+
const formsPromises = urls.map(url => this.getForm(url));
|
|
63
62
|
const formsAndProblems = await Promise.all(formsPromises);
|
|
64
63
|
return formsAndProblems;
|
|
65
64
|
}
|
|
65
|
+
async getForm(url) {
|
|
66
|
+
const header = RestWorldClient.createHeaders('application/prs.hal-forms+json', this._options.Version);
|
|
67
|
+
return this._halClient.get(url, FormsResource, ProblemDetails, header);
|
|
68
|
+
}
|
|
66
69
|
getAllLinksFromHome() {
|
|
67
70
|
if (!this._homeResource)
|
|
68
71
|
throw new Error('Home resource is not set. Call ensureHomeResourceIsSet() first.');
|
|
@@ -143,8 +146,8 @@ export class RESTworldClient {
|
|
|
143
146
|
const link = new Link();
|
|
144
147
|
link.href = uri;
|
|
145
148
|
const filledUri = link.fillTemplate(parameters);
|
|
146
|
-
const defaultHeaders =
|
|
147
|
-
const combinedHeaders =
|
|
149
|
+
const defaultHeaders = RestWorldClient.createHeaders('application/hal+json', this._options.Version);
|
|
150
|
+
const combinedHeaders = RestWorldClient.combineHeaders(headers, defaultHeaders, false);
|
|
148
151
|
const response = await this.halClient.get(filledUri, PagedListResource, ProblemDetails, combinedHeaders);
|
|
149
152
|
return response;
|
|
150
153
|
}
|
|
@@ -152,28 +155,22 @@ export class RESTworldClient {
|
|
|
152
155
|
const link = new Link();
|
|
153
156
|
link.href = uri;
|
|
154
157
|
const filledUri = link.fillTemplate(parameters);
|
|
155
|
-
const defaultHeaders =
|
|
156
|
-
const combinedHeaders =
|
|
158
|
+
const defaultHeaders = RestWorldClient.createHeaders('text/csv', this._options.Version);
|
|
159
|
+
const combinedHeaders = RestWorldClient.combineHeaders(headers, defaultHeaders, false);
|
|
157
160
|
const response = await lastValueFrom(this.halClient.httpClient.get(filledUri, { headers: combinedHeaders, responseType: 'blob', observe: 'response' }));
|
|
158
161
|
return response;
|
|
159
162
|
}
|
|
160
|
-
async getSingle(
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
throw new Error('When supplying a rel, an ID must be supplied too.');
|
|
172
|
-
const link = this.getLinkFromHome(relOrUri, LinkNames.get, curie);
|
|
173
|
-
uri = link.fillTemplate({ id: id.toString() });
|
|
174
|
-
}
|
|
175
|
-
const defaultHeaders = RESTworldClient.createHeaders('application/hal+json', this._options.Version);
|
|
176
|
-
const combinedHeaders = RESTworldClient.combineHeaders(headers, defaultHeaders, false);
|
|
163
|
+
async getSingle(rel, id, headers, curie) {
|
|
164
|
+
if (!_.isNumber(id))
|
|
165
|
+
throw new Error('When supplying a rel, an ID must be supplied too.');
|
|
166
|
+
const link = this.getLinkFromHome(rel, LinkNames.get, curie);
|
|
167
|
+
const uri = link.fillTemplate({ id: id.toString() });
|
|
168
|
+
const response = this.getSingleByUri(uri, headers);
|
|
169
|
+
return response;
|
|
170
|
+
}
|
|
171
|
+
async getSingleByUri(uri, headers) {
|
|
172
|
+
const defaultHeaders = RestWorldClient.createHeaders('application/hal+json', this._options.Version);
|
|
173
|
+
const combinedHeaders = RestWorldClient.combineHeaders(headers, defaultHeaders, false);
|
|
177
174
|
const response = await this.halClient.get(uri, Resource, ProblemDetails, combinedHeaders);
|
|
178
175
|
return response;
|
|
179
176
|
}
|
|
@@ -185,7 +182,7 @@ export class RESTworldClient {
|
|
|
185
182
|
throw new Error(`The save link ${saveLink} does not have a save name.`);
|
|
186
183
|
const uri = saveLink.href;
|
|
187
184
|
const method = saveLink.name.toLowerCase();
|
|
188
|
-
const header =
|
|
185
|
+
const header = RestWorldClient.createHeaders('application/hal+json', this._options.Version);
|
|
189
186
|
let response;
|
|
190
187
|
switch (method) {
|
|
191
188
|
case 'put':
|
|
@@ -202,7 +199,7 @@ export class RESTworldClient {
|
|
|
202
199
|
async submit(template, formValues) {
|
|
203
200
|
const uri = template.target || '';
|
|
204
201
|
const method = template.method?.toLowerCase();
|
|
205
|
-
const header =
|
|
202
|
+
const header = RestWorldClient.createHeaders('application/prs.hal-forms+json', this._options.Version);
|
|
206
203
|
let response;
|
|
207
204
|
switch (method) {
|
|
208
205
|
case 'put':
|
|
@@ -228,7 +225,7 @@ export class RESTworldClient {
|
|
|
228
225
|
return fullRel;
|
|
229
226
|
}
|
|
230
227
|
async getHomeForced() {
|
|
231
|
-
const header =
|
|
228
|
+
const header = RestWorldClient.createHeaders('application/hal+json', this._options.Version);
|
|
232
229
|
const response = await this.halClient.get(this._options.BaseUrl, Resource, ProblemDetails, header);
|
|
233
230
|
return response;
|
|
234
231
|
}
|
|
@@ -267,5 +264,19 @@ export class RESTworldClient {
|
|
|
267
264
|
.filter(([name,]) => !skipDefaultTemplate || name !== 'default')
|
|
268
265
|
.map(([, template]) => this.setInitialSelectedOptionsElementsForTemplate(template)));
|
|
269
266
|
}
|
|
267
|
+
async deleteByTemplateAndForm(template, formGroup) {
|
|
268
|
+
const url = template.target;
|
|
269
|
+
if (url === undefined)
|
|
270
|
+
throw new Error("The target of the given template cannot be undefined.");
|
|
271
|
+
const timestamp = formGroup.value.timestamp;
|
|
272
|
+
return this.deleteByUrl(url, timestamp);
|
|
273
|
+
}
|
|
274
|
+
async deleteByUrl(url, timestamp) {
|
|
275
|
+
let header = RestWorldClient.createHeaders('application/hal+json', this._options.Version);
|
|
276
|
+
if (timestamp !== undefined)
|
|
277
|
+
header = header.append("ETag", timestamp);
|
|
278
|
+
const response = await this.halClient.delete(url, ProblemDetails, header);
|
|
279
|
+
return response;
|
|
280
|
+
}
|
|
270
281
|
}
|
|
271
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdHdvcmxkLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXN0d29ybGQtY2xpZW50L3NyYy9saWIvc2VydmljZXMvcmVzdHdvcmxkLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFnQixNQUFNLHNCQUFzQixDQUFDO0FBQ2pFLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxhQUFhLEVBQWEsSUFBSSxFQUFFLGlCQUFpQixFQUFZLFFBQVEsRUFBb0MsTUFBTSx5QkFBeUIsQ0FBQztBQUNsSixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFckMsTUFBTSxPQUFPLGVBQWU7SUFJMUIsWUFDVSxVQUFxQixFQUNyQixRQUEwQjtRQUQxQixlQUFVLEdBQVYsVUFBVSxDQUFXO1FBQ3JCLGFBQVEsR0FBUixRQUFRLENBQWtCO0lBQ2hDLENBQUM7SUFFTCxJQUFXLFNBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFTyxNQUFNLENBQUMsY0FBYyxDQUFDLGVBQXdDLEVBQUUsWUFBcUMsRUFBRSxpQkFBMEI7UUFDdkksSUFBSSxDQUFDLFlBQVk7WUFDZixPQUFPLGVBQWUsQ0FBQztRQUN6QixJQUFJLENBQUMsZUFBZTtZQUNsQixPQUFPLFlBQVksQ0FBQztRQUV0QixJQUFJLGVBQWUsR0FBRyxlQUFlLENBQUM7UUFFdEMsS0FBSyxNQUFNLEdBQUcsSUFBSSxZQUFZLENBQUMsSUFBSSxFQUFFO1lBQ25DLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLGlCQUFp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QUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2xHLE1BQU0sV0FBVyxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBRXBFLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRU8sS0FBSyxDQUFDLDZDQUE2QyxDQUFDLFNBQW9CLEVBQUUsbUJBQTRCO1FBQzVHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQzthQUN4QyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLG1CQUFtQixJQUFJLElBQUksS0FBSyxTQUFTLENBQUM7YUFDL0QsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsNENBQTRDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pGLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBIZWFkZXJzLCBIdHRwUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCAqIGFzIF8gZnJvbSBcImxvZGFzaFwiO1xyXG5pbXBvcnQgeyBGb3Jtc1Jlc291cmNlLCBIYWxDbGllbnQsIExpbmssIFBhZ2VkTGlzdFJlc291cmNlLCBQcm9wZXJ0eSwgUmVzb3VyY2UsIFJlc291cmNlRHRvLCBUZW1wbGF0ZSwgVGVtcGxhdGVzIH0gZnJvbSBcIkB3ZXJ0enVpL25neC1oYWwtY2xpZW50XCI7XHJcbmltcG9ydCB7IExpbmtOYW1lcyB9IGZyb20gXCIuLi9jb25zdGFudHMvbGluay1uYW1lc1wiO1xyXG5pbXBvcnQgeyBQcm9ibGVtRGV0YWlscyB9IGZyb20gXCIuLi9tb2RlbHMvcHJvYmxlbS1kZXRhaWxzXCI7XHJcbmltcG9ydCB7IFJFU1R3b3JsZE9wdGlvbnMgfSBmcm9tIFwiLi4vbW9kZWxzL3Jlc3R3b3JsZC1vcHRpb25zXCI7XHJcbmltcG9ydCB7IGxhc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcclxuXHJcbmV4cG9ydCBjbGFzcyBSRVNUd29ybGRDbGllbnQge1xyXG4gIHByaXZhdGUgX2RlZmF1bHRDdXJpZT86IHN0cmluZztcclxuICBwcml2YXRlIF9ob21lUmVzb3VyY2U/OiBSZXNvdXJjZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9oYWxDbGllbnQ6IEhhbENsaWVudCxcclxuICAgIHByaXZhdGUgX29wdGlvbnM6IFJFU1R3b3JsZE9wdGlvbnNcclxuICApIHsgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGhhbENsaWVudCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9oYWxDbGllbnQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBjb21iaW5lSGVhZGVycyhvcmlnaW5hbEhlYWRlcnM6IEh0dHBIZWFkZXJzIHwgdW5kZWZpbmVkLCBoZWFkZXJzVG9BZGQ6IEh0dHBIZWFkZXJzIHwgdW5kZWZpbmVkLCBvdmVyd3JpdGVFeGlzdGluZzogYm9vbGVhbikge1xyXG4gICAgaWYgKCFoZWFkZXJzVG9BZGQpXHJcbiAgICAgIHJldHVybiBvcmlnaW5hbEhlYWRlcnM7XHJcbiAgICBpZiAoIW9yaWdpbmFsSGVhZGVycylcclxuICAgICAgcmV0dXJuIGhlYWRlcnNUb0FkZDtcclxuXHJcbiAgICBsZXQgY29tYmluZWRIZWFkZXJzID0gb3JpZ2luYWxIZWFkZXJzO1xyXG5cclxuICAgIGZvciAoY29uc3Qga2V5IGluIGhlYWRlcnNUb0FkZC5rZXlzKSB7XHJcbiAgICAgIGlmICghY29tYmluZWRIZWFkZXJzLmhhcyhrZXkpIHx8IG92ZXJ3cml0ZUV4aXN0aW5nKSB7XHJcbiAgICAgICAgY29uc3QgaGVhZGVyVmFsdWVzVG9BZGQgPSBoZWFkZXJzVG9BZGQuZ2V0QWxsKGtleSk7XHJcbiAgICAgICAgaWYgKGhlYWRlclZhbHVlc1RvQWRkKVxyXG4gICAgICAgICAgY29tYmluZWRIZWFkZXJzID0gY29tYmluZWRIZWFkZXJzLnNldChrZXksIGhlYWRlclZhbHVlc1RvQWRkKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjb21iaW5lZEhlYWRlcnM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBjcmVhdGVIZWFkZXJzKG1lZGlhVHlwZT86ICdhcHBsaWNhdGlvbi9oYWwranNvbicgfCAnYXBwbGljYXRpb24vcHJzLmhhbC1mb3Jtcytqc29uJyB8ICd0ZXh0L2NzdicsIHZlcnNpb24/OiBudW1iZXIpOiBIdHRwSGVhZGVycyB7XHJcbiAgICBpZiAodmVyc2lvbilcclxuICAgICAgcmV0dXJuIG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICAgJ0FjY2VwdCc6IGAke21lZGlhVHlwZSB8fCAnYXBwbGljYXRpb24vaGFsK2pzb24nfTsgdj0ke3ZlcnNpb259YCxcclxuICAgICAgICAnQ29udGVudC1UeXBlJzogYCR7bWVkaWFUeXBlIHx8ICdhcHBsaWNhdGlvbi9oYWwranNvbid9OyB2PSR7dmVyc2lvbn1gXHJcbiAgICAgIH0pO1xyXG4gICAgcmV0dXJuIG5ldyBIdHRwSGVhZGVycygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGRlbGV0ZShyZXNvdXJjZTogUmVzb3VyY2UpOiBQcm9taXNlPEh0dHBSZXNwb25zZTx2b2lkIHwgUHJvYmxlbURldGFpbHM+PiB7XHJcbiAgICBjb25zdCBkZWxldGVMaW5rID0gcmVzb3VyY2UuZmluZExpbmsoJ2RlbGV0ZScpO1xyXG4gICAgaWYgKCFkZWxldGVMaW5rKVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSByZXNvdXJjZSAke3Jlc291cmNlfSBkb2VzIG5vdCBoYXZlIGEgZGVsZXRlIGxpbmsuYCk7XHJcbiAgICBjb25zdCB1cmkgPSBkZWxldGVMaW5rLmhyZWY7XHJcbiAgICBjb25zdCBoZWFkZXIgPSBSRVNUd29ybGRDbGllbnQuY3JlYXRlSGVhZGVycygnYXBwbGljYXRpb24vaGFsK2pzb24nLCB0aGlzLl9vcHRpb25zLlZlcnNpb24pO1xyXG5cclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5oYWxDbGllbnQuZGVsZXRlKHVyaSwgUHJvYmxlbURldGFpbHMsIGhlYWRlcik7XHJcblxyXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGVuc3VyZUhvbWVSZXNvdXJjZUlzU2V0KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKCF0aGlzLl9ob21lUmVzb3VyY2UpIHtcclxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmdldEhvbWVGb3JjZWQoKTtcclxuICAgICAgaWYgKFByb2JsZW1EZXRhaWxzLmlzUHJvYmxlbURldGFpbHMocmVzcG9uc2UuYm9keSkpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBnZXQgdGhlIGhvbWUgcmVzb3VyY2UgZnJvbSAke3RoaXMuX29wdGlvbnMuQmFzZVVybH0gd2l0aCBWZXJzaW9uICR7dGhpcy5fb3B0aW9ucy5WZXJzaW9ufS4gUmVzcG9uc2Ugd2FzOiAke3Jlc3BvbnNlfWApO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghcmVzcG9uc2UuYm9keSlcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBnZXQgdGhlIGhvbWUgcmVzb3VyY2UgZnJvbSAke3RoaXMuX29wdGlvbnMuQmFzZVVybH0gd2l0aCBWZXJzaW9uICR7dGhpcy5fb3B0aW9ucy5WZXJzaW9ufS4gUmVzcG9uc2Ugd2FzIGVtcHR5LmApO1xyXG4gICAgICB0aGlzLl9ob21lUmVzb3VyY2UgPSByZXNwb25zZS5ib2R5O1xyXG4gICAgICB0aGlzLnNldERlZmF1bHRDdXJpZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldEFsbEZvcm1zKHJlc291cmNlOiBSZXNvdXJjZSk6IFByb21pc2U8SHR0cFJlc3BvbnNlPEZvcm1zUmVzb3VyY2UgfCBQcm9ibGVtRGV0YWlscz5bXT4ge1xyXG4gICAgY29uc3QgdXJscyA9IHJlc291cmNlLmdldEZvcm1MaW5rSHJlZnMoKTtcclxuICAgIGNvbnN0IGhlYWRlciA9IFJFU1R3b3JsZENsaWVudC5jcmVhdGVIZWFkZXJzKCdhcHBsaWNhdGlvbi9wcnMuaGFsLWZvcm1zK2pzb24nLCB0aGlzLl9vcHRpb25zLlZlcnNpb24pO1xyXG4gICAgY29uc3QgZm9ybXNQcm9taXNlcyA9IHVybHMubWFwKHVybCA9PiB0aGlzLl9oYWxDbGllbnQuZ2V0KHVybCwgRm9ybXNSZXNvdXJjZSwgUHJvYmxlbURldGFpbHMsIGhlYWRlcikpO1xyXG4gICAgY29uc3QgZm9ybXNBbmRQcm9ibGVtcyA9IGF3YWl0IFByb21pc2UuYWxsKGZvcm1zUHJvbWlzZXMpO1xyXG4gICAgcmV0dXJuIGZvcm1zQW5kUHJvYmxlbXM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0QWxsTGlua3NGcm9tSG9tZSgpOiB7IFtyZWw6IHN0cmluZ106IExpbmtbXSB8IHVuZGVmaW5lZDsgfSB7XHJcbiAgICBpZiAoIXRoaXMuX2hvbWVSZXNvdXJjZSlcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdIb21lIHJlc291cmNlIGlzIG5vdCBzZXQuIENhbGwgZW5zdXJlSG9tZVJlc291cmNlSXNTZXQoKSBmaXJzdC4nKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5faG9tZVJlc291cmNlLl9saW5rcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRBbGxQYWdlc0Zyb21MaXN0PFRMaXN0RHRvIGV4dGVuZHMgUmVzb3VyY2VEdG8+KHJlbDogc3RyaW5nLCBwYXJhbWV0ZXJzOiB7fSwgaGVhZGVycz86IEh0dHBIZWFkZXJzLCBjdXJpZT86IHN0cmluZyk6IFByb21pc2U8SHR0cFJlc3BvbnNlPFBhZ2VkTGlzdFJlc291cmNlPFRMaXN0RHRvPiB8IFByb2JsZW1EZXRhaWxzPj4ge1xyXG4gICAgY29uc3QgbGluayA9IHRoaXMuZ2V0TGlua0Zyb21Ib21lKHJlbCwgTGlua05hbWVzLmdldExpc3QsIGN1cmllKTtcclxuICAgIGNvbnN0IHVyaSA9IGxpbmsuaHJlZjtcclxuXHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuZ2V0QWxsUGFnZXNGcm9tTGlzdEJ5VXJpPFRMaXN0RHRvPih1cmksIHBhcmFtZXRlcnMsIGhlYWRlcnMpO1xyXG5cclxuICAgIHJldHVybiByZXNwb25zZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRBbGxQYWdlc0Zyb21MaXN0QnlVcmk8VExpc3REdG8gZXh0ZW5kcyBSZXNvdXJjZUR0bz4odXJpOiBzdHJpbmcsIHBhcmFtZXRlcnM6IHt9LCBoZWFkZXJzPzogSHR0cEhlYWRlcnMpOiBQcm9taXNlPEh0dHBSZXNwb25zZTxQYWdlZExpc3RSZXNvdXJjZTxUTGlzdER0bz4gfCBQcm9ibGVtRGV0YWlscz4+IHtcclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5nZXRMaXN0QnlVcmk8VExpc3REdG8+KHVyaSwgcGFyYW1ldGVycywgaGVhZGVycyk7XHJcblxyXG4gICAgaWYgKCFyZXNwb25zZS5vayB8fCBQcm9ibGVtRGV0YWlscy5pc1Byb2JsZW1EZXRhaWxzKHJlc3BvbnNlLmJvZHkpIHx8ICFyZXNwb25zZS5ib2R5Py5fZW1iZWRkZWQ/Lml0ZW1zKVxyXG4gICAgICByZXR1cm4gcmVzcG9uc2U7XHJcblxyXG4gICAgY29uc3QgaXRlbXMgPSByZXNwb25zZS5ib2R5Ll9lbWJlZGRlZC5pdGVtcztcclxuICAgIGxldCBsYXN0UmVzcG9uc2UgPSByZXNwb25zZTtcclxuXHJcbiAgICB3aGlsZSAoKGxhc3RSZXNwb25zZT8uYm9keT8uX2xpbmtzPy5uZXh0Py5sZW5ndGggPz8gMCkgPiAwKSB7XHJcbiAgICAgIC8vIEdldCB0aGUgbmV4dCByZXNwb25zZVxyXG4gICAgICBjb25zdCBuZXh0TGlua3MgPSBsYXN0UmVzcG9uc2UuYm9keT8uX2xpbmtzLm5leHQ7XHJcbiAgICAgIGNvbnN0IG5leHRMaW5rID0gbmV4dExpbmtzID8gbmV4dExpbmtzWzBdOiB1bmRlZmluZWQ7XHJcbiAgICAgIGNvbnN0IG5leHRIcmVmID0gbmV4dExpbms/LmhyZWY7XHJcbiAgICAgIGlmIChuZXh0SHJlZikge1xyXG4gICAgICAgIGxhc3RSZXNwb25zZSA9IGF3YWl0IHRoaXMuZ2V0TGlzdEJ5VXJpPFRMaXN0RHRvPihuZXh0SHJlZiwgcGFyYW1ldGVycywgaGVhZGVycyk7XHJcblxyXG4gICAgICAgIGlmICghbGFzdFJlc3BvbnNlLm9rIHx8IFByb2JsZW1EZXRhaWxzLmlzUHJvYmxlbURldGFpbHMobGFzdFJlc3BvbnNlLmJvZHkpIHx8ICFsYXN0UmVzcG9uc2UuYm9keSlcclxuICAgICAgICAgIHJldHVybiBsYXN0UmVzcG9uc2U7XHJcblxyXG4gICAgICAgIC8vIENvbWJpbmUgdGhlIGVtYmVkZGVkIGl0ZW1zXHJcbiAgICAgICAgbGFzdFJlc3BvbnNlLmJvZHk/Ll9lbWJlZGRlZD8uaXRlbXM/LmZvckVhY2gociA9PiBpdGVtcy5wdXNoKHIpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFdlIGNvbWJpbmVkIGV2ZXJ5dGhpbmcsIHNvIHRoZXJlIGlzIGp1c3Qgb25lIGJpZyBwYWdlXHJcbiAgICByZXNwb25zZS5ib2R5LnRvdGFsUGFnZXMgPSAxO1xyXG4gICAgcmVzcG9uc2UuYm9keS5fbGlua3MubmV4dCA9IHVuZGVmaW5lZDtcclxuXHJcbiAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0QWxsVGVtcGxhdGVzKHJlc291cmNlOiBSZXNvdXJjZSk6IFByb21pc2U8VGVtcGxhdGVzPiB7XHJcbiAgICBjb25zdCBmb3JtUmVzcG9uc2VzID0gYXdhaXQgdGhpcy5nZXRBbGxGb3JtcyhyZXNvdXJjZSk7XHJcblxyXG4gICAgY29uc3QgZmFpbGVkUmVzcG9uc2VzID0gZm9ybVJlc3BvbnNlcy5maWx0ZXIocmVzcG9uc2UgPT4gIXJlc3BvbnNlLm9rIHx8IFByb2JsZW1EZXRhaWxzLmlzUHJvYmxlbURldGFpbHMocmVzcG9uc2UuYm9keSkgfHwgIXJlc3BvbnNlLmJvZHkpO1xyXG4gICAgaWYgKGZhaWxlZFJlc3BvbnNlcy5sZW5ndGggIT09IDApIHtcclxuICAgICAgZm9yIChjb25zdCByZXNwb25zZSBvZiBmYWlsZWRSZXNwb25zZXMpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIHdoaWxlIGxvYWRpbmcgdGhlIHJlc3BvbnNlIGZyb20gJHtyZXNwb25zZS51cmx9LCBTdGF0dXMgJHtyZXNwb25zZS5zdGF0dXN9IC0gJHtyZXNwb25zZS5zdGF0dXNUZXh0fSwgQ29udGVudDogJHtyZXNwb25zZS5ib2R5fWApO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe30pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZvcm1UZW1wbGF0ZXMgPSBPYmplY3QuYXNzaWduKHt9LCAuLi5mb3JtUmVzcG9uc2VzLm1hcChyZXNwb25zZSA9PiAocmVzcG9uc2UuYm9keSBhcyBGb3Jtc1Jlc291cmNlKS5fdGVtcGxhdGVzKSkgYXMgVGVtcGxhdGVzO1xyXG5cclxuICAgIGF3YWl0IHRoaXMuc2V0SW5pdGlhbFNlbGVjdGVkT3B0aW9uc0VsZW1lbnRzRm9yVGVtcGxhdGVzKGZvcm1UZW1wbGF0ZXMsIGZhbHNlKTtcclxuXHJcbiAgICByZXR1cm4gZm9ybVRlbXBsYXRlcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRMaW5rRnJvbUhvbWUocmVsOiBzdHJpbmcsIG5hbWU/OiBzdHJpbmcsIGN1cmllPzogc3RyaW5nKTogTGluayB7XHJcbiAgICBjb25zdCBsaW5rcyA9IHRoaXMuZ2V0TGlua3NGcm9tSG9tZShyZWwsIGN1cmllKTtcclxuXHJcbiAgICBjb25zdCBsaW5rID0gbmFtZSA/IGxpbmtzLmZpbmQobCA9PiBsLm5hbWUgPT09IG5hbWUpIDogbGlua3NbMF07XHJcblxyXG4gICAgaWYgKCFsaW5rKVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBob21lIHJlc291cmNlIGRvZXMgbm90IGhhdmUgYSBsaW5rIHdpdGggdGhlIHJlbCAnJHt0aGlzLmdldEZ1bGxSZWwocmVsLCBjdXJpZSl9JyBhbmQgdGhlIG5hbWUgJyR7bmFtZX0nLmApO1xyXG5cclxuICAgIHJldHVybiBsaW5rO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldExpbmtzRnJvbUhvbWUocmVsOiBzdHJpbmcsIGN1cmllPzogc3RyaW5nKTogTGlua1tdIHtcclxuICAgIGlmICghdGhpcy5faG9tZVJlc291cmNlKVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0hvbWUgcmVzb3VyY2UgaXMgbm90IHNldC4gQ2FsbCBlbnN1cmVIb21lUmVzb3VyY2VJc1NldCgpIGZpcnN0LicpO1xyXG5cclxuICAgIGNvbnN0IGZ1bGxSZWwgPSB0aGlzLmdldEZ1bGxSZWwocmVsLCBjdXJpZSk7XHJcbiAgICBjb25zdCBsaW5rcyA9IHRoaXMuX2hvbWVSZXNvdXJjZS5fbGlua3NbZnVsbFJlbF07XHJcbiAgICBpZiAoIWxpbmtzIHx8IGxpbmtzLmxlbmd0aCA9PT0gMClcclxuICAgICAgdGhyb3cgRXJyb3IoYFRoZSBob21lIHJlc291cmNlIGRvZXMgbm90IGhhdmUgYSBsaW5rIHdpdGggdGhlIHJlbCAnJHtmdWxsUmVsfScuYCk7XHJcblxyXG4gICAgcmV0dXJuIGxpbmtzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldExpc3Q8VExpc3REdG8gZXh0ZW5kcyBSZXNvdXJjZUR0bz4ocmVsOiBzdHJpbmcsIHBhcmFtZXRlcnM6IHt9LCBoZWFkZXJzPzogSHR0cEhlYWRlcnMsIGN1cmllPzogc3RyaW5nKTogUHJvbWlzZTxIdHRwUmVzcG9uc2U8UGFnZWRMaXN0UmVzb3VyY2U8VExpc3REdG8+IHwgUHJvYmxlbURldGFpbHM+PiB7XHJcbiAgICBjb25zdCBsaW5rID0gdGhpcy5nZXRMaW5rRnJvbUhvbWUocmVsLCBMaW5rTmFtZXMuZ2V0TGlzdCwgY3VyaWUpO1xyXG4gICAgY29uc3QgdXJpID0gbGluay5ocmVmXHJcblxyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmdldExpc3RCeVVyaTxUTGlzdER0bz4odXJpLCBwYXJhbWV0ZXJzLCBoZWFkZXJzKTtcclxuXHJcbiAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0TGlzdEFzQ3N2KHJlbDogc3RyaW5nLCBwYXJhbWV0ZXJzOiB7fSwgaGVhZGVycz86IEh0dHBIZWFkZXJzLCBjdXJpZT86IHN0cmluZyk6IFByb21pc2U8SHR0cFJlc3BvbnNlPEJsb2I+IHwgdW5kZWZpbmVkPiB7XHJcbiAgICBjb25zdCBsaW5rID0gdGhpcy5nZXRMaW5rRnJvbUhvbWUocmVsLCBMaW5rTmFtZXMuZ2V0TGlzdCwgY3VyaWUpO1xyXG4gICAgY29uc3QgdXJpID0gbGluay5ocmVmO1xyXG5cclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5nZXRMaXN0QnlVcmlBc0Nzdih1cmksIHBhcmFtZXRlcnMsIGhlYWRlcnMpO1xyXG5cclxuICAgIHJldHVybiByZXNwb25zZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRMaXN0QnlVcmk8VExpc3REdG8gZXh0ZW5kcyBSZXNvdXJjZUR0bz4odXJpOiBzdHJpbmcsIHBhcmFtZXRlcnM6IHt9LCBoZWFkZXJzPzogSHR0cEhlYWRlcnMpOiBQcm9taXNlPEh0dHBSZXNwb25zZTxQYWdlZExpc3RSZXNvdXJjZTxUTGlzdER0bz4gfCBQcm9ibGVtRGV0YWlscz4+IHtcclxuICAgIGNvbnN0IGxpbmsgPSBuZXcgTGluaygpO1xyXG4gICAgbGluay5ocmVmID0gdXJpO1xyXG4gICAgY29uc3QgZmlsbGVkVXJpID0gbGluay5maWxsVGVtcGxhdGUocGFyYW1ldGVycyk7XHJcbiAgICBjb25zdCBkZWZhdWx0SGVhZGVycyA9IFJFU1R3b3JsZENsaWVudC5jcmVhdGVIZWFkZXJzKCdhcHBsaWNhdGlvbi9oYWwranNvbicsIHRoaXMuX29wdGlvbnMuVmVyc2lvbik7XHJcbiAgICBjb25zdCBjb21iaW5lZEhlYWRlcnMgPSBSRVNUd29ybGRDbGllbnQuY29tYmluZUhlYWRlcnMoaGVhZGVycywgZGVmYXVsdEhlYWRlcnMsIGZhbHNlKTtcclxuXHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaGFsQ2xpZW50LmdldDxQYWdlZExpc3RSZXNvdXJjZTxUTGlzdER0bz4sIFByb2JsZW1EZXRhaWxzPihmaWxsZWRVcmksIFBhZ2VkTGlzdFJlc291cmNlLCBQcm9ibGVtRGV0YWlscywgY29tYmluZWRIZWFkZXJzKTtcclxuXHJcbiAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0TGlzdEJ5VXJpQXNDc3YodXJpOiBzdHJpbmcsIHBhcmFtZXRlcnM6IHt9LCBoZWFkZXJzPzogSHR0cEhlYWRlcnMpOiBQcm9taXNlPEh0dHBSZXNwb25zZTxCbG9iPiB8IHVuZGVmaW5lZD4ge1xyXG4gICAgY29uc3QgbGluayA9IG5ldyBMaW5rKCk7XHJcbiAgICBsaW5rLmhyZWYgPSB1cmk7XHJcbiAgICBjb25zdCBmaWxsZWRVcmkgPSBsaW5rLmZpbGxUZW1wbGF0ZShwYXJhbWV0ZXJzKTtcclxuICAgIGNvbnN0IGRlZmF1bHRIZWFkZXJzID0gUkVTVHdvcmxkQ2xpZW50LmNyZWF0ZUhlYWRlcnMoJ3RleHQvY3N2JywgdGhpcy5fb3B0aW9ucy5WZXJzaW9uKTtcclxuICAgIGNvbnN0IGNvbWJpbmVkSGVhZGVycyA9IFJFU1R3b3JsZENsaWVudC5jb21iaW5lSGVhZGVycyhoZWFkZXJzLCBkZWZhdWx0SGVhZGVycywgZmFsc2UpO1xyXG5cclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgbGFzdFZhbHVlRnJvbSh0aGlzLmhhbENsaWVudC5odHRwQ2xpZW50LmdldChmaWxsZWRVcmksIHsgaGVhZGVyczogY29tYmluZWRIZWFkZXJzLCByZXNwb25zZVR5cGU6ICdibG9iJywgb2JzZXJ2ZTogJ3Jlc3BvbnNlJyB9KSk7XHJcblxyXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldFNpbmdsZShyZWxPclVyaTogc3RyaW5nLCBpZD86IG51bWJlciwgaGVhZGVycz86IEh0dHBIZWFkZXJzLCBjdXJpZT86IHN0cmluZyk6IFByb21pc2U8SHR0cFJlc3BvbnNlPFJlc291cmNlIHwgUHJvYmxlbURldGFpbHM+PiB7XHJcbiAgICBsZXQgdXJpO1xyXG4gICAgaWYgKHJlbE9yVXJpLnN0YXJ0c1dpdGgoJ2h0dHAnKSkge1xyXG4gICAgICBpZiAoaWQgIT09IHVuZGVmaW5lZClcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1doZW4gc3VwcGx5aW5nIGEgVVJJLCBhbiBJRCBjYW5ub3QgYmUgc3VwcGxpZWQgdG9vLicpO1xyXG4gICAgICBpZiAoY3VyaWUpXHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdXaGVuIHN1cHBseWluZyBhIFVSSSwgYSBjdXJpZSBjYW5ub3QgYmUgc3VwcGxpZWQgdG9vLicpO1xyXG5cclxuICAgICAgdXJpID0gcmVsT3JVcmk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKCFfLmlzTnVtYmVyKGlkKSlcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1doZW4gc3VwcGx5aW5nIGEgcmVsLCBhbiBJRCBtdXN0IGJlIHN1cHBsaWVkIHRvby4nKTtcclxuXHJcbiAgICAgIGNvbnN0IGxpbmsgPSB0aGlzLmdldExpbmtGcm9tSG9tZShyZWxPclVyaSwgTGlua05hbWVzLmdldCwgY3VyaWUpO1xyXG4gICAgICB1cmkgPSBsaW5rLmZpbGxUZW1wbGF0ZSh7IGlkOiBpZC50b1N0cmluZygpIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGRlZmF1bHRIZWFkZXJzID0gUkVTVHdvcmxkQ2xpZW50LmNyZWF0ZUhlYWRlcnMoJ2FwcGxpY2F0aW9uL2hhbCtqc29uJywgdGhpcy5fb3B0aW9ucy5WZXJzaW9uKTtcclxuICAgIGNvbnN0IGNvbWJpbmVkSGVhZGVycyA9IFJFU1R3b3JsZENsaWVudC5jb21iaW5lSGVhZGVycyhoZWFkZXJzLCBkZWZhdWx0SGVhZGVycywgZmFsc2UpO1xyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmhhbENsaWVudC5nZXQodXJpLCBSZXNvdXJjZSwgUHJvYmxlbURldGFpbHMsIGNvbWJpbmVkSGVhZGVycyk7XHJcblxyXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHNhdmUocmVzb3VyY2U6IFJlc291cmNlKTogUHJvbWlzZTxIdHRwUmVzcG9uc2U8UmVzb3VyY2UgfCBQcm9ibGVtRGV0YWlscz4+IHtcclxuICAgIGNvbnN0IHNhdmVMaW5rID0gcmVzb3VyY2UuZmluZExpbmsoJ3NhdmUnKTtcclxuICAgIGlmICghc2F2ZUxpbmspXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIHJlc291cmNlICR7cmVzb3VyY2V9IGRvZXMgbm90IGhhdmUgYSBzYXZlIGxpbmsuYCk7XHJcbiAgICBpZiAoIXNhdmVMaW5rLm5hbWUpXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIHNhdmUgbGluayAke3NhdmVMaW5rfSBkb2VzIG5vdCBoYXZlIGEgc2F2ZSBuYW1lLmApO1xyXG5cclxuICAgIGNvbnN0IHVyaSA9IHNhdmVMaW5rLmhyZWY7XHJcbiAgICBjb25zdCBtZXRob2QgPSBzYXZlTGluay5uYW1lLnRvTG93ZXJDYXNlKCk7XHJcbiAgICBjb25zdCBoZWFkZXIgPSBSRVNUd29ybGRDbGllbnQuY3JlYXRlSGVhZGVycygnYXBwbGljYXRpb24vaGFsK2pzb24nLCB0aGlzLl9vcHRpb25zLlZlcnNpb24pO1xyXG5cclxuICAgIGxldCByZXNwb25zZTtcclxuICAgIHN3aXRjaCAobWV0aG9kKSB7XHJcbiAgICAgIGNhc2UgJ3B1dCc6XHJcbiAgICAgICAgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmhhbENsaWVudC5wdXQodXJpLCByZXNvdXJjZSwgUmVzb3VyY2UsIFByb2JsZW1EZXRhaWxzLCBoZWFkZXIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdwb3N0JzpcclxuICAgICAgICByZXNwb25zZSA9IGF3YWl0IHRoaXMuaGFsQ2xpZW50LnBvc3QodXJpLCByZXNvdXJjZSwgUmVzb3VyY2UsIFByb2JsZW1EZXRhaWxzLCBoZWFkZXIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJyR7bWV0aG9kfScgaXMgbm90IGFsbG93ZWQgYXMgbGluayBuYW1lIGZvciB0aGUgc2F2ZSBsaW5rLiBPbmx5ICdQT1NUJyBhbmQgJ1BVVCcgYXJlIGFsbG93ZWQuYCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHN1Ym1pdCh0ZW1wbGF0ZTogVGVtcGxhdGUsIGZvcm1WYWx1ZXM6IHt9KTogUHJvbWlzZTxIdHRwUmVzcG9uc2U8Rm9ybXNSZXNvdXJjZSB8IFByb2JsZW1EZXRhaWxzPj4ge1xyXG4gICAgY29uc3QgdXJpID0gdGVtcGxhdGUudGFyZ2V0IHx8ICcnO1xyXG4gICAgY29uc3QgbWV0aG9kID0gdGVtcGxhdGUubWV0aG9kPy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgY29uc3QgaGVhZGVyID0gUkVTVHdvcmxkQ2xpZW50LmNyZWF0ZUhlYWRlcnMoJ2FwcGxpY2F0aW9uL3Bycy5oYWwtZm9ybXMranNvbicsIHRoaXMuX29wdGlvbnMuVmVyc2lvbik7XHJcblxyXG4gICAgbGV0IHJlc3BvbnNlO1xyXG4gICAgc3dpdGNoIChtZXRob2QpIHtcclxuICAgICAgY2FzZSAncHV0JzpcclxuICAgICAgICByZXNwb25zZSA9IGF3YWl0IHRoaXMuaGFsQ2xpZW50LnB1dCh1cmksIGZvcm1WYWx1ZXMsIEZvcm1zUmVzb3VyY2UsIFByb2JsZW1EZXRhaWxzLCBoZWFkZXIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdwb3N0JzpcclxuICAgICAgICByZXNwb25zZSA9IGF3YWl0IHRoaXMuaGFsQ2xpZW50LnBvc3QodXJpLCBmb3JtVmFsdWVzLCBGb3Jtc1Jlc291cmNlLCBQcm9ibGVtRGV0YWlscywgaGVhZGVyKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXNwb25zZSA9IGF3YWl0IHRoaXMuaGFsQ2xpZW50LmdldCh1cmksIEZvcm1zUmVzb3VyY2UsIFByb2JsZW1EZXRhaWxzLCBoZWFkZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXNwb25zZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RnVsbFJlbChyZWw6IHN0cmluZywgY3VyaWU/OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgLy8gcmVsIGFscmVhZHkgaW5jbHVkZXMgYSBjdXJpZSA9PiBqdXN0IHJldHVybiBpdFxyXG4gICAgaWYgKHJlbC5pbmNsdWRlcygnOicpKVxyXG4gICAgICByZXR1cm4gcmVsO1xyXG5cclxuICAgIC8vIE5vIGN1cmllIGdpdmVuID0+IHVzZSBkZWZhdWx0IGN1cmllLlxyXG4gICAgaWYgKCFjdXJpZSlcclxuICAgICAgY3VyaWUgPSB0aGlzLl9kZWZhdWx0Q3VyaWU7XHJcblxyXG4gICAgLy8gQ29tYmluZSBjdXJpZSBhbmQgcmVsXHJcbiAgICBjb25zdCBmdWxsUmVsID0gYCR7Y3VyaWV9OiR7cmVsfWA7XHJcblxyXG4gICAgcmV0dXJuIGZ1bGxSZWw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGdldEhvbWVGb3JjZWQoKTogUHJvbWlzZTxIdHRwUmVzcG9uc2U8UmVzb3VyY2UgfCBQcm9ibGVtRGV0YWlscz4+IHtcclxuICAgIGNvbnN0IGhlYWRlciA9IFJFU1R3b3JsZENsaWVudC5jcmVhdGVIZWFkZXJzKCdhcHBsaWNhdGlvbi9oYWwranNvbicsIHRoaXMuX29wdGlvbnMuVmVyc2lvbik7XHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaGFsQ2xpZW50LmdldCh0aGlzLl9vcHRpb25zLkJhc2VVcmwsIFJlc291cmNlLCBQcm9ibGVtRGV0YWlscywgaGVhZGVyKTtcclxuICAgIHJldHVybiByZXNwb25zZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0RGVmYXVsdEN1cmllKCk6IHZvaWQge1xyXG4gICAgY29uc3QgY3VyaWVzID0gdGhpcy5faG9tZVJlc291cmNlPy5fbGlua3M/LmN1cmllcztcclxuICAgIGlmICghY3VyaWVzIHx8IGN1cmllcy5sZW5ndGggPT09IDAgfHwgIWN1cmllc1swXSlcclxuICAgICAgdGhpcy5fZGVmYXVsdEN1cmllID0gdW5kZWZpbmVkO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLl9kZWZhdWx0Q3VyaWUgPSBjdXJpZXNbMF0ubmFtZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgc2V0SW5pdGlhbFNlbGVjdGVkT3B0aW9uc0VsZW1lbnRGb3JQcm9wZXJ0eShwcm9wZXJ0eTogUHJvcGVydHkpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSBwcm9wZXJ0eT8ub3B0aW9ucztcclxuXHJcbiAgICBpZiAoIW9wdGlvbnM/Lmxpbms/LmhyZWYpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBjb25zdCB0ZW1wbGF0ZWRVcmkgPSBvcHRpb25zLmxpbmsuaHJlZjtcclxuICAgIGNvbnN0IGZpbHRlciA9IGAke29wdGlvbnMudmFsdWVGaWVsZH0gZXEgJHtwcm9wZXJ0eS52YWx1ZX1gO1xyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmdldExpc3RCeVVyaSh0ZW1wbGF0ZWRVcmksIHsgJGZpbHRlcjogZmlsdGVyLCAkdG9wOiAxMCB9KTtcclxuICAgIGlmICghcmVzcG9uc2Uub2sgfHwgUHJvYmxlbURldGFpbHMuaXNQcm9ibGVtRGV0YWlscyhyZXNwb25zZS5ib2R5KSB8fCAhcmVzcG9uc2UuYm9keSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEFuIGVycm9yIG9jY3VycmVkIHdoaWxlIGdldHRpbmcgdGhlIGZpbHRlcmVkIGl0ZW1zIGZyb20gJHtyZXNwb25zZS51cmx9LCBTdGF0dXMgJHtyZXNwb25zZS5zdGF0dXN9IC0gJHtyZXNwb25zZS5zdGF0dXNUZXh0fSwgQ29udGVudDogJHtyZXNwb25zZS5ib2R5fWApO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGl0ZW1zID0gcmVzcG9uc2UuYm9keS5fZW1iZWRkZWQuaXRlbXM7XHJcbiAgICBvcHRpb25zLmlubGluZSA9IGl0ZW1zO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBzZXRJbml0aWFsU2VsZWN0ZWRPcHRpb25zRWxlbWVudHNGb3JUZW1wbGF0ZSh0ZW1wbGF0ZTogVGVtcGxhdGUpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IHByb3BlcnR5UHJvbWlzZXMgPSB0ZW1wbGF0ZS5wcm9wZXJ0aWVzXHJcbiAgICAgIC5maWx0ZXIocHJvcGVydHkgPT4gcHJvcGVydHk/Lm9wdGlvbnM/Lmxpbms/LmhyZWYpXHJcbiAgICAgIC5tYXAocHJvcGVydHkgPT4gdGhpcy5zZXRJbml0aWFsU2VsZWN0ZWRPcHRpb25zRWxlbWVudEZvclByb3BlcnR5KHByb3BlcnR5KSk7XHJcbiAgICBjb25zdCBuZXN0ZWRUZW1wbGF0ZVByb21pc2VkID0gdGVtcGxhdGUucHJvcGVydGllc1xyXG4gICAgICAuZmlsdGVyKHByb3BlcnR5ID0+IHByb3BlcnR5Py5fdGVtcGxhdGVzKVxyXG4gICAgICAubWFwKHByb3BlcnR5ID0+IHRoaXMuc2V0SW5pdGlhbFNlbGVjdGVkT3B0aW9uc0VsZW1lbnRzRm9yVGVtcGxhdGVzKHByb3BlcnR5Ll90ZW1wbGF0ZXMsIHRydWUpKTtcclxuICAgIGNvbnN0IGFsbFByb21pc2VzID0gcHJvcGVydHlQcm9taXNlcy5jb25jYXQobmVzdGVkVGVtcGxhdGVQcm9taXNlZCk7XHJcblxyXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoYWxsUHJvbWlzZXMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBzZXRJbml0aWFsU2VsZWN0ZWRPcHRpb25zRWxlbWVudHNGb3JUZW1wbGF0ZXModGVtcGxhdGVzOiBUZW1wbGF0ZXMsIHNraXBEZWZhdWx0VGVtcGxhdGU6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGF3YWl0IFByb21pc2UuYWxsKE9iamVjdC5lbnRyaWVzKHRlbXBsYXRlcylcclxuICAgICAgLmZpbHRlcigoW25hbWUsXSkgPT4gIXNraXBEZWZhdWx0VGVtcGxhdGUgfHwgbmFtZSAhPT0gJ2RlZmF1bHQnKVxyXG4gICAgICAubWFwKChbLCB0ZW1wbGF0ZV0pID0+IHRoaXMuc2V0SW5pdGlhbFNlbGVjdGVkT3B0aW9uc0VsZW1lbnRzRm9yVGVtcGxhdGUodGVtcGxhdGUpKSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
282
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdHdvcmxkLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXN0d29ybGQtY2xpZW50L3NyYy9saWIvc2VydmljZXMvcmVzdHdvcmxkLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFnQixNQUFNLHNCQUFzQixDQUFDO0FBQ2pFLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxhQUFhLEVBQWEsSUFBSSxFQUFFLGlCQUFpQixFQUFZLFFBQVEsRUFBb0MsTUFBTSx5QkFBeUIsQ0FBQztBQUNsSixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHckMsTUFBTSxPQUFPLGVBQWU7SUFJMUIsWUFDVSxVQUFxQixFQUNyQixRQUEwQjtRQUQxQixlQUFVLEdBQVYsVUFBVSxDQUFXO1FBQ3JCLGFBQVEsR0FBUixRQUFRLENBQWtCO0lBQ2hDLENBQUM7SUFFTCxJQUFXLFNBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFTyxNQUFNLENBQUMsY0FBYyxDQUFDLGVBQXdDLEVBQUUsWUFBcUMsRUFBRSxpQkFBMEI7UUFDdkksSUFBSSxDQUFDLFlBQVk7WUFDZixPQUFPLGVBQWUsQ0FBQztRQUN6QixJQUFJLENBQUMsZUFBZTtZQUNsQixPQUFPLFlBQVksQ0FBQztRQUV0QixJQUFJLGVBQWUsR0FBRyxlQUFlLENBQUM7UUFFdEMsS0FBSyxNQUFNLEdBQUcsSUFBSSxZQUFZLENBQUMsSUFBSSxFQUFFO1lBQ25DLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLGlCQUFp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Q0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRTVDLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLGNBQWMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUUxRSxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwSGVhZGVycywgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgKiBhcyBfIGZyb20gXCJsb2Rhc2hcIjtcclxuaW1wb3J0IHsgRm9ybXNSZXNvdXJjZSwgSGFsQ2xpZW50LCBMaW5rLCBQYWdlZExpc3RSZXNvdXJjZSwgUHJvcGVydHksIFJlc291cmNlLCBSZXNvdXJjZUR0bywgVGVtcGxhdGUsIFRlbXBsYXRlcyB9IGZyb20gXCJAd2VydHp1aS9uZ3gtaGFsLWNsaWVudFwiO1xyXG5pbXBvcnQgeyBMaW5rTmFtZXMgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2xpbmstbmFtZXNcIjtcclxuaW1wb3J0IHsgUHJvYmxlbURldGFpbHMgfSBmcm9tIFwiLi4vbW9kZWxzL3Byb2JsZW0tZGV0YWlsc1wiO1xyXG5pbXBvcnQgeyBSZXN0V29ybGRPcHRpb25zIH0gZnJvbSBcIi4uL21vZGVscy9yZXN0d29ybGQtb3B0aW9uc1wiO1xyXG5pbXBvcnQgeyBsYXN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFJlc3RXb3JsZENsaWVudCB7XHJcbiAgcHJpdmF0ZSBfZGVmYXVsdEN1cmllPzogc3RyaW5nO1xyXG4gIHByaXZhdGUgX2hvbWVSZXNvdXJjZT86IFJlc291cmNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2hhbENsaWVudDogSGFsQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBfb3B0aW9uczogUmVzdFdvcmxkT3B0aW9uc1xyXG4gICkgeyB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaGFsQ2xpZW50KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2hhbENsaWVudDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGNvbWJpbmVIZWFkZXJzKG9yaWdpbmFsSGVhZGVyczogSHR0cEhlYWRlcnMgfCB1bmRlZmluZWQsIGhlYWRlcnNUb0FkZDogSHR0cEhlYWRlcnMgfCB1bmRlZmluZWQsIG92ZXJ3cml0ZUV4aXN0aW5nOiBib29sZWFuKSB7XHJcbiAgICBpZiAoIWhlYWRlcnNUb0FkZClcclxuICAgICAgcmV0dXJuIG9yaWdpbmFsSGVhZGVycztcclxuICAgIGlmICghb3JpZ2luYWxIZWFkZXJzKVxyXG4gICAgICByZXR1cm4gaGVhZGVyc1RvQWRkO1xyXG5cclxuICAgIGxldCBjb21iaW5lZEhlYWRlcnMgPSBvcmlnaW5hbEhlYWRlcnM7XHJcblxyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gaGVhZGVyc1RvQWRkLmtleXMpIHtcclxuICAgICAgaWYgKCFjb21iaW5lZEhlYWRlcnMuaGFzKGtleSkgfHwgb3ZlcndyaXRlRXhpc3RpbmcpIHtcclxuICAgICAgICBjb25zdCBoZWFkZXJWYWx1ZXNUb0FkZCA9IGhlYWRlcnNUb0FkZC5nZXRBbGwoa2V5KTtcclxuICAgICAgICBpZiAoaGVhZGVyVmFsdWVzVG9BZGQpXHJcbiAgICAgICAgICBjb21iaW5lZEhlYWRlcnMgPSBjb21iaW5lZEhlYWRlcnMuc2V0KGtleSwgaGVhZGVyVmFsdWVzVG9BZGQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGNvbWJpbmVkSGVhZGVycztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGNyZWF0ZUhlYWRlcnMobWVkaWFUeXBlPzogJ2FwcGxpY2F0aW9uL2hhbCtqc29uJyB8ICdhcHBsaWNhdGlvbi9wcnMuaGFsLWZvcm1zK2pzb24nIHwgJ3RleHQvY3N2JywgdmVyc2lvbj86IG51bWJlcik6IEh0dHBIZWFkZXJzIHtcclxuICAgIGlmICh2ZXJzaW9uKVxyXG4gICAgICByZXR1cm4gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgICAnQWNjZXB0JzogYCR7bWVkaWFUeXBlIHx8ICdhcHBsaWNhdGlvbi9oYWwranNvbid9OyB2PSR7dmVyc2lvbn1gLFxyXG4gICAgICAgICdDb250ZW50LVR5cGUnOiBgJHttZWRpYVR5cGUgfHwgJ2FwcGxpY2F0aW9uL2hhbCtqc29uJ307IHY9JHt2ZXJzaW9ufWBcclxuICAgICAgfSk7XHJcbiAgICByZXR1cm4gbmV3IEh0dHBIZWFkZXJzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZGVsZXRlKHJlc291cmNlOiBSZXNvdXJjZSk6IFByb21pc2U8SHR0cFJlc3BvbnNlPHZvaWQgfCBQcm9ibGVtRGV0YWlscz4+IHtcclxuICAgIGNvbnN0IGRlbGV0ZUxpbmsgPSByZXNvdXJjZS5maW5kTGluaygnZGVsZXRlJyk7XHJcbiAgICBpZiAoIWRlbGV0ZUxpbmspXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIHJlc291cmNlICR7cmVzb3VyY2V9IGRvZXMgbm90IGhhdmUgYSBkZWxldGUgbGluay5gKTtcclxuICAgIGNvbnN0IHVyaSA9IGRlbGV0ZUxpbmsuaHJlZjtcclxuICAgIGNvbnN0IGhlYWRlciA9IFJlc3RXb3JsZENsaWVudC5jcmVhdGVIZWFkZXJzKCdhcHBsaWNhdGlvbi9oYWwranNvbicsIHRoaXMuX29wdGlvbnMuVmVyc2lvbik7XHJcblxyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmhhbENsaWVudC5kZWxldGUodXJpLCBQcm9ibGVtRGV0YWlscywgaGVhZGVyKTtcclxuXHJcbiAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZW5zdXJlSG9tZVJlc291cmNlSXNTZXQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAoIXRoaXMuX2hvbWVSZXNvdXJjZSkge1xyXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuZ2V0SG9tZUZvcmNlZCgpO1xyXG4gICAgICBpZiAoUHJvYmxlbURldGFpbHMuaXNQcm9ibGVtRGV0YWlscyhyZXNwb25zZS5ib2R5KSkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGdldCB0aGUgaG9tZSByZXNvdXJjZSBmcm9tICR7dGhpcy5fb3B0aW9ucy5CYXNlVXJsfSB3aXRoIFZlcnNpb24gJHt0aGlzLl9vcHRpb25zLlZlcnNpb259LiBSZXNwb25zZSB3YXM6ICR7cmVzcG9uc2V9YCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFyZXNwb25zZS5ib2R5KVxyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGdldCB0aGUgaG9tZSByZXNvdXJjZSBmcm9tICR7dGhpcy5fb3B0aW9ucy5CYXNlVXJsfSB3aXRoIFZlcnNpb24gJHt0aGlzLl9vcHRpb25zLlZlcnNpb259LiBSZXNwb25zZSB3YXMgZW1wdHkuYCk7XHJcbiAgICAgIHRoaXMuX2hvbWVSZXNvdXJjZSA9IHJlc3BvbnNlLmJvZHk7XHJcbiAgICAgIHRoaXMuc2V0RGVmYXVsdEN1cmllKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0QWxsRm9ybXMocmVzb3VyY2U6IFJlc291cmNlKTogUHJvbWlzZTxIdHRwUmVzcG9uc2U8Rm9ybXNSZXNvdXJjZSB8IFByb2JsZW1EZXRhaWxzPltdPiB7XHJcbiAgICBjb25zdCB1cmxzID0gcmVzb3VyY2UuZ2V0Rm9ybUxpbmtIcmVmcygpO1xyXG4gICAgY29uc3QgZm9ybXNQcm9taXNlcyA9IHVybHMubWFwKHVybCA9PiB0aGlzLmdldEZvcm0odXJsKSk7XHJcbiAgICBjb25zdCBmb3Jtc0FuZFByb2JsZW1zID0gYXdhaXQgUHJvbWlzZS5hbGwoZm9ybXNQcm9taXNlcyk7XHJcbiAgICByZXR1cm4gZm9ybXNBbmRQcm9ibGVtcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRGb3JtKHVybDogc3RyaW5nKTogUHJvbWlzZTxIdHRwUmVzcG9uc2U8Rm9ybXNSZXNvdXJjZSB8IFByb2JsZW1EZXRhaWxzPj4ge1xyXG4gICAgY29uc3QgaGVhZGVyID0gUmVzdFdvcmxkQ2xpZW50LmNyZWF0ZUhlYWRlcnMoJ2FwcGxpY2F0aW9uL3Bycy5oYWwtZm9ybXMranNvbicsIHRoaXMuX29wdGlvbnMuVmVyc2lvbik7XHJcbiAgICByZXR1cm4gdGhpcy5faGFsQ2xpZW50LmdldCh1cmwsIEZvcm1zUmVzb3VyY2UsIFByb2JsZW1EZXRhaWxzLCBoZWFkZXIpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEFsbExpbmtzRnJvbUhvbWUoKTogeyBbcmVsOiBzdHJpbmddOiBMaW5rW10gfCB1bmRlZmluZWQ7IH0ge1xyXG4gICAgaWYgKCF0aGlzLl9ob21lUmVzb3VyY2UpXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignSG9tZSByZXNvdXJjZSBpcyBub3Qgc2V0LiBDYWxsIGVuc3VyZUhvbWVSZXNvdXJjZUlzU2V0KCkgZmlyc3QuJyk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuX2hvbWVSZXNvdXJjZS5fbGlua3M7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0QWxsUGFnZXNGcm9tTGlzdDxUTGlzdER0byBleHRlbmRzIFJlc291cmNlRHRvPihyZWw6IHN0cmluZywgcGFyYW1ldGVyczoge30sIGhlYWRlcnM/OiBIdHRwSGVhZGVycywgY3VyaWU/OiBzdHJpbmcpOiBQcm9taXNlPEh0dHBSZXNwb25zZTxQYWdlZExpc3RSZXNvdXJjZTxUTGlzdER0bz4gfCBQcm9ibGVtRGV0YWlscz4+IHtcclxuICAgIGNvbnN0IGxpbmsgPSB0aGlzLmdldExpbmtGcm9tSG9tZShyZWwsIExpbmtOYW1lcy5nZXRMaXN0LCBjdXJpZSk7XHJcbiAgICBjb25zdCB1cmkgPSBsaW5rLmhyZWY7XHJcblxyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmdldEFsbFBhZ2VzRnJvbUxpc3RCeVVyaTxUTGlzdER0bz4odXJpLCBwYXJhbWV0ZXJzLCBoZWFkZXJzKTtcclxuXHJcbiAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0QWxsUGFnZXNGcm9tTGlzdEJ5VXJpPFRMaXN0RHRvIGV4dGVuZHMgUmVzb3VyY2VEdG8+KHVyaTogc3RyaW5nLCBwYXJhbWV0ZXJzOiB7fSwgaGVhZGVycz86IEh0dHBIZWFkZXJzKTogUHJvbWlzZTxIdHRwUmVzcG9uc2U8UGFnZWRMaXN0UmVzb3VyY2U8VExpc3REdG8+IHwgUHJvYmxlbURldGFpbHM+PiB7XHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuZ2V0TGlzdEJ5VXJpPFRMaXN0RHRvPih1cmksIHBhcmFtZXRlcnMsIGhlYWRlcnMpO1xyXG5cclxuICAgIGlmICghcmVzcG9uc2Uub2sgfHwgUHJvYmxlbURldGFpbHMuaXNQcm9ibGVtRGV0YWlscyhyZXNwb25zZS5ib2R5KSB8fCAhcmVzcG9uc2UuYm9keT8uX2VtYmVkZGVkPy5pdGVtcylcclxuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG5cclxuICAgIGNvbnN0IGl0ZW1zID0gcmVzcG9uc2UuYm9keS5fZW1iZWRkZWQuaXRlbXM7XHJcbiAgICBsZXQgbGFzdFJlc3BvbnNlID0gcmVzcG9uc2U7XHJcblxyXG4gICAgd2hpbGUgKChsYXN0UmVzcG9uc2U/LmJvZHk/Ll9saW5rcz8ubmV4dD8ubGVuZ3RoID8/IDApID4gMCkge1xyXG4gICAgICAvLyBHZXQgdGhlIG5leHQgcmVzcG9uc2VcclxuICAgICAgY29uc3QgbmV4dExpbmtzID0gbGFzdFJlc3BvbnNlLmJvZHk/Ll9saW5rcy5uZXh0O1xyXG4gICAgICBjb25zdCBuZXh0TGluayA9IG5leHRMaW5rcyA/IG5leHRMaW5rc1swXTogdW5kZWZpbmVkO1xyXG4gICAgICBjb25zdCBuZXh0SHJlZiA9IG5leHRMaW5rPy5ocmVmO1xyXG4gICAgICBpZiAobmV4dEhyZWYpIHtcclxuICAgICAgICBsYXN0UmVzcG9uc2UgPSBhd2FpdCB0aGlzLmdldExpc3RCeVVyaTxUTGlzdER0bz4obmV4dEhyZWYsIHBhcmFtZXRlcnMsIGhlYWRlcnMpO1xyXG5cclxuICAgICAgICBpZiAoIWxhc3RSZXNwb25zZS5vayB8fCBQcm9ibGVtRGV0YWlscy5pc1Byb2JsZW1EZXRhaWxzKGxhc3RSZXNwb25zZS5ib2R5KSB8fCAhbGFzdFJlc3BvbnNlLmJvZHkpXHJcbiAgICAgICAgICByZXR1cm4gbGFzdFJlc3BvbnNlO1xyXG5cclxuICAgICAgICAvLyBDb21iaW5lIHRoZSBlbWJlZGRlZCBpdGVtc1xyXG4gICAgICAgIGxhc3RSZXNwb25zZS5ib2R5Py5fZW1iZWRkZWQ/Lml0ZW1zPy5mb3JFYWNoKHIgPT4gaXRlbXMucHVzaChyKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBXZSBjb21iaW5lZCBldmVyeXRoaW5nLCBzbyB0aGVyZSBpcyBqdXN0IG9uZSBiaWcgcGFnZVxyXG4gICAgcmVzcG9uc2UuYm9keS50b3RhbFBhZ2VzID0gMTtcclxuICAgIHJlc3BvbnNlLmJvZHkuX2xpbmtzLm5leHQgPSB1bmRlZmluZWQ7XHJcblxyXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldEFsbFRlbXBsYXRlcyhyZXNvdXJjZTogUmVzb3VyY2UpOiBQcm9taXNlPFRlbXBsYXRlcz4ge1xyXG4gICAgY29uc3QgZm9ybVJlc3BvbnNlcyA9IGF3YWl0IHRoaXMuZ2V0QWxsRm9ybXMocmVzb3VyY2UpO1xyXG5cclxuICAgIGNvbnN0IGZhaWxlZFJlc3BvbnNlcyA9IGZvcm1SZXNwb25zZXMuZmlsdGVyKHJlc3BvbnNlID0+ICFyZXNwb25zZS5vayB8fCBQcm9ibGVtRGV0YWlscy5pc1Byb2JsZW1EZXRhaWxzKHJlc3BvbnNlLmJvZHkpIHx8ICFyZXNwb25zZS5ib2R5KTtcclxuICAgIGlmIChmYWlsZWRSZXNwb25zZXMubGVuZ3RoICE9PSAwKSB7XHJcbiAgICAgIGZvciAoY29uc3QgcmVzcG9uc2Ugb2YgZmFpbGVkUmVzcG9uc2VzKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFcnJvciB3aGlsZSBsb2FkaW5nIHRoZSByZXNwb25zZSBmcm9tICR7cmVzcG9uc2UudXJsfSwgU3RhdHVzICR7cmVzcG9uc2Uuc3RhdHVzfSAtICR7cmVzcG9uc2Uuc3RhdHVzVGV4dH0sIENvbnRlbnQ6ICR7cmVzcG9uc2UuYm9keX1gKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHt9KTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmb3JtVGVtcGxhdGVzID0gT2JqZWN0LmFzc2lnbih7fSwgLi4uZm9ybVJlc3BvbnNlcy5tYXAocmVzcG9uc2UgPT4gKHJlc3BvbnNlLmJvZHkgYXMgRm9ybXNSZXNvdXJjZSkuX3RlbXBsYXRlcykpIGFzIFRlbXBsYXRlcztcclxuXHJcbiAgICBhd2FpdCB0aGlzLnNldEluaXRpYWxTZWxlY3RlZE9wdGlvbnNFbGVtZW50c0ZvclRlbXBsYXRlcyhmb3JtVGVtcGxhdGVzLCBmYWxzZSk7XHJcblxyXG4gICAgcmV0dXJuIGZvcm1UZW1wbGF0ZXM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0TGlua0Zyb21Ib21lKHJlbDogc3RyaW5nLCBuYW1lPzogc3RyaW5nLCBjdXJpZT86IHN0cmluZyk6IExpbmsge1xyXG4gICAgY29uc3QgbGlua3MgPSB0aGlzLmdldExpbmtzRnJvbUhvbWUocmVsLCBjdXJpZSk7XHJcblxyXG4gICAgY29uc3QgbGluayA9IG5hbWUgPyBsaW5rcy5maW5kKGwgPT4gbC5uYW1lID09PSBuYW1lKSA6IGxpbmtzWzBdO1xyXG5cclxuICAgIGlmICghbGluaylcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgaG9tZSByZXNvdXJjZSBkb2VzIG5vdCBoYXZlIGEgbGluayB3aXRoIHRoZSByZWwgJyR7dGhpcy5nZXRGdWxsUmVsKHJlbCwgY3VyaWUpfScgYW5kIHRoZSBuYW1lICcke25hbWV9Jy5gKTtcclxuXHJcbiAgICByZXR1cm4gbGluaztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRMaW5rc0Zyb21Ib21lKHJlbDogc3RyaW5nLCBjdXJpZT86IHN0cmluZyk6IExpbmtbXSB7XHJcbiAgICBpZiAoIXRoaXMuX2hvbWVSZXNvdXJjZSlcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdIb21lIHJlc291cmNlIGlzIG5vdCBzZXQuIENhbGwgZW5zdXJlSG9tZVJlc291cmNlSXNTZXQoKSBmaXJzdC4nKTtcclxuXHJcbiAgICBjb25zdCBmdWxsUmVsID0gdGhpcy5nZXRGdWxsUmVsKHJlbCwgY3VyaWUpO1xyXG4gICAgY29uc3QgbGlua3MgPSB0aGlzLl9ob21lUmVzb3VyY2UuX2xpbmtzW2Z1bGxSZWxdO1xyXG4gICAgaWYgKCFsaW5rcyB8fCBsaW5rcy5sZW5ndGggPT09IDApXHJcbiAgICAgIHRocm93IEVycm9yKGBUaGUgaG9tZSByZXNvdXJjZSBkb2VzIG5vdCBoYXZlIGEgbGluayB3aXRoIHRoZSByZWwgJyR7ZnVsbFJlbH0nLmApO1xyXG5cclxuICAgIHJldHVybiBsaW5rcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRMaXN0PFRMaXN0RHRvIGV4dGVuZHMgUmVzb3VyY2VEdG8+KHJlbDogc3RyaW5nLCBwYXJhbWV0ZXJzOiB7fSwgaGVhZGVycz86IEh0dHBIZWFkZXJzLCBjdXJpZT86IHN0cmluZyk6IFByb21pc2U8SHR0cFJlc3BvbnNlPFBhZ2VkTGlzdFJlc291cmNlPFRMaXN0RHRvPiB8IFByb2JsZW1EZXRhaWxzPj4ge1xyXG4gICAgY29uc3QgbGluayA9IHRoaXMuZ2V0TGlua0Zyb21Ib21lKHJlbCwgTGlua05hbWVzLmdldExpc3QsIGN1cmllKTtcclxuICAgIGNvbnN0IHVyaSA9IGxpbmsuaHJlZlxyXG5cclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5nZXRMaXN0QnlVcmk8VExpc3REdG8+KHVyaSwgcGFyYW1ldGVycywgaGVhZGVycyk7XHJcblxyXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldExpc3RBc0NzdihyZWw6IHN0cmluZywgcGFyYW1ldGVyczoge30sIGhlYWRlcnM/OiBIdHRwSGVhZGVycywgY3VyaWU/OiBzdHJpbmcpOiBQcm9taXNlPEh0dHBSZXNwb25zZTxCbG9iPiB8IHVuZGVmaW5lZD4ge1xyXG4gICAgY29uc3QgbGluayA9IHRoaXMuZ2V0TGlua0Zyb21Ib21lKHJlbCwgTGlua05hbWVzLmdldExpc3QsIGN1cmllKTtcclxuICAgIGNvbnN0IHVyaSA9IGxpbmsuaHJlZjtcclxuXHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuZ2V0TGlzdEJ5VXJpQXNDc3YodXJpLCBwYXJhbWV0ZXJzLCBoZWFkZXJzKTtcclxuXHJcbiAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0TGlzdEJ5VXJpPFRMaXN0RHRvIGV4dGVuZHMgUmVzb3VyY2VEdG8+KHVyaTogc3RyaW5nLCBwYXJhbWV0ZXJzOiB7fSwgaGVhZGVycz86IEh0dHBIZWFkZXJzKTogUHJvbWlzZTxIdHRwUmVzcG9uc2U8UGFnZWRMaXN0UmVzb3VyY2U8VExpc3REdG8+IHwgUHJvYmxlbURldGFpbHM+PiB7XHJcbiAgICBjb25zdCBsaW5rID0gbmV3IExpbmsoKTtcclxuICAgIGxpbmsuaHJlZiA9IHVyaTtcclxuICAgIGNvbnN0IGZpbGxlZFVyaSA9IGxpbmsuZmlsbFRlbXBsYXRlKHBhcmFtZXRlcnMpO1xyXG4gICAgY29uc3QgZGVmYXVsdEhlYWRlcnMgPSBSZXN0V29ybGRDbGllbnQuY3JlYXRlSGVhZGVycygnYXBwbGljYXRpb24vaGFsK2pzb24nLCB0aGlzLl9vcHRpb25zLlZlcnNpb24pO1xyXG4gICAgY29uc3QgY29tYmluZWRIZWFkZXJzID0gUmVzdFdvcmxkQ2xpZW50LmNvbWJpbmVIZWFkZXJzKGhlYWRlcnMsIGRlZmF1bHRIZWFkZXJzLCBmYWxzZSk7XHJcblxyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmhhbENsaWVudC5nZXQ8UGFnZWRMaXN0UmVzb3VyY2U8VExpc3REdG8+LCBQcm9ibGVtRGV0YWlscz4oZmlsbGVkVXJpLCBQYWdlZExpc3RSZXNvdXJjZSwgUHJvYmxlbURldGFpbHMsIGNvbWJpbmVkSGVhZGVycyk7XHJcblxyXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldExpc3RCeVVyaUFzQ3N2KHVyaTogc3RyaW5nLCBwYXJhbWV0ZXJzOiB7fSwgaGVhZGVycz86IEh0dHBIZWFkZXJzKTogUHJvbWlzZTxIdHRwUmVzcG9uc2U8QmxvYj4gfCB1bmRlZmluZWQ+IHtcclxuICAgIGNvbnN0IGxpbmsgPSBuZXcgTGluaygpO1xyXG4gICAgbGluay5ocmVmID0gdXJpO1xyXG4gICAgY29uc3QgZmlsbGVkVXJpID0gbGluay5maWxsVGVtcGxhdGUocGFyYW1ldGVycyk7XHJcbiAgICBjb25zdCBkZWZhdWx0SGVhZGVycyA9IFJlc3RXb3JsZENsaWVudC5jcmVhdGVIZWFkZXJzKCd0ZXh0L2NzdicsIHRoaXMuX29wdGlvbnMuVmVyc2lvbik7XHJcbiAgICBjb25zdCBjb21iaW5lZEhlYWRlcnMgPSBSZXN0V29ybGRDbGllbnQuY29tYmluZUhlYWRlcnMoaGVhZGVycywgZGVmYXVsdEhlYWRlcnMsIGZhbHNlKTtcclxuXHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGxhc3RWYWx1ZUZyb20odGhpcy5oYWxDbGllbnQuaHR0cENsaWVudC5nZXQoZmlsbGVkVXJpLCB7IGhlYWRlcnM6IGNvbWJpbmVkSGVhZGVycywgcmVzcG9uc2VUeXBlOiAnYmxvYicsIG9ic2VydmU6ICdyZXNwb25zZScgfSkpO1xyXG5cclxuICAgIHJldHVybiByZXNwb25zZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRTaW5nbGUocmVsOiBzdHJpbmcsIGlkOiBudW1iZXIsIGhlYWRlcnM/OiBIdHRwSGVhZGVycywgY3VyaWU/OiBzdHJpbmcpOiBQcm9taXNlPEh0dHBSZXNwb25zZTxSZXNvdXJjZSB8IFByb2JsZW1EZXRhaWxzPj4ge1xyXG4gICAgaWYgKCFfLmlzTnVtYmVyKGlkKSlcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdXaGVuIHN1cHBseWluZyBhIHJlbCwgYW4gSUQgbXVzdCBiZSBzdXBwbGllZCB0b28uJyk7XHJcblxyXG4gICAgY29uc3QgbGluayA9IHRoaXMuZ2V0TGlua0Zyb21Ib21lKHJlbCwgTGlua05hbWVzLmdldCwgY3VyaWUpO1xyXG4gICAgY29uc3QgdXJpID0gbGluay5maWxsVGVtcGxhdGUoeyBpZDogaWQudG9TdHJpbmcoKSB9KTtcclxuXHJcbiAgICBjb25zdCByZXNwb25zZSA9IHRoaXMuZ2V0U2luZ2xlQnlVcmkodXJpLCBoZWFkZXJzKTtcclxuXHJcbiAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0U2luZ2xlQnlVcmkodXJpOiBzdHJpbmcsIGhlYWRlcnM/OiBIdHRwSGVhZGVycyk6IFByb21pc2U8SHR0cFJlc3BvbnNlPFJlc291cmNlIHwgUHJvYmxlbURldGFpbHM+PiB7XHJcbiAgICBjb25zdCBkZWZhdWx0SGVhZGVycyA9IFJlc3RXb3JsZENsaWVudC5jcmVhdGVIZWFkZXJzKCdhcHBsaWNhdGlvbi9oYWwranNvbicsIHRoaXMuX29wdGlvbnMuVmVyc2lvbik7XHJcbiAgICBjb25zdCBjb21iaW5lZEhlYWRlcnMgPSBSZXN0V29ybGRDbGllbnQuY29tYmluZUhlYWRlcnMoaGVhZGVycywgZGVmYXVsdEhlYWRlcnMsIGZhbHNlKTtcclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5oYWxDbGllbnQuZ2V0KHVyaSwgUmVzb3VyY2UsIFByb2JsZW1EZXRhaWxzLCBjb21iaW5lZEhlYWRlcnMpO1xyXG5cclxuICAgIHJldHVybiByZXNwb25zZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBzYXZlKHJlc291cmNlOiBSZXNvdXJjZSk6IFByb21pc2U8SHR0cFJlc3BvbnNlPFJlc291cmNlIHwgUHJvYmxlbURldGFpbHM+PiB7XHJcbiAgICBjb25zdCBzYXZlTGluayA9IHJlc291cmNlLmZpbmRMaW5rKCdzYXZlJyk7XHJcbiAgICBpZiAoIXNhdmVMaW5rKVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSByZXNvdXJjZSAke3Jlc291cmNlfSBkb2VzIG5vdCBoYXZlIGEgc2F2ZSBsaW5rLmApO1xyXG4gICAgaWYgKCFzYXZlTGluay5uYW1lKVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBzYXZlIGxpbmsgJHtzYXZlTGlua30gZG9lcyBub3QgaGF2ZSBhIHNhdmUgbmFtZS5gKTtcclxuXHJcbiAgICBjb25zdCB1cmkgPSBzYXZlTGluay5ocmVmO1xyXG4gICAgY29uc3QgbWV0aG9kID0gc2F2ZUxpbmsubmFtZS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgY29uc3QgaGVhZGVyID0gUmVzdFdvcmxkQ2xpZW50LmNyZWF0ZUhlYWRlcnMoJ2FwcGxpY2F0aW9uL2hhbCtqc29uJywgdGhpcy5fb3B0aW9ucy5WZXJzaW9uKTtcclxuXHJcbiAgICBsZXQgcmVzcG9uc2U7XHJcbiAgICBzd2l0Y2ggKG1ldGhvZCkge1xyXG4gICAgICBjYXNlICdwdXQnOlxyXG4gICAgICAgIHJlc3BvbnNlID0gYXdhaXQgdGhpcy5oYWxDbGllbnQucHV0KHVyaSwgcmVzb3VyY2UsIFJlc291cmNlLCBQcm9ibGVtRGV0YWlscywgaGVhZGVyKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAncG9zdCc6XHJcbiAgICAgICAgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmhhbENsaWVudC5wb3N0KHVyaSwgcmVzb3VyY2UsIFJlc291cmNlLCBQcm9ibGVtRGV0YWlscywgaGVhZGVyKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCcke21ldGhvZH0nIGlzIG5vdCBhbGxvd2VkIGFzIGxpbmsgbmFtZSBmb3IgdGhlIHNhdmUgbGluay4gT25seSAnUE9TVCcgYW5kICdQVVQnIGFyZSBhbGxvd2VkLmApO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXNwb25zZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBzdWJtaXQodGVtcGxhdGU6IFRlbXBsYXRlLCBmb3JtVmFsdWVzOiB7fSk6IFByb21pc2U8SHR0cFJlc3BvbnNlPEZvcm1zUmVzb3VyY2UgfCBQcm9ibGVtRGV0YWlscz4+IHtcclxuICAgIGNvbnN0IHVyaSA9IHRlbXBsYXRlLnRhcmdldCB8fCAnJztcclxuICAgIGNvbnN0IG1ldGhvZCA9IHRlbXBsYXRlLm1ldGhvZD8udG9Mb3dlckNhc2UoKTtcclxuICAgIGNvbnN0IGhlYWRlciA9IFJlc3RXb3JsZENsaWVudC5jcmVhdGVIZWFkZXJzKCdhcHBsaWNhdGlvbi9wcnMuaGFsLWZvcm1zK2pzb24nLCB0aGlzLl9vcHRpb25zLlZlcnNpb24pO1xyXG5cclxuICAgIGxldCByZXNwb25zZTtcclxuICAgIHN3aXRjaCAobWV0aG9kKSB7XHJcbiAgICAgIGNhc2UgJ3B1dCc6XHJcbiAgICAgICAgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmhhbENsaWVudC5wdXQodXJpLCBmb3JtVmFsdWVzLCBGb3Jtc1Jlc291cmNlLCBQcm9ibGVtRGV0YWlscywgaGVhZGVyKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAncG9zdCc6XHJcbiAgICAgICAgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmhhbENsaWVudC5wb3N0KHVyaSwgZm9ybVZhbHVlcywgRm9ybXNSZXNvdXJjZSwgUHJvYmxlbURldGFpbHMsIGhlYWRlcik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmhhbENsaWVudC5nZXQodXJpLCBGb3Jtc1Jlc291cmNlLCBQcm9ibGVtRGV0YWlscywgaGVhZGVyKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEZ1bGxSZWwocmVsOiBzdHJpbmcsIGN1cmllPzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIC8vIHJlbCBhbHJlYWR5IGluY2x1ZGVzIGEgY3VyaWUgPT4ganVzdCByZXR1cm4gaXRcclxuICAgIGlmIChyZWwuaW5jbHVkZXMoJzonKSlcclxuICAgICAgcmV0dXJuIHJlbDtcclxuXHJcbiAgICAvLyBObyBjdXJpZSBnaXZlbiA9PiB1c2UgZGVmYXVsdCBjdXJpZS5cclxuICAgIGlmICghY3VyaWUpXHJcbiAgICAgIGN1cmllID0gdGhpcy5fZGVmYXVsdEN1cmllO1xyXG5cclxuICAgIC8vIENvbWJpbmUgY3VyaWUgYW5kIHJlbFxyXG4gICAgY29uc3QgZnVsbFJlbCA9IGAke2N1cmllfToke3JlbH1gO1xyXG5cclxuICAgIHJldHVybiBmdWxsUmVsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBnZXRIb21lRm9yY2VkKCk6IFByb21pc2U8SHR0cFJlc3BvbnNlPFJlc291cmNlIHwgUHJvYmxlbURldGFpbHM+PiB7XHJcbiAgICBjb25zdCBoZWFkZXIgPSBSZXN0V29ybGRDbGllbnQuY3JlYXRlSGVhZGVycygnYXBwbGljYXRpb24vaGFsK2pzb24nLCB0aGlzLl9vcHRpb25zLlZlcnNpb24pO1xyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmhhbENsaWVudC5nZXQodGhpcy5fb3B0aW9ucy5CYXNlVXJsLCBSZXNvdXJjZSwgUHJvYmxlbURldGFpbHMsIGhlYWRlcik7XHJcbiAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldERlZmF1bHRDdXJpZSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGN1cmllcyA9IHRoaXMuX2hvbWVSZXNvdXJjZT8uX2xpbmtzPy5jdXJpZXM7XHJcbiAgICBpZiAoIWN1cmllcyB8fCBjdXJpZXMubGVuZ3RoID09PSAwIHx8ICFjdXJpZXNbMF0pXHJcbiAgICAgIHRoaXMuX2RlZmF1bHRDdXJpZSA9IHVuZGVmaW5lZDtcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5fZGVmYXVsdEN1cmllID0gY3VyaWVzWzBdLm5hbWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIHNldEluaXRpYWxTZWxlY3RlZE9wdGlvbnNFbGVtZW50Rm9yUHJvcGVydHkocHJvcGVydHk6IFByb3BlcnR5KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCBvcHRpb25zID0gcHJvcGVydHk/Lm9wdGlvbnM7XHJcblxyXG4gICAgaWYgKCFvcHRpb25zPy5saW5rPy5ocmVmKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgY29uc3QgdGVtcGxhdGVkVXJpID0gb3B0aW9ucy5saW5rLmhyZWY7XHJcbiAgICBjb25zdCBmaWx0ZXIgPSBgJHtvcHRpb25zLnZhbHVlRmllbGR9IGVxICR7cHJvcGVydHkudmFsdWV9YDtcclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5nZXRMaXN0QnlVcmkodGVtcGxhdGVkVXJpLCB7ICRmaWx0ZXI6IGZpbHRlciwgJHRvcDogMTAgfSk7XHJcbiAgICBpZiAoIXJlc3BvbnNlLm9rIHx8IFByb2JsZW1EZXRhaWxzLmlzUHJvYmxlbURldGFpbHMocmVzcG9uc2UuYm9keSkgfHwgIXJlc3BvbnNlLmJvZHkpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBnZXR0aW5nIHRoZSBmaWx0ZXJlZCBpdGVtcyBmcm9tICR7cmVzcG9uc2UudXJsfSwgU3RhdHVzICR7cmVzcG9uc2Uuc3RhdHVzfSAtICR7cmVzcG9uc2Uuc3RhdHVzVGV4dH0sIENvbnRlbnQ6ICR7cmVzcG9uc2UuYm9keX1gKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBpdGVtcyA9IHJlc3BvbnNlLmJvZHkuX2VtYmVkZGVkLml0ZW1zO1xyXG4gICAgb3B0aW9ucy5pbmxpbmUgPSBpdGVtcztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgc2V0SW5pdGlhbFNlbGVjdGVkT3B0aW9uc0VsZW1lbnRzRm9yVGVtcGxhdGUodGVtcGxhdGU6IFRlbXBsYXRlKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCBwcm9wZXJ0eVByb21pc2VzID0gdGVtcGxhdGUucHJvcGVydGllc1xyXG4gICAgICAuZmlsdGVyKHByb3BlcnR5ID0+IHByb3BlcnR5Py5vcHRpb25zPy5saW5rPy5ocmVmKVxyXG4gICAgICAubWFwKHByb3BlcnR5ID0+IHRoaXMuc2V0SW5pdGlhbFNlbGVjdGVkT3B0aW9uc0VsZW1lbnRGb3JQcm9wZXJ0eShwcm9wZXJ0eSkpO1xyXG4gICAgY29uc3QgbmVzdGVkVGVtcGxhdGVQcm9taXNlZCA9IHRlbXBsYXRlLnByb3BlcnRpZXNcclxuICAgICAgLmZpbHRlcihwcm9wZXJ0eSA9PiBwcm9wZXJ0eT8uX3RlbXBsYXRlcylcclxuICAgICAgLm1hcChwcm9wZXJ0eSA9PiB0aGlzLnNldEluaXRpYWxTZWxlY3RlZE9wdGlvbnNFbGVtZW50c0ZvclRlbXBsYXRlcyhwcm9wZXJ0eS5fdGVtcGxhdGVzLCB0cnVlKSk7XHJcbiAgICBjb25zdCBhbGxQcm9taXNlcyA9IHByb3BlcnR5UHJvbWlzZXMuY29uY2F0KG5lc3RlZFRlbXBsYXRlUHJvbWlzZWQpO1xyXG5cclxuICAgIGF3YWl0IFByb21pc2UuYWxsKGFsbFByb21pc2VzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgc2V0SW5pdGlhbFNlbGVjdGVkT3B0aW9uc0VsZW1lbnRzRm9yVGVtcGxhdGVzKHRlbXBsYXRlczogVGVtcGxhdGVzLCBza2lwRGVmYXVsdFRlbXBsYXRlOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBhd2FpdCBQcm9taXNlLmFsbChPYmplY3QuZW50cmllcyh0ZW1wbGF0ZXMpXHJcbiAgICAgIC5maWx0ZXIoKFtuYW1lLF0pID0+ICFza2lwRGVmYXVsdFRlbXBsYXRlIHx8IG5hbWUgIT09ICdkZWZhdWx0JylcclxuICAgICAgLm1hcCgoWywgdGVtcGxhdGVdKSA9PiB0aGlzLnNldEluaXRpYWxTZWxlY3RlZE9wdGlvbnNFbGVtZW50c0ZvclRlbXBsYXRlKHRlbXBsYXRlKSkpO1xyXG4gIH1cclxuXHJcblxyXG4gIHB1YmxpYyBhc3luYyBkZWxldGVCeVRlbXBsYXRlQW5kRm9ybSh0ZW1wbGF0ZTogVGVtcGxhdGUsIGZvcm1Hcm91cDogRm9ybUdyb3VwPHt0aW1lc3RhbXA6IEFic3RyYWN0Q29udHJvbDxzdHJpbmc+fT4pOiBQcm9taXNlPEh0dHBSZXNwb25zZTx2b2lkIHwgUHJvYmxlbURldGFpbHM+PiB7XHJcbiAgICBjb25zdCB1cmwgPSB0ZW1wbGF0ZS50YXJnZXQ7XHJcbiAgICBpZih1cmwgPT09IHVuZGVmaW5lZClcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGhlIHRhcmdldCBvZiB0aGUgZ2l2ZW4gdGVtcGxhdGUgY2Fubm90IGJlIHVuZGVmaW5lZC5cIik7XHJcblxyXG4gICAgY29uc3QgdGltZXN0YW1wID0gZm9ybUdyb3VwLnZhbHVlLnRpbWVzdGFtcFxyXG5cclxuICAgIHJldHVybiB0aGlzLmRlbGV0ZUJ5VXJsKHVybCwgdGltZXN0YW1wKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBkZWxldGVCeVVybCh1cmw6IHN0cmluZywgdGltZXN0YW1wPzogc3RyaW5nKTogUHJvbWlzZTxIdHRwUmVzcG9uc2U8dm9pZCB8IFByb2JsZW1EZXRhaWxzPj4ge1xyXG4gICAgbGV0IGhlYWRlciA9IFJlc3RXb3JsZENsaWVudC5jcmVhdGVIZWFkZXJzKCdhcHBsaWNhdGlvbi9oYWwranNvbicsIHRoaXMuX29wdGlvbnMuVmVyc2lvbik7XHJcblxyXG4gICAgaWYgKHRpbWVzdGFtcCAhPT0gdW5kZWZpbmVkKVxyXG4gICAgICBoZWFkZXIgPSBoZWFkZXIuYXBwZW5kKFwiRVRhZ1wiLCB0aW1lc3RhbXApO1xyXG5cclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5oYWxDbGllbnQuZGVsZXRlKHVybCwgUHJvYmxlbURldGFpbHMsIGhlYWRlcik7XHJcblxyXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Injectable } from "@angular/core";
|
|
2
|
-
import {
|
|
2
|
+
import { RestWorldOptions } from "../models/restworld-options";
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "./restworld-client-collection";
|
|
5
5
|
export class SettingsService {
|
|
@@ -52,15 +52,15 @@ export class SettingsService {
|
|
|
52
52
|
if (!this.settings?.apiUrls)
|
|
53
53
|
return;
|
|
54
54
|
await Promise.all(this.settings.apiUrls
|
|
55
|
-
.map(api => this._clients.addOrGetExistingClient(api.name, new
|
|
55
|
+
.map(api => this._clients.addOrGetExistingClient(api.name, new RestWorldOptions(api.url, api.version))));
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
|
-
SettingsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: SettingsService, deps: [{ token: i1.
|
|
58
|
+
SettingsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: SettingsService, deps: [{ token: i1.RestWorldClientCollection }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
59
59
|
SettingsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: SettingsService, providedIn: 'root' });
|
|
60
60
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: SettingsService, decorators: [{
|
|
61
61
|
type: Injectable,
|
|
62
62
|
args: [{
|
|
63
63
|
providedIn: 'root'
|
|
64
64
|
}]
|
|
65
|
-
}], ctorParameters: function () { return [{ type: i1.
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
65
|
+
}], ctorParameters: function () { return [{ type: i1.RestWorldClientCollection }]; } });
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3Muc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXN0d29ybGQtY2xpZW50L3NyYy9saWIvc2VydmljZXMvc2V0dGluZ3Muc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7QUFNL0QsTUFBTSxPQUFPLGVBQWU7SUFTMUIsWUFDVSxRQUFtQztRQUFuQyxhQUFRLEdBQVIsUUFBUSxDQUEyQjtRQUpyQyxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixnQkFBVyxHQUFHLEtBQUssQ0FBQztJQUk1QixDQUFDO0lBVEQsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sZUFBZSxDQUFDLFNBQVMsQ0FBQztJQUNuQyxDQUFDO0lBU00sS0FBSyxDQUFDLGlCQUFpQjtRQUM1QixJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFdBQVc7WUFDdkMsT0FBTztRQUVULElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBRXpCLE1BQU0sZUFBZSxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFDaEQsTUFBTSxJQUFJLENBQUMsNkNBQTZDLEVBQUUsQ0FBQztRQUUzRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUU1QixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBb0JLO0lBQ0UsTUFBTSxDQUFDLEtBQUssQ0FBQyx1QkFBdUI7UUFDekMsSUFBSSxlQUFlLENBQUMsU0FBUyxLQUFLLFNBQVMsRUFBRTtZQUMzQyxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUMxQyxNQUFNLFFBQVEsR0FBbUIsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDdkQsZUFBZSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7U0FDdEM7SUFDSCxDQUFDO0lBRU8sS0FBSyxDQUFDLDZDQUE2QztRQUN6RCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPO1lBQ3pCLE9BQU87UUFFVCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPO2FBQ3BDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlHLENBQUM7OzRHQTlEVSxlQUFlO2dIQUFmLGVBQWUsY0FGZCxNQUFNOzJGQUVQLGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEJhY2tlbmQsIEh0dHBDbGllbnQgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IENsaWVudFNldHRpbmdzIH0gZnJvbSBcIi4uL21vZGVscy9jbGllbnQtc2V0dGluZ3NcIjtcclxuaW1wb3J0IHsgUmVzdFdvcmxkT3B0aW9ucyB9IGZyb20gXCIuLi9tb2RlbHMvcmVzdHdvcmxkLW9wdGlvbnNcIjtcclxuaW1wb3J0IHsgUmVzdFdvcmxkQ2xpZW50Q29sbGVjdGlvbiB9IGZyb20gXCIuL3Jlc3R3b3JsZC1jbGllbnQtY29sbGVjdGlvblwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU2V0dGluZ3NTZXJ2aWNlIHtcclxuICBwcml2YXRlIHN0YXRpYyBfc2V0dGluZ3M6IENsaWVudFNldHRpbmdzIHwgdW5kZWZpbmVkO1xyXG4gIHB1YmxpYyBnZXQgc2V0dGluZ3MoKTogQ2xpZW50U2V0dGluZ3MgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIFNldHRpbmdzU2VydmljZS5fc2V0dGluZ3M7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRpYWxpemluZyA9IGZhbHNlO1xyXG4gIHByaXZhdGUgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9jbGllbnRzOiBSZXN0V29ybGRDbGllbnRDb2xsZWN0aW9uKSB7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZW5zdXJlSW5pdGlhbGl6ZWQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAodGhpcy5pbml0aWFsaXppbmcgfHwgdGhpcy5pbml0aWFsaXplZClcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuaW5pdGlhbGl6aW5nID0gdHJ1ZTtcclxuXHJcbiAgICBhd2FpdCBTZXR0aW5nc1NlcnZpY2UuZW5zdXJlU2V0dGluZ3NBcmVMb2FkZWQoKTtcclxuICAgIGF3YWl0IHRoaXMucG9wdWxhdGVSRVNUd29ybGRDbGllbnRDb2xsZWN0aW9uRnJvbVNldHRpbmdzKCk7XHJcblxyXG4gICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICB0aGlzLmluaXRpYWxpemluZyA9IGZhbHNlO1xyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENhbGwgdGhpcyBtZXRob2QgaW4geW91ciBtYWluLnRzIGJlZm9yZSBjYWxsaW5nIGJvb3RzdHJhcE1vZHVsZSguLi4pXHJcbiAgICpcclxuICAgKiBFeGFtcGxlOlxyXG4gICAqIGFzeW5jIGZ1bmN0aW9uIG1haW4oKSB7XHJcbiAgICogICB0cnkge1xyXG4gICAqICAgICBhd2FpdCBTZXR0aW5nc1NlcnZpY2UuZW5zdXJlU2V0dGluZ3NBcmVMb2FkZWQoKTtcclxuICAgKlxyXG4gICAqICAgICBjb25zdCBwcm92aWRlcnMgOiBTdGF0aWNQcm92aWRlcltdID0gW1xyXG4gICAqICAgICAgIHsgcHJvdmlkZTogJ0JBU0VfVVJMJywgdXNlRmFjdG9yeTogZ2V0QmFzZVVybCwgZGVwczogW10gfVxyXG4gICAqICAgICBdO1xyXG4gICAqXHJcbiAgICogICAgIGF3YWl0IHBsYXRmb3JtQnJvd3NlckR5bmFtaWMocHJvdmlkZXJzKS5ib290c3RyYXBNb2R1bGUoQXBwTW9kdWxlKTtcclxuICAgKiAgIH1cclxuICAgKiAgIGNhdGNoIChlKSB7XHJcbiAgICogICAgIGNvbnNvbGUuZXJyb3IoZSk7XHJcbiAgICogICB9XHJcbiAgICogfVxyXG4gICAqXHJcbiAgICogbWFpbigpO1xyXG4gICAqICovXHJcbiAgcHVibGljIHN0YXRpYyBhc3luYyBlbnN1cmVTZXR0aW5nc0FyZUxvYWRlZCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmIChTZXR0aW5nc1NlcnZpY2UuX3NldHRpbmdzID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCgnL3NldHRpbmdzJyk7XHJcbiAgICAgIGNvbnN0IHNldHRpbmdzOiBDbGllbnRTZXR0aW5ncyA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcclxuICAgICAgU2V0dGluZ3NTZXJ2aWNlLl9zZXR0aW5ncyA9IHNldHRpbmdzO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBwb3B1bGF0ZVJFU1R3b3JsZENsaWVudENvbGxlY3Rpb25Gcm9tU2V0dGluZ3MoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAoIXRoaXMuc2V0dGluZ3M/LmFwaVVybHMpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBhd2FpdCBQcm9taXNlLmFsbCh0aGlzLnNldHRpbmdzLmFwaVVybHNcclxuICAgICAgLm1hcChhcGkgPT4gIHRoaXMuX2NsaWVudHMuYWRkT3JHZXRFeGlzdGluZ0NsaWVudChhcGkubmFtZSwgbmV3IFJlc3RXb3JsZE9wdGlvbnMoYXBpLnVybCwgYXBpLnZlcnNpb24pKSkpO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
|