bways-report 0.1.8 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/README.md +463 -316
  2. package/esm2022/lib/core/config/bways-report-config.mjs +31 -32
  3. package/esm2022/lib/core/models/index.mjs +1 -1
  4. package/esm2022/lib/core/models/report-api-endpoint.model.mjs +8 -0
  5. package/esm2022/lib/core/models/report-component.model.mjs +1 -1
  6. package/esm2022/lib/core/models/report-datasource.model.mjs +1 -1
  7. package/esm2022/lib/core/services/index.mjs +2 -1
  8. package/esm2022/lib/core/services/report-api-execution.service.mjs +210 -0
  9. package/esm2022/lib/core/services/report-data-discovery.service.mjs +76 -4
  10. package/esm2022/lib/core/services/report-session-context.service.mjs +72 -3
  11. package/esm2022/lib/core/tokens/designer-config.token.mjs +4 -0
  12. package/esm2022/lib/core/tokens/reporting-config.token.mjs +1 -1
  13. package/esm2022/lib/core/utils/report-endpoint.util.mjs +22 -0
  14. package/esm2022/lib/core/utils/report-request-scope.mjs +48 -0
  15. package/esm2022/lib/data-access/adapters/endpoint-datasource.adapter.mjs +31 -1
  16. package/esm2022/lib/data-access/adapters/endpoint-lookup.adapter.mjs +27 -2
  17. package/esm2022/lib/data-access/adapters/endpoint-masterdata.adapter.mjs +5 -2
  18. package/esm2022/lib/data-access/adapters/endpoint-persistence.adapter.mjs +30 -14
  19. package/esm2022/lib/data-access/adapters/endpoint-schema-discovery.adapter.mjs +32 -28
  20. package/esm2022/lib/data-access/adapters/endpoint-tokens.mjs +1 -1
  21. package/esm2022/lib/data-access/adapters/http-datasource.adapter.mjs +4 -37
  22. package/esm2022/lib/data-access/adapters/http-lookup.adapter.mjs +28 -51
  23. package/esm2022/lib/data-access/adapters/http-persistence.adapter.mjs +43 -194
  24. package/esm2022/lib/data-access/adapters/http-schema-discovery.adapter.mjs +17 -65
  25. package/esm2022/lib/data-access/adapters/index.mjs +1 -1
  26. package/esm2022/lib/data-access/adapters/local-storage-persistence.adapter.mjs +13 -4
  27. package/esm2022/lib/data-access/adapters/report-id-availability.mjs +20 -0
  28. package/esm2022/lib/data-access/adapters/session-headers.mjs +11 -0
  29. package/esm2022/lib/data-access/contracts/index.mjs +1 -1
  30. package/esm2022/lib/data-access/contracts/lookup.contract.mjs +1 -1
  31. package/esm2022/lib/data-access/contracts/report-persistence.contract.mjs +13 -1
  32. package/esm2022/lib/features/designer/components/component-palette/component-palette.component.mjs +536 -6
  33. package/esm2022/lib/features/designer/components/design-canvas/design-canvas.component.mjs +55 -17
  34. package/esm2022/lib/features/designer/components/dialogs/report-saved-dialog.component.mjs +546 -119
  35. package/esm2022/lib/features/designer/components/property-editor/parameter-binding-editor.component.mjs +3 -3
  36. package/esm2022/lib/features/designer/components/property-editor/property-editor-action.component.mjs +3 -3
  37. package/esm2022/lib/features/designer/components/property-editor/property-editor-datasource.component.mjs +142 -8
  38. package/esm2022/lib/features/designer/components/property-editor/property-editor-general.component.mjs +3 -3
  39. package/esm2022/lib/features/designer/components/property-editor/property-editor-grid.component.mjs +129 -28
  40. package/esm2022/lib/features/designer/components/property-editor/property-editor-layout.component.mjs +3 -3
  41. package/esm2022/lib/features/designer/components/property-editor/property-editor-report.component.mjs +3 -3
  42. package/esm2022/lib/features/designer/components/property-editor/property-editor-validation.component.mjs +3 -3
  43. package/esm2022/lib/features/designer/components/property-editor/property-editor.component.mjs +27 -13
  44. package/esm2022/lib/features/designer/components/toolbar/designer-toolbar.component.mjs +54 -32
  45. package/esm2022/lib/features/designer/designer.component.mjs +109 -75
  46. package/esm2022/lib/features/designer/rpt-report-designer.component.mjs +10 -4
  47. package/esm2022/lib/features/designer/services/designer-config.service.mjs +56 -0
  48. package/esm2022/lib/features/designer/services/designer-endpoints.service.mjs +155 -0
  49. package/esm2022/lib/features/designer/services/designer-state.service.mjs +3 -2
  50. package/esm2022/lib/features/designer/utilities/canvas-layout.util.mjs +2 -1
  51. package/esm2022/lib/features/embed/bways-report-builder.component.mjs +3 -3
  52. package/esm2022/lib/features/export/services/report-export.service.mjs +11 -6
  53. package/esm2022/lib/features/persistence/services/report-store.service.mjs +78 -23
  54. package/esm2022/lib/features/persistence/services/schema-validator.service.mjs +59 -3
  55. package/esm2022/lib/features/routing/components/routed-report-designer.component.mjs +12 -17
  56. package/esm2022/lib/features/routing/components/routed-report-runtime.component.mjs +6 -4
  57. package/esm2022/lib/features/routing/report-routes.mjs +6 -6
  58. package/esm2022/lib/features/routing/resolvers/report-route-identifier.mjs +5 -0
  59. package/esm2022/lib/features/routing/resolvers/report.resolver.mjs +3 -2
  60. package/esm2022/lib/features/runtime/dynamic-renderer.component.mjs +23 -4
  61. package/esm2022/lib/features/runtime/report-execution.service.mjs +36 -6
  62. package/esm2022/lib/features/runtime/report-grid-bridge.component.mjs +54 -11
  63. package/esm2022/lib/features/runtime/report-runtime.component.mjs +105 -68
  64. package/esm2022/lib/features/runtime/rpt-report.component.mjs +50 -42
  65. package/esm2022/lib/primitives/components/chart-bridge/report-chart-bridge.component.mjs +7 -2
  66. package/esm2022/lib/primitives/components/dropdown/rpt-dropdown.component.mjs +16 -7
  67. package/esm2022/lib/primitives/components/icon/rpt-icon.component.mjs +53 -1
  68. package/esm2022/lib/primitives/components/index.mjs +2 -1
  69. package/esm2022/lib/primitives/components/radio/rpt-radio.component.mjs +428 -0
  70. package/esm2022/lib/primitives/register-builtins.mjs +51 -2
  71. package/esm2022/lib/provide-reporting.mjs +11 -29
  72. package/fesm2022/bways-report.mjs +3745 -1281
  73. package/fesm2022/bways-report.mjs.map +1 -1
  74. package/lib/core/config/bways-report-config.d.ts +27 -5
  75. package/lib/core/models/index.d.ts +2 -1
  76. package/lib/core/models/report-api-endpoint.model.d.ts +30 -0
  77. package/lib/core/models/report-component.model.d.ts +16 -4
  78. package/lib/core/models/report-datasource.model.d.ts +21 -2
  79. package/lib/core/services/index.d.ts +1 -0
  80. package/lib/core/services/report-api-execution.service.d.ts +41 -0
  81. package/lib/core/services/report-data-discovery.service.d.ts +23 -1
  82. package/lib/core/services/report-session-context.service.d.ts +9 -0
  83. package/lib/core/tokens/designer-config.token.d.ts +4 -0
  84. package/lib/core/tokens/reporting-config.token.d.ts +4 -0
  85. package/lib/core/utils/report-endpoint.util.d.ts +12 -0
  86. package/lib/core/utils/report-request-scope.d.ts +14 -0
  87. package/lib/data-access/adapters/endpoint-datasource.adapter.d.ts +2 -0
  88. package/lib/data-access/adapters/endpoint-lookup.adapter.d.ts +1 -0
  89. package/lib/data-access/adapters/endpoint-persistence.adapter.d.ts +6 -2
  90. package/lib/data-access/adapters/endpoint-schema-discovery.adapter.d.ts +4 -2
  91. package/lib/data-access/adapters/endpoint-tokens.d.ts +7 -0
  92. package/lib/data-access/adapters/http-datasource.adapter.d.ts +1 -3
  93. package/lib/data-access/adapters/http-lookup.adapter.d.ts +3 -4
  94. package/lib/data-access/adapters/http-persistence.adapter.d.ts +11 -16
  95. package/lib/data-access/adapters/http-schema-discovery.adapter.d.ts +3 -5
  96. package/lib/data-access/adapters/index.d.ts +1 -1
  97. package/lib/data-access/adapters/local-storage-persistence.adapter.d.ts +2 -2
  98. package/lib/data-access/adapters/report-id-availability.d.ts +6 -0
  99. package/lib/data-access/adapters/session-headers.d.ts +3 -0
  100. package/lib/data-access/contracts/index.d.ts +1 -0
  101. package/lib/data-access/contracts/lookup.contract.d.ts +3 -0
  102. package/lib/data-access/contracts/report-persistence.contract.d.ts +16 -1
  103. package/lib/features/designer/components/component-palette/component-palette.component.d.ts +16 -0
  104. package/lib/features/designer/components/design-canvas/design-canvas.component.d.ts +2 -0
  105. package/lib/features/designer/components/dialogs/report-saved-dialog.component.d.ts +37 -5
  106. package/lib/features/designer/components/property-editor/property-editor-datasource.component.d.ts +21 -3
  107. package/lib/features/designer/components/property-editor/property-editor-grid.component.d.ts +20 -7
  108. package/lib/features/designer/components/property-editor/property-editor.component.d.ts +2 -1
  109. package/lib/features/designer/components/toolbar/designer-toolbar.component.d.ts +7 -1
  110. package/lib/features/designer/designer.component.d.ts +16 -2
  111. package/lib/features/designer/rpt-report-designer.component.d.ts +5 -1
  112. package/lib/features/designer/services/designer-config.service.d.ts +13 -0
  113. package/lib/features/designer/services/designer-endpoints.service.d.ts +25 -0
  114. package/lib/features/persistence/services/report-store.service.d.ts +15 -1
  115. package/lib/features/persistence/services/schema-validator.service.d.ts +2 -0
  116. package/lib/features/routing/resolvers/report-route-identifier.d.ts +2 -0
  117. package/lib/features/runtime/report-execution.service.d.ts +4 -0
  118. package/lib/features/runtime/report-grid-bridge.component.d.ts +4 -1
  119. package/lib/features/runtime/report-runtime.component.d.ts +14 -1
  120. package/lib/features/runtime/rpt-report.component.d.ts +5 -0
  121. package/lib/primitives/components/chart-bridge/report-chart-bridge.component.d.ts +3 -1
  122. package/lib/primitives/components/index.d.ts +2 -0
  123. package/lib/primitives/components/radio/rpt-radio.component.d.ts +77 -0
  124. package/package.json +2 -1
