@o3r/rules-engine 11.5.0-prerelease.5 → 11.5.0-prerelease.51

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 (23) hide show
  1. package/esm2022/components/rules-engine/rule-actions/rule-actions-pres.component.mjs +4 -4
  2. package/esm2022/components/rules-engine/rule-condition/rule-condition-pres.component.mjs +4 -4
  3. package/esm2022/components/rules-engine/rule-key-value/rule-key-value-pres.component.mjs +4 -4
  4. package/esm2022/components/rules-engine/rule-tree/rule-tree-pres.component.mjs +4 -4
  5. package/esm2022/components/rules-engine/ruleset-history/ruleset-history-pres.component.mjs +4 -4
  6. package/esm2022/components/rules-engine/ruleset-history/ruleset-history-pres.module.mjs +5 -5
  7. package/esm2022/components/rules-engine/shared/fallback-to.pipe.mjs +7 -7
  8. package/esm2022/components/rules-engine/shared/json-or-string.pipe.mjs +4 -4
  9. package/esm2022/devkit/rules-engine-devtools.console.service.mjs +4 -4
  10. package/esm2022/devkit/rules-engine-devtools.message.service.mjs +4 -4
  11. package/esm2022/devkit/rules-engine-devtools.module.mjs +5 -5
  12. package/esm2022/devkit/rules-engine-devtools.service.mjs +4 -4
  13. package/esm2022/inner-facts/current-time/current-time-fact.service.mjs +4 -4
  14. package/esm2022/services/runner/rules-engine.runner.module.mjs +5 -5
  15. package/esm2022/services/runner/rules-engine.runner.service.mjs +4 -4
  16. package/esm2022/stores/rulesets/rulesets.effect.mjs +4 -4
  17. package/esm2022/stores/rulesets/rulesets.module.mjs +5 -5
  18. package/esm2022/stores/rulesets/rulesets.selectors.mjs +13 -12
  19. package/fesm2022/o3r-rules-engine.mjs +71 -70
  20. package/fesm2022/o3r-rules-engine.mjs.map +1 -1
  21. package/package.json +5 -5
  22. package/stores/rulesets/rulesets.selectors.d.ts +5 -3
  23. package/stores/rulesets/rulesets.selectors.d.ts.map +1 -1
