@sumaris-net/ngx-components 18.14.5 → 18.14.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -46,29 +46,21 @@ export function RxStateProperty(statePropertyName, projectValueReducer) {
46
46
  return function (target, key) {
47
47
  const finalStatePropertyName = statePropertyName || key;
48
48
  const stateVarName = target instanceof RxState ? null : target[STATE_VAR_NAME_KEY] || DEFAULT_STATE_VAR_NAME;
49
- // Create unique property names to avoid conflicts
50
- const privateValueKey = `__${key}_value`;
51
- const privateInitializedKey = `__${key}_initialized`;
52
49
  // Define property with getter/setter
53
50
  Object.defineProperty(target, key, {
54
51
  get: function () {
55
52
  const stateObject = stateVarName ? this[stateVarName] : this;
56
53
  DecoratorUtils.validateStateProperty(target, stateObject);
57
- if (!this[privateInitializedKey]) {
58
- this[privateValueKey] = stateObject.get(finalStatePropertyName);
59
- this[privateInitializedKey] = true;
60
- }
61
- return this[privateValueKey];
54
+ return stateObject.get(finalStatePropertyName);
62
55
  },
63
56
  set: function (value) {
64
57
  const stateObject = stateVarName ? this[stateVarName] : this;
65
58
  DecoratorUtils.validateStateProperty(target, stateObject);
66
- this[privateValueKey] = value;
67
59
  if (projectValueReducer) {
68
60
  stateObject.set(finalStatePropertyName, (state) => projectValueReducer(state, value));
69
61
  }
70
62
  else {
71
- stateObject.set(finalStatePropertyName, () => value);
63
+ stateObject.set({ [finalStatePropertyName]: value });
72
64
  }
73
65
  },
74
66
  enumerable: true,
@@ -94,25 +86,25 @@ export function RxStateSelect(statePropertyName, opts) {
94
86
  // Determine state object
95
87
  const stateVarName = target instanceof RxState ? null : target[STATE_VAR_NAME_KEY] || opts?.stateName || DEFAULT_STATE_VAR_NAME;
96
88
  // Create cache property name
97
- const cachePropertyName = `__${key}_cache`;
89
+ const internalPropertyName = `__${key}`;
98
90
  // Define property with getter only
99
91
  Object.defineProperty(target, key, {
100
92
  get: function () {
101
93
  const stateObject = stateVarName ? this[stateVarName] : this;
102
94
  DecoratorUtils.validateStateProperty(target, stateObject);
103
- if (!this[cachePropertyName]) {
95
+ if (!this[internalPropertyName]) {
104
96
  if (finalStatePropertyName === '$') {
105
- this[cachePropertyName] = stateObject.$;
97
+ this[internalPropertyName] = stateObject.$;
106
98
  }
107
99
  else if (finalStatePropertyName.includes('.')) {
108
100
  const path = finalStatePropertyName.split('.');
109
- this[cachePropertyName] = stateObject.select(...path);
101
+ this[internalPropertyName] = stateObject.select(...path);
110
102
  }
111
103
  else {
112
- this[cachePropertyName] = stateObject.select(finalStatePropertyName);
104
+ this[internalPropertyName] = stateObject.select(finalStatePropertyName);
113
105
  }
114
106
  }
115
- return this[cachePropertyName];
107
+ return this[internalPropertyName];
116
108
  },
117
109
  enumerable: true,
118
110
  configurable: false,
@@ -157,4 +149,4 @@ export function RxStateComputed(dependencies, computeFn, opts) {
157
149
  }
158
150
  };
159
151
  }
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicngtc3RhdGUuZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL3J4LXN0YXRlL3J4LXN0YXRlLmRlY29yYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUF1QixPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDO0FBQ3ZCLE1BQU0sVUFBVSxxQkFBcUI7SUFDbkMsVUFBVSxHQUFHLElBQUksQ0FBQztBQUNwQixDQUFDO0FBT0QseUJBQXlCO0FBQ3pCLE1BQU0sY0FBYztJQUNsQixNQUFNLENBQUMsVUFBVSxDQUFDLEdBQVc7UUFDM0IsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFjLEVBQUUsV0FBbUI7UUFDekQsT0FBTyxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7SUFDcEQsQ0FBQztJQUVELE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxNQUFjLEVBQUUsV0FBbUI7UUFDM0QsT0FBTyxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7SUFDcEQsQ0FBQztJQUVELE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxNQUFXLEVBQUUsV0FBZ0I7UUFDeEQsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQUMsaURBQWlELE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM5RixDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBRUQsTUFBTSxrQkFBa0IsR0FBRyxhQUFhLENBQUM7QUFDekMsTUFBTSxzQkFBc0IsR0FBRyxRQUFRLENBQUM7QUFFeEM7O0dBRUc7QUFDSCxNQUFNLFVBQVUsZUFBZTtJQUM3QixPQUFPLFVBQVUsTUFBd0IsRUFBRSxHQUFXO1FBQ3BELElBQUksTUFBTSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQztZQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLDZFQUE2RSxNQUFNLENBQUMsa0JBQWtCLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3hJLENBQUM7UUFFRCxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxrQkFBa0IsRUFBRTtZQUNoRCxLQUFLLEVBQUUsR0FBRztZQUNWLFFBQVEsRUFBRSxLQUFLO1lBQ2YsVUFBVSxFQUFFLEtBQUs7WUFDakIsWUFBWSxFQUFFLEtBQUs7U0FDcEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FDN0IsaUJBQThCLEVBQzlCLG1CQUFrRDtJQUVsRCxPQUFPLFVBQWlDLE1BQVcsRUFBRSxHQUFNO1FBQ3pELE1BQU0sc0JBQXNCLEdBQUksaUJBQTRCLElBQUssR0FBYyxDQUFDO1FBQ2hGLE1BQU0sWUFBWSxHQUFHLE1BQU0sWUFBWSxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLElBQUksc0JBQXNCLENBQUM7UUFFN0csa0RBQWtEO1FBQ2xELE1BQU0sZUFBZSxHQUFHLEtBQUssR0FBYSxRQUFRLENBQUM7UUFDbkQsTUFBTSxxQkFBcUIsR0FBRyxLQUFLLEdBQWEsY0FBYyxDQUFDO1FBRS9ELHFDQUFxQztRQUNyQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUU7WUFDakMsR0FBRyxFQUFFO2dCQUNILE1BQU0sV0FBVyxHQUFlLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ3pFLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7Z0JBRTFELElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsRUFBRSxDQUFDO29CQUNqQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxzQkFBaUMsQ0FBQyxDQUFDO29CQUMzRSxJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxJQUFJLENBQUM7Z0JBQ3JDLENBQUM7Z0JBRUQsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFNLENBQUM7WUFDcEMsQ0FBQztZQUNELEdBQUcsRUFBRSxVQUFVLEtBQVE7Z0JBQ3JCLE1BQU0sV0FBVyxHQUFlLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ3pFLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7Z0JBRTFELElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxLQUFLLENBQUM7Z0JBRTlCLElBQUksbUJBQW1CLEVBQUUsQ0FBQztvQkFDeEIsV0FBVyxDQUFDLEdBQUcsQ0FBQyxzQkFBaUMsRUFBRSxDQUFDLEtBQVEsRUFBRSxFQUFFLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQ3RHLENBQUM7cUJBQU0sQ0FBQztvQkFDTixXQUFXLENBQUMsR0FBRyxDQUFDLHNCQUFpQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNsRSxDQUFDO1lBQ0gsQ0FBQztZQUNELFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFlBQVksRUFBRSxJQUFJO1NBQ25CLENBQUMsQ0FBQztRQUVILHNCQUFzQjtRQUN0QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDaEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsTUFBTSxDQUFDLFdBQVcsRUFBRSxJQUFJLElBQUksR0FBYSxhQUFhLHNCQUFzQixFQUFFLENBQUMsQ0FBQztRQUNySCxDQUFDO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FDM0IsaUJBQTBDLEVBQzFDLElBRUM7SUFFRCxPQUFPLFVBQWlDLE1BQVcsRUFBRSxHQUFNO1FBQ3pELG1CQUFtQjtRQUNuQixJQUFJLENBQUMsVUFBVSxJQUFJLENBQUUsR0FBYyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2xELE9BQU8sQ0FBQyxJQUFJLENBQ1Ysd0NBQXdDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsSUFBSSxJQUFJLEdBQWEscURBQXFELENBQ3ZJLENBQUM7UUFDSixDQUFDO1FBRUQsZ0NBQWdDO1FBQ2hDLE1BQU0sc0JBQXNCLEdBQUksaUJBQTRCLElBQUssR0FBYyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFbkcseUJBQXlCO1FBQ3pCLE1BQU0sWUFBWSxHQUFHLE1BQU0sWUFBWSxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLElBQUksSUFBSSxFQUFFLFNBQVMsSUFBSSxzQkFBc0IsQ0FBQztRQUVoSSw2QkFBNkI7UUFDN0IsTUFBTSxpQkFBaUIsR0FBRyxLQUFLLEdBQWEsUUFBUSxDQUFDO1FBRXJELG1DQUFtQztRQUNuQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUU7WUFDakMsR0FBRyxFQUFFO2dCQUNILE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQzdELGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7Z0JBRTFELElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDO29CQUM3QixJQUFJLHNCQUFzQixLQUFLLEdBQUcsRUFBRSxDQUFDO3dCQUNuQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDO29CQUMxQyxDQUFDO3lCQUFNLElBQUksc0JBQXNCLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7d0JBQ2hELE1BQU0sSUFBSSxHQUFHLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQzt3QkFDL0MsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO29CQUN4RCxDQUFDO3lCQUFNLENBQUM7d0JBQ04sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO29CQUN2RSxDQUFDO2dCQUNILENBQUM7Z0JBRUQsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUNqQyxDQUFDO1lBQ0QsVUFBVSxFQUFFLElBQUk7WUFDaEIsWUFBWSxFQUFFLEtBQUs7U0FDcEIsQ0FBQyxDQUFDO1FBRUgsc0JBQXNCO1FBQ3RCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoQixPQUFPLENBQUMsS0FBSyxDQUFDLG1CQUFtQixNQUFNLENBQUMsV0FBVyxFQUFFLElBQUksSUFBSSxHQUFhLHFCQUFxQixzQkFBc0IsSUFBSSxDQUFDLENBQUM7UUFDN0gsQ0FBQztJQUNILENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQzdCLFlBQWlCLEVBQ2pCLFNBQW9DLEVBQ3BDLElBR0M7SUFFRCxPQUFPLFVBQWlDLE1BQVcsRUFBRSxHQUFNO1FBQ3pELG1CQUFtQjtRQUNuQixJQUFJLENBQUMsVUFBVSxJQUFJLENBQUUsR0FBYyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2xELE9BQU8sQ0FBQyxJQUFJLENBQ1YsMENBQTBDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsSUFBSSxJQUFJLEdBQWEscURBQXFELENBQ3pJLENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxZQUFZLEdBQUcsTUFBTSxZQUFZLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsSUFBSSxJQUFJLEVBQUUsU0FBUyxJQUFJLHNCQUFzQixDQUFDO1FBQ2hJLE1BQU0saUJBQWlCLEdBQUcsS0FBSyxHQUFhLFFBQVEsQ0FBQztRQUVyRCxtQ0FBbUM7UUFDbkMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO1lBQ2pDLEdBQUcsRUFBRTtnQkFDSCxNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUM3RCxjQUFjLENBQUMscUJBQXFCLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO2dCQUUxRCxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztvQkFDN0IsSUFBSSxVQUFVLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDO29CQUV2RSxJQUFJLFNBQVMsRUFBRSxDQUFDO3dCQUNkLFVBQVUsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO29CQUMvQyxDQUFDO29CQUVELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLFVBQVUsQ0FBQztnQkFDdkMsQ0FBQztnQkFFRCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQ2pDLENBQUM7WUFDRCxVQUFVLEVBQUUsSUFBSTtZQUNoQixZQUFZLEVBQUUsS0FBSztTQUNwQixDQUFDLENBQUM7UUFFSCxzQkFBc0I7UUFDdEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLE9BQU8sQ0FBQyxLQUFLLENBQ1gscUJBQXFCLE1BQU0sQ0FBQyxXQUFXLEVBQUUsSUFBSSxJQUFJLEdBQWEscUJBQXFCLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBVyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDOUksQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUHJvamVjdFZhbHVlUmVkdWNlciwgUnhTdGF0ZSB9IGZyb20gJ0ByeC1hbmd1bGFyL3N0YXRlJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxubGV0IHByb2R1Y3Rpb24gPSBmYWxzZTtcbmV4cG9ydCBmdW5jdGlvbiBlbmFibGVSeFN0YXRlUHJvZE1vZGUoKSB7XG4gIHByb2R1Y3Rpb24gPSB0cnVlO1xufVxuXG5kZWNsYXJlIHR5cGUgQ29uc3RydWN0b3I8VCA9IGFueT4gPSBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBUO1xuXG50eXBlIE9ic2VydmFibGVQcm9wZXJ0eURlY29yYXRvcjxUPiA9IDxLIGV4dGVuZHMgUHJvcGVydHlLZXk+KHRhcmdldDogYW55LCBwcm9wZXJ0eUtleTogSykgPT4gdm9pZDtcbnR5cGUgU3RhdGVQcm9wZXJ0eURlY29yYXRvcjxUPiA9IDxLIGV4dGVuZHMgUHJvcGVydHlLZXk+KHRhcmdldDogYW55LCBwcm9wZXJ0eUtleTogSykgPT4gdm9pZDtcblxuLy8gVXRpbGl0eSBmb3IgZGVjb3JhdG9yc1xuY2xhc3MgRGVjb3JhdG9yVXRpbHMge1xuICBzdGF0aWMgY2FwaXRhbGl6ZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHN0ci5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHN0ci5zbGljZSgxKTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVNZXRob2ROYW1lKHByZWZpeDogc3RyaW5nLCBwcm9wZXJ0eUtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7cHJlZml4fSR7dGhpcy5jYXBpdGFsaXplKHByb3BlcnR5S2V5KX1gO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVByb3BlcnR5TmFtZShwcmVmaXg6IHN0cmluZywgcHJvcGVydHlLZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3ByZWZpeH0ke3RoaXMuY2FwaXRhbGl6ZShwcm9wZXJ0eUtleSl9YDtcbiAgfVxuXG4gIHN0YXRpYyB2YWxpZGF0ZVN0YXRlUHJvcGVydHkodGFyZ2V0OiBhbnksIHN0YXRlT2JqZWN0OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXByb2R1Y3Rpb24gJiYgIXN0YXRlT2JqZWN0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE1pc3Npbmcgc3RhdGUhIFBsZWFzZSBhZGQgYSBSeFN0YXRlIGluIGNsYXNzOiAke3RhcmdldC5jb25zdHJ1Y3Rvci5uYW1lfWApO1xuICAgIH1cbiAgfVxufVxuXG5jb25zdCBTVEFURV9WQVJfTkFNRV9LRVkgPSAnX19zdGF0ZU5hbWUnO1xuY29uc3QgREVGQVVMVF9TVEFURV9WQVJfTkFNRSA9ICdfc3RhdGUnO1xuXG4vKipcbiAqIERlY29yYXRvciB0byByZWdpc3RlciB0aGUgUnhTdGF0ZSBwcm9wZXJ0eSBpbiBhIGNvbXBvbmVudFxuICovXG5leHBvcnQgZnVuY3Rpb24gUnhTdGF0ZVJlZ2lzdGVyKCk6IFByb3BlcnR5RGVjb3JhdG9yIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IENvbnN0cnVjdG9yPGFueT4sIGtleTogc3RyaW5nKSB7XG4gICAgaWYgKHRhcmdldFtTVEFURV9WQVJfTkFNRV9LRVldKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBkZWZpbmUgbW9yZSB0aGFuIG9uZSBAUnhTdGF0ZVJlZ2lzdGVyKCkgaW4gY2xhc3MgaGllcmFyY2h5LiBGb3VuZDogJHt0YXJnZXRbU1RBVEVfVkFSX05BTUVfS0VZXX0gYW5kICR7a2V5fWApO1xuICAgIH1cblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIFNUQVRFX1ZBUl9OQU1FX0tFWSwge1xuICAgICAgdmFsdWU6IGtleSxcbiAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICB9KTtcbiAgfTtcbn1cblxuLyoqXG4gKiBEZWNvcmF0b3IgZm9yIFJ4U3RhdGUgcHJvcGVydGllcyB3aXRoIGdldHRlci9zZXR0ZXIgYWNjZXNzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBSeFN0YXRlUHJvcGVydHk8VCBleHRlbmRzIG9iamVjdCA9IGFueSwgSyBleHRlbmRzIGtleW9mIFQgPSBhbnksIFYgZXh0ZW5kcyBUW0tdID0gYW55PihcbiAgc3RhdGVQcm9wZXJ0eU5hbWU/OiBzdHJpbmcgfCBLLFxuICBwcm9qZWN0VmFsdWVSZWR1Y2VyPzogUHJvamVjdFZhbHVlUmVkdWNlcjxULCBLLCBWPlxuKTogU3RhdGVQcm9wZXJ0eURlY29yYXRvcjxWPiB7XG4gIHJldHVybiBmdW5jdGlvbiA8UCBleHRlbmRzIFByb3BlcnR5S2V5Pih0YXJnZXQ6IGFueSwga2V5OiBQKSB7XG4gICAgY29uc3QgZmluYWxTdGF0ZVByb3BlcnR5TmFtZSA9IChzdGF0ZVByb3BlcnR5TmFtZSBhcyBzdHJpbmcpIHx8IChrZXkgYXMgc3RyaW5nKTtcbiAgICBjb25zdCBzdGF0ZVZhck5hbWUgPSB0YXJnZXQgaW5zdGFuY2VvZiBSeFN0YXRlID8gbnVsbCA6IHRhcmdldFtTVEFURV9WQVJfTkFNRV9LRVldIHx8IERFRkFVTFRfU1RBVEVfVkFSX05BTUU7XG5cbiAgICAvLyBDcmVhdGUgdW5pcXVlIHByb3BlcnR5IG5hbWVzIHRvIGF2b2lkIGNvbmZsaWN0c1xuICAgIGNvbnN0IHByaXZhdGVWYWx1ZUtleSA9IGBfXyR7a2V5IGFzIHN0cmluZ31fdmFsdWVgO1xuICAgIGNvbnN0IHByaXZhdGVJbml0aWFsaXplZEtleSA9IGBfXyR7a2V5IGFzIHN0cmluZ31faW5pdGlhbGl6ZWRgO1xuXG4gICAgLy8gRGVmaW5lIHByb3BlcnR5IHdpdGggZ2V0dGVyL3NldHRlclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHN0YXRlT2JqZWN0OiBSeFN0YXRlPFQ+ID0gc3RhdGVWYXJOYW1lID8gdGhpc1tzdGF0ZVZhck5hbWVdIDogdGhpcztcbiAgICAgICAgRGVjb3JhdG9yVXRpbHMudmFsaWRhdGVTdGF0ZVByb3BlcnR5KHRhcmdldCwgc3RhdGVPYmplY3QpO1xuXG4gICAgICAgIGlmICghdGhpc1twcml2YXRlSW5pdGlhbGl6ZWRLZXldKSB7XG4gICAgICAgICAgdGhpc1twcml2YXRlVmFsdWVLZXldID0gc3RhdGVPYmplY3QuZ2V0KGZpbmFsU3RhdGVQcm9wZXJ0eU5hbWUgYXMga2V5b2YgVCk7XG4gICAgICAgICAgdGhpc1twcml2YXRlSW5pdGlhbGl6ZWRLZXldID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzW3ByaXZhdGVWYWx1ZUtleV0gYXMgVjtcbiAgICAgIH0sXG4gICAgICBzZXQ6IGZ1bmN0aW9uICh2YWx1ZTogVikge1xuICAgICAgICBjb25zdCBzdGF0ZU9iamVjdDogUnhTdGF0ZTxUPiA9IHN0YXRlVmFyTmFtZSA/IHRoaXNbc3RhdGVWYXJOYW1lXSA6IHRoaXM7XG4gICAgICAgIERlY29yYXRvclV0aWxzLnZhbGlkYXRlU3RhdGVQcm9wZXJ0eSh0YXJnZXQsIHN0YXRlT2JqZWN0KTtcblxuICAgICAgICB0aGlzW3ByaXZhdGVWYWx1ZUtleV0gPSB2YWx1ZTtcblxuICAgICAgICBpZiAocHJvamVjdFZhbHVlUmVkdWNlcikge1xuICAgICAgICAgIHN0YXRlT2JqZWN0LnNldChmaW5hbFN0YXRlUHJvcGVydHlOYW1lIGFzIGtleW9mIFQsIChzdGF0ZTogVCkgPT4gcHJvamVjdFZhbHVlUmVkdWNlcihzdGF0ZSwgdmFsdWUpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdGF0ZU9iamVjdC5zZXQoZmluYWxTdGF0ZVByb3BlcnR5TmFtZSBhcyBrZXlvZiBULCAoKSA9PiB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgLy8gRGV2ZWxvcG1lbnQgbG9nZ2luZ1xuICAgIGlmICghcHJvZHVjdGlvbikge1xuICAgICAgY29uc29sZS5kZWJ1ZyhgW1J4U3RhdGVQcm9wZXJ0eV0gJHt0YXJnZXQuY29uc3RydWN0b3I/Lm5hbWV9LiR7a2V5IGFzIHN0cmluZ30gLT4gc3RhdGUuJHtmaW5hbFN0YXRlUHJvcGVydHlOYW1lfWApO1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBEZWNvcmF0b3IgZm9yIFJ4U3RhdGUgb2JzZXJ2YWJsZSBzZWxlY3RvcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFJ4U3RhdGVTZWxlY3Q8VCA9IGFueSwgUiA9IFRba2V5b2YgVF0+KFxuICBzdGF0ZVByb3BlcnR5TmFtZT86IHN0cmluZyB8IGtleW9mIFQgfCAnJCcsXG4gIG9wdHM/OiB7XG4gICAgc3RhdGVOYW1lPzogc3RyaW5nO1xuICB9XG4pOiBPYnNlcnZhYmxlUHJvcGVydHlEZWNvcmF0b3I8T2JzZXJ2YWJsZTxSPj4ge1xuICByZXR1cm4gZnVuY3Rpb24gPFAgZXh0ZW5kcyBQcm9wZXJ0eUtleT4odGFyZ2V0OiBhbnksIGtleTogUCkge1xuICAgIC8vIENvbnZlbnRpb24gY2hlY2tcbiAgICBpZiAoIXByb2R1Y3Rpb24gJiYgIShrZXkgYXMgc3RyaW5nKS5lbmRzV2l0aCgnJCcpKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBbUnhTdGF0ZVNlbGVjdF0gQ29udmVudGlvbjogUHJvcGVydHkgJHt0YXJnZXQuY29uc3RydWN0b3I/Lm5hbWV9LiR7a2V5IGFzIHN0cmluZ30gc2hvdWxkIGVuZCB3aXRoICckJyB0byBpbmRpY2F0ZSBpdCdzIGFuIE9ic2VydmFibGVgXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIERldGVybWluZSBzdGF0ZSBwcm9wZXJ0eSBuYW1lXG4gICAgY29uc3QgZmluYWxTdGF0ZVByb3BlcnR5TmFtZSA9IChzdGF0ZVByb3BlcnR5TmFtZSBhcyBzdHJpbmcpIHx8IChrZXkgYXMgc3RyaW5nKS5yZXBsYWNlKC9cXCQkLywgJycpO1xuXG4gICAgLy8gRGV0ZXJtaW5lIHN0YXRlIG9iamVjdFxuICAgIGNvbnN0IHN0YXRlVmFyTmFtZSA9IHRhcmdldCBpbnN0YW5jZW9mIFJ4U3RhdGUgPyBudWxsIDogdGFyZ2V0W1NUQVRFX1ZBUl9OQU1FX0tFWV0gfHwgb3B0cz8uc3RhdGVOYW1lIHx8IERFRkFVTFRfU1RBVEVfVkFSX05BTUU7XG5cbiAgICAvLyBDcmVhdGUgY2FjaGUgcHJvcGVydHkgbmFtZVxuICAgIGNvbnN0IGNhY2hlUHJvcGVydHlOYW1lID0gYF9fJHtrZXkgYXMgc3RyaW5nfV9jYWNoZWA7XG5cbiAgICAvLyBEZWZpbmUgcHJvcGVydHkgd2l0aCBnZXR0ZXIgb25seVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHN0YXRlT2JqZWN0ID0gc3RhdGVWYXJOYW1lID8gdGhpc1tzdGF0ZVZhck5hbWVdIDogdGhpcztcbiAgICAgICAgRGVjb3JhdG9yVXRpbHMudmFsaWRhdGVTdGF0ZVByb3BlcnR5KHRhcmdldCwgc3RhdGVPYmplY3QpO1xuXG4gICAgICAgIGlmICghdGhpc1tjYWNoZVByb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICBpZiAoZmluYWxTdGF0ZVByb3BlcnR5TmFtZSA9PT0gJyQnKSB7XG4gICAgICAgICAgICB0aGlzW2NhY2hlUHJvcGVydHlOYW1lXSA9IHN0YXRlT2JqZWN0LiQ7XG4gICAgICAgICAgfSBlbHNlIGlmIChmaW5hbFN0YXRlUHJvcGVydHlOYW1lLmluY2x1ZGVzKCcuJykpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhdGggPSBmaW5hbFN0YXRlUHJvcGVydHlOYW1lLnNwbGl0KCcuJyk7XG4gICAgICAgICAgICB0aGlzW2NhY2hlUHJvcGVydHlOYW1lXSA9IHN0YXRlT2JqZWN0LnNlbGVjdCguLi5wYXRoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpc1tjYWNoZVByb3BlcnR5TmFtZV0gPSBzdGF0ZU9iamVjdC5zZWxlY3QoZmluYWxTdGF0ZVByb3BlcnR5TmFtZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXNbY2FjaGVQcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgIH0pO1xuXG4gICAgLy8gRGV2ZWxvcG1lbnQgbG9nZ2luZ1xuICAgIGlmICghcHJvZHVjdGlvbikge1xuICAgICAgY29uc29sZS5kZWJ1ZyhgW1J4U3RhdGVTZWxlY3RdICR7dGFyZ2V0LmNvbnN0cnVjdG9yPy5uYW1lfS4ke2tleSBhcyBzdHJpbmd9IC0+IHN0YXRlLnNlbGVjdCgnJHtmaW5hbFN0YXRlUHJvcGVydHlOYW1lfScpYCk7XG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIFV0aWxpdHkgZGVjb3JhdG9yIHRvIGNyZWF0ZSBjb21wdXRlZCBvYnNlcnZhYmxlcyBmcm9tIHN0YXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBSeFN0YXRlQ29tcHV0ZWQ8VCA9IGFueSwgSyBleHRlbmRzIGtleW9mIFQgPSBhbnksIFIgPSBhbnk+KFxuICBkZXBlbmRlbmNpZXM6IEtbXSxcbiAgY29tcHV0ZUZuPzogKHNsaWNlOiBQaWNrPFQsIEs+KSA9PiBSLFxuICBvcHRzPzoge1xuICAgIHN0YXRlTmFtZT86IHN0cmluZztcbiAgICBrZXlDb21wYXJlTWFwPzogYW55O1xuICB9XG4pOiBPYnNlcnZhYmxlUHJvcGVydHlEZWNvcmF0b3I8T2JzZXJ2YWJsZTxSPj4ge1xuICByZXR1cm4gZnVuY3Rpb24gPFAgZXh0ZW5kcyBQcm9wZXJ0eUtleT4odGFyZ2V0OiBhbnksIGtleTogUCkge1xuICAgIC8vIENvbnZlbnRpb24gY2hlY2tcbiAgICBpZiAoIXByb2R1Y3Rpb24gJiYgIShrZXkgYXMgc3RyaW5nKS5lbmRzV2l0aCgnJCcpKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBbUnhTdGF0ZUNvbXB1dGVkXSBDb252ZW50aW9uOiBQcm9wZXJ0eSAke3RhcmdldC5jb25zdHJ1Y3Rvcj8ubmFtZX0uJHtrZXkgYXMgc3RyaW5nfSBzaG91bGQgZW5kIHdpdGggJyQnIHRvIGluZGljYXRlIGl0J3MgYW4gT2JzZXJ2YWJsZWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdGVWYXJOYW1lID0gdGFyZ2V0IGluc3RhbmNlb2YgUnhTdGF0ZSA/IG51bGwgOiB0YXJnZXRbU1RBVEVfVkFSX05BTUVfS0VZXSB8fCBvcHRzPy5zdGF0ZU5hbWUgfHwgREVGQVVMVF9TVEFURV9WQVJfTkFNRTtcbiAgICBjb25zdCBjYWNoZVByb3BlcnR5TmFtZSA9IGBfXyR7a2V5IGFzIHN0cmluZ31fY2FjaGVgO1xuXG4gICAgLy8gRGVmaW5lIHByb3BlcnR5IHdpdGggZ2V0dGVyIG9ubHlcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBzdGF0ZU9iamVjdCA9IHN0YXRlVmFyTmFtZSA/IHRoaXNbc3RhdGVWYXJOYW1lXSA6IHRoaXM7XG4gICAgICAgIERlY29yYXRvclV0aWxzLnZhbGlkYXRlU3RhdGVQcm9wZXJ0eSh0YXJnZXQsIHN0YXRlT2JqZWN0KTtcblxuICAgICAgICBpZiAoIXRoaXNbY2FjaGVQcm9wZXJ0eU5hbWVdKSB7XG4gICAgICAgICAgbGV0IG9ic2VydmFibGUgPSBzdGF0ZU9iamVjdC5zZWxlY3QoZGVwZW5kZW5jaWVzLCBvcHRzPy5rZXlDb21wYXJlTWFwKTtcblxuICAgICAgICAgIGlmIChjb21wdXRlRm4pIHtcbiAgICAgICAgICAgIG9ic2VydmFibGUgPSBvYnNlcnZhYmxlLnBpcGUobWFwKGNvbXB1dGVGbikpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXNbY2FjaGVQcm9wZXJ0eU5hbWVdID0gb2JzZXJ2YWJsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzW2NhY2hlUHJvcGVydHlOYW1lXTtcbiAgICAgIH0sXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICB9KTtcblxuICAgIC8vIERldmVsb3BtZW50IGxvZ2dpbmdcbiAgICBpZiAoIXByb2R1Y3Rpb24pIHtcbiAgICAgIGNvbnNvbGUuZGVidWcoXG4gICAgICAgIGBbUnhTdGF0ZUNvbXB1dGVkXSAke3RhcmdldC5jb25zdHJ1Y3Rvcj8ubmFtZX0uJHtrZXkgYXMgc3RyaW5nfSAtPiBzdGF0ZS5zZWxlY3QoWyR7ZGVwZW5kZW5jaWVzLm1hcCgoZCkgPT4gYCcke2QgYXMgc3RyaW5nfSdgKS5qb2luKCcsICcpfV0pYFxuICAgICAgKTtcbiAgICB9XG4gIH07XG59XG4iXX0=
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicngtc3RhdGUuZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL3J4LXN0YXRlL3J4LXN0YXRlLmRlY29yYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUF1QixPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDO0FBRXZCLE1BQU0sVUFBVSxxQkFBcUI7SUFDbkMsVUFBVSxHQUFHLElBQUksQ0FBQztBQUNwQixDQUFDO0FBT0QseUJBQXlCO0FBQ3pCLE1BQU0sY0FBYztJQUNsQixNQUFNLENBQUMsVUFBVSxDQUFDLEdBQVc7UUFDM0IsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFjLEVBQUUsV0FBbUI7UUFDekQsT0FBTyxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7SUFDcEQsQ0FBQztJQUVELE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxNQUFjLEVBQUUsV0FBbUI7UUFDM0QsT0FBTyxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7SUFDcEQsQ0FBQztJQUVELE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxNQUFXLEVBQUUsV0FBZ0I7UUFDeEQsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQUMsaURBQWlELE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENB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IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBQcm9qZWN0VmFsdWVSZWR1Y2VyLCBSeFN0YXRlIH0gZnJvbSAnQHJ4LWFuZ3VsYXIvc3RhdGUnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5sZXQgcHJvZHVjdGlvbiA9IGZhbHNlO1xuXG5leHBvcnQgZnVuY3Rpb24gZW5hYmxlUnhTdGF0ZVByb2RNb2RlKCkge1xuICBwcm9kdWN0aW9uID0gdHJ1ZTtcbn1cblxuZGVjbGFyZSB0eXBlIENvbnN0cnVjdG9yPFQgPSBhbnk+ID0gbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gVDtcblxudHlwZSBPYnNlcnZhYmxlUHJvcGVydHlEZWNvcmF0b3I8VD4gPSA8SyBleHRlbmRzIFByb3BlcnR5S2V5Pih0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IEspID0+IHZvaWQ7XG50eXBlIFN0YXRlUHJvcGVydHlEZWNvcmF0b3I8VD4gPSA8SyBleHRlbmRzIFByb3BlcnR5S2V5Pih0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IEspID0+IHZvaWQ7XG5cbi8vIFV0aWxpdHkgZm9yIGRlY29yYXRvcnNcbmNsYXNzIERlY29yYXRvclV0aWxzIHtcbiAgc3RhdGljIGNhcGl0YWxpemUoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBzdHIuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHIuc2xpY2UoMSk7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlTWV0aG9kTmFtZShwcmVmaXg6IHN0cmluZywgcHJvcGVydHlLZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3ByZWZpeH0ke3RoaXMuY2FwaXRhbGl6ZShwcm9wZXJ0eUtleSl9YDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVQcm9wZXJ0eU5hbWUocHJlZml4OiBzdHJpbmcsIHByb3BlcnR5S2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtwcmVmaXh9JHt0aGlzLmNhcGl0YWxpemUocHJvcGVydHlLZXkpfWA7XG4gIH1cblxuICBzdGF0aWMgdmFsaWRhdGVTdGF0ZVByb3BlcnR5KHRhcmdldDogYW55LCBzdGF0ZU9iamVjdDogYW55KTogdm9pZCB7XG4gICAgaWYgKCFwcm9kdWN0aW9uICYmICFzdGF0ZU9iamVjdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIHN0YXRlISBQbGVhc2UgYWRkIGEgUnhTdGF0ZSBpbiBjbGFzczogJHt0YXJnZXQuY29uc3RydWN0b3IubmFtZX1gKTtcbiAgICB9XG4gIH1cbn1cblxuY29uc3QgU1RBVEVfVkFSX05BTUVfS0VZID0gJ19fc3RhdGVOYW1lJztcbmNvbnN0IERFRkFVTFRfU1RBVEVfVkFSX05BTUUgPSAnX3N0YXRlJztcblxuLyoqXG4gKiBEZWNvcmF0b3IgdG8gcmVnaXN0ZXIgdGhlIFJ4U3RhdGUgcHJvcGVydHkgaW4gYSBjb21wb25lbnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFJ4U3RhdGVSZWdpc3RlcigpOiBQcm9wZXJ0eURlY29yYXRvciB7XG4gIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBDb25zdHJ1Y3Rvcjxhbnk+LCBrZXk6IHN0cmluZykge1xuICAgIGlmICh0YXJnZXRbU1RBVEVfVkFSX05BTUVfS0VZXSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZGVmaW5lIG1vcmUgdGhhbiBvbmUgQFJ4U3RhdGVSZWdpc3RlcigpIGluIGNsYXNzIGhpZXJhcmNoeS4gRm91bmQ6ICR7dGFyZ2V0W1NUQVRFX1ZBUl9OQU1FX0tFWV19IGFuZCAke2tleX1gKTtcbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBTVEFURV9WQVJfTkFNRV9LRVksIHtcbiAgICAgIHZhbHVlOiBrZXksXG4gICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgfSk7XG4gIH07XG59XG5cbi8qKlxuICogRGVjb3JhdG9yIGZvciBSeFN0YXRlIHByb3BlcnRpZXMgd2l0aCBnZXR0ZXIvc2V0dGVyIGFjY2Vzc1xuICovXG5leHBvcnQgZnVuY3Rpb24gUnhTdGF0ZVByb3BlcnR5PFQgZXh0ZW5kcyBvYmplY3QgPSBhbnksIEsgZXh0ZW5kcyBrZXlvZiBUID0gYW55LCBWIGV4dGVuZHMgVFtLXSA9IGFueT4oXG4gIHN0YXRlUHJvcGVydHlOYW1lPzogc3RyaW5nIHwgSyxcbiAgcHJvamVjdFZhbHVlUmVkdWNlcj86IFByb2plY3RWYWx1ZVJlZHVjZXI8VCwgSywgVj5cbik6IFN0YXRlUHJvcGVydHlEZWNvcmF0b3I8Vj4ge1xuICByZXR1cm4gZnVuY3Rpb24gPFAgZXh0ZW5kcyBQcm9wZXJ0eUtleT4odGFyZ2V0OiBhbnksIGtleTogUCkge1xuICAgIGNvbnN0IGZpbmFsU3RhdGVQcm9wZXJ0eU5hbWUgPSAoc3RhdGVQcm9wZXJ0eU5hbWUgYXMgc3RyaW5nKSB8fCAoa2V5IGFzIHN0cmluZyk7XG4gICAgY29uc3Qgc3RhdGVWYXJOYW1lID0gdGFyZ2V0IGluc3RhbmNlb2YgUnhTdGF0ZSA/IG51bGwgOiB0YXJnZXRbU1RBVEVfVkFSX05BTUVfS0VZXSB8fCBERUZBVUxUX1NUQVRFX1ZBUl9OQU1FO1xuXG4gICAgLy8gRGVmaW5lIHByb3BlcnR5IHdpdGggZ2V0dGVyL3NldHRlclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHN0YXRlT2JqZWN0OiBSeFN0YXRlPFQ+ID0gc3RhdGVWYXJOYW1lID8gdGhpc1tzdGF0ZVZhck5hbWVdIDogdGhpcztcbiAgICAgICAgRGVjb3JhdG9yVXRpbHMudmFsaWRhdGVTdGF0ZVByb3BlcnR5KHRhcmdldCwgc3RhdGVPYmplY3QpO1xuICAgICAgICByZXR1cm4gc3RhdGVPYmplY3QuZ2V0KGZpbmFsU3RhdGVQcm9wZXJ0eU5hbWUgYXMga2V5b2YgVCk7XG4gICAgICB9LFxuICAgICAgc2V0OiBmdW5jdGlvbiAodmFsdWU6IFYpIHtcbiAgICAgICAgY29uc3Qgc3RhdGVPYmplY3Q6IFJ4U3RhdGU8VD4gPSBzdGF0ZVZhck5hbWUgPyB0aGlzW3N0YXRlVmFyTmFtZV0gOiB0aGlzO1xuICAgICAgICBEZWNvcmF0b3JVdGlscy52YWxpZGF0ZVN0YXRlUHJvcGVydHkodGFyZ2V0LCBzdGF0ZU9iamVjdCk7XG4gICAgICAgIGlmIChwcm9qZWN0VmFsdWVSZWR1Y2VyKSB7XG4gICAgICAgICAgc3RhdGVPYmplY3Quc2V0KGZpbmFsU3RhdGVQcm9wZXJ0eU5hbWUgYXMga2V5b2YgVCwgKHN0YXRlOiBUKSA9PiBwcm9qZWN0VmFsdWVSZWR1Y2VyKHN0YXRlLCB2YWx1ZSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0YXRlT2JqZWN0LnNldCg8UGFydGlhbDxUPj57IFtmaW5hbFN0YXRlUHJvcGVydHlOYW1lIGFzIGtleW9mIFRdOiB2YWx1ZSB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgfSk7XG5cbiAgICAvLyBEZXZlbG9wbWVudCBsb2dnaW5nXG4gICAgaWYgKCFwcm9kdWN0aW9uKSB7XG4gICAgICBjb25zb2xlLmRlYnVnKGBbUnhTdGF0ZVByb3BlcnR5XSAke3RhcmdldC5jb25zdHJ1Y3Rvcj8ubmFtZX0uJHtrZXkgYXMgc3RyaW5nfSAtPiBzdGF0ZS4ke2ZpbmFsU3RhdGVQcm9wZXJ0eU5hbWV9YCk7XG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIERlY29yYXRvciBmb3IgUnhTdGF0ZSBvYnNlcnZhYmxlIHNlbGVjdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gUnhTdGF0ZVNlbGVjdDxUID0gYW55LCBSID0gVFtrZXlvZiBUXT4oXG4gIHN0YXRlUHJvcGVydHlOYW1lPzogc3RyaW5nIHwga2V5b2YgVCB8ICckJyxcbiAgb3B0cz86IHtcbiAgICBzdGF0ZU5hbWU/OiBzdHJpbmc7XG4gIH1cbik6IE9ic2VydmFibGVQcm9wZXJ0eURlY29yYXRvcjxPYnNlcnZhYmxlPFI+PiB7XG4gIHJldHVybiBmdW5jdGlvbiA8UCBleHRlbmRzIFByb3BlcnR5S2V5Pih0YXJnZXQ6IGFueSwga2V5OiBQKSB7XG4gICAgLy8gQ29udmVudGlvbiBjaGVja1xuICAgIGlmICghcHJvZHVjdGlvbiAmJiAhKGtleSBhcyBzdHJpbmcpLmVuZHNXaXRoKCckJykpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYFtSeFN0YXRlU2VsZWN0XSBDb252ZW50aW9uOiBQcm9wZXJ0eSAke3RhcmdldC5jb25zdHJ1Y3Rvcj8ubmFtZX0uJHtrZXkgYXMgc3RyaW5nfSBzaG91bGQgZW5kIHdpdGggJyQnIHRvIGluZGljYXRlIGl0J3MgYW4gT2JzZXJ2YWJsZWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gRGV0ZXJtaW5lIHN0YXRlIHByb3BlcnR5IG5hbWVcbiAgICBjb25zdCBmaW5hbFN0YXRlUHJvcGVydHlOYW1lID0gKHN0YXRlUHJvcGVydHlOYW1lIGFzIHN0cmluZykgfHwgKGtleSBhcyBzdHJpbmcpLnJlcGxhY2UoL1xcJCQvLCAnJyk7XG5cbiAgICAvLyBEZXRlcm1pbmUgc3RhdGUgb2JqZWN0XG4gICAgY29uc3Qgc3RhdGVWYXJOYW1lID0gdGFyZ2V0IGluc3RhbmNlb2YgUnhTdGF0ZSA/IG51bGwgOiB0YXJnZXRbU1RBVEVfVkFSX05BTUVfS0VZXSB8fCBvcHRzPy5zdGF0ZU5hbWUgfHwgREVGQVVMVF9TVEFURV9WQVJfTkFNRTtcblxuICAgIC8vIENyZWF0ZSBjYWNoZSBwcm9wZXJ0eSBuYW1lXG4gICAgY29uc3QgaW50ZXJuYWxQcm9wZXJ0eU5hbWUgPSBgX18ke2tleSBhcyBzdHJpbmd9YDtcblxuICAgIC8vIERlZmluZSBwcm9wZXJ0eSB3aXRoIGdldHRlciBvbmx5XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3Qgc3RhdGVPYmplY3QgPSBzdGF0ZVZhck5hbWUgPyB0aGlzW3N0YXRlVmFyTmFtZV0gOiB0aGlzO1xuICAgICAgICBEZWNvcmF0b3JVdGlscy52YWxpZGF0ZVN0YXRlUHJvcGVydHkodGFyZ2V0LCBzdGF0ZU9iamVjdCk7XG5cbiAgICAgICAgaWYgKCF0aGlzW2ludGVybmFsUHJvcGVydHlOYW1lXSkge1xuICAgICAgICAgIGlmIChmaW5hbFN0YXRlUHJvcGVydHlOYW1lID09PSAnJCcpIHtcbiAgICAgICAgICAgIHRoaXNbaW50ZXJuYWxQcm9wZXJ0eU5hbWVdID0gc3RhdGVPYmplY3QuJDtcbiAgICAgICAgICB9IGVsc2UgaWYgKGZpbmFsU3RhdGVQcm9wZXJ0eU5hbWUuaW5jbHVkZXMoJy4nKSkge1xuICAgICAgICAgICAgY29uc3QgcGF0aCA9IGZpbmFsU3RhdGVQcm9wZXJ0eU5hbWUuc3BsaXQoJy4nKTtcbiAgICAgICAgICAgIHRoaXNbaW50ZXJuYWxQcm9wZXJ0eU5hbWVdID0gc3RhdGVPYmplY3Quc2VsZWN0KC4uLnBhdGgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzW2ludGVybmFsUHJvcGVydHlOYW1lXSA9IHN0YXRlT2JqZWN0LnNlbGVjdChmaW5hbFN0YXRlUHJvcGVydHlOYW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpc1tpbnRlcm5hbFByb3BlcnR5TmFtZV07XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgfSk7XG5cbiAgICAvLyBEZXZlbG9wbWVudCBsb2dnaW5nXG4gICAgaWYgKCFwcm9kdWN0aW9uKSB7XG4gICAgICBjb25zb2xlLmRlYnVnKGBbUnhTdGF0ZVNlbGVjdF0gJHt0YXJnZXQuY29uc3RydWN0b3I/Lm5hbWV9LiR7a2V5IGFzIHN0cmluZ30gLT4gc3RhdGUuc2VsZWN0KCcke2ZpbmFsU3RhdGVQcm9wZXJ0eU5hbWV9JylgKTtcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogVXRpbGl0eSBkZWNvcmF0b3IgdG8gY3JlYXRlIGNvbXB1dGVkIG9ic2VydmFibGVzIGZyb20gc3RhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFJ4U3RhdGVDb21wdXRlZDxUID0gYW55LCBLIGV4dGVuZHMga2V5b2YgVCA9IGFueSwgUiA9IGFueT4oXG4gIGRlcGVuZGVuY2llczogS1tdLFxuICBjb21wdXRlRm4/OiAoc2xpY2U6IFBpY2s8VCwgSz4pID0+IFIsXG4gIG9wdHM/OiB7XG4gICAgc3RhdGVOYW1lPzogc3RyaW5nO1xuICAgIGtleUNvbXBhcmVNYXA/OiBhbnk7XG4gIH1cbik6IE9ic2VydmFibGVQcm9wZXJ0eURlY29yYXRvcjxPYnNlcnZhYmxlPFI+PiB7XG4gIHJldHVybiBmdW5jdGlvbiA8UCBleHRlbmRzIFByb3BlcnR5S2V5Pih0YXJnZXQ6IGFueSwga2V5OiBQKSB7XG4gICAgLy8gQ29udmVudGlvbiBjaGVja1xuICAgIGlmICghcHJvZHVjdGlvbiAmJiAhKGtleSBhcyBzdHJpbmcpLmVuZHNXaXRoKCckJykpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYFtSeFN0YXRlQ29tcHV0ZWRdIENvbnZlbnRpb246IFByb3BlcnR5ICR7dGFyZ2V0LmNvbnN0cnVjdG9yPy5uYW1lfS4ke2tleSBhcyBzdHJpbmd9IHNob3VsZCBlbmQgd2l0aCAnJCcgdG8gaW5kaWNhdGUgaXQncyBhbiBPYnNlcnZhYmxlYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0ZVZhck5hbWUgPSB0YXJnZXQgaW5zdGFuY2VvZiBSeFN0YXRlID8gbnVsbCA6IHRhcmdldFtTVEFURV9WQVJfTkFNRV9LRVldIHx8IG9wdHM/LnN0YXRlTmFtZSB8fCBERUZBVUxUX1NUQVRFX1ZBUl9OQU1FO1xuICAgIGNvbnN0IGNhY2hlUHJvcGVydHlOYW1lID0gYF9fJHtrZXkgYXMgc3RyaW5nfV9jYWNoZWA7XG5cbiAgICAvLyBEZWZpbmUgcHJvcGVydHkgd2l0aCBnZXR0ZXIgb25seVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHN0YXRlT2JqZWN0ID0gc3RhdGVWYXJOYW1lID8gdGhpc1tzdGF0ZVZhck5hbWVdIDogdGhpcztcbiAgICAgICAgRGVjb3JhdG9yVXRpbHMudmFsaWRhdGVTdGF0ZVByb3BlcnR5KHRhcmdldCwgc3RhdGVPYmplY3QpO1xuXG4gICAgICAgIGlmICghdGhpc1tjYWNoZVByb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICBsZXQgb2JzZXJ2YWJsZSA9IHN0YXRlT2JqZWN0LnNlbGVjdChkZXBlbmRlbmNpZXMsIG9wdHM/LmtleUNvbXBhcmVNYXApO1xuXG4gICAgICAgICAgaWYgKGNvbXB1dGVGbikge1xuICAgICAgICAgICAgb2JzZXJ2YWJsZSA9IG9ic2VydmFibGUucGlwZShtYXAoY29tcHV0ZUZuKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpc1tjYWNoZVByb3BlcnR5TmFtZV0gPSBvYnNlcnZhYmxlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXNbY2FjaGVQcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgIH0pO1xuXG4gICAgLy8gRGV2ZWxvcG1lbnQgbG9nZ2luZ1xuICAgIGlmICghcHJvZHVjdGlvbikge1xuICAgICAgY29uc29sZS5kZWJ1ZyhcbiAgICAgICAgYFtSeFN0YXRlQ29tcHV0ZWRdICR7dGFyZ2V0LmNvbnN0cnVjdG9yPy5uYW1lfS4ke2tleSBhcyBzdHJpbmd9IC0+IHN0YXRlLnNlbGVjdChbJHtkZXBlbmRlbmNpZXMubWFwKChkKSA9PiBgJyR7ZCBhcyBzdHJpbmd9J2ApLmpvaW4oJywgJyl9XSlgXG4gICAgICApO1xuICAgIH1cbiAgfTtcbn1cbiJdfQ==
@@ -91,11 +91,11 @@ export class FeedsComponent {
91
91
  return [];
92
92
  }
93
93
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeedsComponent, deps: [{ token: ENVIRONMENT }, { token: APP_FEED_SERVICE, optional: true }], target: i0.ɵɵFactoryTarget.Component });
94
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FeedsComponent, selector: "app-feeds", inputs: { feeds: "feeds", showHeader: "showHeader", headerTextColor: "headerTextColor" }, providers: [RxState], ngImport: i0, template: "@if (feeds | isNotEmptyArray) {\n <div class=\"feed ion-padding-horizontal ion-no-padding ion-padding-top\">\n\n <!-- feeds -->\n @for (feed of feeds$ | push; track feed.feed_url) {\n\n <!-- top header -->\n @if (showHeader) {\n <ion-item lines=\"none\" color=\"secondary\">\n <ion-icon slot=\"start\" name=\"megaphone\"></ion-icon>\n <ion-label>\n <b>{{ feed.title || ('SOCIAL.FEED.NEWS'|translate) }}</b>\n </ion-label>\n <ion-button slot=\"end\" fill=\"clear\" (click)=\"openFeedHome()\">\n <ion-label translate>SOCIAL.FEED.SHOW_ALL_FEED</ion-label>\n <ion-icon slot=\"end\" name=\"chevron-forward-outline\"></ion-icon>\n </ion-button>\n </ion-item>\n }\n\n\n <!-- items -->\n @for (item of feed.items; track item.id) {\n <ion-card>\n <ion-card-header>\n <ion-card-subtitle style=\"vertical-align: middle\">\n\n <!-- Authors -->\n @for (author of (item.authors || feed.authors); track author) {\n @if (author.name || author.avatar) {\n <ion-chip (click)=\"openUrl(author.url)\" tappable>\n @if (author.avatar) {\n <ion-avatar>\n <ion-img [src]=\"author.avatar\" [alt]=\"author.name\"></ion-img>\n </ion-avatar>\n }\n @if (author.name) {\n <ion-label color=\"medium\">{{ author.name }}</ion-label>\n }\n </ion-chip>\n }\n }\n <ion-note class=\"ion-float-end\">\n <small>{{ item.date_published | dateFromNow }}</small>\n </ion-note>\n </ion-card-subtitle>\n\n <!-- title -->\n <ion-card-title (click)=\"openUrl(item.url || feed.feed_url)\" tappable>{{ item?.title }}</ion-card-title>\n\n <!-- tags -->\n @let tags = item | map: getTags;\n @if (tags | isNotEmptyArray) {\n <div class=\"tags\">\n @for (tag of tags; track tag; let last = $last) {\n <a (click)=\"openTag(feed, tag)\" tappable>\n <ion-text>#{{ tag }}</ion-text>\n </a>@if (!last) {\n &nbsp;\n }\n }\n </div>\n }\n </ion-card-header>\n\n <!-- Feed content -->\n <ion-card-content>\n <ion-text [feed]=\"item.url || feed.feed_url\">\n @if (item.content_html) {\n <p [innerHTML]=\"item.content_html\"></p>\n } @else if (item.content_text) {\n <p [innerText]=\"item.content_text\"></p>\n }\n </ion-text>\n </ion-card-content>\n\n <ion-button (click)=\"openUrl(item.url)\" class=\"ion-float-end\" fill=\"clear\">\n <ion-label>{{ (item.truncated ? 'SOCIAL.FEED.READ_MORE' : 'COMMON.BTN_SHOW') | translate }}</ion-label>\n <ion-icon slot=\"end\" name=\"chevron-forward-outline\"></ion-icon>\n </ion-button>\n </ion-card>\n }\n }\n </div>\n}\n", styles: [".feed ion-item{border-radius:12px 12px 0 0;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}.feed ion-item ion-icon[slot=start]{-webkit-margin-end:8px;margin-inline-end:8px}.feed .tags{display:inline}.feed .tags a{color:var(--ion-color-step-600, #666666)!important}.feed ion-card{--ion-card-background: rgba(var(--ion-background-color-rgb), .6);--ion-card-color: var(--ion-text-color);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);margin:0 0 16px}.feed ion-card ion-card-header ion-card-title{--color: var(--ion-text-color)}.feed ion-card ion-card-header ion-card-subtitle{--color: var(--ion-color-step-50)}.feed ion-card ion-card-header ion-chip{--background: transparent;--border-color: transparent;--border-width: 0}.feed ion-card ion-card-header ion-chip ion-avatar{border:1px solid var(--ion-color-primary)}.feed ion-card ion-card-header ion-chip ion-label{color:var(--color)}.feed ion-button{text-transform:unset;color:var(--ion-color-step-400)}.feed a:hover{color:var(--ion-color-medium)}\n"], dependencies: [{ kind: "component", type: i1.IonAvatar, selector: "ion-avatar" }, { kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i1.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: i1.IonCardHeader, selector: "ion-card-header", inputs: ["color", "mode", "translucent"] }, { kind: "component", type: i1.IonCardSubtitle, selector: "ion-card-subtitle", inputs: ["color", "mode"] }, { kind: "component", type: i1.IonCardTitle, selector: "ion-card-title", inputs: ["color", "mode"] }, { kind: "component", type: i1.IonChip, selector: "ion-chip", inputs: ["color", "disabled", "mode", "outline"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonImg, selector: "ion-img", inputs: ["alt", "src"] }, { kind: "component", type: i1.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { kind: "component", type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i1.IonNote, selector: "ion-note", inputs: ["color", "mode"] }, { kind: "component", type: i1.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "directive", type: i3.FeedDirective, selector: "feed,[feed]", inputs: ["feed"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "pipe", type: i4.RxPush, name: "push" }, { kind: "pipe", type: i5.DateFromNowPipe, name: "dateFromNow" }, { kind: "pipe", type: i6.NotEmptyArrayPipe, name: "isNotEmptyArray" }, { kind: "pipe", type: i7.MapPipe, name: "map" }] });
94
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FeedsComponent, selector: "app-feeds", inputs: { feeds: "feeds", showHeader: "showHeader", headerTextColor: "headerTextColor" }, providers: [RxState], ngImport: i0, template: "@if (feeds | isNotEmptyArray) {\n <!-- top header -->\n @if (showHeader && (feeds$ | push | arrayFirst); as feed) {\n <ion-item lines=\"none\" color=\"secondary\" class=\"feed-header\">\n <ion-icon slot=\"start\" name=\"megaphone\"></ion-icon>\n <ion-label>\n <b>{{ feed.title || ('SOCIAL.FEED.NEWS' | translate) }}</b>\n </ion-label>\n <ion-button slot=\"end\" fill=\"clear\" (click)=\"openFeedHome()\">\n <ion-label translate>SOCIAL.FEED.SHOW_ALL_FEED</ion-label>\n <ion-icon slot=\"end\" name=\"chevron-forward-outline\"></ion-icon>\n </ion-button>\n </ion-item>\n }\n\n <div class=\"feed ion-no-padding\" [class.has-header]=\"showHeader\">\n <!-- feeds -->\n @for (feed of feeds$ | push; track feed.feed_url; let firstFeed = $first; let lastFeed = $last) {\n <!-- items -->\n @for (item of feed.items; track item.id; let firstItem = $first; let lastItem = $last) {\n <ion-card [class.first]=\"firstFeed && firstItem\" [class.last]=\"lastFeed && lastItem\">\n <ion-card-header>\n <ion-card-subtitle style=\"vertical-align: middle\">\n <!-- Authors -->\n @for (author of item.authors || feed.authors; track author) {\n @if (author.name || author.avatar) {\n <ion-chip (click)=\"openUrl(author.url)\" tappable>\n @if (author.avatar) {\n <ion-avatar>\n <ion-img [src]=\"author.avatar\" [alt]=\"author.name\"></ion-img>\n </ion-avatar>\n }\n @if (author.name) {\n <ion-label color=\"medium\">{{ author.name }}</ion-label>\n }\n </ion-chip>\n }\n }\n <ion-note class=\"ion-float-end\">\n <small>{{ item.date_published | dateFromNow }}</small>\n </ion-note>\n </ion-card-subtitle>\n\n <!-- title -->\n <ion-card-title (click)=\"openUrl(item.url || feed.feed_url)\" tappable>{{ item?.title }}</ion-card-title>\n\n <!-- tags -->\n @let tags = item | map: getTags;\n @if (tags | isNotEmptyArray) {\n <div class=\"tags\">\n @for (tag of tags; track tag; let last = $last) {\n <a (click)=\"openTag(feed, tag)\" tappable>\n <ion-text>#{{ tag }}</ion-text>\n </a>\n @if (!last) {\n &nbsp;\n }\n }\n </div>\n }\n </ion-card-header>\n\n <!-- Feed content -->\n <ion-card-content>\n <ion-text [feed]=\"item.url || feed.feed_url\">\n @if (item.content_html) {\n <p [innerHTML]=\"item.content_html\"></p>\n } @else if (item.content_text) {\n <p [innerText]=\"item.content_text\"></p>\n }\n </ion-text>\n </ion-card-content>\n\n <ion-button (click)=\"openUrl(item.url)\" class=\"ion-float-end\" fill=\"clear\">\n <ion-label>{{ (item.truncated ? 'SOCIAL.FEED.READ_MORE' : 'COMMON.BTN_SHOW') | translate }}</ion-label>\n <ion-icon slot=\"end\" name=\"chevron-forward-outline\"></ion-icon>\n </ion-button>\n </ion-card>\n }\n }\n </div>\n}\n", styles: [":host{height:100%;--feed-header-height: 48px}ion-item.feed-header{height:var(--feed-header-height);border-radius:12px 12px 0 0;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}ion-item.feed-header ion-icon[slot=start]{-webkit-margin-end:8px;margin-inline-end:8px}.feed{height:100%;overflow-y:auto}.feed.has-header{height:calc(100% - var(--feed-header-height, 0))}.feed .tags{display:inline}.feed .tags a{color:var(--ion-color-step-600, #666666)!important}.feed ion-card{--ion-card-background: rgba(var(--ion-background-color-rgb), .6);--ion-card-color: var(--ion-text-color);--margin-bottom: 8px;--top-radius: 4px;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);margin:0 0 var(--margin-bottom) 0;border-radius:var(--top-radius) 4px}.feed ion-card.first{--top-radius: 0}.feed ion-card.last{--margin-bottom: 0}.feed ion-card ion-card-header ion-card-title{--color: var(--ion-text-color)}.feed ion-card ion-card-header ion-card-subtitle{--color: var(--ion-color-step-50)}.feed ion-card ion-card-header ion-chip{--background: transparent;--border-color: transparent;--border-width: 0}.feed ion-card ion-card-header ion-chip ion-avatar{border:1px solid var(--ion-color-primary)}.feed ion-card ion-card-header ion-chip ion-label{color:var(--color)}.feed ion-button{text-transform:unset;color:var(--ion-color-step-400)}.feed a:hover{color:var(--ion-color-medium)}\n"], dependencies: [{ kind: "component", type: i1.IonAvatar, selector: "ion-avatar" }, { kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i1.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: i1.IonCardHeader, selector: "ion-card-header", inputs: ["color", "mode", "translucent"] }, { kind: "component", type: i1.IonCardSubtitle, selector: "ion-card-subtitle", inputs: ["color", "mode"] }, { kind: "component", type: i1.IonCardTitle, selector: "ion-card-title", inputs: ["color", "mode"] }, { kind: "component", type: i1.IonChip, selector: "ion-chip", inputs: ["color", "disabled", "mode", "outline"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonImg, selector: "ion-img", inputs: ["alt", "src"] }, { kind: "component", type: i1.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { kind: "component", type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i1.IonNote, selector: "ion-note", inputs: ["color", "mode"] }, { kind: "component", type: i1.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "directive", type: i3.FeedDirective, selector: "feed,[feed]", inputs: ["feed"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "pipe", type: i4.RxPush, name: "push" }, { kind: "pipe", type: i5.DateFromNowPipe, name: "dateFromNow" }, { kind: "pipe", type: i6.NotEmptyArrayPipe, name: "isNotEmptyArray" }, { kind: "pipe", type: i6.ArrayFirstPipe, name: "arrayFirst" }, { kind: "pipe", type: i7.MapPipe, name: "map" }] });
95
95
  }
96
96
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeedsComponent, decorators: [{
97
97
  type: Component,
98
- args: [{ selector: 'app-feeds', providers: [RxState], template: "@if (feeds | isNotEmptyArray) {\n <div class=\"feed ion-padding-horizontal ion-no-padding ion-padding-top\">\n\n <!-- feeds -->\n @for (feed of feeds$ | push; track feed.feed_url) {\n\n <!-- top header -->\n @if (showHeader) {\n <ion-item lines=\"none\" color=\"secondary\">\n <ion-icon slot=\"start\" name=\"megaphone\"></ion-icon>\n <ion-label>\n <b>{{ feed.title || ('SOCIAL.FEED.NEWS'|translate) }}</b>\n </ion-label>\n <ion-button slot=\"end\" fill=\"clear\" (click)=\"openFeedHome()\">\n <ion-label translate>SOCIAL.FEED.SHOW_ALL_FEED</ion-label>\n <ion-icon slot=\"end\" name=\"chevron-forward-outline\"></ion-icon>\n </ion-button>\n </ion-item>\n }\n\n\n <!-- items -->\n @for (item of feed.items; track item.id) {\n <ion-card>\n <ion-card-header>\n <ion-card-subtitle style=\"vertical-align: middle\">\n\n <!-- Authors -->\n @for (author of (item.authors || feed.authors); track author) {\n @if (author.name || author.avatar) {\n <ion-chip (click)=\"openUrl(author.url)\" tappable>\n @if (author.avatar) {\n <ion-avatar>\n <ion-img [src]=\"author.avatar\" [alt]=\"author.name\"></ion-img>\n </ion-avatar>\n }\n @if (author.name) {\n <ion-label color=\"medium\">{{ author.name }}</ion-label>\n }\n </ion-chip>\n }\n }\n <ion-note class=\"ion-float-end\">\n <small>{{ item.date_published | dateFromNow }}</small>\n </ion-note>\n </ion-card-subtitle>\n\n <!-- title -->\n <ion-card-title (click)=\"openUrl(item.url || feed.feed_url)\" tappable>{{ item?.title }}</ion-card-title>\n\n <!-- tags -->\n @let tags = item | map: getTags;\n @if (tags | isNotEmptyArray) {\n <div class=\"tags\">\n @for (tag of tags; track tag; let last = $last) {\n <a (click)=\"openTag(feed, tag)\" tappable>\n <ion-text>#{{ tag }}</ion-text>\n </a>@if (!last) {\n &nbsp;\n }\n }\n </div>\n }\n </ion-card-header>\n\n <!-- Feed content -->\n <ion-card-content>\n <ion-text [feed]=\"item.url || feed.feed_url\">\n @if (item.content_html) {\n <p [innerHTML]=\"item.content_html\"></p>\n } @else if (item.content_text) {\n <p [innerText]=\"item.content_text\"></p>\n }\n </ion-text>\n </ion-card-content>\n\n <ion-button (click)=\"openUrl(item.url)\" class=\"ion-float-end\" fill=\"clear\">\n <ion-label>{{ (item.truncated ? 'SOCIAL.FEED.READ_MORE' : 'COMMON.BTN_SHOW') | translate }}</ion-label>\n <ion-icon slot=\"end\" name=\"chevron-forward-outline\"></ion-icon>\n </ion-button>\n </ion-card>\n }\n }\n </div>\n}\n", styles: [".feed ion-item{border-radius:12px 12px 0 0;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}.feed ion-item ion-icon[slot=start]{-webkit-margin-end:8px;margin-inline-end:8px}.feed .tags{display:inline}.feed .tags a{color:var(--ion-color-step-600, #666666)!important}.feed ion-card{--ion-card-background: rgba(var(--ion-background-color-rgb), .6);--ion-card-color: var(--ion-text-color);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);margin:0 0 16px}.feed ion-card ion-card-header ion-card-title{--color: var(--ion-text-color)}.feed ion-card ion-card-header ion-card-subtitle{--color: var(--ion-color-step-50)}.feed ion-card ion-card-header ion-chip{--background: transparent;--border-color: transparent;--border-width: 0}.feed ion-card ion-card-header ion-chip ion-avatar{border:1px solid var(--ion-color-primary)}.feed ion-card ion-card-header ion-chip ion-label{color:var(--color)}.feed ion-button{text-transform:unset;color:var(--ion-color-step-400)}.feed a:hover{color:var(--ion-color-medium)}\n"] }]
98
+ args: [{ selector: 'app-feeds', providers: [RxState], template: "@if (feeds | isNotEmptyArray) {\n <!-- top header -->\n @if (showHeader && (feeds$ | push | arrayFirst); as feed) {\n <ion-item lines=\"none\" color=\"secondary\" class=\"feed-header\">\n <ion-icon slot=\"start\" name=\"megaphone\"></ion-icon>\n <ion-label>\n <b>{{ feed.title || ('SOCIAL.FEED.NEWS' | translate) }}</b>\n </ion-label>\n <ion-button slot=\"end\" fill=\"clear\" (click)=\"openFeedHome()\">\n <ion-label translate>SOCIAL.FEED.SHOW_ALL_FEED</ion-label>\n <ion-icon slot=\"end\" name=\"chevron-forward-outline\"></ion-icon>\n </ion-button>\n </ion-item>\n }\n\n <div class=\"feed ion-no-padding\" [class.has-header]=\"showHeader\">\n <!-- feeds -->\n @for (feed of feeds$ | push; track feed.feed_url; let firstFeed = $first; let lastFeed = $last) {\n <!-- items -->\n @for (item of feed.items; track item.id; let firstItem = $first; let lastItem = $last) {\n <ion-card [class.first]=\"firstFeed && firstItem\" [class.last]=\"lastFeed && lastItem\">\n <ion-card-header>\n <ion-card-subtitle style=\"vertical-align: middle\">\n <!-- Authors -->\n @for (author of item.authors || feed.authors; track author) {\n @if (author.name || author.avatar) {\n <ion-chip (click)=\"openUrl(author.url)\" tappable>\n @if (author.avatar) {\n <ion-avatar>\n <ion-img [src]=\"author.avatar\" [alt]=\"author.name\"></ion-img>\n </ion-avatar>\n }\n @if (author.name) {\n <ion-label color=\"medium\">{{ author.name }}</ion-label>\n }\n </ion-chip>\n }\n }\n <ion-note class=\"ion-float-end\">\n <small>{{ item.date_published | dateFromNow }}</small>\n </ion-note>\n </ion-card-subtitle>\n\n <!-- title -->\n <ion-card-title (click)=\"openUrl(item.url || feed.feed_url)\" tappable>{{ item?.title }}</ion-card-title>\n\n <!-- tags -->\n @let tags = item | map: getTags;\n @if (tags | isNotEmptyArray) {\n <div class=\"tags\">\n @for (tag of tags; track tag; let last = $last) {\n <a (click)=\"openTag(feed, tag)\" tappable>\n <ion-text>#{{ tag }}</ion-text>\n </a>\n @if (!last) {\n &nbsp;\n }\n }\n </div>\n }\n </ion-card-header>\n\n <!-- Feed content -->\n <ion-card-content>\n <ion-text [feed]=\"item.url || feed.feed_url\">\n @if (item.content_html) {\n <p [innerHTML]=\"item.content_html\"></p>\n } @else if (item.content_text) {\n <p [innerText]=\"item.content_text\"></p>\n }\n </ion-text>\n </ion-card-content>\n\n <ion-button (click)=\"openUrl(item.url)\" class=\"ion-float-end\" fill=\"clear\">\n <ion-label>{{ (item.truncated ? 'SOCIAL.FEED.READ_MORE' : 'COMMON.BTN_SHOW') | translate }}</ion-label>\n <ion-icon slot=\"end\" name=\"chevron-forward-outline\"></ion-icon>\n </ion-button>\n </ion-card>\n }\n }\n </div>\n}\n", styles: [":host{height:100%;--feed-header-height: 48px}ion-item.feed-header{height:var(--feed-header-height);border-radius:12px 12px 0 0;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}ion-item.feed-header ion-icon[slot=start]{-webkit-margin-end:8px;margin-inline-end:8px}.feed{height:100%;overflow-y:auto}.feed.has-header{height:calc(100% - var(--feed-header-height, 0))}.feed .tags{display:inline}.feed .tags a{color:var(--ion-color-step-600, #666666)!important}.feed ion-card{--ion-card-background: rgba(var(--ion-background-color-rgb), .6);--ion-card-color: var(--ion-text-color);--margin-bottom: 8px;--top-radius: 4px;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);margin:0 0 var(--margin-bottom) 0;border-radius:var(--top-radius) 4px}.feed ion-card.first{--top-radius: 0}.feed ion-card.last{--margin-bottom: 0}.feed ion-card ion-card-header ion-card-title{--color: var(--ion-text-color)}.feed ion-card ion-card-header ion-card-subtitle{--color: var(--ion-color-step-50)}.feed ion-card ion-card-header ion-chip{--background: transparent;--border-color: transparent;--border-width: 0}.feed ion-card ion-card-header ion-chip ion-avatar{border:1px solid var(--ion-color-primary)}.feed ion-card ion-card-header ion-chip ion-label{color:var(--color)}.feed ion-button{text-transform:unset;color:var(--ion-color-step-400)}.feed a:hover{color:var(--ion-color-medium)}\n"] }]
99
99
  }], ctorParameters: () => [{ type: i8.Environment, decorators: [{
100
100
  type: Inject,
101
101
  args: [ENVIRONMENT]
@@ -111,4 +111,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
111
111
  }], headerTextColor: [{
112
112
  type: Input
113
113
  }] } });
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NvY2lhbC9mZWVkL2ZlZWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zb2NpYWwvZmVlZC9mZWVkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RSxPQUFPLEVBQVksYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2RSxPQUFPLEVBQWUsV0FBVyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFFbkYsT0FBTyxFQUFFLGdCQUFnQixFQUFnQixNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7O0FBZWhFLE1BQU0sT0FBTyxjQUFjO0lBMEJRO0lBQ2M7SUExQnJDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDZixNQUFNLEdBQUcsSUFBSSxPQUFPLEVBQWdCLENBQUM7SUFDckMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3JDLFFBQVEs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QTRCakIsTUFBTTsyQkFBQyxXQUFXOzswQkFDbEIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxnQkFBZ0I7eUNBaEJ6QixLQUFLO3NCQUFqQixLQUFLO2dCQVdHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBpbmplY3QsIElucHV0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUnhTdGF0ZSB9IGZyb20gJ0ByeC1hbmd1bGFyL3N0YXRlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBhcnJheURpc3RpbmN0LCBpc05vdEVtcHR5QXJyYXkgfSBmcm9tICcuLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcbmltcG9ydCB7IEpzb25GZWVkLCBKc29uRmVlZFV0aWxzIH0gZnJvbSAnLi9mZWVkLm1vZGVsJztcbmltcG9ydCB7IERpc2NvdXJzZVV0aWxzIH0gZnJvbSAnLi9kaXNjb3Vyc2UvZGlzY291cnNlLnV0aWxzJztcbmltcG9ydCB7IG1hcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUGxhdGZvcm1TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9wbGF0Zm9ybS5zZXJ2aWNlJztcbmltcG9ydCB7IEVudmlyb25tZW50LCBFTlZJUk9OTUVOVCB9IGZyb20gJy4uLy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudC5jbGFzcyc7XG5pbXBvcnQgeyBBcHBDb2xvcnMgfSBmcm9tICcuLi8uLi9zaGFyZWQvdHlwZXMnO1xuaW1wb3J0IHsgQVBQX0ZFRURfU0VSVklDRSwgSUZlZWRTZXJ2aWNlIH0gZnJvbSAnLi9mZWVkLnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZlZWRTdGF0ZTxUPiB7XG4gIG1heEFnZUluTW9udGhzOiBudW1iZXI7XG4gIG1heENvbnRlbnRMZW5ndGg6IG51bWJlcjtcbiAgZmVlZHM6IFRbXTtcbiAgaGFzRmVlZHM6IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1mZWVkcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9mZWVkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmVlZC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtSeFN0YXRlXSxcbn0pXG5leHBvcnQgY2xhc3MgRmVlZHNDb21wb25lbnQ8VCBleHRlbmRzIEpzb25GZWVkID0gSnNvbkZlZWQ+IHtcbiAgcHJvdGVjdGVkIF9kZWJ1ZyA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgX3N0YXRlID0gbmV3IFJ4U3RhdGU8RmVlZFN0YXRlPFQ+PigpO1xuICBwcm90ZWN0ZWQgdHJhbnNsYXRlID0gaW5qZWN0KFRyYW5zbGF0ZVNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgcGxhdGZvcm0gPSBpbmplY3QoUGxhdGZvcm1TZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwcm90ZWN0ZWQgdmVyc2lvbjogc3RyaW5nO1xuXG4gIGZlZWRzJCA9IHRoaXMuX3N0YXRlLnNlbGVjdCgnZmVlZHMnKTtcbiAgaGFzRmVlZHMkID0gdGhpcy5fc3RhdGUuc2VsZWN0KCdoYXNGZWVkcycpO1xuXG4gIEBJbnB1dCgpIHNldCBmZWVkcyh2YWx1ZTogVFtdKSB7XG4gICAgdGhpcy5fc3RhdGUuc2V0KCdmZWVkcycsICgpID0+IHZhbHVlKTtcbiAgfVxuICBnZXQgZmVlZHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlLmdldCgnZmVlZHMnKTtcbiAgfVxuXG4gIGdldCBoYXNGZWVkcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGUuZ2V0KCdoYXNGZWVkcycpO1xuICB9XG5cbiAgQElucHV0KCkgc2hvd0hlYWRlciA9IHRydWU7XG4gIEBJbnB1dCgpIGhlYWRlclRleHRDb2xvcjogQXBwQ29sb3JzID0gJ2xpZ2h0JztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KEVOVklST05NRU5UKSBwcm90ZWN0ZWQgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50LFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQVBQX0ZFRURfU0VSVklDRSkgcHVibGljIGZlZWRTZXJ2aWNlOiBJRmVlZFNlcnZpY2U8VD5cbiAgKSB7XG4gICAgdGhpcy5fc3RhdGUuY29ubmVjdCgnaGFzRmVlZHMnLCB0aGlzLmZlZWRzJC5waXBlKG1hcChpc05vdEVtcHR5QXJyYXkpKSk7XG5cbiAgICBpZiAodGhpcy5mZWVkU2VydmljZSkge1xuICAgICAgdGhpcy5fc3RhdGUuY29ubmVjdChcbiAgICAgICAgJ2ZlZWRzJyxcbiAgICAgICAgdGhpcy5fc3RhdGUuc2VsZWN0KFsnbWF4QWdlSW5Nb250aHMnLCAnbWF4Q29udGVudExlbmd0aCddKS5waXBlKFxuICAgICAgICAgIHN3aXRjaE1hcCgoeyBtYXhBZ2VJbk1vbnRocywgbWF4Q29udGVudExlbmd0aCB9KSA9PlxuICAgICAgICAgICAgdGhpcy5mZWVkU2VydmljZS53YXRjaEFsbCh7XG4gICAgICAgICAgICAgIG1heEFnZUluTW9udGhzLFxuICAgICAgICAgICAgICBtYXhDb250ZW50TGVuZ3RoLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApLFxuICAgICAgICAgIG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gSW5pdGlhbCBzdGF0ZVxuICAgIHRoaXMuX3N0YXRlLnNldCh7XG4gICAgICBtYXhBZ2VJbk1vbnRoczogdGhpcy5lbnZpcm9ubWVudC5mZWVkPy5tYXhBZ2VJbk1vbnRocyA/PyAtMSAvKiBhbGwgKi8sXG4gICAgICBtYXhDb250ZW50TGVuZ3RoOiB0aGlzLmVudmlyb25tZW50LmZlZWQ/Lm1heENvbnRlbnRMZW5ndGggPz8gLTEgLyogbm8gbWF4ICovLFxuICAgIH0pO1xuXG4gICAgLy8gREVCVUdcbiAgICB0aGlzLl9kZWJ1ZyA9ICFlbnZpcm9ubWVudC5wcm9kdWN0aW9uO1xuICB9XG5cbiAgb3BlbkZlZWRIb21lKGZlZWQ/OiBUKSB7XG4gICAgaWYgKCFmZWVkKSB7XG4gICAgICB0aGlzLmZlZWRzPy5mb3JFYWNoKChmKSA9PiB0aGlzLm9wZW5GZWVkSG9tZShmKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdXJsID0gZmVlZC5ob21lX3BhZ2VfdXJsID8/IERpc2NvdXJzZVV0aWxzLnJlbW92ZUpzb25FeHRlbnNpb24oZmVlZC5mZWVkX3VybCkgPz8gdGhpcy5mZWVkU2VydmljZS5nZXRIb21lVXJsKCk7XG4gICAgaWYgKCF1cmwpIHJldHVybjtcbiAgICByZXR1cm4gdGhpcy5wbGF0Zm9ybS5vcGVuKHVybCk7XG4gIH1cblxuICBvcGVuVXJsKHVybDogc3RyaW5nKSB7XG4gICAgaWYgKCF1cmwpIHJldHVybjtcbiAgICBjb25zdCBmaXhlZFVybCA9IERpc2NvdXJzZVV0aWxzLnJlbW92ZUpzb25FeHRlbnNpb24odXJsKTtcbiAgICByZXR1cm4gdGhpcy5wbGF0Zm9ybS5vcGVuKGZpeGVkVXJsKTtcbiAgfVxuXG4gIG9wZW5UYWcoZmVlZDogVCwgdGFnOiBzdHJpbmcpIHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmZlZWRTZXJ2aWNlLmdldFRhZ1VybChmZWVkLCB0YWcpO1xuICAgIHJldHVybiB0aGlzLm9wZW5VcmwodXJsKTtcbiAgfVxuXG4gIGdldFRhZ3MoZmVlZE9ySXRlbT86IFQgfCBUWydpdGVtcyddWzBdKSB7XG4gICAgaWYgKEpzb25GZWVkVXRpbHMuaXNKc29uRmVlZChmZWVkT3JJdGVtKSkge1xuICAgICAgcmV0dXJuIGFycmF5RGlzdGluY3QoXG4gICAgICAgIChmZWVkT3JJdGVtLml0ZW1zIHx8IFtdKVxuICAgICAgICAgIC5tYXAoKGl0ZW0pID0+IGl0ZW0udGFncylcbiAgICAgICAgICAuZmlsdGVyKGlzTm90RW1wdHlBcnJheSlcbiAgICAgICAgICAuZmxhdCgpXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoSnNvbkZlZWRVdGlscy5pc0pzb25GZWVkSXRlbShmZWVkT3JJdGVtKSkge1xuICAgICAgcmV0dXJuIGFycmF5RGlzdGluY3QoKGZlZWRPckl0ZW0udGFncyB8fCBbXSkuZmxhdCgpKTtcbiAgICB9XG4gICAgcmV0dXJuIFtdO1xuICB9XG59XG4iLCJAaWYgKGZlZWRzIHwgaXNOb3RFbXB0eUFycmF5KSB7XG4gIDxkaXYgY2xhc3M9XCJmZWVkIGlvbi1wYWRkaW5nLWhvcml6b250YWwgaW9uLW5vLXBhZGRpbmcgaW9uLXBhZGRpbmctdG9wXCI+XG5cbiAgICA8IS0tIGZlZWRzIC0tPlxuICAgIEBmb3IgKGZlZWQgb2YgZmVlZHMkIHwgcHVzaDsgdHJhY2sgZmVlZC5mZWVkX3VybCkge1xuXG4gICAgICA8IS0tIHRvcCBoZWFkZXIgLS0+XG4gICAgICBAaWYgKHNob3dIZWFkZXIpIHtcbiAgICAgICAgPGlvbi1pdGVtIGxpbmVzPVwibm9uZVwiIGNvbG9yPVwic2Vjb25kYXJ5XCI+XG4gICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJzdGFydFwiIG5hbWU9XCJtZWdhcGhvbmVcIj48L2lvbi1pY29uPlxuICAgICAgICAgIDxpb24tbGFiZWw+XG4gICAgICAgICAgICA8Yj57eyBmZWVkLnRpdGxlIHx8ICgnU09DSUFMLkZFRUQuTkVXUyd8dHJhbnNsYXRlKSB9fTwvYj5cbiAgICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgICAgICA8aW9uLWJ1dHRvbiBzbG90PVwiZW5kXCIgZmlsbD1cImNsZWFyXCIgKGNsaWNrKT1cIm9wZW5GZWVkSG9tZSgpXCI+XG4gICAgICAgICAgICA8aW9uLWxhYmVsIHRyYW5zbGF0ZT5TT0NJQUwuRkVFRC5TSE9XX0FMTF9GRUVEPC9pb24tbGFiZWw+XG4gICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImVuZFwiIG5hbWU9XCJjaGV2cm9uLWZvcndhcmQtb3V0bGluZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICA8L2lvbi1pdGVtPlxuICAgICAgfVxuXG5cbiAgICAgIDwhLS0gaXRlbXMgLS0+XG4gICAgICBAZm9yIChpdGVtIG9mIGZlZWQuaXRlbXM7IHRyYWNrIGl0ZW0uaWQpIHtcbiAgICAgICAgPGlvbi1jYXJkPlxuICAgICAgICAgIDxpb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICA8aW9uLWNhcmQtc3VidGl0bGUgc3R5bGU9XCJ2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlXCI+XG5cbiAgICAgICAgICAgICAgPCEtLSBBdXRob3JzIC0tPlxuICAgICAgICAgICAgICBAZm9yIChhdXRob3Igb2YgKGl0ZW0uYXV0aG9ycyB8fCBmZWVkLmF1dGhvcnMpOyB0cmFjayBhdXRob3IpIHtcbiAgICAgICAgICAgICAgICBAaWYgKGF1dGhvci5uYW1lIHx8IGF1dGhvci5hdmF0YXIpIHtcbiAgICAgICAgICAgICAgICAgIDxpb24tY2hpcCAoY2xpY2spPVwib3BlblVybChhdXRob3IudXJsKVwiIHRhcHBhYmxlPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGF1dGhvci5hdmF0YXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8aW9uLWF2YXRhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24taW1nIFtzcmNdPVwiYXV0aG9yLmF2YXRhclwiIFthbHRdPVwiYXV0aG9yLm5hbWVcIj48L2lvbi1pbWc+XG4gICAgICAgICAgICAgICAgICAgICAgPC9pb24tYXZhdGFyPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoYXV0aG9yLm5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8aW9uLWxhYmVsIGNvbG9yPVwibWVkaXVtXCI+e3sgYXV0aG9yLm5hbWUgfX08L2lvbi1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9pb24tY2hpcD5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPGlvbi1ub3RlIGNsYXNzPVwiaW9uLWZsb2F0LWVuZFwiPlxuICAgICAgICAgICAgICAgIDxzbWFsbD57eyBpdGVtLmRhdGVfcHVibGlzaGVkIHwgZGF0ZUZyb21Ob3cgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8L2lvbi1ub3RlPlxuICAgICAgICAgICAgPC9pb24tY2FyZC1zdWJ0aXRsZT5cblxuICAgICAgICAgICAgPCEtLSB0aXRsZSAtLT5cbiAgICAgICAgICAgIDxpb24tY2FyZC10aXRsZSAoY2xpY2spPVwib3BlblVybChpdGVtLnVybCB8fCBmZWVkLmZlZWRfdXJsKVwiIHRhcHBhYmxlPnt7IGl0ZW0/LnRpdGxlIH19PC9pb24tY2FyZC10aXRsZT5cblxuICAgICAgICAgICAgPCEtLSB0YWdzIC0tPlxuICAgICAgICAgICAgQGxldCB0YWdzID0gaXRlbSB8IG1hcDogZ2V0VGFncztcbiAgICAgICAgICAgIEBpZiAodGFncyB8IGlzTm90RW1wdHlBcnJheSkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFnc1wiPlxuICAgICAgICAgICAgICAgIEBmb3IgKHRhZyBvZiB0YWdzOyB0cmFjayB0YWc7IGxldCBsYXN0ID0gJGxhc3QpIHtcbiAgICAgICAgICAgICAgICAgIDxhIChjbGljayk9XCJvcGVuVGFnKGZlZWQsIHRhZylcIiB0YXBwYWJsZT5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi10ZXh0PiN7eyB0YWcgfX08L2lvbi10ZXh0PlxuICAgICAgICAgICAgICAgICAgPC9hPkBpZiAoIWxhc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2lvbi1jYXJkLWhlYWRlcj5cblxuICAgICAgICAgIDwhLS0gRmVlZCBjb250ZW50IC0tPlxuICAgICAgICAgIDxpb24tY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgPGlvbi10ZXh0IFtmZWVkXT1cIml0ZW0udXJsIHx8IGZlZWQuZmVlZF91cmxcIj5cbiAgICAgICAgICAgICAgQGlmIChpdGVtLmNvbnRlbnRfaHRtbCkge1xuICAgICAgICAgICAgICAgIDxwIFtpbm5lckhUTUxdPVwiaXRlbS5jb250ZW50X2h0bWxcIj48L3A+XG4gICAgICAgICAgICAgIH0gQGVsc2UgaWYgKGl0ZW0uY29udGVudF90ZXh0KSB7XG4gICAgICAgICAgICAgICAgPHAgW2lubmVyVGV4dF09XCJpdGVtLmNvbnRlbnRfdGV4dFwiPjwvcD5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9pb24tdGV4dD5cbiAgICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG5cbiAgICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwib3BlblVybChpdGVtLnVybClcIiBjbGFzcz1cImlvbi1mbG9hdC1lbmRcIiBmaWxsPVwiY2xlYXJcIj5cbiAgICAgICAgICAgIDxpb24tbGFiZWw+e3sgKGl0ZW0udHJ1bmNhdGVkID8gJ1NPQ0lBTC5GRUVELlJFQURfTU9SRScgOiAnQ09NTU9OLkJUTl9TSE9XJykgfCB0cmFuc2xhdGUgfX08L2lvbi1sYWJlbD5cbiAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwiZW5kXCIgbmFtZT1cImNoZXZyb24tZm9yd2FyZC1vdXRsaW5lXCI+PC9pb24taWNvbj5cbiAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgIDwvaW9uLWNhcmQ+XG4gICAgICB9XG4gICAgfVxuICA8L2Rpdj5cbn1cbiJdfQ==
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NvY2lhbC9mZWVkL2ZlZWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zb2NpYWwvZmVlZC9mZWVkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RSxPQUFPLEVBQVksYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2RSxPQUFPLEVBQWUsV0FBVyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFFbkYsT0FBTyxFQUFFLGdCQUFnQixFQUFnQixNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7O0FBZWhFLE1BQU0sT0FBTyxjQUFjO0lBMEJRO0lBQ2M7SUExQnJDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDZixNQUFNLEdBQUcsSUFBSSxPQUFPLEVBQWdCLENBQUM7SUFDckMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDbkMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4QixPQUFPLENBQVM7SUFFMUIsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JDLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUUzQyxJQUFhLEtBQUssQ0FBQyxLQUFVO1FBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBQ0QsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRVEsVUFBVSxHQUFHLElBQUksQ0FBQztJQUNsQixlQUFlLEdBQWMsT0FBTyxDQUFDO0lBRTlDLFlBQ2lDLFdBQXdCLEVBQ1YsV0FBNEI7UUFEMUMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDVixnQkFBVyxHQUFYLFdBQVcsQ0FBaUI7UUFFekUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFeEUsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQ2pCLE9BQU8sRUFDUCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLGdCQUFnQixFQUFFLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQzdELFNBQVMsQ0FBQyxDQUFDLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLEVBQUUsRUFBRSxDQUNqRCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQztnQkFDeEIsY0FBYztnQkFDZCxnQkFBZ0I7YUFDakIsQ0FBQyxDQUNILEVBQ0QsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQ3hCLENBQ0YsQ0FBQztRQUNKLENBQUM7UUFFRCxnQkFBZ0I7UUFDaEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7WUFDZCxjQUFjLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsY0FBYyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDckUsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLElBQUksQ0FBQyxDQUFDLENBQUMsWUFBWTtTQUM3RSxDQUFDLENBQUM7UUFFSCxRQUFRO1FBQ1IsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUM7SUFDeEMsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFRO1FBQ25CLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNWLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakQsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxJQUFJLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNySCxJQUFJLENBQUMsR0FBRztZQUFFLE9BQU87UUFDakIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsT0FBTyxDQUFDLEdBQVc7UUFDakIsSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPO1FBQ2pCLE1BQU0sUUFBUSxHQUFHLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6RCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxPQUFPLENBQUMsSUFBTyxFQUFFLEdBQVc7UUFDMUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2xELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsT0FBTyxDQUFDLFVBQThCO1FBQ3BDLElBQUksYUFBYSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3pDLE9BQU8sYUFBYSxDQUNsQixDQUFDLFVBQVUsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO2lCQUNyQixHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7aUJBQ3hCLE1BQU0sQ0FBQyxlQUFlLENBQUM7aUJBQ3ZCLElBQUksRUFBRSxDQUNWLENBQUM7UUFDSixDQUFDO1FBQ0QsSUFBSSxhQUFhLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDN0MsT0FBTyxhQUFhLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdkQsQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQzt3R0EzRlUsY0FBYyxrQkEwQmYsV0FBVyxhQUNDLGdCQUFnQjs0RkEzQjNCLGNBQWMsOEhBRmQsQ0FBQyxPQUFPLENBQUMsMEJDeEJ0QiwyM0dBa0ZBOzs0RkR4RGEsY0FBYztrQkFOMUIsU0FBUzsrQkFDRSxXQUFXLGFBR1YsQ0FBQyxPQUFPLENBQUM7OzBCQTRCakIsTUFBTTsyQkFBQyxXQUFXOzswQkFDbEIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxnQkFBZ0I7eUNBaEJ6QixLQUFLO3NCQUFqQixLQUFLO2dCQVdHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBpbmplY3QsIElucHV0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUnhTdGF0ZSB9IGZyb20gJ0ByeC1hbmd1bGFyL3N0YXRlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBhcnJheURpc3RpbmN0LCBpc05vdEVtcHR5QXJyYXkgfSBmcm9tICcuLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcbmltcG9ydCB7IEpzb25GZWVkLCBKc29uRmVlZFV0aWxzIH0gZnJvbSAnLi9mZWVkLm1vZGVsJztcbmltcG9ydCB7IERpc2NvdXJzZVV0aWxzIH0gZnJvbSAnLi9kaXNjb3Vyc2UvZGlzY291cnNlLnV0aWxzJztcbmltcG9ydCB7IG1hcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUGxhdGZvcm1TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9wbGF0Zm9ybS5zZXJ2aWNlJztcbmltcG9ydCB7IEVudmlyb25tZW50LCBFTlZJUk9OTUVOVCB9IGZyb20gJy4uLy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudC5jbGFzcyc7XG5pbXBvcnQgeyBBcHBDb2xvcnMgfSBmcm9tICcuLi8uLi9zaGFyZWQvdHlwZXMnO1xuaW1wb3J0IHsgQVBQX0ZFRURfU0VSVklDRSwgSUZlZWRTZXJ2aWNlIH0gZnJvbSAnLi9mZWVkLnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZlZWRTdGF0ZTxUPiB7XG4gIG1heEFnZUluTW9udGhzOiBudW1iZXI7XG4gIG1heENvbnRlbnRMZW5ndGg6IG51bWJlcjtcbiAgZmVlZHM6IFRbXTtcbiAgaGFzRmVlZHM6IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1mZWVkcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9mZWVkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmVlZC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtSeFN0YXRlXSxcbn0pXG5leHBvcnQgY2xhc3MgRmVlZHNDb21wb25lbnQ8VCBleHRlbmRzIEpzb25GZWVkID0gSnNvbkZlZWQ+IHtcbiAgcHJvdGVjdGVkIF9kZWJ1ZyA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgX3N0YXRlID0gbmV3IFJ4U3RhdGU8RmVlZFN0YXRlPFQ+PigpO1xuICBwcm90ZWN0ZWQgdHJhbnNsYXRlID0gaW5qZWN0KFRyYW5zbGF0ZVNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgcGxhdGZvcm0gPSBpbmplY3QoUGxhdGZvcm1TZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwcm90ZWN0ZWQgdmVyc2lvbjogc3RyaW5nO1xuXG4gIGZlZWRzJCA9IHRoaXMuX3N0YXRlLnNlbGVjdCgnZmVlZHMnKTtcbiAgaGFzRmVlZHMkID0gdGhpcy5fc3RhdGUuc2VsZWN0KCdoYXNGZWVkcycpO1xuXG4gIEBJbnB1dCgpIHNldCBmZWVkcyh2YWx1ZTogVFtdKSB7XG4gICAgdGhpcy5fc3RhdGUuc2V0KCdmZWVkcycsICgpID0+IHZhbHVlKTtcbiAgfVxuICBnZXQgZmVlZHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlLmdldCgnZmVlZHMnKTtcbiAgfVxuXG4gIGdldCBoYXNGZWVkcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGUuZ2V0KCdoYXNGZWVkcycpO1xuICB9XG5cbiAgQElucHV0KCkgc2hvd0hlYWRlciA9IHRydWU7XG4gIEBJbnB1dCgpIGhlYWRlclRleHRDb2xvcjogQXBwQ29sb3JzID0gJ2xpZ2h0JztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KEVOVklST05NRU5UKSBwcm90ZWN0ZWQgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50LFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQVBQX0ZFRURfU0VSVklDRSkgcHVibGljIGZlZWRTZXJ2aWNlOiBJRmVlZFNlcnZpY2U8VD5cbiAgKSB7XG4gICAgdGhpcy5fc3RhdGUuY29ubmVjdCgnaGFzRmVlZHMnLCB0aGlzLmZlZWRzJC5waXBlKG1hcChpc05vdEVtcHR5QXJyYXkpKSk7XG5cbiAgICBpZiAodGhpcy5mZWVkU2VydmljZSkge1xuICAgICAgdGhpcy5fc3RhdGUuY29ubmVjdChcbiAgICAgICAgJ2ZlZWRzJyxcbiAgICAgICAgdGhpcy5fc3RhdGUuc2VsZWN0KFsnbWF4QWdlSW5Nb250aHMnLCAnbWF4Q29udGVudExlbmd0aCddKS5waXBlKFxuICAgICAgICAgIHN3aXRjaE1hcCgoeyBtYXhBZ2VJbk1vbnRocywgbWF4Q29udGVudExlbmd0aCB9KSA9PlxuICAgICAgICAgICAgdGhpcy5mZWVkU2VydmljZS53YXRjaEFsbCh7XG4gICAgICAgICAgICAgIG1heEFnZUluTW9udGhzLFxuICAgICAgICAgICAgICBtYXhDb250ZW50TGVuZ3RoLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApLFxuICAgICAgICAgIG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gSW5pdGlhbCBzdGF0ZVxuICAgIHRoaXMuX3N0YXRlLnNldCh7XG4gICAgICBtYXhBZ2VJbk1vbnRoczogdGhpcy5lbnZpcm9ubWVudC5mZWVkPy5tYXhBZ2VJbk1vbnRocyA/PyAtMSAvKiBhbGwgKi8sXG4gICAgICBtYXhDb250ZW50TGVuZ3RoOiB0aGlzLmVudmlyb25tZW50LmZlZWQ/Lm1heENvbnRlbnRMZW5ndGggPz8gLTEgLyogbm8gbWF4ICovLFxuICAgIH0pO1xuXG4gICAgLy8gREVCVUdcbiAgICB0aGlzLl9kZWJ1ZyA9ICFlbnZpcm9ubWVudC5wcm9kdWN0aW9uO1xuICB9XG5cbiAgb3BlbkZlZWRIb21lKGZlZWQ/OiBUKSB7XG4gICAgaWYgKCFmZWVkKSB7XG4gICAgICB0aGlzLmZlZWRzPy5mb3JFYWNoKChmKSA9PiB0aGlzLm9wZW5GZWVkSG9tZShmKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdXJsID0gZmVlZC5ob21lX3BhZ2VfdXJsID8/IERpc2NvdXJzZVV0aWxzLnJlbW92ZUpzb25FeHRlbnNpb24oZmVlZC5mZWVkX3VybCkgPz8gdGhpcy5mZWVkU2VydmljZS5nZXRIb21lVXJsKCk7XG4gICAgaWYgKCF1cmwpIHJldHVybjtcbiAgICByZXR1cm4gdGhpcy5wbGF0Zm9ybS5vcGVuKHVybCk7XG4gIH1cblxuICBvcGVuVXJsKHVybDogc3RyaW5nKSB7XG4gICAgaWYgKCF1cmwpIHJldHVybjtcbiAgICBjb25zdCBmaXhlZFVybCA9IERpc2NvdXJzZVV0aWxzLnJlbW92ZUpzb25FeHRlbnNpb24odXJsKTtcbiAgICByZXR1cm4gdGhpcy5wbGF0Zm9ybS5vcGVuKGZpeGVkVXJsKTtcbiAgfVxuXG4gIG9wZW5UYWcoZmVlZDogVCwgdGFnOiBzdHJpbmcpIHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmZlZWRTZXJ2aWNlLmdldFRhZ1VybChmZWVkLCB0YWcpO1xuICAgIHJldHVybiB0aGlzLm9wZW5VcmwodXJsKTtcbiAgfVxuXG4gIGdldFRhZ3MoZmVlZE9ySXRlbT86IFQgfCBUWydpdGVtcyddWzBdKSB7XG4gICAgaWYgKEpzb25GZWVkVXRpbHMuaXNKc29uRmVlZChmZWVkT3JJdGVtKSkge1xuICAgICAgcmV0dXJuIGFycmF5RGlzdGluY3QoXG4gICAgICAgIChmZWVkT3JJdGVtLml0ZW1zIHx8IFtdKVxuICAgICAgICAgIC5tYXAoKGl0ZW0pID0+IGl0ZW0udGFncylcbiAgICAgICAgICAuZmlsdGVyKGlzTm90RW1wdHlBcnJheSlcbiAgICAgICAgICAuZmxhdCgpXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoSnNvbkZlZWRVdGlscy5pc0pzb25GZWVkSXRlbShmZWVkT3JJdGVtKSkge1xuICAgICAgcmV0dXJuIGFycmF5RGlzdGluY3QoKGZlZWRPckl0ZW0udGFncyB8fCBbXSkuZmxhdCgpKTtcbiAgICB9XG4gICAgcmV0dXJuIFtdO1xuICB9XG59XG4iLCJAaWYgKGZlZWRzIHwgaXNOb3RFbXB0eUFycmF5KSB7XG4gIDwhLS0gdG9wIGhlYWRlciAtLT5cbiAgQGlmIChzaG93SGVhZGVyICYmIChmZWVkcyQgfCBwdXNoIHwgYXJyYXlGaXJzdCk7IGFzIGZlZWQpIHtcbiAgICA8aW9uLWl0ZW0gbGluZXM9XCJub25lXCIgY29sb3I9XCJzZWNvbmRhcnlcIiBjbGFzcz1cImZlZWQtaGVhZGVyXCI+XG4gICAgICA8aW9uLWljb24gc2xvdD1cInN0YXJ0XCIgbmFtZT1cIm1lZ2FwaG9uZVwiPjwvaW9uLWljb24+XG4gICAgICA8aW9uLWxhYmVsPlxuICAgICAgICA8Yj57eyBmZWVkLnRpdGxlIHx8ICgnU09DSUFMLkZFRUQuTkVXUycgfCB0cmFuc2xhdGUpIH19PC9iPlxuICAgICAgPC9pb24tbGFiZWw+XG4gICAgICA8aW9uLWJ1dHRvbiBzbG90PVwiZW5kXCIgZmlsbD1cImNsZWFyXCIgKGNsaWNrKT1cIm9wZW5GZWVkSG9tZSgpXCI+XG4gICAgICAgIDxpb24tbGFiZWwgdHJhbnNsYXRlPlNPQ0lBTC5GRUVELlNIT1dfQUxMX0ZFRUQ8L2lvbi1sYWJlbD5cbiAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJlbmRcIiBuYW1lPVwiY2hldnJvbi1mb3J3YXJkLW91dGxpbmVcIj48L2lvbi1pY29uPlxuICAgICAgPC9pb24tYnV0dG9uPlxuICAgIDwvaW9uLWl0ZW0+XG4gIH1cblxuICA8ZGl2IGNsYXNzPVwiZmVlZCBpb24tbm8tcGFkZGluZ1wiIFtjbGFzcy5oYXMtaGVhZGVyXT1cInNob3dIZWFkZXJcIj5cbiAgICA8IS0tIGZlZWRzIC0tPlxuICAgIEBmb3IgKGZlZWQgb2YgZmVlZHMkIHwgcHVzaDsgdHJhY2sgZmVlZC5mZWVkX3VybDsgbGV0IGZpcnN0RmVlZCA9ICRmaXJzdDsgbGV0IGxhc3RGZWVkID0gJGxhc3QpIHtcbiAgICAgIDwhLS0gaXRlbXMgLS0+XG4gICAgICBAZm9yIChpdGVtIG9mIGZlZWQuaXRlbXM7IHRyYWNrIGl0ZW0uaWQ7IGxldCBmaXJzdEl0ZW0gPSAkZmlyc3Q7IGxldCBsYXN0SXRlbSA9ICRsYXN0KSB7XG4gICAgICAgIDxpb24tY2FyZCBbY2xhc3MuZmlyc3RdPVwiZmlyc3RGZWVkICYmIGZpcnN0SXRlbVwiIFtjbGFzcy5sYXN0XT1cImxhc3RGZWVkICYmIGxhc3RJdGVtXCI+XG4gICAgICAgICAgPGlvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgIDxpb24tY2FyZC1zdWJ0aXRsZSBzdHlsZT1cInZlcnRpY2FsLWFsaWduOiBtaWRkbGVcIj5cbiAgICAgICAgICAgICAgPCEtLSBBdXRob3JzIC0tPlxuICAgICAgICAgICAgICBAZm9yIChhdXRob3Igb2YgaXRlbS5hdXRob3JzIHx8IGZlZWQuYXV0aG9yczsgdHJhY2sgYXV0aG9yKSB7XG4gICAgICAgICAgICAgICAgQGlmIChhdXRob3IubmFtZSB8fCBhdXRob3IuYXZhdGFyKSB7XG4gICAgICAgICAgICAgICAgICA8aW9uLWNoaXAgKGNsaWNrKT1cIm9wZW5VcmwoYXV0aG9yLnVybClcIiB0YXBwYWJsZT5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChhdXRob3IuYXZhdGFyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi1hdmF0YXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWltZyBbc3JjXT1cImF1dGhvci5hdmF0YXJcIiBbYWx0XT1cImF1dGhvci5uYW1lXCI+PC9pb24taW1nPlxuICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWF2YXRhcj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAaWYgKGF1dGhvci5uYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi1sYWJlbCBjb2xvcj1cIm1lZGl1bVwiPnt7IGF1dGhvci5uYW1lIH19PC9pb24tbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvaW9uLWNoaXA+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDxpb24tbm90ZSBjbGFzcz1cImlvbi1mbG9hdC1lbmRcIj5cbiAgICAgICAgICAgICAgICA8c21hbGw+e3sgaXRlbS5kYXRlX3B1Ymxpc2hlZCB8IGRhdGVGcm9tTm93IH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgPC9pb24tbm90ZT5cbiAgICAgICAgICAgIDwvaW9uLWNhcmQtc3VidGl0bGU+XG5cbiAgICAgICAgICAgIDwhLS0gdGl0bGUgLS0+XG4gICAgICAgICAgICA8aW9uLWNhcmQtdGl0bGUgKGNsaWNrKT1cIm9wZW5VcmwoaXRlbS51cmwgfHwgZmVlZC5mZWVkX3VybClcIiB0YXBwYWJsZT57eyBpdGVtPy50aXRsZSB9fTwvaW9uLWNhcmQtdGl0bGU+XG5cbiAgICAgICAgICAgIDwhLS0gdGFncyAtLT5cbiAgICAgICAgICAgIEBsZXQgdGFncyA9IGl0ZW0gfCBtYXA6IGdldFRhZ3M7XG4gICAgICAgICAgICBAaWYgKHRhZ3MgfCBpc05vdEVtcHR5QXJyYXkpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhZ3NcIj5cbiAgICAgICAgICAgICAgICBAZm9yICh0YWcgb2YgdGFnczsgdHJhY2sgdGFnOyBsZXQgbGFzdCA9ICRsYXN0KSB7XG4gICAgICAgICAgICAgICAgICA8YSAoY2xpY2spPVwib3BlblRhZyhmZWVkLCB0YWcpXCIgdGFwcGFibGU+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tdGV4dD4je3sgdGFnIH19PC9pb24tdGV4dD5cbiAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgIEBpZiAoIWxhc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2lvbi1jYXJkLWhlYWRlcj5cblxuICAgICAgICAgIDwhLS0gRmVlZCBjb250ZW50IC0tPlxuICAgICAgICAgIDxpb24tY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgPGlvbi10ZXh0IFtmZWVkXT1cIml0ZW0udXJsIHx8IGZlZWQuZmVlZF91cmxcIj5cbiAgICAgICAgICAgICAgQGlmIChpdGVtLmNvbnRlbnRfaHRtbCkge1xuICAgICAgICAgICAgICAgIDxwIFtpbm5lckhUTUxdPVwiaXRlbS5jb250ZW50X2h0bWxcIj48L3A+XG4gICAgICAgICAgICAgIH0gQGVsc2UgaWYgKGl0ZW0uY29udGVudF90ZXh0KSB7XG4gICAgICAgICAgICAgICAgPHAgW2lubmVyVGV4dF09XCJpdGVtLmNvbnRlbnRfdGV4dFwiPjwvcD5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9pb24tdGV4dD5cbiAgICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG5cbiAgICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwib3BlblVybChpdGVtLnVybClcIiBjbGFzcz1cImlvbi1mbG9hdC1lbmRcIiBmaWxsPVwiY2xlYXJcIj5cbiAgICAgICAgICAgIDxpb24tbGFiZWw+e3sgKGl0ZW0udHJ1bmNhdGVkID8gJ1NPQ0lBTC5GRUVELlJFQURfTU9SRScgOiAnQ09NTU9OLkJUTl9TSE9XJykgfCB0cmFuc2xhdGUgfX08L2lvbi1sYWJlbD5cbiAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwiZW5kXCIgbmFtZT1cImNoZXZyb24tZm9yd2FyZC1vdXRsaW5lXCI+PC9pb24taWNvbj5cbiAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgIDwvaW9uLWNhcmQ+XG4gICAgICB9XG4gICAgfVxuICA8L2Rpdj5cbn1cbiJdfQ==
@@ -107,7 +107,12 @@ export const environment = Object.freeze({
107
107
  },
108
108
  feed: {
109
109
  jsonFeed: {
110
- fr: ['https://gitlab.ifremer.fr/sih-public/sumaris/ngx-sumaris-components/-/raw/master/doc/feed/feed-fr.json'],
110
+ fr: [
111
+ 'https://raw.githubusercontent.com/duniter/cesium/master/doc/feed/1.1/feed-fr-FR.json',
112
+ 'https://raw.githubusercontent.com/duniter/cesium/master/doc/feed/feed-fr.json',
113
+ //'https://gitlab.ifremer.fr/sih-public/sumaris/ngx-sumaris-components/-/raw/master/doc/feed/feed-fr.json',
114
+ //'https://gitlab.ifremer.fr/sih-public/sumaris/ngx-sumaris-components/-/raw/feature/feeds/doc/feed/feed-fr.json',
115
+ ],
111
116
  en: ['https://gitlab.ifremer.fr/sih-public/sumaris/ngx-sumaris-components/-/raw/master/doc/feed/feed-en.json'],
112
117
  },
113
118
  maxContentLength: 1000,
@@ -115,4 +120,4 @@ export const environment = Object.freeze({
115
120
  maxCount: 3,
116
121
  },
117
122
  });
118
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZW52aXJvbm1lbnRzL2Vudmlyb25tZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdGQUFnRjtBQUNoRiwyRUFBMkU7QUFDM0UsZ0VBQWdFO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUdyRTs7Ozs7R0FLRztBQUNILHNDQUFzQztBQUV0QyxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQWdCLE1BQU0sQ0FBQyxNQUFNLENBQWM7SUFDakUsSUFBSSxFQUFFLDZCQUE2QixFQUFFLGtDQUFrQztJQUN2RSxPQUFPLEVBQUUsS0FBSyxFQUFFLGtDQUFrQztJQUVsRCxvRUFBb0U7SUFDcEUsVUFBVSxFQUFFLElBQUk7SUFFaEIsMkRBQTJEO0lBQzNELCtCQUErQjtJQUUvQixPQUFPLEVBQUUsR0FBRztJQUNaLGFBQWEsRUFBRSxJQUFJO0lBQ25CLG9CQUFvQixFQUFFLE1BQU07SUFDNUIsaUJBQWlCLEVBQUUsYUFBYTtJQUNoQyxPQUFPLEVBQUUsS0FBSztJQUNkLGFBQWEsRUFBRSxJQUFJO0lBRW5CLHdCQUF3QjtJQUN4QixtQkFBbUI7SUFFbkIsc0JBQXNCO0lBQ3RCLFlBQVksRUFBRSxLQUFLO0lBRW5CLHdCQUF3QjtJQUN4QixnQkFBZ0I7SUFFaEIsY0FBYyxFQUFFLE9BQU87SUFFdkIseUJBQXlCLEVBQUUsSUFBSTtJQUUvQixXQUFXLEVBQUU7UUFDWCxJQUFJLEVBQUUsV0FBVztRQUNqQixJQUFJLEVBQUUsSUFBSTtLQUNYO0lBRUQsWUFBWSxFQUFFO1FBQ1o7WUFDRSxJQUFJLEVBQUUsV0FBVztZQUNqQixJQUFJLEVBQUUsSUFBSTtTQUNYO1FBQ0Q7WUFDRSxJQUFJLEVBQUUsV0FBVztZQUNqQixJQUFJLEVBQUUsSUFBSTtTQUNYO1FBQ0Q7WUFDRSxJQUFJLEVBQUUsY0FBYztZQUNwQixJQUFJLEVBQUUsSUFBSTtTQUNYO1FBQ0Q7WUFDRSxJQUFJLEVBQUUsY0FBYztZQUNwQixJQUFJLEVBQUUsSUFBSTtTQUNYO1FBQ0Q7WUFDRSxJQUFJLEVBQUUsY0FBYztZQUNwQixJQUFJLEVBQUUsSUFBSTtTQUNYO1FBQ0Q7WUFDRSxJQUFJLEVBQUUsZUFBZTtZQUNyQixJQUFJLEVBQUUsSUFBSTtTQUNYO1FBQ0Q7WUFDRSxJQUFJLEVBQUUsWUFBWTtZQUNsQixJQUFJLEVBQUUsR0FBRztTQUNWO1FBQ0Q7WUFDRSxJQUFJLEVBQUUsa0JBQWtCO1lBQ3hCLElBQUksRUFBRSxHQUFHO1NBQ1Y7UUFDRDtZQUNFLElBQUksRUFBRSxrQkFBa0I7WUFDeEIsSUFBSSxFQUFFLEdBQUc7U0FDVjtRQUNEO1lBQ0UsSUFBSSxFQUFFLGlCQUFpQjtZQUN2QixJQUFJLEVBQUUsR0FBRztTQUNWO0tBQ0Y7SUFDRCxjQUFjLEVBQUUsU0FBUztJQUN6Qix3QkFBd0IsRUFBRSwrREFBK0Q7SUFDekYsb0JBQW9CLEVBQUUsb0RBQW9EO0lBQzFFLHdCQUF3QixFQUFFLHFFQUFxRTtJQUUvRixVQUFVO0lBQ1YsT0FBTyxFQUFFO1FBQ1AsV0FBVyxFQUFFLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLFlBQVksQ0FBQztLQUNwSDtJQUVELFFBQVE7SUFDUixTQUFTLEVBQUUscUVBQXFFO0lBQ2hGLGNBQWMsRUFBRSw4RUFBOEU7SUFDOUYsUUFBUSxFQUFFLElBQUksRUFBRSw4QkFBOEI7SUFDOUMsT0FBTyxFQUFFLGdHQUFnRztJQUN6RyxnQkFBZ0IsRUFBRSxnR0FBZ0c7SUFDbEgsYUFBYSxFQUFFLDZHQUE2RztJQUU1SCxjQUFjO0lBQ2QsaUJBQWlCLEVBQUU7UUFDakIsbUNBQW1DO1FBQ25DLFFBQVEsRUFBRSxtQkFBbUI7UUFDN0IsUUFBUSxFQUFFLE9BQU87S0FDbEI7SUFFRCxPQUFPLEVBQUU7UUFDUCxtQkFBbUIsRUFBRSxJQUFJO1FBQ3pCLHVCQUF1QixFQUFFLEVBQUU7S0FDNUI7SUFFRCxZQUFZLEVBQUU7UUFDWixtQkFBbUIsRUFBRSxJQUFJO1FBQ3pCLHVCQUF1QixFQUFFLEVBQUU7S0FDNUI7SUFFRCxJQUFJLEVBQUU7UUFDSixRQUFRLEVBQUU7WUFDUixFQUFFLEVBQUUsQ0FBQyx3R0FBd0csQ0FBQztZQUM5RyxFQUFFLEVBQUUsQ0FBQyx3R0FBd0csQ0FBQztTQUMvRztRQUNELGdCQUFnQixFQUFFLElBQUk7UUFDdEIsY0FBYyxFQUFFLENBQUMsQ0FBQztRQUNsQixRQUFRLEVBQUUsQ0FBQztLQUNaO0NBQ0YsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBmaWxlIGNhbiBiZSByZXBsYWNlZCBkdXJpbmcgYnVpbGQgYnkgdXNpbmcgdGhlIGBmaWxlUmVwbGFjZW1lbnRzYCBhcnJheS5cbi8vIGBuZyBidWlsZCAtLS1wcm9kYCByZXBsYWNlcyBgZW52aXJvbm1lbnQudHNgIHdpdGggYGVudmlyb25tZW50LnByb2QudHNgLlxuLy8gVGhlIGxpc3Qgb2YgZmlsZSByZXBsYWNlbWVudHMgY2FuIGJlIGZvdW5kIGluIGBhbmd1bGFyLmpzb25gLlxuaW1wb3J0IHsgU3RvcmFnZURyaXZlcnMgfSBmcm9tICcuLi9hcHAvc2hhcmVkL3N0b3JhZ2Uvc3RvcmFnZS51dGlscyc7XG5cbmltcG9ydCB7IEVudmlyb25tZW50IH0gZnJvbSAnLi9lbnZpcm9ubWVudC5jbGFzcyc7XG4vKlxuICogSW4gZGV2ZWxvcG1lbnQgbW9kZSwgdG8gaWdub3JlIHpvbmUgcmVsYXRlZCBlcnJvciBzdGFjayBmcmFtZXMgc3VjaCBhc1xuICogYHpvbmUucnVuYCwgYHpvbmVEZWxlZ2F0ZS5pbnZva2VUYXNrYCBmb3IgZWFzaWVyIGRlYnVnZ2luZywgeW91IGNhblxuICogaW1wb3J0IHRoZSBmb2xsb3dpbmcgZmlsZSwgYnV0IHBsZWFzZSBjb21tZW50IGl0IG91dCBpbiBwcm9kdWN0aW9uIG1vZGVcbiAqIGJlY2F1c2UgaXQgd2lsbCBoYXZlIHBlcmZvcm1hbmNlIGltcGFjdCB3aGVuIHRocm93IGVycm9yXG4gKi9cbi8vaW1wb3J0ICd6b25lLmpzL3BsdWdpbnMvem9uZS1lcnJvcic7XG5cbmV4cG9ydCBjb25zdCBlbnZpcm9ubWVudDogRW52aXJvbm1lbnQgPSBPYmplY3QuZnJlZXplKDxFbnZpcm9ubWVudD57XG4gIG5hbWU6ICdAc3VtYXJpcy1uZXQvbmd4LWNvbXBvbmVudHMnLCAvLyBvdmVycmlkZGVuIGJ5IEVOVklST05NRU5UIHRva2VuXG4gIHZlcnNpb246ICcxLjAnLCAvLyBvdmVycmlkZGVuIGJ5IEVOVklST05NRU5UIHRva2VuXG5cbiAgLy8gRG8gTk9UIHNldCB0byBmYWxzZSAtIGJlY2F1c2UgdGhpcyB2YWx1ZSB3aWxsIGJlIHVzZWQgYnkgcmVsZWFzZXNcbiAgcHJvZHVjdGlvbjogdHJ1ZSxcblxuICAvLyBEbyBOT1Qgc2V0IC0gYmVjYXVzZSB0aGlzIHZhbHVlIHdpbGwgYmUgdXNlZCBieSByZWxlYXNlc1xuICAvL2V4dGVybmFsRW52aXJvbm1lbnRVcmw6IG51bGwsXG5cbiAgYmFzZVVybDogJy8nLFxuICBkZWZhdWx0TG9jYWxlOiAnZnInLFxuICBkZWZhdWx0TGF0TG9uZ0Zvcm1hdDogJ0RETU0nLFxuICBhcG9sbG9GZXRjaFBvbGljeTogJ2NhY2hlLWZpcnN0JyxcbiAgdXNlSGFzaDogZmFsc2UsXG4gIGFsbG93RGFya01vZGU6IHRydWUsXG5cbiAgLy9kZWZhdWx0Um91dGU6ICcvaG9tZScsXG4gIC8vZW5hYmxlTWVudTogdHJ1ZSxcblxuICAvLyBGSVhNRTogZW5hYmxlIGNhY2hlXG4gIHBlcnNpc3RDYWNoZTogZmFsc2UsXG5cbiAgLy8gVE9ETzogbWFrZSB0aGlzIHdvcmtzXG4gIC8vb2ZmbGluZTogdHJ1ZSxcblxuICBwZWVyTWluVmVyc2lvbjogJzEuOC4wJyxcblxuICBlbmFibGVTZWxlY3RQZWVyQnlGZWF0dXJlOiB0cnVlLFxuXG4gIGRlZmF1bHRQZWVyOiB7XG4gICAgaG9zdDogJ2xvY2FsaG9zdCcsXG4gICAgcG9ydDogODA4MSxcbiAgfSxcblxuICBkZWZhdWx0UGVlcnM6IFtcbiAgICB7XG4gICAgICBob3N0OiAnbG9jYWxob3N0JyxcbiAgICAgIHBvcnQ6IDgwODAsXG4gICAgfSxcbiAgICB7XG4gICAgICBob3N0OiAnbG9jYWxob3N0JyxcbiAgICAgIHBvcnQ6IDgwODEsXG4gICAgfSxcbiAgICB7XG4gICAgICBob3N0OiAnMTkyLjE2OC4wLjQ1JyxcbiAgICAgIHBvcnQ6IDgwODAsXG4gICAgfSxcbiAgICB7XG4gICAgICBob3N0OiAnMTkyLjE2OC4wLjI0JyxcbiAgICAgIHBvcnQ6IDgwODAsXG4gICAgfSxcbiAgICB7XG4gICAgICBob3N0OiAnMTkyLjE2OC4wLjI5JyxcbiAgICAgIHBvcnQ6IDgwODAsXG4gICAgfSxcbiAgICB7XG4gICAgICBob3N0OiAnMTkyLjE2OC4wLjEwNycsXG4gICAgICBwb3J0OiA4MDgwLFxuICAgIH0sXG4gICAge1xuICAgICAgaG9zdDogJ3NpaC5zZmEuc2MnLFxuICAgICAgcG9ydDogNDQzLFxuICAgIH0sXG4gICAge1xuICAgICAgaG9zdDogJ3Rlc3Quc3VtYXJpcy5uZXQnLFxuICAgICAgcG9ydDogNDQzLFxuICAgIH0sXG4gICAge1xuICAgICAgaG9zdDogJ29wZW4uc3VtYXJpcy5uZXQnLFxuICAgICAgcG9ydDogNDQzLFxuICAgIH0sXG4gICAge1xuICAgICAgaG9zdDogJ3NlcnZlci5lLWlzLnBybycsXG4gICAgICBwb3J0OiA0NDMsXG4gICAgfSxcbiAgXSxcbiAgZGVmYXVsdEFwcE5hbWU6ICdTVU1BUmlTJyxcbiAgZGVmYXVsdEFuZHJvaWRJbnN0YWxsVXJsOiAnaHR0cHM6Ly9wbGF5Lmdvb2dsZS5jb20vc3RvcmUvYXBwcy9kZXRhaWxzP2lkPW5ldC5zdW1hcmlzLmFwcCcsXG4gIGRlZmF1bHRJT1NJbnN0YWxsVXJsOiAnaHR0cHM6Ly9hcHBzLmFwcGxlLmNvbS91cy9hcHAvc3VtYXJpcy9pZDY3MzY3NDc1MjMnLFxuICBkZWZhdWx0RGVza3RvcEluc3RhbGxVcmw6ICdodHRwczovL2dpdGxhYi5pZnJlbWVyLmZyL3NpaC1wdWJsaWMvc3VtYXJpcy9zdW1hcmlzLWFwcC8tL3JlbGVhc2VzJyxcblxuICAvLyBTdG9yYWdlXG4gIHN0b3JhZ2U6IHtcbiAgICBkcml2ZXJPcmRlcjogW1N0b3JhZ2VEcml2ZXJzLlNRTExpdGUsIFN0b3JhZ2VEcml2ZXJzLkluZGV4ZWREQiwgU3RvcmFnZURyaXZlcnMuV2ViU1FMLCBTdG9yYWdlRHJpdmVycy5Mb2NhbFN0b3JhZ2VdLFxuICB9LFxuXG4gIC8vIEFib3V0XG4gIHNvdXJjZVVybDogJ2h0dHBzOi8vZ2l0bGFiLmlmcmVtZXIuZnIvc2loLXB1YmxpYy9zdW1hcmlzL25neC1zdW1hcmlzLWNvbXBvbmVudHMnLFxuICByZXBvcnRJc3N1ZVVybDogJ2h0dHBzOi8vZ2l0bGFiLmlmcmVtZXIuZnIvc2loLXB1YmxpYy9zdW1hcmlzL25neC1zdW1hcmlzLWNvbXBvbmVudHMvLS9pc3N1ZXMnLFxuICBmb3J1bVVybDogbnVsbCwgLy8naHR0cHM6Ly9mb3J1bS5zdW1hcmlzLm5ldCcsXG4gIGhlbHBVcmw6ICdodHRwczovL2dpdGxhYi5pZnJlbWVyLmZyL3NpaC1wdWJsaWMvc3VtYXJpcy9zdW1hcmlzLWRvYy8tL2Jsb2IvbWFzdGVyL3VzZXItbWFudWFsL2luZGV4X2ZyLm1kJyxcbiAgcHJpdmFjeVBvbGljeVVybDogJ2h0dHBzOi8vZ2l0bGFiLmlmcmVtZXIuZnIvc2loLXB1YmxpYy9zdW1hcmlzL3N1bWFyaXMtYXBwLy0vcmF3L21hc3Rlci9kb2MvcHJpdmFjeV9wb2xpY3lfZnIubWQnLFxuICB0ZXJtc09mVXNlVXJsOiAnaHR0cHM6Ly9naXRsYWIuaWZyZW1lci5mci9zaWgtcHVibGljL3N1bWFyaXMvc3VtYXJpcy1hcHAvLS9yYXcvbWFzdGVyL2RvYy90ZXJtc19vZl91c2VfZnIubWQ/cmVmX3R5cGU9aGVhZHMnLFxuXG4gIC8vIERldmVsb3BtZW50XG4gIGRlZmF1bHRBdXRoVmFsdWVzOiB7XG4gICAgLy8gVG9rZW4gYXV0aCAodXNpbmcgUGVyc29uLnB1YmtleSlcbiAgICB1c2VybmFtZTogJ2FkbWluQHN1bWFyaXMubmV0JyxcbiAgICBwYXNzd29yZDogJ2FkbWluJyxcbiAgfSxcblxuICBhY2NvdW50OiB7XG4gICAgZW5hYmxlTGlzdGVuQ2hhbmdlczogdHJ1ZSxcbiAgICBsaXN0ZW5JbnRlcnZhbEluU2Vjb25kczogNjAsXG4gIH0sXG5cbiAgZW50aXR5RWRpdG9yOiB7XG4gICAgZW5hYmxlTGlzdGVuQ2hhbmdlczogdHJ1ZSxcbiAgICBsaXN0ZW5JbnRlcnZhbEluU2Vjb25kczogNjAsXG4gIH0sXG5cbiAgZmVlZDoge1xuICAgIGpzb25GZWVkOiB7XG4gICAgICBmcjogWydodHRwczovL2dpdGxhYi5pZnJlbWVyLmZyL3NpaC1wdWJsaWMvc3VtYXJpcy9uZ3gtc3VtYXJpcy1jb21wb25lbnRzLy0vcmF3L21hc3Rlci9kb2MvZmVlZC9mZWVkLWZyLmpzb24nXSxcbiAgICAgIGVuOiBbJ2h0dHBzOi8vZ2l0bGFiLmlmcmVtZXIuZnIvc2loLXB1YmxpYy9zdW1hcmlzL25neC1zdW1hcmlzLWNvbXBvbmVudHMvLS9yYXcvbWFzdGVyL2RvYy9mZWVkL2ZlZWQtZW4uanNvbiddLFxuICAgIH0sXG4gICAgbWF4Q29udGVudExlbmd0aDogMTAwMCxcbiAgICBtYXhBZ2VJbk1vbnRoczogLTEsXG4gICAgbWF4Q291bnQ6IDMsXG4gIH0sXG59KTtcbiJdfQ==
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZW52aXJvbm1lbnRzL2Vudmlyb25tZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdGQUFnRjtBQUNoRiwyRUFBMkU7QUFDM0UsZ0VBQWdFO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUdyRTs7Ozs7R0FLRztBQUNILHNDQUFzQztBQUV0QyxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQWdCLE1BQU0sQ0FBQyxNQUFNLENBQWM7SUFDakUsSUFBSSxFQUFFLDZCQUE2QixFQUFFLGtDQUFrQztJQUN2RSxPQUFPLEVBQUUsS0FBSyxFQUFFLGtDQUFrQztJQUVsRCxvRUFBb0U7SUFDcEUsVUFBVSxFQUFFLElBQUk7SUFFaEIsMkRBQTJEO0lBQzNELCtCQUErQjtJQUUvQixPQUFPLEVBQUUsR0FBRztJQUNaLGFBQWEsRUFBRSxJQUFJO0lBQ25CLG9CQUFvQixFQUFFLE1BQU07SUFDNUIsaUJBQWlCLEVBQUUsYUFBYTtJQUNoQyxPQUFPLEVBQUUsS0FBSztJQUNkLGFBQWEsRUFBRSxJQUFJO0lBRW5CLHdCQUF3QjtJQUN4QixtQkFBbUI7SUFFbkIsc0JBQXNCO0lBQ3RCLFlBQVksRUFBRSxLQUFLO0lBRW5CLHdCQUF3QjtJQUN4QixnQkFBZ0I7SUFFaEIsY0FBYyxFQUFFLE9BQU87SUFFdkIseUJBQXlCLEVBQUUsSUFBSTtJQUUvQixXQUFXLEVBQUU7UUFDWCxJQUFJLEVBQUUsV0FBVztRQUNqQixJQUFJLEVBQUUsSUFBSTtLQUNYO0lBRUQsWUFBWSxFQUFFO1FBQ1o7WUFDRSxJQUFJLEVBQUUsV0FBVztZQUNqQixJQUFJLEVBQUUsSUFBSTtTQUNYO1FBQ0Q7WUFDRSxJQUFJLEVBQUUsV0FBVztZQUNqQixJQUFJLEVBQUUsSUFBSTtTQUNYO1FBQ0Q7WUFDRSxJQUFJLEVBQUUsY0FBYztZQUNwQixJQUFJLEVBQUUsSUFBSTtTQUNYO1FBQ0Q7WUFDRSxJQUFJLEVBQUUsY0FBYztZQUNwQixJQUFJLEVBQUUsSUFBSTtTQUNYO1FBQ0Q7WUFDRSxJQUFJLEVBQUUsY0FBYztZQUNwQixJQUFJLEVBQUUsSUFBSTtTQUNYO1FBQ0Q7WUFDRSxJQUFJLEVBQUUsZUFBZTtZQUNyQixJQUFJLEVBQUUsSUFBSTtTQUNYO1FBQ0Q7WUFDRSxJQUFJLEVBQUUsWUFBWTtZQUNsQixJQUFJLEVBQUUsR0FBRztTQUNWO1FBQ0Q7WUFDRSxJQUFJLEVBQUUsa0JBQWtCO1lBQ3hCLElBQUksRUFBRSxHQUFHO1NBQ1Y7UUFDRDtZQUNFLElBQUksRUFBRSxrQkFBa0I7WUFDeEIsSUFBSSxFQUFFLEdBQUc7U0FDVjtRQUNEO1lBQ0UsSUFBSSxFQUFFLGlCQUFpQjtZQUN2QixJQUFJLEVBQUUsR0FBRztTQUNWO0tBQ0Y7SUFDRCxjQUFjLEVBQUUsU0FBUztJQUN6Qix3QkFBd0IsRUFBRSwrREFBK0Q7SUFDekYsb0JBQW9CLEVBQUUsb0RBQW9EO0lBQzFFLHdCQUF3QixFQUFFLHFFQUFxRTtJQUUvRixVQUFVO0lBQ1YsT0FBTyxFQUFFO1FBQ1AsV0FBVyxFQUFFLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLFlBQVksQ0FBQztLQUNwSDtJQUVELFFBQVE7SUFDUixTQUFTLEVBQUUscUVBQXFFO0lBQ2hGLGNBQWMsRUFBRSw4RUFBOEU7SUFDOUYsUUFBUSxFQUFFLElBQUksRUFBRSw4QkFBOEI7SUFDOUMsT0FBTyxFQUFFLGdHQUFnRztJQUN6RyxnQkFBZ0IsRUFBRSxnR0FBZ0c7SUFDbEgsYUFBYSxFQUFFLDZHQUE2RztJQUU1SCxjQUFjO0lBQ2QsaUJBQWlCLEVBQUU7UUFDakIsbUNBQW1DO1FBQ25DLFFBQVEsRUFBRSxtQkFBbUI7UUFDN0IsUUFBUSxFQUFFLE9BQU87S0FDbEI7SUFFRCxPQUFPLEVBQUU7UUFDUCxtQkFBbUIsRUFBRSxJQUFJO1FBQ3pCLHVCQUF1QixFQUFFLEVBQUU7S0FDNUI7SUFFRCxZQUFZLEVBQUU7UUFDWixtQkFBbUIsRUFBRSxJQUFJO1FBQ3pCLHVCQUF1QixFQUFFLEVBQUU7S0FDNUI7SUFFRCxJQUFJLEVBQUU7UUFDSixRQUFRLEVBQUU7WUFDUixFQUFFLEVBQUU7Z0JBQ0Ysc0ZBQXNGO2dCQUN0RiwrRUFBK0U7Z0JBQy9FLDJHQUEyRztnQkFDM0csa0hBQWtIO2FBQ25IO1lBRUQsRUFBRSxFQUFFLENBQUMsd0dBQXdHLENBQUM7U0FDL0c7UUFDRCxnQkFBZ0IsRUFBRSxJQUFJO1FBQ3RCLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFDbEIsUUFBUSxFQUFFLENBQUM7S0FDWjtDQUNGLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgZmlsZSBjYW4gYmUgcmVwbGFjZWQgZHVyaW5nIGJ1aWxkIGJ5IHVzaW5nIHRoZSBgZmlsZVJlcGxhY2VtZW50c2AgYXJyYXkuXG4vLyBgbmcgYnVpbGQgLS0tcHJvZGAgcmVwbGFjZXMgYGVudmlyb25tZW50LnRzYCB3aXRoIGBlbnZpcm9ubWVudC5wcm9kLnRzYC5cbi8vIFRoZSBsaXN0IG9mIGZpbGUgcmVwbGFjZW1lbnRzIGNhbiBiZSBmb3VuZCBpbiBgYW5ndWxhci5qc29uYC5cbmltcG9ydCB7IFN0b3JhZ2VEcml2ZXJzIH0gZnJvbSAnLi4vYXBwL3NoYXJlZC9zdG9yYWdlL3N0b3JhZ2UudXRpbHMnO1xuXG5pbXBvcnQgeyBFbnZpcm9ubWVudCB9IGZyb20gJy4vZW52aXJvbm1lbnQuY2xhc3MnO1xuLypcbiAqIEluIGRldmVsb3BtZW50IG1vZGUsIHRvIGlnbm9yZSB6b25lIHJlbGF0ZWQgZXJyb3Igc3RhY2sgZnJhbWVzIHN1Y2ggYXNcbiAqIGB6b25lLnJ1bmAsIGB6b25lRGVsZWdhdGUuaW52b2tlVGFza2AgZm9yIGVhc2llciBkZWJ1Z2dpbmcsIHlvdSBjYW5cbiAqIGltcG9ydCB0aGUgZm9sbG93aW5nIGZpbGUsIGJ1dCBwbGVhc2UgY29tbWVudCBpdCBvdXQgaW4gcHJvZHVjdGlvbiBtb2RlXG4gKiBiZWNhdXNlIGl0IHdpbGwgaGF2ZSBwZXJmb3JtYW5jZSBpbXBhY3Qgd2hlbiB0aHJvdyBlcnJvclxuICovXG4vL2ltcG9ydCAnem9uZS5qcy9wbHVnaW5zL3pvbmUtZXJyb3InO1xuXG5leHBvcnQgY29uc3QgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50ID0gT2JqZWN0LmZyZWV6ZSg8RW52aXJvbm1lbnQ+e1xuICBuYW1lOiAnQHN1bWFyaXMtbmV0L25neC1jb21wb25lbnRzJywgLy8gb3ZlcnJpZGRlbiBieSBFTlZJUk9OTUVOVCB0b2tlblxuICB2ZXJzaW9uOiAnMS4wJywgLy8gb3ZlcnJpZGRlbiBieSBFTlZJUk9OTUVOVCB0b2tlblxuXG4gIC8vIERvIE5PVCBzZXQgdG8gZmFsc2UgLSBiZWNhdXNlIHRoaXMgdmFsdWUgd2lsbCBiZSB1c2VkIGJ5IHJlbGVhc2VzXG4gIHByb2R1Y3Rpb246IHRydWUsXG5cbiAgLy8gRG8gTk9UIHNldCAtIGJlY2F1c2UgdGhpcyB2YWx1ZSB3aWxsIGJlIHVzZWQgYnkgcmVsZWFzZXNcbiAgLy9leHRlcm5hbEVudmlyb25tZW50VXJsOiBudWxsLFxuXG4gIGJhc2VVcmw6ICcvJyxcbiAgZGVmYXVsdExvY2FsZTogJ2ZyJyxcbiAgZGVmYXVsdExhdExvbmdGb3JtYXQ6ICdERE1NJyxcbiAgYXBvbGxvRmV0Y2hQb2xpY3k6ICdjYWNoZS1maXJzdCcsXG4gIHVzZUhhc2g6IGZhbHNlLFxuICBhbGxvd0RhcmtNb2RlOiB0cnVlLFxuXG4gIC8vZGVmYXVsdFJvdXRlOiAnL2hvbWUnLFxuICAvL2VuYWJsZU1lbnU6IHRydWUsXG5cbiAgLy8gRklYTUU6IGVuYWJsZSBjYWNoZVxuICBwZXJzaXN0Q2FjaGU6IGZhbHNlLFxuXG4gIC8vIFRPRE86IG1ha2UgdGhpcyB3b3Jrc1xuICAvL29mZmxpbmU6IHRydWUsXG5cbiAgcGVlck1pblZlcnNpb246ICcxLjguMCcsXG5cbiAgZW5hYmxlU2VsZWN0UGVlckJ5RmVhdHVyZTogdHJ1ZSxcblxuICBkZWZhdWx0UGVlcjoge1xuICAgIGhvc3Q6ICdsb2NhbGhvc3QnLFxuICAgIHBvcnQ6IDgwODEsXG4gIH0sXG5cbiAgZGVmYXVsdFBlZXJzOiBbXG4gICAge1xuICAgICAgaG9zdDogJ2xvY2FsaG9zdCcsXG4gICAgICBwb3J0OiA4MDgwLFxuICAgIH0sXG4gICAge1xuICAgICAgaG9zdDogJ2xvY2FsaG9zdCcsXG4gICAgICBwb3J0OiA4MDgxLFxuICAgIH0sXG4gICAge1xuICAgICAgaG9zdDogJzE5Mi4xNjguMC40NScsXG4gICAgICBwb3J0OiA4MDgwLFxuICAgIH0sXG4gICAge1xuICAgICAgaG9zdDogJzE5Mi4xNjguMC4yNCcsXG4gICAgICBwb3J0OiA4MDgwLFxuICAgIH0sXG4gICAge1xuICAgICAgaG9zdDogJzE5Mi4xNjguMC4yOScsXG4gICAgICBwb3J0OiA4MDgwLFxuICAgIH0sXG4gICAge1xuICAgICAgaG9zdDogJzE5Mi4xNjguMC4xMDcnLFxuICAgICAgcG9ydDogODA4MCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGhvc3Q6ICdzaWguc2ZhLnNjJyxcbiAgICAgIHBvcnQ6IDQ0MyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGhvc3Q6ICd0ZXN0LnN1bWFyaXMubmV0JyxcbiAgICAgIHBvcnQ6IDQ0MyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGhvc3Q6ICdvcGVuLnN1bWFyaXMubmV0JyxcbiAgICAgIHBvcnQ6IDQ0MyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGhvc3Q6ICdzZXJ2ZXIuZS1pcy5wcm8nLFxuICAgICAgcG9ydDogNDQzLFxuICAgIH0sXG4gIF0sXG4gIGRlZmF1bHRBcHBOYW1lOiAnU1VNQVJpUycsXG4gIGRlZmF1bHRBbmRyb2lkSW5zdGFsbFVybDogJ2h0dHBzOi8vcGxheS5nb29nbGUuY29tL3N0b3JlL2FwcHMvZGV0YWlscz9pZD1uZXQuc3VtYXJpcy5hcHAnLFxuICBkZWZhdWx0SU9TSW5zdGFsbFVybDogJ2h0dHBzOi8vYXBwcy5hcHBsZS5jb20vdXMvYXBwL3N1bWFyaXMvaWQ2NzM2NzQ3NTIzJyxcbiAgZGVmYXVsdERlc2t0b3BJbnN0YWxsVXJsOiAnaHR0cHM6Ly9naXRsYWIuaWZyZW1lci5mci9zaWgtcHVibGljL3N1bWFyaXMvc3VtYXJpcy1hcHAvLS9yZWxlYXNlcycsXG5cbiAgLy8gU3RvcmFnZVxuICBzdG9yYWdlOiB7XG4gICAgZHJpdmVyT3JkZXI6IFtTdG9yYWdlRHJpdmVycy5TUUxMaXRlLCBTdG9yYWdlRHJpdmVycy5JbmRleGVkREIsIFN0b3JhZ2VEcml2ZXJzLldlYlNRTCwgU3RvcmFnZURyaXZlcnMuTG9jYWxTdG9yYWdlXSxcbiAgfSxcblxuICAvLyBBYm91dFxuICBzb3VyY2VVcmw6ICdodHRwczovL2dpdGxhYi5pZnJlbWVyLmZyL3NpaC1wdWJsaWMvc3VtYXJpcy9uZ3gtc3VtYXJpcy1jb21wb25lbnRzJyxcbiAgcmVwb3J0SXNzdWVVcmw6ICdodHRwczovL2dpdGxhYi5pZnJlbWVyLmZyL3NpaC1wdWJsaWMvc3VtYXJpcy9uZ3gtc3VtYXJpcy1jb21wb25lbnRzLy0vaXNzdWVzJyxcbiAgZm9ydW1Vcmw6IG51bGwsIC8vJ2h0dHBzOi8vZm9ydW0uc3VtYXJpcy5uZXQnLFxuICBoZWxwVXJsOiAnaHR0cHM6Ly9naXRsYWIuaWZyZW1lci5mci9zaWgtcHVibGljL3N1bWFyaXMvc3VtYXJpcy1kb2MvLS9ibG9iL21hc3Rlci91c2VyLW1hbnVhbC9pbmRleF9mci5tZCcsXG4gIHByaXZhY3lQb2xpY3lVcmw6ICdodHRwczovL2dpdGxhYi5pZnJlbWVyLmZyL3NpaC1wdWJsaWMvc3VtYXJpcy9zdW1hcmlzLWFwcC8tL3Jhdy9tYXN0ZXIvZG9jL3ByaXZhY3lfcG9saWN5X2ZyLm1kJyxcbiAgdGVybXNPZlVzZVVybDogJ2h0dHBzOi8vZ2l0bGFiLmlmcmVtZXIuZnIvc2loLXB1YmxpYy9zdW1hcmlzL3N1bWFyaXMtYXBwLy0vcmF3L21hc3Rlci9kb2MvdGVybXNfb2ZfdXNlX2ZyLm1kP3JlZl90eXBlPWhlYWRzJyxcblxuICAvLyBEZXZlbG9wbWVudFxuICBkZWZhdWx0QXV0aFZhbHVlczoge1xuICAgIC8vIFRva2VuIGF1dGggKHVzaW5nIFBlcnNvbi5wdWJrZXkpXG4gICAgdXNlcm5hbWU6ICdhZG1pbkBzdW1hcmlzLm5ldCcsXG4gICAgcGFzc3dvcmQ6ICdhZG1pbicsXG4gIH0sXG5cbiAgYWNjb3VudDoge1xuICAgIGVuYWJsZUxpc3RlbkNoYW5nZXM6IHRydWUsXG4gICAgbGlzdGVuSW50ZXJ2YWxJblNlY29uZHM6IDYwLFxuICB9LFxuXG4gIGVudGl0eUVkaXRvcjoge1xuICAgIGVuYWJsZUxpc3RlbkNoYW5nZXM6IHRydWUsXG4gICAgbGlzdGVuSW50ZXJ2YWxJblNlY29uZHM6IDYwLFxuICB9LFxuXG4gIGZlZWQ6IHtcbiAgICBqc29uRmVlZDoge1xuICAgICAgZnI6IFtcbiAgICAgICAgJ2h0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9kdW5pdGVyL2Nlc2l1bS9tYXN0ZXIvZG9jL2ZlZWQvMS4xL2ZlZWQtZnItRlIuanNvbicsXG4gICAgICAgICdodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZHVuaXRlci9jZXNpdW0vbWFzdGVyL2RvYy9mZWVkL2ZlZWQtZnIuanNvbicsXG4gICAgICAgIC8vJ2h0dHBzOi8vZ2l0bGFiLmlmcmVtZXIuZnIvc2loLXB1YmxpYy9zdW1hcmlzL25neC1zdW1hcmlzLWNvbXBvbmVudHMvLS9yYXcvbWFzdGVyL2RvYy9mZWVkL2ZlZWQtZnIuanNvbicsXG4gICAgICAgIC8vJ2h0dHBzOi8vZ2l0bGFiLmlmcmVtZXIuZnIvc2loLXB1YmxpYy9zdW1hcmlzL25neC1zdW1hcmlzLWNvbXBvbmVudHMvLS9yYXcvZmVhdHVyZS9mZWVkcy9kb2MvZmVlZC9mZWVkLWZyLmpzb24nLFxuICAgICAgXSxcblxuICAgICAgZW46IFsnaHR0cHM6Ly9naXRsYWIuaWZyZW1lci5mci9zaWgtcHVibGljL3N1bWFyaXMvbmd4LXN1bWFyaXMtY29tcG9uZW50cy8tL3Jhdy9tYXN0ZXIvZG9jL2ZlZWQvZmVlZC1lbi5qc29uJ10sXG4gICAgfSxcbiAgICBtYXhDb250ZW50TGVuZ3RoOiAxMDAwLFxuICAgIG1heEFnZUluTW9udGhzOiAtMSxcbiAgICBtYXhDb3VudDogMyxcbiAgfSxcbn0pO1xuIl19