@@ -75,10 +75,19 @@ export class LocalStorageReportPersistenceAdapter extends ReportPersistenceAdapt
75
75
  }
76
76
  return throwError(() => new Error(`Report definition with ID "${reportId}" not found in storage.`));
77
77
  }
78
- save(report) {
78
+ save(report, options) {
79
79
  try {
80
- this.saveDirect(report);
81
- return of(report);
80
+ if (options?.createOnly && this.storage.getItem(STORAGE_PREFIX + report.id)) {
81
+ return throwError(() => new Error('Report ID already exists. Choose a different ID.'));
82
+ }
83
+ const raw = this.storage.getItem(STORAGE_PREFIX + report.id);
84
+ if (options?.expectedVersion !== undefined && (!raw || (JSON.parse(raw).version ?? 0) !== options.expectedVersion)) {
85
+ return throwError(() => new Error('Report changed or was deleted. Review it and confirm the update again.'));
86
+ }
87
+ const saved = options?.expectedVersion !== undefined ? { ...report, version: options.expectedVersion + 1 }
88
+ : options?.createOnly ? { ...report, version: 1 } : report;
89
+ this.saveDirect(saved);
90
+ return of(saved);
82
91
  }
83
92
  catch (err) {
84
93
  return throwError(() => (err instanceof Error ? err : new Error(String(err))));
@@ -136,4 +145,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
136
145
  providedIn: 'root',
137
146
  }]
138
147
  }], ctorParameters: () => [] });
