@o3r/rules-engine 12.0.0-next.2 → 12.0.0-next.21

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 (108) hide show
  1. package/builders/package.json +3 -0
  2. package/components/rules-engine/rule-actions/rule-actions-pres.component.d.ts +1 -1
  3. package/components/rules-engine/rule-actions/rule-actions-pres.component.d.ts.map +1 -1
  4. package/components/rules-engine/rule-condition/rule-condition-pres.component.d.ts +1 -1
  5. package/components/rules-engine/rule-condition/rule-condition-pres.component.d.ts.map +1 -1
  6. package/components/rules-engine/rule-key-value/rule-key-value-pres.component.d.ts +1 -1
  7. package/components/rules-engine/rule-key-value/rule-key-value-pres.component.d.ts.map +1 -1
  8. package/components/rules-engine/rule-tree/rule-tree-pres.component.d.ts +1 -1
  9. package/components/rules-engine/rule-tree/rule-tree-pres.component.d.ts.map +1 -1
  10. package/components/rules-engine/ruleset-history/ruleset-history-pres.component.d.ts +1 -1
  11. package/components/rules-engine/ruleset-history/ruleset-history-pres.component.d.ts.map +1 -1
  12. package/components/rules-engine/ruleset-history/ruleset-history-pres.module.d.ts +7 -9
  13. package/components/rules-engine/ruleset-history/ruleset-history-pres.module.d.ts.map +1 -1
  14. package/components/rules-engine/shared/fallback-to.pipe.d.ts +0 -7
  15. package/components/rules-engine/shared/fallback-to.pipe.d.ts.map +1 -1
  16. package/components/rules-engine/shared/json-or-string.pipe.d.ts.map +1 -1
  17. package/engine/debug/helpers.d.ts +3 -2
  18. package/engine/debug/helpers.d.ts.map +1 -1
  19. package/engine/engine.interface.d.ts +2 -8
  20. package/engine/engine.interface.d.ts.map +1 -1
  21. package/engine/helpers/filter-ruleset-event.operator.d.ts.map +1 -1
  22. package/engine/ruleset-executor.d.ts.map +1 -1
  23. package/engine/structure.d.ts +0 -8
  24. package/engine/structure.d.ts.map +1 -1
  25. package/fesm2022/o3r-rules-engine.mjs +186 -218
  26. package/fesm2022/o3r-rules-engine.mjs.map +1 -1
  27. package/fixtures/jasmine/package.json +3 -0
  28. package/fixtures/jest/package.json +3 -0
  29. package/interfaces/index.d.ts +0 -1
  30. package/interfaces/index.d.ts.map +1 -1
  31. package/package.json +17 -22
  32. package/schemas/rulesets.schema.json +0 -13
  33. package/schematics/package.json +3 -0
  34. package/stores/rulesets/rulesets.selectors.d.ts +0 -5
  35. package/stores/rulesets/rulesets.selectors.d.ts.map +1 -1
  36. package/esm2022/components/index.mjs +0 -2
  37. package/esm2022/components/rules-engine/index.mjs +0 -4
  38. package/esm2022/components/rules-engine/rule-actions/rule-actions-pres.component.mjs +0 -35
  39. package/esm2022/components/rules-engine/rule-condition/rule-condition-pres.component.mjs +0 -36
  40. package/esm2022/components/rules-engine/rule-key-value/rule-key-value-pres.component.mjs +0 -63
  41. package/esm2022/components/rules-engine/rule-tree/rule-tree-pres.component.mjs +0 -48
  42. package/esm2022/components/rules-engine/ruleset-history/ruleset-history-pres.component.mjs +0 -50
  43. package/esm2022/components/rules-engine/ruleset-history/ruleset-history-pres.module.mjs +0 -23
  44. package/esm2022/components/rules-engine/shared/fallback-to.pipe.mjs +0 -25
  45. package/esm2022/components/rules-engine/shared/index.mjs +0 -4
  46. package/esm2022/components/rules-engine/shared/json-or-string.pipe.mjs +0 -23
  47. package/esm2022/components/rules-engine/shared/ruleset-history.helper.mjs +0 -51
  48. package/esm2022/devkit/index.mjs +0 -7
  49. package/esm2022/devkit/rules-engine-devkit.interface.mjs +0 -6
  50. package/esm2022/devkit/rules-engine-devtools.console.service.mjs +0 -111
  51. package/esm2022/devkit/rules-engine-devtools.message.service.mjs +0 -115
  52. package/esm2022/devkit/rules-engine-devtools.module.mjs +0 -47
  53. package/esm2022/devkit/rules-engine-devtools.service.mjs +0 -130
  54. package/esm2022/devkit/rules-engine-devtools.token.mjs +0 -6
  55. package/esm2022/engine/debug/engine.debug.mjs +0 -195
  56. package/esm2022/engine/debug/helpers.mjs +0 -91
  57. package/esm2022/engine/engine.interface.mjs +0 -2
  58. package/esm2022/engine/engine.mjs +0 -134
  59. package/esm2022/engine/fact/fact.interfaces.mjs +0 -2
  60. package/esm2022/engine/fact/index.mjs +0 -2
  61. package/esm2022/engine/helpers/filter-ruleset-event.operator.mjs +0 -19
  62. package/esm2022/engine/index.mjs +0 -8
  63. package/esm2022/engine/operator/index.mjs +0 -4
  64. package/esm2022/engine/operator/operator.helpers.mjs +0 -107
  65. package/esm2022/engine/operator/operator.interface.mjs +0 -2
  66. package/esm2022/engine/operator/operators/array-based.operators.mjs +0 -266
  67. package/esm2022/engine/operator/operators/basic.operators.mjs +0 -93
  68. package/esm2022/engine/operator/operators/date-based.operators.mjs +0 -119
  69. package/esm2022/engine/operator/operators/index.mjs +0 -10
  70. package/esm2022/engine/operator/operators/number-based.operators.mjs +0 -44
  71. package/esm2022/engine/rule/index.mjs +0 -2
  72. package/esm2022/engine/rule/rule.helpers.mjs +0 -50
  73. package/esm2022/engine/ruleset-executor.mjs +0 -256
  74. package/esm2022/engine/structure.mjs +0 -2
  75. package/esm2022/fact/fact.abstract-service.mjs +0 -12
  76. package/esm2022/fact/index.mjs +0 -3
  77. package/esm2022/fact/reserved.facts.mjs +0 -2
  78. package/esm2022/fixtures/jasmine/index.mjs +0 -2
  79. package/esm2022/fixtures/jasmine/o3r-rules-engine-fixtures-jasmine.mjs +0 -5
  80. package/esm2022/fixtures/jasmine/rules-engine.runner.service.fixture.jasmine.mjs +0 -14
  81. package/esm2022/fixtures/jest/index.mjs +0 -2
  82. package/esm2022/fixtures/jest/o3r-rules-engine-fixtures-jest.mjs +0 -5
  83. package/esm2022/fixtures/jest/rules-engine.runner.service.fixture.jest.mjs +0 -14
  84. package/esm2022/inner-facts/current-time/current-time-fact.service.mjs +0 -29
  85. package/esm2022/inner-facts/current-time/current-time.facts.mjs +0 -2
  86. package/esm2022/inner-facts/current-time/index.mjs +0 -3
  87. package/esm2022/inner-facts/index.mjs +0 -2
  88. package/esm2022/interfaces/action.interfaces.mjs +0 -2
  89. package/esm2022/interfaces/index.mjs +0 -3
  90. package/esm2022/interfaces/linkable-to-ruleset.interfaces.mjs +0 -2
  91. package/esm2022/o3r-rules-engine.mjs +0 -5
  92. package/esm2022/public_api.mjs +0 -9
  93. package/esm2022/services/index.mjs +0 -3
  94. package/esm2022/services/rules-engine.token.mjs +0 -9
  95. package/esm2022/services/runner/index.mjs +0 -3
  96. package/esm2022/services/runner/rules-engine.runner.module.mjs +0 -37
  97. package/esm2022/services/runner/rules-engine.runner.service.mjs +0 -132
  98. package/esm2022/stores/index.mjs +0 -2
  99. package/esm2022/stores/rulesets/index.mjs +0 -8
  100. package/esm2022/stores/rulesets/rulesets.actions.mjs +0 -42
  101. package/esm2022/stores/rulesets/rulesets.effect.mjs +0 -30
  102. package/esm2022/stores/rulesets/rulesets.module.mjs +0 -42
  103. package/esm2022/stores/rulesets/rulesets.reducer.mjs +0 -35
  104. package/esm2022/stores/rulesets/rulesets.selectors.mjs +0 -115
  105. package/esm2022/stores/rulesets/rulesets.state.mjs +0 -5
  106. package/esm2022/stores/rulesets/rulesets.sync.mjs +0 -20
  107. package/interfaces/action.interfaces.d.ts +0 -44
  108. package/interfaces/action.interfaces.d.ts.map +0 -1