@@ -21,14 +21,9 @@ export const selectRulesetsStorePendingStatus = createSelector(selectRulesetsSta
21
21
  */
22
22
  const isValidDate = (d) => !isNaN(d) && d instanceof Date;
23
23
  /**
24
- * Returns only the rulesets ids which are not onDemand and in the validity range
25
- * OnDemand takes precedence over validity range.
26
- * Only if the ruleset is NOT onDemand (this means it is taken into consideration for the runs), the validity is checked
24
+ * Returns the rulesets which are in the validity range, if provided
27
25
  */
28
- export const selectActiveRuleSets = createSelector(selectAllRulesets, (ruleSets) => ruleSets.filter((ruleSet) => {
29
- if (ruleSet.linkedComponents?.or?.length || ruleSet.linkedComponent) {
30
- return false;
31
- }
26
+ export const selectRuleSetsInRange = createSelector(selectAllRulesets, (ruleSets) => ruleSets.filter((ruleSet) => {
32
27
  const validity = ruleSet.validityRange;
33
28
  if (!validity || !validity.from && !validity.to) {
34
29
  return true;
@@ -46,14 +41,20 @@ export const selectActiveRuleSets = createSelector(selectAllRulesets, (ruleSets)
46
41
  return from.getTime() <= time;
47
42
  }
48
43
  return to && to.getTime() >= time;
49
- }).map((ruleSet) => ruleSet.id));
44
+ }));
45
+ /**
46
+ * Returns the rulesets ids which are not onDemand and in the validity range
47
+ */
48
+ export const selectActiveRuleSets = createSelector(selectRuleSetsInRange, (ruleSets) => ruleSets
49
+ .filter((ruleSet) => (!(ruleSet.linkedComponents?.or?.length || ruleSet.linkedComponent)))
50
+ .map((ruleSet) => ruleSet.id));
50
51
  /**
51
52
  * Assign rulesetId to a component
53
+ * @deprecated It will be removed in v12 with the selector using it
52
54
  * @param compName
53
55
  * @param library
54
56
  * @param ruleSetId
55
57
  * @param acc
56
- * @deprecated It will be replaced by the selector using it, will be removed in v12.
57
58
  */
58
59
  function linkRulesetToComponent(compName, library, ruleSetId, acc = {}) {
59
60
  const configName = computeItemIdentifier(compName, library);
@@ -76,7 +77,7 @@ function linkComponentToRuleset(compName, library, ruleSetId, acc = {}) {
76
77
  * Select the map of ruleSet to activate based on the component computed name
77
78
  * @deprecated use {@link selectComponentsLinkedToRuleset} instead. It will be removed in v12
78
79
  */
79
- export const selectRuleSetLinkComponents = createSelector(selectAllRulesets, (ruleSets) => ruleSets
80
+ export const selectRuleSetLinkComponents = createSelector(selectRuleSetsInRange, (ruleSets) => ruleSets
80
81
  .reduce((acc, ruleSet) => {
81
82
  if ((!ruleSet.linkedComponents?.or || ruleSet.linkedComponents.or.length === 0) && !ruleSet.linkedComponent) {
82
83
  return acc;
@@ -95,7 +96,7 @@ export const selectRuleSetLinkComponents = createSelector(selectAllRulesets, (ru
95
96
  /**
96
97
  * Select the map of ruleSets to activate based on linked components
97
98
  */
98
- export const selectComponentsLinkedToRuleset = createSelector(selectAllRulesets, (ruleSets) => ruleSets
99
+ export const selectComponentsLinkedToRuleset = createSelector(selectRuleSetsInRange, (ruleSets) => ruleSets
99
100
  .reduce((acc, ruleSet) => {
100
101
  if ((!ruleSet.linkedComponents?.or || ruleSet.linkedComponents.or.length === 0) && !ruleSet.linkedComponent) {
101
102
  return acc;
@@ -111,4 +112,4 @@ export const selectComponentsLinkedToRuleset = createSelector(selectAllRulesets,
111
112
  }
112
113
  return acc;
113
114
  }, { or: {} }));
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZXNldHMuc2VsZWN0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3N0b3Jlcy9ydWxlc2V0cy9ydWxlc2V0cy5zZWxlY3RvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFbEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxtQkFBbUIsRUFBaUIsTUFBTSxrQkFBa0IsQ0FBQztBQUV0RSxNQUFNLEVBQUMsU0FBUyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFDLEdBQUcsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDO0FBRTNGLDRCQUE0QjtBQUM1QixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxxQkFBcUIsQ0FBZ0IsbUJBQW1CLENBQUMsQ0FBQztBQUU3Rix1Q0FBdUM7QUFDdkMsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsY0FBYyxDQUFDLG1CQUFtQixFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBRWhGLG1DQUFtQztBQUNuQyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxjQUFjLENBQUMsbUJBQW1CLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFFaEYsaURBQWlEO0FBQ2pELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLGNBQWMsQ0FBQyxtQkFBbUIsRUFBRSxjQUFjLENBQUMsQ0FBQztBQUUxRixzQ0FBc0M7QUFDdEMsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsY0FBYyxDQUFDLG1CQUFtQixFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBRXBGLHNDQUFzQztBQUN0QyxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxjQUFjLENBQUMsbUJBQW1CLEVBQUUsQ0FB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QU8sQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLElBQUksT0FBTyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDNUcsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBQ0QsSUFBSSxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ3pDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQzdDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM5RSxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUNELElBQUksT0FBTyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzVCLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzVHLENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMsRUFBRSxFQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUMsQ0FBQyxDQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlRmVhdHVyZVNlbGVjdG9yLCBjcmVhdGVTZWxlY3RvciB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IGNvbXB1dGVJdGVtSWRlbnRpZmllciB9IGZyb20gJ0BvM3IvY29yZSc7XG5pbXBvcnQgdHlwZSB7IFJ1bGVzZXQgfSBmcm9tICcuLi8uLi9lbmdpbmUnO1xuaW1wb3J0IHsgcnVsZXNldHNBZGFwdGVyIH0gZnJvbSAnLi9ydWxlc2V0cy5yZWR1Y2VyJztcbmltcG9ydCB7IFJVTEVTRVRTX1NUT1JFX05BTUUsIFJ1bGVzZXRzU3RhdGUgfSBmcm9tICcuL3J1bGVzZXRzLnN0YXRlJztcblxuY29uc3Qge3NlbGVjdElkcywgc2VsZWN0RW50aXRpZXMsIHNlbGVjdEFsbCwgc2VsZWN0VG90YWx9ID0gcnVsZXNldHNBZGFwdGVyLmdldFNlbGVjdG9ycygpO1xuXG4vKiogU2VsZWN0IFJ1bGVzZXRzIFN0YXRlICovXG5leHBvcnQgY29uc3Qgc2VsZWN0UnVsZXNldHNTdGF0ZSA9IGNyZWF0ZUZlYXR1cmVTZWxlY3RvcjxSdWxlc2V0c1N0YXRlPihSVUxFU0VUU19TVE9SRV9OQU1FKTtcblxuLyoqIFNlbGVjdCB0aGUgYXJyYXkgb2YgUnVsZXNldHMgaWRzICovXG5leHBvcnQgY29uc3Qgc2VsZWN0UnVsZXNldHNJZHMgPSBjcmVhdGVTZWxlY3RvcihzZWxlY3RSdWxlc2V0c1N0YXRlLCBzZWxlY3RJZHMpO1xuXG4vKiogU2VsZWN0IHRoZSBhcnJheSBvZiBSdWxlc2V0cyAqL1xuZXhwb3J0IGNvbnN0IHNlbGVjdEFsbFJ1bGVzZXRzID0gY3JlYXRlU2VsZWN0b3Ioc2VsZWN0UnVsZXNldHNTdGF0ZSwgc2VsZWN0QWxsKTtcblxuLyoqIFNlbGVjdCB0aGUgZGljdGlvbmFyeSBvZiBSdWxlc2V0cyBlbnRpdGllcyAqL1xuZXhwb3J0IGNvbnN0IHNlbGVjdFJ1bGVzZXRzRW50aXRpZXMgPSBjcmVhdGVTZWxlY3RvcihzZWxlY3RSdWxlc2V0c1N0YXRlLCBzZWxlY3RFbnRpdGllcyk7XG5cbi8qKiBTZWxlY3QgdGhlIHRvdGFsIFJ1bGVzZXRzIGNvdW50ICovXG5leHBvcnQgY29uc3Qgc2VsZWN0UnVsZXNldHNUb3RhbCA9IGNyZWF0ZVNlbGVjdG9yKHNlbGVjdFJ1bGVzZXRzU3RhdGUsIHNlbGVjdFRvdGFsKTtcblxuLyoqIFNlbGVjdCB0aGUgc3RvcmUgcGVuZGluZyBzdGF0dXMgKi9cbmV4cG9ydCBjb25zdCBzZWxlY3RSdWxlc2V0c1N0b3JlUGVuZGluZ1N0YXR1cyA9IGNyZWF0ZVNlbGVjdG9yKHNlbGVjdFJ1bGVzZXRzU3RhdGUsIChzdGF0ZSkgPT4gc3RhdGUuaXNQZW5kaW5nIHx8IGZhbHNlKTtcblxuLyoqXG4gKiBDaGVjayBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgYSB2YWxpZCBkYXRlXG4gKiBAcGFyYW0gZFxuICovXG5jb25zdCBpc1ZhbGlkRGF0ZSA9IChkOiBhbnkpID0+ICFpc05hTihkKSAmJiBkIGluc3RhbmNlb2YgRGF0ZTtcblxuLyoqXG4gKiBSZXR1cm5zIG9ubHkgdGhlIHJ1bGVzZXRzIGlkcyB3aGljaCBhcmUgbm90IG9uRGVtYW5kIGFuZCBpbiB0aGUgdmFsaWRpdHkgcmFuZ2VcbiAqIE9uRGVtYW5kIHRha2VzIHByZWNlZGVuY2Ugb3ZlciB2YWxpZGl0eSByYW5nZS5cbiAqIE9ubHkgaWYgdGhlIHJ1bGVzZXQgaXMgTk9UIG9uRGVtYW5kICh0aGlzIG1lYW5zIGl0IGlzIHRha2VuIGludG8gY29uc2lkZXJhdGlvbiBmb3IgdGhlIHJ1bnMpLCB0aGUgdmFsaWRpdHkgaXMgY2hlY2tlZFxuICovXG5leHBvcnQgY29uc3Qgc2VsZWN0QWN0aXZlUnVsZVNldHMgPSBjcmVhdGVTZWxlY3RvcihcbiAgc2VsZWN0QWxsUnVsZXNldHMsXG4gIChydWxlU2V0cykgPT4gcnVsZVNldHMuZmlsdGVyKChydWxlU2V0OiBSdWxlc2V0KSA9PiB7XG5cbiAgICBpZiAocnVsZVNldC5saW5rZWRDb21wb25lbnRzPy5vcj8ubGVuZ3RoIHx8IHJ1bGVTZXQubGlua2VkQ29tcG9uZW50KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsaWRpdHkgPSBydWxlU2V0LnZhbGlkaXR5UmFuZ2U7XG4gICAgaWYgKCF2YWxpZGl0eSB8fCAhdmFsaWRpdHkuZnJvbSAmJiAhdmFsaWRpdHkudG8pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGZyb20gPSB2YWxpZGl0eS5mcm9tICYmIG5ldyBEYXRlKHZhbGlkaXR5LmZyb20pO1xuICAgIGNvbnN0IHRvID0gdmFsaWRpdHkudG8gJiYgbmV3IERhdGUodmFsaWRpdHkudG8pO1xuXG4gICAgaWYgKHRvICYmICFpc1ZhbGlkRGF0ZSh0bykgfHwgZnJvbSAmJiAhaXNWYWxpZERhdGUoZnJvbSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgdGltZSA9IERhdGUubm93KCk7XG4gICAgaWYgKHRvICYmIGZyb20pIHtcbiAgICAgIHJldHVybiBmcm9tLmdldFRpbWUoKSA8PSB0aW1lICYmIHRvLmdldFRpbWUoKSA+PSB0aW1lO1xuICAgIH1cblxuICAgIGlmIChmcm9tKSB7XG4gICAgICByZXR1cm4gZnJvbS5nZXRUaW1lKCkgPD0gdGltZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdG8gJiYgdG8uZ2V0VGltZSgpID49IHRpbWU7XG4gIH0pLm1hcCgocnVsZVNldDogUnVsZXNldCkgPT4gcnVsZVNldC5pZCkpO1xuXG4vKipcbiAqIEFzc2lnbiBydWxlc2V0SWQgdG8gYSBjb21wb25lbnRcbiAqIEBwYXJhbSBjb21wTmFtZVxuICogQHBhcmFtIGxpYnJhcnlcbiAqIEBwYXJhbSBydWxlU2V0SWRcbiAqIEBwYXJhbSBhY2NcbiAqIEBkZXByZWNhdGVkIEl0IHdpbGwgYmUgcmVwbGFjZWQgYnkgdGhlIHNlbGVjdG9yIHVzaW5nIGl0LCB3aWxsIGJlIHJlbW92ZWQgaW4gdjEyLlxuICovXG5mdW5jdGlvbiBsaW5rUnVsZXNldFRvQ29tcG9uZW50KGNvbXBOYW1lOiBzdHJpbmcsIGxpYnJhcnk6IHN0cmluZywgcnVsZVNldElkOiBzdHJpbmcsIGFjYzogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+ID0ge30pIHtcbiAgY29uc3QgY29uZmlnTmFtZSA9IGNvbXB1dGVJdGVtSWRlbnRpZmllcihjb21wTmFtZSwgbGlicmFyeSk7XG4gIGFjY1tjb25maWdOYW1lXSB8fD0gW107XG4gIGFjY1tjb25maWdOYW1lXS5wdXNoKHJ1bGVTZXRJZCk7XG59XG5cbi8qKlxuICogQXNzaWduIGNvbXBvbmVudCB0byBSdWxlc2V0SWRzIE1hcFxuICogQHBhcmFtIGNvbXBOYW1lXG4gKiBAcGFyYW0gbGlicmFyeVxuICogQHBhcmFtIHJ1bGVTZXRJZFxuICogQHBhcmFtIGFjY1xuICovXG5mdW5jdGlvbiBsaW5rQ29tcG9uZW50VG9SdWxlc2V0KGNvbXBOYW1lOiBzdHJpbmcsIGxpYnJhcnk6IHN0cmluZywgcnVsZVNldElkOiBzdHJpbmcsIGFjYzogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+ID0ge30pIHtcbiAgY29uc3QgY29uZmlnTmFtZSA9IGNvbXB1dGVJdGVtSWRlbnRpZmllcihjb21wTmFtZSwgbGlicmFyeSk7XG4gIGFjY1tydWxlU2V0SWRdIHx8PSBbXTtcbiAgYWNjW3J1bGVTZXRJZF0ucHVzaChjb25maWdOYW1lKTtcbn1cblxuXG4vKipcbiAqIFNlbGVjdCB0aGUgbWFwIG9mIHJ1bGVTZXQgdG8gYWN0aXZhdGUgYmFzZWQgb24gdGhlIGNvbXBvbmVudCBjb21wdXRlZCBuYW1lXG4gKiBAZGVwcmVjYXRlZCB1c2Uge0BsaW5rIHNlbGVjdENvbXBvbmVudHNMaW5rZWRUb1J1bGVzZXR9IGluc3RlYWQuIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB2MTJcbiAqL1xuZXhwb3J0IGNvbnN0IHNlbGVjdFJ1bGVTZXRMaW5rQ29tcG9uZW50cyA9IGNyZWF0ZVNlbGVjdG9yKFxuICBzZWxlY3RBbGxSdWxlc2V0cyxcbiAgKHJ1bGVTZXRzKSA9PlxuICAgIHJ1bGVTZXRzXG4gICAgICAucmVkdWNlKChhY2M6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiwgcnVsZVNldDogUnVsZXNldCkgPT4ge1xuICAgICAgICBpZiAoKCFydWxlU2V0LmxpbmtlZENvbXBvbmVudHM/Lm9yIHx8IHJ1bGVTZXQubGlua2VkQ29tcG9uZW50cy5vci5sZW5ndGggPT09IDApICYmICFydWxlU2V0LmxpbmtlZENvbXBvbmVudCkge1xuICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJ1bGVTZXQubGlua2VkQ29tcG9uZW50cz8ub3I/Lmxlbmd0aCkge1xuICAgICAgICAgIHJ1bGVTZXQubGlua2VkQ29tcG9uZW50cy5vci5mb3JFYWNoKGxpbmtDb21wID0+IHtcbiAgICAgICAgICAgIGxpbmtSdWxlc2V0VG9Db21wb25lbnQobGlua0NvbXAubmFtZSwgbGlua0NvbXAubGlicmFyeSwgcnVsZVNldC5pZCwgYWNjKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9XG4gICAgICAgIGlmIChydWxlU2V0LmxpbmtlZENvbXBvbmVudCkge1xuICAgICAgICAgIGxpbmtSdWxlc2V0VG9Db21wb25lbnQocnVsZVNldC5saW5rZWRDb21wb25lbnQubmFtZSwgcnVsZVNldC5saW5rZWRDb21wb25lbnQubGlicmFyeSwgcnVsZVNldC5pZCwgYWNjKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSwge30pXG4pO1xuXG4vKipcbiAqIFNlbGVjdCB0aGUgbWFwIG9mIHJ1bGVTZXRzIHRvIGFjdGl2YXRlIGJhc2VkIG9uIGxpbmtlZCBjb21wb25lbnRzXG4gKi9cbmV4cG9ydCBjb25zdCBzZWxlY3RDb21wb25lbnRzTGlua2VkVG9SdWxlc2V0ID0gY3JlYXRlU2VsZWN0b3IoXG4gIHNlbGVjdEFsbFJ1bGVzZXRzLFxuICAocnVsZVNldHMpID0+XG4gICAgcnVsZVNldHNcbiAgICAgIC5yZWR1Y2UoKGFjYzoge29yOiB7W2tleTogc3RyaW5nXTogc3RyaW5nW119fSwgcnVsZVNldDogUnVsZXNldCkgPT4ge1xuICAgICAgICBpZiAoKCFydWxlU2V0LmxpbmtlZENvbXBvbmVudHM/Lm9yIHx8IHJ1bGVTZXQubGlua2VkQ29tcG9uZW50cy5vci5sZW5ndGggPT09IDApICYmICFydWxlU2V0LmxpbmtlZENvbXBvbmVudCkge1xuICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJ1bGVTZXQubGlua2VkQ29tcG9uZW50cz8ub3I/Lmxlbmd0aCkge1xuICAgICAgICAgIHJ1bGVTZXQubGlua2VkQ29tcG9uZW50cy5vci5mb3JFYWNoKGxpbmtDb21wID0+IHtcbiAgICAgICAgICAgIGxpbmtDb21wb25lbnRUb1J1bGVzZXQobGlua0NvbXAubmFtZSwgbGlua0NvbXAubGlicmFyeSwgcnVsZVNldC5pZCwgYWNjLm9yKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9XG4gICAgICAgIGlmIChydWxlU2V0LmxpbmtlZENvbXBvbmVudCkge1xuICAgICAgICAgIGxpbmtDb21wb25lbnRUb1J1bGVzZXQocnVsZVNldC5saW5rZWRDb21wb25lbnQubmFtZSwgcnVsZVNldC5saW5rZWRDb21wb25lbnQubGlicmFyeSwgcnVsZVNldC5pZCwgYWNjLm9yKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSwge29yOiB7fX0pXG4pO1xuXG4iXX0=
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZXNldHMuc2VsZWN0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3N0b3Jlcy9ydWxlc2V0cy9ydWxlc2V0cy5zZWxlY3RvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFbEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxtQkFBbUIsRUFBaUIsTUFBTSxrQkFBa0IsQ0FBQztBQUV0RSxNQUFNLEVBQUMsU0FBUyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFDLEdBQUcsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDO0FBRTNGLDRCQUE0QjtBQUM1QixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxxQkFBcUIsQ0FBZ0IsbUJBQW1CLENBQUMsQ0FBQztBQUU3Rix1Q0FBdUM7QUFDdkMsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsY0FBYyxDQUFDLG1CQUFtQixFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBRWhGLG1DQUFtQztBQUNuQyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxjQUFjLENBQUMsbUJBQW1CLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFFaEYsaURBQWlEO0FBQ2pELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLGNBQWMsQ0FBQyxtQkFBbUIsRUFBRSxjQUFjLENBQUMsQ0FBQztBQUUxRixzQ0FBc0M7QUFDdEMsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsY0FBYyxDQUFDLG1CQUFtQixFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBRXBGLHNDQUFzQztBQUN0QyxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxjQUFjLENBQUMsbUJBQW1CLEVBQUUsQ0FB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QUcsY0FBYyxDQUMzRCxxQkFBcUIsRUFDckIsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUNYLFFBQVE7S0FDTCxNQUFNLENBQUMsQ0FBQyxHQUFvQyxFQUFFLE9BQWdCLEVBQUUsRUFBRTtJQUNqRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzVHLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUNELElBQUksT0FBTyxDQUFDLGdCQUFnQixFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUN6QyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUM3QyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUUsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFDRCxJQUFJLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUM1QixzQkFBc0IsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM1RyxDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUUsRUFBRSxFQUFDLENBQUMsQ0FDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUZlYXR1cmVTZWxlY3RvciwgY3JlYXRlU2VsZWN0b3IgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBjb21wdXRlSXRlbUlkZW50aWZpZXIgfSBmcm9tICdAbzNyL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBSdWxlc2V0IH0gZnJvbSAnLi4vLi4vZW5naW5lJztcbmltcG9ydCB7IHJ1bGVzZXRzQWRhcHRlciB9IGZyb20gJy4vcnVsZXNldHMucmVkdWNlcic7XG5pbXBvcnQgeyBSVUxFU0VUU19TVE9SRV9OQU1FLCBSdWxlc2V0c1N0YXRlIH0gZnJvbSAnLi9ydWxlc2V0cy5zdGF0ZSc7XG5cbmNvbnN0IHtzZWxlY3RJZHMsIHNlbGVjdEVudGl0aWVzLCBzZWxlY3RBbGwsIHNlbGVjdFRvdGFsfSA9IHJ1bGVzZXRzQWRhcHRlci5nZXRTZWxlY3RvcnMoKTtcblxuLyoqIFNlbGVjdCBSdWxlc2V0cyBTdGF0ZSAqL1xuZXhwb3J0IGNvbnN0IHNlbGVjdFJ1bGVzZXRzU3RhdGUgPSBjcmVhdGVGZWF0dXJlU2VsZWN0b3I8UnVsZXNldHNTdGF0ZT4oUlVMRVNFVFNfU1RPUkVfTkFNRSk7XG5cbi8qKiBTZWxlY3QgdGhlIGFycmF5IG9mIFJ1bGVzZXRzIGlkcyAqL1xuZXhwb3J0IGNvbnN0IHNlbGVjdFJ1bGVzZXRzSWRzID0gY3JlYXRlU2VsZWN0b3Ioc2VsZWN0UnVsZXNldHNTdGF0ZSwgc2VsZWN0SWRzKTtcblxuLyoqIFNlbGVjdCB0aGUgYXJyYXkgb2YgUnVsZXNldHMgKi9cbmV4cG9ydCBjb25zdCBzZWxlY3RBbGxSdWxlc2V0cyA9IGNyZWF0ZVNlbGVjdG9yKHNlbGVjdFJ1bGVzZXRzU3RhdGUsIHNlbGVjdEFsbCk7XG5cbi8qKiBTZWxlY3QgdGhlIGRpY3Rpb25hcnkgb2YgUnVsZXNldHMgZW50aXRpZXMgKi9cbmV4cG9ydCBjb25zdCBzZWxlY3RSdWxlc2V0c0VudGl0aWVzID0gY3JlYXRlU2VsZWN0b3Ioc2VsZWN0UnVsZXNldHNTdGF0ZSwgc2VsZWN0RW50aXRpZXMpO1xuXG4vKiogU2VsZWN0IHRoZSB0b3RhbCBSdWxlc2V0cyBjb3VudCAqL1xuZXhwb3J0IGNvbnN0IHNlbGVjdFJ1bGVzZXRzVG90YWwgPSBjcmVhdGVTZWxlY3RvcihzZWxlY3RSdWxlc2V0c1N0YXRlLCBzZWxlY3RUb3RhbCk7XG5cbi8qKiBTZWxlY3QgdGhlIHN0b3JlIHBlbmRpbmcgc3RhdHVzICovXG5leHBvcnQgY29uc3Qgc2VsZWN0UnVsZXNldHNTdG9yZVBlbmRpbmdTdGF0dXMgPSBjcmVhdGVTZWxlY3RvcihzZWxlY3RSdWxlc2V0c1N0YXRlLCAoc3RhdGUpID0+IHN0YXRlLmlzUGVuZGluZyB8fCBmYWxzZSk7XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIGEgdmFsaWQgZGF0ZVxuICogQHBhcmFtIGRcbiAqL1xuY29uc3QgaXNWYWxpZERhdGUgPSAoZDogYW55KSA9PiAhaXNOYU4oZCkgJiYgZCBpbnN0YW5jZW9mIERhdGU7XG5cbi8qKlxuICogUmV0dXJucyB0aGUgcnVsZXNldHMgd2hpY2ggYXJlIGluIHRoZSB2YWxpZGl0eSByYW5nZSwgaWYgcHJvdmlkZWRcbiAqL1xuZXhwb3J0IGNvbnN0IHNlbGVjdFJ1bGVTZXRzSW5SYW5nZSA9IGNyZWF0ZVNlbGVjdG9yKFxuICBzZWxlY3RBbGxSdWxlc2V0cyxcbiAgKHJ1bGVTZXRzKSA9PiBydWxlU2V0cy5maWx0ZXIoKHJ1bGVTZXQ6IFJ1bGVzZXQpID0+IHtcbiAgICBjb25zdCB2YWxpZGl0eSA9IHJ1bGVTZXQudmFsaWRpdHlSYW5nZTtcbiAgICBpZiAoIXZhbGlkaXR5IHx8ICF2YWxpZGl0eS5mcm9tICYmICF2YWxpZGl0eS50bykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgZnJvbSA9IHZhbGlkaXR5LmZyb20gJiYgbmV3IERhdGUodmFsaWRpdHkuZnJvbSk7XG4gICAgY29uc3QgdG8gPSB2YWxpZGl0eS50byAmJiBuZXcgRGF0ZSh2YWxpZGl0eS50byk7XG5cbiAgICBpZiAodG8gJiYgIWlzVmFsaWREYXRlKHRvKSB8fCBmcm9tICYmICFpc1ZhbGlkRGF0ZShmcm9tKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCB0aW1lID0gRGF0ZS5ub3coKTtcbiAgICBpZiAodG8gJiYgZnJvbSkge1xuICAgICAgcmV0dXJuIGZyb20uZ2V0VGltZSgpIDw9IHRpbWUgJiYgdG8uZ2V0VGltZSgpID49IHRpbWU7XG4gICAgfVxuXG4gICAgaWYgKGZyb20pIHtcbiAgICAgIHJldHVybiBmcm9tLmdldFRpbWUoKSA8PSB0aW1lO1xuICAgIH1cbiAgICByZXR1cm4gdG8gJiYgdG8uZ2V0VGltZSgpID49IHRpbWU7XG4gIH0pXG4pO1xuXG4vKipcbiAqIFJldHVybnMgdGhlIHJ1bGVzZXRzIGlkcyB3aGljaCBhcmUgbm90IG9uRGVtYW5kIGFuZCBpbiB0aGUgdmFsaWRpdHkgcmFuZ2VcbiAqL1xuZXhwb3J0IGNvbnN0IHNlbGVjdEFjdGl2ZVJ1bGVTZXRzID0gY3JlYXRlU2VsZWN0b3IoXG4gIHNlbGVjdFJ1bGVTZXRzSW5SYW5nZSxcbiAgKHJ1bGVTZXRzKSA9PiBydWxlU2V0c1xuICAgIC5maWx0ZXIoKHJ1bGVTZXQ6IFJ1bGVzZXQpID0+ICghKHJ1bGVTZXQubGlua2VkQ29tcG9uZW50cz8ub3I/Lmxlbmd0aCB8fCBydWxlU2V0LmxpbmtlZENvbXBvbmVudCkpKVxuICAgIC5tYXAoKHJ1bGVTZXQ6IFJ1bGVzZXQpID0+IHJ1bGVTZXQuaWQpKTtcblxuLyoqXG4gKiBBc3NpZ24gcnVsZXNldElkIHRvIGEgY29tcG9uZW50XG4gKiBAZGVwcmVjYXRlZCBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gdjEyIHdpdGggdGhlIHNlbGVjdG9yIHVzaW5nIGl0XG4gKiBAcGFyYW0gY29tcE5hbWVcbiAqIEBwYXJhbSBsaWJyYXJ5XG4gKiBAcGFyYW0gcnVsZVNldElkXG4gKiBAcGFyYW0gYWNjXG4gKi9cbmZ1bmN0aW9uIGxpbmtSdWxlc2V0VG9Db21wb25lbnQoY29tcE5hbWU6IHN0cmluZywgbGlicmFyeTogc3RyaW5nLCBydWxlU2V0SWQ6IHN0cmluZywgYWNjOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4gPSB7fSkge1xuICBjb25zdCBjb25maWdOYW1lID0gY29tcHV0ZUl0ZW1JZGVudGlmaWVyKGNvbXBOYW1lLCBsaWJyYXJ5KTtcbiAgYWNjW2NvbmZpZ05hbWVdIHx8PSBbXTtcbiAgYWNjW2NvbmZpZ05hbWVdLnB1c2gocnVsZVNldElkKTtcbn1cblxuLyoqXG4gKiBBc3NpZ24gY29tcG9uZW50IHRvIFJ1bGVzZXRJZHMgTWFwXG4gKiBAcGFyYW0gY29tcE5hbWVcbiAqIEBwYXJhbSBsaWJyYXJ5XG4gKiBAcGFyYW0gcnVsZVNldElkXG4gKiBAcGFyYW0gYWNjXG4gKi9cbmZ1bmN0aW9uIGxpbmtDb21wb25lbnRUb1J1bGVzZXQoY29tcE5hbWU6IHN0cmluZywgbGlicmFyeTogc3RyaW5nLCBydWxlU2V0SWQ6IHN0cmluZywgYWNjOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4gPSB7fSkge1xuICBjb25zdCBjb25maWdOYW1lID0gY29tcHV0ZUl0ZW1JZGVudGlmaWVyKGNvbXBOYW1lLCBsaWJyYXJ5KTtcbiAgYWNjW3J1bGVTZXRJZF0gfHw9IFtdO1xuICBhY2NbcnVsZVNldElkXS5wdXNoKGNvbmZpZ05hbWUpO1xufVxuXG5cbi8qKlxuICogU2VsZWN0IHRoZSBtYXAgb2YgcnVsZVNldCB0byBhY3RpdmF0ZSBiYXNlZCBvbiB0aGUgY29tcG9uZW50IGNvbXB1dGVkIG5hbWVcbiAqIEBkZXByZWNhdGVkIHVzZSB7QGxpbmsgc2VsZWN0Q29tcG9uZW50c0xpbmtlZFRvUnVsZXNldH0gaW5zdGVhZC4gSXQgd2lsbCBiZSByZW1vdmVkIGluIHYxMlxuICovXG5leHBvcnQgY29uc3Qgc2VsZWN0UnVsZVNldExpbmtDb21wb25lbnRzID0gY3JlYXRlU2VsZWN0b3IoXG4gIHNlbGVjdFJ1bGVTZXRzSW5SYW5nZSxcbiAgKHJ1bGVTZXRzKSA9PlxuICAgIHJ1bGVTZXRzXG4gICAgICAucmVkdWNlKChhY2M6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiwgcnVsZVNldDogUnVsZXNldCkgPT4ge1xuICAgICAgICBpZiAoKCFydWxlU2V0LmxpbmtlZENvbXBvbmVudHM/Lm9yIHx8IHJ1bGVTZXQubGlua2VkQ29tcG9uZW50cy5vci5sZW5ndGggPT09IDApICYmICFydWxlU2V0LmxpbmtlZENvbXBvbmVudCkge1xuICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJ1bGVTZXQubGlua2VkQ29tcG9uZW50cz8ub3I/Lmxlbmd0aCkge1xuICAgICAgICAgIHJ1bGVTZXQubGlua2VkQ29tcG9uZW50cy5vci5mb3JFYWNoKGxpbmtDb21wID0+IHtcbiAgICAgICAgICAgIGxpbmtSdWxlc2V0VG9Db21wb25lbnQobGlua0NvbXAubmFtZSwgbGlua0NvbXAubGlicmFyeSwgcnVsZVNldC5pZCwgYWNjKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9XG4gICAgICAgIGlmIChydWxlU2V0LmxpbmtlZENvbXBvbmVudCkge1xuICAgICAgICAgIGxpbmtSdWxlc2V0VG9Db21wb25lbnQocnVsZVNldC5saW5rZWRDb21wb25lbnQubmFtZSwgcnVsZVNldC5saW5rZWRDb21wb25lbnQubGlicmFyeSwgcnVsZVNldC5pZCwgYWNjKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSwge30pXG4pO1xuXG4vKipcbiAqIFNlbGVjdCB0aGUgbWFwIG9mIHJ1bGVTZXRzIHRvIGFjdGl2YXRlIGJhc2VkIG9uIGxpbmtlZCBjb21wb25lbnRzXG4gKi9cbmV4cG9ydCBjb25zdCBzZWxlY3RDb21wb25lbnRzTGlua2VkVG9SdWxlc2V0ID0gY3JlYXRlU2VsZWN0b3IoXG4gIHNlbGVjdFJ1bGVTZXRzSW5SYW5nZSxcbiAgKHJ1bGVTZXRzKSA9PlxuICAgIHJ1bGVTZXRzXG4gICAgICAucmVkdWNlKChhY2M6IHtvcjoge1trZXk6IHN0cmluZ106IHN0cmluZ1tdfX0sIHJ1bGVTZXQ6IFJ1bGVzZXQpID0+IHtcbiAgICAgICAgaWYgKCghcnVsZVNldC5saW5rZWRDb21wb25lbnRzPy5vciB8fCBydWxlU2V0LmxpbmtlZENvbXBvbmVudHMub3IubGVuZ3RoID09PSAwKSAmJiAhcnVsZVNldC5saW5rZWRDb21wb25lbnQpIHtcbiAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9XG4gICAgICAgIGlmIChydWxlU2V0LmxpbmtlZENvbXBvbmVudHM/Lm9yPy5sZW5ndGgpIHtcbiAgICAgICAgICBydWxlU2V0LmxpbmtlZENvbXBvbmVudHMub3IuZm9yRWFjaChsaW5rQ29tcCA9PiB7XG4gICAgICAgICAgICBsaW5rQ29tcG9uZW50VG9SdWxlc2V0KGxpbmtDb21wLm5hbWUsIGxpbmtDb21wLmxpYnJhcnksIHJ1bGVTZXQuaWQsIGFjYy5vcik7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfVxuICAgICAgICBpZiAocnVsZVNldC5saW5rZWRDb21wb25lbnQpIHtcbiAgICAgICAgICBsaW5rQ29tcG9uZW50VG9SdWxlc2V0KHJ1bGVTZXQubGlua2VkQ29tcG9uZW50Lm5hbWUsIHJ1bGVTZXQubGlua2VkQ29tcG9uZW50LmxpYnJhcnksIHJ1bGVTZXQuaWQsIGFjYy5vcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sIHtvcjoge319KVxuKTtcbiJdfQ==