139
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtc3RvcmFnZS1wZXJzaXN0ZW5jZS5hZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYndheXMtcmVwb3J0L3NyYy9saWIvZGF0YS1hY2Nlc3MvYWRhcHRlcnMvbG9jYWwtc3RvcmFnZS1wZXJzaXN0ZW5jZS5hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRXBGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOztBQUVsRixNQUFNLGNBQWMsR0FBRyxnQkFBZ0IsQ0FBQztBQUN4QyxNQUFNLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQztBQUtwQyxNQUFNLE9BQU8sb0NBQXFDLFNBQVEsd0JBQXdCO0lBQy9ELGVBQWUsR0FBRyxNQUFNLENBQUMscUJBQXFCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNwRSxPQUFPLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFFeEQ7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFTyw0QkFBNEI7UUFDbEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzlCLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQy9DLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxlQUFl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VSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZCLENBQUM7WUFBQyxNQUFNLENBQUMsQ0FBQSxDQUFDO1FBQ1osQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7d0dBbElVLG9DQUFvQzs0R0FBcEMsb0NBQW9DLGNBRm5DLE1BQU07OzRGQUVQLG9DQUFvQztrQkFIaEQsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXIgfSBmcm9tICcuLi9jb250cmFjdHMvcmVwb3J0LXBlcnNpc3RlbmNlLmNvbnRyYWN0JztcbmltcG9ydCB7IFJlcG9ydERlZmluaXRpb24sIFJlcG9ydFN1bW1hcnkgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscy9yZXBvcnQtZGVmaW5pdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBSZXBvcnRUZW1wbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9mZWF0dXJlcy9kZXNpZ25lci9zZXJ2aWNlcy9yZXBvcnQtdGVtcGxhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBSZXBvcnRTdG9yYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvcmVwb3J0LXN0b3JhZ2Uuc2VydmljZSc7XG5cbmNvbnN0IFNUT1JBR0VfUFJFRklYID0gJ2J3YXlzX3JwdF9kZWZfJztcbmNvbnN0IElOREVYX0tFWSA9ICdid2F5c19ycHRfaW5kZXgnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTG9jYWxTdG9yYWdlUmVwb3J0UGVyc2lzdGVuY2VBZGFwdGVyIGV4dGVuZHMgUmVwb3J0UGVyc2lzdGVuY2VBZGFwdGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSB0ZW1wbGF0ZVNlcnZpY2UgPSBpbmplY3QoUmVwb3J0VGVtcGxhdGVTZXJ2aWNlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIHJlYWRvbmx5IHN0b3JhZ2UgPSBpbmplY3QoUmVwb3J0U3RvcmFnZVNlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5zZWVkRGVmYXVsdEJsdWVwcmludHNJZkVtcHR5KCk7XG4gIH1cblxuICBwcml2YXRlIHNlZWREZWZhdWx0Qmx1ZXByaW50c0lmRW1wdHkoKTogdm9pZCB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmdldEluZGV4KCk7XG4gICAgaWYgKGluZGV4Lmxlbmd0aCA9PT0gMCAmJiB0aGlzLnRlbXBsYXRlU2VydmljZSkge1xuICAgICAgY29uc3QgYmx1ZXByaW50cyA9IHRoaXMudGVtcGxhdGVTZXJ2aWNlLmdldFRlbXBsYXRlcygpO1xuICAgICAgYmx1ZXByaW50cy5mb3JFYWNoKChicCkgPT4ge1xuICAgICAgICBjb25zdCBkZWY6IFJlcG9ydERlZmluaXRpb24gPSB7XG4gICAgICAgICAgLi4uYnAuZGVmaW5pdGlvbixcbiAgICAgICAgICBpZDogYnAuaWQsXG4gICAgICAgICAgcGFyYW1ldGVyczogYnAuZGVmaW5pdGlvbi5wYXJhbWV0ZXJzIHx8IFtdLFxuICAgICAgICAgIGxheW91dDogYnAuZGVmaW5pdGlvbi5sYXlvdXQsXG4gICAgICAgICAgZGF0YVNvdXJjZXM6IGJwLmRlZmluaXRpb24uZGF0YVNvdXJjZXMsXG4gICAgICAgICAgY29tcG9uZW50czogYnAuZGVmaW5pdGlvbi5jb21wb25lbnRzLFxuICAgICAgICAgIGdyaWQ6IGJwLmRlZmluaXRpb24uZ3JpZCxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5zYXZlRGlyZWN0KGRlZik7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEluZGV4KCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yYWdlLmdldEpTT048c3RyaW5nW10+KElOREVYX0tFWSwgW10pO1xuICB9XG5cbiAgcHJpdmF0ZSBzYXZlSW5kZXgoaW5kZXg6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgdGhpcy5zdG9yYWdlLnNldEpTT04oSU5ERVhfS0VZLCBpbmRleCk7XG4gIH1cblxuICBwcml2YXRlIHNhdmVEaXJlY3QoZGVmOiBSZXBvcnREZWZpbml0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5zdG9yYWdlLnNldEpTT04oU1RPUkFHRV9QUkVGSVggKyBkZWYuaWQsIGRlZik7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmdldEluZGV4KCk7XG4gICAgaWYgKCFpbmRleC5pbmNsdWRlcyhkZWYuaWQpKSB7XG4gICAgICBpbmRleC5wdXNoKGRlZi5pZCk7XG4gICAgICB0aGlzLnNhdmVJbmRleChpbmRleCk7XG4gICAgfVxuICB9XG5cbiAgbG9hZChyZXBvcnRJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxSZXBvcnREZWZpbml0aW9uPiB7XG4gICAgY29uc3QgcmF3ID0gdGhpcy5zdG9yYWdlLmdldEl0ZW0oU1RPUkFHRV9QUkVGSVggKyByZXBvcnRJZCk7XG4gICAgaWYgKHJhdykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZGVmID0gSlNPTi5wYXJzZShyYXcpIGFzIFJlcG9ydERlZmluaXRpb247XG4gICAgICAgIHJldHVybiBvZihkZWYpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcihgRmFpbGVkIHRvIHBhcnNlIHJlcG9ydCBcIiR7cmVwb3J0SWR9XCIgZnJvbSBzdG9yYWdlLmApKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGYWxsYmFjazogY2hlY2sgdGVtcGxhdGUgc2VydmljZSBibHVlcHJpbnRzXG4gICAgaWYgKHRoaXMudGVtcGxhdGVTZXJ2aWNlKSB7XG4gICAgICBjb25zdCBicCA9IHRoaXMudGVtcGxhdGVTZXJ2aWNlLmdldFRlbXBsYXRlQnlJZChyZXBvcnRJZCk7XG4gICAgICBpZiAoYnApIHtcbiAgICAgICAgY29uc3QgZGVmOiBSZXBvcnREZWZpbml0aW9uID0ge1xuICAgICAgICAgIC4uLmJwLmRlZmluaXRpb24sXG4gICAgICAgICAgaWQ6IGJwLmlkLFxuICAgICAgICAgIHBhcmFtZXRlcnM6IGJwLmRlZmluaXRpb24ucGFyYW1ldGVycyB8fCBbXSxcbiAgICAgICAgICBsYXlvdXQ6IGJwLmRlZmluaXRpb24ubGF5b3V0LFxuICAgICAgICAgIGRhdGFTb3VyY2VzOiBicC5kZWZpbml0aW9uLmRhdGFTb3VyY2VzLFxuICAgICAgICAgIGNvbXBvbmVudHM6IGJwLmRlZmluaXRpb24uY29tcG9uZW50cyxcbiAgICAgICAgICBncmlkOiBicC5kZWZpbml0aW9uLmdyaWQsXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuc2F2ZURpcmVjdChkZWYpO1xuICAgICAgICByZXR1cm4gb2YoZGVmKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoYFJlcG9ydCBkZWZpbml0aW9uIHdpdGggSUQgXCIke3JlcG9ydElkfVwiIG5vdCBmb3VuZCBpbiBzdG9yYWdlLmApKTtcbiAgfVxuXG4gIHNhdmUocmVwb3J0OiBSZXBvcnREZWZpbml0aW9uKTogT2JzZXJ2YWJsZTxSZXBvcnREZWZpbml0aW9uPiB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuc2F2ZURpcmVjdChyZXBvcnQpO1xuICAgICAgcmV0dXJuIG9mKHJlcG9ydCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiAoZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIgOiBuZXcgRXJyb3IoU3RyaW5nKGVycikpKSk7XG4gICAgfVxuICB9XG5cbiAgbGlzdCgpOiBPYnNlcnZhYmxlPFJlcG9ydFN1bW1hcnlbXT4ge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXRJbmRleCgpO1xuICAgIGNvbnN0IHN1bW1hcmllczogUmVwb3J0U3VtbWFyeVtdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGlkIG9mIGluZGV4KSB7XG4gICAgICBjb25zdCByYXcgPSB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShTVE9SQUdFX1BSRUZJWCArIGlkKTtcbiAgICAgIGlmIChyYXcpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBkZWYgPSBKU09OLnBhcnNlKHJhdykgYXMgUmVwb3J0RGVmaW5pdGlvbjtcbiAgICAgICAgICBzdW1tYXJpZXMucHVzaCh7XG4gICAgICAgICAgICBpZDogZGVmLmlkLFxuICAgICAgICAgICAgbmFtZTogZGVmLm5hbWUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogZGVmLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgY2F0ZWdvcnk6IGRlZi5jYXRlZ29yeSxcbiAgICAgICAgICAgIHZlcnNpb246IGRlZi52ZXJzaW9uLFxuICAgICAgICAgICAgaXNQdWJsaXNoZWQ6ICEhZGVmLmlzUHVibGlzaGVkLFxuICAgICAgICAgICAgbGFzdE1vZGlmaWVkOiBkZWYudXBkYXRlZEF0ID8/IGRlZi5jcmVhdGVkQXQsXG4gICAgICAgICAgICBsYXN0TW9kaWZpZWRCeTogZGVmLnVwZGF0ZWRCeSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBjYXRjaCB7fVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBvZihzdW1tYXJpZXMpO1xuICB9XG5cbiAgZGVsZXRlKHJlcG9ydElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICB0aGlzLnN0b3JhZ2UucmVtb3ZlSXRlbShTVE9SQUdFX1BSRUZJWCArIHJlcG9ydElkKTtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZ2V0SW5kZXgoKS5maWx0ZXIoKGlkKSA9PiBpZCAhPT0gcmVwb3J0SWQpO1xuICAgIHRoaXMuc2F2ZUluZGV4KGluZGV4KTtcbiAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgfVxuXG4gIHB1Ymxpc2gocmVwb3J0SWQ6IHN0cmluZywgdmVyc2lvbjogbnVtYmVyKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgcmF3ID0gdGhpcy5zdG9yYWdlLmdldEl0ZW0oU1RPUkFHRV9QUkVGSVggKyByZXBvcnRJZCk7XG4gICAgaWYgKHJhdykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZGVmID0gSlNPTi5wYXJzZShyYXcpIGFzIFJlcG9ydERlZmluaXRpb247XG4gICAgICAgIGRlZi52ZXJzaW9uID0gdmVyc2lvbjtcbiAgICAgICAgZGVmLmlzUHVibGlzaGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zYXZlRGlyZWN0KGRlZik7XG4gICAgICB9IGNhdGNoIHt9XG4gICAgfVxuICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICB9XG59XG4iXX0=
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtc3RvcmFnZS1wZXJzaXN0ZW5jZS5hZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYndheXMtcmVwb3J0L3NyYy9saWIvZGF0YS1hY2Nlc3MvYWRhcHRlcnMvbG9jYWwtc3RvcmFnZS1wZXJzaXN0ZW5jZS5hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSx3QkFBd0IsRUFBcUIsTUFBTSwwQ0FBMEMsQ0FBQztBQUV2RyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUNqRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQzs7QUFFbEYsTUFBTSxjQUFjLEdBQUcsZ0JBQWdCLENBQUM7QUFDeEMsTUFBTSxTQUFTLEdBQUcsaUJBQWlCLENBQUM7QUFLcEMsTUFBTSxPQUFPLG9DQUFxQyxTQUFRLHdCQUF3QjtJQUMvRCxlQUFlLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDcEUsT0FBTyxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBRXhEO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRU8sNEJBQTRCO1FBQ2xDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM5QixJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUMvQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsZUFB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Rm5DLE1BQU07OzRGQUVQLG9DQUFvQztrQkFIaEQsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXIsIFJlcG9ydFNhdmVPcHRpb25zIH0gZnJvbSAnLi4vY29udHJhY3RzL3JlcG9ydC1wZXJzaXN0ZW5jZS5jb250cmFjdCc7XG5pbXBvcnQgeyBSZXBvcnREZWZpbml0aW9uLCBSZXBvcnRTdW1tYXJ5IH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMvcmVwb3J0LWRlZmluaXRpb24ubW9kZWwnO1xuaW1wb3J0IHsgUmVwb3J0VGVtcGxhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZmVhdHVyZXMvZGVzaWduZXIvc2VydmljZXMvcmVwb3J0LXRlbXBsYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVwb3J0U3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL3JlcG9ydC1zdG9yYWdlLnNlcnZpY2UnO1xuXG5jb25zdCBTVE9SQUdFX1BSRUZJWCA9ICdid2F5c19ycHRfZGVmXyc7XG5jb25zdCBJTkRFWF9LRVkgPSAnYndheXNfcnB0X2luZGV4JztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIExvY2FsU3RvcmFnZVJlcG9ydFBlcnNpc3RlbmNlQWRhcHRlciBleHRlbmRzIFJlcG9ydFBlcnNpc3RlbmNlQWRhcHRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgdGVtcGxhdGVTZXJ2aWNlID0gaW5qZWN0KFJlcG9ydFRlbXBsYXRlU2VydmljZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBzdG9yYWdlID0gaW5qZWN0KFJlcG9ydFN0b3JhZ2VTZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuc2VlZERlZmF1bHRCbHVlcHJpbnRzSWZFbXB0eSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWVkRGVmYXVsdEJsdWVwcmludHNJZkVtcHR5KCk6IHZvaWQge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXRJbmRleCgpO1xuICAgIGlmIChpbmRleC5sZW5ndGggPT09IDAgJiYgdGhpcy50ZW1wbGF0ZVNlcnZpY2UpIHtcbiAgICAgIGNvbnN0IGJsdWVwcmludHMgPSB0aGlzLnRlbXBsYXRlU2VydmljZS5nZXRUZW1wbGF0ZXMoKTtcbiAgICAgIGJsdWVwcmludHMuZm9yRWFjaCgoYnApID0+IHtcbiAgICAgICAgY29uc3QgZGVmOiBSZXBvcnREZWZpbml0aW9uID0ge1xuICAgICAgICAgIC4uLmJwLmRlZmluaXRpb24sXG4gICAgICAgICAgaWQ6IGJwLmlkLFxuICAgICAgICAgIHBhcmFtZXRlcnM6IGJwLmRlZmluaXRpb24ucGFyYW1ldGVycyB8fCBbXSxcbiAgICAgICAgICBsYXlvdXQ6IGJwLmRlZmluaXRpb24ubGF5b3V0LFxuICAgICAgICAgIGRhdGFTb3VyY2VzOiBicC5kZWZpbml0aW9uLmRhdGFTb3VyY2VzLFxuICAgICAgICAgIGNvbXBvbmVudHM6IGJwLmRlZmluaXRpb24uY29tcG9uZW50cyxcbiAgICAgICAgICBncmlkOiBicC5kZWZpbml0aW9uLmdyaWQsXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuc2F2ZURpcmVjdChkZWYpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRJbmRleCgpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmFnZS5nZXRKU09OPHN0cmluZ1tdPihJTkRFWF9LRVksIFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgc2F2ZUluZGV4KGluZGV4OiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIHRoaXMuc3RvcmFnZS5zZXRKU09OKElOREVYX0tFWSwgaW5kZXgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzYXZlRGlyZWN0KGRlZjogUmVwb3J0RGVmaW5pdGlvbik6IHZvaWQge1xuICAgIHRoaXMuc3RvcmFnZS5zZXRKU09OKFNUT1JBR0VfUFJFRklYICsgZGVmLmlkLCBkZWYpO1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXRJbmRleCgpO1xuICAgIGlmICghaW5kZXguaW5jbHVkZXMoZGVmLmlkKSkge1xuICAgICAgaW5kZXgucHVzaChkZWYuaWQpO1xuICAgICAgdGhpcy5zYXZlSW5kZXgoaW5kZXgpO1xuICAgIH1cbiAgfVxuXG4gIGxvYWQocmVwb3J0SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8UmVwb3J0RGVmaW5pdGlvbj4ge1xuICAgIGNvbnN0IHJhdyA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFNUT1JBR0VfUFJFRklYICsgcmVwb3J0SWQpO1xuICAgIGlmIChyYXcpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGRlZiA9IEpTT04ucGFyc2UocmF3KSBhcyBSZXBvcnREZWZpbml0aW9uO1xuICAgICAgICByZXR1cm4gb2YoZGVmKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoYEZhaWxlZCB0byBwYXJzZSByZXBvcnQgXCIke3JlcG9ydElkfVwiIGZyb20gc3RvcmFnZS5gKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRmFsbGJhY2s6IGNoZWNrIHRlbXBsYXRlIHNlcnZpY2UgYmx1ZXByaW50c1xuICAgIGlmICh0aGlzLnRlbXBsYXRlU2VydmljZSkge1xuICAgICAgY29uc3QgYnAgPSB0aGlzLnRlbXBsYXRlU2VydmljZS5nZXRUZW1wbGF0ZUJ5SWQocmVwb3J0SWQpO1xuICAgICAgaWYgKGJwKSB7XG4gICAgICAgIGNvbnN0IGRlZjogUmVwb3J0RGVmaW5pdGlvbiA9IHtcbiAgICAgICAgICAuLi5icC5kZWZpbml0aW9uLFxuICAgICAgICAgIGlkOiBicC5pZCxcbiAgICAgICAgICBwYXJhbWV0ZXJzOiBicC5kZWZpbml0aW9uLnBhcmFtZXRlcnMgfHwgW10sXG4gICAgICAgICAgbGF5b3V0OiBicC5kZWZpbml0aW9uLmxheW91dCxcbiAgICAgICAgICBkYXRhU291cmNlczogYnAuZGVmaW5pdGlvbi5kYXRhU291cmNlcyxcbiAgICAgICAgICBjb21wb25lbnRzOiBicC5kZWZpbml0aW9uLmNvbXBvbmVudHMsXG4gICAgICAgICAgZ3JpZDogYnAuZGVmaW5pdGlvbi5ncmlkLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnNhdmVEaXJlY3QoZGVmKTtcbiAgICAgICAgcmV0dXJuIG9mKGRlZik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKGBSZXBvcnQgZGVmaW5pdGlvbiB3aXRoIElEIFwiJHtyZXBvcnRJZH1cIiBub3QgZm91bmQgaW4gc3RvcmFnZS5gKSk7XG4gIH1cblxuICBzYXZlKHJlcG9ydDogUmVwb3J0RGVmaW5pdGlvbiwgb3B0aW9ucz86IFJlcG9ydFNhdmVPcHRpb25zKTogT2JzZXJ2YWJsZTxSZXBvcnREZWZpbml0aW9uPiB7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChvcHRpb25zPy5jcmVhdGVPbmx5ICYmIHRoaXMuc3RvcmFnZS5nZXRJdGVtKFNUT1JBR0VfUFJFRklYICsgcmVwb3J0LmlkKSkge1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoJ1JlcG9ydCBJRCBhbHJlYWR5IGV4aXN0cy4gQ2hvb3NlIGEgZGlmZmVyZW50IElELicpKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJhdyA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFNUT1JBR0VfUFJFRklYICsgcmVwb3J0LmlkKTtcbiAgICAgIGlmIChvcHRpb25zPy5leHBlY3RlZFZlcnNpb24gIT09IHVuZGVmaW5lZCAmJiAoIXJhdyB8fCAoSlNPTi5wYXJzZShyYXcpLnZlcnNpb24gPz8gMCkgIT09IG9wdGlvbnMuZXhwZWN0ZWRWZXJzaW9uKSkge1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoJ1JlcG9ydCBjaGFuZ2VkIG9yIHdhcyBkZWxldGVkLiBSZXZpZXcgaXQgYW5kIGNvbmZpcm0gdGhlIHVwZGF0ZSBhZ2Fpbi4nKSk7XG4gICAgICB9XG4gICAgICBjb25zdCBzYXZlZCA9IG9wdGlvbnM/LmV4cGVjdGVkVmVyc2lvbiAhPT0gdW5kZWZpbmVkID8geyAuLi5yZXBvcnQsIHZlcnNpb246IG9wdGlvbnMuZXhwZWN0ZWRWZXJzaW9uICsgMSB9XG4gICAgICAgIDogb3B0aW9ucz8uY3JlYXRlT25seSA/IHsgLi4ucmVwb3J0LCB2ZXJzaW9uOiAxIH0gOiByZXBvcnQ7XG4gICAgICB0aGlzLnNhdmVEaXJlY3Qoc2F2ZWQpO1xuICAgICAgcmV0dXJuIG9mKHNhdmVkKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IChlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyciA6IG5ldyBFcnJvcihTdHJpbmcoZXJyKSkpKTtcbiAgICB9XG4gIH1cblxuICBsaXN0KCk6IE9ic2VydmFibGU8UmVwb3J0U3VtbWFyeVtdPiB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmdldEluZGV4KCk7XG4gICAgY29uc3Qgc3VtbWFyaWVzOiBSZXBvcnRTdW1tYXJ5W10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgaWQgb2YgaW5kZXgpIHtcbiAgICAgIGNvbnN0IHJhdyA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFNUT1JBR0VfUFJFRklYICsgaWQpO1xuICAgICAgaWYgKHJhdykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGRlZiA9IEpTT04ucGFyc2UocmF3KSBhcyBSZXBvcnREZWZpbml0aW9uO1xuICAgICAgICAgIHN1bW1hcmllcy5wdXNoKHtcbiAgICAgICAgICAgIGlkOiBkZWYuaWQsXG4gICAgICAgICAgICBuYW1lOiBkZWYubmFtZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBkZWYuZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBjYXRlZ29yeTogZGVmLmNhdGVnb3J5LFxuICAgICAgICAgICAgdmVyc2lvbjogZGVmLnZlcnNpb24sXG4gICAgICAgICAgICBpc1B1Ymxpc2hlZDogISFkZWYuaXNQdWJsaXNoZWQsXG4gICAgICAgICAgICBsYXN0TW9kaWZpZWQ6IGRlZi51cGRhdGVkQXQgPz8gZGVmLmNyZWF0ZWRBdCxcbiAgICAgICAgICAgIGxhc3RNb2RpZmllZEJ5OiBkZWYudXBkYXRlZEJ5LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIHt9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG9mKHN1bW1hcmllcyk7XG4gIH1cblxuICBkZWxldGUocmVwb3J0SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHRoaXMuc3RvcmFnZS5yZW1vdmVJdGVtKFNUT1JBR0VfUFJFRklYICsgcmVwb3J0SWQpO1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXRJbmRleCgpLmZpbHRlcigoaWQpID0+IGlkICE9PSByZXBvcnRJZCk7XG4gICAgdGhpcy5zYXZlSW5kZXgoaW5kZXgpO1xuICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICB9XG5cbiAgcHVibGlzaChyZXBvcnRJZDogc3RyaW5nLCB2ZXJzaW9uOiBudW1iZXIpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBjb25zdCByYXcgPSB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShTVE9SQUdFX1BSRUZJWCArIHJlcG9ydElkKTtcbiAgICBpZiAocmF3KSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBkZWYgPSBKU09OLnBhcnNlKHJhdykgYXMgUmVwb3J0RGVmaW5pdGlvbjtcbiAgICAgICAgZGVmLnZlcnNpb24gPSB2ZXJzaW9uO1xuICAgICAgICBkZWYuaXNQdWJsaXNoZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLnNhdmVEaXJlY3QoZGVmKTtcbiAgICAgIH0gY2F0Y2gge31cbiAgICB9XG4gICAgcmV0dXJuIG9mKHVuZGVmaW5lZCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,20 @@
1
+ import { catchError, map, throwError } from 'rxjs';
2
+ export function reportIdAvailability(http, url, headers, fallback) {
3
+ return http.get(url, { headers }).pipe(map(result => {
4
+ if (typeof result?.exists !== 'boolean')
5
+ throw new Error('Invalid report ID verification response.');
6
+ return result.exists;
7
+ }), catchError(error => error?.status === 404 ? fallback() : throwError(() => new Error(error?.error?.message || error?.message || 'Could not verify the report ID. Please retry.'))));
8
+ }
9
+ /** Version/name are optional for compatibility with earlier availability endpoints. */
10
+ export function reportIdInspection(http, url, headers, fallback) {
11
+ return http.get(url, { headers }).pipe(map(result => {
12
+ if (typeof result?.exists !== 'boolean')
13
+ throw new Error('Invalid report ID verification response.');
14
+ if (result.version !== undefined && (!Number.isInteger(result.version) || result.version < 0)) {
15
+ throw new Error('Invalid report version in ID verification response.');
16
+ }
17
+ return { exists: result.exists, name: typeof result.name === 'string' ? result.name : undefined, version: result.version };
18
+ }), catchError(error => error?.status === 404 ? fallback() : throwError(() => new Error(error?.error?.message || error?.message || 'Could not verify the report ID. Please retry.'))));
19
+ }
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWlkLWF2YWlsYWJpbGl0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J3YXlzLXJlcG9ydC9zcmMvbGliL2RhdGEtYWNjZXNzL2FkYXB0ZXJzL3JlcG9ydC1pZC1hdmFpbGFiaWxpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFjLFVBQVUsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9ELE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxJQUFnQixFQUFFLEdBQVcsRUFBRSxPQUFvQixFQUFFLFFBQW1DO0lBQzNILE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBc0IsR0FBRyxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ3pELEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUNYLElBQUksT0FBTyxNQUFNLEVBQUUsTUFBTSxLQUFLLFNBQVM7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDBDQUEwQyxDQUFDLENBQUM7UUFDckcsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUN2RSxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU8sSUFBSSxLQUFLLEVBQUUsT0FBTyxJQUFJLCtDQUErQyxDQUFDLENBQUMsQ0FBQyxDQUMxRyxDQUFDO0FBQ0osQ0FBQztBQUVELHVGQUF1RjtBQUN2RixNQUFNLFVBQVUsa0JBQWtCLENBQUMsSUFBZ0IsRUFBRSxHQUFXLEVBQUUsT0FBb0IsRUFBRSxRQUEwQztJQUNoSSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQWlCLEdBQUcsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUNwRCxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDWCxJQUFJLE9BQU8sTUFBTSxFQUFFLE1BQU0sS0FBSyxTQUFTO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO1FBQ3JHLElBQUksTUFBTSxDQUFDLE9BQU8sS0FBSyxTQUFTLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUM5RixNQUFNLElBQUksS0FBSyxDQUFDLHFEQUFxRCxDQUFDLENBQUM7UUFDekUsQ0FBQztRQUNELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTyxNQUFNLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDN0gsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQ3ZFLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxJQUFJLEtBQUssRUFBRSxPQUFPLElBQUksK0NBQStDLENBQUMsQ0FBQyxDQUFDLENBQzFHLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVwb3J0SWRTdGF0dXMgfSBmcm9tICcuLi9jb250cmFjdHMvcmVwb3J0LXBlcnNpc3RlbmNlLmNvbnRyYWN0JztcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgY2F0Y2hFcnJvciwgbWFwLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiByZXBvcnRJZEF2YWlsYWJpbGl0eShodHRwOiBIdHRwQ2xpZW50LCB1cmw6IHN0cmluZywgaGVhZGVyczogSHR0cEhlYWRlcnMsIGZhbGxiYWNrOiAoKSA9PiBPYnNlcnZhYmxlPGJvb2xlYW4+KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gIHJldHVybiBodHRwLmdldDx7IGV4aXN0czogYm9vbGVhbiB9Pih1cmwsIHsgaGVhZGVycyB9KS5waXBlKFxuICAgIG1hcChyZXN1bHQgPT4ge1xuICAgICAgaWYgKHR5cGVvZiByZXN1bHQ/LmV4aXN0cyAhPT0gJ2Jvb2xlYW4nKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcmVwb3J0IElEIHZlcmlmaWNhdGlvbiByZXNwb25zZS4nKTtcbiAgICAgIHJldHVybiByZXN1bHQuZXhpc3RzO1xuICAgIH0pLFxuICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4gZXJyb3I/LnN0YXR1cyA9PT0gNDA0ID8gZmFsbGJhY2soKSA6IHRocm93RXJyb3IoKCkgPT5cbiAgICAgIG5ldyBFcnJvcihlcnJvcj8uZXJyb3I/Lm1lc3NhZ2UgfHwgZXJyb3I/Lm1lc3NhZ2UgfHwgJ0NvdWxkIG5vdCB2ZXJpZnkgdGhlIHJlcG9ydCBJRC4gUGxlYXNlIHJldHJ5LicpKSksXG4gICk7XG59XG5cbi8qKiBWZXJzaW9uL25hbWUgYXJlIG9wdGlvbmFsIGZvciBjb21wYXRpYmlsaXR5IHdpdGggZWFybGllciBhdmFpbGFiaWxpdHkgZW5kcG9pbnRzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlcG9ydElkSW5zcGVjdGlvbihodHRwOiBIdHRwQ2xpZW50LCB1cmw6IHN0cmluZywgaGVhZGVyczogSHR0cEhlYWRlcnMsIGZhbGxiYWNrOiAoKSA9PiBPYnNlcnZhYmxlPFJlcG9ydElkU3RhdHVzPik6IE9ic2VydmFibGU8UmVwb3J0SWRTdGF0dXM+IHtcbiAgcmV0dXJuIGh0dHAuZ2V0PFJlcG9ydElkU3RhdHVzPih1cmwsIHsgaGVhZGVycyB9KS5waXBlKFxuICAgIG1hcChyZXN1bHQgPT4ge1xuICAgICAgaWYgKHR5cGVvZiByZXN1bHQ/LmV4aXN0cyAhPT0gJ2Jvb2xlYW4nKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcmVwb3J0IElEIHZlcmlmaWNhdGlvbiByZXNwb25zZS4nKTtcbiAgICAgIGlmIChyZXN1bHQudmVyc2lvbiAhPT0gdW5kZWZpbmVkICYmICghTnVtYmVyLmlzSW50ZWdlcihyZXN1bHQudmVyc2lvbikgfHwgcmVzdWx0LnZlcnNpb24gPCAwKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcmVwb3J0IHZlcnNpb24gaW4gSUQgdmVyaWZpY2F0aW9uIHJlc3BvbnNlLicpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHsgZXhpc3RzOiByZXN1bHQuZXhpc3RzLCBuYW1lOiB0eXBlb2YgcmVzdWx0Lm5hbWUgPT09ICdzdHJpbmcnID8gcmVzdWx0Lm5hbWUgOiB1bmRlZmluZWQsIHZlcnNpb246IHJlc3VsdC52ZXJzaW9uIH07XG4gICAgfSksXG4gICAgY2F0Y2hFcnJvcihlcnJvciA9PiBlcnJvcj8uc3RhdHVzID09PSA0MDQgPyBmYWxsYmFjaygpIDogdGhyb3dFcnJvcigoKSA9PlxuICAgICAgbmV3IEVycm9yKGVycm9yPy5lcnJvcj8ubWVzc2FnZSB8fCBlcnJvcj8ubWVzc2FnZSB8fCAnQ291bGQgbm90IHZlcmlmeSB0aGUgcmVwb3J0IElELiBQbGVhc2UgcmV0cnkuJykpKSxcbiAgKTtcbn1cbiJdfQ==
@@ -0,0 +1,11 @@
1
+ import { HttpHeaders } from '@angular/common/http';
2
+ /** Authentication stays with host interceptors; reporting forwards tenant context. */
3
+ export function reportSessionHeaders(session) {
4
+ let headers = new HttpHeaders();
5
+ for (const [key, header] of [['companyId', 'X-Company-Id'], ['branchId', 'X-Branch-Id'], ['userId', 'X-User-Id']]) {
6
+ if (session[key] != null)
7
+ headers = headers.set(header, String(session[key]));
8
+ }
9
+ return headers;
10
+ }
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1oZWFkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYndheXMtcmVwb3J0L3NyYy9saWIvZGF0YS1hY2Nlc3MvYWRhcHRlcnMvc2Vzc2lvbi1oZWFkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVuRCxzRkFBc0Y7QUFDdEYsTUFBTSxVQUFVLG9CQUFvQixDQUFDLE9BQWdDO0lBQ25FLElBQUksT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7SUFDaEMsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsY0FBYyxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2xILElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUk7WUFBRSxPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuLyoqIEF1dGhlbnRpY2F0aW9uIHN0YXlzIHdpdGggaG9zdCBpbnRlcmNlcHRvcnM7IHJlcG9ydGluZyBmb3J3YXJkcyB0ZW5hbnQgY29udGV4dC4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXBvcnRTZXNzaW9uSGVhZGVycyhzZXNzaW9uOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IEh0dHBIZWFkZXJzIHtcbiAgbGV0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcbiAgZm9yIChjb25zdCBba2V5LCBoZWFkZXJdIG9mIFtbJ2NvbXBhbnlJZCcsICdYLUNvbXBhbnktSWQnXSwgWydicmFuY2hJZCcsICdYLUJyYW5jaC1JZCddLCBbJ3VzZXJJZCcsICdYLVVzZXItSWQnXV0pIHtcbiAgICBpZiAoc2Vzc2lvbltrZXldICE9IG51bGwpIGhlYWRlcnMgPSBoZWFkZXJzLnNldChoZWFkZXIsIFN0cmluZyhzZXNzaW9uW2tleV0pKTtcbiAgfVxuICByZXR1cm4gaGVhZGVycztcbn1cbiJdfQ==
@@ -5,4 +5,4 @@ export { ReportTranslationAdapter } from './translation.contract';
5
5
  export { ReportSchemaDiscoveryAdapter } from './schema-discovery.contract';