@@ -1,47 +0,0 @@
1
- import { NgModule, } from '@angular/core';
2
- import { StoreModule, } from '@ngrx/store';
3
- import { RulesetsStoreModule, } from '../stores/index';
4
- import { RulesEngineDevtoolsConsoleService, } from './rules-engine-devtools.console.service';
5
- import { RulesEngineDevtoolsMessageService, } from './rules-engine-devtools.message.service';
6
- import { OTTER_RULES_ENGINE_DEVTOOLS_DEFAULT_OPTIONS, OTTER_RULES_ENGINE_DEVTOOLS_OPTIONS, } from './rules-engine-devtools.token';
7
- import * as i0 from "@angular/core";
8
- export class RulesEngineDevtoolsModule {
9
- /**
10
- * Initialize Otter Devtools
11
- * @param options
12
- */
13
- static instrument(options) {
14
- return {
15
- ngModule: RulesEngineDevtoolsModule,
16
- providers: [
17
- { provide: OTTER_RULES_ENGINE_DEVTOOLS_OPTIONS, useValue: { ...OTTER_RULES_ENGINE_DEVTOOLS_DEFAULT_OPTIONS, ...options }, multi: false },
18
- RulesEngineDevtoolsMessageService,
19
- RulesEngineDevtoolsConsoleService
20
- ]
21
- };
22
- }
23
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RulesEngineDevtoolsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
24
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: RulesEngineDevtoolsModule, imports: [StoreModule,
25
- RulesetsStoreModule] }); }
26
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RulesEngineDevtoolsModule, providers: [
27
- { provide: OTTER_RULES_ENGINE_DEVTOOLS_OPTIONS, useValue: OTTER_RULES_ENGINE_DEVTOOLS_DEFAULT_OPTIONS },
28
- RulesEngineDevtoolsMessageService,
29
- RulesEngineDevtoolsConsoleService
30
- ], imports: [StoreModule,
31
- RulesetsStoreModule] }); }
32
- }
33
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RulesEngineDevtoolsModule, decorators: [{
34
- type: NgModule,
35
- args: [{
36
- imports: [
37
- StoreModule,
38
- RulesetsStoreModule
39
- ],
40
- providers: [
41
- { provide: OTTER_RULES_ENGINE_DEVTOOLS_OPTIONS, useValue: OTTER_RULES_ENGINE_DEVTOOLS_DEFAULT_OPTIONS },
42
- RulesEngineDevtoolsMessageService,
43
- RulesEngineDevtoolsConsoleService
44
- ]
45
- }]
46
- }] });
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZXMtZW5naW5lLWRldnRvb2xzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZXZraXQvcnVsZXMtZW5naW5lLWRldnRvb2xzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsUUFBUSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxXQUFXLEdBQ1osTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUNMLG1CQUFtQixHQUNwQixNQUFNLGlCQUFpQixDQUFDO0FBSXpCLE9BQU8sRUFDTCxpQ0FBaUMsR0FDbEMsTUFBTSx5Q0FBeUMsQ0FBQztBQUNqRCxPQUFPLEVBQ0wsaUNBQWlDLEdBQ2xDLE1BQU0seUNBQXlDLENBQUM7QUFDakQsT0FBTyxFQUNMLDJDQUEyQyxFQUMzQyxtQ0FBbUMsR0FDcEMsTUFBTSwrQkFBK0IsQ0FBQzs7QUFhdkMsTUFBTSxPQUFPLHlCQUF5QjtJQUNwQzs7O09BR0c7SUFDSSxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQW1EO1FBQzFFLE9BQU87WUFDTCxRQUFRLEVBQUUseUJBQXlCO1lBQ25DLFNBQVMsRUFBRTtnQkFDVCxFQUFFLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxHQUFHLDJDQUEyQyxFQUFFLEdBQUcsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtnQkFDeEksaUNBQWlDO2dCQUNqQyxpQ0FBaUM7YUFDbEM7U0FDRixDQUFDO0lBQ0osQ0FBQztrSUFkVSx5QkFBeUI7bUlBQXpCLHlCQUF5QixZQVRsQyxXQUFXO1lBQ1gsbUJBQW1CO21JQVFWLHlCQUF5QixhQU56QjtZQUNULEVBQUUsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLFFBQVEsRUFBRSwyQ0FBMkMsRUFBRTtZQUN2RyxpQ0FBaUM7WUFDakMsaUNBQWlDO1NBQ2xDLFlBUEMsV0FBVztZQUNYLG1CQUFtQjs7NEZBUVYseUJBQXlCO2tCQVhyQyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxXQUFXO3dCQUNYLG1CQUFtQjtxQkFDcEI7b0JBQ0QsU0FBUyxFQUFFO3dCQUNULEVBQUUsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLFFBQVEsRUFBRSwyQ0FBMkMsRUFBRTt3QkFDdkcsaUNBQWlDO3dCQUNqQyxpQ0FBaUM7cUJBQ2xDO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgTW9kdWxlV2l0aFByb3ZpZGVycyxcbiAgTmdNb2R1bGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgU3RvcmVNb2R1bGUsXG59IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7XG4gIFJ1bGVzZXRzU3RvcmVNb2R1bGUsXG59IGZyb20gJy4uL3N0b3Jlcy9pbmRleCc7XG5pbXBvcnQgdHlwZSB7XG4gIFJ1bGVzRW5naW5lRGV2dG9vbHNTZXJ2aWNlT3B0aW9ucyxcbn0gZnJvbSAnLi9ydWxlcy1lbmdpbmUtZGV2a2l0LmludGVyZmFjZSc7XG5pbXBvcnQge1xuICBSdWxlc0VuZ2luZURldnRvb2xzQ29uc29sZVNlcnZpY2UsXG59IGZyb20gJy4vcnVsZXMtZW5naW5lLWRldnRvb2xzLmNvbnNvbGUuc2VydmljZSc7XG5pbXBvcnQge1xuICBSdWxlc0VuZ2luZURldnRvb2xzTWVzc2FnZVNlcnZpY2UsXG59IGZyb20gJy4vcnVsZXMtZW5naW5lLWRldnRvb2xzLm1lc3NhZ2Uuc2VydmljZSc7XG5pbXBvcnQge1xuICBPVFRFUl9SVUxFU19FTkdJTkVfREVWVE9PTFNfREVGQVVMVF9PUFRJT05TLFxuICBPVFRFUl9SVUxFU19FTkdJTkVfREVWVE9PTFNfT1BUSU9OUyxcbn0gZnJvbSAnLi9ydWxlcy1lbmdpbmUtZGV2dG9vbHMudG9rZW4nO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgU3RvcmVNb2R1bGUsXG4gICAgUnVsZXNldHNTdG9yZU1vZHVsZVxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IE9UVEVSX1JVTEVTX0VOR0lORV9ERVZUT09MU19PUFRJT05TLCB1c2VWYWx1ZTogT1RURVJfUlVMRVNfRU5HSU5FX0RFVlRPT0xTX0RFRkFVTFRfT1BUSU9OUyB9LFxuICAgIFJ1bGVzRW5naW5lRGV2dG9vbHNNZXNzYWdlU2VydmljZSxcbiAgICBSdWxlc0VuZ2luZURldnRvb2xzQ29uc29sZVNlcnZpY2VcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBSdWxlc0VuZ2luZURldnRvb2xzTW9kdWxlIHtcbiAgLyoqXG4gICAqIEluaXRpYWxpemUgT3R0ZXIgRGV2dG9vbHNcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaW5zdHJ1bWVudChvcHRpb25zOiBQYXJ0aWFsPFJ1bGVzRW5naW5lRGV2dG9vbHNTZXJ2aWNlT3B0aW9ucz4pOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFJ1bGVzRW5naW5lRGV2dG9vbHNNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IFJ1bGVzRW5naW5lRGV2dG9vbHNNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgeyBwcm92aWRlOiBPVFRFUl9SVUxFU19FTkdJTkVfREVWVE9PTFNfT1BUSU9OUywgdXNlVmFsdWU6IHsgLi4uT1RURVJfUlVMRVNfRU5HSU5FX0RFVlRPT0xTX0RFRkFVTFRfT1BUSU9OUywgLi4ub3B0aW9ucyB9LCBtdWx0aTogZmFsc2UgfSxcbiAgICAgICAgUnVsZXNFbmdpbmVEZXZ0b29sc01lc3NhZ2VTZXJ2aWNlLFxuICAgICAgICBSdWxlc0VuZ2luZURldnRvb2xzQ29uc29sZVNlcnZpY2VcbiAgICAgIF1cbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -1,130 +0,0 @@
1
- import { Inject, Injectable, Optional, } from '@angular/core';
2
- import { select, Store, } from '@ngrx/store';
3
- import { combineLatest, firstValueFrom, } from 'rxjs';
4
- import { map, scan, shareReplay, } from 'rxjs/operators';
5
- import { RulesEngineRunnerService, } from '../services';
6
- import { selectRulesetsEntities, } from '../stores';
7
- import { OTTER_RULES_ENGINE_DEVTOOLS_DEFAULT_OPTIONS, OTTER_RULES_ENGINE_DEVTOOLS_OPTIONS, } from './rules-engine-devtools.token';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "@ngrx/store";
10
- import * as i2 from "../services";
11
- export class OtterRulesEngineDevtools {
12
- /**
13
- * Return true if the rules engine debug option is activated
14
- */
15
- get isRulesEngineDebugActivated() {
16
- return !!this.rulesEngineService.engine.debugMode;
17
- }
18
- constructor(store, rulesEngineService, options) {
19
- this.store = store;
20
- this.rulesEngineService = rulesEngineService;
21
- const eventsStackLimit = (options || OTTER_RULES_ENGINE_DEVTOOLS_DEFAULT_OPTIONS).rulesEngineStackLimit;
22
- this.rulesEngineEvents$ = this.rulesEngineService.engine.engineDebug?.debugEvents$.pipe(scan((previousEvents, currentEvent) => {
23
- const stack = eventsStackLimit && previousEvents.length === eventsStackLimit ? previousEvents.slice(1) : previousEvents;
24
- return [...stack, currentEvent];
25
- }, []), shareReplay(1));
26
- this.rulesEngineReport$ = this.rulesEngineEvents$ && combineLatest([this.rulesEngineEvents$, this.store.pipe(select(selectRulesetsEntities))]).pipe(map(([events, rulesetEntities]) => {
27
- const rulesetMap = Object.entries(rulesetEntities)
28
- .reduce((acc, [id, ruleset]) => {
29
- if (ruleset) {
30
- acc[id] = ruleset;
31
- }
32
- return acc;
33
- }, {});
34
- return { events, rulesetMap };
35
- }), shareReplay(1));
36
- }
37
- /** Return the list of debug events emitted by rules engine */
38
- async getCurrentRulesEngineEventsStack() {
39
- return this.rulesEngineEvents$ && firstValueFrom(this.rulesEngineEvents$);
40
- }
41
- /** Returns the list of active rulesets (name and id) at the moment when the function is called */
42
- async getActiveRulesets() {
43
- const lastActiveRulesetsEvent = (this.rulesEngineEvents$ && await firstValueFrom(this.rulesEngineEvents$))?.filter((e) => e.type === 'ActiveRulesets').reverse()[0];
44
- return lastActiveRulesetsEvent?.rulesets;
45
- }
46
- /** Returns the list of available rulesets (name and id) at the moment when the function is called */
47
- async getAvailableRulesets() {
48
- const lastAvailableRulesetsEvent = (this.rulesEngineEvents$ && await firstValueFrom(this.rulesEngineEvents$))?.filter((e) => e.type === 'AvailableRulesets').reverse()[0];
49
- return lastAvailableRulesetsEvent?.availableRulesets;
50
- }
51
- /** Returns the list of output actions emitted by the rules engine at the moment when the function is called */
52
- async getAllOutputActions() {
53
- return (this.rulesEngineEvents$ && await firstValueFrom(this.rulesEngineEvents$))?.filter((e) => e.type === 'AllActions')?.reverse()[0];
54
- }
55
- /**
56
- * Get the list of executions for the given ruleset
57
- * @param rulesetId
58
- */
59
- async getRulesetExecutions(rulesetId) {
60
- return (this.rulesEngineEvents$ && await firstValueFrom(this.rulesEngineEvents$))?.filter((e) => (e.type === 'RulesetExecution' || e.type === 'RulesetExecutionError')
61
- && e.rulesetId === rulesetId);
62
- }
63
- /**
64
- * Check if the ruleset is activ in the moment when the function is called
65
- * @param rulesetId
66
- * @returns True if the ruleset is active; False if the ruleset is inactive or it does not exist
67
- */
68
- async isRulesetActive(rulesetId) {
69
- return !!(await this.getActiveRulesets())?.find((r) => r.id === rulesetId);
70
- }
71
- /**
72
- * Get the list of rules executed for the specified ruleset
73
- * @param rulesetId
74
- */
75
- async getRulesEvaluationsForRuleset(rulesetId) {
76
- const rulesetExec = await this.getRulesetExecutions(rulesetId);
77
- return rulesetExec?.map((e) => e?.rulesEvaluations?.filter((re) => !re.cached)).flat();
78
- }
79
- /**
80
- * Get the list of input facts (name, current value) for the specified ruleset, at the moment when the function is called
81
- * @param rulesetId
82
- */
83
- async getInputFactsForRuleset(rulesetId) {
84
- const rulesetExecutions = await this.getRulesetExecutions(rulesetId);
85
- return rulesetExecutions ? rulesetExecutions.at(-1).inputFacts : undefined;
86
- }
87
- /**
88
- * Get the list of triggers for the specified ruleset
89
- * @param rulesetId
90
- */
91
- async getTriggersForRuleset(rulesetId) {
92
- return (await this.getRulesEvaluationsForRuleset(rulesetId))?.map((e) => e.triggers).flat().flatMap((triggersMap) => Object.values(triggersMap));
93
- }
94
- /**
95
- * Get the list of outputed actions emitted by the given ruleset, at the moment when the function is called
96
- * @param rulesetId
97
- */
98
- async getOutputActionsForRuleset(rulesetId) {
99
- const rulesetExecutions = await this.getRulesetExecutions(rulesetId);
100
- return rulesetExecutions ? rulesetExecutions.at(-1).outputActions : undefined;
101
- }
102
- /** Get the list of fact names and corresponding values */
103
- getAllFactsSnapshot() {
104
- const registeredFacts = this.rulesEngineService?.engine.getRegisteredFactsNames();
105
- if (registeredFacts) {
106
- return this.rulesEngineService.engine.engineDebug?.getFactsSnapshot(registeredFacts);
107
- }
108
- }
109
- /**
110
- * Retrieve the ruleset information (rules, linkedComponents, validity range etc.) for a ruleset id
111
- * @param rulesetId
112
- */
113
- getRulesetInformation(rulesetId) {
114
- return firstValueFrom(this.store.pipe(select(selectRulesetsEntities), map((entities) => entities[rulesetId])));
115
- }
116
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OtterRulesEngineDevtools, deps: [{ token: i1.Store }, { token: i2.RulesEngineRunnerService }, { token: OTTER_RULES_ENGINE_DEVTOOLS_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
117
- /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OtterRulesEngineDevtools, providedIn: 'root' }); }
118
- }
119
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OtterRulesEngineDevtools, decorators: [{
120
- type: Injectable,
121
- args: [{
122
- providedIn: 'root'
123
- }]
124
- }], ctorParameters: () => [{ type: i1.Store }, { type: i2.RulesEngineRunnerService }, { type: undefined, decorators: [{
125
- type: Optional
126
- }, {
127
- type: Inject,
128
- args: [OTTER_RULES_ENGINE_DEVTOOLS_OPTIONS]
129
- }] }] });
130
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZXMtZW5naW5lLWRldnRvb2xzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGV2a2l0L3J1bGVzLWVuZ2luZS1kZXZ0b29scy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxNQUFNLEVBQ04sVUFBVSxFQUNWLFFBQVEsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsTUFBTSxFQUNOLEtBQUssR0FDTixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQ0wsYUFBYSxFQUNiLGNBQWMsR0FFZixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFDTCxHQUFHLEVBQ0gsSUFBSSxFQUNKLFdBQVcsR0FDWixNQUFNLGdCQUFnQixDQUFDO0FBVXhCLE9BQU8sRUFDTCx3QkFBd0IsR0FDekIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUdMLHNCQUFzQixHQUN2QixNQUFNLFdBQVcsQ0FBQztBQUluQixPQUFPLEVBQ0wsMkNBQTJDLEVBQzNDLG1DQUFtQyxHQUNwQyxNQUFNLCtCQUErQixDQUFDOzs7O0FBS3ZDLE1BQU0sT0FBTyx3QkFBd0I7SUFPbkM7O09BRUc7SUFDSCxJQUFXLDJCQUEyQjtRQUNwQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsWUFDWSxLQUEyQixFQUNwQixrQkFBNEMsRUFDSixPQUEwQztRQUZ6RixVQUFLLEdBQUwsS0FBSyxDQUFzQjtRQUNwQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQTBCO1FBRTdELE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxPQUFPLElBQUksMkNBQTJDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQztRQUN4RyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsWUFB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QUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUF3QixDQUFDLENBQzlELENBQUMsQ0FBQztJQUNMLENBQUM7a0lBeElVLHdCQUF3QiwrRUFpQmIsbUNBQW1DO3NJQWpCOUMsd0JBQXdCLGNBRnZCLE1BQU07OzRGQUVQLHdCQUF3QjtrQkFIcEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQWtCSSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLG1DQUFtQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEluamVjdCxcbiAgSW5qZWN0YWJsZSxcbiAgT3B0aW9uYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgc2VsZWN0LFxuICBTdG9yZSxcbn0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHtcbiAgY29tYmluZUxhdGVzdCxcbiAgZmlyc3RWYWx1ZUZyb20sXG4gIE9ic2VydmFibGUsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgbWFwLFxuICBzY2FuLFxuICBzaGFyZVJlcGxheSxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHR5cGUge1xuICBBY3RpdmVSdWxlc2V0c0V2ZW50LFxuICBBdmFpbGFibGVSdWxlc2V0cyxcbiAgQmFzZVJ1bGVzZXRFeGVjdXRpb24sXG4gIERlYnVnRXZlbnQsXG4gIFJ1bGVzZXQsXG4gIFJ1bGVzZXRFeGVjdXRpb25FcnJvckV2ZW50LFxuICBSdWxlc2V0RXhlY3V0aW9uRXZlbnQsXG59IGZyb20gJy4uL2VuZ2luZSc7XG5pbXBvcnQge1xuICBSdWxlc0VuZ2luZVJ1bm5lclNlcnZpY2UsXG59IGZyb20gJy4uL3NlcnZpY2VzJztcbmltcG9ydCB7XG4gIFJ1bGVzZXRzTW9kZWwsXG4gIFJ1bGVzZXRzU3RvcmUsXG4gIHNlbGVjdFJ1bGVzZXRzRW50aXRpZXMsXG59IGZyb20gJy4uL3N0b3Jlcyc7XG5pbXBvcnQge1xuICBSdWxlc0VuZ2luZURldnRvb2xzU2VydmljZU9wdGlvbnMsXG59IGZyb20gJy4vcnVsZXMtZW5naW5lLWRldmtpdC5pbnRlcmZhY2UnO1xuaW1wb3J0IHtcbiAgT1RURVJfUlVMRVNfRU5HSU5FX0RFVlRPT0xTX0RFRkFVTFRfT1BUSU9OUyxcbiAgT1RURVJfUlVMRVNfRU5HSU5FX0RFVlRPT0xTX09QVElPTlMsXG59IGZyb20gJy4vcnVsZXMtZW5naW5lLWRldnRvb2xzLnRva2VuJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgT3R0ZXJSdWxlc0VuZ2luZURldnRvb2xzIHtcbiAgLyoqIFN0cmVhbSBvZiBydWxlcyBlbmdpbmUgcmVwb3J0ICovXG4gIHB1YmxpYyByZWFkb25seSBydWxlc0VuZ2luZVJlcG9ydCQ/OiBPYnNlcnZhYmxlPHsgZXZlbnRzOiBEZWJ1Z0V2ZW50W107IHJ1bGVzZXRNYXA6IFJlY29yZDxzdHJpbmcsIFJ1bGVzZXQ+IH0+O1xuXG4gIC8qKiBTdHJlYW0gb2YgcnVsZXMgZW5naW5lIGV2ZW50ICovXG4gIHB1YmxpYyByZWFkb25seSBydWxlc0VuZ2luZUV2ZW50cyQ/OiBPYnNlcnZhYmxlPERlYnVnRXZlbnRbXT47XG5cbiAgLyoqXG4gICAqIFJldHVybiB0cnVlIGlmIHRoZSBydWxlcyBlbmdpbmUgZGVidWcgb3B0aW9uIGlzIGFjdGl2YXRlZFxuICAgKi9cbiAgcHVibGljIGdldCBpc1J1bGVzRW5naW5lRGVidWdBY3RpdmF0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5ydWxlc0VuZ2luZVNlcnZpY2UuZW5naW5lLmRlYnVnTW9kZTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBzdG9yZTogU3RvcmU8UnVsZXNldHNTdG9yZT4sXG4gICAgcHJpdmF0ZSByZWFkb25seSBydWxlc0VuZ2luZVNlcnZpY2U6IFJ1bGVzRW5naW5lUnVubmVyU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE9UVEVSX1JVTEVTX0VOR0lORV9ERVZUT09MU19PUFRJT05TKSBvcHRpb25zOiBSdWxlc0VuZ2luZURldnRvb2xzU2VydmljZU9wdGlvbnMpIHtcbiAgICBjb25zdCBldmVudHNTdGFja0xpbWl0ID0gKG9wdGlvbnMgfHwgT1RURVJfUlVMRVNfRU5HSU5FX0RFVlRPT0xTX0RFRkFVTFRfT1BUSU9OUykucnVsZXNFbmdpbmVTdGFja0xpbWl0O1xuICAgIHRoaXMucnVsZXNFbmdpbmVFdmVudHMkID0gdGhpcy5ydWxlc0VuZ2luZVNlcnZpY2UuZW5naW5lLmVuZ2luZURlYnVnPy5kZWJ1Z0V2ZW50cyQucGlwZShcbiAgICAgIHNjYW4oKHByZXZpb3VzRXZlbnRzLCBjdXJyZW50RXZlbnQpID0+IHtcbiAgICAgICAgY29uc3Qgc3RhY2sgPSBldmVudHNTdGFja0xpbWl0ICYmIHByZXZpb3VzRXZlbnRzLmxlbmd0aCA9PT0gZXZlbnRzU3RhY2tMaW1pdCA/IHByZXZpb3VzRXZlbnRzLnNsaWNlKDEpIDogcHJldmlvdXNFdmVudHM7XG4gICAgICAgIHJldHVybiBbLi4uc3RhY2ssIGN1cnJlbnRFdmVudF07XG4gICAgICB9LCBbXSBhcyBEZWJ1Z0V2ZW50W10pLFxuICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApO1xuXG4gICAgdGhpcy5ydWxlc0VuZ2luZVJlcG9ydCQgPSB0aGlzLnJ1bGVzRW5naW5lRXZlbnRzJCAmJiBjb21iaW5lTGF0ZXN0KFt0aGlzLnJ1bGVzRW5naW5lRXZlbnRzJCwgdGhpcy5zdG9yZS5waXBlKHNlbGVjdChzZWxlY3RSdWxlc2V0c0VudGl0aWVzKSldKS5waXBlKFxuICAgICAgbWFwKChbZXZlbnRzLCBydWxlc2V0RW50aXRpZXNdKSA9PiB7XG4gICAgICAgIGNvbnN0IHJ1bGVzZXRNYXA6IFJlY29yZDxzdHJpbmcsIFJ1bGVzZXQ+ID0gT2JqZWN0LmVudHJpZXMocnVsZXNldEVudGl0aWVzKVxuICAgICAgICAgIC5yZWR1Y2U8UmVjb3JkPHN0cmluZywgUnVsZXNldHNNb2RlbD4+KChhY2MsIFtpZCwgcnVsZXNldF0pID0+IHtcbiAgICAgICAgICAgIGlmIChydWxlc2V0KSB7XG4gICAgICAgICAgICAgIGFjY1tpZF0gPSBydWxlc2V0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICB9LCB7fSk7XG4gICAgICAgIHJldHVybiB7IGV2ZW50cywgcnVsZXNldE1hcCB9O1xuICAgICAgfSksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG4gIH1cblxuICAvKiogUmV0dXJuIHRoZSBsaXN0IG9mIGRlYnVnIGV2ZW50cyBlbWl0dGVkIGJ5IHJ1bGVzIGVuZ2luZSAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0Q3VycmVudFJ1bGVzRW5naW5lRXZlbnRzU3RhY2soKTogUHJvbWlzZTxEZWJ1Z0V2ZW50W10gfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdGhpcy5ydWxlc0VuZ2luZUV2ZW50cyQgJiYgZmlyc3RWYWx1ZUZyb20odGhpcy5ydWxlc0VuZ2luZUV2ZW50cyQpO1xuICB9XG5cbiAgLyoqIFJldHVybnMgdGhlIGxpc3Qgb2YgYWN0aXZlIHJ1bGVzZXRzIChuYW1lIGFuZCBpZCkgYXQgdGhlIG1vbWVudCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgKi9cbiAgcHVibGljIGFzeW5jIGdldEFjdGl2ZVJ1bGVzZXRzKCkge1xuICAgIGNvbnN0IGxhc3RBY3RpdmVSdWxlc2V0c0V2ZW50ID0gKHRoaXMucnVsZXNFbmdpbmVFdmVudHMkICYmIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMucnVsZXNFbmdpbmVFdmVudHMkKSk/LmZpbHRlcigoZSkgPT4gZS50eXBlID09PSAnQWN0aXZlUnVsZXNldHMnKS5yZXZlcnNlKClbMF07XG4gICAgcmV0dXJuIChsYXN0QWN0aXZlUnVsZXNldHNFdmVudCBhcyBBY3RpdmVSdWxlc2V0c0V2ZW50KT8ucnVsZXNldHM7XG4gIH1cblxuICAvKiogUmV0dXJucyB0aGUgbGlzdCBvZiBhdmFpbGFibGUgcnVsZXNldHMgKG5hbWUgYW5kIGlkKSBhdCB0aGUgbW9tZW50IHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0QXZhaWxhYmxlUnVsZXNldHMoKSB7XG4gICAgY29uc3QgbGFzdEF2YWlsYWJsZVJ1bGVzZXRzRXZlbnQgPSAodGhpcy5ydWxlc0VuZ2luZUV2ZW50cyQgJiYgYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5ydWxlc0VuZ2luZUV2ZW50cyQpKT8uZmlsdGVyKChlKSA9PiBlLnR5cGUgPT09ICdBdmFpbGFibGVSdWxlc2V0cycpLnJldmVyc2UoKVswXTtcbiAgICByZXR1cm4gKGxhc3RBdmFpbGFibGVSdWxlc2V0c0V2ZW50IGFzIEF2YWlsYWJsZVJ1bGVzZXRzKT8uYXZhaWxhYmxlUnVsZXNldHM7XG4gIH1cblxuICAvKiogUmV0dXJucyB0aGUgbGlzdCBvZiBvdXRwdXQgYWN0aW9ucyBlbWl0dGVkIGJ5IHRoZSBydWxlcyBlbmdpbmUgYXQgdGhlIG1vbWVudCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgKi9cbiAgcHVibGljIGFzeW5jIGdldEFsbE91dHB1dEFjdGlvbnMoKSB7XG4gICAgcmV0dXJuICh0aGlzLnJ1bGVzRW5naW5lRXZlbnRzJCAmJiBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnJ1bGVzRW5naW5lRXZlbnRzJCkpPy5maWx0ZXIoKGUpID0+IGUudHlwZSA9PT0gJ0FsbEFjdGlvbnMnKT8ucmV2ZXJzZSgpWzBdO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbGlzdCBvZiBleGVjdXRpb25zIGZvciB0aGUgZ2l2ZW4gcnVsZXNldFxuICAgKiBAcGFyYW0gcnVsZXNldElkXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0UnVsZXNldEV4ZWN1dGlvbnMocnVsZXNldElkOiBzdHJpbmcpOiBQcm9taXNlPChSdWxlc2V0RXhlY3V0aW9uRXZlbnQgfCBSdWxlc2V0RXhlY3V0aW9uRXJyb3JFdmVudClbXSB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiAodGhpcy5ydWxlc0VuZ2luZUV2ZW50cyQgJiYgYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5ydWxlc0VuZ2luZUV2ZW50cyQpKT8uZmlsdGVyKFxuICAgICAgKGUpOiBlIGlzIFJ1bGVzZXRFeGVjdXRpb25FdmVudCB8IFJ1bGVzZXRFeGVjdXRpb25FcnJvckV2ZW50ID0+XG4gICAgICAgIChlLnR5cGUgPT09ICdSdWxlc2V0RXhlY3V0aW9uJyB8fCBlLnR5cGUgPT09ICdSdWxlc2V0RXhlY3V0aW9uRXJyb3InKVxuICAgICAgICAmJiAoZSBhcyBCYXNlUnVsZXNldEV4ZWN1dGlvbikucnVsZXNldElkID09PSBydWxlc2V0SWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIHRoZSBydWxlc2V0IGlzIGFjdGl2IGluIHRoZSBtb21lbnQgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkXG4gICAqIEBwYXJhbSBydWxlc2V0SWRcbiAgICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgcnVsZXNldCBpcyBhY3RpdmU7IEZhbHNlIGlmIHRoZSBydWxlc2V0IGlzIGluYWN0aXZlIG9yIGl0IGRvZXMgbm90IGV4aXN0XG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaXNSdWxlc2V0QWN0aXZlKHJ1bGVzZXRJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuICEhKGF3YWl0IHRoaXMuZ2V0QWN0aXZlUnVsZXNldHMoKSk/LmZpbmQoKHIpID0+IHIuaWQgPT09IHJ1bGVzZXRJZCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBsaXN0IG9mIHJ1bGVzIGV4ZWN1dGVkIGZvciB0aGUgc3BlY2lmaWVkIHJ1bGVzZXRcbiAgICogQHBhcmFtIHJ1bGVzZXRJZFxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldFJ1bGVzRXZhbHVhdGlvbnNGb3JSdWxlc2V0KHJ1bGVzZXRJZDogc3RyaW5nKSB7XG4gICAgY29uc3QgcnVsZXNldEV4ZWMgPSBhd2FpdCB0aGlzLmdldFJ1bGVzZXRFeGVjdXRpb25zKHJ1bGVzZXRJZCk7XG4gICAgcmV0dXJuIHJ1bGVzZXRFeGVjPy5tYXAoKGUpID0+IChlIGFzIEJhc2VSdWxlc2V0RXhlY3V0aW9uKT8ucnVsZXNFdmFsdWF0aW9ucz8uZmlsdGVyKChyZSkgPT4gIXJlLmNhY2hlZCkpLmZsYXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGxpc3Qgb2YgaW5wdXQgZmFjdHMgKG5hbWUsIGN1cnJlbnQgdmFsdWUpIGZvciB0aGUgc3BlY2lmaWVkIHJ1bGVzZXQsIGF0IHRoZSBtb21lbnQgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkXG4gICAqIEBwYXJhbSBydWxlc2V0SWRcbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRJbnB1dEZhY3RzRm9yUnVsZXNldChydWxlc2V0SWQ6IHN0cmluZykge1xuICAgIGNvbnN0IHJ1bGVzZXRFeGVjdXRpb25zID0gYXdhaXQgdGhpcy5nZXRSdWxlc2V0RXhlY3V0aW9ucyhydWxlc2V0SWQpO1xuICAgIHJldHVybiBydWxlc2V0RXhlY3V0aW9ucyA/IChydWxlc2V0RXhlY3V0aW9ucy5hdCgtMSkgYXMgQmFzZVJ1bGVzZXRFeGVjdXRpb24pLmlucHV0RmFjdHMgOiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBsaXN0IG9mIHRyaWdnZXJzIGZvciB0aGUgc3BlY2lmaWVkIHJ1bGVzZXRcbiAgICogQHBhcmFtIHJ1bGVzZXRJZFxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldFRyaWdnZXJzRm9yUnVsZXNldChydWxlc2V0SWQ6IHN0cmluZykge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5nZXRSdWxlc0V2YWx1YXRpb25zRm9yUnVsZXNldChydWxlc2V0SWQpKT8ubWFwKChlKSA9PiBlLnRyaWdnZXJzKS5mbGF0KCkuZmxhdE1hcCgodHJpZ2dlcnNNYXApID0+IE9iamVjdC52YWx1ZXModHJpZ2dlcnNNYXApKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGxpc3Qgb2Ygb3V0cHV0ZWQgYWN0aW9ucyBlbWl0dGVkIGJ5IHRoZSBnaXZlbiBydWxlc2V0LCBhdCB0aGUgbW9tZW50IHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZFxuICAgKiBAcGFyYW0gcnVsZXNldElkXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0T3V0cHV0QWN0aW9uc0ZvclJ1bGVzZXQocnVsZXNldElkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBydWxlc2V0RXhlY3V0aW9ucyA9IGF3YWl0IHRoaXMuZ2V0UnVsZXNldEV4ZWN1dGlvbnMocnVsZXNldElkKTtcbiAgICByZXR1cm4gcnVsZXNldEV4ZWN1dGlvbnMgPyAocnVsZXNldEV4ZWN1dGlvbnMuYXQoLTEpIGFzIFJ1bGVzZXRFeGVjdXRpb25FdmVudCkub3V0cHV0QWN0aW9ucyA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKiBHZXQgdGhlIGxpc3Qgb2YgZmFjdCBuYW1lcyBhbmQgY29ycmVzcG9uZGluZyB2YWx1ZXMgKi9cbiAgcHVibGljIGdldEFsbEZhY3RzU25hcHNob3QoKSB7XG4gICAgY29uc3QgcmVnaXN0ZXJlZEZhY3RzID0gdGhpcy5ydWxlc0VuZ2luZVNlcnZpY2U/LmVuZ2luZS5nZXRSZWdpc3RlcmVkRmFjdHNOYW1lcygpO1xuICAgIGlmIChyZWdpc3RlcmVkRmFjdHMpIHtcbiAgICAgIHJldHVybiB0aGlzLnJ1bGVzRW5naW5lU2VydmljZS5lbmdpbmUuZW5naW5lRGVidWc/LmdldEZhY3RzU25hcHNob3QocmVnaXN0ZXJlZEZhY3RzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmUgdGhlIHJ1bGVzZXQgaW5mb3JtYXRpb24gKHJ1bGVzLCBsaW5rZWRDb21wb25lbnRzLCB2YWxpZGl0eSByYW5nZSBldGMuKSBmb3IgYSBydWxlc2V0IGlkXG4gICAqIEBwYXJhbSBydWxlc2V0SWRcbiAgICovXG4gIHB1YmxpYyBnZXRSdWxlc2V0SW5mb3JtYXRpb24ocnVsZXNldElkOiBzdHJpbmcpOiBQcm9taXNlPFJ1bGVzZXQgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20odGhpcy5zdG9yZS5waXBlKFxuICAgICAgc2VsZWN0KHNlbGVjdFJ1bGVzZXRzRW50aXRpZXMpLFxuICAgICAgbWFwKChlbnRpdGllcykgPT4gZW50aXRpZXNbcnVsZXNldElkXSBhcyBSdWxlc2V0IHwgdW5kZWZpbmVkKVxuICAgICkpO1xuICB9XG59XG4iXX0=
@@ -1,6 +0,0 @@
1
- import { InjectionToken, } from '@angular/core';
2
- export const OTTER_RULES_ENGINE_DEVTOOLS_DEFAULT_OPTIONS = {
3
- isActivatedOnBootstrap: false
4
- };
5
- export const OTTER_RULES_ENGINE_DEVTOOLS_OPTIONS = new InjectionToken('Otter RulesEngine Devtools options');
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZXMtZW5naW5lLWRldnRvb2xzLnRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2RldmtpdC9ydWxlcy1lbmdpbmUtZGV2dG9vbHMudG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGNBQWMsR0FDZixNQUFNLGVBQWUsQ0FBQztBQUt2QixNQUFNLENBQUMsTUFBTSwyQ0FBMkMsR0FBZ0Q7SUFDdEcsc0JBQXNCLEVBQUUsS0FBSztDQUNyQixDQUFDO0FBRVgsTUFBTSxDQUFDLE1BQU0sbUNBQW1DLEdBQUcsSUFBSSxjQUFjLENBQW9DLG9DQUFvQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJbmplY3Rpb25Ub2tlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBSdWxlc0VuZ2luZURldnRvb2xzU2VydmljZU9wdGlvbnMsXG59IGZyb20gJy4vcnVsZXMtZW5naW5lLWRldmtpdC5pbnRlcmZhY2UnO1xuXG5leHBvcnQgY29uc3QgT1RURVJfUlVMRVNfRU5HSU5FX0RFVlRPT0xTX0RFRkFVTFRfT1BUSU9OUzogUmVhZG9ubHk8UnVsZXNFbmdpbmVEZXZ0b29sc1NlcnZpY2VPcHRpb25zPiA9IHtcbiAgaXNBY3RpdmF0ZWRPbkJvb3RzdHJhcDogZmFsc2Vcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBPVFRFUl9SVUxFU19FTkdJTkVfREVWVE9PTFNfT1BUSU9OUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxSdWxlc0VuZ2luZURldnRvb2xzU2VydmljZU9wdGlvbnM+KCdPdHRlciBSdWxlc0VuZ2luZSBEZXZ0b29scyBvcHRpb25zJyk7XG4iXX0=
@@ -1,195 +0,0 @@
1
- import { Observable, ReplaySubject, } from 'rxjs';
2
- import { concatMap, share, shareReplay, startWith, tap, withLatestFrom, } from 'rxjs/operators';
3
- import { flagCachedRules, retrieveRulesetTriggers, } from './helpers';
4
- /**
5
- * Rules engine debugger object to emit debug events
6
- */
7
- export class EngineDebugger {
8
- /** Retrieved the rules engine plugged to the debugger */
9
- get rulesEngine() {
10
- return this.registeredRuleEngine;
11
- }
12
- /**
13
- * Instantiate a rules engine debugger
14
- * @param options Options to configure the debugger
15
- */
16
- constructor(options) {
17
- this.registeredRulesets = [];
18
- this.debugEventsSubject$ = new ReplaySubject(options?.eventsStackLimit);
19
- this.initializePerformanceObserver();
20
- this.debugEvents$ = this.debugEventsSubject$.pipe(withLatestFrom(this.performanceMeasures$), concatMap(async ([eventFunc, performanceMeasures]) => {
21
- const debugEvent = await eventFunc();
22
- if (debugEvent.type === 'RulesetExecution' || debugEvent.type === 'RulesetExecutionError') {
23
- let rulesetDuration = 0;
24
- debugEvent.rulesEvaluations.forEach((rule) => {
25
- const mark = `rules-engine:${this.registeredRuleEngine?.rulesEngineInstanceName || ''}:${debugEvent.rulesetName}:${rule.rule.name}`;
26
- const measures = performanceMeasures.filter((m) => m.name === mark);
27
- const duration = measures.at(-1)?.duration || 0;
28
- rule.duration = duration;
29
- rulesetDuration += duration;
30
- });
31
- debugEvent.duration = rulesetDuration;
32
- }
33
- return debugEvent;
34
- }), tap((debugEvent) => {
35
- if (debugEvent.type === 'RulesetExecution') {
36
- this.rulesEngine?.logger?.debug?.(`${debugEvent.rulesetName} has been triggered and resulted in ${JSON.stringify(debugEvent.outputActions)}`);
37
- }
38
- }), share());
39
- }
40
- initializePerformanceObserver() {
41
- this.performanceMeasures$ = new Observable((subscriber) => {
42
- const performanceObserver = new PerformanceObserver((list) => {
43
- subscriber.next(list.getEntries());
44
- });
45
- performanceObserver.observe({ entryTypes: ['measure'] });
46
- return performanceObserver.disconnect();
47
- }).pipe(startWith([]), shareReplay(1));
48
- }
49
- async createBaseExecutionOutputObject(ruleset, executionCounter, rulesetInputFacts, runtimeFactValues, rulesetTriggers, rulesExecutions) {
50
- const inputFacts = await this.getFactsSnapshot(rulesetInputFacts);
51
- const baseRulesetOutputExecution = {
52
- executionCounter,
53
- executionId: `${ruleset.id}-${executionCounter}`,
54
- rulesetId: ruleset.id,
55
- rulesetName: ruleset.name,
56
- inputFacts,
57
- triggers: rulesetTriggers,
58
- rulesEvaluations: flagCachedRules(rulesExecutions?.sort((a, b) => a.timestamp - b.timestamp) || [], rulesetTriggers),
59
- temporaryFacts: runtimeFactValues
60
- };
61
- return baseRulesetOutputExecution;
62
- }
63
- async rulesetExecution(timestamp, ruleset, executionCounter, rulesetInputFacts, allOutputActions, runtimeFactValues, rulesetTriggers, rulesExecutions) {
64
- const baseRulesetOutputExecution = await this.createBaseExecutionOutputObject(ruleset, executionCounter, rulesetInputFacts, runtimeFactValues, rulesetTriggers, rulesExecutions);
65
- const rulesetOutputExecution = {
66
- timestamp,
67
- type: 'RulesetExecution',
68
- outputActions: allOutputActions,
69
- ...baseRulesetOutputExecution
70
- };
71
- return rulesetOutputExecution;
72
- }
73
- async rulesetExecutionError(timestamp, ruleset, rulesetInputFacts, executionCounter, runtimeFactValues, rulesetTriggers, rulesExecutions) {
74
- const baseRulesetOutputExecution = await this.createBaseExecutionOutputObject(ruleset, executionCounter, rulesetInputFacts, runtimeFactValues, rulesetTriggers, rulesExecutions);
75
- const rulesExecWithErrors = rulesExecutions.filter((ex) => !!ex && !!ex.error);
76
- const rulesetOutputExecutionSkip = {
77
- timestamp,
78
- type: 'RulesetExecutionError',
79
- rulesCausingTheError: rulesExecWithErrors.map((e) => e.rule) || [],
80
- errors: rulesExecWithErrors.map((e) => e.error),
81
- ...baseRulesetOutputExecution
82
- };
83
- return rulesetOutputExecutionSkip;
84
- }
85
- /**
86
- * Plug the debugger to a Rule Engine
87
- * @param rulesEngine
88
- */
89
- registerRuleEngine(rulesEngine) {
90
- this.registeredRuleEngine = rulesEngine;
91
- }
92
- /**
93
- * Handle ruleset execution debug info
94
- * @param currRes
95
- * @param prevRes
96
- * @param allExecutionsValid
97
- * @param rulesetInputFacts
98
- * @param runtimeFactValues
99
- * @param executionCounter
100
- * @param ruleset
101
- */
102
- handleDebugRulesetExecutionInfo(currRes, prevRes, allExecutionsValid, rulesetInputFacts, runtimeFactValues, executionCounter, ruleset) {
103
- const rulesetTriggers = retrieveRulesetTriggers(currRes, prevRes);
104
- const rulesetOutputExecution = currRes.map((r) => r.evaluation);
105
- if (!allExecutionsValid) {
106
- this.addRulesetExecutionErrorEvent(ruleset, rulesetInputFacts, executionCounter, runtimeFactValues, rulesetTriggers, rulesetOutputExecution);
107
- }
108
- return {
109
- executionCounter,
110
- rulesetOutputExecution,
111
- allExecutionsValid,
112
- rulesetTriggers
113
- };
114
- }
115
- /**
116
- * Emits an 'AvailableRulesets' debug event when rulesets are registered to the rules engine
117
- * @param rulesets
118
- */
119
- addAvailableRulesets(rulesets) {
120
- const timestamp = Date.now();
121
- this.registeredRulesets = [...this.registeredRulesets, ...rulesets.map((r) => ({ name: r.name, id: r.id }))];
122
- this.debugEventsSubject$.next(() => ({
123
- timestamp,
124
- type: 'AvailableRulesets',
125
- availableRulesets: this.registeredRulesets
126
- }));
127
- }
128
- /**
129
- * Computes and emits an 'ActiveRulesets' debug event when the active rulesets are changing
130
- * @param ruleSetExecutorMap map off all rulesets executors
131
- * @param restrictiveRuleSets ids of the rulesets to activate; if not provided all registered rulesets will be considered as active
132
- */
133
- activeRulesetsChange(ruleSetExecutorMap, restrictiveRuleSets) {
134
- const timestamp = Date.now();
135
- const rulesets = Object.keys(ruleSetExecutorMap).map((rulesetId) => ruleSetExecutorMap[rulesetId].engineRuleset);
136
- const activeRulesets = restrictiveRuleSets
137
- ? Object.values(rulesets).filter((ruleSet) => restrictiveRuleSets.includes(ruleSet.id))
138
- : Object.values(rulesets);
139
- this.debugEventsSubject$.next(() => ({
140
- timestamp,
141
- type: 'ActiveRulesets',
142
- rulesets: activeRulesets.map((a) => ({ name: ruleSetExecutorMap[a.id].ruleset.name, id: ruleSetExecutorMap[a.id].ruleset.id }))
143
- }));
144
- }
145
- /**
146
- * Emits an 'AllActions' debug event each time the rules engine outputs the list of actions
147
- * @param actions list of outputed actions
148
- */
149
- allActionsChange(actions) {
150
- const timestamp = Date.now();
151
- this.debugEventsSubject$.next(() => ({ timestamp, type: 'AllActions', actions }));
152
- }
153
- /**
154
- * Emits a 'RulesetExecution' debug event at the ouput of a successful ruleset execution
155
- * @param ruleset
156
- * @param executionCounter
157
- * @param rulesetInputFacts
158
- * @param allOutputActions
159
- * @param runtimeFactValues
160
- * @param rulesetTriggers
161
- * @param rulesExecutions
162
- */
163
- addRulesetExecutionEvent(ruleset, executionCounter, rulesetInputFacts, allOutputActions, runtimeFactValues, rulesetTriggers, rulesExecutions) {
164
- const timestamp = Date.now();
165
- this.debugEventsSubject$.next(() => this.rulesetExecution(timestamp, ruleset, executionCounter, rulesetInputFacts, allOutputActions, runtimeFactValues, rulesetTriggers, rulesExecutions));
166
- }
167
- /**
168
- * Emits a 'RulesetExecutionError' debug event at the ouput of a failing ruleset execution
169
- * @param ruleset
170
- * @param rulesetInputFacts
171
- * @param executionCounter
172
- * @param runtimeFactValues
173
- * @param rulesetTriggers
174
- * @param rulesExecutions
175
- */
176
- addRulesetExecutionErrorEvent(ruleset, rulesetInputFacts, executionCounter, runtimeFactValues, rulesetTriggers, rulesExecutions) {
177
- const timestamp = Date.now();
178
- this.debugEventsSubject$.next(() => this.rulesetExecutionError(timestamp, ruleset, rulesetInputFacts, executionCounter, runtimeFactValues, rulesetTriggers, rulesExecutions));
179
- }
180
- /**
181
- * Returns a list of fact name and value pairs
182
- * @param factsNames List of facts names to get the value for
183
- */
184
- async getFactsSnapshot(factsNames) {
185
- const facts = [];
186
- if (!this.registeredRuleEngine) {
187
- throw new Error('Rule engine not plugged to the debugger');
188
- }
189
- for (const factName of factsNames) {
190
- facts.push({ factName, value: await this.registeredRuleEngine.retrieveFactValue(factName) });
191
- }
192
- return facts;
193
- }
194
- }
195
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5naW5lLmRlYnVnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VuZ2luZS9kZWJ1Zy9lbmdpbmUuZGVidWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFVBQVUsRUFDVixhQUFhLEdBQ2QsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxXQUFXLEVBQ1gsU0FBUyxFQUNULEdBQUcsRUFDSCxjQUFjLEdBQ2YsTUFBTSxnQkFBZ0IsQ0FBQztBQXVCeEIsT0FBTyxFQUNMLGVBQWUsRUFDZix1QkFBdUIsR0FDeEIsTUFBTSxXQUFXLENBQUM7QUFVbkI7O0dBRUc7QUFDSCxNQUFNLE9BQU8sY0FBYztJQWF6Qix5REFBeUQ7SUFDekQsSUFBVyxXQUFXO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ25DLENBQUM7SUFFRDs7O09BR0c7SUFDSCxZQUFZLE9BQStCO1FBbkJuQyx1QkFBa0IsR0FBbUMsRUFBRSxDQUFDO1FBb0I5RCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxhQUFhLENBQTJDLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2xILElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FDL0MsY0FBYyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxFQUN6QyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsU0FBUyxFQUFFLG1CQUFtQixDQUFDLEVBQUUsRUFBRTtZQUNuRCxNQUFNLFVBQVUsR0FBZSxNQUFNLFNBQVMsRUFBRSxDQUFDO1lBQ2pELElBQUksVUFBVSxDQUFDLElBQUksS0FBSyxrQkFBa0IsSUFBSSxVQUFVLENBQUMsSUFBSSxLQUFLLHVCQUF1QixFQUFFLENBQUM7Z0JBQzFGLElBQUksZUFBZSxHQUFHLENB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QUMscUJBQXFCLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUNoTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSyxDQUFDLGdCQUFnQixDQUFDLFVBQW9CO1FBQ2hELE1BQU0sS0FBSyxHQUF1QyxFQUFFLENBQUM7UUFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQy9CLE1BQU0sSUFBSSxLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FBQztRQUM3RCxDQUFDO1FBQ0QsS0FBSyxNQUFNLFFBQVEsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNsQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDL0YsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgT2JzZXJ2YWJsZSxcbiAgUmVwbGF5U3ViamVjdCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBjb25jYXRNYXAsXG4gIHNoYXJlLFxuICBzaGFyZVJlcGxheSxcbiAgc3RhcnRXaXRoLFxuICB0YXAsXG4gIHdpdGhMYXRlc3RGcm9tLFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgdHlwZSB7XG4gIFJ1bGVzRW5naW5lLFxufSBmcm9tICcuLi9lbmdpbmUnO1xuaW1wb3J0IHtcbiAgQmFzZVJ1bGVzZXRFeGVjdXRpb24sXG4gIERlYnVnRXZlbnQsXG4gIEV2YWx1YXRpb25SZWFzb24sXG4gIFJ1bGVFdmFsdWF0aW9uLFxuICBSdWxlRXZhbHVhdGlvbk91dHB1dCxcbiAgUnVsZXNldEV4ZWN1dGlvbkVycm9yRXZlbnQsXG4gIFJ1bGVzZXRFeGVjdXRpb25FdmVudCxcbn0gZnJvbSAnLi4vZW5naW5lLmludGVyZmFjZSc7XG5pbXBvcnQgdHlwZSB7XG4gIEZhY3RzLFxufSBmcm9tICcuLi9mYWN0JztcbmltcG9ydCB7XG4gIFJ1bGVzZXRFeGVjdXRvcixcbn0gZnJvbSAnLi4vcnVsZXNldC1leGVjdXRvcic7XG5pbXBvcnQgdHlwZSB7XG4gIEFjdGlvbkJsb2NrLFxuICBSdWxlc2V0LFxufSBmcm9tICcuLi9zdHJ1Y3R1cmUnO1xuaW1wb3J0IHtcbiAgZmxhZ0NhY2hlZFJ1bGVzLFxuICByZXRyaWV2ZVJ1bGVzZXRUcmlnZ2Vycyxcbn0gZnJvbSAnLi9oZWxwZXJzJztcblxuZXhwb3J0IGludGVyZmFjZSBFbmdpbmVEZWJ1Z2dlck9wdGlvbnMge1xuICAvKipcbiAgICogTGltaXQgb2YgZXZlbnRzIHRvIGtlZXAgaW4gdGhlIHN0YWNrIGJlZm9yZSBzdWJzY3JpYmluZyB0byB0aGUgZGVidWdFdmVudHMkIHN0cmVhbS5cbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkIG5vIGxpbWl0XG4gICAqL1xuICBldmVudHNTdGFja0xpbWl0PzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFJ1bGVzIGVuZ2luZSBkZWJ1Z2dlciBvYmplY3QgdG8gZW1pdCBkZWJ1ZyBldmVudHNcbiAqL1xuZXhwb3J0IGNsYXNzIEVuZ2luZURlYnVnZ2VyIHtcbiAgcHJpdmF0ZSByZWdpc3RlcmVkUnVsZUVuZ2luZT86IFJ1bGVzRW5naW5lO1xuXG4gIHByaXZhdGUgcmVnaXN0ZXJlZFJ1bGVzZXRzOiBQaWNrPFJ1bGVzZXQsICduYW1lJyB8ICdpZCc+W10gPSBbXTtcblxuICAvLyBLZWVwIGEgc21hbGwgaGlzdG9yeSBpbiBjYXNlIHRoZSBldmVudHMkIHN0cmVhbSBmcm9tIHRoZSBlbmdpbmUgaXMgc3Vic2NyaWJlZCBhZnRlciBydWxlcyBlbmdpbmUgaW5pdGlhbGl6YXRpb25cbiAgcHJpdmF0ZSByZWFkb25seSBkZWJ1Z0V2ZW50c1N1YmplY3QkOiBSZXBsYXlTdWJqZWN0PCgpID0+IChQcm9taXNlPERlYnVnRXZlbnQ+IHwgRGVidWdFdmVudCk+O1xuXG4gIHByaXZhdGUgcGVyZm9ybWFuY2VNZWFzdXJlcyQhOiBPYnNlcnZhYmxlPFBlcmZvcm1hbmNlTWVhc3VyZVtdPjtcblxuICAvKiogU3RyZWFtIGVtaXR0aW5nIGEgZGVidWcgZXZlbnQgd2hlbiBpcyBmaXJlZDsgdGltZWxpbmUgaXMga2VwdCAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZGVidWdFdmVudHMkOiBPYnNlcnZhYmxlPERlYnVnRXZlbnQ+O1xuXG4gIC8qKiBSZXRyaWV2ZWQgdGhlIHJ1bGVzIGVuZ2luZSBwbHVnZ2VkIHRvIHRoZSBkZWJ1Z2dlciAqL1xuICBwdWJsaWMgZ2V0IHJ1bGVzRW5naW5lKCk6IFJ1bGVzRW5naW5lIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5yZWdpc3RlcmVkUnVsZUVuZ2luZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnN0YW50aWF0ZSBhIHJ1bGVzIGVuZ2luZSBkZWJ1Z2dlclxuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIHRvIGNvbmZpZ3VyZSB0aGUgZGVidWdnZXJcbiAgICovXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBFbmdpbmVEZWJ1Z2dlck9wdGlvbnMpIHtcbiAgICB0aGlzLmRlYnVnRXZlbnRzU3ViamVjdCQgPSBuZXcgUmVwbGF5U3ViamVjdDwoKSA9PiAoUHJvbWlzZTxEZWJ1Z0V2ZW50PiB8IERlYnVnRXZlbnQpPihvcHRpb25zPy5ldmVudHNTdGFja0xpbWl0KTtcbiAgICB0aGlzLmluaXRpYWxpemVQZXJmb3JtYW5jZU9ic2VydmVyKCk7XG4gICAgdGhpcy5kZWJ1Z0V2ZW50cyQgPSB0aGlzLmRlYnVnRXZlbnRzU3ViamVjdCQucGlwZShcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMucGVyZm9ybWFuY2VNZWFzdXJlcyQpLFxuICAgICAgY29uY2F0TWFwKGFzeW5jIChbZXZlbnRGdW5jLCBwZXJmb3JtYW5jZU1lYXN1cmVzXSkgPT4ge1xuICAgICAgICBjb25zdCBkZWJ1Z0V2ZW50OiBEZWJ1Z0V2ZW50ID0gYXdhaXQgZXZlbnRGdW5jKCk7XG4gICAgICAgIGlmIChkZWJ1Z0V2ZW50LnR5cGUgPT09ICdSdWxlc2V0RXhlY3V0aW9uJyB8fCBkZWJ1Z0V2ZW50LnR5cGUgPT09ICdSdWxlc2V0RXhlY3V0aW9uRXJyb3InKSB7XG4gICAgICAgICAgbGV0IHJ1bGVzZXREdXJhdGlvbiA9IDA7XG4gICAgICAgICAgZGVidWdFdmVudC5ydWxlc0V2YWx1YXRpb25zLmZvckVhY2goKHJ1bGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1hcmsgPSBgcnVsZXMtZW5naW5lOiR7XG4gICAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJlZFJ1bGVFbmdpbmU/LnJ1bGVzRW5naW5lSW5zdGFuY2VOYW1lIHx8ICcnXG4gICAgICAgICAgICB9OiR7ZGVidWdFdmVudC5ydWxlc2V0TmFtZX06JHtydWxlLnJ1bGUubmFtZX1gO1xuICAgICAgICAgICAgY29uc3QgbWVhc3VyZXMgPSBwZXJmb3JtYW5jZU1lYXN1cmVzLmZpbHRlcigobSkgPT4gbS5uYW1lID09PSBtYXJrKTtcbiAgICAgICAgICAgIGNvbnN0IGR1cmF0aW9uID0gbWVhc3VyZXMuYXQoLTEpPy5kdXJhdGlvbiB8fCAwO1xuICAgICAgICAgICAgcnVsZS5kdXJhdGlvbiA9IGR1cmF0aW9uO1xuICAgICAgICAgICAgcnVsZXNldER1cmF0aW9uICs9IGR1cmF0aW9uO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGRlYnVnRXZlbnQuZHVyYXRpb24gPSBydWxlc2V0RHVyYXRpb247XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRlYnVnRXZlbnQ7XG4gICAgICB9KSxcbiAgICAgIHRhcCgoZGVidWdFdmVudCkgPT4ge1xuICAgICAgICBpZiAoZGVidWdFdmVudC50eXBlID09PSAnUnVsZXNldEV4ZWN1dGlvbicpIHtcbiAgICAgICAgICB0aGlzLnJ1bGVzRW5naW5lPy5sb2dnZXI/LmRlYnVnPy4oYCR7ZGVidWdFdmVudC5ydWxlc2V0TmFtZX0gaGFzIGJlZW4gdHJpZ2dlcmVkIGFuZCByZXN1bHRlZCBpbiAke0pTT04uc3RyaW5naWZ5KGRlYnVnRXZlbnQub3V0cHV0QWN0aW9ucyl9YCk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgc2hhcmUoKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVQZXJmb3JtYW5jZU9ic2VydmVyKCkge1xuICAgIHRoaXMucGVyZm9ybWFuY2VNZWFzdXJlcyQgPSBuZXcgT2JzZXJ2YWJsZTxQZXJmb3JtYW5jZU1lYXN1cmVbXT4oKHN1YnNjcmliZXIpID0+IHtcbiAgICAgIGNvbnN0IHBlcmZvcm1hbmNlT2JzZXJ2ZXIgPSBuZXcgUGVyZm9ybWFuY2VPYnNlcnZlcigobGlzdCkgPT4ge1xuICAgICAgICBzdWJzY3JpYmVyLm5leHQobGlzdC5nZXRFbnRyaWVzKCkgYXMgUGVyZm9ybWFuY2VNZWFzdXJlW10pO1xuICAgICAgfSk7XG4gICAgICBwZXJmb3JtYW5jZU9ic2VydmVyLm9ic2VydmUoeyBlbnRyeVR5cGVzOiBbJ21lYXN1cmUnXSB9KTtcbiAgICAgIHJldHVybiBwZXJmb3JtYW5jZU9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICB9KS5waXBlKHN0YXJ0V2l0aChbXSksIHNoYXJlUmVwbGF5KDEpKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY3JlYXRlQmFzZUV4ZWN1dGlvbk91dHB1dE9iamVjdChydWxlc2V0OiBSdWxlc2V0LCBleGVjdXRpb25Db3VudGVyOiBudW1iZXIsXG4gICAgcnVsZXNldElucHV0RmFjdHM6IHN0cmluZ1tdLCBydW50aW1lRmFjdFZhbHVlczogUmVjb3JkPHN0cmluZywgRmFjdHM+LFxuICAgIHJ1bGVzZXRUcmlnZ2VyczogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgRXZhbHVhdGlvblJlYXNvbj4+LCBydWxlc0V4ZWN1dGlvbnM6IFJ1bGVFdmFsdWF0aW9uW10pIHtcbiAgICBjb25zdCBpbnB1dEZhY3RzID0gYXdhaXQgdGhpcy5nZXRGYWN0c1NuYXBzaG90KHJ1bGVzZXRJbnB1dEZhY3RzKTtcblxuICAgIGNvbnN0IGJhc2VSdWxlc2V0T3V0cHV0RXhlY3V0aW9uOiBCYXNlUnVsZXNldEV4ZWN1dGlvbiA9IHtcbiAgICAgIGV4ZWN1dGlvbkNvdW50ZXIsXG4gICAgICBleGVjdXRpb25JZDogYCR7cnVsZXNldC5pZH0tJHtleGVjdXRpb25Db3VudGVyfWAsXG4gICAgICBydWxlc2V0SWQ6IHJ1bGVzZXQuaWQsXG4gICAgICBydWxlc2V0TmFtZTogcnVsZXNldC5uYW1lLFxuICAgICAgaW5wdXRGYWN0cyxcbiAgICAgIHRyaWdnZXJzOiBydWxlc2V0VHJpZ2dlcnMsXG4gICAgICBydWxlc0V2YWx1YXRpb25zOiBmbGFnQ2FjaGVkUnVsZXMocnVsZXNFeGVjdXRpb25zPy5zb3J0KChhLCBiKSA9PiBhLnRpbWVzdGFtcCAtIGIudGltZXN0YW1wKSB8fCBbXSwgcnVsZXNldFRyaWdnZXJzKSxcbiAgICAgIHRlbXBvcmFyeUZhY3RzOiBydW50aW1lRmFjdFZhbHVlc1xuICAgIH07XG4gICAgcmV0dXJuIGJhc2VSdWxlc2V0T3V0cHV0RXhlY3V0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBydWxlc2V0RXhlY3V0aW9uKFxuICAgIHRpbWVzdGFtcDogbnVtYmVyLFxuICAgIHJ1bGVzZXQ6IFJ1bGVzZXQsXG4gICAgZXhlY3V0aW9uQ291bnRlcjogbnVtYmVyLFxuICAgIHJ1bGVzZXRJbnB1dEZhY3RzOiBzdHJpbmdbXSxcbiAgICBhbGxPdXRwdXRBY3Rpb25zOiBBY3Rpb25CbG9ja1tdLFxuICAgIHJ1bnRpbWVGYWN0VmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBGYWN0cz4sXG4gICAgcnVsZXNldFRyaWdnZXJzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBFdmFsdWF0aW9uUmVhc29uPj4sXG4gICAgcnVsZXNFeGVjdXRpb25zOiBSdWxlRXZhbHVhdGlvbltdKSB7XG4gICAgY29uc3QgYmFzZVJ1bGVzZXRPdXRwdXRFeGVjdXRpb24gPSBhd2FpdCB0aGlzLmNyZWF0ZUJhc2VFeGVjdXRpb25PdXRwdXRPYmplY3QocnVsZXNldCwgZXhlY3V0aW9uQ291bnRlciwgcnVsZXNldElucHV0RmFjdHMsIHJ1bnRpbWVGYWN0VmFsdWVzLCBydWxlc2V0VHJpZ2dlcnMsIHJ1bGVzRXhlY3V0aW9ucyk7XG5cbiAgICBjb25zdCBydWxlc2V0T3V0cHV0RXhlY3V0aW9uOiBSdWxlc2V0RXhlY3V0aW9uRXZlbnQgPSB7XG4gICAgICB0aW1lc3RhbXAsXG4gICAgICB0eXBlOiAnUnVsZXNldEV4ZWN1dGlvbicsXG4gICAgICBvdXRwdXRBY3Rpb25zOiBhbGxPdXRwdXRBY3Rpb25zLFxuICAgICAgLi4uYmFzZVJ1bGVzZXRPdXRwdXRFeGVjdXRpb25cbiAgICB9O1xuXG4gICAgcmV0dXJuIHJ1bGVzZXRPdXRwdXRFeGVjdXRpb247XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJ1bGVzZXRFeGVjdXRpb25FcnJvcihcbiAgICB0aW1lc3RhbXA6IG51bWJlcixcbiAgICBydWxlc2V0OiBSdWxlc2V0LFxuICAgIHJ1bGVzZXRJbnB1dEZhY3RzOiBzdHJpbmdbXSxcbiAgICBleGVjdXRpb25Db3VudGVyOiBudW1iZXIsXG4gICAgcnVudGltZUZhY3RWYWx1ZXM6IFJlY29yZDxzdHJpbmcsIEZhY3RzPixcbiAgICBydWxlc2V0VHJpZ2dlcnM6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIEV2YWx1YXRpb25SZWFzb24+PixcbiAgICBydWxlc0V4ZWN1dGlvbnM6IFJ1bGVFdmFsdWF0aW9uW11cbiAgKSB7XG4gICAgY29uc3QgYmFzZVJ1bGVzZXRPdXRwdXRFeGVjdXRpb24gPSBhd2FpdCB0aGlzLmNyZWF0ZUJhc2VFeGVjdXRpb25PdXRwdXRPYmplY3QocnVsZXNldCwgZXhlY3V0aW9uQ291bnRlciwgcnVsZXNldElucHV0RmFjdHMsIHJ1bnRpbWVGYWN0VmFsdWVzLCBydWxlc2V0VHJpZ2dlcnMsIHJ1bGVzRXhlY3V0aW9ucyk7XG5cbiAgICBjb25zdCBydWxlc0V4ZWNXaXRoRXJyb3JzID0gcnVsZXNFeGVjdXRpb25zLmZpbHRlcigoZXgpID0+ICEhZXggJiYgISFleC5lcnJvcik7XG4gICAgY29uc3QgcnVsZXNldE91dHB1dEV4ZWN1dGlvblNraXA6IFJ1bGVzZXRFeGVjdXRpb25FcnJvckV2ZW50ID0ge1xuICAgICAgdGltZXN0YW1wLFxuICAgICAgdHlwZTogJ1J1bGVzZXRFeGVjdXRpb25FcnJvcicsXG4gICAgICBydWxlc0NhdXNpbmdUaGVFcnJvcjogcnVsZXNFeGVjV2l0aEVycm9ycy5tYXAoKGUpID0+IGUucnVsZSkgfHwgW10sXG4gICAgICBlcnJvcnM6IHJ1bGVzRXhlY1dpdGhFcnJvcnMubWFwKChlKSA9PiBlLmVycm9yKSxcbiAgICAgIC4uLmJhc2VSdWxlc2V0T3V0cHV0RXhlY3V0aW9uXG4gICAgfTtcbiAgICByZXR1cm4gcnVsZXNldE91dHB1dEV4ZWN1dGlvblNraXA7XG4gIH1cblxuICAvKipcbiAgICogUGx1ZyB0aGUgZGVidWdnZXIgdG8gYSBSdWxlIEVuZ2luZVxuICAgKiBAcGFyYW0gcnVsZXNFbmdpbmVcbiAgICovXG4gIHB1YmxpYyByZWdpc3RlclJ1bGVFbmdpbmUocnVsZXNFbmdpbmU6IFJ1bGVzRW5naW5lKSB7XG4gICAgdGhpcy5yZWdpc3RlcmVkUnVsZUVuZ2luZSA9IHJ1bGVzRW5naW5lO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSBydWxlc2V0IGV4ZWN1dGlvbiBkZWJ1ZyBpbmZvXG4gICAqIEBwYXJhbSBjdXJyUmVzXG4gICAqIEBwYXJhbSBwcmV2UmVzXG4gICAqIEBwYXJhbSBhbGxFeGVjdXRpb25zVmFsaWRcbiAgICogQHBhcmFtIHJ1bGVzZXRJbnB1dEZhY3RzXG4gICAqIEBwYXJhbSBydW50aW1lRmFjdFZhbHVlc1xuICAgKiBAcGFyYW0gZXhlY3V0aW9uQ291bnRlclxuICAgKiBAcGFyYW0gcnVsZXNldFxuICAgKi9cbiAgcHVibGljIGhhbmRsZURlYnVnUnVsZXNldEV4ZWN1dGlvbkluZm8oXG4gICAgY3VyclJlczogUnVsZUV2YWx1YXRpb25PdXRwdXRbXSxcbiAgICBwcmV2UmVzOiBSdWxlRXZhbHVhdGlvbk91dHB1dFtdIHwgdW5kZWZpbmVkLFxuICAgIGFsbEV4ZWN1dGlvbnNWYWxpZDogYm9vbGVhbixcbiAgICBydWxlc2V0SW5wdXRGYWN0czogc3RyaW5nW10sXG4gICAgcnVudGltZUZhY3RWYWx1ZXM6IFJlY29yZDxzdHJpbmcsIEZhY3RzPixcbiAgICBleGVjdXRpb25Db3VudGVyOiBudW1iZXIsXG4gICAgcnVsZXNldDogUnVsZXNldCkge1xuICAgIGNvbnN0IHJ1bGVzZXRUcmlnZ2VycyA9IHJldHJpZXZlUnVsZXNldFRyaWdnZXJzKGN1cnJSZXMsIHByZXZSZXMpO1xuICAgIGNvbnN0IHJ1bGVzZXRPdXRwdXRFeGVjdXRpb24gPSBjdXJyUmVzLm1hcCgocikgPT4gci5ldmFsdWF0aW9uISk7XG5cbiAgICBpZiAoIWFsbEV4ZWN1dGlvbnNWYWxpZCkge1xuICAgICAgdGhpcy5hZGRSdWxlc2V0RXhlY3V0aW9uRXJyb3JFdmVudChydWxlc2V0LCBydWxlc2V0SW5wdXRGYWN0cywgZXhlY3V0aW9uQ291bnRlciwgcnVudGltZUZhY3RWYWx1ZXMsIHJ1bGVzZXRUcmlnZ2VycywgcnVsZXNldE91dHB1dEV4ZWN1dGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGV4ZWN1dGlvbkNvdW50ZXIsXG4gICAgICBydWxlc2V0T3V0cHV0RXhlY3V0aW9uLFxuICAgICAgYWxsRXhlY3V0aW9uc1ZhbGlkLFxuICAgICAgcnVsZXNldFRyaWdnZXJzXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0cyBhbiAnQXZhaWxhYmxlUnVsZXNldHMnIGRlYnVnIGV2ZW50IHdoZW4gcnVsZXNldHMgYXJlIHJlZ2lzdGVyZWQgdG8gdGhlIHJ1bGVzIGVuZ2luZVxuICAgKiBAcGFyYW0gcnVsZXNldHNcbiAgICovXG4gIHB1YmxpYyBhZGRBdmFpbGFibGVSdWxlc2V0cyhydWxlc2V0czogUnVsZXNldFtdKSB7XG4gICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLnJlZ2lzdGVyZWRSdWxlc2V0cyA9IFsuLi50aGlzLnJlZ2lzdGVyZWRSdWxlc2V0cywgLi4ucnVsZXNldHMubWFwKChyKSA9PiAoeyBuYW1lOiByLm5hbWUsIGlkOiByLmlkIH0pKV07XG4gICAgdGhpcy5kZWJ1Z0V2ZW50c1N1YmplY3QkLm5leHQoKCkgPT4gKHtcbiAgICAgIHRpbWVzdGFtcCxcbiAgICAgIHR5cGU6ICdBdmFpbGFibGVSdWxlc2V0cycsXG4gICAgICBhdmFpbGFibGVSdWxlc2V0czogdGhpcy5yZWdpc3RlcmVkUnVsZXNldHNcbiAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogQ29tcHV0ZXMgYW5kIGVtaXRzIGFuICdBY3RpdmVSdWxlc2V0cycgZGVidWcgZXZlbnQgd2hlbiB0aGUgYWN0aXZlIHJ1bGVzZXRzIGFyZSBjaGFuZ2luZ1xuICAgKiBAcGFyYW0gcnVsZVNldEV4ZWN1dG9yTWFwIG1hcCBvZmYgYWxsIHJ1bGVzZXRzIGV4ZWN1dG9yc1xuICAgKiBAcGFyYW0gcmVzdHJpY3RpdmVSdWxlU2V0cyBpZHMgb2YgdGhlIHJ1bGVzZXRzIHRvIGFjdGl2YXRlOyBpZiBub3QgcHJvdmlkZWQgYWxsIHJlZ2lzdGVyZWQgcnVsZXNldHMgd2lsbCBiZSBjb25zaWRlcmVkIGFzIGFjdGl2ZVxuICAgKi9cbiAgcHVibGljIGFjdGl2ZVJ1bGVzZXRzQ2hhbmdlKHJ1bGVTZXRFeGVjdXRvck1hcDogUmVjb3JkPHN0cmluZywgUnVsZXNldEV4ZWN1dG9yPiwgcmVzdHJpY3RpdmVSdWxlU2V0cz86IHN0cmluZ1tdKSB7XG4gICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBydWxlc2V0cyA9IE9iamVjdC5rZXlzKHJ1bGVTZXRFeGVjdXRvck1hcCkubWFwKChydWxlc2V0SWQpID0+IHJ1bGVTZXRFeGVjdXRvck1hcFtydWxlc2V0SWRdLmVuZ2luZVJ1bGVzZXQpO1xuICAgIGNvbnN0IGFjdGl2ZVJ1bGVzZXRzID0gcmVzdHJpY3RpdmVSdWxlU2V0c1xuICAgICAgPyBPYmplY3QudmFsdWVzKHJ1bGVzZXRzKS5maWx0ZXIoKHJ1bGVTZXQpID0+IHJlc3RyaWN0aXZlUnVsZVNldHMuaW5jbHVkZXMocnVsZVNldC5pZCkpXG4gICAgICA6IE9iamVjdC52YWx1ZXMocnVsZXNldHMpO1xuXG4gICAgdGhpcy5kZWJ1Z0V2ZW50c1N1YmplY3QkLm5leHQoKCkgPT4gKHtcbiAgICAgIHRpbWVzdGFtcCxcbiAgICAgIHR5cGU6ICdBY3RpdmVSdWxlc2V0cycsXG4gICAgICBydWxlc2V0czogYWN0aXZlUnVsZXNldHMubWFwKChhKSA9PiAoeyBuYW1lOiBydWxlU2V0RXhlY3V0b3JNYXBbYS5pZF0ucnVsZXNldC5uYW1lLCBpZDogcnVsZVNldEV4ZWN1dG9yTWFwW2EuaWRdLnJ1bGVzZXQuaWQgfSkpXG4gICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIGFuICdBbGxBY3Rpb25zJyBkZWJ1ZyBldmVudCBlYWNoIHRpbWUgdGhlIHJ1bGVzIGVuZ2luZSBvdXRwdXRzIHRoZSBsaXN0IG9mIGFjdGlvbnNcbiAgICogQHBhcmFtIGFjdGlvbnMgbGlzdCBvZiBvdXRwdXRlZCBhY3Rpb25zXG4gICAqL1xuICBwdWJsaWMgYWxsQWN0aW9uc0NoYW5nZShhY3Rpb25zOiBBY3Rpb25CbG9ja1tdKSB7XG4gICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLmRlYnVnRXZlbnRzU3ViamVjdCQubmV4dCgoKSA9PiAoeyB0aW1lc3RhbXAsIHR5cGU6ICdBbGxBY3Rpb25zJywgYWN0aW9ucyB9KSk7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgYSAnUnVsZXNldEV4ZWN1dGlvbicgZGVidWcgZXZlbnQgYXQgdGhlIG91cHV0IG9mIGEgc3VjY2Vzc2Z1bCBydWxlc2V0IGV4ZWN1dGlvblxuICAgKiBAcGFyYW0gcnVsZXNldFxuICAgKiBAcGFyYW0gZXhlY3V0aW9uQ291bnRlclxuICAgKiBAcGFyYW0gcnVsZXNldElucHV0RmFjdHNcbiAgICogQHBhcmFtIGFsbE91dHB1dEFjdGlvbnNcbiAgICogQHBhcmFtIHJ1bnRpbWVGYWN0VmFsdWVzXG4gICAqIEBwYXJhbSBydWxlc2V0VHJpZ2dlcnNcbiAgICogQHBhcmFtIHJ1bGVzRXhlY3V0aW9uc1xuICAgKi9cbiAgcHVibGljIGFkZFJ1bGVzZXRFeGVjdXRpb25FdmVudChydWxlc2V0OiBSdWxlc2V0LCBleGVjdXRpb25Db3VudGVyOiBudW1iZXIsXG4gICAgcnVsZXNldElucHV0RmFjdHM6IHN0cmluZ1tdLCBhbGxPdXRwdXRBY3Rpb25zOiBBY3Rpb25CbG9ja1tdLCBydW50aW1lRmFjdFZhbHVlczogUmVjb3JkPHN0cmluZywgRmFjdHM+LFxuICAgIHJ1bGVzZXRUcmlnZ2VyczogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgRXZhbHVhdGlvblJlYXNvbj4+LCBydWxlc0V4ZWN1dGlvbnM6IFJ1bGVFdmFsdWF0aW9uW10pIHtcbiAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgIHRoaXMuZGVidWdFdmVudHNTdWJqZWN0JC5uZXh0KCgpID0+IHRoaXMucnVsZXNldEV4ZWN1dGlvbih0aW1lc3RhbXAsIHJ1bGVzZXQsIGV4ZWN1dGlvbkNvdW50ZXIsXG4gICAgICBydWxlc2V0SW5wdXRGYWN0cywgYWxsT3V0cHV0QWN0aW9ucywgcnVudGltZUZhY3RWYWx1ZXMsIHJ1bGVzZXRUcmlnZ2VycywgcnVsZXNFeGVjdXRpb25zKSk7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgYSAnUnVsZXNldEV4ZWN1dGlvbkVycm9yJyBkZWJ1ZyBldmVudCBhdCB0aGUgb3VwdXQgb2YgYSBmYWlsaW5nIHJ1bGVzZXQgZXhlY3V0aW9uXG4gICAqIEBwYXJhbSBydWxlc2V0XG4gICAqIEBwYXJhbSBydWxlc2V0SW5wdXRGYWN0c1xuICAgKiBAcGFyYW0gZXhlY3V0aW9uQ291bnRlclxuICAgKiBAcGFyYW0gcnVudGltZUZhY3RWYWx1ZXNcbiAgICogQHBhcmFtIHJ1bGVzZXRUcmlnZ2Vyc1xuICAgKiBAcGFyYW0gcnVsZXNFeGVjdXRpb25zXG4gICAqL1xuICBwdWJsaWMgYWRkUnVsZXNldEV4ZWN1dGlvbkVycm9yRXZlbnQoXG4gICAgcnVsZXNldDogUnVsZXNldCxcbiAgICBydWxlc2V0SW5wdXRGYWN0czogc3RyaW5nW10sXG4gICAgZXhlY3V0aW9uQ291bnRlcjogbnVtYmVyLFxuICAgIHJ1bnRpbWVGYWN0VmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBGYWN0cz4sXG4gICAgcnVsZXNldFRyaWdnZXJzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBFdmFsdWF0aW9uUmVhc29uPj4sXG4gICAgcnVsZXNFeGVjdXRpb25zOiBSdWxlRXZhbHVhdGlvbltdXG4gICkge1xuICAgIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KCk7XG4gICAgdGhpcy5kZWJ1Z0V2ZW50c1N1YmplY3QkLm5leHQoKCkgPT4gdGhpcy5ydWxlc2V0RXhlY3V0aW9uRXJyb3IodGltZXN0YW1wLCBydWxlc2V0LCBydWxlc2V0SW5wdXRGYWN0cywgZXhlY3V0aW9uQ291bnRlciwgcnVudGltZUZhY3RWYWx1ZXMsIHJ1bGVzZXRUcmlnZ2VycywgcnVsZXNFeGVjdXRpb25zKSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGxpc3Qgb2YgZmFjdCBuYW1lIGFuZCB2YWx1ZSBwYWlyc1xuICAgKiBAcGFyYW0gZmFjdHNOYW1lcyBMaXN0IG9mIGZhY3RzIG5hbWVzIHRvIGdldCB0aGUgdmFsdWUgZm9yXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0RmFjdHNTbmFwc2hvdChmYWN0c05hbWVzOiBzdHJpbmdbXSkge1xuICAgIGNvbnN0IGZhY3RzOiB7IGZhY3ROYW1lOiBzdHJpbmc7IHZhbHVlOiBhbnkgfVtdID0gW107XG4gICAgaWYgKCF0aGlzLnJlZ2lzdGVyZWRSdWxlRW5naW5lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1J1bGUgZW5naW5lIG5vdCBwbHVnZ2VkIHRvIHRoZSBkZWJ1Z2dlcicpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGZhY3ROYW1lIG9mIGZhY3RzTmFtZXMpIHtcbiAgICAgIGZhY3RzLnB1c2goeyBmYWN0TmFtZSwgdmFsdWU6IGF3YWl0IHRoaXMucmVnaXN0ZXJlZFJ1bGVFbmdpbmUucmV0cmlldmVGYWN0VmFsdWUoZmFjdE5hbWUpIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZmFjdHM7XG4gIH1cbn1cbiJdfQ==
@@ -1,91 +0,0 @@
1
- /**
2
- * Function to retrive from 2 sequential executions only the triggers which activated the last ruleset execution
3
- * @param currRes Current ruleset execution object
4
- * @param prevRes Previous ruleset execution object
5
- * @returns The triggers list which activates the last ruleset execution
6
- */
7
- export function retrieveRulesetTriggers(currRes, prevRes) {
8
- let rulesetTriggers = {};
9
- const allCurrRulesetTriggersList = currRes.map((r) => r.evaluation).filter((e) => !!e).map((e) => e.triggers);
10
- const allCurrRulesetTriggers = {};
11
- allCurrRulesetTriggersList.forEach((rTrig) => {
12
- Object.keys(rTrig).forEach((ruleId) => {
13
- allCurrRulesetTriggers[ruleId] = rTrig[ruleId];
14
- });
15
- });
16
- if (prevRes) {
17
- const allPrevRulesetTriggersList = prevRes.map((r) => r.evaluation).filter((e) => !!e).map((e) => e.triggers);
18
- const allPrevRulesetTriggers = {};
19
- allPrevRulesetTriggersList.forEach((rTrig) => {
20
- Object.keys(rTrig).forEach((ruleId) => {
21
- allPrevRulesetTriggers[ruleId] = rTrig[ruleId];
22
- });
23
- });
24
- Object.entries(allCurrRulesetTriggers).forEach(([ruleId, ruleTriggers]) => {
25
- Object.keys(ruleTriggers).forEach((factName) => {
26
- if (!allPrevRulesetTriggers[ruleId]
27
- || !allPrevRulesetTriggers[ruleId][factName]
28
- || ruleTriggers[factName].newValue !== allPrevRulesetTriggers[ruleId][factName].newValue) {
29
- (rulesetTriggers[ruleId] ||= {})[factName] = ruleTriggers[factName];
30
- }
31
- });
32
- });
33
- }
34
- else {
35
- rulesetTriggers = allCurrRulesetTriggers;
36
- }
37
- return rulesetTriggers;
38
- }
39
- /**
40
- * Flag as cached the rules evaluations which are from previous ruleset executions
41
- * @param rulesEvaluations all rules evaluations list
42
- * @param triggers Ruleset triggers object
43
- * @returns Rules evaluation list with flagged rules evaluation from previous ruleset executions
44
- */
45
- export function flagCachedRules(rulesEvaluations, triggers) {
46
- const rulesWhichTriggeredExecution = Object.keys(triggers);
47
- return rulesEvaluations.map((e) => {
48
- if (e && !rulesWhichTriggeredExecution.includes(e.rule.id)) {
49
- return { ...e, cached: true };
50
- }
51
- return { ...e };
52
- });
53
- }
54
- /**
55
- * Create the debug rule evaluation object
56
- * @param rule
57
- * @param rulesetName
58
- * @param outputActions
59
- * @param outputError
60
- * @param runtimeFactValues
61
- * @param factValues
62
- * @param oldFactValues
63
- */
64
- export function handleRuleEvaluationDebug(rule, rulesetName, outputActions, outputError, runtimeFactValues, factValues, oldFactValues) {
65
- const executionId = `${rulesetName} - ${rule.name}`;
66
- const reasons = {};
67
- for (let index = 0; index < factValues.length; index++) {
68
- if (!oldFactValues) {
69
- (reasons[rule.id] ||= {})[rule.inputFacts[index]] = { factName: rule.inputFacts[index], newValue: factValues[index] };
70
- }
71
- else if (oldFactValues[index]?.toString() !== factValues[index]?.toString()) {
72
- (reasons[rule.id] ||= {})[rule.inputFacts[index]] = { factName: rule.inputFacts[index], oldValue: oldFactValues[index], newValue: factValues[index] };
73
- }
74
- }
75
- const ruleEvaluation = {
76
- timestamp: Date.now(),
77
- outputActions,
78
- id: executionId,
79
- triggers: reasons,
80
- temporaryFacts: rule.outputRuntimeFacts.concat(rule.inputRuntimeFacts).reduce((acc, runtimeFactName) => {
81
- if (typeof runtimeFactValues[runtimeFactName] !== 'undefined') {
82
- acc[runtimeFactName] = runtimeFactValues[runtimeFactName];
83
- }
84
- return acc;
85
- }, {}),
86
- rule: { id: rule.id, name: rule.name },
87
- ...(outputError ? { error: outputError } : {})
88
- };
89
- return ruleEvaluation;
90
- }
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbmdpbmUvZGVidWcvaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFhQTs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxPQUErQixFQUFFLE9BQTJDO0lBQ2xILElBQUksZUFBZSxHQUFxRCxFQUFFLENBQUM7SUFFM0UsTUFBTSwwQkFBMEIsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUF1QixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ25JLE1BQU0sc0JBQXNCLEdBQXFELEVBQUUsQ0FBQztJQUVwRiwwQkFBMEIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUMzQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ3BDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUNaLE1BQU0sMEJBQTBCLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBdUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMs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LE9BQU8sY0FBYyxDQUFDO0FBQ3hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBFdmFsdWF0aW9uUmVhc29uLFxuICBSdWxlRXZhbHVhdGlvbixcbiAgUnVsZUV2YWx1YXRpb25PdXRwdXQsXG59IGZyb20gJy4uL2VuZ2luZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHR5cGUge1xuICBGYWN0cyxcbn0gZnJvbSAnLi4vZmFjdCc7XG5pbXBvcnQge1xuICBBY3Rpb25CbG9jayxcbiAgUnVsZSxcbn0gZnJvbSAnLi4vc3RydWN0dXJlJztcblxuLyoqXG4gKiBGdW5jdGlvbiB0byByZXRyaXZlIGZyb20gMiBzZXF1ZW50aWFsIGV4ZWN1dGlvbnMgb25seSB0aGUgdHJpZ2dlcnMgd2hpY2ggYWN0aXZhdGVkIHRoZSBsYXN0IHJ1bGVzZXQgZXhlY3V0aW9uXG4gKiBAcGFyYW0gY3VyclJlcyBDdXJyZW50IHJ1bGVzZXQgZXhlY3V0aW9uIG9iamVjdFxuICogQHBhcmFtIHByZXZSZXMgUHJldmlvdXMgcnVsZXNldCBleGVjdXRpb24gb2JqZWN0XG4gKiBAcmV0dXJucyBUaGUgdHJpZ2dlcnMgbGlzdCB3aGljaCBhY3RpdmF0ZXMgdGhlIGxhc3QgcnVsZXNldCBleGVjdXRpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJldHJpZXZlUnVsZXNldFRyaWdnZXJzKGN1cnJSZXM6IFJ1bGVFdmFsdWF0aW9uT3V0cHV0W10sIHByZXZSZXM6IFJ1bGVFdmFsdWF0aW9uT3V0cHV0W10gfCB1bmRlZmluZWQpIHtcbiAgbGV0IHJ1bGVzZXRUcmlnZ2VyczogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgRXZhbHVhdGlvblJlYXNvbj4+ID0ge307XG5cbiAgY29uc3QgYWxsQ3VyclJ1bGVzZXRUcmlnZ2Vyc0xpc3QgPSBjdXJyUmVzLm1hcCgocikgPT4gci5ldmFsdWF0aW9uKS5maWx0ZXIoKGUpOiBlIGlzIFJ1bGVFdmFsdWF0aW9uID0+ICEhZSkubWFwKChlKSA9PiBlLnRyaWdnZXJzKTtcbiAgY29uc3QgYWxsQ3VyclJ1bGVzZXRUcmlnZ2VyczogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgRXZhbHVhdGlvblJlYXNvbj4+ID0ge307XG5cbiAgYWxsQ3VyclJ1bGVzZXRUcmlnZ2Vyc0xpc3QuZm9yRWFjaCgoclRyaWcpID0+IHtcbiAgICBPYmplY3Qua2V5cyhyVHJpZykuZm9yRWFjaCgocnVsZUlkKSA9PiB7XG4gICAgICBhbGxDdXJyUnVsZXNldFRyaWdnZXJzW3J1bGVJZF0gPSByVHJpZ1tydWxlSWRdO1xuICAgIH0pO1xuICB9KTtcblxuICBpZiAocHJldlJlcykge1xuICAgIGNvbnN0IGFsbFByZXZSdWxlc2V0VHJpZ2dlcnNMaXN0ID0gcHJldlJlcy5tYXAoKHIpID0+IHIuZXZhbHVhdGlvbikuZmlsdGVyKChlKTogZSBpcyBSdWxlRXZhbHVhdGlvbiA9PiAhIWUpLm1hcCgoZSkgPT4gZS50cmlnZ2Vycyk7XG4gICAgY29uc3QgYWxsUHJldlJ1bGVzZXRUcmlnZ2VyczogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgRXZhbHVhdGlvblJlYXNvbj4+ID0ge307XG5cbiAgICBhbGxQcmV2UnVsZXNldFRyaWdnZXJzTGlzdC5mb3JFYWNoKChyVHJpZykgPT4ge1xuICAgICAgT2JqZWN0LmtleXMoclRyaWcpLmZvckVhY2goKHJ1bGVJZCkgPT4ge1xuICAgICAgICBhbGxQcmV2UnVsZXNldFRyaWdnZXJzW3J1bGVJZF0gPSByVHJpZ1tydWxlSWRdO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBPYmplY3QuZW50cmllcyhhbGxDdXJyUnVsZXNldFRyaWdnZXJzKS5mb3JFYWNoKChbcnVsZUlkLCBydWxlVHJpZ2dlcnNdKSA9PiB7XG4gICAgICBPYmplY3Qua2V5cyhydWxlVHJpZ2dlcnMpLmZvckVhY2goKGZhY3ROYW1lKSA9PiB7XG4gICAgICAgIGlmICghYWxsUHJldlJ1bGVzZXRUcmlnZ2Vyc1tydWxlSWRdXG4gICAgICAgICAgfHwgIWFsbFByZXZSdWxlc2V0VHJpZ2dlcnNbcnVsZUlkXVtmYWN0TmFtZV1cbiAgICAgICAgICB8fCBydWxlVHJpZ2dlcnNbZmFjdE5hbWVdLm5ld1ZhbHVlICE9PSBhbGxQcmV2UnVsZXNldFRyaWdnZXJzW3J1bGVJZF1bZmFjdE5hbWVdLm5ld1ZhbHVlKSB7XG4gICAgICAgICAgKHJ1bGVzZXRUcmlnZ2Vyc1tydWxlSWRdIHx8PSB7fSlbZmFjdE5hbWVdID0gcnVsZVRyaWdnZXJzW2ZhY3ROYW1lXTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcnVsZXNldFRyaWdnZXJzID0gYWxsQ3VyclJ1bGVzZXRUcmlnZ2VycztcbiAgfVxuICByZXR1cm4gcnVsZXNldFRyaWdnZXJzO1xufVxuXG4vKipcbiAqIEZsYWcgYXMgY2FjaGVkIHRoZSBydWxlcyBldmFsdWF0aW9ucyB3aGljaCBhcmUgZnJvbSBwcmV2aW91cyBydWxlc2V0IGV4ZWN1dGlvbnNcbiAqIEBwYXJhbSBydWxlc0V2YWx1YXRpb25zIGFsbCBydWxlcyBldmFsdWF0aW9ucyBsaXN0XG4gKiBAcGFyYW0gdHJpZ2dlcnMgUnVsZXNldCB0cmlnZ2VycyBvYmplY3RcbiAqIEByZXR1cm5zIFJ1bGVzIGV2YWx1YXRpb24gbGlzdCB3aXRoIGZsYWdnZWQgcnVsZXMgZXZhbHVhdGlvbiBmcm9tIHByZXZpb3VzIHJ1bGVzZXQgZXhlY3V0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZmxhZ0NhY2hlZFJ1bGVzKHJ1bGVzRXZhbHVhdGlvbnM6IFJ1bGVFdmFsdWF0aW9uW10sIHRyaWdnZXJzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBFdmFsdWF0aW9uUmVhc29uPj4pOiAoUnVsZUV2YWx1YXRpb24gJiB7IGNhY2hlZD86IGJvb2xlYW4gfSlbXSB7XG4gIGNvbnN0IHJ1bGVzV2hpY2hUcmlnZ2VyZWRFeGVjdXRpb24gPSBPYmplY3Qua2V5cyh0cmlnZ2Vycyk7XG5cbiAgcmV0dXJuIHJ1bGVzRXZhbHVhdGlvbnMubWFwKChlKSA9PiB7XG4gICAgaWYgKGUgJiYgIXJ1bGVzV2hpY2hUcmlnZ2VyZWRFeGVjdXRpb24uaW5jbHVkZXMoZS5ydWxlLmlkKSkge1xuICAgICAgcmV0dXJuIHsgLi4uZSwgY2FjaGVkOiB0cnVlIH07XG4gICAgfVxuICAgIHJldHVybiB7IC4uLmUgfTtcbiAgfSk7XG59XG5cbi8qKlxuICogQ3JlYXRlIHRoZSBkZWJ1ZyBydWxlIGV2YWx1YXRpb24gb2JqZWN0XG4gKiBAcGFyYW0gcnVsZVxuICogQHBhcmFtIHJ1bGVzZXROYW1lXG4gKiBAcGFyYW0gb3V0cHV0QWN0aW9uc1xuICogQHBhcmFtIG91dHB1dEVycm9yXG4gKiBAcGFyYW0gcnVudGltZUZhY3RWYWx1ZXNcbiAqIEBwYXJhbSBmYWN0VmFsdWVzXG4gKiBAcGFyYW0gb2xkRmFjdFZhbHVlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlUnVsZUV2YWx1YXRpb25EZWJ1ZyhcbiAgcnVsZTogUnVsZSxcbiAgcnVsZXNldE5hbWU6IHN0cmluZyxcbiAgb3V0cHV0QWN0aW9uczogQWN0aW9uQmxvY2tbXSB8IHVuZGVmaW5lZCxcbiAgb3V0cHV0RXJyb3I6IGFueSxcbiAgcnVudGltZUZhY3RWYWx1ZXM6IFJlY29yZDxzdHJpbmcsIEZhY3RzPixcbiAgZmFjdFZhbHVlczogYW55W10gfCB1bmRlZmluZWQsXG4gIG9sZEZhY3RWYWx1ZXM6IGFueVtdIHwgdW5kZWZpbmVkKSB7XG4gIGNvbnN0IGV4ZWN1dGlvbklkID0gYCR7cnVsZXNldE5hbWV9IC0gJHtydWxlLm5hbWV9YDtcblxuICBjb25zdCByZWFzb25zOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBFdmFsdWF0aW9uUmVhc29uPj4gPSB7fTtcbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGZhY3RWYWx1ZXMhLmxlbmd0aDsgaW5kZXgrKykge1xuICAgIGlmICghb2xkRmFjdFZhbHVlcykge1xuICAgICAgKHJlYXNvbnNbcnVsZS5pZF0gfHw9IHt9KVtydWxlLmlucHV0RmFjdHNbaW5kZXhdXSA9IHsgZmFjdE5hbWU6IHJ1bGUuaW5wdXRGYWN0c1tpbmRleF0sIG5ld1ZhbHVlOiBmYWN0VmFsdWVzIVtpbmRleF0gfTtcbiAgICB9IGVsc2UgaWYgKG9sZEZhY3RWYWx1ZXNbaW5kZXhdPy50b1N0cmluZygpICE9PSBmYWN0VmFsdWVzIVtpbmRleF0/LnRvU3RyaW5nKCkpIHtcbiAgICAgIChyZWFzb25zW3J1bGUuaWRdIHx8PSB7fSlbcnVsZS5pbnB1dEZhY3RzW2luZGV4XV0gPSB7IGZhY3ROYW1lOiBydWxlLmlucHV0RmFjdHNbaW5kZXhdLCBvbGRWYWx1ZTogb2xkRmFjdFZhbHVlc1tpbmRleF0sIG5ld1ZhbHVlOiBmYWN0VmFsdWVzIVtpbmRleF0gfTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBydWxlRXZhbHVhdGlvbjogUnVsZUV2YWx1YXRpb24gPSB7XG4gICAgdGltZXN0YW1wOiBEYXRlLm5vdygpLFxuICAgIG91dHB1dEFjdGlvbnMsXG4gICAgaWQ6IGV4ZWN1dGlvbklkLFxuICAgIHRyaWdnZXJzOiByZWFzb25zLFxuICAgIHRlbXBvcmFyeUZhY3RzOiBydWxlLm91dHB1dFJ1bnRpbWVGYWN0cy5jb25jYXQocnVsZS5pbnB1dFJ1bnRpbWVGYWN0cykucmVkdWNlPFJlY29yZDxzdHJpbmcsIEZhY3RzPj4oKGFjYywgcnVudGltZUZhY3ROYW1lKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIHJ1bnRpbWVGYWN0VmFsdWVzW3J1bnRpbWVGYWN0TmFtZV0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGFjY1tydW50aW1lRmFjdE5hbWVdID0gcnVudGltZUZhY3RWYWx1ZXNbcnVudGltZUZhY3ROYW1lXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge31cbiAgICApLFxuICAgIHJ1bGU6IHsgaWQ6IHJ1bGUuaWQsIG5hbWU6IHJ1bGUubmFtZSB9LFxuICAgIC4uLihvdXRwdXRFcnJvciA/IHsgZXJyb3I6IG91dHB1dEVycm9yIH0gOiB7fSlcbiAgfTtcbiAgcmV0dXJuIHJ1bGVFdmFsdWF0aW9uO1xufVxuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5naW5lLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbmdpbmUvZW5naW5lLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBJdGVtSWRlbnRpZmllcixcbiAgTG9nZ2VyLFxufSBmcm9tICdAbzNyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBPYnNlcnZhYmxlLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB0eXBlIHtcbiAgRW5naW5lRGVidWdnZXIsXG59IGZyb20gJy4vZGVidWcvZW5naW5lLmRlYnVnJztcbmltcG9ydCB0eXBlIHtcbiAgRmFjdCxcbiAgRmFjdHMsXG59IGZyb20gJy4vZmFjdCc7XG5pbXBvcnQgdHlwZSB7XG4gIE9wZXJhdG9yLFxufSBmcm9tICcuL29wZXJhdG9yJztcbmltcG9ydCB7XG4gIEFjdGlvbkJsb2NrLFxuICBSdWxlLFxuICBSdWxlc2V0LFxufSBmcm9tICcuL3N0cnVjdHVyZSc7XG5cbi8qKiBQZXJmb3JtYW5jZSBvYmplY3Qgc3VwcG9ydGluZyBOb2RlSnMgUGVyZm9ybWFuY2UgYW5kIFdlYiBQZXJmb3JtYW5jZSByZXBvcnRpbmcgICovXG5leHBvcnQgdHlwZSBDcm9zc1BsYXRmb3JtUGVyZm9ybWFuY2UgPSB7XG4gIC8qKiBAc2VlIFBlcmZvcm1hbmNlLm1hcmsgKi9cbiAgbWFyazogKC4uLng6IFBhcmFtZXRlcnM8UGVyZm9ybWFuY2VbJ21hcmsnXT4pID0+IFJldHVyblR5cGU8UGVyZm9ybWFuY2VbJ21hcmsnXT4gfCB2b2lkO1xuICAvKiogQHNlZSBQZXJmb3JtYW5jZS5tZWFzdXJlICovXG4gIG1lYXN1cmU6IChtZWFzdXJlTmFtZTogc3RyaW5nLCBzdGFydE9yTWVhc3VyZU9wdGlvbnM/OiBzdHJpbmcsIGVuZE1hcms/OiBzdHJpbmcpID0+IFJldHVyblR5cGU8UGVyZm9ybWFuY2VbJ21lYXN1cmUnXT4gfCB2b2lkO1xufTtcblxuLyoqIEZhY3Qgc3RyZWFtIG9iamVjdCB0byBoYW5kbGUgZmFjdCByZWZlcmVuY2UgY2hhbmdlICovXG5leHBvcnQgaW50ZXJmYWNlIEZhY3RPYmplY3Q8VD4ge1xuICAvKiogU3ViamVjdCBvZiBmYWN0IHN0cmVhbSAqL1xuICBzdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8T2JzZXJ2YWJsZTxUPiB8IHVuZGVmaW5lZD47XG4gIC8qKiBTdHJlYW0gb2YgdGhlIGZhY3QgdmFsdWUgKi9cbiAgdmFsdWUkOiBPYnNlcnZhYmxlPFQgfCB1bmRlZmluZWQ+O1xufVxuXG4vKiogUnVsZSBFbmdpbmUgY29uc3RydWN0b3Igb3B0aW9ucyAqL1xuZXhwb3J0IGludGVyZmFjZSBSdWxlc0VuZ2luZU9wdGlvbnMge1xuICAvKiogTGlzdCBvZiBmYWN0cyAqL1xuICBmYWN0cz86IEZhY3Q8RmFjdHM+W107XG5cbiAgLyoqIExpc3Qgb2YgcnVsZXMgKi9cbiAgcnVsZXM/OiBSdWxlc2V0W107XG5cbiAgLyoqIExpc3Qgb2YgY3VzdG9tIG9wZXJhdG9ycyAqL1xuICBvcGVyYXRvcnM/OiBPcGVyYXRvcjxhbnksIGFueT5bXTtcblxuICAvKiogRGVsYXkgYmVmb3JlIGZhY3Qgc3RyZWFtIGRlZmF1bHRpbmcgdmFsdWUgKi9cbiAgZmFjdERlZmF1bHREZWxheT86IG51bWJlcjtcblxuICAvKipcbiAgICogU2tpcCB0aGUgcnVsZSBhbmQgZmFjdCBjaXJjdWxhciBkZXBlbmRlbmN5IGNoZWNrc1xuICAgKiBUdXJuIHRvIHRydWUgdG8gaW5jcmVhc2UgdGhlIHNwZWVkIG9mIHRoZSB1cHNlcnRpb24gb2YgYSBydWxlXG4gICAqL1xuICBza2lwQ2lyY3VsYXJEZXBlbmRlbmN5Q2hlY2tzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUHJvdmlkZSBkZWJ1Z2dlciBpbnN0YW5jZSB0byB0aGUgcnVsZXMgZW5naW5lXG4gICAqL1xuICBkZWJ1Z2dlcj86IEVuZ2luZURlYnVnZ2VyO1xuXG4gIC8qKlxuICAgKiBJbnN0YW5jZSBvZiB0aGUgcGVyZm9ybWFuY2UgcmVwb3J0ZXIgdG8gdXNlIGZvciBwZXJmb3JtYW5jZSBtZWFzdXJlbWVudHMuXG4gICAqIEBkZWZhdWx0IHdpbmRvdy5wZXJmb3JtYW5jZSBvbiBicm93c2VyIG9ubHksIHVuZGVmaW5lZCBvbiBub2RlXG4gICAqL1xuICBwZXJmb3JtYW5jZT86IENyb3NzUGxhdGZvcm1QZXJmb3JtYW5jZTtcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgcnVsZXMgZW5naW5lIGluc3RhbmNlXG4gICAqIEBkZWZhdWx0IFJ1bGVzRW5naW5lXG4gICAqL1xuICBydWxlc0VuZ2luZUluc3RhbmNlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQ2xpZW50IHRvIGxvZyB0aGUgd2FybmluZyBhbmQgZXJyb3IgbWVzc2FnZVxuICAgKi9cbiAgbG9nZ2VyPzogTG9nZ2VyO1xufVxuXG4vKiogUnVsZSBhcyBzdG9yZWQgaW4gdGhlIHJ1bGVzIGVuZ2luZSAqL1xuZXhwb3J0IGludGVyZmFjZSBFbmdpbmVSdWxlIGV4dGVuZHMgUnVsZSB7XG4gIC8qKiBzdHJlYW0gb2YgdGhlIHJ1bGUgY29uZGl0aW9ucyByZXN1bHQgKi9cbiAgcmVzdWx0JDogQmVoYXZpb3JTdWJqZWN0PEFjdGlvbkJsb2NrW10+O1xufVxuXG4vKiogUnVsZSBhcyBzdG9yZWQgaW4gdGhlIHJ1bGVzIGVuZ2luZSAqL1xuZXhwb3J0IGludGVyZmFjZSBFbmdpbmVSdWxlc2V0IHtcbiAgLyoqIE9wdGlvbmFsIGRhdGUgcmFuZ2Ugd2hlcmUgdGhlIHJ1bGVzZXQgd2lsbCBiZSBleGVjdXRlZCwgaXQgc3VwcG9ydHMgYSBkYXRlU3RyaW5nIG9yIGEgdGltZXN0YW1wIGFzIG51bWJlciwgbW9yZSBpbmZvIG9uIGphdmFzY3JpcHQgRGF0ZSgpIGRvY3VtZW50YXRpb24gKi9cbiAgdmFsaWRpdHlSYW5nZT86IHsgZnJvbT86IHN0cmluZyB8IG51bWJlcjsgdG8/OiBzdHJpbmcgfCBudW1iZXIgfTtcbiAgLyoqXG4gICAqIENvbXBvbmVudHMgbGlua2VkIHRvIHRoZSBydWxlc2V0LiBJZiBwcmVzZW50IHRoZSBydWxlc2V0IHdpbGwgbm90IGJlIGFjdGl2ZSBieSBkZWZhdWx0LlxuICAgKiAnb3InIGNvbmRpdGlvbjogSWYgYXQgbGVhc3Qgb25lIGNvbXBvbmVudCBoYXMgc3Vic2NyaWJlZCwgdGhlIHJ1bGVzZXQgd2lsbCBiZWNvbWUgYWN0aXZlLlxuICAgKiBJZiBwcmVzZW50LCB0aGUge0BsaW5rIGxpbmtlZENvbXBvbmVudH0gcHJvcGVydHkgd2lsbCBub3QgYmUgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uXG4gICAqL1xuICBsaW5rZWRDb21wb25lbnRzPzogeyBvcjogSXRlbUlkZW50aWZpZXJbXSB9O1xuICAvKipcbiAgICogQ29tcG9uZW50IGxpbmtlZCB0byB0aGUgcnVsZXNldCwgaWYgc2V0IGl0IHdpbGwgZGlzYWJsZSB0aGUgcnVsZXNldCBleGVjdXRpb24gcGVyIGRlZmF1bHQsIHdhaXRpbmcgdG8gYSBzdWJzY3JpcHRpb25cbiAgICogQGRlcHJlY2F0ZWQgSXQgd2lsbCBiZSByZW1vdmVkIGluIHYxMiwgdXNlIHtAbGluayBsaW5rZWRDb21wb25lbnRzfSBpbnN0ZWFkXG4gICAqL1xuICBsaW5rZWRDb21wb25lbnQ/OiBJdGVtSWRlbnRpZmllcjtcbiAgLyoqIFVuaXF1ZSBpZCBvZiB0aGUgcnVsZXNldCovXG4gIGlkOiBzdHJpbmc7XG4gIC8qKiBTdG9yZXMgdGhlIHJlc3VsdCBvZiBlYWNoIHJ1bGVzIGZyb20gdGhlIHJ1bGVzZXQgKi9cbiAgcnVsZXNSZXN1bHRzU3ViamVjdCQ6IE9ic2VydmFibGU8QWN0aW9uQmxvY2tbXT47XG59XG4vKiogVGltZXN0YW1wIG9mIGEgcnVsZXMgZW5naW5lIG91dHB1dCBldmVudCAqL1xuZXhwb3J0IGludGVyZmFjZSBUaW1lZEV2ZW50IHtcbiAgLyoqIFRpbWVzdGFtcCB2YWx1ZSB3aGVuIHRoZSBldmVudCBvY2N1cnMgKi9cbiAgdGltZXN0YW1wOiBudW1iZXI7XG4gIC8qKiBEdXJhdGlvbiBvZiB0aGUgZXhlY3V0aW9uICovXG4gIGR1cmF0aW9uPzogbnVtYmVyO1xufVxuXG4vKiogRmFjdCBjaGFuZ2UgdHJpZ2dlcmluZyB0aGUgZXZhbHVhdGlvbiBvZiBhIHJ1bGUvZXhlY3V0aW9uIG9mIGEgcnVsZXNldCAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmFsdWF0aW9uUmVhc29uIHtcbiAgLyoqIE5hbWUgb2YgdGhlIGZhY3QgdGhhdCBjaGFuZ2VkICovXG4gIGZhY3ROYW1lOiBzdHJpbmc7XG4gIC8qKiBOZXcgdmFsdWUgb2YgdGhlIGZhY3QgKi9cbiAgbmV3VmFsdWU/OiBGYWN0cztcbiAgLyoqIE9sZCB2YWx1ZSBvZiB0aGUgZmFjdCAqL1xuICBvbGRWYWx1ZT86IEZhY3RzO1xufVxuXG4vKiogUmVzdWx0IG9iamVjdCByZXN1bHRlZCBhdCB0aGUgZW5kIG9mIGEgcnVsZSBldmFsdWF0aW9uICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1bGVFdmFsdWF0aW9uIGV4dGVuZHMgVGltZWRFdmVudCB7XG4gIC8qKiBJZGVudGlmaWVyIG9mIHRoZSBldmFsdWF0aW9uIChydWxlc2V0IG5hbWUgKyBydWxlIG5hbWUpICovXG4gIGlkOiBzdHJpbmc7XG4gIC8qKiBFdmFsdWF0ZWQgcnVsZSBpZGVudGlmaWVyICovXG4gIHJ1bGU6IFBpY2s8UnVsZSwgJ2lkJyB8ICduYW1lJz47XG4gIC8qKiBBY3Rpb25zIG91dHB1dGVkIGJ5IHRoZSBydWxlIGV2YWx1YXRpb24gKi9cbiAgb3V0cHV0QWN0aW9uczogQWN0aW9uQmxvY2tbXSB8IHVuZGVmaW5lZDtcbiAgLyoqIE1hcCBjb250YWluaW5nIHRoZSBmYWN0cyBjaGFuZ2VzIHRyaWdnZXJpbmcgdGhlIHJ1bGUgZXZhbHVhdGlvbiAqL1xuICB0cmlnZ2VyczogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgRXZhbHVhdGlvblJlYXNvbj4+O1xuICAvKiogRXJyb3Igb2JqZWN0IGluIGNhc2Ugb2YgcnVsZSBldmFsdWF0aW9uIGZhaWx1cmUgKi9cbiAgZXJyb3I/OiBhbnk7XG4gIC8qKiBSdW50aW1lIGZhY3RzIHdpdGggdmFsdWVzIGF0IHRoZSBlbmQgb2YgcnVsZSBldmFsdWF0aW9uICAqL1xuICB0ZW1wb3JhcnlGYWN0cz86IFJlY29yZDxzdHJpbmcsIEZhY3RzPjtcbiAgLyoqIEZsYWcgdG8gbm90aWZ5IGlmIHRoZSBydWxlcyBldmFsdWF0aW9uIGNvbWVzIGZyb20gYW4gb2xkIHJ1bGVzZXQgZXhlY3V0aW9uICovXG4gIGNhY2hlZD86IGJvb2xlYW47XG59XG5cbi8qKiBXcmFwcGVkIHJ1bGUgZXZhbHVhdGlvbiBvdXRwdXQgKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnVsZUV2YWx1YXRpb25PdXRwdXQge1xuICAvKiogQWN0aW9ucyBlbWl0dGVkIGF0IHRoZSBlbmQgb2YgcnVsZSBldmFsdWF0aW9uICovXG4gIGFjdGlvbnM6IEFjdGlvbkJsb2NrW10gfCB1bmRlZmluZWQ7XG4gIC8qKiBSdWxlIGV2YWx1YXRpb24gb3V0cHV0IG9iamVjdCAqL1xuICBldmFsdWF0aW9uPzogUnVsZUV2YWx1YXRpb247XG4gIC8qKiBFcnJvciBvYmplY3QgZW1pdHRlZCBhdCB0aGUgZW5kIG9mIHJ1bGUgZXZhbHVhdGlvbiwgaWYgYW55ICovXG4gIGVycm9yPzogYW55O1xufVxuXG4vKiogQmFzZSBvYmVqZWN0IHJlc3VsdGVkIGF0IHRoZSBlbmQgb2YgYSBydWxlc2V0IGV4ZWN1dGlvbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCYXNlUnVsZXNldEV4ZWN1dGlvbiB7XG4gIC8qKiBJZCBvZiB0aGUgcnVsZXNldCBleGVjdXRpb24gKi9cbiAgZXhlY3V0aW9uSWQ6IHN0cmluZztcbiAgLyoqIElkIG9mIHRoZSBydWxlc2V0IHdoaWNoIHdhcyBleGVjdXRlZCAqL1xuICBydWxlc2V0SWQ6IHN0cmluZztcbiAgLyoqIE5hbWUgb2YgdGhlIGV4ZWN1dGVkIHJ1bGVzZXQgKi9cbiAgcnVsZXNldE5hbWU6IHN0cmluZztcbiAgLyoqIENvdW50ZXIgb2YgZXhlY3V0aW9ucyBmb3IgdGhlIHJ1bGVzZXQgKi9cbiAgZXhlY3V0aW9uQ291bnRlcjogbnVtYmVyO1xuICAvKiogQWxsIGlucHV0IGZhY3RzIGFmZmVjdGluZyB0aGUgcnVsZXNldCAqL1xuICBpbnB1dEZhY3RzOiB7IGZhY3ROYW1lOiBzdHJpbmc7IHZhbHVlOiBGYWN0cyB9W107XG4gIC8qKiBSdW50aW1lIGZhY3RzIHVzZWQgYWNjcm9zIHRoZSBydWxlc2V0ICovXG4gIHRlbXBvcmFyeUZhY3RzPzogUmVjb3JkPHN0cmluZywgRmFjdHM+O1xuICAvKiogRmFjdHMgY2hhbmdlcyB0aGF0IHRyaWdnZXJlZCB0aGUgZXhlY3V0aW9uIG9mIHRoZSBydWxlc2V0ICovXG4gIHRyaWdnZXJzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBFdmFsdWF0aW9uUmVhc29uPj47XG4gIC8qKiBMaXN0IG9mIGV2YWx1YXRlZCBydWxlcyBhY2Nyb3MgcnVsZXNldCBleGVjdXRpb24gKi9cbiAgcnVsZXNFdmFsdWF0aW9uczogUnVsZUV2YWx1YXRpb25bXTtcbn1cblxuLyoqIERlYnVnIGV2ZW50IGVtaXR0ZWQgaW4gY2FzZSBvZiBzdWNjZXNzZnVsIHJ1bGVzZXQgZXhlY3V0aW9uICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1bGVzZXRFeGVjdXRpb25FdmVudCBleHRlbmRzIEJhc2VSdWxlc2V0RXhlY3V0aW9uLCBUaW1lZEV2ZW50IHtcbiAgLyoqIEV2ZW50IHR5cGUgKi9cbiAgdHlwZTogJ1J1bGVzZXRFeGVjdXRpb24nO1xuICAvKiogTGlzdCBvZiB0aGUgYWN0aW9ucyBlbWl0dGVkIGF0IHRoZSBlbmQgb2YgcnVsZXNldCBleGVjdXRpb24gKi9cbiAgb3V0cHV0QWN0aW9uczogQWN0aW9uQmxvY2tbXTtcbn1cblxuLyoqIERlYnVnIGV2ZW50IGVtaXR0ZWQgaW4gY2FzZSBvZiBydWxlc2V0IGV4ZWN1dGlvbiBmYWlsdXJlICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1bGVzZXRFeGVjdXRpb25FcnJvckV2ZW50IGV4dGVuZHMgQmFzZVJ1bGVzZXRFeGVjdXRpb24sIFRpbWVkRXZlbnQge1xuICAvKiogRXZlbnQgdHlwZSAqL1xuICB0eXBlOiAnUnVsZXNldEV4ZWN1dGlvbkVycm9yJztcbiAgLyoqIExpc3Qgb2YgcnVsZXMgY2F1c2luZyB0aGUgZXhlY3V0aW9uIGVycm9yKi9cbiAgcnVsZXNDYXVzaW5nVGhlRXJyb3I6IFBpY2s8UnVsZSwgJ25hbWUnIHwgJ2lkJz5bXTtcbiAgLyoqIExpc3Qgb2Ygb3V0cHV0dGVkIGVycm9ycyAqL1xuICBlcnJvcnM6IGFueVtdO1xufVxuXG4vKiogRGVidWcgZXZlbnQgZW1pdHRlZCB3aGVuIGFjdGl2ZSBydWxlc2V0cyBhcmUgY2hhbmdpbmcgKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aXZlUnVsZXNldHNFdmVudCBleHRlbmRzIFRpbWVkRXZlbnQge1xuICAvKiogRXZlbnQgdHlwZSAqL1xuICB0eXBlOiAnQWN0aXZlUnVsZXNldHMnO1xuICAvKiogTGlzdCBvZiBhY3RpdmUgcnVsZXNldHMgKi9cbiAgcnVsZXNldHM6IFBpY2s8UnVsZXNldCwgJ25hbWUnIHwgJ2lkJz5bXTtcbn1cblxuLyoqIERlYnVnIGV2ZW50IGVtaXR0ZWQgZWFjaCB0aW1lIHRoZSBSdWxlcyBFbmdpbmUgb3V0cHV0cyBhIGxpc3Qgb2YgYWN0aW9ucyAqL1xuZXhwb3J0IGludGVyZmFjZSBBbGxBY3Rpb25zRXZlbnQgZXh0ZW5kcyBUaW1lZEV2ZW50IHtcbiAgLyoqIGV2ZW50IHR5cGUgKi9cbiAgdHlwZTogJ0FsbEFjdGlvbnMnO1xuICAvKiogTGlzdCBvZiBlbWl0dGVkIGFjdGlvbnMgKi9cbiAgYWN0aW9uczogQWN0aW9uQmxvY2tbXTtcbn1cblxuLyoqICBEZWJ1ZyBldmVudCBlbWl0dGVkIHdoZW4gcnVsZXNldHMgYXJlIHJlZ2lzdGVyZWQgdG8gdGhlIHJ1bGVzIGVuZ2luZSAqL1xuZXhwb3J0IGludGVyZmFjZSBBdmFpbGFibGVSdWxlc2V0cyBleHRlbmRzIFRpbWVkRXZlbnQge1xuICAvKiogRXZlbnQgdHlwZSAqL1xuICB0eXBlOiAnQXZhaWxhYmxlUnVsZXNldHMnO1xuICAvKiogUmVnaXN0ZXJlZCBydWxlc2V0cyBsaXN0ICovXG4gIGF2YWlsYWJsZVJ1bGVzZXRzOiBQaWNrPFJ1bGVzZXQsICduYW1lJyB8ICdpZCc+W107XG59XG5cbi8qKiBUeXBlIG9mIHBvc3NpYmxlIGRlYnVnIGV2ZW50cyBlbWl0ZWQgYnkgUnVsZXMgRW5naW5lICovXG5leHBvcnQgdHlwZSBEZWJ1Z0V2ZW50ID0gUnVsZXNldEV4ZWN1dGlvbkV2ZW50IHwgUnVsZXNldEV4ZWN1dGlvbkVycm9yRXZlbnQgfCBBY3RpdmVSdWxlc2V0c0V2ZW50IHwgQWxsQWN0aW9uc0V2ZW50IHwgQXZhaWxhYmxlUnVsZXNldHM7XG4iXX0=