bways-report 0.1.6 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +293 -464
- package/esm2022/lib/core/config/bways-report-config.mjs +83 -0
- package/esm2022/lib/core/index.mjs +2 -1
- package/esm2022/lib/core/models/report-definition.model.mjs +1 -1
- package/esm2022/lib/core/services/report-data-discovery.service.mjs +6 -3
- package/esm2022/lib/core/services/report-session-context.service.mjs +11 -7
- package/esm2022/lib/core/tokens/reporting-config.token.mjs +1 -1
- package/esm2022/lib/core/utils/data-normalization.util.mjs +87 -1
- package/esm2022/lib/core/utils/report-parameter.util.mjs +119 -3
- package/esm2022/lib/data-access/adapters/endpoint-datasource.adapter.mjs +69 -0
- package/esm2022/lib/data-access/adapters/endpoint-lookup.adapter.mjs +98 -0
- package/esm2022/lib/data-access/adapters/endpoint-masterdata.adapter.mjs +57 -0
- package/esm2022/lib/data-access/adapters/endpoint-persistence.adapter.mjs +85 -0
- package/esm2022/lib/data-access/adapters/endpoint-schema-discovery.adapter.mjs +163 -0
- package/esm2022/lib/data-access/adapters/endpoint-tokens.mjs +12 -0
- package/esm2022/lib/data-access/adapters/http-lookup.adapter.mjs +4 -23
- package/esm2022/lib/data-access/adapters/index.mjs +8 -1
- package/esm2022/lib/data-access/contracts/lookup.contract.mjs +1 -1
- package/esm2022/lib/features/designer/components/component-palette/component-palette.component.mjs +12 -2
- package/esm2022/lib/features/designer/components/design-canvas/design-canvas.component.mjs +5 -5
- package/esm2022/lib/features/designer/components/dialogs/report-saved-dialog.component.mjs +407 -0
- package/esm2022/lib/features/designer/components/property-editor/parameter-binding-editor.component.mjs +109 -60
- package/esm2022/lib/features/designer/components/property-editor/property-editor-action.component.mjs +3 -3
- package/esm2022/lib/features/designer/components/property-editor/property-editor-datasource.component.mjs +110 -20
- package/esm2022/lib/features/designer/components/property-editor/property-editor-general.component.mjs +3 -3
- package/esm2022/lib/features/designer/components/property-editor/property-editor-grid.component.mjs +60 -3
- package/esm2022/lib/features/designer/components/property-editor/property-editor-layout.component.mjs +11 -5
- package/esm2022/lib/features/designer/components/property-editor/property-editor-report.component.mjs +3 -3
- package/esm2022/lib/features/designer/components/property-editor/property-editor-validation.component.mjs +15 -3
- package/esm2022/lib/features/designer/components/toolbar/designer-toolbar.component.mjs +204 -10
- package/esm2022/lib/features/designer/designer.component.mjs +43 -2
- package/esm2022/lib/features/designer/services/designer-state.service.mjs +9 -2
- package/esm2022/lib/features/embed/bways-report-builder.component.mjs +207 -0
- package/esm2022/lib/features/embed/bways-report-menu.component.mjs +433 -0
- package/esm2022/lib/features/embed/bways-report-page.component.mjs +204 -0
- package/esm2022/lib/features/embed/index.mjs +5 -0
- package/esm2022/lib/features/embed/inject-report-menu.mjs +99 -0
- package/esm2022/lib/features/index.mjs +2 -1
- package/esm2022/lib/features/persistence/services/report-store.service.mjs +43 -5
- package/esm2022/lib/features/routing/components/routed-report-runtime.component.mjs +4 -4
- package/esm2022/lib/features/routing/index.mjs +2 -2
- package/esm2022/lib/features/routing/models/report-route.models.mjs +1 -1
- package/esm2022/lib/features/routing/report-routes.mjs +42 -1
- package/esm2022/lib/features/routing/resolvers/report.resolver.mjs +6 -8
- package/esm2022/lib/features/routing/services/report-menu.service.mjs +14 -4
- package/esm2022/lib/features/runtime/dynamic-renderer.component.mjs +22 -3
- package/esm2022/lib/features/runtime/report-grid-bridge.component.mjs +16 -2
- package/esm2022/lib/primitives/components/button/rpt-button.component.mjs +28 -5
- package/esm2022/lib/primitives/components/dropdown/rpt-dropdown.component.mjs +86 -19
- package/esm2022/lib/primitives/components/icon/rpt-icon.component.mjs +8 -1
- package/esm2022/lib/primitives/components/index.mjs +2 -1
- package/esm2022/lib/primitives/components/number/rpt-number.component.mjs +9 -3
- package/esm2022/lib/primitives/components/searchable-select/rpt-searchable-select.component.mjs +386 -0
- package/esm2022/lib/provide-reporting.mjs +137 -7
- package/fesm2022/bways-report.mjs +4053 -840
- package/fesm2022/bways-report.mjs.map +1 -1
- package/lib/core/config/bways-report-config.d.ts +161 -0
- package/lib/core/index.d.ts +1 -0
- package/lib/core/models/report-definition.model.d.ts +16 -0
- package/lib/core/services/report-session-context.service.d.ts +1 -0
- package/lib/core/tokens/reporting-config.token.d.ts +16 -0
- package/lib/core/utils/data-normalization.util.d.ts +10 -0
- package/lib/core/utils/report-parameter.util.d.ts +18 -1
- package/lib/data-access/adapters/endpoint-datasource.adapter.d.ts +13 -0
- package/lib/data-access/adapters/endpoint-lookup.adapter.d.ts +14 -0
- package/lib/data-access/adapters/endpoint-masterdata.adapter.d.ts +11 -0
- package/lib/data-access/adapters/endpoint-persistence.adapter.d.ts +15 -0
- package/lib/data-access/adapters/endpoint-schema-discovery.adapter.d.ts +21 -0
- package/lib/data-access/adapters/endpoint-tokens.d.ts +21 -0
- package/lib/data-access/adapters/index.d.ts +7 -0
- package/lib/data-access/contracts/lookup.contract.d.ts +2 -2
- package/lib/features/designer/components/component-palette/component-palette.component.d.ts +1 -0
- package/lib/features/designer/components/design-canvas/design-canvas.component.d.ts +1 -1
- package/lib/features/designer/components/dialogs/report-saved-dialog.component.d.ts +34 -0
- package/lib/features/designer/components/property-editor/parameter-binding-editor.component.d.ts +1 -0
- package/lib/features/designer/components/property-editor/property-editor-datasource.component.d.ts +12 -2
- package/lib/features/designer/components/property-editor/property-editor-grid.component.d.ts +10 -0
- package/lib/features/designer/components/toolbar/designer-toolbar.component.d.ts +13 -1
- package/lib/features/designer/designer.component.d.ts +4 -0
- package/lib/features/embed/bways-report-builder.component.d.ts +48 -0
- package/lib/features/embed/bways-report-menu.component.d.ts +40 -0
- package/lib/features/embed/bways-report-page.component.d.ts +61 -0
- package/lib/features/embed/index.d.ts +4 -0
- package/lib/features/embed/inject-report-menu.d.ts +44 -0
- package/lib/features/index.d.ts +1 -0
- package/lib/features/persistence/services/report-store.service.d.ts +5 -0
- package/lib/features/routing/index.d.ts +1 -1
- package/lib/features/routing/models/report-route.models.d.ts +3 -0
- package/lib/features/routing/report-routes.d.ts +40 -0
- package/lib/features/routing/resolvers/report.resolver.d.ts +1 -1
- package/lib/features/runtime/dynamic-renderer.component.d.ts +1 -0
- package/lib/features/runtime/report-grid-bridge.component.d.ts +1 -1
- package/lib/primitives/components/button/rpt-button.component.d.ts +3 -0
- package/lib/primitives/components/dropdown/rpt-dropdown.component.d.ts +16 -3
- package/lib/primitives/components/index.d.ts +2 -0
- package/lib/primitives/components/searchable-select/rpt-searchable-select.component.d.ts +89 -0
- package/lib/provide-reporting.d.ts +22 -6
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { reportResolver } from './resolvers/report.resolver';
|
|
2
2
|
export { RoutedReportRuntimeComponent } from './components/routed-report-runtime.component';
|
|
3
3
|
export { RoutedReportDesignerComponent } from './components/routed-report-designer.component';
|
|
4
|
-
export { createReportRoutes } from './report-routes';
|
|
4
|
+
export { createReportRoutes, bwaysReportRoutes } from './report-routes';
|
|
5
5
|
export { ReportMenuService, groupReportsByCategory } from './services/report-menu.service';
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9mZWF0dXJlcy9yb3V0aW5nL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUM1RixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUM5RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQWlDLE1BQU0saUJBQWlCLENBQUM7QUFDdkcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sZ0NBQWdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSB7IFJlcG9ydFJvdXRpbmdDb25maWcsIFJlcG9ydE1lbnVJdGVtLCBSZXBvcnRNZW51R3JvdXAgfSBmcm9tICcuL21vZGVscy9yZXBvcnQtcm91dGUubW9kZWxzJztcbmV4cG9ydCB7IHJlcG9ydFJlc29sdmVyIH0gZnJvbSAnLi9yZXNvbHZlcnMvcmVwb3J0LnJlc29sdmVyJztcbmV4cG9ydCB7IFJvdXRlZFJlcG9ydFJ1bnRpbWVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcm91dGVkLXJlcG9ydC1ydW50aW1lLmNvbXBvbmVudCc7XG5leHBvcnQgeyBSb3V0ZWRSZXBvcnREZXNpZ25lckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9yb3V0ZWQtcmVwb3J0LWRlc2lnbmVyLmNvbXBvbmVudCc7XG5leHBvcnQgeyBjcmVhdGVSZXBvcnRSb3V0ZXMsIGJ3YXlzUmVwb3J0Um91dGVzLCB0eXBlIEJ3YXlzUmVwb3J0Um91dGVzT3B0aW9ucyB9IGZyb20gJy4vcmVwb3J0LXJvdXRlcyc7XG5leHBvcnQgeyBSZXBvcnRNZW51U2VydmljZSwgZ3JvdXBSZXBvcnRzQnlDYXRlZ29yeSB9IGZyb20gJy4vc2VydmljZXMvcmVwb3J0LW1lbnUuc2VydmljZSc7XG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXJvdXRlLm1vZGVscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J3YXlzLXJlcG9ydC9zcmMvbGliL2ZlYXR1cmVzL3JvdXRpbmcvbW9kZWxzL3JlcG9ydC1yb3V0ZS5tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENhbkFjdGl2YXRlRm4gfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydFJvdXRpbmdDb25maWcge1xuICAvKipcbiAgICogUm91dGUgcGF0aCBwYXJhbWV0ZXIgbmFtZSBmb3IgdGhlIHJlcG9ydCBJRC5cbiAgICogRGVmYXVsdHMgdG8gJ3JlcG9ydElkJy5cbiAgICovXG4gIHJlcG9ydElkUGFyYW0/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaW5jbHVkZSBkZXNpZ25lciByb3V0ZXMgKDpyZXBvcnRJZC9lZGl0IGFuZCBuZXcpLlxuICAgKiBEZWZhdWx0cyB0byB0cnVlLlxuICAgKi9cbiAgZW5hYmxlRGVzaWduZXJSb3V0ZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBSb3V0ZSBndWFyZHMgdG8gYXBwbHkgdG8gcnVudGltZSByZXBvcnQgcm91dGVzLlxuICAgKi9cbiAgcnVudGltZUd1YXJkcz86IChDYW5BY3RpdmF0ZUZuIHwgVHlwZTx1bmtub3duPilbXTtcblxuICAvKipcbiAgICogUm91dGUgZ3VhcmRzIHRvIGFwcGx5IHRvIGRlc2lnbmVyIHJvdXRlcyAoZS5nLiwgYWRtaW4gLyBhdXRob3Igcm9sZSkuXG4gICAqL1xuICBkZXNpZ25lckd1YXJkcz86IChDYW5BY3RpdmF0ZUZuIHwgVHlwZTx1bmtub3duPilbXTtcblxuICAvKipcbiAgICogQ3VzdG9tIGN1c3RvbWl6ZXIgZm9yIGdlbmVyYXRlZCByb3V0ZXMuXG4gICAqL1xuICBleHRyYVJvdXRlRGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXJvdXRlLm1vZGVscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J3YXlzLXJlcG9ydC9zcmMvbGliL2ZlYXR1cmVzL3JvdXRpbmcvbW9kZWxzL3JlcG9ydC1yb3V0ZS5tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENhbkFjdGl2YXRlRm4gfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydFJvdXRpbmdDb25maWcge1xuICAvKipcbiAgICogUm91dGUgcGF0aCBwYXJhbWV0ZXIgbmFtZSBmb3IgdGhlIHJlcG9ydCBJRC5cbiAgICogRGVmYXVsdHMgdG8gJ3JlcG9ydElkJy5cbiAgICovXG4gIHJlcG9ydElkUGFyYW0/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaW5jbHVkZSBkZXNpZ25lciByb3V0ZXMgKDpyZXBvcnRJZC9lZGl0IGFuZCBuZXcpLlxuICAgKiBEZWZhdWx0cyB0byB0cnVlLlxuICAgKi9cbiAgZW5hYmxlRGVzaWduZXJSb3V0ZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBSb3V0ZSBndWFyZHMgdG8gYXBwbHkgdG8gcnVudGltZSByZXBvcnQgcm91dGVzLlxuICAgKi9cbiAgcnVudGltZUd1YXJkcz86IChDYW5BY3RpdmF0ZUZuIHwgVHlwZTx1bmtub3duPilbXTtcblxuICAvKipcbiAgICogUm91dGUgZ3VhcmRzIHRvIGFwcGx5IHRvIGRlc2lnbmVyIHJvdXRlcyAoZS5nLiwgYWRtaW4gLyBhdXRob3Igcm9sZSkuXG4gICAqL1xuICBkZXNpZ25lckd1YXJkcz86IChDYW5BY3RpdmF0ZUZuIHwgVHlwZTx1bmtub3duPilbXTtcblxuICAvKipcbiAgICogQ3VzdG9tIGN1c3RvbWl6ZXIgZm9yIGdlbmVyYXRlZCByb3V0ZXMuXG4gICAqL1xuICBleHRyYVJvdXRlRGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydE1lbnVJdGVtIHtcbiAgaWQ6IHN0cmluZztcbiAgY29kZTogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGNhdGVnb3J5OiBzdHJpbmc7XG4gIHNsdWc6IHN0cmluZztcbiAgbWVudUdyb3VwPzogc3RyaW5nO1xuICBtZW51T3JkZXI/OiBudW1iZXI7XG4gIGljb24/OiBzdHJpbmc7XG4gIHJvdXRlOiBzdHJpbmc7XG4gIGlzRHJhZnQ/OiBib29sZWFuO1xuICB2ZXJzaW9uPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydE1lbnVHcm91cCB7XG4gIGNhdGVnb3J5OiBzdHJpbmc7XG4gIGRpc3BsYXlOYW1lOiBzdHJpbmc7XG4gIGl0ZW1zOiBSZXBvcnRNZW51SXRlbVtdO1xufVxuIl19
|
|
@@ -46,4 +46,45 @@ export function createReportRoutes(config) {
|
|
|
46
46
|
});
|
|
47
47
|
return routes;
|
|
48
48
|
}
|
|
49
|
-
|
|
49
|
+
/**
|
|
50
|
+
* Drop-in route definitions for bways-report.
|
|
51
|
+
*
|
|
52
|
+
* Example usage in host application `app.routes.ts`:
|
|
53
|
+
* ```typescript
|
|
54
|
+
* export const routes: Routes = [
|
|
55
|
+
* {
|
|
56
|
+
* path: 'reports',
|
|
57
|
+
* children: bwaysReportRoutes() // /reports/:slug -> live report page
|
|
58
|
+
* }
|
|
59
|
+
* ];
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
export function bwaysReportRoutes(options) {
|
|
63
|
+
const param = options?.slugParam ?? 'slug';
|
|
64
|
+
const routes = [];
|
|
65
|
+
if (options?.includeBuilder) {
|
|
66
|
+
routes.push({
|
|
67
|
+
path: 'new',
|
|
68
|
+
component: RoutedReportDesignerComponent,
|
|
69
|
+
canActivate: options.builderGuards ?? [],
|
|
70
|
+
data: { isNew: true, ...(options.extraData ?? {}) }
|
|
71
|
+
});
|
|
72
|
+
routes.push({
|
|
73
|
+
path: `:${param}/edit`,
|
|
74
|
+
component: RoutedReportDesignerComponent,
|
|
75
|
+
canActivate: options.builderGuards ?? [],
|
|
76
|
+
data: { isEdit: true, ...(options.extraData ?? {}) }
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
routes.push({
|
|
80
|
+
path: `:${param}`,
|
|
81
|
+
component: RoutedReportRuntimeComponent,
|
|
82
|
+
resolve: {
|
|
83
|
+
report: reportResolver
|
|
84
|
+
},
|
|
85
|
+
canActivate: options?.runtimeGuards ?? [],
|
|
86
|
+
data: { ...(options?.extraData ?? {}) }
|
|
87
|
+
});
|
|
88
|
+
return routes;
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXJvdXRlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J3YXlzLXJlcG9ydC9zcmMvbGliL2ZlYXR1cmVzL3JvdXRpbmcvcmVwb3J0LXJvdXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDN0QsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDNUYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFFOUY7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUFDLE1BQTRCO0lBQzdELE1BQU0sV0FBVyxHQUFHLE1BQU0sRUFBRSxhQUFhLElBQUksVUFBVSxDQUFDO0lBQ3hELE1BQU0sY0FBYyxHQUFHLE1BQU0sRUFBRSxvQkFBb0IsS0FBSyxLQUFLLENBQUM7SUFDOUQsTUFBTSxhQUFhLEdBQUcsTUFBTSxFQUFFLGFBQWEsSUFBSSxFQUFFLENBQUM7SUFDbEQsTUFBTSxjQUFjLEdBQUcsTUFBTSxFQUFFLGNBQWMsSUFBSSxFQUFFLENBQUM7SUFDcEQsTUFBTSxTQUFTLEdBQUcsTUFBTSxFQUFFLGNBQWMsSUFBSSxFQUFFLENBQUM7SUFFL0MsTUFBTSxNQUFNLEdBQVcsRUFBRSxDQUFDO0lBRTFCLElBQUksY0FBYyxFQUFFLENBQUM7UUFDbkIsTUFBTSxDQUFDLElBQUksQ0FBQztZQUNWLElBQUksRUFBRSxLQUFLO1lBQ1gsU0FBUyxFQUFFLDZCQUE2QjtZQUN4QyxXQUFXLEVBQUUsY0FBYztZQUMzQixJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsU0FBUyxFQUFFO1NBQ3BDLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDVixJQUFJLEVBQUUsSUFBSSxXQUFXLE9BQU87WUFDNUIsU0FBUyxFQUFFLDZCQUE2QjtZQUN4QyxXQUFXLEVBQUUsY0FBYztZQUMzQixJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsU0FBUyxFQUFFO1NBQ3JDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQ1YsSUFBSSxFQUFFLElBQUksV0FBVyxFQUFFO1FBQ3ZCLFNBQVMsRUFBRSw0QkFBNEI7UUFDdkMsT0FBTyxFQUFFO1lBQ1AsTUFBTSxFQUFFLGNBQWM7U0FDdkI7UUFDRCxXQUFXLEVBQUUsYUFBYTtRQUMxQixJQUFJLEVBQUUsRUFBRSxHQUFHLFNBQVMsRUFBRTtLQUN2QixDQUFDLENBQUM7SUFFSCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBaUNEOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxPQUFrQztJQUNsRSxNQUFNLEtBQUssR0FBRyxPQUFPLEVBQUUsU0FBUyxJQUFJLE1BQU0sQ0FBQztJQUMzQyxNQUFNLE1BQU0sR0FBVyxFQUFFLENBQUM7SUFFMUIsSUFBSSxPQUFPLEVBQUUsY0FBYyxFQUFFLENBQUM7UUFDNUIsTUFBTSxDQUFDLElBQUksQ0FBQztZQUNWLElBQUksRUFBRSxLQUFLO1lBQ1gsU0FBUyxFQUFFLDZCQUE2QjtZQUN4QyxXQUFXLEVBQUUsT0FBTyxDQUFDLGFBQWEsSUFBSSxFQUFFO1lBQ3hDLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLEVBQUU7U0FDcEQsQ0FBQyxDQUFDO1FBRUgsTUFBTSxDQUFDLElBQUksQ0FBQztZQUNWLElBQUksRUFBRSxJQUFJLEtBQUssT0FBTztZQUN0QixTQUFTLEVBQUUsNkJBQTZCO1lBQ3hDLFdBQVcsRUFBRSxPQUFPLENBQUMsYUFBYSxJQUFJLEVBQUU7WUFDeEMsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsRUFBRTtTQUNyRCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLElBQUksQ0FBQztRQUNWLElBQUksRUFBRSxJQUFJLEtBQUssRUFBRTtRQUNqQixTQUFTLEVBQUUsNEJBQTRCO1FBQ3ZDLE9BQU8sRUFBRTtZQUNQLE1BQU0sRUFBRSxjQUFjO1NBQ3ZCO1FBQ0QsV0FBVyxFQUFFLE9BQU8sRUFBRSxhQUFhLElBQUksRUFBRTtRQUN6QyxJQUFJLEVBQUUsRUFBRSxHQUFHLENBQUMsT0FBTyxFQUFFLFNBQVMsSUFBSSxFQUFFLENBQUMsRUFBRTtLQUN4QyxDQUFDLENBQUM7SUFFSCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm91dGVzIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFJlcG9ydFJvdXRpbmdDb25maWcgfSBmcm9tICcuL21vZGVscy9yZXBvcnQtcm91dGUubW9kZWxzJztcbmltcG9ydCB7IHJlcG9ydFJlc29sdmVyIH0gZnJvbSAnLi9yZXNvbHZlcnMvcmVwb3J0LnJlc29sdmVyJztcbmltcG9ydCB7IFJvdXRlZFJlcG9ydFJ1bnRpbWVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcm91dGVkLXJlcG9ydC1ydW50aW1lLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSb3V0ZWRSZXBvcnREZXNpZ25lckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9yb3V0ZWQtcmVwb3J0LWRlc2lnbmVyLmNvbXBvbmVudCc7XG5cbi8qKlxuICogR2VuZXJhdGVzIEFuZ3VsYXIgUm91dGUgZGVmaW5pdGlvbnMgZm9yIGR5bmFtaWMgcmVwb3J0aW5nIHBhZ2VzIGluIGEgaG9zdCBhcHBsaWNhdGlvbi5cbiAqXG4gKiBFeGFtcGxlIHVzYWdlIGluIGhvc3QgYXBwJ3MgYXBwLnJvdXRlcy50czpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGV4cG9ydCBjb25zdCByb3V0ZXM6IFJvdXRlcyA9IFtcbiAqICAge1xuICogICAgIHBhdGg6ICdyZXBvcnRzJyxcbiAqICAgICBjaGlsZHJlbjogY3JlYXRlUmVwb3J0Um91dGVzKClcbiAqICAgfVxuICogXTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmVwb3J0Um91dGVzKGNvbmZpZz86IFJlcG9ydFJvdXRpbmdDb25maWcpOiBSb3V0ZXMge1xuICBjb25zdCByZXBvcnRQYXJhbSA9IGNvbmZpZz8ucmVwb3J0SWRQYXJhbSA/PyAncmVwb3J0SWQnO1xuICBjb25zdCBlbmFibGVEZXNpZ25lciA9IGNvbmZpZz8uZW5hYmxlRGVzaWduZXJSb3V0ZXMgIT09IGZhbHNlO1xuICBjb25zdCBydW50aW1lR3VhcmRzID0gY29uZmlnPy5ydW50aW1lR3VhcmRzID8/IFtdO1xuICBjb25zdCBkZXNpZ25lckd1YXJkcyA9IGNvbmZpZz8uZGVzaWduZXJHdWFyZHMgPz8gW107XG4gIGNvbnN0IGV4dHJhRGF0YSA9IGNvbmZpZz8uZXh0cmFSb3V0ZURhdGEgPz8ge307XG5cbiAgY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXTtcblxuICBpZiAoZW5hYmxlRGVzaWduZXIpIHtcbiAgICByb3V0ZXMucHVzaCh7XG4gICAgICBwYXRoOiAnbmV3JyxcbiAgICAgIGNvbXBvbmVudDogUm91dGVkUmVwb3J0RGVzaWduZXJDb21wb25lbnQsXG4gICAgICBjYW5BY3RpdmF0ZTogZGVzaWduZXJHdWFyZHMsXG4gICAgICBkYXRhOiB7IGlzTmV3OiB0cnVlLCAuLi5leHRyYURhdGEgfVxuICAgIH0pO1xuXG4gICAgcm91dGVzLnB1c2goe1xuICAgICAgcGF0aDogYDoke3JlcG9ydFBhcmFtfS9lZGl0YCxcbiAgICAgIGNvbXBvbmVudDogUm91dGVkUmVwb3J0RGVzaWduZXJDb21wb25lbnQsXG4gICAgICBjYW5BY3RpdmF0ZTogZGVzaWduZXJHdWFyZHMsXG4gICAgICBkYXRhOiB7IGlzRWRpdDogdHJ1ZSwgLi4uZXh0cmFEYXRhIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJvdXRlcy5wdXNoKHtcbiAgICBwYXRoOiBgOiR7cmVwb3J0UGFyYW19YCxcbiAgICBjb21wb25lbnQ6IFJvdXRlZFJlcG9ydFJ1bnRpbWVDb21wb25lbnQsXG4gICAgcmVzb2x2ZToge1xuICAgICAgcmVwb3J0OiByZXBvcnRSZXNvbHZlclxuICAgIH0sXG4gICAgY2FuQWN0aXZhdGU6IHJ1bnRpbWVHdWFyZHMsXG4gICAgZGF0YTogeyAuLi5leHRyYURhdGEgfVxuICB9KTtcblxuICByZXR1cm4gcm91dGVzO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgYGJ3YXlzUmVwb3J0Um91dGVzYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCd2F5c1JlcG9ydFJvdXRlc09wdGlvbnMge1xuICAvKipcbiAgICogV2hldGhlciB0byBpbmNsdWRlIGRlc2lnbmVyL2J1aWxkZXIgcm91dGVzICgnbmV3JyBhbmQgJzpzbHVnL2VkaXQnKS5cbiAgICogRGVmYXVsdHMgdG8gZmFsc2UgKHNpbmNlIGRldmVsb3BlcnMgY2FuIGVtYmVkIDxid2F5cy1yZXBvcnQtYnVpbGRlcj4gZGlyZWN0bHkpLlxuICAgKi9cbiAgaW5jbHVkZUJ1aWxkZXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gcm91dGUgZ3VhcmRzIGZvciBsaXZlIHJlcG9ydCBwYWdlcy5cbiAgICovXG4gIHJ1bnRpbWVHdWFyZHM/OiBhbnlbXTtcblxuICAvKipcbiAgICogQ3VzdG9tIHJvdXRlIGd1YXJkcyBmb3IgYnVpbGRlci9kZXNpZ25lciBwYWdlcyBpZiBlbmFibGVkLlxuICAgKi9cbiAgYnVpbGRlckd1YXJkcz86IGFueVtdO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBjdXN0b20gcm91dGUgcGFyYW1ldGVyIG5hbWUuIERlZmF1bHRzIHRvICdzbHVnJy5cbiAgICovXG4gIHNsdWdQYXJhbT86IHN0cmluZztcblxuICAvKipcbiAgICogRXh0cmEgc3RhdGljIGRhdGEgcGFzc2VkIGludG8gdGhlIHJvdXRlIGRlZmluaXRpb25zLlxuICAgKi9cbiAgZXh0cmFEYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbi8qKlxuICogRHJvcC1pbiByb3V0ZSBkZWZpbml0aW9ucyBmb3IgYndheXMtcmVwb3J0LlxuICpcbiAqIEV4YW1wbGUgdXNhZ2UgaW4gaG9zdCBhcHBsaWNhdGlvbiBgYXBwLnJvdXRlcy50c2A6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBleHBvcnQgY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXG4gKiAgIHtcbiAqICAgICBwYXRoOiAncmVwb3J0cycsXG4gKiAgICAgY2hpbGRyZW46IGJ3YXlzUmVwb3J0Um91dGVzKCkgIC8vIC9yZXBvcnRzLzpzbHVnIC0+IGxpdmUgcmVwb3J0IHBhZ2VcbiAqICAgfVxuICogXTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gYndheXNSZXBvcnRSb3V0ZXMob3B0aW9ucz86IEJ3YXlzUmVwb3J0Um91dGVzT3B0aW9ucyk6IFJvdXRlcyB7XG4gIGNvbnN0IHBhcmFtID0gb3B0aW9ucz8uc2x1Z1BhcmFtID8/ICdzbHVnJztcbiAgY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXTtcblxuICBpZiAob3B0aW9ucz8uaW5jbHVkZUJ1aWxkZXIpIHtcbiAgICByb3V0ZXMucHVzaCh7XG4gICAgICBwYXRoOiAnbmV3JyxcbiAgICAgIGNvbXBvbmVudDogUm91dGVkUmVwb3J0RGVzaWduZXJDb21wb25lbnQsXG4gICAgICBjYW5BY3RpdmF0ZTogb3B0aW9ucy5idWlsZGVyR3VhcmRzID8/IFtdLFxuICAgICAgZGF0YTogeyBpc05ldzogdHJ1ZSwgLi4uKG9wdGlvbnMuZXh0cmFEYXRhID8/IHt9KSB9XG4gICAgfSk7XG5cbiAgICByb3V0ZXMucHVzaCh7XG4gICAgICBwYXRoOiBgOiR7cGFyYW19L2VkaXRgLFxuICAgICAgY29tcG9uZW50OiBSb3V0ZWRSZXBvcnREZXNpZ25lckNvbXBvbmVudCxcbiAgICAgIGNhbkFjdGl2YXRlOiBvcHRpb25zLmJ1aWxkZXJHdWFyZHMgPz8gW10sXG4gICAgICBkYXRhOiB7IGlzRWRpdDogdHJ1ZSwgLi4uKG9wdGlvbnMuZXh0cmFEYXRhID8/IHt9KSB9XG4gICAgfSk7XG4gIH1cblxuICByb3V0ZXMucHVzaCh7XG4gICAgcGF0aDogYDoke3BhcmFtfWAsXG4gICAgY29tcG9uZW50OiBSb3V0ZWRSZXBvcnRSdW50aW1lQ29tcG9uZW50LFxuICAgIHJlc29sdmU6IHtcbiAgICAgIHJlcG9ydDogcmVwb3J0UmVzb2x2ZXJcbiAgICB9LFxuICAgIGNhbkFjdGl2YXRlOiBvcHRpb25zPy5ydW50aW1lR3VhcmRzID8/IFtdLFxuICAgIGRhdGE6IHsgLi4uKG9wdGlvbnM/LmV4dHJhRGF0YSA/PyB7fSkgfVxuICB9KTtcblxuICByZXR1cm4gcm91dGVzO1xufVxuIl19
|
|
@@ -1,22 +1,20 @@
|
|
|
1
1
|
import { inject } from '@angular/core';
|
|
2
|
-
import { Router } from '@angular/router';
|
|
3
2
|
import { of } from 'rxjs';
|
|
4
3
|
import { catchError } from 'rxjs/operators';
|
|
5
4
|
import { ReportStoreService } from '../../persistence/services/report-store.service';
|
|
6
5
|
/**
|
|
7
6
|
* Functional resolver that fetches a ReportDefinition using ReportStoreService
|
|
8
|
-
* based on the :reportId route parameter.
|
|
7
|
+
* based on the :slug or :reportId route parameter.
|
|
9
8
|
*/
|
|
10
9
|
export const reportResolver = (route, _state) => {
|
|
11
10
|
const store = inject(ReportStoreService);
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
if (!reportId) {
|
|
11
|
+
const identifier = route.paramMap.get('slug') ?? route.paramMap.get('reportId');
|
|
12
|
+
if (!identifier) {
|
|
15
13
|
return of(null);
|
|
16
14
|
}
|
|
17
|
-
return store.
|
|
18
|
-
console.error(`[bways-report] Failed to resolve report
|
|
15
|
+
return store.loadReportBySlug(identifier).pipe(catchError((err) => {
|
|
16
|
+
console.error(`[bways-report] Failed to resolve report '${identifier}':`, err);
|
|
19
17
|
return of(null);
|
|
20
18
|
}));
|
|
21
19
|
};
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LnJlc29sdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYndheXMtcmVwb3J0L3NyYy9saWIvZmVhdHVyZXMvcm91dGluZy9yZXNvbHZlcnMvcmVwb3J0LnJlc29sdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkMsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsVUFBVSxFQUFPLE1BQU0sZ0JBQWdCLENBQUM7QUFFakQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFFckY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUF1QyxDQUNoRSxLQUE2QixFQUM3QixNQUEyQixFQUNVLEVBQUU7SUFDdkMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDekMsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFaEYsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2hCLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQzVDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1FBQ2pCLE9BQU8sQ0FBQyxLQUFLLENBQUMsNENBQTRDLFVBQVUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQy9FLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xCLENBQUMsQ0FBQyxDQUNILENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIFJlc29sdmVGbiwgUm91dGVyLCBSb3V0ZXJTdGF0ZVNuYXBzaG90IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBSZXBvcnREZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9tb2RlbHMnO1xuaW1wb3J0IHsgUmVwb3J0U3RvcmVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcGVyc2lzdGVuY2Uvc2VydmljZXMvcmVwb3J0LXN0b3JlLnNlcnZpY2UnO1xuXG4vKipcbiAqIEZ1bmN0aW9uYWwgcmVzb2x2ZXIgdGhhdCBmZXRjaGVzIGEgUmVwb3J0RGVmaW5pdGlvbiB1c2luZyBSZXBvcnRTdG9yZVNlcnZpY2VcbiAqIGJhc2VkIG9uIHRoZSA6c2x1ZyBvciA6cmVwb3J0SWQgcm91dGUgcGFyYW1ldGVyLlxuICovXG5leHBvcnQgY29uc3QgcmVwb3J0UmVzb2x2ZXI6IFJlc29sdmVGbjxSZXBvcnREZWZpbml0aW9uIHwgbnVsbD4gPSAoXG4gIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICBfc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3Rcbik6IE9ic2VydmFibGU8UmVwb3J0RGVmaW5pdGlvbiB8IG51bGw+ID0+IHtcbiAgY29uc3Qgc3RvcmUgPSBpbmplY3QoUmVwb3J0U3RvcmVTZXJ2aWNlKTtcbiAgY29uc3QgaWRlbnRpZmllciA9IHJvdXRlLnBhcmFtTWFwLmdldCgnc2x1ZycpID8/IHJvdXRlLnBhcmFtTWFwLmdldCgncmVwb3J0SWQnKTtcblxuICBpZiAoIWlkZW50aWZpZXIpIHtcbiAgICByZXR1cm4gb2YobnVsbCk7XG4gIH1cblxuICByZXR1cm4gc3RvcmUubG9hZFJlcG9ydEJ5U2x1ZyhpZGVudGlmaWVyKS5waXBlKFxuICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xuICAgICAgY29uc29sZS5lcnJvcihgW2J3YXlzLXJlcG9ydF0gRmFpbGVkIHRvIHJlc29sdmUgcmVwb3J0ICcke2lkZW50aWZpZXJ9JzpgLCBlcnIpO1xuICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgIH0pXG4gICk7XG59O1xuIl19
|
|
@@ -8,15 +8,20 @@ import * as i0 from "@angular/core";
|
|
|
8
8
|
export function groupReportsByCategory(reports, basePath = '/reports') {
|
|
9
9
|
const groupsMap = new Map();
|
|
10
10
|
for (const report of reports) {
|
|
11
|
-
const category = report.category || 'General';
|
|
11
|
+
const category = report.menuGroup || report.category || 'General';
|
|
12
12
|
const items = groupsMap.get(category) ?? [];
|
|
13
13
|
const cleanBase = basePath.endsWith('/') ? basePath.slice(0, -1) : basePath;
|
|
14
|
+
const slug = report.slug ?? report.id;
|
|
14
15
|
const item = {
|
|
15
16
|
id: report.id,
|
|
16
17
|
code: report.id,
|
|
17
18
|
name: report.name,
|
|
18
19
|
category,
|
|
19
|
-
|
|
20
|
+
slug,
|
|
21
|
+
menuGroup: report.menuGroup,
|
|
22
|
+
menuOrder: report.menuOrder,
|
|
23
|
+
icon: report.icon,
|
|
24
|
+
route: `${cleanBase}/${slug}`,
|
|
20
25
|
isDraft: !report.isPublished,
|
|
21
26
|
version: report.version
|
|
22
27
|
};
|
|
@@ -26,7 +31,12 @@ export function groupReportsByCategory(reports, basePath = '/reports') {
|
|
|
26
31
|
return Array.from(groupsMap.entries()).map(([category, items]) => ({
|
|
27
32
|
category,
|
|
28
33
|
displayName: category,
|
|
29
|
-
items: items.sort((a, b) =>
|
|
34
|
+
items: items.sort((a, b) => {
|
|
35
|
+
if (a.menuOrder !== undefined && b.menuOrder !== undefined) {
|
|
36
|
+
return a.menuOrder - b.menuOrder;
|
|
37
|
+
}
|
|
38
|
+
return a.name.localeCompare(b.name);
|
|
39
|
+
})
|
|
30
40
|
})).sort((a, b) => a.displayName.localeCompare(b.displayName));
|
|
31
41
|
}
|
|
32
42
|
/**
|
|
@@ -74,4 +84,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
74
84
|
providedIn: 'root'
|
|
75
85
|
}]
|
|
76
86
|
}] });
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LW1lbnUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J3YXlzLXJlcG9ydC9zcmMvbGliL2ZlYXR1cmVzL3JvdXRpbmcvc2VydmljZXMvcmVwb3J0LW1lbnUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDOztBQUdyRjs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsc0JBQXNCLENBQ3BDLE9BQXdCLEVBQ3hCLFdBQW1CLFVBQVU7SUFFN0IsTUFBTSxTQUFTLEdBQUcsSUFBSSxHQUFHLEVBQTRCLENBQUM7SUFFdEQsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUM3QixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxJQUFJLE1BQU0sQ0FBQyxRQUFRLElBQUksU0FBUyxDQUFDO1FBQ2xFLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRTVDLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUM1RSxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDdEMsTUFBTSxJQUFJLEdBQW1CO1lBQzNCLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRTtZQUNiLElBQUksRUFBRSxNQUFNLENBQUMsRUFBRTtZQUNmLElBQUksRUFBRSxNQUFNLENB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LENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBYTtRQUMxQixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDekMsQ0FBQzt3R0ExQ1UsaUJBQWlCOzRHQUFqQixpQkFBaUIsY0FGaEIsTUFBTTs7NEZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGNvbXB1dGVkLCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVwb3J0U3VtbWFyeSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvbW9kZWxzJztcbmltcG9ydCB7IFJlcG9ydFN0b3JlU2VydmljZSB9IGZyb20gJy4uLy4uL3BlcnNpc3RlbmNlL3NlcnZpY2VzL3JlcG9ydC1zdG9yZS5zZXJ2aWNlJztcbmltcG9ydCB7IFJlcG9ydE1lbnVHcm91cCwgUmVwb3J0TWVudUl0ZW0gfSBmcm9tICcuLi9tb2RlbHMvcmVwb3J0LXJvdXRlLm1vZGVscyc7XG5cbi8qKlxuICogUHVyZSBoZWxwZXIgZnVuY3Rpb24gdG8gdHJhbnNmb3JtIGZsYXQgUmVwb3J0U3VtbWFyeSBhcnJheSBpbnRvIGhpZXJhcmNoaWNhbFxuICogbWVudSBncm91cHMgZm9yIGhvc3QgRVJQIG5hdmlnYXRpb24gc2lkZWJhcnMgb3IgZHJvcGRvd25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3JvdXBSZXBvcnRzQnlDYXRlZ29yeShcbiAgcmVwb3J0czogUmVwb3J0U3VtbWFyeVtdLFxuICBiYXNlUGF0aDogc3RyaW5nID0gJy9yZXBvcnRzJ1xuKTogUmVwb3J0TWVudUdyb3VwW10ge1xuICBjb25zdCBncm91cHNNYXAgPSBuZXcgTWFwPHN0cmluZywgUmVwb3J0TWVudUl0ZW1bXT4oKTtcblxuICBmb3IgKGNvbnN0IHJlcG9ydCBvZiByZXBvcnRzKSB7XG4gICAgY29uc3QgY2F0ZWdvcnkgPSByZXBvcnQubWVudUdyb3VwIHx8IHJlcG9ydC5jYXRlZ29yeSB8fCAnR2VuZXJhbCc7XG4gICAgY29uc3QgaXRlbXMgPSBncm91cHNNYXAuZ2V0KGNhdGVnb3J5KSA/PyBbXTtcblxuICAgIGNvbnN0IGNsZWFuQmFzZSA9IGJhc2VQYXRoLmVuZHNXaXRoKCcvJykgPyBiYXNlUGF0aC5zbGljZSgwLCAtMSkgOiBiYXNlUGF0aDtcbiAgICBjb25zdCBzbHVnID0gcmVwb3J0LnNsdWcgPz8gcmVwb3J0LmlkO1xuICAgIGNvbnN0IGl0ZW06IFJlcG9ydE1lbnVJdGVtID0ge1xuICAgICAgaWQ6IHJlcG9ydC5pZCxcbiAgICAgIGNvZGU6IHJlcG9ydC5pZCxcbiAgICAgIG5hbWU6IHJlcG9ydC5uYW1lLFxuICAgICAgY2F0ZWdvcnksXG4gICAgICBzbHVnLFxuICAgICAgbWVudUdyb3VwOiByZXBvcnQubWVudUdyb3VwLFxuICAgICAgbWVudU9yZGVyOiByZXBvcnQubWVudU9yZGVyLFxuICAgICAgaWNvbjogcmVwb3J0Lmljb24sXG4gICAgICByb3V0ZTogYCR7Y2xlYW5CYXNlfS8ke3NsdWd9YCxcbiAgICAgIGlzRHJhZnQ6ICFyZXBvcnQuaXNQdWJsaXNoZWQsXG4gICAgICB2ZXJzaW9uOiByZXBvcnQudmVyc2lvblxuICAgIH07XG5cbiAgICBpdGVtcy5wdXNoKGl0ZW0pO1xuICAgIGdyb3Vwc01hcC5zZXQoY2F0ZWdvcnksIGl0ZW1zKTtcbiAgfVxuXG4gIHJldHVybiBBcnJheS5mcm9tKGdyb3Vwc01hcC5lbnRyaWVzKCkpLm1hcCgoW2NhdGVnb3J5LCBpdGVtc10pID0+ICh7XG4gICAgY2F0ZWdvcnksXG4gICAgZGlzcGxheU5hbWU6IGNhdGVnb3J5LFxuICAgIGl0ZW1zOiBpdGVtcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICBpZiAoYS5tZW51T3JkZXIgIT09IHVuZGVmaW5lZCAmJiBiLm1lbnVPcmRlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBhLm1lbnVPcmRlciAtIGIubWVudU9yZGVyO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSk7XG4gICAgfSlcbiAgfSkpLnNvcnQoKGEsIGIpID0+IGEuZGlzcGxheU5hbWUubG9jYWxlQ29tcGFyZShiLmRpc3BsYXlOYW1lKSk7XG59XG5cbi8qKlxuICogUmVhY3RpdmUgc2VydmljZSBwcm92aWRpbmcgZHluYW1pY2FsbHkgY29tcHV0ZWQgbWVudSBncm91cHMgYW5kIGl0ZW1zXG4gKiBmcm9tIHRoZSBhY3RpdmUgUmVwb3J0U3RvcmVTZXJ2aWNlIGZvciBob3N0IEVSUCBzaWRlYmFyIG5hdmlnYXRpb24uXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFJlcG9ydE1lbnVTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBzdG9yZSA9IGluamVjdChSZXBvcnRTdG9yZVNlcnZpY2UpO1xuXG4gIHJlYWRvbmx5IGJhc2VQYXRoID0gc2lnbmFsPHN0cmluZz4oJy9yZXBvcnRzJyk7XG4gIHJlYWRvbmx5IHNlYXJjaFF1ZXJ5ID0gc2lnbmFsPHN0cmluZz4oJycpO1xuXG4gIC8qKlxuICAgKiBDb21wdXRlZCBoaWVyYXJjaGljYWwgbWVudSBncm91cHMgZ3JvdXBlZCBieSByZXBvcnQgY2F0ZWdvcnkuXG4gICAqL1xuICByZWFkb25seSBtZW51R3JvdXBzID0gY29tcHV0ZWQ8UmVwb3J0TWVudUdyb3VwW10+KCgpID0+IHtcbiAgICBjb25zdCBhbGxSZXBvcnRzID0gdGhpcy5zdG9yZS5zdW1tYXJpZXMoKTtcbiAgICBjb25zdCBxdWVyeSA9IHRoaXMuc2VhcmNoUXVlcnkoKS50cmltKCkudG9Mb3dlckNhc2UoKTtcblxuICAgIGNvbnN0IGZpbHRlcmVkID0gcXVlcnlcbiAgICAgID8gYWxsUmVwb3J0cy5maWx0ZXIoXG4gICAgICAgICAgKHI6IFJlcG9ydFN1bW1hcnkpID0+XG4gICAgICAgICAgICByLm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxdWVyeSkgfHxcbiAgICAgICAgICAgIHIuaWQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxdWVyeSkgfHxcbiAgICAgICAgICAgIHIuY2F0ZWdvcnk/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocXVlcnkpXG4gICAgICAgIClcbiAgICAgIDogYWxsUmVwb3J0cztcblxuICAgIHJldHVybiBncm91cFJlcG9ydHNCeUNhdGVnb3J5KGZpbHRlcmVkLCB0aGlzLmJhc2VQYXRoKCkpO1xuICB9KTtcblxuICAvKipcbiAgICogVG90YWwgY291bnQgb2YgYXZhaWxhYmxlIHJlcG9ydHMgaW4gdGhlIG1lbnUuXG4gICAqL1xuICByZWFkb25seSB0b3RhbFJlcG9ydHNDb3VudCA9IGNvbXB1dGVkPG51bWJlcj4oKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLnN1bW1hcmllcygpLmxlbmd0aDtcbiAgfSk7XG5cbiAgc2V0QmFzZVBhdGgocGF0aDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5iYXNlUGF0aC5zZXQocGF0aCk7XG4gIH1cblxuICBzZXRTZWFyY2hRdWVyeShxdWVyeTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hRdWVyeS5zZXQocXVlcnkpO1xuICB9XG5cbiAgcmVmcmVzaE1lbnUoKTogdm9pZCB7XG4gICAgdGhpcy5zdG9yZS5sb2FkU3VtbWFyaWVzKCkuc3Vic2NyaWJlKCk7XG4gIH1cbn1cblxuIl19
|
|
@@ -73,11 +73,30 @@ export class DynamicRendererComponent {
|
|
|
73
73
|
return calculateGridRow(comp);
|
|
74
74
|
}
|
|
75
75
|
getComponentHeight(comp) {
|
|
76
|
+
if (this.isFormInput(comp.type)) {
|
|
77
|
+
const h = comp.layout?.height;
|
|
78
|
+
if (h === '85px' || !h || h === 'auto')
|
|
79
|
+
return 'auto';
|
|
80
|
+
}
|
|
76
81
|
return resolveComponentHeight(comp);
|
|
77
82
|
}
|
|
78
83
|
getComponentMinHeight(comp) {
|
|
84
|
+
if (this.isFormInput(comp.type)) {
|
|
85
|
+
const minH = comp.layout?.minHeight;
|
|
86
|
+
if (minH === '85px' || !minH || minH === 'auto')
|
|
87
|
+
return 'auto';
|
|
88
|
+
}
|
|
79
89
|
return resolveComponentMinHeight(comp);
|
|
80
90
|
}
|
|
91
|
+
isFormInput(type) {
|
|
92
|
+
return (type === 'input' ||
|
|
93
|
+
type === 'dropdown' ||
|
|
94
|
+
type === 'date' ||
|
|
95
|
+
type === 'date-range' ||
|
|
96
|
+
type === 'number' ||
|
|
97
|
+
type === 'checkbox' ||
|
|
98
|
+
type === 'button');
|
|
99
|
+
}
|
|
81
100
|
isComponentVisible(comp) {
|
|
82
101
|
const vis = comp.visibility;
|
|
83
102
|
if (!vis)
|
|
@@ -336,7 +355,7 @@ export class DynamicRendererComponent {
|
|
|
336
355
|
}
|
|
337
356
|
}
|
|
338
357
|
</div>
|
|
339
|
-
`, isInline: true, styles: [":host{display:block;width:100%;box-sizing:border-box;font-family:var(--rpt-font-family, inherit)}.rpt-renderer-root{width:100%;box-sizing:border-box}.rpt-header{margin-bottom:20px}.rpt-title{font-size:var(--rpt-font-size-xl, 1.5rem);font-weight:700;color:var(--rpt-color-text, #0f172a);margin:0 0 6px;letter-spacing:-.02em}.rpt-description{font-size:var(--rpt-font-size-base, .875rem);color:var(--rpt-color-text-muted, #64748b);margin:0}.rpt-form{margin-bottom:24px}.rpt-layout-grid{display:grid;width:100%;align-items:
|
|
358
|
+
`, isInline: true, styles: [":host{display:block;width:100%;box-sizing:border-box;font-family:var(--rpt-font-family, inherit)}.rpt-renderer-root{width:100%;box-sizing:border-box}.rpt-header{margin-bottom:20px}.rpt-title{font-size:var(--rpt-font-size-xl, 1.5rem);font-weight:700;color:var(--rpt-color-text, #0f172a);margin:0 0 6px;letter-spacing:-.02em}.rpt-description{font-size:var(--rpt-font-size-base, .875rem);color:var(--rpt-color-text-muted, #64748b);margin:0}.rpt-form{margin-bottom:24px}.rpt-layout-grid{display:grid;width:100%;align-items:start}.rpt-cell{box-sizing:border-box;min-width:0;display:flex;flex-direction:column}.rpt-cell>*{width:100%;display:flex;flex-direction:column;min-height:0;box-sizing:border-box}.rpt-unregistered-placeholder{padding:8px 12px;font-size:var(--rpt-font-size-sm, .75rem);color:var(--rpt-color-danger, #ef4444);background-color:var(--rpt-color-danger-bg, #fef2f2);border:1px dashed var(--rpt-color-danger, #ef4444);border-radius:var(--rpt-border-radius, 6px)}.rpt-grid-section{width:100%;margin-top:16px}.rpt-grid-initial-state{padding:12px 0}.grid-initial-card{border:2px dashed var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-xl, 12px);background:var(--rpt-color-surface, #ffffff);padding:48px 24px;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:var(--rpt-box-shadow-xs, 0 1px 2px rgba(0, 0, 0, .04))}.grid-initial-icon{width:52px;height:52px;border-radius:12px;background:#eff6ff;color:var(--rpt-color-primary, #2563eb);display:flex;align-items:center;justify-content:center;margin-bottom:14px}.grid-initial-title{font-size:var(--rpt-font-size-md, 1rem);font-weight:700;color:var(--rpt-color-text, #0f172a);margin:0 0 6px}.grid-initial-desc{font-size:var(--rpt-font-size-sm, .8125rem);color:var(--rpt-color-text-muted, #64748b);max-width:460px;line-height:1.5;margin:0 0 20px}.btn-grid-initial-exec{padding:8px 20px;background:var(--rpt-color-primary, #2563eb);color:#fff;border:none;border-radius:var(--rpt-border-radius, 6px);font-size:var(--rpt-font-size-sm, .75rem);font-weight:600;cursor:pointer;box-shadow:0 1px 3px #2563eb33;transition:all var(--rpt-transition-speed, .15s) ease}.btn-grid-initial-exec:hover{background:var(--rpt-color-primary-hover, #1d4ed8);transform:translateY(-1px)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: ReportGridBridgeComponent, selector: "rpt-grid-bridge", inputs: ["gridDefinition", "data"], outputs: ["gridStateChange", "columnDefsChange", "rowClick", "selectionChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
340
359
|
}
|
|
341
360
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DynamicRendererComponent, decorators: [{
|
|
342
361
|
type: Component,
|
|
@@ -423,6 +442,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
423
442
|
}
|
|
424
443
|
}
|
|
425
444
|
</div>
|
|
426
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;width:100%;box-sizing:border-box;font-family:var(--rpt-font-family, inherit)}.rpt-renderer-root{width:100%;box-sizing:border-box}.rpt-header{margin-bottom:20px}.rpt-title{font-size:var(--rpt-font-size-xl, 1.5rem);font-weight:700;color:var(--rpt-color-text, #0f172a);margin:0 0 6px;letter-spacing:-.02em}.rpt-description{font-size:var(--rpt-font-size-base, .875rem);color:var(--rpt-color-text-muted, #64748b);margin:0}.rpt-form{margin-bottom:24px}.rpt-layout-grid{display:grid;width:100%;align-items:
|
|
445
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;width:100%;box-sizing:border-box;font-family:var(--rpt-font-family, inherit)}.rpt-renderer-root{width:100%;box-sizing:border-box}.rpt-header{margin-bottom:20px}.rpt-title{font-size:var(--rpt-font-size-xl, 1.5rem);font-weight:700;color:var(--rpt-color-text, #0f172a);margin:0 0 6px;letter-spacing:-.02em}.rpt-description{font-size:var(--rpt-font-size-base, .875rem);color:var(--rpt-color-text-muted, #64748b);margin:0}.rpt-form{margin-bottom:24px}.rpt-layout-grid{display:grid;width:100%;align-items:start}.rpt-cell{box-sizing:border-box;min-width:0;display:flex;flex-direction:column}.rpt-cell>*{width:100%;display:flex;flex-direction:column;min-height:0;box-sizing:border-box}.rpt-unregistered-placeholder{padding:8px 12px;font-size:var(--rpt-font-size-sm, .75rem);color:var(--rpt-color-danger, #ef4444);background-color:var(--rpt-color-danger-bg, #fef2f2);border:1px dashed var(--rpt-color-danger, #ef4444);border-radius:var(--rpt-border-radius, 6px)}.rpt-grid-section{width:100%;margin-top:16px}.rpt-grid-initial-state{padding:12px 0}.grid-initial-card{border:2px dashed var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-xl, 12px);background:var(--rpt-color-surface, #ffffff);padding:48px 24px;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:var(--rpt-box-shadow-xs, 0 1px 2px rgba(0, 0, 0, .04))}.grid-initial-icon{width:52px;height:52px;border-radius:12px;background:#eff6ff;color:var(--rpt-color-primary, #2563eb);display:flex;align-items:center;justify-content:center;margin-bottom:14px}.grid-initial-title{font-size:var(--rpt-font-size-md, 1rem);font-weight:700;color:var(--rpt-color-text, #0f172a);margin:0 0 6px}.grid-initial-desc{font-size:var(--rpt-font-size-sm, .8125rem);color:var(--rpt-color-text-muted, #64748b);max-width:460px;line-height:1.5;margin:0 0 20px}.btn-grid-initial-exec{padding:8px 20px;background:var(--rpt-color-primary, #2563eb);color:#fff;border:none;border-radius:var(--rpt-border-radius, 6px);font-size:var(--rpt-font-size-sm, .75rem);font-weight:600;cursor:pointer;box-shadow:0 1px 3px #2563eb33;transition:all var(--rpt-transition-speed, .15s) ease}.btn-grid-initial-exec:hover{background:var(--rpt-color-primary-hover, #1d4ed8);transform:translateY(-1px)}\n"] }]
|
|
427
446
|
}] });
|
|
428
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1yZW5kZXJlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9mZWF0dXJlcy9ydW50aW1lL2R5bmFtaWMtcmVuZGVyZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBS3pDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzNFLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsZ0JBQWdCLEVBQ2hCLHNCQUFzQixFQUN0Qix5QkFBeUIsRUFDMUIsTUFBTSwwQ0FBMEMsQ0FBQzs7OztBQWtObEQsTUFBTSxPQUFPLHdCQUF3QjtJQUNsQixRQUFRLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDckMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3pDLE1B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QUksV0FDUCxDQUFDLFlBQVksRUFBRSxtQkFBbUIsRUFBRSx5QkFBeUIsQ0FBQyxZQUM3RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtRlQsbUJBdUhnQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgVHlwZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFJlcG9ydERlZmluaXRpb24gfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscy9yZXBvcnQtZGVmaW5pdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBSZXBvcnRDb21wb25lbnREZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMvcmVwb3J0LWNvbXBvbmVudC5tb2RlbCc7XG5pbXBvcnQgeyBDb21wb25lbnRBY3Rpb25EZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMvY29tcG9uZW50LWV2ZW50Lm1vZGVsJztcbmltcG9ydCB7IEdyaWRDb2x1bW5EZWZpbml0aW9uLCBHcmlkUm93Q2xpY2tBY3Rpb24gfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscy9yZXBvcnQtZ3JpZC5tb2RlbCc7XG5pbXBvcnQgeyBDb21wb25lbnRSZWdpc3RyeSB9IGZyb20gJy4uLy4uL2NvcmUvcmVnaXN0cnkvY29tcG9uZW50LXJlZ2lzdHJ5JztcbmltcG9ydCB7IER5bmFtaWNGb3JtQnVpbGRlciB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvZHluYW1pYy1mb3JtLWJ1aWxkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBSZXBvcnRFeHBvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vZXhwb3J0L3NlcnZpY2VzL3JlcG9ydC1leHBvcnQuc2VydmljZSc7XG5pbXBvcnQgeyBSZXBvcnRTZXNzaW9uQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL3JlcG9ydC1zZXNzaW9uLWNvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBnZXRGaWVsZENhc2VJbnNlbnNpdGl2ZSB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMvZGF0YS1ub3JtYWxpemF0aW9uLnV0aWwnO1xuaW1wb3J0IHsgUmVwb3J0R3JpZEJyaWRnZUNvbXBvbmVudCB9IGZyb20gJy4vcmVwb3J0LWdyaWQtYnJpZGdlLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBjYWxjdWxhdGVHcmlkQ29sdW1uLFxuICBjYWxjdWxhdGVHcmlkUm93LFxuICByZXNvbHZlQ29tcG9uZW50SGVpZ2h0LFxuICByZXNvbHZlQ29tcG9uZW50TWluSGVpZ2h0XG59IGZyb20gJy4uL2Rlc2lnbmVyL3V0aWxpdGllcy9jYW52YXMtbGF5b3V0LnV0aWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdycHQtZHluYW1pYy1yZW5kZXJlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFJlcG9ydEdyaWRCcmlkZ2VDb21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwicnB0LXJlbmRlcmVyLXJvb3RcIlxuICAgICAgW3N0eWxlLmRpcmVjdGlvbl09XCJkZWZpbml0aW9uKCkubGF5b3V0LmRpcmVjdGlvbiB8fCAnbHRyJ1wiXG4gICAgICBbc3R5bGUucGFkZGluZy5weF09XCJkZWZpbml0aW9uKCkubGF5b3V0LnBhZGRpbmcgPz8gMjRcIlxuICAgID5cbiAgICAgIDwhLS0gUmVwb3J0IEhlYWRlciAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJycHQtaGVhZGVyXCI+XG4gICAgICAgIDxoMiBjbGFzcz1cInJwdC10aXRsZVwiPnt7IGRlZmluaXRpb24oKS5uYW1lIH19PC9oMj5cbiAgICAgICAgQGlmIChkZWZpbml0aW9uKCkuZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICA8cCBjbGFzcz1cInJwdC1kZXNjcmlwdGlvblwiPnt7IGRlZmluaXRpb24oKS5kZXNjcmlwdGlvbiB9fTwvcD5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gQ29udHJvbHMgRm9ybSAvIFBhcmFtZXRlciBGaWx0ZXIgQmFyIC0tPlxuICAgICAgQGlmIChkZWZpbml0aW9uKCkuY29tcG9uZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybSgpXCIgKG5nU3VibWl0KT1cIm9uU3VibWl0KClcIiBjbGFzcz1cInJwdC1mb3JtXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJycHQtbGF5b3V0LWdyaWRcIlxuICAgICAgICAgICAgW3N0eWxlLmdyaWQtdGVtcGxhdGUtY29sdW1uc109XCJncmlkQ29sdW1uc1RlbXBsYXRlKClcIlxuICAgICAgICAgICAgW3N0eWxlLmdhcC5weF09XCJkZWZpbml0aW9uKCkubGF5b3V0LmdhcCA/PyAxNlwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgQGZvciAoY29tcCBvZiBzb3J0ZWRDb21wb25lbnRzKCk7IHRyYWNrIGNvbXAuaWQpIHtcbiAgICAgICAgICAgICAgQGlmIChpc0NvbXBvbmVudFZpc2libGUoY29tcCkpIHtcbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInJwdC1jZWxsXCJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5ncmlkLWNvbHVtbl09XCJnZXRHcmlkQ29sdW1uKGNvbXApXCJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5ncmlkLXJvd109XCJnZXRHcmlkUm93KGNvbXApXCJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb21wLmxheW91dD8ud2lkdGggfHwgJ2F1dG8nXCJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHRdPVwiZ2V0Q29tcG9uZW50SGVpZ2h0KGNvbXApXCJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5taW4taGVpZ2h0XT1cImdldENvbXBvbmVudE1pbkhlaWdodChjb21wKVwiXG4gICAgICAgICAgICAgICAgICBbc3R5bGUubWF4LWhlaWdodF09XCJjb21wLmxheW91dD8ubWF4SGVpZ2h0IHx8ICdub25lJ1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgQGlmIChyZXNvbHZlQ29tcG9uZW50KGNvbXAudHlwZSk7IGFzIGNvbXBDbGFzcykge1xuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgW25nQ29tcG9uZW50T3V0bGV0XT1cImNvbXBDbGFzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgW25nQ29tcG9uZW50T3V0bGV0SW5wdXRzXT1cImdldENvbXBvbmVudElucHV0cyhjb21wKVwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJwdC11bnJlZ2lzdGVyZWQtcGxhY2Vob2xkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICBVbmtub3duIGNvbXBvbmVudDogPGNvZGU+e3sgY29tcC50eXBlIH19PC9jb2RlPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Zvcm0+XG4gICAgICB9XG5cbiAgICAgIDwhLS0gUmVzdWx0IEdyaWQgU2VjdGlvbiAtLT5cbiAgICAgIEBpZiAoZGVmaW5pdGlvbigpLmdyaWQpIHtcbiAgICAgICAgQGlmIChyZXN1bHREYXRhKCkgIT09IG51bGwgJiYgcmVzdWx0RGF0YSgpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicnB0LWdyaWQtc2VjdGlvblwiPlxuICAgICAgICAgICAgPHJwdC1ncmlkLWJyaWRnZVxuICAgICAgICAgICAgICBbZ3JpZERlZmluaXRpb25dPVwiZGVmaW5pdGlvbigpLmdyaWQhXCJcbiAgICAgICAgICAgICAgW2RhdGFdPVwicmVzdWx0RGF0YSgpIVwiXG4gICAgICAgICAgICAgIChncmlkU3RhdGVDaGFuZ2UpPVwiZ3JpZFN0YXRlQ2hhbmdlZC5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAoY29sdW1uRGVmc0NoYW5nZSk9XCJjb2x1bW5EZWZzQ2hhbmdlZC5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAocm93Q2xpY2spPVwib25HcmlkUm93Q2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25HcmlkU2VsZWN0aW9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJwdC1ncmlkLXNlY3Rpb24gcnB0LWdyaWQtaW5pdGlhbC1zdGF0ZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQtaW5pdGlhbC1jYXJkXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkLWluaXRpYWwtaWNvblwiPlxuICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIyOFwiIGhlaWdodD1cIjI4XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS44XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+XG4gICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTMgM2gxOHYxOEgzek0zIDloMThNMyAxNWgxOE05IDN2MThNMTUgM3YxOFwiLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxoNCBjbGFzcz1cImdyaWQtaW5pdGlhbC10aXRsZVwiPlJlcG9ydCBSZWFkeSB0byBFeGVjdXRlPC9oND5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJncmlkLWluaXRpYWwtZGVzY1wiPlxuICAgICAgICAgICAgICAgIENvbmZpZ3VyZSBmaWx0ZXIgcGFyYW1ldGVycyBhYm92ZSBhbmQgZXhlY3V0ZSB0aGUgcmVwb3J0IHRvIHJldHJpZXZlIGxpdmUgcmVjb3JkcyBpbnRvIHRoZSBncmlkICh7eyBkZWZpbml0aW9uKCkuZ3JpZD8uY29sdW1ucz8ubGVuZ3RoID8/IDAgfX0gY29sdW1ucyBjb25maWd1cmVkKS5cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1ncmlkLWluaXRpYWwtZXhlY1wiIChjbGljayk9XCJvblN1Ym1pdCgpXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+RXhlY3V0ZSBSZXBvcnQ8L3NwYW4+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbYFxuICAgIDpob3N0IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgZm9udC1mYW1pbHk6IHZhcigtLXJwdC1mb250LWZhbWlseSwgaW5oZXJpdCk7XG4gICAgfVxuICAgIC5ycHQtcmVuZGVyZXItcm9vdCB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgfVxuICAgIC5ycHQtaGVhZGVyIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgfVxuICAgIC5ycHQtdGl0bGUge1xuICAgICAgZm9udC1zaXplOiB2YXIoLS1ycHQtZm9udC1zaXplLXhsLCAxLjVyZW0pO1xuICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItdGV4dCwgIzBmMTcyYSk7XG4gICAgICBtYXJnaW46IDAgMCA2cHggMDtcbiAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMmVtO1xuICAgIH1cbiAgICAucnB0LWRlc2NyaXB0aW9uIHtcbiAgICAgIGZvbnQtc2l6ZTogdmFyKC0tcnB0LWZvbnQtc2l6ZS1iYXNlLCAwLjg3NXJlbSk7XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LWNvbG9yLXRleHQtbXV0ZWQsICM2NDc0OGIpO1xuICAgICAgbWFyZ2luOiAwO1xuICAgIH1cbiAgICAucnB0LWZvcm0ge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDtcbiAgICB9XG4gICAgLnJwdC1sYXlvdXQtZ3JpZCB7XG4gICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgICB9XG4gICAgLnJwdC1jZWxsIHtcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICBtaW4td2lkdGg6IDA7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICB9XG4gICAgLnJwdC1jZWxsID4gKiB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIGZsZXg6IDE7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgIG1pbi1oZWlnaHQ6IDA7XG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIH1cbiAgICAucnB0LXVucmVnaXN0ZXJlZC1wbGFjZWhvbGRlciB7XG4gICAgICBwYWRkaW5nOiA4cHggMTJweDtcbiAgICAgIGZvbnQtc2l6ZTogdmFyKC0tcnB0LWZvbnQtc2l6ZS1zbSwgMC43NXJlbSk7XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LWNvbG9yLWRhbmdlciwgI2VmNDQ0NCk7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ycHQtY29sb3ItZGFuZ2VyLWJnLCAjZmVmMmYyKTtcbiAgICAgIGJvcmRlcjogMXB4IGRhc2hlZCB2YXIoLS1ycHQtY29sb3ItZGFuZ2VyLCAjZWY0NDQ0KTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJwdC1ib3JkZXItcmFkaXVzLCA2cHgpO1xuICAgIH1cbiAgICAucnB0LWdyaWQtc2VjdGlvbiB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIG1hcmdpbi10b3A6IDE2cHg7XG4gICAgfVxuICAgIC5ycHQtZ3JpZC1pbml0aWFsLXN0YXRlIHtcbiAgICAgIHBhZGRpbmc6IDEycHggMDtcbiAgICB9XG4gICAgLmdyaWQtaW5pdGlhbC1jYXJkIHtcbiAgICAgIGJvcmRlcjogMnB4IGRhc2hlZCB2YXIoLS1ycHQtY29sb3ItYm9yZGVyLCAjY2JkNWUxKTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJwdC1ib3JkZXItcmFkaXVzLXhsLCAxMnB4KTtcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLXJwdC1jb2xvci1zdXJmYWNlLCAjZmZmZmZmKTtcbiAgICAgIHBhZGRpbmc6IDQ4cHggMjRweDtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgYm94LXNoYWRvdzogdmFyKC0tcnB0LWJveC1zaGFkb3cteHMsIDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMDQpKTtcbiAgICB9XG4gICAgLmdyaWQtaW5pdGlhbC1pY29uIHtcbiAgICAgIHdpZHRoOiA1MnB4O1xuICAgICAgaGVpZ2h0OiA1MnB4O1xuICAgICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICAgIGJhY2tncm91bmQ6ICNlZmY2ZmY7XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LWNvbG9yLXByaW1hcnksICMyNTYzZWIpO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIG1hcmdpbi1ib3R0b206IDE0cHg7XG4gICAgfVxuICAgIC5ncmlkLWluaXRpYWwtdGl0bGUge1xuICAgICAgZm9udC1zaXplOiB2YXIoLS1ycHQtZm9udC1zaXplLW1kLCAxcmVtKTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LWNvbG9yLXRleHQsICMwZjE3MmEpO1xuICAgICAgbWFyZ2luOiAwIDAgNnB4IDA7XG4gICAgfVxuICAgIC5ncmlkLWluaXRpYWwtZGVzYyB7XG4gICAgICBmb250LXNpemU6IHZhcigtLXJwdC1mb250LXNpemUtc20sIDAuODEyNXJlbSk7XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LWNvbG9yLXRleHQtbXV0ZWQsICM2NDc0OGIpO1xuICAgICAgbWF4LXdpZHRoOiA0NjBweDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgICBtYXJnaW46IDAgMCAyMHB4IDA7XG4gICAgfVxuICAgIC5idG4tZ3JpZC1pbml0aWFsLWV4ZWMge1xuICAgICAgcGFkZGluZzogOHB4IDIwcHg7XG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ycHQtY29sb3ItcHJpbWFyeSwgIzI1NjNlYik7XG4gICAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJwdC1ib3JkZXItcmFkaXVzLCA2cHgpO1xuICAgICAgZm9udC1zaXplOiB2YXIoLS1ycHQtZm9udC1zaXplLXNtLCAwLjc1cmVtKTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICBib3gtc2hhZG93OiAwIDFweCAzcHggcmdiYSgzNywgOTksIDIzNSwgMC4yKTtcbiAgICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1ycHQtdHJhbnNpdGlvbi1zcGVlZCwgMTUwbXMpIGVhc2U7XG4gICAgfVxuICAgIC5idG4tZ3JpZC1pbml0aWFsLWV4ZWM6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogdmFyKC0tcnB0LWNvbG9yLXByaW1hcnktaG92ZXIsICMxZDRlZDgpO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuICAgIH1cbiAgYF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBEeW5hbWljUmVuZGVyZXJDb21wb25lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IHJlZ2lzdHJ5ID0gaW5qZWN0KENvbXBvbmVudFJlZ2lzdHJ5KTtcbiAgcHJpdmF0ZSByZWFkb25seSBmb3JtQnVpbGRlciA9IGluamVjdChEeW5hbWljRm9ybUJ1aWxkZXIpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZXhwb3J0U2VydmljZSA9IGluamVjdChSZXBvcnRFeHBvcnRTZXJ2aWNlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIHJlYWRvbmx5IHNlc3Npb25TZXJ2aWNlID0gaW5qZWN0KFJlcG9ydFNlc3Npb25Db250ZXh0U2VydmljZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICByZWFkb25seSBkZWZpbml0aW9uID0gaW5wdXQucmVxdWlyZWQ8UmVwb3J0RGVmaW5pdGlvbj4oKTtcbiAgcmVhZG9ubHkgaW5pdGlhbFZhbHVlcyA9IGlucHV0PFJlY29yZDxzdHJpbmcsIHVua25vd24+Pih7fSk7XG4gIHJlYWRvbmx5IHJlc3VsdERhdGEgPSBpbnB1dDx1bmtub3duW10gfCBudWxsPihudWxsKTtcblxuICByZWFkb25seSBleGVjdXRlUmVxdWVzdGVkID0gb3V0cHV0PHtcbiAgICBkZWZpbml0aW9uOiBSZXBvcnREZWZpbml0aW9uO1xuICAgIHBhcmFtZXRlcnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICB9PigpO1xuXG4gIHJlYWRvbmx5IHJlc2V0UmVxdWVzdGVkID0gb3V0cHV0PHtcbiAgICBkZWZpbml0aW9uOiBSZXBvcnREZWZpbml0aW9uO1xuICB9PigpO1xuXG4gIHJlYWRvbmx5IGV4cG9ydFJlcXVlc3RlZCA9IG91dHB1dDx7XG4gICAgZm9ybWF0OiBzdHJpbmc7XG4gICAgZmlsZU5hbWU/OiBzdHJpbmc7XG4gICAgcGFyYW1ldGVyczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgZGF0YTogdW5rbm93bltdIHwgbnVsbDtcbiAgfT4oKTtcblxuICByZWFkb25seSBwcmludFJlcXVlc3RlZCA9IG91dHB1dDx7XG4gICAgcnB0RmlsZU5hbWU/OiBzdHJpbmc7XG4gICAgZXhwb3J0VHlwZT86IHN0cmluZztcbiAgICBwYXJhbWV0ZXJzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgfT4oKTtcblxuICByZWFkb25seSBjdXN0b21BY3Rpb25UcmlnZ2VyZWQgPSBvdXRwdXQ8e1xuICAgIGFjdGlvbjogQ29tcG9uZW50QWN0aW9uRGVmaW5pdGlvbjtcbiAgICBjb21wb25lbnQ6IFJlcG9ydENvbXBvbmVudERlZmluaXRpb247XG4gICAgcGFyYW1ldGVyczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIH0+KCk7XG5cbiAgcmVhZG9ubHkgZ3JpZFN0YXRlQ2hhbmdlZCA9IG91dHB1dDxhbnk+KCk7XG4gIHJlYWRvbmx5IGNvbHVtbkRlZnNDaGFuZ2VkID0gb3V0cHV0PGFueT4oKTtcbiAgcmVhZG9ubHkgc2VsZWN0aW9uQ2hhbmdlID0gb3V0cHV0PGFueVtdPigpO1xuICByZWFkb25seSBzZWxlY3Rpb25DaGFuZ2VkID0gb3V0cHV0PGFueVtdPigpO1xuICByZWFkb25seSByb3dBY3Rpb25UcmlnZ2VyZWQgPSBvdXRwdXQ8e1xuICAgIGFjdGlvbjogR3JpZFJvd0NsaWNrQWN0aW9uO1xuICAgIHJvdzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgcGFyYW1ldGVyczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIH0+KCk7XG5cbiAgcmVhZG9ubHkgZm9ybSA9IGNvbXB1dGVkPEZvcm1Hcm91cD4oKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmZvcm1CdWlsZGVyLnRvRm9ybUdyb3VwKFxuICAgICAgdGhpcy5kZWZpbml0aW9uKCkuY29tcG9uZW50cyxcbiAgICAgIHRoaXMuaW5pdGlhbFZhbHVlcygpXG4gICAgKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgc29ydGVkQ29tcG9uZW50cyA9IGNvbXB1dGVkPFJlcG9ydENvbXBvbmVudERlZmluaXRpb25bXT4oKCkgPT4ge1xuICAgIHJldHVybiBbLi4udGhpcy5kZWZpbml0aW9uKCkuY29tcG9uZW50c10uc29ydChcbiAgICAgIChhLCBiKSA9PiAoYS5vcmRlciA/PyAwKSAtIChiLm9yZGVyID8/IDApXG4gICAgKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgdG90YWxHcmlkQ29sdW1ucyA9IGNvbXB1dGVkPG51bWJlcj4oKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmRlZmluaXRpb24oKS5sYXlvdXQuY29sdW1ucyB8fCAxMjtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgZ3JpZENvbHVtbnNUZW1wbGF0ZSA9IGNvbXB1dGVkPHN0cmluZz4oKCkgPT4ge1xuICAgIHJldHVybiBgcmVwZWF0KCR7dGhpcy50b3RhbEdyaWRDb2x1bW5zKCl9LCBtaW5tYXgoMCwgMWZyKSlgO1xuICB9KTtcblxuICByZXNvbHZlQ29tcG9uZW50KHR5cGU6IHN0cmluZyk6IFR5cGU8dW5rbm93bj4gfCBudWxsIHtcbiAgICBjb25zdCBtZXRhID0gdGhpcy5yZWdpc3RyeS5yZXNvbHZlKHR5cGUpO1xuICAgIHJldHVybiAobWV0YT8uY29tcG9uZW50IGFzIFR5cGU8dW5rbm93bj4pID8/IG51bGw7XG4gIH1cblxuICBnZXRDb21wb25lbnRJbnB1dHMoY29tcDogUmVwb3J0Q29tcG9uZW50RGVmaW5pdGlvbik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgICBjb25zdCBpbnB1dHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cbiAgICBpZiAoY29tcC50eXBlID09PSAna3BpLWNhcmQnIHx8IGNvbXAudHlwZSA9PT0gJ2NoYXJ0Jykge1xuICAgICAgaW5wdXRzWydkZWZpbml0aW9uJ10gPSBjb21wO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbnB1dHNbJ2NvbmZpZyddID0gY29tcDtcbiAgICB9XG5cbiAgICBpZiAoY29tcC5rZXkgJiYgY29tcC50eXBlICE9PSAnYnV0dG9uJyAmJiBjb21wLnR5cGUgIT09ICdrcGktY2FyZCcgJiYgY29tcC50eXBlICE9PSAnY2hhcnQnKSB7XG4gICAgICBpbnB1dHNbJ2NvbnRyb2wnXSA9IHRoaXMuZm9ybSgpLmdldChjb21wLmtleSk7XG4gICAgfVxuXG4gICAgaWYgKGNvbXAudHlwZSA9PT0gJ2Ryb3Bkb3duJykge1xuICAgICAgaW5wdXRzWydwYXJlbnRGb3JtJ10gPSB0aGlzLmZvcm0oKTtcbiAgICB9XG5cbiAgICBpZiAoY29tcC50eXBlID09PSAnYnV0dG9uJykge1xuICAgICAgaW5wdXRzWydvbkFjdGlvbiddID0gKGFjdGlvbjogQ29tcG9uZW50QWN0aW9uRGVmaW5pdGlvbikgPT4gdGhpcy5oYW5kbGVBY3Rpb24oYWN0aW9uLCBjb21wKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW5wdXRzO1xuICB9XG5cblxuICBnZXRHcmlkQ29sdW1uKGNvbXA6IFJlcG9ydENvbXBvbmVudERlZmluaXRpb24pOiBzdHJpbmcge1xuICAgIHJldHVybiBjYWxjdWxhdGVHcmlkQ29sdW1uKGNvbXAsIHRoaXMudG90YWxHcmlkQ29sdW1ucygpKTtcbiAgfVxuXG4gIGdldEdyaWRSb3coY29tcDogUmVwb3J0Q29tcG9uZW50RGVmaW5pdGlvbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNhbGN1bGF0ZUdyaWRSb3coY29tcCk7XG4gIH1cblxuICBnZXRDb21wb25lbnRIZWlnaHQoY29tcDogUmVwb3J0Q29tcG9uZW50RGVmaW5pdGlvbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHJlc29sdmVDb21wb25lbnRIZWlnaHQoY29tcCk7XG4gIH1cblxuICBnZXRDb21wb25lbnRNaW5IZWlnaHQoY29tcDogUmVwb3J0Q29tcG9uZW50RGVmaW5pdGlvbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHJlc29sdmVDb21wb25lbnRNaW5IZWlnaHQoY29tcCk7XG4gIH1cblxuICBpc0NvbXBvbmVudFZpc2libGUoY29tcDogUmVwb3J0Q29tcG9uZW50RGVmaW5pdGlvbik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHZpcyA9IGNvbXAudmlzaWJpbGl0eTtcbiAgICBpZiAoIXZpcykgcmV0dXJuIHRydWU7XG4gICAgY29uc3QgY3RybCA9IHRoaXMuZm9ybSgpLmdldCh2aXMuZGVwZW5kc09uKTtcbiAgICBjb25zdCB2YWwgPSBjdHJsID8gY3RybC52YWx1ZSA6IHVuZGVmaW5lZDtcbiAgICBzd2l0Y2ggKHZpcy5vcGVyYXRvcikge1xuICAgICAgY2FzZSAnZXF1YWxzJzpcbiAgICAgICAgcmV0dXJuIHZhbCA9PT0gdmlzLnZhbHVlO1xuICAgICAgY2FzZSAnbm90RXF1YWxzJzpcbiAgICAgICAgcmV0dXJuIHZhbCAhPT0gdmlzLnZhbHVlO1xuICAgICAgY2FzZSAnY29udGFpbnMnOlxuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgJiYgdmFsLmluY2x1ZGVzKFN0cmluZyh2aXMudmFsdWUpKTtcbiAgICAgIGNhc2UgJ2dyZWF0ZXJUaGFuJzpcbiAgICAgICAgcmV0dXJuIE51bWJlcih2YWwpID4gTnVtYmVyKHZpcy52YWx1ZSk7XG4gICAgICBjYXNlICdsZXNzVGhhbic6XG4gICAgICAgIHJldHVybiBOdW1iZXIodmFsKSA8IE51bWJlcih2aXMudmFsdWUpO1xuICAgICAgY2FzZSAnaXNOb3RFbXB0eSc6XG4gICAgICAgIHJldHVybiB2YWwgIT09IG51bGwgJiYgdmFsICE9PSB1bmRlZmluZWQgJiYgdmFsICE9PSAnJztcbiAgICAgIGNhc2UgJ2lzRW1wdHknOlxuICAgICAgICByZXR1cm4gdmFsID09PSBudWxsIHx8IHZhbCA9PT0gdW5kZWZpbmVkIHx8IHZhbCA9PT0gJyc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBvblN1Ym1pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBmID0gdGhpcy5mb3JtKCk7XG4gICAgaWYgKGYuaW52YWxpZCkge1xuICAgICAgZi5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcGFyYW1ldGVycyA9IHRoaXMuZm9ybUJ1aWxkZXIuZXh0cmFjdFZhbHVlcyhmKTtcbiAgICB0aGlzLmV4ZWN1dGVSZXF1ZXN0ZWQuZW1pdCh7XG4gICAgICBkZWZpbml0aW9uOiB0aGlzLmRlZmluaXRpb24oKSxcbiAgICAgIHBhcmFtZXRlcnMsXG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVBY3Rpb24oYWN0aW9uOiBDb21wb25lbnRBY3Rpb25EZWZpbml0aW9uLCBjb21wPzogUmVwb3J0Q29tcG9uZW50RGVmaW5pdGlvbik6IHZvaWQge1xuICAgIGNvbnN0IHBhcmFtZXRlcnMgPSB0aGlzLmZvcm1CdWlsZGVyLmV4dHJhY3RWYWx1ZXModGhpcy5mb3JtKCkpO1xuXG4gICAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICAgICAgY2FzZSAnZXhlY3V0ZS1yZXBvcnQnOlxuICAgICAgY2FzZSAnc3VibWl0JzpcbiAgICAgICAgdGhpcy5vblN1Ym1pdCgpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAncmVzZXQnOlxuICAgICAgICB0aGlzLmZvcm0oKS5yZXNldCh0aGlzLmluaXRpYWxWYWx1ZXMoKSk7XG4gICAgICAgIHRoaXMucmVzZXRSZXF1ZXN0ZWQuZW1pdCh7IGRlZmluaXRpb246IHRoaXMuZGVmaW5pdGlvbigpIH0pO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnZXhwb3J0Jzoge1xuICAgICAgICBjb25zdCBmb3JtYXQgPSAoYWN0aW9uLnBhcmFtcz8uWydmb3JtYXQnXSBhcyBzdHJpbmcpIHx8ICdleGNlbCc7XG4gICAgICAgIGNvbnN0IGRlZmF1bHROYW1lID0gdGhpcy5kZWZpbml0aW9uKCkubmFtZVxuICAgICAgICAgID8gdGhpcy5kZWZpbml0aW9uKCkubmFtZS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1teYS16MC05Xy1dL2dpLCAnXycpXG4gICAgICAgICAgOiAncmVwb3J0JztcbiAgICAgICAgY29uc3QgZmlsZU5hbWUgPSAoYWN0aW9uLnBhcmFtcz8uWydmaWxlTmFtZSddIGFzIHN0cmluZykgfHwgYCR7ZGVmYXVsdE5hbWV9XyR7RGF0ZS5ub3coKX1gO1xuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5yZXN1bHREYXRhKCk7XG5cbiAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS5sZW5ndGggPiAwICYmIHRoaXMuZXhwb3J0U2VydmljZSkge1xuICAgICAgICAgIGlmIChmb3JtYXQgPT09ICdjc3YnKSB7XG4gICAgICAgICAgICB0aGlzLmV4cG9ydFNlcnZpY2UuZXhwb3J0Q3N2KGRhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSwge1xuICAgICAgICAgICAgICBmaWxlTmFtZTogYCR7ZmlsZU5hbWV9LmNzdmAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PT0gJ2pzb24nKSB7XG4gICAgICAgICAgICB0aGlzLmV4cG9ydFNlcnZpY2UuZXhwb3J0SnNvbihkYXRhLCB7XG4gICAgICAgICAgICAgIGZpbGVOYW1lOiBgJHtmaWxlTmFtZX0uanNvbmAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmV4cG9ydFJlcXVlc3RlZC5lbWl0KHtcbiAgICAgICAgICBmb3JtYXQsXG4gICAgICAgICAgZmlsZU5hbWUsXG4gICAgICAgICAgcGFyYW1ldGVycyxcbiAgICAgICAgICBkYXRhLFxuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ3ByaW50LXJlcG9ydCc6IHtcbiAgICAgICAgY29uc3QgcnB0RmlsZU5hbWUgPSAoYWN0aW9uLnBhcmFtcz8uWydycHRGaWxlTmFtZSddIGFzIHN0cmluZykgfHwgJyc7XG4gICAgICAgIGNvbnN0IGV4cG9ydFR5cGUgPSAoYWN0aW9uLnBhcmFtcz8uWydleHBvcnRUeXBlJ10gYXMgc3RyaW5nKSB8fCAncGRmJztcbiAgICAgICAgdGhpcy5wcmludFJlcXVlc3RlZC5lbWl0KHtcbiAgICAgICAgICBycHRGaWxlTmFtZSxcbiAgICAgICAgICBleHBvcnRUeXBlLFxuICAgICAgICAgIHBhcmFtZXRlcnMsXG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSAnbmF2aWdhdGUnOiB7XG4gICAgICAgIGNvbnN0IHRhcmdldFVybCA9IChhY3Rpb24ucGFyYW1zPy5bJ3RhcmdldFVybCddIGFzIHN0cmluZykgfHwgJyc7XG4gICAgICAgIGNvbnN0IG9wZW5OZXdUYWIgPSBhY3Rpb24ucGFyYW1zPy5bJ29wZW5OZXdUYWInXSA9PT0gdHJ1ZTtcblxuICAgICAgICBpZiAodGFyZ2V0VXJsKSB7XG4gICAgICAgICAgaWYgKG9wZW5OZXdUYWIgfHwgdGFyZ2V0VXJsLnN0YXJ0c1dpdGgoJ2h0dHA6Ly8nKSB8fCB0YXJnZXRVcmwuc3RhcnRzV2l0aCgnaHR0cHM6Ly8nKSkge1xuICAgICAgICAgICAgd2luZG93Lm9wZW4odGFyZ2V0VXJsLCBvcGVuTmV3VGFiID8gJ19ibGFuaycgOiAnX3NlbGYnKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucm91dGVyKSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGFyZ2V0VXJsXSwgeyBxdWVyeVBhcmFtczogcGFyYW1ldGVycyB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB0YXJnZXRVcmw7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlICdjdXN0b20tZXZlbnQnOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGNvbXApIHtcbiAgICAgICAgICB0aGlzLmN1c3RvbUFjdGlvblRyaWdnZXJlZC5lbWl0KHtcbiAgICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICAgIGNvbXBvbmVudDogY29tcCxcbiAgICAgICAgICAgIHBhcmFtZXRlcnMsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgb25HcmlkUm93Q2xpY2soZXZlbnQ6IHtcbiAgICByb3c6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGNvbHVtbj86IEdyaWRDb2x1bW5EZWZpbml0aW9uO1xuICAgIGV2ZW50PzogTW91c2VFdmVudDtcbiAgfSk6IHZvaWQge1xuICAgIGNvbnN0IGdyaWQgPSB0aGlzLmRlZmluaXRpb24oKS5ncmlkO1xuICAgIGlmICghZ3JpZCkgcmV0dXJuO1xuXG4gICAgY29uc3QgYWN0aW9uID0gZXZlbnQuY29sdW1uPy5hY3Rpb24gPz8gZ3JpZC5yb3dDbGlja0FjdGlvbiA/PyBncmlkLm9wdGlvbnM/LnJvd0NsaWNrQWN0aW9uO1xuICAgIGlmICghYWN0aW9uKSByZXR1cm47XG5cbiAgICBjb25zdCBmb3JtVmFsdWVzID0gdGhpcy5mb3JtQnVpbGRlci5leHRyYWN0VmFsdWVzKHRoaXMuZm9ybSgpKTtcbiAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5zZXNzaW9uU2VydmljZT8uc2Vzc2lvbkNvbnRleHQoKSA/PyB7fTtcbiAgICBjb25zdCBtYXBwZWRQYXJhbWV0ZXJzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXG4gICAgaWYgKGFjdGlvbi5wYXJhbWV0ZXJNYXBwaW5nICYmIE9iamVjdC5rZXlzKGFjdGlvbi5wYXJhbWV0ZXJNYXBwaW5nKS5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGNvbnN0IFt0YXJnZXRLZXksIGV4cHJdIG9mIE9iamVjdC5lbnRyaWVzKGFjdGlvbi5wYXJhbWV0ZXJNYXBwaW5nKSkge1xuICAgICAgICBsZXQgdmFsOiB1bmtub3duID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAoZXhwci5zdGFydHNXaXRoKCdyb3cuJykpIHtcbiAgICAgICAgICBjb25zdCByb3dGaWVsZCA9IGV4cHIuc2xpY2UoNCk7XG4gICAgICAgICAgdmFsID0gZ2V0RmllbGRDYXNlSW5zZW5zaXRpdmUoZXZlbnQucm93LCByb3dGaWVsZCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXhwci5zdGFydHNXaXRoKCdmb3JtLicpIHx8IGV4cHIuc3RhcnRzV2l0aCgnZm9ybVZhbHVlcy4nKSkge1xuICAgICAgICAgIGNvbnN0IGZvcm1GaWVsZCA9IGV4cHIucmVwbGFjZSgvXmZvcm1cXC58XmZvcm1WYWx1ZXNcXC4vLCAnJyk7XG4gICAgICAgICAgdmFsID0gZ2V0RmllbGRDYXNlSW5zZW5zaXRpdmUoZm9ybVZhbHVlcywgZm9ybUZpZWxkKTtcbiAgICAgICAgfSBlbHNlIGlmIChleHByLnN0YXJ0c1dpdGgoJ3Nlc3Npb24uJykpIHtcbiAgICAgICAgICBjb25zdCBzZXNzaW9uRmllbGQgPSBleHByLnNsaWNlKDgpO1xuICAgICAgICAgIHZhbCA9IGdldEZpZWxkQ2FzZUluc2Vuc2l0aXZlKHNlc3Npb24sIHNlc3Npb25GaWVsZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gRGlyZWN0IHJvdyBmaWVsZCBvciBsaXRlcmFsXG4gICAgICAgICAgdmFsID0gZ2V0RmllbGRDYXNlSW5zZW5zaXRpdmUoZXZlbnQucm93LCBleHByKSA/PyBleHByO1xuICAgICAgICB9XG4gICAgICAgIG1hcHBlZFBhcmFtZXRlcnNbdGFyZ2V0S2V5XSA9IHZhbCAhPT0gdW5kZWZpbmVkID8gdmFsIDogJyc7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIERlZmF1bHQ6IGNvcHkgZW50aXJlIHJvdyBkYXRhXG4gICAgICBPYmplY3QuYXNzaWduKG1hcHBlZFBhcmFtZXRlcnMsIGV2ZW50LnJvdyk7XG4gICAgfVxuXG4gICAgaWYgKGFjdGlvbi50eXBlID09PSAnbmF2aWdhdGUnICYmIGFjdGlvbi50YXJnZXRVcmwpIHtcbiAgICAgIGxldCB0YXJnZXRVcmwgPSBhY3Rpb24udGFyZ2V0VXJsO1xuICAgICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMoZXZlbnQucm93KSkge1xuICAgICAgICB0YXJnZXRVcmwgPSB0YXJnZXRVcmwucmVwbGFjZShcbiAgICAgICAgICBuZXcgUmVnRXhwKGBcXFxce1xcXFx7XFxcXHMqKD86cm93XFxcXC4pPyR7a31cXFxccypcXFxcfVxcXFx9YCwgJ2dpJyksXG4gICAgICAgICAgU3RyaW5nKHYgPz8gJycpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoYWN0aW9uLm9wZW5OZXdUYWIgfHwgdGFyZ2V0VXJsLnN0YXJ0c1dpdGgoJ2h0dHA6Ly8nKSB8fCB0YXJnZXRVcmwuc3RhcnRzV2l0aCgnaHR0cHM6Ly8nKSkge1xuICAgICAgICB3aW5kb3cub3Blbih0YXJnZXRVcmwsIGFjdGlvbi5vcGVuTmV3VGFiID8gJ19ibGFuaycgOiAnX3NlbGYnKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5yb3V0ZXIpIHtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0YXJnZXRVcmwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB0YXJnZXRVcmw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5yb3dBY3Rpb25UcmlnZ2VyZWQuZW1pdCh7XG4gICAgICBhY3Rpb24sXG4gICAgICByb3c6IGV2ZW50LnJvdyxcbiAgICAgIHBhcmFtZXRlcnM6IG1hcHBlZFBhcmFtZXRlcnMsXG4gICAgfSk7XG4gIH1cblxuICBvbkdyaWRTZWxlY3Rpb25DaGFuZ2Uocm93czogYW55W10pOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHJvd3MpO1xuICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlZC5lbWl0KHJvd3MpO1xuICB9XG59XG4iXX0=
|
|
447
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1yZW5kZXJlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9mZWF0dXJlcy9ydW50aW1lL2R5bmFtaWMtcmVuZGVyZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBS3pDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzNFLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsZ0JBQWdCLEVBQ2hCLHNCQUFzQixFQUN0Qix5QkFBeUIsRUFDMUIsTUFBTSwwQ0FBMEMsQ0FBQzs7OztBQStNbEQsTUFBTSxPQUFPLHdCQUF3QjtJQUNsQixRQUFRLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDckMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3pDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDNUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLGNBQWMsR0FBRyxNQUFNLENBQUMsMkJBQTJCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUVqRixVQUFVLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBb0IsQ0FBQztJQUNoRCxhQUFhLEdBQUcsS0FBSyxDQUEwQixFQUFFLENBQUMsQ0FBQztJQUNuRCxVQUFVLEdBQUcsS0FBSyxDQUFtQixJQUFJLENBQUMsQ0FBQztJQUUzQyxnQkFBZ0IsR0FBRyxNQUFNLEVBRzlCLENBQUM7SUFFSSxjQUFjLEdBQUcsTUFBTSxFQUU1QixDQUFDO0lBRUksZUFBZSxHQUFHLE1BQU0sRUFLN0IsQ0FBQztJQUVJLGNBQWMsR0FBRyxNQUFNLEVBSTVCLENBQUM7SUFFSSxxQkFBcUIsR0FBRyxNQUFNLEVBSW5DLENBQUM7SUFFSSxnQkFBZ0IsR0FBRyxNQUFNLEVBQU8sQ0FBQztJQUNqQyxpQkFBaUIsR0FBRyxNQUFNLEVBQU8sQ0FBQztJQUNsQyxlQUFlLEdBQUcsTUFBTSxFQUFTLENBQUM7SUFDbEMsZ0JBQWdCLEdBQUcsTUFBTSxFQUFTLENBQUM7SUFDbkMsa0JBQWtCLEdBQUcsTUFBTSxFQUloQyxDQUFDO0lBRUksSUFBSSxHQUFHLFFBQVEsQ0FBWSxHQUFHLEVBQUU7UUFDdkMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FDakMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLFVBQVUsRUFDNUIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUNyQixDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7SUFFTSxnQkFBZ0IsR0FBRyxRQUFRLENBQThCLEdBQUcsRUFBRTtRQUNyRSxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUMzQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQzFDLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztJQUVNLGdCQUFnQixHQUFHLFFBQVEsQ0FBUyxHQUFHLEVBQUU7UUFDaEQsT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7SUFDaEQsQ0FBQyxDQUFDLENBQUM7SUFFTSxtQkFBbUIsR0FBRyxRQUFRLENBQVMsR0FBRyxFQUFFO1FBQ25ELE9BQU8sVUFBVSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsbUJBQW1CLENBQUM7SUFDOUQsQ0FBQyxDQUFDLENBQUM7SUFFSCxnQkFBZ0IsQ0FBQyxJQUFZO1FBQzNCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pDLE9BQVEsSUFBSSxFQUFFLFNBQTJCLElBQUksSUFBSSxDQUFDO0lBQ3BELENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxJQUErQjtRQUNoRCxNQUFNLE1BQU0sR0FBNEIsRUFBRSxDQUFDO1FBRTNDLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxVQUFVLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUN0RCxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQzlCLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUMxQixDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDNUYsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hELENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDN0IsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQyxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzNCLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLE1BQWlDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzlGLENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBR0QsYUFBYSxDQUFDLElBQStCO1FBQzNDLE9BQU8sbUJBQW1CLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUErQjtRQUN4QyxPQUFPLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxJQUErQjtRQUNoRCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDaEMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUM7WUFDOUIsSUFBSSxDQUFDLEtBQUssTUFBTSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxNQUFNO2dCQUFFLE9BQU8sTUFBTSxDQUFDO1FBQ3hELENBQUM7UUFDRCxPQUFPLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxJQUErQjtRQUNuRCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDaEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUM7WUFDcEMsSUFBSSxJQUFJLEtBQUssTUFBTSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksS0FBSyxNQUFNO2dCQUFFLE9BQU8sTUFBTSxDQUFDO1FBQ2pFLENBQUM7UUFDRCxPQUFPLHlCQUF5QixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxXQUFXLENBQUMsSUFBWTtRQUN0QixPQUFPLENBQ0wsSUFBSSxLQUFLLE9BQU87WUFDaEIsSUFBSSxLQUFLLFVBQVU7WUFDbkIsSUFBSSxLQUFLLE1BQU07WUFDZixJQUFJLEtBQUssWUFBWTtZQUNyQixJQUFJLEtBQUssUUFBUTtZQUNqQixJQUFJLEtBQUssVUFBVTtZQUNuQixJQUFJLEtBQUssUUFBUSxDQUNsQixDQUFDO0lBQ0osQ0FBQztJQUVELGtCQUFrQixDQUFDLElBQStCO1FBQ2hELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDNUIsSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPLElBQUksQ0FBQztRQUN0QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM1QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUMxQyxRQUFRLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNyQixLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxHQUFHLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQztZQUMzQixLQUFLLFdBQVc7Z0JBQ2QsT0FBTyxHQUFHLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQztZQUMzQixLQUFLLFVBQVU7Z0JBQ2IsT0FBTyxPQUFPLEdBQUcsS0FBSyxRQUFRLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDcEUsS0FBSyxhQUFhO2dCQUNoQixPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pDLEtBQUssVUFBVTtnQkFDYixPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pDLEtBQUssWUFBWTtnQkFDZixPQUFPLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxLQUFLLFNBQVMsSUFBSSxHQUFHLEtBQUssRUFBRSxDQUFDO1lBQ3pELEtBQUssU0FBUztnQkFDWixPQUFPLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxLQUFLLFNBQVMsSUFBSSxHQUFHLEtBQUssRUFBRSxDQUFDO1lBQ3pEO2dCQUNFLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7SUFDSCxDQUFDO0lBRUQsUUFBUTtRQUNOLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNkLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3JCLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQztZQUN6QixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUM3QixVQUFVO1NBQ1gsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFlBQVksQ0FBQyxNQUFpQyxFQUFFLElBQWdDO1FBQzlFLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRS9ELFFBQVEsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3BCLEtBQUssZ0JBQWdCLENBQUM7WUFDdEIsS0FBSyxRQUFRO2dCQUNYLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDaEIsTUFBTTtZQUVSLEtBQUssT0FBTztnQkFDVixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO2dCQUN4QyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUM1RCxNQUFNO1lBRVIsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDO2dCQUNkLE1BQU0sTUFBTSxHQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQVksSUFBSSxPQUFPLENBQUM7Z0JBQ2hFLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJO29CQUN4QyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFLEdBQUcsQ0FBQztvQkFDcEUsQ0FBQyxDQUFDLFFBQVEsQ0FBQztnQkFDYixNQUFNLFFBQVEsR0FBSSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsVUFBVSxDQUFZLElBQUksR0FBRyxXQUFXLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUM7Z0JBQzNGLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFFL0IsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO29CQUNsRCxJQUFJLE1BQU0sS0FBSyxLQUFLLEVBQUUsQ0FBQzt3QkFDckIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBaUMsRUFBRTs0QkFDOUQsUUFBUSxFQUFFLEdBQUcsUUFBUSxNQUFNO3lCQUM1QixDQUFDLENBQUM7b0JBQ0wsQ0FBQzt5QkFBTSxJQUFJLE1BQU0sS0FBSyxNQUFNLEVBQUUsQ0FBQzt3QkFDN0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFOzRCQUNsQyxRQUFRLEVBQUUsR0FBRyxRQUFRLE9BQU87eUJBQzdCLENBQUMsQ0FBQztvQkFDTCxDQUFDO2dCQUNILENBQUM7Z0JBRUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUM7b0JBQ3hCLE1BQU07b0JBQ04sUUFBUTtvQkFDUixVQUFVO29CQUNWLElBQUk7aUJBQ0wsQ0FBQyxDQUFDO2dCQUNILE1BQU07WUFDUixDQUFDO1lBRUQsS0FBSyxjQUFjLENBQUMsQ0FBQyxDQUFDO2dCQUNwQixNQUFNLFdBQVcsR0FBSSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsYUFBYSxDQUFZLElBQUksRUFBRSxDQUFDO2dCQUNyRSxNQUFNLFVBQVUsR0FBSSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsWUFBWSxDQUFZLElBQUksS0FBSyxDQUFDO2dCQUN0RSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztvQkFDdkIsV0FBVztvQkFDWCxVQUFVO29CQUNWLFVBQVU7aUJBQ1gsQ0FBQyxDQUFDO2dCQUNILE1BQU07WUFDUixDQUFDO1lBRUQsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDO2dCQUNoQixNQUFNLFNBQVMsR0FBSSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsV0FBVyxDQUFZLElBQUksRUFBRSxDQUFDO2dCQUNqRSxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsWUFBWSxDQUFDLEtBQUssSUFBSSxDQUFDO2dCQUUxRCxJQUFJLFNBQVMsRUFBRSxDQUFDO29CQUNkLElBQUksVUFBVSxJQUFJLFNBQVMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksU0FBUyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO3dCQUN0RixNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQzFELENBQUM7eUJBQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7d0JBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztvQkFDakUsQ0FBQzt5QkFBTSxDQUFDO3dCQUNOLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQztvQkFDbkMsQ0FBQztnQkFDSCxDQUFDO2dCQUNELE1BQU07WUFDUixDQUFDO1lBRUQsS0FBSyxjQUFjLENBQUM7WUFDcEI7Z0JBQ0UsSUFBSSxJQUFJLEVBQUUsQ0FBQztvQkFDVCxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDO3dCQUM5QixNQUFNO3dCQUNOLFNBQVMsRUFBRSxJQUFJO3dCQUNmLFVBQVU7cUJBQ1gsQ0FBQyxDQUFDO2dCQUNMLENBQUM7Z0JBQ0QsTUFBTTtRQUNWLENBQUM7SUFDSCxDQUFDO0lBRUQsY0FBYyxDQUFDLEtBSWQ7UUFDQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTztRQUVsQixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDO1FBQzNGLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTztRQUVwQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMvRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUM1RCxNQUFNLGdCQUFnQixHQUE0QixFQUFFLENBQUM7UUFFckQsSUFBSSxNQUFNLENBQUMsZ0JBQWdCLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDL0UsS0FBSyxNQUFNLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztnQkFDeEUsSUFBSSxHQUFHLEdBQVksU0FBUyxDQUFDO2dCQUM3QixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztvQkFDNUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDL0IsR0FBRyxHQUFHLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQ3JELENBQUM7cUJBQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztvQkFDdEUsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDNUQsR0FBRyxHQUFHLHVCQUF1QixDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDdkQsQ0FBQztxQkFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztvQkFDdkMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDbkMsR0FBRyxHQUFHLHVCQUF1QixDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQztnQkFDdkQsQ0FBQztxQkFBTSxDQUFDO29CQUNOLDhCQUE4QjtvQkFDOUIsR0FBRyxHQUFHLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDO2dCQUN6RCxDQUFDO2dCQUNELGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzdELENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLGdDQUFnQztZQUNoQyxNQUFNLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBRUQsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLFVBQVUsSUFBSSxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkQsSUFBSSxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztZQUNqQyxLQUFLLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDL0MsU0FBUyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQzNCLElBQUksTUFBTSxDQUFDLHdCQUF3QixDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsRUFDdkQsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FDaEIsQ0FBQztZQUNKLENBQUM7WUFDRCxJQUFJLE1BQU0sQ0FBQyxVQUFVLElBQUksU0FBUyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxTQUFTLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQzdGLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDakUsQ0FBQztpQkFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDdkMsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQztZQUNuQyxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7WUFDM0IsTUFBTTtZQUNOLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRztZQUNkLFVBQVUsRUFBRSxnQkFBZ0I7U0FDN0IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELHFCQUFxQixDQUFDLElBQVc7UUFDL0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQyxDQUFDO3dHQW5VVSx3QkFBd0I7NEZBQXhCLHdCQUF3QixzNEJBek16Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtRlQsK3pFQXBGUyxZQUFZLHNTQUFFLG1CQUFtQixxYkFBRSx5QkFBeUI7OzRGQTBNM0Qsd0JBQXdCO2tCQTdNcEMsU0FBUzsrQkFDRSxzQkFBc0IsY0FDcEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLG1CQUFtQixFQUFFLHlCQUF5QixDQUFDLFlBQzdEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1GVCxtQkFvSGdCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgb3V0cHV0LFxuICBUeXBlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgUmVwb3J0RGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWxzL3JlcG9ydC1kZWZpbml0aW9uLm1vZGVsJztcbmltcG9ydCB7IFJlcG9ydENvbXBvbmVudERlZmluaXRpb24gfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscy9yZXBvcnQtY29tcG9uZW50Lm1vZGVsJztcbmltcG9ydCB7IENvbXBvbmVudEFjdGlvbkRlZmluaXRpb24gfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscy9jb21wb25lbnQtZXZlbnQubW9kZWwnO1xuaW1wb3J0IHsgR3JpZENvbHVtbkRlZmluaXRpb24sIEdyaWRSb3dDbGlja0FjdGlvbiB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWxzL3JlcG9ydC1ncmlkLm1vZGVsJztcbmltcG9ydCB7IENvbXBvbmVudFJlZ2lzdHJ5IH0gZnJvbSAnLi4vLi4vY29yZS9yZWdpc3RyeS9jb21wb25lbnQtcmVnaXN0cnknO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1CdWlsZGVyIH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9keW5hbWljLWZvcm0tYnVpbGRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFJlcG9ydEV4cG9ydFNlcnZpY2UgfSBmcm9tICcuLi9leHBvcnQvc2VydmljZXMvcmVwb3J0LWV4cG9ydC5zZXJ2aWNlJztcbmltcG9ydCB7IFJlcG9ydFNlc3Npb25Db250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvcmVwb3J0LXNlc3Npb24tY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IGdldEZpZWxkQ2FzZUluc2Vuc2l0aXZlIH0gZnJvbSAnLi4vLi4vY29yZS91dGlscy9kYXRhLW5vcm1hbGl6YXRpb24udXRpbCc7XG5pbXBvcnQgeyBSZXBvcnRHcmlkQnJpZGdlQ29tcG9uZW50IH0gZnJvbSAnLi9yZXBvcnQtZ3JpZC1icmlkZ2UuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIGNhbGN1bGF0ZUdyaWRDb2x1bW4sXG4gIGNhbGN1bGF0ZUdyaWRSb3csXG4gIHJlc29sdmVDb21wb25lbnRIZWlnaHQsXG4gIHJlc29sdmVDb21wb25lbnRNaW5IZWlnaHRcbn0gZnJvbSAnLi4vZGVzaWduZXIvdXRpbGl0aWVzL2NhbnZhcy1sYXlvdXQudXRpbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3JwdC1keW5hbWljLXJlbmRlcmVyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgUmVwb3J0R3JpZEJyaWRnZUNvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJycHQtcmVuZGVyZXItcm9vdFwiXG4gICAgICBbc3R5bGUuZGlyZWN0aW9uXT1cImRlZmluaXRpb24oKS5sYXlvdXQuZGlyZWN0aW9uIHx8ICdsdHInXCJcbiAgICAgIFtzdHlsZS5wYWRkaW5nLnB4XT1cImRlZmluaXRpb24oKS5sYXlvdXQucGFkZGluZyA/PyAyNFwiXG4gICAgPlxuICAgICAgPCEtLSBSZXBvcnQgSGVhZGVyIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInJwdC1oZWFkZXJcIj5cbiAgICAgICAgPGgyIGNsYXNzPVwicnB0LXRpdGxlXCI+e3sgZGVmaW5pdGlvbigpLm5hbWUgfX08L2gyPlxuICAgICAgICBAaWYgKGRlZmluaXRpb24oKS5kZXNjcmlwdGlvbikge1xuICAgICAgICAgIDxwIGNsYXNzPVwicnB0LWRlc2NyaXB0aW9uXCI+e3sgZGVmaW5pdGlvbigpLmRlc2NyaXB0aW9uIH19PC9wPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBDb250cm9scyBGb3JtIC8gUGFyYW1ldGVyIEZpbHRlciBCYXIgLS0+XG4gICAgICBAaWYgKGRlZmluaXRpb24oKS5jb21wb25lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtKClcIiAobmdTdWJtaXQpPVwib25TdWJtaXQoKVwiIGNsYXNzPVwicnB0LWZvcm1cIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInJwdC1sYXlvdXQtZ3JpZFwiXG4gICAgICAgICAgICBbc3R5bGUuZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zXT1cImdyaWRDb2x1bW5zVGVtcGxhdGUoKVwiXG4gICAgICAgICAgICBbc3R5bGUuZ2FwLnB4XT1cImRlZmluaXRpb24oKS5sYXlvdXQuZ2FwID8/IDE2XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBAZm9yIChjb21wIG9mIHNvcnRlZENvbXBvbmVudHMoKTsgdHJhY2sgY29tcC5pZCkge1xuICAgICAgICAgICAgICBAaWYgKGlzQ29tcG9uZW50VmlzaWJsZShjb21wKSkge1xuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwicnB0LWNlbGxcIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLmdyaWQtY29sdW1uXT1cImdldEdyaWRDb2x1bW4oY29tcClcIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLmdyaWQtcm93XT1cImdldEdyaWRSb3coY29tcClcIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImNvbXAubGF5b3V0Py53aWR0aCB8fCAnYXV0bydcIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodF09XCJnZXRDb21wb25lbnRIZWlnaHQoY29tcClcIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHRdPVwiZ2V0Q29tcG9uZW50TWluSGVpZ2h0KGNvbXApXCJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5tYXgtaGVpZ2h0XT1cImNvbXAubGF5b3V0Py5tYXhIZWlnaHQgfHwgJ25vbmUnXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBAaWYgKHJlc29sdmVDb21wb25lbnQoY29tcC50eXBlKTsgYXMgY29tcENsYXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdDb21wb25lbnRPdXRsZXRdPVwiY29tcENsYXNzXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdDb21wb25lbnRPdXRsZXRJbnB1dHNdPVwiZ2V0Q29tcG9uZW50SW5wdXRzKGNvbXApXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnB0LXVucmVnaXN0ZXJlZC1wbGFjZWhvbGRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgIFVua25vd24gY29tcG9uZW50OiA8Y29kZT57eyBjb21wLnR5cGUgfX08L2NvZGU+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZm9ybT5cbiAgICAgIH1cblxuICAgICAgPCEtLSBSZXN1bHQgR3JpZCBTZWN0aW9uIC0tPlxuICAgICAgQGlmIChkZWZpbml0aW9uKCkuZ3JpZCkge1xuICAgICAgICBAaWYgKHJlc3VsdERhdGEoKSAhPT0gbnVsbCAmJiByZXN1bHREYXRhKCkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJycHQtZ3JpZC1zZWN0aW9uXCI+XG4gICAgICAgICAgICA8cnB0LWdyaWQtYnJpZGdlXG4gICAgICAgICAgICAgIFtncmlkRGVmaW5pdGlvbl09XCJkZWZpbml0aW9uKCkuZ3JpZCFcIlxuICAgICAgICAgICAgICBbZGF0YV09XCJyZXN1bHREYXRhKCkhXCJcbiAgICAgICAgICAgICAgKGdyaWRTdGF0ZUNoYW5nZSk9XCJncmlkU3RhdGVDaGFuZ2VkLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIChjb2x1bW5EZWZzQ2hhbmdlKT1cImNvbHVtbkRlZnNDaGFuZ2VkLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIChyb3dDbGljayk9XCJvbkdyaWRSb3dDbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJvbkdyaWRTZWxlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicnB0LWdyaWQtc2VjdGlvbiBycHQtZ3JpZC1pbml0aWFsLXN0YXRlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZC1pbml0aWFsLWNhcmRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQtaW5pdGlhbC1pY29uXCI+XG4gICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjI4XCIgaGVpZ2h0PVwiMjhcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjhcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj5cbiAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMyAzaDE4djE4SDN6TTMgOWgxOE0zIDE1aDE4TTkgM3YxOE0xNSAzdjE4XCIvPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGg0IGNsYXNzPVwiZ3JpZC1pbml0aWFsLXRpdGxlXCI+UmVwb3J0IFJlYWR5IHRvIEV4ZWN1dGU8L2g0PlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cImdyaWQtaW5pdGlhbC1kZXNjXCI+XG4gICAgICAgICAgICAgICAgQ29uZmlndXJlIGZpbHRlciBwYXJhbWV0ZXJzIGFib3ZlIGFuZCBleGVjdXRlIHRoZSByZXBvcnQgdG8gcmV0cmlldmUgbGl2ZSByZWNvcmRzIGludG8gdGhlIGdyaWQgKHt7IGRlZmluaXRpb24oKS5ncmlkPy5jb2x1bW5zPy5sZW5ndGggPz8gMCB9fSBjb2x1bW5zIGNvbmZpZ3VyZWQpLlxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWdyaWQtaW5pdGlhbC1leGVjXCIgKGNsaWNrKT1cIm9uU3VibWl0KClcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj5FeGVjdXRlIFJlcG9ydDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtgXG4gICAgOmhvc3Qge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICBmb250LWZhbWlseTogdmFyKC0tcnB0LWZvbnQtZmFtaWx5LCBpbmhlcml0KTtcbiAgICB9XG4gICAgLnJwdC1yZW5kZXJlci1yb290IHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICB9XG4gICAgLnJwdC1oZWFkZXIge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICB9XG4gICAgLnJwdC10aXRsZSB7XG4gICAgICBmb250LXNpemU6IHZhcigtLXJwdC1mb250LXNpemUteGwsIDEuNXJlbSk7XG4gICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgY29sb3I6IHZhcigtLXJwdC1jb2xvci10ZXh0LCAjMGYxNzJhKTtcbiAgICAgIG1hcmdpbjogMCAwIDZweCAwO1xuICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG4gICAgfVxuICAgIC5ycHQtZGVzY3JpcHRpb24ge1xuICAgICAgZm9udC1zaXplOiB2YXIoLS1ycHQtZm9udC1zaXplLWJhc2UsIDAuODc1cmVtKTtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItdGV4dC1tdXRlZCwgIzY0NzQ4Yik7XG4gICAgICBtYXJnaW46IDA7XG4gICAgfVxuICAgIC5ycHQtZm9ybSB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAyNHB4O1xuICAgIH1cbiAgICAucnB0LWxheW91dC1ncmlkIHtcbiAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGFsaWduLWl0ZW1zOiBzdGFydDtcbiAgICB9XG4gICAgLnJwdC1jZWxsIHtcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICBtaW4td2lkdGg6IDA7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICB9XG4gICAgLnJwdC1jZWxsID4gKiB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgbWluLWhlaWdodDogMDtcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgfVxuICAgIC5ycHQtdW5yZWdpc3RlcmVkLXBsYWNlaG9sZGVyIHtcbiAgICAgIHBhZGRpbmc6IDhweCAxMnB4O1xuICAgICAgZm9udC1zaXplOiB2YXIoLS1ycHQtZm9udC1zaXplLXNtLCAwLjc1cmVtKTtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItZGFuZ2VyLCAjZWY0NDQ0KTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXJwdC1jb2xvci1kYW5nZXItYmcsICNmZWYyZjIpO1xuICAgICAgYm9yZGVyOiAxcHggZGFzaGVkIHZhcigtLXJwdC1jb2xvci1kYW5nZXIsICNlZjQ0NDQpO1xuICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcnB0LWJvcmRlci1yYWRpdXMsIDZweCk7XG4gICAgfVxuICAgIC5ycHQtZ3JpZC1zZWN0aW9uIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgbWFyZ2luLXRvcDogMTZweDtcbiAgICB9XG4gICAgLnJwdC1ncmlkLWluaXRpYWwtc3RhdGUge1xuICAgICAgcGFkZGluZzogMTJweCAwO1xuICAgIH1cbiAgICAuZ3JpZC1pbml0aWFsLWNhcmQge1xuICAgICAgYm9yZGVyOiAycHggZGFzaGVkIHZhcigtLXJwdC1jb2xvci1ib3JkZXIsICNjYmQ1ZTEpO1xuICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcnB0LWJvcmRlci1yYWRpdXMteGwsIDEycHgpO1xuICAgICAgYmFja2dyb3VuZDogdmFyKC0tcnB0LWNvbG9yLXN1cmZhY2UsICNmZmZmZmYpO1xuICAgICAgcGFkZGluZzogNDhweCAyNHB4O1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICBib3gtc2hhZG93OiB2YXIoLS1ycHQtYm94LXNoYWRvdy14cywgMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4wNCkpO1xuICAgIH1cbiAgICAuZ3JpZC1pbml0aWFsLWljb24ge1xuICAgICAgd2lkdGg6IDUycHg7XG4gICAgICBoZWlnaHQ6IDUycHg7XG4gICAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgICAgYmFja2dyb3VuZDogI2VmZjZmZjtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItcHJpbWFyeSwgIzI1NjNlYik7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgbWFyZ2luLWJvdHRvbTogMTRweDtcbiAgICB9XG4gICAgLmdyaWQtaW5pdGlhbC10aXRsZSB7XG4gICAgICBmb250LXNpemU6IHZhcigtLXJwdC1mb250LXNpemUtbWQsIDFyZW0pO1xuICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItdGV4dCwgIzBmMTcyYSk7XG4gICAgICBtYXJnaW46IDAgMCA2cHggMDtcbiAgICB9XG4gICAgLmdyaWQtaW5pdGlhbC1kZXNjIHtcbiAgICAgIGZvbnQtc2l6ZTogdmFyKC0tcnB0LWZvbnQtc2l6ZS1zbSwgMC44MTI1cmVtKTtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItdGV4dC1tdXRlZCwgIzY0NzQ4Yik7XG4gICAgICBtYXgtd2lkdGg6IDQ2MHB4O1xuICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICAgIG1hcmdpbjogMCAwIDIwcHggMDtcbiAgICB9XG4gICAgLmJ0bi1ncmlkLWluaXRpYWwtZXhlYyB7XG4gICAgICBwYWRkaW5nOiA4cHggMjBweDtcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLXJwdC1jb2xvci1wcmltYXJ5LCAjMjU2M2ViKTtcbiAgICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcnB0LWJvcmRlci1yYWRpdXMsIDZweCk7XG4gICAgICBmb250LXNpemU6IHZhcigtLXJwdC1mb250LXNpemUtc20sIDAuNzVyZW0pO1xuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2JhKDM3LCA5OSwgMjM1LCAwLjIpO1xuICAgICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXJwdC10cmFuc2l0aW9uLXNwZWVkLCAxNTBtcykgZWFzZTtcbiAgICB9XG4gICAgLmJ0bi1ncmlkLWluaXRpYWwtZXhlYzpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ycHQtY29sb3ItcHJpbWFyeS1ob3ZlciwgIzFkNGVkOCk7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gICAgfVxuICBgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIER5bmFtaWNSZW5kZXJlckNvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVnaXN0cnkgPSBpbmplY3QoQ29tcG9uZW50UmVnaXN0cnkpO1xuICBwcml2YXRlIHJlYWRvbmx5IGZvcm1CdWlsZGVyID0gaW5qZWN0KER5bmFtaWNGb3JtQnVpbGRlcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlciwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBleHBvcnRTZXJ2aWNlID0gaW5qZWN0KFJlcG9ydEV4cG9ydFNlcnZpY2UsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2Vzc2lvblNlcnZpY2UgPSBpbmplY3QoUmVwb3J0U2Vzc2lvbkNvbnRleHRTZXJ2aWNlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIHJlYWRvbmx5IGRlZmluaXRpb24gPSBpbnB1dC5yZXF1aXJlZDxSZXBvcnREZWZpbml0aW9uPigpO1xuICByZWFkb25seSBpbml0aWFsVmFsdWVzID0gaW5wdXQ8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KHt9KTtcbiAgcmVhZG9ubHkgcmVzdWx0RGF0YSA9IGlucHV0PHVua25vd25bXSB8IG51bGw+KG51bGwpO1xuXG4gIHJlYWRvbmx5IGV4ZWN1dGVSZXF1ZXN0ZWQgPSBvdXRwdXQ8e1xuICAgIGRlZmluaXRpb246IFJlcG9ydERlZmluaXRpb247XG4gICAgcGFyYW1ldGVyczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIH0+KCk7XG5cbiAgcmVhZG9ubHkgcmVzZXRSZXF1ZXN0ZWQgPSBvdXRwdXQ8e1xuICAgIGRlZmluaXRpb246IFJlcG9ydERlZmluaXRpb247XG4gIH0+KCk7XG5cbiAgcmVhZG9ubHkgZXhwb3J0UmVxdWVzdGVkID0gb3V0cHV0PHtcbiAgICBmb3JtYXQ6IHN0cmluZztcbiAgICBmaWxlTmFtZT86IHN0cmluZztcbiAgICBwYXJhbWV0ZXJzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBkYXRhOiB1bmtub3duW10gfCBudWxsO1xuICB9PigpO1xuXG4gIHJlYWRvbmx5IHByaW50UmVxdWVzdGVkID0gb3V0cHV0PHtcbiAgICBycHRGaWxlTmFtZT86IHN0cmluZztcbiAgICBleHBvcnRUeXBlPzogc3RyaW5nO1xuICAgIHBhcmFtZXRlcnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICB9PigpO1xuXG4gIHJlYWRvbmx5IGN1c3RvbUFjdGlvblRyaWdnZXJlZCA9IG91dHB1dDx7XG4gICAgYWN0aW9uOiBDb21wb25lbnRBY3Rpb25EZWZpbml0aW9uO1xuICAgIGNvbXBvbmVudDogUmVwb3J0Q29tcG9uZW50RGVmaW5pdGlvbjtcbiAgICBwYXJhbWV0ZXJzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgfT4oKTtcblxuICByZWFkb25seSBncmlkU3RhdGVDaGFuZ2VkID0gb3V0cHV0PGFueT4oKTtcbiAgcmVhZG9ubHkgY29sdW1uRGVmc0NoYW5nZWQgPSBvdXRwdXQ8YW55PigpO1xuICByZWFkb25seSBzZWxlY3Rpb25DaGFuZ2UgPSBvdXRwdXQ8YW55W10+KCk7XG4gIHJlYWRvbmx5IHNlbGVjdGlvbkNoYW5nZWQgPSBvdXRwdXQ8YW55W10+KCk7XG4gIHJlYWRvbmx5IHJvd0FjdGlvblRyaWdnZXJlZCA9IG91dHB1dDx7XG4gICAgYWN0aW9uOiBHcmlkUm93Q2xpY2tBY3Rpb247XG4gICAgcm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBwYXJhbWV0ZXJzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgfT4oKTtcblxuICByZWFkb25seSBmb3JtID0gY29tcHV0ZWQ8Rm9ybUdyb3VwPigoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUJ1aWxkZXIudG9Gb3JtR3JvdXAoXG4gICAgICB0aGlzLmRlZmluaXRpb24oKS5jb21wb25lbnRzLFxuICAgICAgdGhpcy5pbml0aWFsVmFsdWVzKClcbiAgICApO1xuICB9KTtcblxuICByZWFkb25seSBzb3J0ZWRDb21wb25lbnRzID0gY29tcHV0ZWQ8UmVwb3J0Q29tcG9uZW50RGVmaW5pdGlvbltdPigoKSA9PiB7XG4gICAgcmV0dXJuIFsuLi50aGlzLmRlZmluaXRpb24oKS5jb21wb25lbnRzXS5zb3J0KFxuICAgICAgKGEsIGIpID0+IChhLm9yZGVyID8/IDApIC0gKGIub3JkZXIgPz8gMClcbiAgICApO1xuICB9KTtcblxuICByZWFkb25seSB0b3RhbEdyaWRDb2x1bW5zID0gY29tcHV0ZWQ8bnVtYmVyPigoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuZGVmaW5pdGlvbigpLmxheW91dC5jb2x1bW5zIHx8IDEyO1xuICB9KTtcblxuICByZWFkb25seSBncmlkQ29sdW1uc1RlbXBsYXRlID0gY29tcHV0ZWQ8c3RyaW5nPigoKSA9PiB7XG4gICAgcmV0dXJuIGByZXBlYXQoJHt0aGlzLnRvdGFsR3JpZENvbHVtbnMoKX0sIG1pbm1heCgwLCAxZnIpKWA7XG4gIH0pO1xuXG4gIHJlc29sdmVDb21wb25lbnQodHlwZTogc3RyaW5nKTogVHlwZTx1bmtub3duPiB8IG51bGwge1xuICAgIGNvbnN0IG1ldGEgPSB0aGlzLnJlZ2lzdHJ5LnJlc29sdmUodHlwZSk7XG4gICAgcmV0dXJuIChtZXRhPy5jb21wb25lbnQgYXMgVHlwZTx1bmtub3duPikgPz8gbnVsbDtcbiAgfVxuXG4gIGdldENvbXBvbmVudElucHV0cyhjb21wOiBSZXBvcnRDb21wb25lbnREZWZpbml0aW9uKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICAgIGNvbnN0IGlucHV0czogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblxuICAgIGlmIChjb21wLnR5cGUgPT09ICdrcGktY2FyZCcgfHwgY29tcC50eXBlID09PSAnY2hhcnQnKSB7XG4gICAgICBpbnB1dHNbJ2RlZmluaXRpb24nXSA9IGNvbXA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlucHV0c1snY29uZmlnJ10gPSBjb21wO1xuICAgIH1cblxuICAgIGlmIChjb21wLmtleSAmJiBjb21wLnR5cGUgIT09ICdidXR0b24nICYmIGNvbXAudHlwZSAhPT0gJ2twaS1jYXJkJyAmJiBjb21wLnR5cGUgIT09ICdjaGFydCcpIHtcbiAgICAgIGlucHV0c1snY29udHJvbCddID0gdGhpcy5mb3JtKCkuZ2V0KGNvbXAua2V5KTtcbiAgICB9XG5cbiAgICBpZiAoY29tcC50eXBlID09PSAnZHJvcGRvd24nKSB7XG4gICAgICBpbnB1dHNbJ3BhcmVudEZvcm0nXSA9IHRoaXMuZm9ybSgpO1xuICAgIH1cblxuICAgIGlmIChjb21wLnR5cGUgPT09ICdidXR0b24nKSB7XG4gICAgICBpbnB1dHNbJ29uQWN0aW9uJ10gPSAoYWN0aW9uOiBDb21wb25lbnRBY3Rpb25EZWZpbml0aW9uKSA9PiB0aGlzLmhhbmRsZUFjdGlvbihhY3Rpb24sIGNvbXApO1xuICAgIH1cblxuICAgIHJldHVybiBpbnB1dHM7XG4gIH1cblxuXG4gIGdldEdyaWRDb2x1bW4oY29tcDogUmVwb3J0Q29tcG9uZW50RGVmaW5pdGlvbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNhbGN1bGF0ZUdyaWRDb2x1bW4oY29tcCwgdGhpcy50b3RhbEdyaWRDb2x1bW5zKCkpO1xuICB9XG5cbiAgZ2V0R3JpZFJvdyhjb21wOiBSZXBvcnRDb21wb25lbnREZWZpbml0aW9uKTogc3RyaW5nIHtcbiAgICByZXR1cm4gY2FsY3VsYXRlR3JpZFJvdyhjb21wKTtcbiAgfVxuXG4gIGdldENvbXBvbmVudEhlaWdodChjb21wOiBSZXBvcnRDb21wb25lbnREZWZpbml0aW9uKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5pc0Zvcm1JbnB1dChjb21wLnR5cGUpKSB7XG4gICAgICBjb25zdCBoID0gY29tcC5sYXlvdXQ/LmhlaWdodDtcbiAgICAgIGlmIChoID09PSAnODVweCcgfHwgIWggfHwgaCA9PT0gJ2F1dG8nKSByZXR1cm4gJ2F1dG8nO1xuICAgIH1cbiAgICByZXR1cm4gcmVzb2x2ZUNvbXBvbmVudEhlaWdodChjb21wKTtcbiAgfVxuXG4gIGdldENvbXBvbmVudE1pbkhlaWdodChjb21wOiBSZXBvcnRDb21wb25lbnREZWZpbml0aW9uKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5pc0Zvcm1JbnB1dChjb21wLnR5cGUpKSB7XG4gICAgICBjb25zdCBtaW5IID0gY29tcC5sYXlvdXQ/Lm1pbkhlaWdodDtcbiAgICAgIGlmIChtaW5IID09PSAnODVweCcgfHwgIW1pbkggfHwgbWluSCA9PT0gJ2F1dG8nKSByZXR1cm4gJ2F1dG8nO1xuICAgIH1cbiAgICByZXR1cm4gcmVzb2x2ZUNvbXBvbmVudE1pbkhlaWdodChjb21wKTtcbiAgfVxuXG4gIGlzRm9ybUlucHV0KHR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0eXBlID09PSAnaW5wdXQnIHx8XG4gICAgICB0eXBlID09PSAnZHJvcGRvd24nIHx8XG4gICAgICB0eXBlID09PSAnZGF0ZScgfHxcbiAgICAgIHR5cGUgPT09ICdkYXRlLXJhbmdlJyB8fFxuICAgICAgdHlwZSA9PT0gJ251bWJlcicgfHxcbiAgICAgIHR5cGUgPT09ICdjaGVja2JveCcgfHxcbiAgICAgIHR5cGUgPT09ICdidXR0b24nXG4gICAgKTtcbiAgfVxuXG4gIGlzQ29tcG9uZW50VmlzaWJsZShjb21wOiBSZXBvcnRDb21wb25lbnREZWZpbml0aW9uKTogYm9vbGVhbiB7XG4gICAgY29uc3QgdmlzID0gY29tcC52aXNpYmlsaXR5O1xuICAgIGlmICghdmlzKSByZXR1cm4gdHJ1ZTtcbiAgICBjb25zdCBjdHJsID0gdGhpcy5mb3JtKCkuZ2V0KHZpcy5kZXBlbmRzT24pO1xuICAgIGNvbnN0IHZhbCA9IGN0cmwgPyBjdHJsLnZhbHVlIDogdW5kZWZpbmVkO1xuICAgIHN3aXRjaCAodmlzLm9wZXJhdG9yKSB7XG4gICAgICBjYXNlICdlcXVhbHMnOlxuICAgICAgICByZXR1cm4gdmFsID09PSB2aXMudmFsdWU7XG4gICAgICBjYXNlICdub3RFcXVhbHMnOlxuICAgICAgICByZXR1cm4gdmFsICE9PSB2aXMudmFsdWU7XG4gICAgICBjYXNlICdjb250YWlucyc6XG4gICAgICAgIHJldHVybiB0eXBlb2YgdmFsID09PSAnc3RyaW5nJyAmJiB2YWwuaW5jbHVkZXMoU3RyaW5nKHZpcy52YWx1ZSkpO1xuICAgICAgY2FzZSAnZ3JlYXRlclRoYW4nOlxuICAgICAgICByZXR1cm4gTnVtYmVyKHZhbCkgPiBOdW1iZXIodmlzLnZhbHVlKTtcbiAgICAgIGNhc2UgJ2xlc3NUaGFuJzpcbiAgICAgICAgcmV0dXJuIE51bWJlcih2YWwpIDwgTnVtYmVyKHZpcy52YWx1ZSk7XG4gICAgICBjYXNlICdpc05vdEVtcHR5JzpcbiAgICAgICAgcmV0dXJuIHZhbCAhPT0gbnVsbCAmJiB2YWwgIT09IHVuZGVmaW5lZCAmJiB2YWwgIT09ICcnO1xuICAgICAgY2FzZSAnaXNFbXB0eSc6XG4gICAgICAgIHJldHVybiB2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWQgfHwgdmFsID09PSAnJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIG9uU3VibWl0KCk6IHZvaWQge1xuICAgIGNvbnN0IGYgPSB0aGlzLmZvcm0oKTtcbiAgICBpZiAoZi5pbnZhbGlkKSB7XG4gICAgICBmLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJhbWV0ZXJzID0gdGhpcy5mb3JtQnVpbGRlci5leHRyYWN0VmFsdWVzKGYpO1xuICAgIHRoaXMuZXhlY3V0ZVJlcXVlc3RlZC5lbWl0KHtcbiAgICAgIGRlZmluaXRpb246IHRoaXMuZGVmaW5pdGlvbigpLFxuICAgICAgcGFyYW1ldGVycyxcbiAgICB9KTtcbiAgfVxuXG4gIGhhbmRsZUFjdGlvbihhY3Rpb246IENvbXBvbmVudEFjdGlvbkRlZmluaXRpb24sIGNvbXA/OiBSZXBvcnRDb21wb25lbnREZWZpbml0aW9uKTogdm9pZCB7XG4gICAgY29uc3QgcGFyYW1ldGVycyA9IHRoaXMuZm9ybUJ1aWxkZXIuZXh0cmFjdFZhbHVlcyh0aGlzLmZvcm0oKSk7XG5cbiAgICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgICBjYXNlICdleGVjdXRlLXJlcG9ydCc6XG4gICAgICBjYXNlICdzdWJtaXQnOlxuICAgICAgICB0aGlzLm9uU3VibWl0KCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdyZXNldCc6XG4gICAgICAgIHRoaXMuZm9ybSgpLnJlc2V0KHRoaXMuaW5pdGlhbFZhbHVlcygpKTtcbiAgICAgICAgdGhpcy5yZXNldFJlcXVlc3RlZC5lbWl0KHsgZGVmaW5pdGlvbjogdGhpcy5kZWZpbml0aW9uKCkgfSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdleHBvcnQnOiB7XG4gICAgICAgIGNvbnN0IGZvcm1hdCA9IChhY3Rpb24ucGFyYW1zPy5bJ2Zvcm1hdCddIGFzIHN0cmluZykgfHwgJ2V4Y2VsJztcbiAgICAgICAgY29uc3QgZGVmYXVsdE5hbWUgPSB0aGlzLmRlZmluaXRpb24oKS5uYW1lXG4gICAgICAgICAgPyB0aGlzLmRlZmluaXRpb24oKS5uYW1lLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvW15hLXowLTlfLV0vZ2ksICdfJylcbiAgICAgICAgICA6ICdyZXBvcnQnO1xuICAgICAgICBjb25zdCBmaWxlTmFtZSA9IChhY3Rpb24ucGFyYW1zPy5bJ2ZpbGVOYW1lJ10gYXMgc3RyaW5nKSB8fCBgJHtkZWZhdWx0TmFtZX1fJHtEYXRlLm5vdygpfWA7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLnJlc3VsdERhdGEoKTtcblxuICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLmxlbmd0aCA+IDAgJiYgdGhpcy5leHBvcnRTZXJ2aWNlKSB7XG4gICAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ2NzdicpIHtcbiAgICAgICAgICAgIHRoaXMuZXhwb3J0U2VydmljZS5leHBvcnRDc3YoZGF0YSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdLCB7XG4gICAgICAgICAgICAgIGZpbGVOYW1lOiBgJHtmaWxlTmFtZX0uY3N2YCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09PSAnanNvbicpIHtcbiAgICAgICAgICAgIHRoaXMuZXhwb3J0U2VydmljZS5leHBvcnRKc29uKGRhdGEsIHtcbiAgICAgICAgICAgICAgZmlsZU5hbWU6IGAke2ZpbGVOYW1lfS5qc29uYCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZXhwb3J0UmVxdWVzdGVkLmVtaXQoe1xuICAgICAgICAgIGZvcm1hdCxcbiAgICAgICAgICBmaWxlTmFtZSxcbiAgICAgICAgICBwYXJhbWV0ZXJzLFxuICAgICAgICAgIGRhdGEsXG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSAncHJpbnQtcmVwb3J0Jzoge1xuICAgICAgICBjb25zdCBycHRGaWxlTmFtZSA9IChhY3Rpb24ucGFyYW1zPy5bJ3JwdEZpbGVOYW1lJ10gYXMgc3RyaW5nKSB8fCAnJztcbiAgICAgICAgY29uc3QgZXhwb3J0VHlwZSA9IChhY3Rpb24ucGFyYW1zPy5bJ2V4cG9ydFR5cGUnXSBhcyBzdHJpbmcpIHx8ICdwZGYnO1xuICAgICAgICB0aGlzLnByaW50UmVxdWVzdGVkLmVtaXQoe1xuICAgICAgICAgIHJwdEZpbGVOYW1lLFxuICAgICAgICAgIGV4cG9ydFR5cGUsXG4gICAgICAgICAgcGFyYW1ldGVycyxcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlICduYXZpZ2F0ZSc6IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0VXJsID0gKGFjdGlvbi5wYXJhbXM/LlsndGFyZ2V0VXJsJ10gYXMgc3RyaW5nKSB8fCAnJztcbiAgICAgICAgY29uc3Qgb3Blbk5ld1RhYiA9IGFjdGlvbi5wYXJhbXM/Llsnb3Blbk5ld1RhYiddID09PSB0cnVlO1xuXG4gICAgICAgIGlmICh0YXJnZXRVcmwpIHtcbiAgICAgICAgICBpZiAob3Blbk5ld1RhYiB8fCB0YXJnZXRVcmwuc3RhcnRzV2l0aCgnaHR0cDovLycpIHx8IHRhcmdldFVybC5zdGFydHNXaXRoKCdodHRwczovLycpKSB7XG4gICAgICAgICAgICB3aW5kb3cub3Blbih0YXJnZXRVcmwsIG9wZW5OZXdUYWIgPyAnX2JsYW5rJyA6ICdfc2VsZicpO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5yb3V0ZXIpIHtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt0YXJnZXRVcmxdLCB7IHF1ZXJ5UGFyYW1zOiBwYXJhbWV0ZXJzIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHRhcmdldFVybDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ2N1c3RvbS1ldmVudCc6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAoY29tcCkge1xuICAgICAgICAgIHRoaXMuY3VzdG9tQWN0aW9uVHJpZ2dlcmVkLmVtaXQoe1xuICAgICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgICAgY29tcG9uZW50OiBjb21wLFxuICAgICAgICAgICAgcGFyYW1ldGVycyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBvbkdyaWRSb3dDbGljayhldmVudDoge1xuICAgIHJvdzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgY29sdW1uPzogR3JpZENvbHVtbkRlZmluaXRpb247XG4gICAgZXZlbnQ/OiBNb3VzZUV2ZW50O1xuICB9KTogdm9pZCB7XG4gICAgY29uc3QgZ3JpZCA9IHRoaXMuZGVmaW5pdGlvbigpLmdyaWQ7XG4gICAgaWYgKCFncmlkKSByZXR1cm47XG5cbiAgICBjb25zdCBhY3Rpb24gPSBldmVudC5jb2x1bW4/LmFjdGlvbiA/PyBncmlkLnJvd0NsaWNrQWN0aW9uID8/IGdyaWQub3B0aW9ucz8ucm93Q2xpY2tBY3Rpb247XG4gICAgaWYgKCFhY3Rpb24pIHJldHVybjtcblxuICAgIGNvbnN0IGZvcm1WYWx1ZXMgPSB0aGlzLmZvcm1CdWlsZGVyLmV4dHJhY3RWYWx1ZXModGhpcy5mb3JtKCkpO1xuICAgIGNvbnN0IHNlc3Npb24gPSB0aGlzLnNlc3Npb25TZXJ2aWNlPy5zZXNzaW9uQ29udGV4dCgpID8/IHt9O1xuICAgIGNvbnN0IG1hcHBlZFBhcmFtZXRlcnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cbiAgICBpZiAoYWN0aW9uLnBhcmFtZXRlck1hcHBpbmcgJiYgT2JqZWN0LmtleXMoYWN0aW9uLnBhcmFtZXRlck1hcHBpbmcpLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAoY29uc3QgW3RhcmdldEtleSwgZXhwcl0gb2YgT2JqZWN0LmVudHJpZXMoYWN0aW9uLnBhcmFtZXRlck1hcHBpbmcpKSB7XG4gICAgICAgIGxldCB2YWw6IHVua25vd24gPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChleHByLnN0YXJ0c1dpdGgoJ3Jvdy4nKSkge1xuICAgICAgICAgIGNvbnN0IHJvd0ZpZWxkID0gZXhwci5zbGljZSg0KTtcbiAgICAgICAgICB2YWwgPSBnZXRGaWVsZENhc2VJbnNlbnNpdGl2ZShldmVudC5yb3csIHJvd0ZpZWxkKTtcbiAgICAgICAgfSBlbHNlIGlmIChleHByLnN0YXJ0c1dpdGgoJ2Zvcm0uJykgfHwgZXhwci5zdGFydHNXaXRoKCdmb3JtVmFsdWVzLicpKSB7XG4gICAgICAgICAgY29uc3QgZm9ybUZpZWxkID0gZXhwci5yZXBsYWNlKC9eZm9ybVxcLnxeZm9ybVZhbHVlc1xcLi8sICcnKTtcbiAgICAgICAgICB2YWwgPSBnZXRGaWVsZENhc2VJbnNlbnNpdGl2ZShmb3JtVmFsdWVzLCBmb3JtRmllbGQpO1xuICAgICAgICB9IGVsc2UgaWYgKGV4cHIuc3RhcnRzV2l0aCgnc2Vzc2lvbi4nKSkge1xuICAgICAgICAgIGNvbnN0IHNlc3Npb25GaWVsZCA9IGV4cHIuc2xpY2UoOCk7XG4gICAgICAgICAgdmFsID0gZ2V0RmllbGRDYXNlSW5zZW5zaXRpdmUoc2Vzc2lvbiwgc2Vzc2lvbkZpZWxkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBEaXJlY3Qgcm93IGZpZWxkIG9yIGxpdGVyYWxcbiAgICAgICAgICB2YWwgPSBnZXRGaWVsZENhc2VJbnNlbnNpdGl2ZShldmVudC5yb3csIGV4cHIpID8/IGV4cHI7XG4gICAgICAgIH1cbiAgICAgICAgbWFwcGVkUGFyYW1ldGVyc1t0YXJnZXRLZXldID0gdmFsICE9PSB1bmRlZmluZWQgPyB2YWwgOiAnJztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRGVmYXVsdDogY29weSBlbnRpcmUgcm93IGRhdGFcbiAgICAgIE9iamVjdC5hc3NpZ24obWFwcGVkUGFyYW1ldGVycywgZXZlbnQucm93KTtcbiAgICB9XG5cbiAgICBpZiAoYWN0aW9uLnR5cGUgPT09ICduYXZpZ2F0ZScgJiYgYWN0aW9uLnRhcmdldFVybCkge1xuICAgICAgbGV0IHRhcmdldFVybCA9IGFjdGlvbi50YXJnZXRVcmw7XG4gICAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhldmVudC5yb3cpKSB7XG4gICAgICAgIHRhcmdldFVybCA9IHRhcmdldFVybC5yZXBsYWNlKFxuICAgICAgICAgIG5ldyBSZWdFeHAoYFxcXFx7XFxcXHtcXFxccyooPzpyb3dcXFxcLik/JHtrfVxcXFxzKlxcXFx9XFxcXH1gLCAnZ2knKSxcbiAgICAgICAgICBTdHJpbmcodiA/PyAnJylcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChhY3Rpb24ub3Blbk5ld1RhYiB8fCB0YXJnZXRVcmwuc3RhcnRzV2l0aCgnaHR0cDovLycpIHx8IHRhcmdldFVybC5zdGFydHNXaXRoKCdodHRwczovLycpKSB7XG4gICAgICAgIHdpbmRvdy5vcGVuKHRhcmdldFVybCwgYWN0aW9uLm9wZW5OZXdUYWIgPyAnX2JsYW5rJyA6ICdfc2VsZicpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnJvdXRlcikge1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRhcmdldFVybCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHRhcmdldFVybDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnJvd0FjdGlvblRyaWdnZXJlZC5lbWl0KHtcbiAgICAgIGFjdGlvbixcbiAgICAgIHJvdzogZXZlbnQucm93LFxuICAgICAgcGFyYW1ldGVyczogbWFwcGVkUGFyYW1ldGVycyxcbiAgICB9KTtcbiAgfVxuXG4gIG9uR3JpZFNlbGVjdGlvbkNoYW5nZShyb3dzOiBhbnlbXSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQocm93cyk7XG4gICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2VkLmVtaXQocm93cyk7XG4gIH1cbn1cbiJdfQ==
|