6
6
  export { ReportLookupAdapter } from './lookup.contract';
7
7
  export * from './api-dtos';
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9kYXRhLWFjY2Vzcy9jb250cmFjdHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFNUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDekUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFPM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFeEQsY0FBYyxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBSZXBvcnREYXRhU291cmNlQWRhcHRlciB9IGZyb20gJy4vZGF0YS1zb3VyY2UuY29udHJhY3QnO1xuZXhwb3J0IHsgTWFzdGVyRGF0YVByb3ZpZGVyIH0gZnJvbSAnLi9tYXN0ZXItZGF0YS5wcm92aWRlcic7XG5leHBvcnQgdHlwZSB7IE1hc3RlckRhdGFPcHRpb25zLCBNYXN0ZXJEYXRhSXRlbSB9IGZyb20gJy4vbWFzdGVyLWRhdGEucHJvdmlkZXInO1xuZXhwb3J0IHsgUmVwb3J0UGVyc2lzdGVuY2VBZGFwdGVyIH0gZnJvbSAnLi9yZXBvcnQtcGVyc2lzdGVuY2UuY29udHJhY3QnO1xuZXhwb3J0IHsgUmVwb3J0VHJhbnNsYXRpb25BZGFwdGVyIH0gZnJvbSAnLi90cmFuc2xhdGlvbi5jb250cmFjdCc7XG5leHBvcnQgeyBSZXBvcnRTY2hlbWFEaXNjb3ZlcnlBZGFwdGVyIH0gZnJvbSAnLi9zY2hlbWEtZGlzY292ZXJ5LmNvbnRyYWN0JztcbmV4cG9ydCB0eXBlIHtcbiAgRGF0YWJhc2VFbnRpdHlUeXBlLFxuICBEYXRhYmFzZUVudGl0eU1ldGFkYXRhLFxuICBFbnRpdHlDb2x1bW5NZXRhZGF0YSxcbiAgUHJvY2VkdXJlUGFyYW1ldGVyTWV0YWRhdGEsXG59IGZyb20gJy4vc2NoZW1hLWRpc2NvdmVyeS5jb250cmFjdCc7XG5leHBvcnQgeyBSZXBvcnRMb29rdXBBZGFwdGVyIH0gZnJvbSAnLi9sb29rdXAuY29udHJhY3QnO1xuZXhwb3J0IHR5cGUgeyBMb29rdXBRdWVyeVJlcXVlc3QsIExvb2t1cE9wdGlvbkl0ZW0gfSBmcm9tICcuL2xvb2t1cC5jb250cmFjdCc7XG5leHBvcnQgKiBmcm9tICcuL2FwaS1kdG9zJztcbiJdfQ==
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9kYXRhLWFjY2Vzcy9jb250cmFjdHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHNUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDekUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFPM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFeEQsY0FBYyxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBSZXBvcnREYXRhU291cmNlQWRhcHRlciB9IGZyb20gJy4vZGF0YS1zb3VyY2UuY29udHJhY3QnO1xuZXhwb3J0IHsgTWFzdGVyRGF0YVByb3ZpZGVyIH0gZnJvbSAnLi9tYXN0ZXItZGF0YS5wcm92aWRlcic7XG5leHBvcnQgdHlwZSB7IE1hc3RlckRhdGFPcHRpb25zLCBNYXN0ZXJEYXRhSXRlbSB9IGZyb20gJy4vbWFzdGVyLWRhdGEucHJvdmlkZXInO1xuZXhwb3J0IHR5cGUgeyBSZXBvcnRTYXZlT3B0aW9ucywgUmVwb3J0SWRTdGF0dXMgfSBmcm9tICcuL3JlcG9ydC1wZXJzaXN0ZW5jZS5jb250cmFjdCc7XG5leHBvcnQgeyBSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXIgfSBmcm9tICcuL3JlcG9ydC1wZXJzaXN0ZW5jZS5jb250cmFjdCc7XG5leHBvcnQgeyBSZXBvcnRUcmFuc2xhdGlvbkFkYXB0ZXIgfSBmcm9tICcuL3RyYW5zbGF0aW9uLmNvbnRyYWN0JztcbmV4cG9ydCB7IFJlcG9ydFNjaGVtYURpc2NvdmVyeUFkYXB0ZXIgfSBmcm9tICcuL3NjaGVtYS1kaXNjb3ZlcnkuY29udHJhY3QnO1xuZXhwb3J0IHR5cGUge1xuICBEYXRhYmFzZUVudGl0eVR5cGUsXG4gIERhdGFiYXNlRW50aXR5TWV0YWRhdGEsXG4gIEVudGl0eUNvbHVtbk1ldGFkYXRhLFxuICBQcm9jZWR1cmVQYXJhbWV0ZXJNZXRhZGF0YSxcbn0gZnJvbSAnLi9zY2hlbWEtZGlzY292ZXJ5LmNvbnRyYWN0JztcbmV4cG9ydCB7IFJlcG9ydExvb2t1cEFkYXB0ZXIgfSBmcm9tICcuL2xvb2t1cC5jb250cmFjdCc7XG5leHBvcnQgdHlwZSB7IExvb2t1cFF1ZXJ5UmVxdWVzdCwgTG9va3VwT3B0aW9uSXRlbSB9IGZyb20gJy4vbG9va3VwLmNvbnRyYWN0JztcbmV4cG9ydCAqIGZyb20gJy4vYXBpLWR0b3MnO1xuIl19
@@ -3,4 +3,4 @@
3
3
  */
4
4
  export class ReportLookupAdapter {
5
5
  }
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLmNvbnRyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYndheXMtcmVwb3J0L3NyYy9saWIvZGF0YS1hY2Nlc3MvY29udHJhY3RzL2xvb2t1cC5jb250cmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUEwQkE7O0dBRUc7QUFDSCxNQUFNLE9BQWdCLG1CQUFtQjtDQUt4QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERyb3Bkb3duU291cmNlVHlwZSB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWxzL3JlcG9ydC1jb21wb25lbnQubW9kZWwnO1xuXG4vKipcbiAqIFJlcXVlc3QgcGF5bG9hZCBmb3IgcXVlcnlpbmcgbG9va3VwIGRhdGEgZnJvbSB0aGUgaG9zdCBiYWNrZW5kXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9va3VwUXVlcnlSZXF1ZXN0IHtcbiAgc291cmNlVHlwZTogRHJvcGRvd25Tb3VyY2VUeXBlO1xuICBlbnRpdHlOYW1lPzogc3RyaW5nO1xuICBzY2hlbWE/OiBzdHJpbmc7XG4gIHZhbHVlRmllbGQ/OiBzdHJpbmc7XG4gIGRpc3BsYXlGaWVsZD86IHN0cmluZztcbiAgZmlsdGVyPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHBhcmFtZXRlcnM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgbGltaXQ/OiBudW1iZXI7XG59XG5cbi8qKlxuICogTm9ybWFsaXplZCBvcHRpb24gaXRlbSBmb3IgZHJvcGRvd25zIGFuZCBzZWxlY3RvcnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb29rdXBPcHRpb25JdGVtIHtcbiAgdmFsdWU6IHN0cmluZyB8IG51bWJlcjtcbiAgbGFiZWw6IHN0cmluZztcbiAgcmF3PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbi8qKlxuICogQWJzdHJhY3QgY29udHJhY3QgZm9yIGZldGNoaW5nIGR5bmFtaWMgbG9va3VwL29wdGlvbiBkYXRhIGZvciByZXBvcnQgZHJvcGRvd24gY29tcG9uZW50cy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFJlcG9ydExvb2t1cEFkYXB0ZXIge1xuICAvKipcbiAgICogRmV0Y2hlcyBkcm9wZG93biBvcHRpb24gcm93cyBmcm9tIGRhdGFiYXNlIHRhYmxlIG9yIHN0b3JlZCBwcm9jZWR1cmUuXG4gICAqL1xuICBhYnN0cmFjdCBmZXRjaE9wdGlvbnMocmVxdWVzdDogTG9va3VwUXVlcnlSZXF1ZXN0KTogT2JzZXJ2YWJsZTxMb29rdXBPcHRpb25JdGVtW10+O1xufVxuIl19
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLmNvbnRyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYndheXMtcmVwb3J0L3NyYy9saWIvZGF0YS1hY2Nlc3MvY29udHJhY3RzL2xvb2t1cC5jb250cmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE2QkE7O0dBRUc7QUFDSCxNQUFNLE9BQWdCLG1CQUFtQjtDQUt4QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERyb3Bkb3duU291cmNlVHlwZSB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWxzL3JlcG9ydC1jb21wb25lbnQubW9kZWwnO1xuXG4vKipcbiAqIFJlcXVlc3QgcGF5bG9hZCBmb3IgcXVlcnlpbmcgbG9va3VwIGRhdGEgZnJvbSB0aGUgaG9zdCBiYWNrZW5kXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9va3VwUXVlcnlSZXF1ZXN0IHtcbiAgc291cmNlVHlwZTogRHJvcGRvd25Tb3VyY2VUeXBlO1xuICBlbnRpdHlOYW1lPzogc3RyaW5nO1xuICBzY2hlbWE/OiBzdHJpbmc7XG4gIHZhbHVlRmllbGQ/OiBzdHJpbmc7XG4gIGRpc3BsYXlGaWVsZD86IHN0cmluZztcbiAgZmlsdGVyPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHBhcmFtZXRlcnM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgbGltaXQ/OiBudW1iZXI7XG4gIGFwaUVuZHBvaW50Pzogc3RyaW5nO1xuICBkYXRhUGF0aD86IHN0cmluZztcbiAgdXNlUHJveHk/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIE5vcm1hbGl6ZWQgb3B0aW9uIGl0ZW0gZm9yIGRyb3Bkb3ducyBhbmQgc2VsZWN0b3JzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9va3VwT3B0aW9uSXRlbSB7XG4gIHZhbHVlOiBzdHJpbmcgfCBudW1iZXI7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHJhdz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG4vKipcbiAqIEFic3RyYWN0IGNvbnRyYWN0IGZvciBmZXRjaGluZyBkeW5hbWljIGxvb2t1cC9vcHRpb24gZGF0YSBmb3IgcmVwb3J0IGRyb3Bkb3duIGNvbXBvbmVudHMuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBSZXBvcnRMb29rdXBBZGFwdGVyIHtcbiAgLyoqXG4gICAqIEZldGNoZXMgZHJvcGRvd24gb3B0aW9uIHJvd3MgZnJvbSBkYXRhYmFzZSB0YWJsZSBvciBzdG9yZWQgcHJvY2VkdXJlLlxuICAgKi9cbiAgYWJzdHJhY3QgZmV0Y2hPcHRpb25zKHJlcXVlc3Q6IExvb2t1cFF1ZXJ5UmVxdWVzdCk6IE9ic2VydmFibGU8TG9va3VwT3B0aW9uSXRlbVtdPjtcbn1cbiJdfQ==
@@ -4,6 +4,7 @@
4
4
  * The host application implements this to save/load report definitions
5
5
  * to/from their backend (database, file system, API, etc.).
6
6
  */
7
+ import { map } from 'rxjs';
7
8
  /**
8
9
  * Contract for persisting report definitions.
9
10
  *
@@ -21,5 +22,16 @@
21
22
  * ```
22
23
  */
23
24
  export class ReportPersistenceAdapter {
25
+ /** Returns true when this ID exists. Legacy host adapters may use the catalog fallback. */
26
+ checkId(reportId) {
27
+ return this.list().pipe(map(reports => reports.some(report => report.id.toLowerCase() === reportId.toLowerCase())));
28
+ }
29
+ /** Compact identity metadata used to confirm an overwrite. Legacy hosts use summaries. */
30
+ inspectId(reportId) {
31
+ return this.list().pipe(map(reports => {
32
+ const report = reports.find(item => item.id.toLowerCase() === reportId.toLowerCase());
33
+ return report ? { exists: true, name: report.name, version: report.version } : { exists: false };
34
+ }));
35
+ }
24
36
  }
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXBlcnNpc3RlbmNlLmNvbnRyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYndheXMtcmVwb3J0L3NyYy9saWIvZGF0YS1hY2Nlc3MvY29udHJhY3RzL3JlcG9ydC1wZXJzaXN0ZW5jZS5jb250cmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUtIOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILE1BQU0sT0FBZ0Isd0JBQXdCO0NBZTdDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSZXBvcnQgcGVyc2lzdGVuY2UgY29udHJhY3QuXG4gKlxuICogVGhlIGhvc3QgYXBwbGljYXRpb24gaW1wbGVtZW50cyB0aGlzIHRvIHNhdmUvbG9hZCByZXBvcnQgZGVmaW5pdGlvbnNcbiAqIHRvL2Zyb20gdGhlaXIgYmFja2VuZCAoZGF0YWJhc2UsIGZpbGUgc3lzdGVtLCBBUEksIGV0Yy4pLlxuICovXG5cbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFJlcG9ydERlZmluaXRpb24sIFJlcG9ydFN1bW1hcnkgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscy9yZXBvcnQtZGVmaW5pdGlvbi5tb2RlbCc7XG5cbi8qKlxuICogQ29udHJhY3QgZm9yIHBlcnNpc3RpbmcgcmVwb3J0IGRlZmluaXRpb25zLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBASW5qZWN0YWJsZSgpXG4gKiBleHBvcnQgY2xhc3MgTXlQZXJzaXN0ZW5jZUFkYXB0ZXIgZXh0ZW5kcyBSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXIge1xuICogICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHsgc3VwZXIoKTsgfVxuICpcbiAqICAgbG9hZChyZXBvcnRJZCkge1xuICogICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFJlcG9ydERlZmluaXRpb24+KGAvYXBpL3JlcG9ydHMvJHtyZXBvcnRJZH1gKTtcbiAqICAgfVxuICogICAvLyAuLi4gb3RoZXIgbWV0aG9kc1xuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXIge1xuICAvKiogTG9hZCBhIGZ1bGwgcmVwb3J0IGRlZmluaXRpb24gYnkgSUQuICovXG4gIGFic3RyYWN0IGxvYWQocmVwb3J0SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8UmVwb3J0RGVmaW5pdGlvbj47XG5cbiAgLyoqIFNhdmUgKGNyZWF0ZSBvciB1cGRhdGUpIGEgcmVwb3J0IGRlZmluaXRpb24uICovXG4gIGFic3RyYWN0IHNhdmUocmVwb3J0OiBSZXBvcnREZWZpbml0aW9uKTogT2JzZXJ2YWJsZTxSZXBvcnREZWZpbml0aW9uPjtcblxuICAvKiogTGlzdCBhdmFpbGFibGUgcmVwb3J0cyAoc3VtbWFyaWVzIG9ubHkpLiAqL1xuICBhYnN0cmFjdCBsaXN0KCk6IE9ic2VydmFibGU8UmVwb3J0U3VtbWFyeVtdPjtcblxuICAvKiogRGVsZXRlIGEgcmVwb3J0IGJ5IElELiAqL1xuICBhYnN0cmFjdCBkZWxldGUocmVwb3J0SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8dm9pZD47XG5cbiAgLyoqIFB1Ymxpc2ggYSBzcGVjaWZpYyB2ZXJzaW9uIG9mIGEgcmVwb3J0LiAqL1xuICBhYnN0cmFjdCBwdWJsaXNoKHJlcG9ydElkOiBzdHJpbmcsIHZlcnNpb246IG51bWJlcik6IE9ic2VydmFibGU8dm9pZD47XG59XG4iXX0=
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXBlcnNpc3RlbmNlLmNvbnRyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYndheXMtcmVwb3J0L3NyYy9saWIvZGF0YS1hY2Nlc3MvY29udHJhY3RzL3JlcG9ydC1wZXJzaXN0ZW5jZS5jb250cmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUVILE9BQU8sRUFBYyxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFnQnZDOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILE1BQU0sT0FBZ0Isd0JBQXdCO0lBQzVDLDJGQUEyRjtJQUMzRixPQUFPLENBQUMsUUFBZ0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRSxLQUFLLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0SCxDQUFDO0lBRUQsMEZBQTBGO0lBQzFGLFNBQVMsQ0FBQyxRQUFnQjtRQUN4QixPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3BDLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRSxLQUFLLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQ3RGLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDbkcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7Q0FnQkYiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJlcG9ydCBwZXJzaXN0ZW5jZSBjb250cmFjdC5cbiAqXG4gKiBUaGUgaG9zdCBhcHBsaWNhdGlvbiBpbXBsZW1lbnRzIHRoaXMgdG8gc2F2ZS9sb2FkIHJlcG9ydCBkZWZpbml0aW9uc1xuICogdG8vZnJvbSB0aGVpciBiYWNrZW5kIChkYXRhYmFzZSwgZmlsZSBzeXN0ZW0sIEFQSSwgZXRjLikuXG4gKi9cblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgbWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBSZXBvcnREZWZpbml0aW9uLCBSZXBvcnRTdW1tYXJ5IH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMvcmVwb3J0LWRlZmluaXRpb24ubW9kZWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydFNhdmVPcHRpb25zIHtcbiAgLyoqIFJlamVjdCBhbiBleGlzdGluZyBJRCBpbnN0ZWFkIG9mIHVwZGF0aW5nIGl0LiBIb3N0cyBzaG91bGQgZW5mb3JjZSB0aGlzIGF0b21pY2FsbHkuICovXG4gIGNyZWF0ZU9ubHk/OiBib29sZWFuO1xuICAvKiogVXBkYXRlIG9ubHkgYW4gZXhpc3RpbmcgcmVwb3J0IGF0IHRoaXMgdmVyc2lvbjsgcmVqZWN0IG1pc3Npbmcgb3IgY2hhbmdlZCByZWNvcmRzLiAqL1xuICBleHBlY3RlZFZlcnNpb24/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0SWRTdGF0dXMge1xuICBleGlzdHM6IGJvb2xlYW47XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHZlcnNpb24/OiBudW1iZXI7XG59XG5cbi8qKlxuICogQ29udHJhY3QgZm9yIHBlcnNpc3RpbmcgcmVwb3J0IGRlZmluaXRpb25zLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBASW5qZWN0YWJsZSgpXG4gKiBleHBvcnQgY2xhc3MgTXlQZXJzaXN0ZW5jZUFkYXB0ZXIgZXh0ZW5kcyBSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXIge1xuICogICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHsgc3VwZXIoKTsgfVxuICpcbiAqICAgbG9hZChyZXBvcnRJZCkge1xuICogICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFJlcG9ydERlZmluaXRpb24+KGAvYXBpL3JlcG9ydHMvJHtyZXBvcnRJZH1gKTtcbiAqICAgfVxuICogICAvLyAuLi4gb3RoZXIgbWV0aG9kc1xuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXIge1xuICAvKiogUmV0dXJucyB0cnVlIHdoZW4gdGhpcyBJRCBleGlzdHMuIExlZ2FjeSBob3N0IGFkYXB0ZXJzIG1heSB1c2UgdGhlIGNhdGFsb2cgZmFsbGJhY2suICovXG4gIGNoZWNrSWQocmVwb3J0SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmxpc3QoKS5waXBlKG1hcChyZXBvcnRzID0+IHJlcG9ydHMuc29tZShyZXBvcnQgPT4gcmVwb3J0LmlkLnRvTG93ZXJDYXNlKCkgPT09IHJlcG9ydElkLnRvTG93ZXJDYXNlKCkpKSk7XG4gIH1cblxuICAvKiogQ29tcGFjdCBpZGVudGl0eSBtZXRhZGF0YSB1c2VkIHRvIGNvbmZpcm0gYW4gb3ZlcndyaXRlLiBMZWdhY3kgaG9zdHMgdXNlIHN1bW1hcmllcy4gKi9cbiAgaW5zcGVjdElkKHJlcG9ydElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFJlcG9ydElkU3RhdHVzPiB7XG4gICAgcmV0dXJuIHRoaXMubGlzdCgpLnBpcGUobWFwKHJlcG9ydHMgPT4ge1xuICAgICAgY29uc3QgcmVwb3J0ID0gcmVwb3J0cy5maW5kKGl0ZW0gPT4gaXRlbS5pZC50b0xvd2VyQ2FzZSgpID09PSByZXBvcnRJZC50b0xvd2VyQ2FzZSgpKTtcbiAgICAgIHJldHVybiByZXBvcnQgPyB7IGV4aXN0czogdHJ1ZSwgbmFtZTogcmVwb3J0Lm5hbWUsIHZlcnNpb246IHJlcG9ydC52ZXJzaW9uIH0gOiB7IGV4aXN0czogZmFsc2UgfTtcbiAgICB9KSk7XG4gIH1cblxuICAvKiogTG9hZCBhIGZ1bGwgcmVwb3J0IGRlZmluaXRpb24gYnkgSUQuICovXG4gIGFic3RyYWN0IGxvYWQocmVwb3J0SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8UmVwb3J0RGVmaW5pdGlvbj47XG5cbiAgLyoqIFNhdmUgKGNyZWF0ZSBvciB1cGRhdGUpIGEgcmVwb3J0IGRlZmluaXRpb24uICovXG4gIGFic3RyYWN0IHNhdmUocmVwb3J0OiBSZXBvcnREZWZpbml0aW9uLCBvcHRpb25zPzogUmVwb3J0U2F2ZU9wdGlvbnMpOiBPYnNlcnZhYmxlPFJlcG9ydERlZmluaXRpb24+O1xuXG4gIC8qKiBMaXN0IGF2YWlsYWJsZSByZXBvcnRzIChzdW1tYXJpZXMgb25seSkuICovXG4gIGFic3RyYWN0IGxpc3QoKTogT2JzZXJ2YWJsZTxSZXBvcnRTdW1tYXJ5W10+O1xuXG4gIC8qKiBEZWxldGUgYSByZXBvcnQgYnkgSUQuICovXG4gIGFic3RyYWN0IGRlbGV0ZShyZXBvcnRJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTx2b2lkPjtcblxuICAvKiogUHVibGlzaCBhIHNwZWNpZmljIHZlcnNpb24gb2YgYSByZXBvcnQuICovXG4gIGFic3RyYWN0IHB1Ymxpc2gocmVwb3J0SWQ6IHN0cmluZywgdmVyc2lvbjogbnVtYmVyKTogT2JzZXJ2YWJsZTx2b2lkPjtcbn1cbiJdfQ==