@one-paragon/angular-utilities 0.1.37 → 0.1.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/ngrx/actionable-selector.mjs +16 -14
- package/esm2022/table-builder/classes/GenericTableDataSource.mjs +3 -5
- package/esm2022/table-builder/classes/TableState.mjs +5 -5
- package/esm2022/table-builder/classes/table-builder-general-settings.mjs +3 -3
- package/esm2022/table-builder/classes/table-store.mjs +12 -7
- package/esm2022/table-builder/components/column-builder/column-builder.component.mjs +3 -3
- package/esm2022/table-builder/components/sort-menu/sort-menu.component-store.mjs +3 -2
- package/esm2022/table-builder/components/sort-menu/sort-menu.component.mjs +1 -1
- package/esm2022/table-builder/directives/custom-cell-directive.mjs +1 -1
- package/esm2022/table-builder/directives/multi-sort.directive.mjs +15 -3
- package/esm2022/table-builder/interfaces/report-def.mjs +1 -1
- package/fesm2022/one-paragon-angular-utilities.mjs +86 -69
- package/fesm2022/one-paragon-angular-utilities.mjs.map +1 -1
- package/ngrx/actionable-selector.d.ts +1 -0
- package/package.json +1 -1
- package/table-builder/classes/GenericTableDataSource.d.ts +0 -3
- package/table-builder/classes/TableState.d.ts +3 -3
- package/table-builder/classes/table-builder-general-settings.d.ts +3 -3
- package/table-builder/classes/table-store.d.ts +3 -3
- package/table-builder/components/sort-menu/sort-menu.component-store.d.ts +2 -2
- package/table-builder/interfaces/report-def.d.ts +5 -0
|
@@ -2,26 +2,28 @@ import { createSelector, Store } from "@ngrx/store";
|
|
|
2
2
|
import { v4 as uuid } from 'uuid';
|
|
3
3
|
class AppStoreCache {
|
|
4
4
|
constructor() {
|
|
5
|
-
this.cache =
|
|
5
|
+
this.cache = {};
|
|
6
6
|
this.isInCache = (props, actionableSelectorId) => {
|
|
7
7
|
if (typeof props != 'object')
|
|
8
8
|
props = { props };
|
|
9
|
-
const
|
|
10
|
-
if (
|
|
11
|
-
return
|
|
9
|
+
const itemInCache = this.cache[actionableSelectorId];
|
|
10
|
+
if (!!itemInCache) {
|
|
11
|
+
return shallowEquals(itemInCache, props);
|
|
12
12
|
}
|
|
13
|
-
this.cache
|
|
13
|
+
this.cache[actionableSelectorId] = props;
|
|
14
14
|
return false;
|
|
15
15
|
};
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
18
|
let _store;
|
|
19
|
-
let _cache
|
|
19
|
+
let _cache;
|
|
20
|
+
export const clearActionableSelectorRequestCache = () => _cache.cache = {};
|
|
20
21
|
const setStore = (store) => {
|
|
21
22
|
if (store instanceof Store)
|
|
22
23
|
_store = store;
|
|
23
24
|
};
|
|
24
25
|
export function setUpStoreFactory(store) {
|
|
26
|
+
_cache = new AppStoreCache();
|
|
25
27
|
return () => new Promise((resolve, reject) => {
|
|
26
28
|
setStore(store);
|
|
27
29
|
resolve(null);
|
|
@@ -58,18 +60,18 @@ const deleteProp = (t, prop) => {
|
|
|
58
60
|
delete copy[prop];
|
|
59
61
|
return copy;
|
|
60
62
|
};
|
|
61
|
-
const shallowEquals = (
|
|
62
|
-
const
|
|
63
|
-
const secondKeys = Object.keys(
|
|
64
|
-
if (
|
|
63
|
+
const shallowEquals = (cachedItem, newItem) => {
|
|
64
|
+
const cachedItemKeys = Object.keys(cachedItem);
|
|
65
|
+
const secondKeys = Object.keys(newItem);
|
|
66
|
+
if (cachedItemKeys.length !== secondKeys.length) {
|
|
65
67
|
return false;
|
|
66
68
|
}
|
|
67
|
-
for (let index = 0; index <
|
|
68
|
-
const currentKey =
|
|
69
|
-
if (
|
|
69
|
+
for (let index = 0; index < cachedItemKeys.length; index++) {
|
|
70
|
+
const currentKey = cachedItemKeys[index];
|
|
71
|
+
if (cachedItem[currentKey] !== newItem[currentKey]) {
|
|
70
72
|
return false;
|
|
71
73
|
}
|
|
72
74
|
}
|
|
73
75
|
return true;
|
|
74
76
|
};
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uYWJsZS1zZWxlY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdXRpbGl0aWVzL3NyYy9uZ3J4L2FjdGlvbmFibGUtc2VsZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFVLGNBQWMsRUFBb0IsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxFQUFFLElBQUksSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBTWxDLE1BQU0sYUFBYTtJQUFuQjtRQUNFLFVBQUssR0FBVSxFQUFFLENBQUM7UUFDbEIsY0FBUyxHQUFHLENBQUMsS0FBVSxFQUFFLG9CQUE0QixFQUFXLEVBQUU7WUFDaEUsSUFBRyxPQUFPLEtBQUssSUFBSSxRQUFRO2dCQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDO1lBRS9DLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUVyRCxJQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUM7Z0JBQ2YsT0FBTyxhQUFhLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQzFDO1lBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUN6QyxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsQ0FBQTtJQUNILENBQUM7Q0FBQTtBQUVELElBQUksTUFBa0IsQ0FBQztBQUN2QixJQUFJLE1BQXFCLENBQUM7QUFFMUIsTUFBTSxDQUFDLE1BQU0sbUNBQW1DLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7QUFFM0UsTUFBTSxRQUFRLEdBQUcsQ0FBQyxLQUFZLEVBQUUsRUFBRTtJQUNoQyxJQUFHLEtBQUssWUFBWSxLQUFLO1FBQUUsTUFBTSxHQUFHLEtBQUssQ0FBQztBQUM1QyxDQUFDLENBQUM7QUFFRixNQUFNLFVBQVUsaUJBQWlCLENBQUMsS0FBWTtJQUM1QyxNQUFNLEdBQUcsSUFBSSxhQUFhLEVBQUUsQ0FBQztJQUM3QixPQUFPLEdBQUcsRUFBRSxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQzNDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEIsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLENBQ3RDLGVBQW1FLEVBQ25FLE1BQXlDLEVBQ3pDLGFBQXdDLGFBQWEsRUFDUyxFQUFFO0lBQ2hFLE1BQU0sRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDO0lBQ2xCLE1BQU0sS0FBSyxHQUFHLENBQUMsS0FBYSxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQzdDLGVBQWUsQ0FBQyxLQUFLLENBQUMsRUFDdEIsQ0FBQyxRQUFnQixFQUFFLEVBQUU7UUFDbkIsSUFBRyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBQztZQUN0RCxjQUFjLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3REO1FBQ0QsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQyxDQUMyQyxDQUFDO0lBQy9DLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyxDQUFBO0FBTUQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxJQUFTO0lBQ3JDLE9BQU8sSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksU0FBUyxDQUFDO0FBQzNDLENBQUM7QUFHRDs7OztHQUlHO0FBQ0YsTUFBTSxVQUFVLEdBQUcsQ0FBb0MsQ0FBSSxFQUFFLElBQW9CLEVBQWlCLEVBQUU7SUFDbkcsTUFBTSxJQUFJLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ3RCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xCLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyxDQUFBO0FBRUQsTUFBTSxhQUFhLEdBQUcsQ0FBQyxVQUFrQixFQUFFLE9BQWUsRUFBVyxFQUFFO0lBQ3JFLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDL0MsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4QyxJQUFHLGNBQWMsQ0FBQyxNQUFNLEtBQUssVUFBVSxDQUFDLE1BQU0sRUFBRTtRQUM5QyxPQUFPLEtBQUssQ0FBQztLQUNkO0lBQ0QsS0FBSSxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLGNBQWMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7UUFDekQsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLElBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxLQUFLLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBQztZQUNoRCxPQUFPLEtBQUssQ0FBQztTQUNkO0tBQ0Y7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGlvbiwgY3JlYXRlU2VsZWN0b3IsIE1lbW9pemVkU2VsZWN0b3IsIFN0b3JlIH0gZnJvbSBcIkBuZ3J4L3N0b3JlXCI7XHJcbmltcG9ydCB7IHY0IGFzIHV1aWQgfSBmcm9tICd1dWlkJztcclxuXHJcbnR5cGUgQ2FjaGUgPSB7XHJcbiAgW2tleTogc3RyaW5nXTogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcclxufVxyXG5cclxuY2xhc3MgQXBwU3RvcmVDYWNoZSB7XHJcbiAgY2FjaGU6IENhY2hlID0ge307XHJcbiAgaXNJbkNhY2hlID0gKHByb3BzOiBhbnksIGFjdGlvbmFibGVTZWxlY3RvcklkOiBzdHJpbmcpOiBib29sZWFuID0+IHtcclxuICAgIGlmKHR5cGVvZiBwcm9wcyAhPSAnb2JqZWN0JykgcHJvcHMgPSB7IHByb3BzIH07XHJcblxyXG4gICAgY29uc3QgaXRlbUluQ2FjaGUgPSB0aGlzLmNhY2hlW2FjdGlvbmFibGVTZWxlY3RvcklkXTtcclxuXHJcbiAgICBpZighIWl0ZW1JbkNhY2hlKXtcclxuICAgICAgcmV0dXJuIHNoYWxsb3dFcXVhbHMoaXRlbUluQ2FjaGUsIHByb3BzKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNhY2hlW2FjdGlvbmFibGVTZWxlY3RvcklkXSA9IHByb3BzO1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxufVxyXG5cclxubGV0IF9zdG9yZTogU3RvcmU8YW55PjtcclxubGV0IF9jYWNoZTogQXBwU3RvcmVDYWNoZTtcclxuXHJcbmV4cG9ydCBjb25zdCBjbGVhckFjdGlvbmFibGVTZWxlY3RvclJlcXVlc3RDYWNoZSA9ICgpID0+IF9jYWNoZS5jYWNoZSA9IHt9O1xyXG5cclxuY29uc3Qgc2V0U3RvcmUgPSAoc3RvcmU6IFN0b3JlKSA9PiB7XHJcbiAgaWYoc3RvcmUgaW5zdGFuY2VvZiBTdG9yZSkgX3N0b3JlID0gc3RvcmU7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gc2V0VXBTdG9yZUZhY3Rvcnkoc3RvcmU6IFN0b3JlKXtcclxuICBfY2FjaGUgPSBuZXcgQXBwU3RvcmVDYWNoZSgpO1xyXG4gIHJldHVybiAoKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICBzZXRTdG9yZShzdG9yZSk7XHJcbiAgICByZXNvbHZlKG51bGwpO1xyXG4gIH0pXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDcmVhdGVzIGEgc2VsZWN0b3IgdGhhdCBjYW4gZGlzcGF0Y2ggYW4gYWN0aW9uIGlmIGNvbmRpdGlvbnMgYXJlIG1ldC5cclxuICogTm90ZTogVGhlIHByb3BzIG9mIHRoZSBzZWxlY3RvciBmYWN0b3J5IG11c3QgaW5jbHVkZSB0aGUgcHJvcHMgb2YgdGhlIGFjdGlvbi5cclxuICogQHBhcmFtIHNlbGVjdG9yRmFjdG9yeSBBIG1ldGhvZCB0aGF0IHJldHVybnMgc2VsZWN0b3IuXHJcbiAqIEBwYXJhbSBhY3Rpb24gVGhlIGFjdGlvbiB0aGF0IHdpbGwgYmUgZGlzcGF0Y2hlZCB3aGVuIGNvbmRpdGlvbnMgYXJlIG1ldC5cclxuICogQHBhcmFtIFtkaXNwYXRjaElmID0gZGVmYXVsdEZpbHRlcl0gT3B0aW9uYWwuIEEgbWV0aG9kIHRoYXQgdGFrZXMgdGhlIHJlc3VsdCBvZiB0aGUgc2VsZWN0b3IgYW5kIHJldHVybnMgYSBib29sZWFuLiBUaGUgYWN0aW9ucyBnZXRzIGRpc3BhdGNoZWRcclxuICogaWYgdHJ1ZSBpcyByZXR1cm5lZC4gSWYgbm8gbWV0aG9kIGlzIHBhc3NlZCBpbiB0aGFuIHRoZSBhY3Rpb24gd2lsbCBiZSBkaXNwYXRjaGVkIGlmIHRoZSBzZWxlY3RvciByZXR1cm5zIHVuZGVmaW5lZCBvciBudWxsLlxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZUFjdGlvbmFibGVTZWxlY3RvciA9IDxTdGF0ZSwgUmVzdWx0LCBQcm9wcyA9IGFueT4oXHJcbiAgc2VsZWN0b3JGYWN0b3J5OiAocHJvcHM/OiBQcm9wcykgPT4gTWVtb2l6ZWRTZWxlY3RvcjxTdGF0ZSwgUmVzdWx0PixcclxuICBhY3Rpb246IEFjdGlvblJldHVybmVyPFByb3BzIHwgdW5kZWZpbmVkPixcclxuICBkaXNwYXRjaElmOiAoZGF0YTogUmVzdWx0KSA9PiBib29sZWFuID0gZGVmYXVsdEZpbHRlcixcclxuKTogKHByb3BzPzogUHJvcHMpID0+IEFjdGlvbmFibGVNZW1vaXplZFNlbGVjdG9yPFN0YXRlLCBSZXN1bHQ+ID0+IHtcclxuICBjb25zdCBpZCA9IHV1aWQoKTtcclxuICBjb25zdCBzbGN0ciA9IChwcm9wcz86IFByb3BzKSA9PiBjcmVhdGVTZWxlY3RvcihcclxuICAgIHNlbGVjdG9yRmFjdG9yeShwcm9wcyksXHJcbiAgICAoc2VsZWN0ZWQ6IFJlc3VsdCkgPT4ge1xyXG4gICAgICBpZihkaXNwYXRjaElmKHNlbGVjdGVkKSAmJiAhX2NhY2hlLmlzSW5DYWNoZShwcm9wcywgaWQpKXtcclxuICAgICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiBfc3RvcmUuZGlzcGF0Y2goYWN0aW9uKHByb3BzKSkpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBzZWxlY3RlZDtcclxuICAgIH1cclxuICApIGFzIEFjdGlvbmFibGVNZW1vaXplZFNlbGVjdG9yPFN0YXRlLCBSZXN1bHQ+O1xyXG4gIHJldHVybiBzbGN0cjtcclxufVxyXG5cclxudHlwZSBBY3Rpb25hYmxlTWVtb2l6ZWRTZWxlY3RvcjxTdGF0ZSwgUmVzdWx0PiA9IE1lbW9pemVkU2VsZWN0b3I8U3RhdGUsIFJlc3VsdD47XHJcblxyXG5leHBvcnQgdHlwZSBBY3Rpb25SZXR1cm5lcjxQcm9wcz4gPSAocHJvcHM6IFByb3BzKSA9PiBBY3Rpb247XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdEZpbHRlcihkYXRhOiBhbnkpIHtcclxuICByZXR1cm4gZGF0YSA9PSBudWxsIHx8IGRhdGEgPT0gdW5kZWZpbmVkO1xyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIFJldHVybnMgYSBzaGFsbG93IGNsb25lIHdpdGhvdXQgcHJvcC4gV2lsbCBub3QgZXJyb3IgaWYgcHJvcCBkb2VzIG5vdCBleGlzdC5cclxuICogQHBhcmFtIHByb3AgbmFtZSBvZiBwcm9wZXJ0eSB0byBiZSByZW1vdmVkLlxyXG4gKiBAcmV0dXJucyBhIHNoYWxsb3cgY2xvbmUgd2l0aG91dCBwcm9wXHJcbiAqL1xyXG4gY29uc3QgZGVsZXRlUHJvcCA9IDxUIGV4dGVuZHMge30sIFByb3AgZXh0ZW5kcyBzdHJpbmc+KHQ6IFQsIHByb3A6IGtleW9mIFQgJiBQcm9wKTogT21pdDxULCBQcm9wPiA9PiB7XHJcbiAgY29uc3QgY29weSA9IHsgLi4udCB9O1xyXG4gIGRlbGV0ZSBjb3B5W3Byb3BdO1xyXG4gIHJldHVybiBjb3B5O1xyXG59XHJcblxyXG5jb25zdCBzaGFsbG93RXF1YWxzID0gKGNhY2hlZEl0ZW06IG9iamVjdCwgbmV3SXRlbTogb2JqZWN0KTogYm9vbGVhbiA9PiB7XHJcbiAgY29uc3QgY2FjaGVkSXRlbUtleXMgPSBPYmplY3Qua2V5cyhjYWNoZWRJdGVtKTtcclxuICBjb25zdCBzZWNvbmRLZXlzID0gT2JqZWN0LmtleXMobmV3SXRlbSk7XHJcbiAgaWYoY2FjaGVkSXRlbUtleXMubGVuZ3RoICE9PSBzZWNvbmRLZXlzLmxlbmd0aCkge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICBmb3IobGV0IGluZGV4ID0gMDsgaW5kZXggPCBjYWNoZWRJdGVtS2V5cy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgIGNvbnN0IGN1cnJlbnRLZXkgPSBjYWNoZWRJdGVtS2V5c1tpbmRleF07XHJcbiAgICBpZihjYWNoZWRJdGVtW2N1cnJlbnRLZXldICE9PSBuZXdJdGVtW2N1cnJlbnRLZXldKXtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gdHJ1ZTtcclxufVxyXG4iXX0=
|
|
@@ -1,13 +1,11 @@
|
|
|
1
|
+
import { MultiSortDirective } from '../directives/multi-sort.directive';
|
|
1
2
|
import { MatTableObservableDataSource } from './MatTableObservableDataSource';
|
|
2
3
|
import { sortData } from '../functions/sort-data-function';
|
|
3
|
-
export function isMultiSort(sort) {
|
|
4
|
-
return Array.isArray(sort.rules);
|
|
5
|
-
}
|
|
6
4
|
export class GenericTableDataSource extends MatTableObservableDataSource {
|
|
7
5
|
constructor(dataSrc) {
|
|
8
6
|
super(dataSrc);
|
|
9
7
|
const baseSort = this.sortData;
|
|
10
|
-
this.sortData = ((data, sort) =>
|
|
8
|
+
this.sortData = ((data, sort) => sort instanceof MultiSortDirective ? sortData(data, sort.rules) : baseSort(data, sort));
|
|
11
9
|
}
|
|
12
10
|
}
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2VuZXJpY1RhYmxlRGF0YVNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdXRpbGl0aWVzL3NyYy90YWJsZS1idWlsZGVyL2NsYXNzZXMvR2VuZXJpY1RhYmxlRGF0YVNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQTtBQUM3RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHM0QsTUFBTSxPQUFPLHNCQUEwQixTQUFRLDRCQUErQjtJQUc1RSxZQUFZLE9BQXdCO1FBRWxDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVmLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLElBQWMsRUFBRSxFQUFFLENBQUMsSUFBSSxZQUFZLGtCQUFrQixDQUFDLENBQUMsQ0FBRSxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzNJLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgTXVsdGlTb3J0RGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9tdWx0aS1zb3J0LmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IE1hdFRhYmxlT2JzZXJ2YWJsZURhdGFTb3VyY2UgfSBmcm9tICcuL01hdFRhYmxlT2JzZXJ2YWJsZURhdGFTb3VyY2UnXHJcbmltcG9ydCB7IHNvcnREYXRhIH0gZnJvbSAnLi4vZnVuY3Rpb25zL3NvcnQtZGF0YS1mdW5jdGlvbic7XHJcbmltcG9ydCB7IE1hdFNvcnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcclxuXHJcbmV4cG9ydCBjbGFzcyBHZW5lcmljVGFibGVEYXRhU291cmNlPFQ+IGV4dGVuZHMgTWF0VGFibGVPYnNlcnZhYmxlRGF0YVNvdXJjZTxUPlxyXG57XHJcblxyXG4gIGNvbnN0cnVjdG9yKGRhdGFTcmM6IE9ic2VydmFibGU8VFtdPilcclxuICB7XHJcbiAgICBzdXBlcihkYXRhU3JjKTtcclxuXHJcbiAgICBjb25zdCBiYXNlU29ydCA9IHRoaXMuc29ydERhdGE7XHJcbiAgICB0aGlzLnNvcnREYXRhID0gKChkYXRhOiBUW10sIHNvcnQ6ICBNYXRTb3J0KSA9PiBzb3J0IGluc3RhbmNlb2YgTXVsdGlTb3J0RGlyZWN0aXZlID8gIHNvcnREYXRhKGRhdGEsIHNvcnQucnVsZXMpIDogYmFzZVNvcnQoZGF0YSwgc29ydCkpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { NotPersistedTableSettings, PersistedTableSettings } from './table-builder-general-settings';
|
|
2
2
|
class KeysToDelete {
|
|
3
3
|
constructor() {
|
|
4
4
|
this.initializationState = null;
|
|
5
5
|
this.metaData = null;
|
|
6
|
-
this.
|
|
6
|
+
this.notPersistedTableSettings = null;
|
|
7
7
|
this.linkMaps = null;
|
|
8
8
|
}
|
|
9
9
|
}
|
|
@@ -22,11 +22,11 @@ export const defaultTableState = {
|
|
|
22
22
|
hiddenKeys: [],
|
|
23
23
|
sorted: [],
|
|
24
24
|
userDefined: { order: {}, widths: {}, table: {} },
|
|
25
|
-
persistedTableSettings: new
|
|
26
|
-
|
|
25
|
+
persistedTableSettings: new PersistedTableSettings(),
|
|
26
|
+
notPersistedTableSettings: new NotPersistedTableSettings(),
|
|
27
27
|
pageSize: 10,
|
|
28
28
|
linkMaps: {},
|
|
29
29
|
groupByKeys: [],
|
|
30
30
|
groups: []
|
|
31
31
|
};
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFibGVTdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdXRpbGl0aWVzL3NyYy90YWJsZS1idWlsZGVyL2NsYXNzZXMvVGFibGVTdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQThCckcsTUFBTSxZQUFZO0lBQWxCO1FBQ0Usd0JBQW1CLEdBQUcsSUFBSSxDQUFDO1FBQzNCLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFDaEIsOEJBQXlCLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLGFBQVEsR0FBRyxJQUFJLENBQUM7SUFDbEIsQ0FBQztDQUFBO0FBQ0QsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxZQUFZLEVBQUUsQ0FBQyxDQUFDO0FBRTVELE1BQU0sQ0FBTixJQUFZLG1CQUtYO0FBTEQsV0FBWSxtQkFBbUI7SUFDN0IsbUVBQU8sQ0FBQTtJQUNQLGlGQUFjLENBQUE7SUFDZCxtRkFBZSxDQUFBO0lBQ2YsK0RBQUssQ0FBQTtBQUNQLENBQUMsRUFMVyxtQkFBbUIsS0FBbkIsbUJBQW1CLFFBSzlCO0FBRUQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQWU7SUFDM0MsbUJBQW1CLEVBQUUsbUJBQW1CLENBQUMsT0FBTztJQUNoRCxRQUFRLEVBQUUsRUFBRTtJQUNaLE9BQU8sRUFBRSxFQUFFO0lBQ1gsVUFBVSxFQUFFLEVBQUU7SUFDZCxNQUFNLEVBQUUsRUFBRTtJQUNWLFdBQVcsRUFBQyxFQUFDLEtBQUssRUFBQyxFQUFFLEVBQUMsTUFBTSxFQUFDLEVBQUUsRUFBQyxLQUFLLEVBQUMsRUFBRSxFQUFDO0lBQ3pDLHNCQUFzQixFQUFHLElBQUksc0JBQXNCLEVBQUU7SUFDckQseUJBQXlCLEVBQUcsSUFBSSx5QkFBeUIsRUFBRTtJQUMzRCxRQUFRLEVBQUUsRUFBRTtJQUNaLFFBQVEsRUFBQyxFQUFFO0lBQ1gsV0FBVyxFQUFFLEVBQUU7SUFDZixNQUFNLEVBQUUsRUFBRTtDQUNYLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDdXN0b21GaWx0ZXIsIEZpbHRlckluZm8gfSBmcm9tICcuL2ZpbHRlci1pbmZvJztcclxuaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gJy4uL2ludGVyZmFjZXMvZGljdGlvbmFyeSc7XHJcbmltcG9ydCB7IFNvcnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcclxuaW1wb3J0IHsgTWV0YURhdGEsIFRhcmdldCB9IGZyb20gJy4uL2ludGVyZmFjZXMvcmVwb3J0LWRlZic7XHJcbmltcG9ydCB7IE5vdFBlcnNpc3RlZFRhYmxlU2V0dGluZ3MsIFBlcnNpc3RlZFRhYmxlU2V0dGluZ3MgfSBmcm9tICcuL3RhYmxlLWJ1aWxkZXItZ2VuZXJhbC1zZXR0aW5ncyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEdyb3VwIHtcclxuICBncm91cE5hbWU/OiBzdHJpbmc7XHJcbiAgcGFyZW50R3JvdXBOYW1lPzogc3RyaW5nO1xyXG4gIGlzRXhwYW5kZWQ/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFBlcnNpc3RlZFRhYmxlU3RhdGUge1xyXG4gIGhpZGRlbktleXM/OiBzdHJpbmcgW107XHJcbiAgcGFnZVNpemU/OiBudW1iZXI7XHJcbiAgZmlsdGVyczogRGljdGlvbmFyeTxGaWx0ZXJJbmZvIHwgQ3VzdG9tRmlsdGVyPjtcclxuICBzb3J0ZWQgOiBTb3J0IFtdO1xyXG4gIHVzZXJEZWZpbmVkIDoge29yZGVyOkRpY3Rpb25hcnk8bnVtYmVyPix3aWR0aHM6RGljdGlvbmFyeTxudW1iZXI+LHRhYmxlOnt3aWR0aD86bnVtYmVyfX07XHJcbiAgcGVyc2lzdGVkVGFibGVTZXR0aW5ncyA6IFBlcnNpc3RlZFRhYmxlU2V0dGluZ3M7XHJcbiAgZ3JvdXBCeUtleXM6IHN0cmluZ1tdO1xyXG4gIGdyb3VwczogR3JvdXBbXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUYWJsZVN0YXRlIGV4dGVuZHMgUmVxdWlyZWQ8UGVyc2lzdGVkVGFibGVTdGF0ZT4ge1xyXG4gIGluaXRpYWxpemF0aW9uU3RhdGU6IEluaXRpYWxpemF0aW9uU3RhdGU7XHJcbiAgbWV0YURhdGE6IERpY3Rpb25hcnk8TWV0YURhdGE+O1xyXG4gIG5vdFBlcnNpc3RlZFRhYmxlU2V0dGluZ3MgOiBOb3RQZXJzaXN0ZWRUYWJsZVNldHRpbmdzO1xyXG4gIGxpbmtNYXBzOntba2V5OnN0cmluZ106e1xyXG4gICAgbGluazogKHQ6YW55KT0+c3RyaW5nLFxyXG4gICAgdXNlUm91dGVyTGluazogYm9vbGVhbixcclxuICAgIHRhcmdldDogVGFyZ2V0XHJcbiAgfX07XHJcbn1cclxudHlwZSBSZXF1aXJlTnVsbDxUPiA9IHsgW0sgaW4ga2V5b2YgVF06IG51bGwgfTtcclxuY2xhc3MgS2V5c1RvRGVsZXRlIGltcGxlbWVudHMgIFJlcXVpcmVOdWxsPE9taXQ8VGFibGVTdGF0ZSwga2V5b2YgUGVyc2lzdGVkVGFibGVTdGF0ZT4+IHtcclxuICBpbml0aWFsaXphdGlvblN0YXRlID0gbnVsbDtcclxuICBtZXRhRGF0YSA9IG51bGw7XHJcbiAgbm90UGVyc2lzdGVkVGFibGVTZXR0aW5ncyA9IG51bGw7XHJcbiAgbGlua01hcHMgPSBudWxsO1xyXG59XHJcbmV4cG9ydCBjb25zdCBrZXlzVG9EZWxldGUgPSBPYmplY3Qua2V5cyhuZXcgS2V5c1RvRGVsZXRlKCkpO1xyXG5cclxuZXhwb3J0IGVudW0gSW5pdGlhbGl6YXRpb25TdGF0ZSB7XHJcbiAgQ3JlYXRlZCxcclxuICBNZXRhRGF0YUxvYWRlZCxcclxuICBMb2FkZWRGcm9tU3RvcmUsXHJcbiAgUmVhZHksXHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBkZWZhdWx0VGFibGVTdGF0ZTogVGFibGVTdGF0ZSA9IHtcclxuICBpbml0aWFsaXphdGlvblN0YXRlOiBJbml0aWFsaXphdGlvblN0YXRlLkNyZWF0ZWQsXHJcbiAgbWV0YURhdGE6IHt9LFxyXG4gIGZpbHRlcnM6IHt9LFxyXG4gIGhpZGRlbktleXM6IFtdLFxyXG4gIHNvcnRlZDogW10sXHJcbiAgdXNlckRlZmluZWQ6e29yZGVyOnt9LHdpZHRoczp7fSx0YWJsZTp7fX0sXHJcbiAgcGVyc2lzdGVkVGFibGVTZXR0aW5ncyA6IG5ldyBQZXJzaXN0ZWRUYWJsZVNldHRpbmdzKCksXHJcbiAgbm90UGVyc2lzdGVkVGFibGVTZXR0aW5ncyA6IG5ldyBOb3RQZXJzaXN0ZWRUYWJsZVNldHRpbmdzKCksXHJcbiAgcGFnZVNpemU6IDEwLFxyXG4gIGxpbmtNYXBzOnt9LFxyXG4gIGdyb3VwQnlLZXlzOiBbXSxcclxuICBncm91cHM6IFtdXHJcbn07XHJcbiJdfQ==
|
|
@@ -33,7 +33,7 @@ export class TableColumnHeaderSettings {
|
|
|
33
33
|
this.noHeader = false;
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
|
-
export class
|
|
36
|
+
export class PersistedTableSettings {
|
|
37
37
|
constructor(tableSettings) {
|
|
38
38
|
this.collapseHeader = false;
|
|
39
39
|
this.collapseFooter = false;
|
|
@@ -43,7 +43,7 @@ export class PesrsistedTableSettings {
|
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
|
-
export class
|
|
46
|
+
export class NotPersistedTableSettings {
|
|
47
47
|
constructor(tableSettings) {
|
|
48
48
|
this.hideExport = true;
|
|
49
49
|
this.hideFilter = true;
|
|
@@ -65,4 +65,4 @@ export class NotPersisitedTableSettings {
|
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYnVpbGRlci1nZW5lcmFsLXNldHRpbmdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY2xhc3Nlcy90YWJsZS1idWlsZGVyLWdlbmVyYWwtc2V0dGluZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUUvQixNQUFNLE9BQU8sb0JBQW9CO0lBQy9CLFlBQVksUUFBZ0M7UUFPNUMsbUJBQWMsR0FBRyxJQUFJLDBCQUEwQixFQUFFLENBQUM7UUFDbEQsbUJBQWMsR0FBRyxJQUFJLDBCQUEwQixFQUFFLENBQUM7UUFDbEQseUJBQW9CLEdBQUcsSUFBSSx5QkFBeUIsRUFBRSxDQUFDO1FBUnJELElBQUcsUUFBUSxFQUFDO1lBQ1YsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ3BELEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNwRCxLQUFLLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1NBQ2pFO0lBQ0gsQ0FBQztDQUlGO0FBUUQsTUFBTSxPQUFPLDBCQUEwQjtJQUF2QztRQUNFLGVBQVUsR0FBRyxLQUFLLENBQUE7UUFDbEIsZUFBVSxHQUFHLEtBQUssQ0FBQTtRQUNsQix1QkFBa0IsR0FBRyxLQUFLLENBQUE7UUFDMUIsZUFBVSxHQUFHLEtBQUssQ0FBQTtRQUNsQixhQUFRLEdBQUcsS0FBSyxDQUFBO1FBQ2hCLGFBQVEsR0FBRyxLQUFLLENBQUE7UUFDaEIsMkJBQXNCLEdBQUcsSUFBSSxDQUFDO0lBQ2hDLENBQUM7Q0FBQTtBQUVELE1BQU0sT0FBTywwQkFBMEI7SUFBdkM7UUFDRSxhQUFRLEdBQUcsS0FBSyxDQUFBO0lBQ2xCLENBQUM7Q0FBQTtBQUVELE1BQU0sT0FBTyx5QkFBeUI7SUFBdEM7UUFDRSxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGFBQVEsR0FBRyxLQUFLLENBQUM7SUFDbkIsQ0FBQztDQUFBO0FBRUQsTUFBTSxPQUFPLHNCQUFzQjtJQUNqQyxZQUFZLGFBQTZEO1FBTXpFLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBTnJCLElBQUksYUFBYSxFQUFDO1lBQ2hCLElBQUksQ0FBQyxjQUFjLEdBQUksYUFBc0MsQ0FBQyxjQUFjLEVBQUUsUUFBUSxJQUFLLGFBQXdDLENBQUMsY0FBYyxDQUFDO1lBQ25KLElBQUksQ0FBQyxjQUFjLEdBQUksYUFBc0MsQ0FBQyxjQUFjLEVBQUUsUUFBUSxJQUFLLGFBQXdDLENBQUMsY0FBYyxDQUFDO1NBQ3BKO0lBQ0gsQ0FBQztDQUdGO0FBRUQsTUFBTSxPQUFPLHlCQUF5QjtJQUNwQyxZQUFZLGFBQW9DO1FBWWhELGVBQVUsR0FBRyxJQUFJLENBQUE7UUFDakIsZUFBVSxHQUFHLElBQUksQ0FBQTtRQUNqQix1QkFBa0IsR0FBRyxJQUFJLENBQUE7UUFDekIsYUFBUSxHQUFHLElBQUksQ0FBQTtRQUNmLGlDQUE0QixHQUFHLElBQUksQ0FBQztRQUNwQyxlQUFVLEdBQUcsSUFBSSxDQUFBO1FBQ2pCLDRCQUF1QixHQUFHLElBQUksQ0FBQztRQUMvQixxQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFsQnRCLElBQUcsYUFBYSxFQUFDO1lBQ2YsSUFBSSxDQUFDLFVBQVUsR0FBRyxhQUFhLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQztZQUMxRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsYUFBYSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQztZQUMxRSxJQUFJLENBQUMsVUFBVSxHQUFHLGFBQWEsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDO1lBQzFELElBQUksQ0FBQyxRQUFRLEdBQUcsYUFBYSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUM7WUFDdEQsSUFBSSxDQUFDLDRCQUE0QixHQUFHLGFBQWEsQ0FBQyxjQUFjLENBQUMsc0JBQXNCLENBQUM7WUFDeEYsSUFBSSxDQUFDLFVBQVUsR0FBRyxhQUFhLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQztZQUMxRCxJQUFJLENBQUMsdUJBQXVCLEdBQUcsYUFBYSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQztZQUM1RSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsYUFBYSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQztTQUNyRTtJQUNILENBQUM7Q0FTRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1lcmdlIH0gZnJvbSBcImxvZGFzaFwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEdlbmVyYWxUYWJsZVNldHRpbmdzIHtcclxuICBjb25zdHJ1Y3RvcihzZXR0aW5ncz8gOiBUYWJsZUJ1aWxkZXJTZXR0aW5ncyl7XHJcbiAgICBpZihzZXR0aW5ncyl7XHJcbiAgICAgIG1lcmdlKHRoaXMuaGVhZGVyU2V0dGluZ3MsIHNldHRpbmdzLmhlYWRlclNldHRpbmdzKTtcclxuICAgICAgbWVyZ2UodGhpcy5mb290ZXJTZXR0aW5ncywgc2V0dGluZ3MuZm9vdGVyU2V0dGluZ3MpO1xyXG4gICAgICBtZXJnZSh0aGlzLmNvbHVtbkhlYWRlclNldHRpbmdzLCBzZXR0aW5ncy5jb2x1bW5IZWFkZXJTZXR0aW5ncyk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGhlYWRlclNldHRpbmdzID0gbmV3IFRhYmxlV3JhcHBlckhlYWRlclNldHRpbmdzKCk7XHJcbiAgZm9vdGVyU2V0dGluZ3MgPSBuZXcgVGFibGVXcmFwcGVyRm9vdGVyU2V0dGluZ3MoKTtcclxuICBjb2x1bW5IZWFkZXJTZXR0aW5ncyA9IG5ldyBUYWJsZUNvbHVtbkhlYWRlclNldHRpbmdzKCk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVCdWlsZGVyU2V0dGluZ3Mge1xyXG4gIGhlYWRlclNldHRpbmdzPyA6IFBhcnRpYWw8VGFibGVXcmFwcGVySGVhZGVyU2V0dGluZ3M+O1xyXG4gIGZvb3RlclNldHRpbmdzPyA6IFBhcnRpYWw8VGFibGVXcmFwcGVyRm9vdGVyU2V0dGluZ3M+O1xyXG4gIGNvbHVtbkhlYWRlclNldHRpbmdzPyA6IFBhcnRpYWw8VGFibGVDb2x1bW5IZWFkZXJTZXR0aW5ncz47XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBUYWJsZVdyYXBwZXJIZWFkZXJTZXR0aW5ncyB7XHJcbiAgaGlkZUV4cG9ydCA9IGZhbHNlXHJcbiAgaGlkZUZpbHRlciA9IGZhbHNlXHJcbiAgaGlkZUNvbHVtblNldHRpbmdzID0gZmFsc2VcclxuICBoaWRlSGVhZGVyID0gZmFsc2VcclxuICBoaWRlU29ydCA9IGZhbHNlXHJcbiAgY29sbGFwc2UgPSBmYWxzZVxyXG4gIHNob3dUaXRsZVdoZW5Db2xsYXBzZWQgPSB0cnVlO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgVGFibGVXcmFwcGVyRm9vdGVyU2V0dGluZ3Mge1xyXG4gIGNvbGxhcHNlID0gZmFsc2VcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFRhYmxlQ29sdW1uSGVhZGVyU2V0dGluZ3Mge1xyXG4gIG5vRmlsdGVycyA9IGZhbHNlO1xyXG4gIG5vSGVhZGVyID0gZmFsc2U7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBQZXJzaXN0ZWRUYWJsZVNldHRpbmdzIHtcclxuICBjb25zdHJ1Y3Rvcih0YWJsZVNldHRpbmdzPyA6R2VuZXJhbFRhYmxlU2V0dGluZ3MgfCBQZXJzaXN0ZWRUYWJsZVNldHRpbmdzKXtcclxuICAgIGlmICh0YWJsZVNldHRpbmdzKXtcclxuICAgICAgdGhpcy5jb2xsYXBzZUhlYWRlciA9ICh0YWJsZVNldHRpbmdzIGFzIEdlbmVyYWxUYWJsZVNldHRpbmdzKS5oZWFkZXJTZXR0aW5ncz8uY29sbGFwc2UgPz8gKHRhYmxlU2V0dGluZ3MgYXMgUGVyc2lzdGVkVGFibGVTZXR0aW5ncykuY29sbGFwc2VIZWFkZXI7XHJcbiAgICAgIHRoaXMuY29sbGFwc2VGb290ZXIgPSAodGFibGVTZXR0aW5ncyBhcyBHZW5lcmFsVGFibGVTZXR0aW5ncykuZm9vdGVyU2V0dGluZ3M/LmNvbGxhcHNlID8/ICh0YWJsZVNldHRpbmdzIGFzIFBlcnNpc3RlZFRhYmxlU2V0dGluZ3MpLmNvbGxhcHNlRm9vdGVyO1xyXG4gICAgfVxyXG4gIH1cclxuICBjb2xsYXBzZUhlYWRlciA9IGZhbHNlO1xyXG4gIGNvbGxhcHNlRm9vdGVyID0gZmFsc2U7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBOb3RQZXJzaXN0ZWRUYWJsZVNldHRpbmdzIHtcclxuICBjb25zdHJ1Y3Rvcih0YWJsZVNldHRpbmdzPyA6R2VuZXJhbFRhYmxlU2V0dGluZ3Mpe1xyXG4gICAgaWYodGFibGVTZXR0aW5ncyl7XHJcbiAgICAgIHRoaXMuaGlkZUV4cG9ydCA9IHRhYmxlU2V0dGluZ3MuaGVhZGVyU2V0dGluZ3MuaGlkZUV4cG9ydDtcclxuICAgICAgdGhpcy5oaWRlQ29sdW1uU2V0dGluZ3MgPSB0YWJsZVNldHRpbmdzLmhlYWRlclNldHRpbmdzLmhpZGVDb2x1bW5TZXR0aW5ncztcclxuICAgICAgdGhpcy5oaWRlRmlsdGVyID0gdGFibGVTZXR0aW5ncy5oZWFkZXJTZXR0aW5ncy5oaWRlRmlsdGVyO1xyXG4gICAgICB0aGlzLmhpZGVTb3J0ID0gdGFibGVTZXR0aW5ncy5oZWFkZXJTZXR0aW5ncy5oaWRlU29ydDtcclxuICAgICAgdGhpcy5zaG93VGl0bGVXaGVuSGVhZGVyQ29sbGFwc2VkID0gdGFibGVTZXR0aW5ncy5oZWFkZXJTZXR0aW5ncy5zaG93VGl0bGVXaGVuQ29sbGFwc2VkO1xyXG4gICAgICB0aGlzLmhpZGVIZWFkZXIgPSB0YWJsZVNldHRpbmdzLmhlYWRlclNldHRpbmdzLmhpZGVIZWFkZXI7XHJcbiAgICAgIHRoaXMuaGlkZUNvbHVtbkhlYWRlckZpbHRlcnMgPSB0YWJsZVNldHRpbmdzLmNvbHVtbkhlYWRlclNldHRpbmdzLm5vRmlsdGVycztcclxuICAgICAgdGhpcy5oaWRlQ29sdW1uSGVhZGVyID0gdGFibGVTZXR0aW5ncy5jb2x1bW5IZWFkZXJTZXR0aW5ncy5ub0hlYWRlcjtcclxuICAgIH1cclxuICB9XHJcbiAgaGlkZUV4cG9ydCA9IHRydWVcclxuICBoaWRlRmlsdGVyID0gdHJ1ZVxyXG4gIGhpZGVDb2x1bW5TZXR0aW5ncyA9IHRydWVcclxuICBoaWRlU29ydCA9IHRydWVcclxuICBzaG93VGl0bGVXaGVuSGVhZGVyQ29sbGFwc2VkID0gdHJ1ZTtcclxuICBoaWRlSGVhZGVyID0gdHJ1ZVxyXG4gIGhpZGVDb2x1bW5IZWFkZXJGaWx0ZXJzID0gdHJ1ZTtcclxuICBoaWRlQ29sdW1uSGVhZGVyID0gdHJ1ZTtcclxufVxyXG4iXX0=
|
|
@@ -9,7 +9,7 @@ import update from 'immutability-helper';
|
|
|
9
9
|
import { filter, last, map, tap } from 'rxjs/operators';
|
|
10
10
|
import { moveItemInArray } from '@angular/cdk/drag-drop';
|
|
11
11
|
import { notNull, onceWhen } from '../../rxjs/rxjs-operators';
|
|
12
|
-
import {
|
|
12
|
+
import { NotPersistedTableSettings, PersistedTableSettings } from './table-builder-general-settings';
|
|
13
13
|
import * as i0 from "@angular/core";
|
|
14
14
|
export function stateIs(initializationState) {
|
|
15
15
|
return (state) => state.initializationState === initializationState;
|
|
@@ -164,6 +164,11 @@ class TableStore extends ComponentStore {
|
|
|
164
164
|
customCell: merge.customCell ?? orig.customCell,
|
|
165
165
|
transform: merge.transform ?? orig.transform,
|
|
166
166
|
click: merge.click ?? orig.click,
|
|
167
|
+
classes: merge.classes ?? orig.classes,
|
|
168
|
+
noSort: merge.noSort ?? orig.noSort,
|
|
169
|
+
template: merge.template ?? orig.template,
|
|
170
|
+
toolTip: merge.toolTip ?? orig.toolTip,
|
|
171
|
+
useIcon: merge.useIcon ?? orig.useIcon,
|
|
167
172
|
};
|
|
168
173
|
};
|
|
169
174
|
this.setIntializationState = this.updater((state, initializationState) => {
|
|
@@ -199,12 +204,12 @@ class TableStore extends ComponentStore {
|
|
|
199
204
|
this.toggleCollapseHeader = this.updater((state) => {
|
|
200
205
|
const tableSettings = { ...state.persistedTableSettings };
|
|
201
206
|
tableSettings.collapseHeader = !tableSettings.collapseHeader;
|
|
202
|
-
return ({ ...state, persistedTableSettings: new
|
|
207
|
+
return ({ ...state, persistedTableSettings: new PersistedTableSettings(tableSettings) });
|
|
203
208
|
});
|
|
204
209
|
this.toggleCollapseFooter = this.updater((state) => {
|
|
205
210
|
const tableSettings = { ...state.persistedTableSettings };
|
|
206
211
|
tableSettings.collapseFooter = !tableSettings.collapseFooter;
|
|
207
|
-
return ({ ...state, persistedTableSettings: new
|
|
212
|
+
return ({ ...state, persistedTableSettings: new PersistedTableSettings(tableSettings) });
|
|
208
213
|
});
|
|
209
214
|
this.addGroupByKey = this.updater((state, groupByKey) => ({
|
|
210
215
|
...state,
|
|
@@ -223,13 +228,13 @@ class TableStore extends ComponentStore {
|
|
|
223
228
|
this.setTableSettings = this.updater((state, settings) => {
|
|
224
229
|
const s = {
|
|
225
230
|
...state,
|
|
226
|
-
persistedTableSettings: new
|
|
227
|
-
|
|
231
|
+
persistedTableSettings: new PersistedTableSettings(settings),
|
|
232
|
+
notPersistedTableSettings: new NotPersistedTableSettings(settings)
|
|
228
233
|
};
|
|
229
234
|
return s;
|
|
230
235
|
});
|
|
231
236
|
this.tableSettings$ = this.select(state => {
|
|
232
|
-
const ts = { ...state.persistedTableSettings, ...state.
|
|
237
|
+
const ts = { ...state.persistedTableSettings, ...state.notPersistedTableSettings };
|
|
233
238
|
return ts;
|
|
234
239
|
});
|
|
235
240
|
this.setLinkMaps = this.updater((state, maps) => {
|
|
@@ -290,4 +295,4 @@ export const orderMetaData = (state) => {
|
|
|
290
295
|
:
|
|
291
296
|
Object.values(state.metaData).sort((a, b) => a.order - b.order);
|
|
292
297
|
};
|
|
293
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jbGFzc2VzL3RhYmxlLXN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sMEJBQTBCLENBQUM7QUFDeEUsT0FBTyxFQUFFLEVBQUUsSUFBSSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbEMsT0FBTyxFQUFFLGlCQUFpQixFQUFTLG1CQUFtQixFQUFFLFlBQVksRUFBbUMsTUFBTSxjQUFjLENBQUM7QUFDNUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFzQix1QkFBdUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25GLE9BQU8sRUFBNEIsY0FBYyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUc7QUFDekQsT0FBTyxNQUFNLE1BQU0scUJBQXFCLENBQUM7QUFFekMsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBd0IsMEJBQTBCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7QUFFN0gsTUFBTSxVQUFVLE9BQU8sQ0FBQyxtQkFBd0M7SUFDOUQsT0FBTyxDQUFDLEtBQWlCLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsS0FBSyxtQkFBbUIsQ0FBQztBQUNsRixDQUFD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TUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdELE9BQU8sWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNCLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0csQ0FBQztZQUNELE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQU0sQ0FBQyxDQUFBO0FBQ2xFLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZpZWxkVHlwZSwgTWV0YURhdGEsIFNvcnREZWYgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3JlcG9ydC1kZWYnO1xyXG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSAndXVpZCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVmYXVsdFRhYmxlU3RhdGUsIEdyb3VwLCBJbml0aWFsaXphdGlvblN0YXRlLCBrZXlzVG9EZWxldGUsIFBlcnNpc3RlZFRhYmxlU3RhdGUsIFRhYmxlU3RhdGUgfSBmcm9tICcuL1RhYmxlU3RhdGUnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QsIFByZWRpY2F0ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUYWJsZUJ1aWxkZXJDb25maWcsIFRhYmxlQnVpbGRlckNvbmZpZ1Rva2VuIH0gZnJvbSAnLi9UYWJsZUJ1aWxkZXJDb25maWcnO1xyXG5pbXBvcnQgeyBDdXN0b21GaWx0ZXIsIEZpbHRlckluZm8sIGlzQ3VzdG9tRmlsdGVyLCBpc0ZpbHRlckluZm8gfSBmcm9tICcuL2ZpbHRlci1pbmZvJztcclxuaW1wb3J0IHsgU29ydCwgU29ydERpcmVjdGlvbiB9ICBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JyA7XHJcbmltcG9ydCB7IENvbXBvbmVudFN0b3JlIH0gZnJvbSAnQG5ncngvY29tcG9uZW50LXN0b3JlJyAgO1xyXG5pbXBvcnQgdXBkYXRlIGZyb20gJ2ltbXV0YWJpbGl0eS1oZWxwZXInO1xyXG5pbXBvcnQgeyBEaWN0aW9uYXJ5IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9kaWN0aW9uYXJ5JztcclxuaW1wb3J0IHsgZmlsdGVyLCBsYXN0LCBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xyXG5pbXBvcnQgeyBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuaW1wb3J0IHsgbm90TnVsbCwgb25jZVdoZW4gfSBmcm9tICcuLi8uLi9yeGpzL3J4anMtb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgR2VuZXJhbFRhYmxlU2V0dGluZ3MsIE5vdFBlcnNpc2l0ZWRUYWJsZVNldHRpbmdzLCBQZXNyc2lzdGVkVGFibGVTZXR0aW5ncyB9IGZyb20gJy4vdGFibGUtYnVpbGRlci1nZW5lcmFsLXNldHRpbmdzJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBzdGF0ZUlzKGluaXRpYWxpemF0aW9uU3RhdGU6IEluaXRpYWxpemF0aW9uU3RhdGUpIHtcclxuICByZXR1cm4gKHN0YXRlOiBUYWJsZVN0YXRlKSA9PiBzdGF0ZS5pbml0aWFsaXphdGlvblN0YXRlID09PSBpbml0aWFsaXphdGlvblN0YXRlO1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGFibGVTdG9yZSBleHRlbmRzIENvbXBvbmVudFN0b3JlPFRhYmxlU3RhdGU+IHtcclxuXHJcbiAgY29uc3RydWN0b3IoQEluamVjdChUYWJsZUJ1aWxkZXJDb25maWdUb2tlbikgY29uZmlnOiBUYWJsZUJ1aWxkZXJDb25maWcpIHtcclxuICAgc3VwZXIoIHsgLi4uZGVmYXVsdFRhYmxlU3RhdGUsIC4uLmNvbmZpZy5kZWZhdWx0VGFibGVTdGF0ZX0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2F2YWJsZVN0YXRlKCkgOiBPYnNlcnZhYmxlPFBlcnNpc3RlZFRhYmxlU3RhdGU+IHtcclxuICAgIHJldHVybiAgdGhpcy5zdGF0ZSQucGlwZShcclxuICAgICAgbWFwKCBzID0+IHtcclxuICAgICAgICBjb25zdCBzYXZhYmxlU3RhdGUgPSB7Li4uc30gYXMgUGFydGlhbDxUYWJsZVN0YXRlPjtcclxuICAgICAgICBrZXlzVG9EZWxldGUuZm9yRWFjaChrZXkgPT4gZGVsZXRlIHNhdmFibGVTdGF0ZVtrZXldKTtcclxuICAgICAgICByZXR1cm4gc2F2YWJsZVN0YXRlIGFzIFBlcnNpc3RlZFRhYmxlU3RhdGU7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgb24gPSA8Vj4oc3JjT2JzZXJ2YWJsZTogT2JzZXJ2YWJsZTxWPiwgZnVuYzogKG9iajogVikgPT4gdm9pZCkgPT4ge1xyXG4gICAgdGhpcy5lZmZlY3QoKCkgPT4gc3JjT2JzZXJ2YWJsZS5waXBlKFxyXG4gICAgICB0YXAoZnVuYylcclxuICAgICkpXHJcbiAgfVxyXG5cclxuICBvbkxhc3QoY2FsbGJhY2s6IChzdGF0ZTogVGFibGVTdGF0ZSkgPT4gdm9pZCApIHtcclxuICAgIHRoaXMub24odGhpcy5zdGF0ZSQucGlwZShsYXN0KCkpLGNhbGxiYWNrKTtcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IG1ldGFEYXRhJCA9IHRoaXMuc2VsZWN0KCBzdGF0ZSA9PiBzdGF0ZS5tZXRhRGF0YSk7XHJcblxyXG4gIHJlYWRvbmx5IG1ldGFEYXRhQXJyYXkkID0gdGhpcy5zZWxlY3QoXHJcbiAgICB0aGlzLnN0YXRlJCxcclxuICAgIG9yZGVyTWV0YURhdGFcclxuICApO1xyXG5cclxuICBnZXRNZXRhRGF0YSQgPSAoa2V5OiBzdHJpbmcpIDogT2JzZXJ2YWJsZTxNZXRhRGF0YT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0KCBzdGF0ZSA9PiBzdGF0ZS5tZXRhRGF0YVtrZXldICApLnBpcGUoXHJcbiAgICAgIHRhcChtZXRhID0+IHtpZighbWV0YSljb25zb2xlLndhcm4oYE1ldGEgZGF0YSB3aXRoIGtleSAke2tleX0gbm90IGZvdW5kYCl9KSxcclxuICAgICAgbm90TnVsbCgpKVxyXG4gIH1cclxuXHJcbiAgZ2V0VXNlckRlZmluZWRXaWR0aCQgPSAoa2V5OnN0cmluZykgPT4gdGhpcy5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUudXNlckRlZmluZWQud2lkdGhzW2tleV0pO1xyXG4gIGdldFVzZXJEZWZpbmVkV2lkdGhzJCA9IHRoaXMuc2VsZWN0KHN0YXRlID0+IHN0YXRlLnVzZXJEZWZpbmVkLndpZHRocyk7XHJcblxyXG4gIHByaXZhdGUgZGlzcGxheWVkQ29sdW1ucyA9ICAoc3RhdGU6VGFibGVTdGF0ZSkgPT4gb3JkZXJNZXRhRGF0YShzdGF0ZSkubWFwKG1kID0+IG1kLmtleSlcclxuICAgIC5maWx0ZXIoa2V5ID0+ICFzdGF0ZS5oaWRkZW5LZXlzLmluY2x1ZGVzKGtleSkgJiYgc3RhdGUubWV0YURhdGFba2V5XS5maWVsZFR5cGUgIT09IEZpZWxkVHlwZS5IaWRkZW4pO1xyXG4gIHJlYWRvbmx5IGRpc3BsYXllZENvbHVtbnMkID0gdGhpcy5zZWxlY3QodGhpcy5kaXNwbGF5ZWRDb2x1bW5zKTtcclxuICByZWFkb25seSBoaWRlQ29sdW1uID0gdGhpcy51cGRhdGVyKChzdGF0ZSwga2V5OiBzdHJpbmcpID0+ICh7XHJcbiAgICAuLi5zdGF0ZSxcclxuICAgIGhpZGRlbktleXM6IFsuLi5zdGF0ZS5oaWRkZW5LZXlzLmZpbHRlciggayA9PiBrICE9PSBrZXkpLCBrZXldLFxyXG4gIH0pKTtcclxuXHJcbiAgcmVhZG9ubHkgcmVzZXRTdGF0ZSA9IHRoaXMudXBkYXRlcigoc3RhdGUpID0+IHtcclxuICAgIGNvbnN0IGhpZGRlbkNvbHVtbnMgPSBPYmplY3QudmFsdWVzKHN0YXRlLm1ldGFEYXRhKVxyXG4gICAgICAuZmlsdGVyKG1kID0+IG1kLmZpZWxkVHlwZSA9PT0gRmllbGRUeXBlLkhpZGRlbilcclxuICAgICAgLm1hcChtZCA9PiBtZC5rZXkpO1xyXG4gICAgY29uc3Qgc29ydGVkID0gdGhpcy5jcmVhdGVQcmVTb3J0KHN0YXRlLm1ldGFEYXRhKTtcclxuICAgIHJldHVybiB1cGRhdGUoc3RhdGUsIHtcclxuICAgICAgIGhpZGRlbktleXM6IHsgJHNldDogWy4uLmhpZGRlbkNvbHVtbnNdIH0sXHJcbiAgICAgICBmaWx0ZXJzOiB7ICRzZXQ6IHt9IH0sXHJcbiAgICAgICBzb3J0ZWQ6IHskc2V0OiBzb3J0ZWR9LFxyXG4gICAgICAgdXNlckRlZmluZWQgOiB7JHNldDoge3dpZHRoczp7fSxvcmRlcjp7fSx0YWJsZTp7fX19LFxyXG4gICAgICB9KTtcclxuICB9KTtcclxuXHJcbiAgcmVhZG9ubHkgc2hvd0NvbHVtbiA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGtleTogc3RyaW5nKSA9PiAoe1xyXG4gICAgLi4uc3RhdGUsXHJcbiAgICBoaWRkZW5LZXlzOiBzdGF0ZS5oaWRkZW5LZXlzLmZpbHRlciggayA9PiBrICE9PSBrZXkpLFxyXG4gIH0pKTtcclxuXHJcbiAgcmVhZG9ubHkgc2V0SGlkZGVuQ29sdW1ucyA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGRpc3BsYXlDb2xzOiB7a2V5OiBzdHJpbmcsIHZpc2libGU6IGJvb2xlYW59W10pID0+IHtcclxuXHJcbiAgICB2YXIgaGlkZGVuS2V5c1NldD0gbmV3IFNldDxzdHJpbmc+KFxyXG4gICAgICBbXHJcbiAgICAgICAgLi4uZGlzcGxheUNvbHMuZmlsdGVyKGNvbCA9PiAhY29sLnZpc2libGUpLm1hcChjb2wgPT4gY29sLmtleSksXHJcbiAgICAgICAgLi4uT2JqZWN0LnZhbHVlcyhzdGF0ZS5tZXRhRGF0YSkuZmlsdGVyKG1kID0+IG1kLmZpZWxkVHlwZSA9PT0gRmllbGRUeXBlLkhpZGRlbikubWFwKG1kID0+IG1kLmtleSlcclxuICAgICAgXVxyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4gdXBkYXRlKCBzdGF0ZSAsIHsgaGlkZGVuS2V5czogeyRzZXQ6IFsuLi5oaWRkZW5LZXlzU2V0XX19KTtcclxuICB9KTtcclxuXHJcblxyXG4gIHNldFVzZXJEZWZpbmVkV2lkdGggPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLGNvbFdpZHRoczp7a2V5OiBzdHJpbmcsIHdpZHRoSW5QaXhlbDpudW1iZXJ9W10pID0+IHtcclxuICAgIGNvbnN0IHVzZXJEZWZpbmVkV2lkdGhzID0gey4uLnN0YXRlLnVzZXJEZWZpbmVkLndpZHRoc307XHJcbiAgICBjb2xXaWR0aHMuZm9yRWFjaChjdyA9PiB7XHJcbiAgICAgIHVzZXJEZWZpbmVkV2lkdGhzW2N3LmtleV0gPSBjdy53aWR0aEluUGl4ZWw7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB7Li4uc3RhdGUsIHVzZXJEZWZpbmVkOiB7Li4uc3RhdGUudXNlckRlZmluZWQsd2lkdGhzOnVzZXJEZWZpbmVkV2lkdGhzfX07XHJcbiAgfSk7XHJcblxyXG4gIHNldFVzZXJEZWZpbmVkT3JkZXIgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLG1vdmVkOntuZXdPcmRlcjpudW1iZXIsb2xkT3JkZXI6bnVtYmVyfSk9PntcclxuICAgIGNvbnN0IHtuZXdPcmRlciAsb2xkT3JkZXJ9ID0gbW92ZWQ7XHJcbiAgICBjb25zdCBtZHNBcnIgPSBvcmRlclZpZXdhYmxlTWV0YURhdGEoc3RhdGUpO1xyXG4gICAgbW92ZUl0ZW1JbkFycmF5KG1kc0FycixvbGRPcmRlcixuZXdPcmRlcik7XHJcblxyXG4gICAgY29uc3QgdXNlckRlZmluZWRPcmRlciA9IG1kc0Fyci5yZWR1Y2UoKGFnZ3JlZ2F0ZTogYW55LGN1cnJlbnQsaW5kZXgpID0+IHtcclxuICAgICAgYWdncmVnYXRlW2N1cnJlbnQua2V5XSA9IGluZGV4O1xyXG4gICAgICByZXR1cm4gYWdncmVnYXRlXHJcbiAgICB9LHt9KTtcclxuICAgIHJldHVybih7Li4uc3RhdGUsIHVzZXJEZWZpbmVkOnsuLi5zdGF0ZS51c2VyRGVmaW5lZCxvcmRlcjp1c2VyRGVmaW5lZE9yZGVyfX0pXHJcbiAgfSlcclxuXHJcblxyXG4gIHJlYWRvbmx5IGZpbHRlcnMkID0gdGhpcy5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUuZmlsdGVycyApO1xyXG5cclxuICByZWFkb25seSBnZXRGaWx0ZXIkID0gKGZpbHRlcklkOiBzdHJpbmcpIDogT2JzZXJ2YWJsZTxGaWx0ZXJJbmZvIHwgQ3VzdG9tRmlsdGVyIHwgdW5kZWZpbmVkPiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3QoIHN0YXRlID0+IHN0YXRlLmZpbHRlcnNbZmlsdGVySWRdICk7XHJcbiAgfVxyXG4gIHJlYWRvbmx5IGFkZEZpbHRlciA9IHRoaXMudXBkYXRlciggKHN0YXRlLCBmaWx0ZXI6IEZpbHRlckluZm8gfCBDdXN0b21GaWx0ZXIgKSA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5hZGRGaWx0ZXJzVG9TdGF0ZShzdGF0ZSwgW2ZpbHRlcl0pO1xyXG4gIH0pO1xyXG5cclxuICByZWFkb25seSBhZGRGaWx0ZXJzID0gdGhpcy51cGRhdGVyKChzdGF0ZSxmaWx0ZXJzOihGaWx0ZXJJbmZvIHwgQ3VzdG9tRmlsdGVyIClbXSk9PntcclxuICAgIHJldHVybiB0aGlzLmFkZEZpbHRlcnNUb1N0YXRlKHN0YXRlLCBmaWx0ZXJzKTtcclxuICB9KVxyXG5cclxuXHJcbiAgcHJpdmF0ZSBhZGRGaWx0ZXJzVG9TdGF0ZSA9IChzdGF0ZTpUYWJsZVN0YXRlLGZpbHRlcnM6KEZpbHRlckluZm8gfCBDdXN0b21GaWx0ZXIpW10pIDogVGFibGVTdGF0ZSA9PiB7XHJcblxyXG4gICAgdmFyIGN1c3RvbUZpbHRlcnMgPSBmaWx0ZXJzLmZpbHRlciggIGlzQ3VzdG9tRmlsdGVyICk7XHJcblxyXG4gICAgdmFyIGZpbHRlckluZm9zID0gZmlsdGVycy5maWx0ZXIoaXNGaWx0ZXJJbmZvKTtcclxuXHJcbiAgICBjb25zdCBmaWx0ZXJzT2JqID0gZmlsdGVySW5mb3NcclxuICAgICAgLmZpbHRlcihmbHRyID0+IE9iamVjdC5rZXlzKHN0YXRlLm1ldGFEYXRhKS5zb21lKGtleSA9PiBrZXkgPT09IGZsdHIua2V5KSB8fCBjb25zb2xlLndhcm4oYE1ldGEgZGF0YSB3aXRoIGtleSAke2ZsdHIua2V5fSBub3QgZm91bmRgKSlcclxuICAgICAgLnJlZHVjZSgoZmlsdGVyc09iajoge1trOiBzdHJpbmddOiBhbnl9LGZpbHRlcik9PntcclxuICAgICAgICBpZiAoIWZpbHRlci5maWx0ZXJJZCkge1xyXG4gICAgICAgICAgZmlsdGVyLmZpbHRlcklkID0gdXVpZCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaWx0ZXJzT2JqW2ZpbHRlci5maWx0ZXJJZF0gPSBmaWx0ZXI7XHJcbiAgICAgICAgcmV0dXJuIGZpbHRlcnNPYmo7XHJcbiAgICAgIH0se30pO1xyXG5cclxuICAgICAgY3VzdG9tRmlsdGVycy5mb3JFYWNoKCBmbHRyID0+IHtcclxuICAgICAgICBpZighZmx0ci5maWx0ZXJJZCkge1xyXG4gICAgICAgICAgZmx0ci5maWx0ZXJJZCA9IHV1aWQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmlsdGVyc09ialtmbHRyLmZpbHRlcklkXSA9IGZsdHI7XHJcbiAgICAgIH0pXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAuLi5zdGF0ZSxcclxuICAgICAgZmlsdGVycyA6IHsuLi5zdGF0ZS5maWx0ZXJzLCAuLi5maWx0ZXJzT2JqIH1cclxuICAgIH07XHJcbiAgfVxyXG5cclxuICByZWFkb25seSByZW1vdmVGaWx0ZXIgPSB0aGlzLnVwZGF0ZXIoIChzdGF0ZSwgZmlsdGVySWQ6IHN0cmluZykgPT5cclxuICAgIHVwZGF0ZShzdGF0ZSwge2ZpbHRlcnM6IHskdW5zZXQgOiBbZmlsdGVySWQgXX19KVxyXG4gICk7XHJcblxyXG4gIHJlYWRvbmx5IHJlbW92ZUZpbHRlcnMgPSB0aGlzLnVwZGF0ZXIoIChzdGF0ZSwgZmlsdGVySWRzOiBzdHJpbmdbXSkgPT5cclxuICAgIHVwZGF0ZShzdGF0ZSwge2ZpbHRlcnM6IHskdW5zZXQgOiBbLi4uZmlsdGVySWRzIF19fSlcclxuICApO1xyXG5cclxuICByZWFkb25seSBjbGVhckZpbHRlcnMgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlKT0+XHJcbiAgICAoey4uLnN0YXRlLGZpbHRlcnM6e319KSlcclxuXHJcblxyXG4gIHJlYWRvbmx5IHNvcnRlZCQgPSB0aGlzLnN0YXRlJC5waXBlKFxyXG4gICAgZmlsdGVyKHN0YXRlSXMoSW5pdGlhbGl6YXRpb25TdGF0ZS5SZWFkeSkpLFxyXG4gICAgbWFwKCBzdGF0ZSA9PiBzdGF0ZS5zb3J0ZWQpXHJcbiAgKTtcclxuXHJcbiAgY3JlYXRlUHJlU29ydCA9IChtZXRhRGF0YXM6IERpY3Rpb25hcnk8TWV0YURhdGE+KTogU29ydFtdID0+IHtcclxuICAgIHJldHVybiBPYmplY3QudmFsdWVzKG1ldGFEYXRhcykuZmlsdGVyKCggbWV0YURhdGEgKSA6IG1ldGFEYXRhIGlzIE1ldGFEYXRhICYge3ByZVNvcnQ6IFNvcnREZWZ9ID0+ICEhbWV0YURhdGEucHJlU29ydClcclxuICAgIC5zb3J0KCh7ICBwcmVTb3J0OiBwczEgIH0sIHsgcHJlU29ydDogcHMyIH0gKSA9PiAocHMxLnByZWNlZGVuY2UgfHwgTnVtYmVyLk1BWF9WQUxVRSkgLSAoIHBzMi5wcmVjZWRlbmNlIHx8IE51bWJlci5NQVhfVkFMVUUpKVxyXG4gICAgLm1hcCgoIHtrZXksIHByZVNvcnR9ICkgPT4gKHsgYWN0aXZlOiBrZXksIGRpcmVjdGlvbjogcHJlU29ydC5kaXJlY3Rpb24gfSkpXHJcbiAgfVxyXG4gIHJlYWRvbmx5IHNldFNvcnQgPSB0aGlzLnVwZGF0ZXI8e2tleTogc3RyaW5nLCBkaXJlY3Rpb24/OiBTb3J0RGlyZWN0aW9ufT4oKHN0YXRlLCB7a2V5LCBkaXJlY3Rpb259ICkgPT4ge1xyXG4gICAgY29uc3Qgc29ydEFycmF5ID0gc3RhdGUuc29ydGVkLmZpbHRlciggcyA9PiBzLmFjdGl2ZSAhPT0ga2V5ICk7XHJcbiAgICBpZihkaXJlY3Rpb24pIHtcclxuICAgICAgc29ydEFycmF5LnVuc2hpZnQoe2FjdGl2ZToga2V5LCBkaXJlY3Rpb259KTtcclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgIC4uLnN0YXRlLFxyXG4gICAgICBzb3J0ZWQ6IHNvcnRBcnJheSxcclxuICAgIH07XHJcbiAgfSk7XHJcblxyXG4gIHJlYWRvbmx5IHNldEFsbFNvcnQgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLHNvcnRBcnJheTpTb3J0W10pPT57XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAuLi5zdGF0ZSxcclxuICAgICAgc29ydGVkOiBzb3J0QXJyYXksXHJcbiAgICB9O1xyXG4gIH0pO1xyXG5cclxuICB1cGRhdGVTdGF0ZUZ1bmMgPSAoc3RhdGU6IFRhYmxlU3RhdGUsIGluY29taW5nVGFibGVTdGF0ZTogUGFydGlhbDxUYWJsZVN0YXRlPikgOiBUYWJsZVN0YXRlID0+IHtcclxuICAgIGNvbnN0IG1ldGFEYXRhID0gc3RhdGUubWV0YURhdGE7XHJcbiAgICBjb25zdCBzb3J0ZWQgPSBpbmNvbWluZ1RhYmxlU3RhdGUuc29ydGVkPy5sZW5ndGggPyBpbmNvbWluZ1RhYmxlU3RhdGUuc29ydGVkXHJcbiAgICAgIDogc3RhdGUuaW5pdGlhbGl6YXRpb25TdGF0ZSA9PT0gSW5pdGlhbGl6YXRpb25TdGF0ZS5DcmVhdGVkID8gdGhpcy5jcmVhdGVQcmVTb3J0KG1ldGFEYXRhKSA6IHN0YXRlLnNvcnRlZDtcclxuICAgIHJldHVybiB7Li4uc3RhdGUsIC4uLmluY29taW5nVGFibGVTdGF0ZSwgbWV0YURhdGEgLCBzb3J0ZWR9O1xyXG4gIH1cclxuXHJcbiAgcmVhZG9ubHkgc2V0UGFnZVNpemUgPSB0aGlzLnVwZGF0ZXIoIChzdGF0ZSwgcGFnZVNpemU6IG51bWJlcik9PiAoey4uLnN0YXRlLHBhZ2VTaXplfSkpO1xyXG5cclxuICByZWFkb25seSB1cGRhdGVTdGF0ZSA9IHRoaXMudXBkYXRlcjxQYXJ0aWFsPFRhYmxlU3RhdGU+Pih0aGlzLnVwZGF0ZVN0YXRlRnVuYyk7XHJcblxyXG4gIGNsZWFuUGVyc2lzdGVkU3RhdGUoc3RhdGU6IFRhYmxlU3RhdGUscFN0YXRlOiBQZXJzaXN0ZWRUYWJsZVN0YXRlKSB7XHJcbiAgICBjb25zdCBtZXRhcyA9IE9iamVjdC52YWx1ZXMoc3RhdGUubWV0YURhdGEpO1xyXG4gICAgY29uc3QgZmlsdGVycyA9IE9iamVjdC52YWx1ZXMocFN0YXRlLmZpbHRlcnMpLmZpbHRlcihmbHRyID0+IGlzQ3VzdG9tRmlsdGVyKGZsdHIpIHx8IG1ldGFzLnNvbWUobSA9PiBtLmtleSA9PT0gZmx0ci5rZXkpKS5yZWR1Y2UoKG9iajogYW55LCBmaWx0ZXIpID0+IHtcclxuICAgICAgb2JqW2ZpbHRlci5maWx0ZXJJZCFdID0gcFN0YXRlLmZpbHRlcnNbZmlsdGVyLmZpbHRlcklkIV07XHJcbiAgICAgIHJldHVybiBvYmo7XHJcbiAgICB9LCB7fSk7XHJcbiAgICBjb25zdCBzb3J0ZWQgPSBwU3RhdGUuc29ydGVkLmZpbHRlcihzID0+IG1ldGFzLnNvbWUobSA9PiBtLmtleSA9PT0gcy5hY3RpdmUpKTtcclxuICAgIHJldHVybiAoey4uLnBTdGF0ZSxmaWx0ZXJzLHNvcnRlZH0pXHJcbiAgfVxyXG5cclxuICByZWFkb25seSB1cGRhdGVTdGF0ZUZyb21QZXJzaXN0ZWRTdGF0ZSA9IHRoaXMudXBkYXRlciggKCBzdGF0ZTogVGFibGVTdGF0ZSwgcGVyc2lzdGVkU3RhdGU6IFBlcnNpc3RlZFRhYmxlU3RhdGUpIDogVGFibGVTdGF0ZSA9PiB7XHJcbiAgICBjb25zdCBpbmNvbWluZ1RhYmxlU3RhdGU6IFBhcnRpYWw8VGFibGVTdGF0ZT4gPSB0aGlzLmNsZWFuUGVyc2lzdGVkU3RhdGUoc3RhdGUscGVyc2lzdGVkU3RhdGUpO1xyXG4gICAgY29uc3QgbmV3U3RhdGUgPSAgdGhpcy51cGRhdGVTdGF0ZUZ1bmMoc3RhdGUsaW5jb21pbmdUYWJsZVN0YXRlKTtcclxuICAgIG5ld1N0YXRlLmluaXRpYWxpemF0aW9uU3RhdGUgPSBzdGF0ZS5pbml0aWFsaXphdGlvblN0YXRlID09PSBJbml0aWFsaXphdGlvblN0YXRlLk1ldGFEYXRhTG9hZGVkID8gSW5pdGlhbGl6YXRpb25TdGF0ZS5Mb2FkZWRGcm9tU3RvcmUgOiBzdGF0ZS5pbml0aWFsaXphdGlvblN0YXRlO1xyXG4gICAgcmV0dXJuIG5ld1N0YXRlO1xyXG4gIH0pO1xyXG5cclxuICBnZXRVc2VyRGVmaW5lZFRhYmxlU2l6ZSQgPSB0aGlzLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS51c2VyRGVmaW5lZC50YWJsZS53aWR0aCk7XHJcbiAgc2V0VGFibGVXaWR0aCA9IHRoaXMudXBkYXRlcigoc3RhdGUsd2lkdGhJbnBpeGVsczpudW1iZXIpID0+ICh7Li4uc3RhdGUsdXNlckRlZmluZWQ6IHsuLi5zdGF0ZS51c2VyRGVmaW5lZCx0YWJsZTp7d2lkdGg6d2lkdGhJbnBpeGVsc319fSkpIDtcclxuXHJcbiAgbWVyZ2VNZXRhID0gKG9yaWc6IE1ldGFEYXRhLCBtZXJnZTogTWV0YURhdGEpOiBNZXRhRGF0YSA9PiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIGtleTogb3JpZy5rZXksXHJcbiAgICAgICAgZGlzcGxheU5hbWU6IG1lcmdlLmRpc3BsYXlOYW1lID8/IG9yaWcuZGlzcGxheU5hbWUsXHJcbiAgICAgICAgZmllbGRUeXBlOiBtZXJnZS5maWVsZFR5cGUgfHwgb3JpZy5maWVsZFR5cGUsXHJcbiAgICAgICAgYWRkaXRpb25hbDogey4uLm9yaWcuYWRkaXRpb25hbCwgLi4ubWVyZ2UuYWRkaXRpb25hbH0sXHJcbiAgICAgICAgb3JkZXI6IG1lcmdlLm9yZGVyID8/IG9yaWcub3JkZXIsXHJcbiAgICAgICAgcHJlU29ydDogbWVyZ2UucHJlU29ydCA/PyBvcmlnLnByZVNvcnQsXHJcbiAgICAgICAgX2ludGVybmFsTm90VXNlckRlZmluZWQ6IG1lcmdlLl9pbnRlcm5hbE5vdFVzZXJEZWZpbmVkIHx8IG9yaWcuX2ludGVybmFsTm90VXNlckRlZmluZWQsXHJcbiAgICAgICAgd2lkdGg6IG1lcmdlLndpZHRoID8/IG9yaWcud2lkdGgsXHJcbiAgICAgICAgbm9FeHBvcnQ6IG1lcmdlLm5vRXhwb3J0IHx8IG9yaWcubm9FeHBvcnQsXHJcbiAgICAgICAgbm9GaWx0ZXI6IG1lcmdlLm5vRmlsdGVyIHx8IG9yaWcubm9GaWx0ZXIsXHJcbiAgICAgICAgY3VzdG9tQ2VsbDogbWVyZ2UuY3VzdG9tQ2VsbCA/PyBvcmlnLmN1c3RvbUNlbGwsXHJcbiAgICAgICAgdHJhbnNmb3JtOiBtZXJnZS50cmFuc2Zvcm0gPz8gb3JpZy50cmFuc2Zvcm0sXHJcbiAgICAgICAgY2xpY2s6IG1lcmdlLmNsaWNrID8/IG9yaWcuY2xpY2ssXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcmVhZG9ubHkgc2V0SW50aWFsaXphdGlvblN0YXRlID0gdGhpcy51cGRhdGVyKCAoc3RhdGUsIGluaXRpYWxpemF0aW9uU3RhdGU6ICBJbml0aWFsaXphdGlvblN0YXRlKSA9PiB7XHJcbiAgICByZXR1cm4gey4uLnN0YXRlLCBpbml0aWFsaXphdGlvblN0YXRlfTtcclxuICB9KTtcclxuXHJcbiAgcnVuT25jZVdoZW4ocHJlZGljYXRlOiBQcmVkaWNhdGU8VGFibGVTdGF0ZT4sIGZ1bmM6IChzdGF0ZTpUYWJsZVN0YXRlKSA9PiB2b2lkKSB7XHJcbiAgICBjb25zdCBvYnMgPSB0aGlzLnN0YXRlJC5waXBlKG9uY2VXaGVuKHByZWRpY2F0ZSkpO1xyXG4gICAgdGhpcy5vbihvYnMsIChzdGF0ZSkgPT4ge1xyXG4gICAgICBmdW5jKHN0YXRlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25SZWFkeSggZnVuYzogKHN0YXRlOiBUYWJsZVN0YXRlKSA9PiB2b2lkICkge1xyXG4gICAgdGhpcy5ydW5PbmNlV2hlbihzdGF0ZUlzKEluaXRpYWxpemF0aW9uU3RhdGUuUmVhZHkpLGZ1bmMpO1xyXG4gIH1cclxuXHJcbiAgcmVhZG9ubHkgc2V0TWV0YURhdGEgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBtZDogTWV0YURhdGFbXSB8IE1ldGFEYXRhICkgPT4ge1xyXG4gICAgY29uc3QgbWV0YURhdGEgPSAoIEFycmF5LmlzQXJyYXkobWQpID8gWy4uLm1kXSA6IFttZF0gKVxyXG4gICAgICAucmVkdWNlKChwcmV2OiBEaWN0aW9uYXJ5PE1ldGFEYXRhPixjdXJyKSA9PiB7XHJcbiAgICAgICAgaWYocHJldltjdXJyLmtleV0pIHtcclxuICAgICAgICAgIHByZXZbY3Vyci5rZXldID0gdGhpcy5tZXJnZU1ldGEocHJldltjdXJyLmtleV0sY3Vycik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHByZXZbY3Vyci5rZXldID0gY3VycjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHByZXY7XHJcbiAgICAgIH0gLHt9KTtcclxuICAgIGxldCBzb3J0ZWQgPSBzdGF0ZS5zb3J0ZWQ7XHJcbiAgICBpZihzb3J0ZWQubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHNvcnRlZCA9IHRoaXMuY3JlYXRlUHJlU29ydChtZXRhRGF0YSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBvcmRlciA9IHRoaXMuaW5pdGlhbGl6ZU9yZGVyKHN0YXRlLCBtZXRhRGF0YSk7XHJcbiAgICBjb25zdCBpbml0aWFsaXphdGlvblN0YXRlID0gc3RhdGUuaW5pdGlhbGl6YXRpb25TdGF0ZSA9PSBJbml0aWFsaXphdGlvblN0YXRlLkNyZWF0ZWQgPyAgSW5pdGlhbGl6YXRpb25TdGF0ZS5NZXRhRGF0YUxvYWRlZCA6IHN0YXRlLmluaXRpYWxpemF0aW9uU3RhdGU7XHJcbiAgICByZXR1cm4gey4uLnN0YXRlLCBpbml0aWFsaXphdGlvblN0YXRlLCBtZXRhRGF0YSwgc29ydGVkLCB1c2VyRGVmaW5lZDp7Li4uc3RhdGUudXNlckRlZmluZWQsb3JkZXI6b3JkZXJ9fTtcclxuICB9KTtcclxuXHJcbiAgcHJpdmF0ZSBpbml0aWFsaXplT3JkZXIgPSAoc3RhdGU6VGFibGVTdGF0ZSxtZHM6IERpY3Rpb25hcnk8TWV0YURhdGE+KSA6IERpY3Rpb25hcnk8bnVtYmVyPiA9PiB7XHJcbiAgICBjb25zdCB2aWV3YWJsZU1ldGFEYXRhQXJyID0gT2JqZWN0LnZhbHVlcyhtZHMpLmZpbHRlcihhID0+IGEuZmllbGRUeXBlICE9PSBGaWVsZFR5cGUuSGlkZGVuKTtcclxuICAgIGxldCB1c2VyRGVmaW5lZE9yZGVyID0gc3RhdGUudXNlckRlZmluZWQub3JkZXI7XHJcbiAgICBpZih2aWV3YWJsZU1ldGFEYXRhQXJyLnNvbWUobWV0YSA9PiB1c2VyRGVmaW5lZE9yZGVyW21ldGEua2V5XSA9PSBudWxsKSl7XHJcbiAgICAgIHJldHVybiB7fVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHVzZXJEZWZpbmVkT3JkZXI7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVDb2xsYXBzZUhlYWRlciA9IHRoaXMudXBkYXRlcigoc3RhdGUpPT57XHJcbiAgICBjb25zdCB0YWJsZVNldHRpbmdzID0gey4uLnN0YXRlLnBlcnNpc3RlZFRhYmxlU2V0dGluZ3N9O1xyXG4gICAgdGFibGVTZXR0aW5ncy5jb2xsYXBzZUhlYWRlciA9ICF0YWJsZVNldHRpbmdzLmNvbGxhcHNlSGVhZGVyO1xyXG4gICAgcmV0dXJuICh7Li4uc3RhdGUscGVyc2lzdGVkVGFibGVTZXR0aW5ncyA6IG5ldyBQZXNyc2lzdGVkVGFibGVTZXR0aW5ncyh0YWJsZVNldHRpbmdzKX0pO1xyXG4gIH0pXHJcblxyXG4gIHRvZ2dsZUNvbGxhcHNlRm9vdGVyID0gdGhpcy51cGRhdGVyKChzdGF0ZSk9PntcclxuICAgIGNvbnN0IHRhYmxlU2V0dGluZ3MgPSB7Li4uc3RhdGUucGVyc2lzdGVkVGFibGVTZXR0aW5nc307XHJcbiAgICB0YWJsZVNldHRpbmdzLmNvbGxhcHNlRm9vdGVyID0gIXRhYmxlU2V0dGluZ3MuY29sbGFwc2VGb290ZXI7XHJcbiAgICByZXR1cm4gKHsuLi5zdGF0ZSxwZXJzaXN0ZWRUYWJsZVNldHRpbmdzIDogbmV3IFBlc3JzaXN0ZWRUYWJsZVNldHRpbmdzKHRhYmxlU2V0dGluZ3MpfSk7XHJcbiAgfSlcclxuXHJcbiAgYWRkR3JvdXBCeUtleSA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGdyb3VwQnlLZXk6IHN0cmluZykgPT4gKHtcclxuICAgIC4uLnN0YXRlLFxyXG4gICAgZ3JvdXBCeUtleXM6IFsuLi5zdGF0ZS5ncm91cEJ5S2V5cywgZ3JvdXBCeUtleV1cclxuICB9KSk7XHJcblxyXG4gIHJlbW92ZUdyb3VwQnlLZXkgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBncm91cEJ5S2V5OiBzdHJpbmcpID0+ICh7XHJcbiAgICAuLi5zdGF0ZSxcclxuICAgIGdyb3VwQnlLZXlzOiBzdGF0ZS5ncm91cEJ5S2V5cy5maWx0ZXIoa2V5ID0+IGdyb3VwQnlLZXkgIT0ga2V5KVxyXG4gIH0pKTtcclxuXHJcbiAgdXBkYXRlR3JvdXAgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBncm91cDogR3JvdXApID0+ICh7XHJcbiAgICAuLi5zdGF0ZSxcclxuICAgIGdyb3VwczogWy4uLnN0YXRlLmdyb3Vwcy5maWx0ZXIoZyA9PiBnLmdyb3VwTmFtZSAhPSBncm91cC5ncm91cE5hbWUpLCBncm91cF1cclxuICB9KSlcclxuXHJcbiAgZ3JvdXBCeUtleXMkID0gdGhpcy5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUuZ3JvdXBCeUtleXMpO1xyXG4gIGdyb3VwcyQgPSB0aGlzLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS5ncm91cHMpO1xyXG5cclxuICBzZXRUYWJsZVNldHRpbmdzID0gdGhpcy51cGRhdGVyKChzdGF0ZSxzZXR0aW5nczpHZW5lcmFsVGFibGVTZXR0aW5ncyk9PntcclxuICAgIGNvbnN0IHM6VGFibGVTdGF0ZSA9IHtcclxuICAgICAgLi4uc3RhdGUsXHJcbiAgICAgIHBlcnNpc3RlZFRhYmxlU2V0dGluZ3MgOiBuZXcgUGVzcnNpc3RlZFRhYmxlU2V0dGluZ3Moc2V0dGluZ3MpLFxyXG4gICAgICBub3RQZXJzaXNpdGVkVGFibGVTZXR0aW5ncyA6IG5ldyBOb3RQZXJzaXNpdGVkVGFibGVTZXR0aW5ncyhzZXR0aW5ncylcclxuICAgICAgfTtcclxuICAgIHJldHVybiBzO1xyXG4gIH0pO1xyXG5cclxuICB0YWJsZVNldHRpbmdzJCA9IHRoaXMuc2VsZWN0KHN0YXRlID0+IHtcclxuICAgIGNvbnN0IHRzIDogUGVzcnNpc3RlZFRhYmxlU2V0dGluZ3MgJiBOb3RQZXJzaXNpdGVkVGFibGVTZXR0aW5ncyA9XHJcbiAgICAgIHsuLi5zdGF0ZS5wZXJzaXN0ZWRUYWJsZVNldHRpbmdzLC4uLnN0YXRlLm5vdFBlcnNpc2l0ZWRUYWJsZVNldHRpbmdzfTtcclxuICAgIHJldHVybiB0cztcclxuICB9KVxyXG5cclxuICBzZXRMaW5rTWFwcyA9IHRoaXMudXBkYXRlcigoc3RhdGUsbWFwczogYW55KT0+e1xyXG4gICAgcmV0dXJuIHsuLi5zdGF0ZSxsaW5rTWFwczptYXBzfTtcclxuICB9KTtcclxuICBnZXRMaW5rTWFwID0gKG1kOk1ldGFEYXRhKSA9PntcclxuICAgIHJldHVybiAgdGhpcy5zZWxlY3Qoc3RhdGUgPT4ge1xyXG4gICAgICByZXR1cm4gc3RhdGUubGlua01hcHNbbWQua2V5XX0pfTtcclxufVxyXG5leHBvcnQgY29uc3Qgb3JkZXJWaWV3YWJsZU1ldGFEYXRhID0gKHN0YXRlOlRhYmxlU3RhdGUpID0+IG9yZGVyTWV0YURhdGEoc3RhdGUpLmZpbHRlcihhID0+IGEuZmllbGRUeXBlICE9PSBGaWVsZFR5cGUuSGlkZGVuKTtcclxuXHJcbmV4cG9ydCBjb25zdCBvcmRlck1ldGFEYXRhID0gKHN0YXRlOlRhYmxlU3RhdGUpID0+IHtcclxuICBjb25zdCB1c2VyT3JkZXJBcnIgPSBPYmplY3QuZW50cmllcyhzdGF0ZS51c2VyRGVmaW5lZC5vcmRlcik7XHJcbiAgcmV0dXJuIHVzZXJPcmRlckFyci5sZW5ndGggP1xyXG4gICBPYmplY3QudmFsdWVzKHN0YXRlLm1ldGFEYXRhKS5zb3J0KChhLGIpPT4gc3RhdGUudXNlckRlZmluZWQub3JkZXJbYS5rZXldIC0gc3RhdGUudXNlckRlZmluZWQub3JkZXJbYi5rZXldKVxyXG4gICA6XHJcbiAgIE9iamVjdC52YWx1ZXMoc3RhdGUubWV0YURhdGEpLnNvcnQoKGEsYik9PiBhLm9yZGVyISAtIGIub3JkZXIhKVxyXG59XHJcbiJdfQ==
|
|
298
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jbGFzc2VzL3RhYmxlLXN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sMEJBQTBCLENBQUM7QUFDeEUsT0FBTyxFQUFFLEVBQUUsSUFBSSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbEMsT0FBTyxFQUFFLGlCQUFpQixFQUFTLG1CQUFtQixFQUFFLFlBQVksRUFBbUMsTUFBTSxjQUFjLENBQUM7QUFDNUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFzQix1QkFBdUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25GLE9BQU8sRUFBNEIsY0FBYyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUc7QUFDekQsT0FBTyxNQUFNLE1BQU0scUJBQXFCLENBQUM7QUFFekMsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBd0IseUJBQXlCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7QUFFM0gsTUFBTSxVQUFVLE9BQU8sQ0FBQyxtQkFBd0M7SUFDOUQsT0FBTyxDQUFDLEtBQWlCLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsS0FBSyxtQkFBbUIsQ0FBQztBQUNsRixDQUFD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OzswQkFHYyxNQUFNOzJCQUFDLHVCQUF1Qjs7QUEyVTdDLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsS0FBZ0IsRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRTlILE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLEtBQWdCLEVBQUUsRUFBRTtJQUNoRCxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0QsT0FBTyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzRyxDQUFDO1lBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQU0sR0FBRyxDQUFDLENBQUMsS0FBTSxDQUFDLENBQUE7QUFDbEUsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmllbGRUeXBlLCBNZXRhRGF0YSwgU29ydERlZiB9IGZyb20gJy4uL2ludGVyZmFjZXMvcmVwb3J0LWRlZic7XHJcbmltcG9ydCB7IHY0IGFzIHV1aWQgfSBmcm9tICd1dWlkJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWZhdWx0VGFibGVTdGF0ZSwgR3JvdXAsIEluaXRpYWxpemF0aW9uU3RhdGUsIGtleXNUb0RlbGV0ZSwgUGVyc2lzdGVkVGFibGVTdGF0ZSwgVGFibGVTdGF0ZSB9IGZyb20gJy4vVGFibGVTdGF0ZSc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCwgUHJlZGljYXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRhYmxlQnVpbGRlckNvbmZpZywgVGFibGVCdWlsZGVyQ29uZmlnVG9rZW4gfSBmcm9tICcuL1RhYmxlQnVpbGRlckNvbmZpZyc7XHJcbmltcG9ydCB7IEN1c3RvbUZpbHRlciwgRmlsdGVySW5mbywgaXNDdXN0b21GaWx0ZXIsIGlzRmlsdGVySW5mbyB9IGZyb20gJy4vZmlsdGVyLWluZm8nO1xyXG5pbXBvcnQgeyBTb3J0LCBTb3J0RGlyZWN0aW9uIH0gIGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnIDtcclxuaW1wb3J0IHsgQ29tcG9uZW50U3RvcmUgfSBmcm9tICdAbmdyeC9jb21wb25lbnQtc3RvcmUnICA7XHJcbmltcG9ydCB1cGRhdGUgZnJvbSAnaW1tdXRhYmlsaXR5LWhlbHBlcic7XHJcbmltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2RpY3Rpb25hcnknO1xyXG5pbXBvcnQgeyBmaWx0ZXIsIGxhc3QsIG1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXHJcbmltcG9ydCB7IG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5pbXBvcnQgeyBub3ROdWxsLCBvbmNlV2hlbiB9IGZyb20gJy4uLy4uL3J4anMvcnhqcy1vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBHZW5lcmFsVGFibGVTZXR0aW5ncywgTm90UGVyc2lzdGVkVGFibGVTZXR0aW5ncywgUGVyc2lzdGVkVGFibGVTZXR0aW5ncyB9IGZyb20gJy4vdGFibGUtYnVpbGRlci1nZW5lcmFsLXNldHRpbmdzJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBzdGF0ZUlzKGluaXRpYWxpemF0aW9uU3RhdGU6IEluaXRpYWxpemF0aW9uU3RhdGUpIHtcclxuICByZXR1cm4gKHN0YXRlOiBUYWJsZVN0YXRlKSA9PiBzdGF0ZS5pbml0aWFsaXphdGlvblN0YXRlID09PSBpbml0aWFsaXphdGlvblN0YXRlO1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGFibGVTdG9yZSBleHRlbmRzIENvbXBvbmVudFN0b3JlPFRhYmxlU3RhdGU+IHtcclxuXHJcbiAgY29uc3RydWN0b3IoQEluamVjdChUYWJsZUJ1aWxkZXJDb25maWdUb2tlbikgY29uZmlnOiBUYWJsZUJ1aWxkZXJDb25maWcpIHtcclxuICAgc3VwZXIoIHsgLi4uZGVmYXVsdFRhYmxlU3RhdGUsIC4uLmNvbmZpZy5kZWZhdWx0VGFibGVTdGF0ZX0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2F2YWJsZVN0YXRlKCkgOiBPYnNlcnZhYmxlPFBlcnNpc3RlZFRhYmxlU3RhdGU+IHtcclxuICAgIHJldHVybiAgdGhpcy5zdGF0ZSQucGlwZShcclxuICAgICAgbWFwKCBzID0+IHtcclxuICAgICAgICBjb25zdCBzYXZhYmxlU3RhdGUgPSB7Li4uc30gYXMgUGFydGlhbDxUYWJsZVN0YXRlPjtcclxuICAgICAgICBrZXlzVG9EZWxldGUuZm9yRWFjaChrZXkgPT4gZGVsZXRlIHNhdmFibGVTdGF0ZVtrZXldKTtcclxuICAgICAgICByZXR1cm4gc2F2YWJsZVN0YXRlIGFzIFBlcnNpc3RlZFRhYmxlU3RhdGU7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgb24gPSA8Vj4oc3JjT2JzZXJ2YWJsZTogT2JzZXJ2YWJsZTxWPiwgZnVuYzogKG9iajogVikgPT4gdm9pZCkgPT4ge1xyXG4gICAgdGhpcy5lZmZlY3QoKCkgPT4gc3JjT2JzZXJ2YWJsZS5waXBlKFxyXG4gICAgICB0YXAoZnVuYylcclxuICAgICkpXHJcbiAgfVxyXG5cclxuICBvbkxhc3QoY2FsbGJhY2s6IChzdGF0ZTogVGFibGVTdGF0ZSkgPT4gdm9pZCApIHtcclxuICAgIHRoaXMub24odGhpcy5zdGF0ZSQucGlwZShsYXN0KCkpLGNhbGxiYWNrKTtcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IG1ldGFEYXRhJCA9IHRoaXMuc2VsZWN0KCBzdGF0ZSA9PiBzdGF0ZS5tZXRhRGF0YSk7XHJcblxyXG4gIHJlYWRvbmx5IG1ldGFEYXRhQXJyYXkkID0gdGhpcy5zZWxlY3QoXHJcbiAgICB0aGlzLnN0YXRlJCxcclxuICAgIG9yZGVyTWV0YURhdGFcclxuICApO1xyXG5cclxuICBnZXRNZXRhRGF0YSQgPSAoa2V5OiBzdHJpbmcpIDogT2JzZXJ2YWJsZTxNZXRhRGF0YT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0KCBzdGF0ZSA9PiBzdGF0ZS5tZXRhRGF0YVtrZXldICApLnBpcGUoXHJcbiAgICAgIHRhcChtZXRhID0+IHtpZighbWV0YSljb25zb2xlLndhcm4oYE1ldGEgZGF0YSB3aXRoIGtleSAke2tleX0gbm90IGZvdW5kYCl9KSxcclxuICAgICAgbm90TnVsbCgpKVxyXG4gIH1cclxuXHJcbiAgZ2V0VXNlckRlZmluZWRXaWR0aCQgPSAoa2V5OnN0cmluZykgPT4gdGhpcy5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUudXNlckRlZmluZWQud2lkdGhzW2tleV0pO1xyXG4gIGdldFVzZXJEZWZpbmVkV2lkdGhzJCA9IHRoaXMuc2VsZWN0KHN0YXRlID0+IHN0YXRlLnVzZXJEZWZpbmVkLndpZHRocyk7XHJcblxyXG4gIHByaXZhdGUgZGlzcGxheWVkQ29sdW1ucyA9ICAoc3RhdGU6VGFibGVTdGF0ZSkgPT4gb3JkZXJNZXRhRGF0YShzdGF0ZSkubWFwKG1kID0+IG1kLmtleSlcclxuICAgIC5maWx0ZXIoa2V5ID0+ICFzdGF0ZS5oaWRkZW5LZXlzLmluY2x1ZGVzKGtleSkgJiYgc3RhdGUubWV0YURhdGFba2V5XS5maWVsZFR5cGUgIT09IEZpZWxkVHlwZS5IaWRkZW4pO1xyXG4gIHJlYWRvbmx5IGRpc3BsYXllZENvbHVtbnMkID0gdGhpcy5zZWxlY3QodGhpcy5kaXNwbGF5ZWRDb2x1bW5zKTtcclxuICByZWFkb25seSBoaWRlQ29sdW1uID0gdGhpcy51cGRhdGVyKChzdGF0ZSwga2V5OiBzdHJpbmcpID0+ICh7XHJcbiAgICAuLi5zdGF0ZSxcclxuICAgIGhpZGRlbktleXM6IFsuLi5zdGF0ZS5oaWRkZW5LZXlzLmZpbHRlciggayA9PiBrICE9PSBrZXkpLCBrZXldLFxyXG4gIH0pKTtcclxuXHJcbiAgcmVhZG9ubHkgcmVzZXRTdGF0ZSA9IHRoaXMudXBkYXRlcigoc3RhdGUpID0+IHtcclxuICAgIGNvbnN0IGhpZGRlbkNvbHVtbnMgPSBPYmplY3QudmFsdWVzKHN0YXRlLm1ldGFEYXRhKVxyXG4gICAgICAuZmlsdGVyKG1kID0+IG1kLmZpZWxkVHlwZSA9PT0gRmllbGRUeXBlLkhpZGRlbilcclxuICAgICAgLm1hcChtZCA9PiBtZC5rZXkpO1xyXG4gICAgY29uc3Qgc29ydGVkID0gdGhpcy5jcmVhdGVQcmVTb3J0KHN0YXRlLm1ldGFEYXRhKTtcclxuICAgIHJldHVybiB1cGRhdGUoc3RhdGUsIHtcclxuICAgICAgIGhpZGRlbktleXM6IHsgJHNldDogWy4uLmhpZGRlbkNvbHVtbnNdIH0sXHJcbiAgICAgICBmaWx0ZXJzOiB7ICRzZXQ6IHt9IH0sXHJcbiAgICAgICBzb3J0ZWQ6IHskc2V0OiBzb3J0ZWR9LFxyXG4gICAgICAgdXNlckRlZmluZWQgOiB7JHNldDoge3dpZHRoczp7fSxvcmRlcjp7fSx0YWJsZTp7fX19LFxyXG4gICAgICB9KTtcclxuICB9KTtcclxuXHJcbiAgcmVhZG9ubHkgc2hvd0NvbHVtbiA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGtleTogc3RyaW5nKSA9PiAoe1xyXG4gICAgLi4uc3RhdGUsXHJcbiAgICBoaWRkZW5LZXlzOiBzdGF0ZS5oaWRkZW5LZXlzLmZpbHRlciggayA9PiBrICE9PSBrZXkpLFxyXG4gIH0pKTtcclxuXHJcbiAgcmVhZG9ubHkgc2V0SGlkZGVuQ29sdW1ucyA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGRpc3BsYXlDb2xzOiB7a2V5OiBzdHJpbmcsIHZpc2libGU6IGJvb2xlYW59W10pID0+IHtcclxuXHJcbiAgICB2YXIgaGlkZGVuS2V5c1NldD0gbmV3IFNldDxzdHJpbmc+KFxyXG4gICAgICBbXHJcbiAgICAgICAgLi4uZGlzcGxheUNvbHMuZmlsdGVyKGNvbCA9PiAhY29sLnZpc2libGUpLm1hcChjb2wgPT4gY29sLmtleSksXHJcbiAgICAgICAgLi4uT2JqZWN0LnZhbHVlcyhzdGF0ZS5tZXRhRGF0YSkuZmlsdGVyKG1kID0+IG1kLmZpZWxkVHlwZSA9PT0gRmllbGRUeXBlLkhpZGRlbikubWFwKG1kID0+IG1kLmtleSlcclxuICAgICAgXVxyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4gdXBkYXRlKCBzdGF0ZSAsIHsgaGlkZGVuS2V5czogeyRzZXQ6IFsuLi5oaWRkZW5LZXlzU2V0XX19KTtcclxuICB9KTtcclxuXHJcblxyXG4gIHNldFVzZXJEZWZpbmVkV2lkdGggPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLGNvbFdpZHRoczp7a2V5OiBzdHJpbmcsIHdpZHRoSW5QaXhlbDpudW1iZXJ9W10pID0+IHtcclxuICAgIGNvbnN0IHVzZXJEZWZpbmVkV2lkdGhzID0gey4uLnN0YXRlLnVzZXJEZWZpbmVkLndpZHRoc307XHJcbiAgICBjb2xXaWR0aHMuZm9yRWFjaChjdyA9PiB7XHJcbiAgICAgIHVzZXJEZWZpbmVkV2lkdGhzW2N3LmtleV0gPSBjdy53aWR0aEluUGl4ZWw7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB7Li4uc3RhdGUsIHVzZXJEZWZpbmVkOiB7Li4uc3RhdGUudXNlckRlZmluZWQsd2lkdGhzOnVzZXJEZWZpbmVkV2lkdGhzfX07XHJcbiAgfSk7XHJcblxyXG4gIHNldFVzZXJEZWZpbmVkT3JkZXIgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLG1vdmVkOntuZXdPcmRlcjpudW1iZXIsb2xkT3JkZXI6bnVtYmVyfSk9PntcclxuICAgIGNvbnN0IHtuZXdPcmRlciAsb2xkT3JkZXJ9ID0gbW92ZWQ7XHJcbiAgICBjb25zdCBtZHNBcnIgPSBvcmRlclZpZXdhYmxlTWV0YURhdGEoc3RhdGUpO1xyXG4gICAgbW92ZUl0ZW1JbkFycmF5KG1kc0FycixvbGRPcmRlcixuZXdPcmRlcik7XHJcblxyXG4gICAgY29uc3QgdXNlckRlZmluZWRPcmRlciA9IG1kc0Fyci5yZWR1Y2UoKGFnZ3JlZ2F0ZTogYW55LGN1cnJlbnQsaW5kZXgpID0+IHtcclxuICAgICAgYWdncmVnYXRlW2N1cnJlbnQua2V5XSA9IGluZGV4O1xyXG4gICAgICByZXR1cm4gYWdncmVnYXRlXHJcbiAgICB9LHt9KTtcclxuICAgIHJldHVybih7Li4uc3RhdGUsIHVzZXJEZWZpbmVkOnsuLi5zdGF0ZS51c2VyRGVmaW5lZCxvcmRlcjp1c2VyRGVmaW5lZE9yZGVyfX0pXHJcbiAgfSlcclxuXHJcblxyXG4gIHJlYWRvbmx5IGZpbHRlcnMkID0gdGhpcy5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUuZmlsdGVycyApO1xyXG5cclxuICByZWFkb25seSBnZXRGaWx0ZXIkID0gKGZpbHRlcklkOiBzdHJpbmcpIDogT2JzZXJ2YWJsZTxGaWx0ZXJJbmZvIHwgQ3VzdG9tRmlsdGVyIHwgdW5kZWZpbmVkPiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3QoIHN0YXRlID0+IHN0YXRlLmZpbHRlcnNbZmlsdGVySWRdICk7XHJcbiAgfVxyXG4gIHJlYWRvbmx5IGFkZEZpbHRlciA9IHRoaXMudXBkYXRlciggKHN0YXRlLCBmaWx0ZXI6IEZpbHRlckluZm8gfCBDdXN0b21GaWx0ZXIgKSA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5hZGRGaWx0ZXJzVG9TdGF0ZShzdGF0ZSwgW2ZpbHRlcl0pO1xyXG4gIH0pO1xyXG5cclxuICByZWFkb25seSBhZGRGaWx0ZXJzID0gdGhpcy51cGRhdGVyKChzdGF0ZSxmaWx0ZXJzOihGaWx0ZXJJbmZvIHwgQ3VzdG9tRmlsdGVyIClbXSk9PntcclxuICAgIHJldHVybiB0aGlzLmFkZEZpbHRlcnNUb1N0YXRlKHN0YXRlLCBmaWx0ZXJzKTtcclxuICB9KVxyXG5cclxuXHJcbiAgcHJpdmF0ZSBhZGRGaWx0ZXJzVG9TdGF0ZSA9IChzdGF0ZTpUYWJsZVN0YXRlLGZpbHRlcnM6KEZpbHRlckluZm8gfCBDdXN0b21GaWx0ZXIpW10pIDogVGFibGVTdGF0ZSA9PiB7XHJcblxyXG4gICAgdmFyIGN1c3RvbUZpbHRlcnMgPSBmaWx0ZXJzLmZpbHRlciggIGlzQ3VzdG9tRmlsdGVyICk7XHJcblxyXG4gICAgdmFyIGZpbHRlckluZm9zID0gZmlsdGVycy5maWx0ZXIoaXNGaWx0ZXJJbmZvKTtcclxuXHJcbiAgICBjb25zdCBmaWx0ZXJzT2JqID0gZmlsdGVySW5mb3NcclxuICAgICAgLmZpbHRlcihmbHRyID0+IE9iamVjdC5rZXlzKHN0YXRlLm1ldGFEYXRhKS5zb21lKGtleSA9PiBrZXkgPT09IGZsdHIua2V5KSB8fCBjb25zb2xlLndhcm4oYE1ldGEgZGF0YSB3aXRoIGtleSAke2ZsdHIua2V5fSBub3QgZm91bmRgKSlcclxuICAgICAgLnJlZHVjZSgoZmlsdGVyc09iajoge1trOiBzdHJpbmddOiBhbnl9LGZpbHRlcik9PntcclxuICAgICAgICBpZiAoIWZpbHRlci5maWx0ZXJJZCkge1xyXG4gICAgICAgICAgZmlsdGVyLmZpbHRlcklkID0gdXVpZCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaWx0ZXJzT2JqW2ZpbHRlci5maWx0ZXJJZF0gPSBmaWx0ZXI7XHJcbiAgICAgICAgcmV0dXJuIGZpbHRlcnNPYmo7XHJcbiAgICAgIH0se30pO1xyXG5cclxuICAgICAgY3VzdG9tRmlsdGVycy5mb3JFYWNoKCBmbHRyID0+IHtcclxuICAgICAgICBpZighZmx0ci5maWx0ZXJJZCkge1xyXG4gICAgICAgICAgZmx0ci5maWx0ZXJJZCA9IHV1aWQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmlsdGVyc09ialtmbHRyLmZpbHRlcklkXSA9IGZsdHI7XHJcbiAgICAgIH0pXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAuLi5zdGF0ZSxcclxuICAgICAgZmlsdGVycyA6IHsuLi5zdGF0ZS5maWx0ZXJzLCAuLi5maWx0ZXJzT2JqIH1cclxuICAgIH07XHJcbiAgfVxyXG5cclxuICByZWFkb25seSByZW1vdmVGaWx0ZXIgPSB0aGlzLnVwZGF0ZXIoIChzdGF0ZSwgZmlsdGVySWQ6IHN0cmluZykgPT5cclxuICAgIHVwZGF0ZShzdGF0ZSwge2ZpbHRlcnM6IHskdW5zZXQgOiBbZmlsdGVySWQgXX19KVxyXG4gICk7XHJcblxyXG4gIHJlYWRvbmx5IHJlbW92ZUZpbHRlcnMgPSB0aGlzLnVwZGF0ZXIoIChzdGF0ZSwgZmlsdGVySWRzOiBzdHJpbmdbXSkgPT5cclxuICAgIHVwZGF0ZShzdGF0ZSwge2ZpbHRlcnM6IHskdW5zZXQgOiBbLi4uZmlsdGVySWRzIF19fSlcclxuICApO1xyXG5cclxuICByZWFkb25seSBjbGVhckZpbHRlcnMgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlKT0+XHJcbiAgICAoey4uLnN0YXRlLGZpbHRlcnM6e319KSlcclxuXHJcblxyXG4gIHJlYWRvbmx5IHNvcnRlZCQgPSB0aGlzLnN0YXRlJC5waXBlKFxyXG4gICAgZmlsdGVyKHN0YXRlSXMoSW5pdGlhbGl6YXRpb25TdGF0ZS5SZWFkeSkpLFxyXG4gICAgbWFwKCBzdGF0ZSA9PiBzdGF0ZS5zb3J0ZWQpXHJcbiAgKTtcclxuXHJcbiAgY3JlYXRlUHJlU29ydCA9IChtZXRhRGF0YXM6IERpY3Rpb25hcnk8TWV0YURhdGE+KTogU29ydFtdID0+IHtcclxuICAgIHJldHVybiBPYmplY3QudmFsdWVzKG1ldGFEYXRhcykuZmlsdGVyKCggbWV0YURhdGEgKSA6IG1ldGFEYXRhIGlzIE1ldGFEYXRhICYge3ByZVNvcnQ6IFNvcnREZWZ9ID0+ICEhbWV0YURhdGEucHJlU29ydClcclxuICAgIC5zb3J0KCh7ICBwcmVTb3J0OiBwczEgIH0sIHsgcHJlU29ydDogcHMyIH0gKSA9PiAocHMxLnByZWNlZGVuY2UgfHwgTnVtYmVyLk1BWF9WQUxVRSkgLSAoIHBzMi5wcmVjZWRlbmNlIHx8IE51bWJlci5NQVhfVkFMVUUpKVxyXG4gICAgLm1hcCgoIHtrZXksIHByZVNvcnR9ICkgPT4gKHsgYWN0aXZlOiBrZXksIGRpcmVjdGlvbjogcHJlU29ydC5kaXJlY3Rpb24gfSkpXHJcbiAgfVxyXG4gIHJlYWRvbmx5IHNldFNvcnQgPSB0aGlzLnVwZGF0ZXI8e2tleTogc3RyaW5nLCBkaXJlY3Rpb24/OiBTb3J0RGlyZWN0aW9ufT4oKHN0YXRlLCB7a2V5LCBkaXJlY3Rpb259ICkgPT4ge1xyXG4gICAgY29uc3Qgc29ydEFycmF5ID0gc3RhdGUuc29ydGVkLmZpbHRlciggcyA9PiBzLmFjdGl2ZSAhPT0ga2V5ICk7XHJcbiAgICBpZihkaXJlY3Rpb24pIHtcclxuICAgICAgc29ydEFycmF5LnVuc2hpZnQoe2FjdGl2ZToga2V5LCBkaXJlY3Rpb259KTtcclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgIC4uLnN0YXRlLFxyXG4gICAgICBzb3J0ZWQ6IHNvcnRBcnJheSxcclxuICAgIH07XHJcbiAgfSk7XHJcblxyXG4gIHJlYWRvbmx5IHNldEFsbFNvcnQgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLHNvcnRBcnJheTpTb3J0W10pPT57XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAuLi5zdGF0ZSxcclxuICAgICAgc29ydGVkOiBzb3J0QXJyYXksXHJcbiAgICB9O1xyXG4gIH0pO1xyXG5cclxuICB1cGRhdGVTdGF0ZUZ1bmMgPSAoc3RhdGU6IFRhYmxlU3RhdGUsIGluY29taW5nVGFibGVTdGF0ZTogUGFydGlhbDxUYWJsZVN0YXRlPikgOiBUYWJsZVN0YXRlID0+IHtcclxuICAgIGNvbnN0IG1ldGFEYXRhID0gc3RhdGUubWV0YURhdGE7XHJcbiAgICBjb25zdCBzb3J0ZWQgPSBpbmNvbWluZ1RhYmxlU3RhdGUuc29ydGVkPy5sZW5ndGggPyBpbmNvbWluZ1RhYmxlU3RhdGUuc29ydGVkXHJcbiAgICAgIDogc3RhdGUuaW5pdGlhbGl6YXRpb25TdGF0ZSA9PT0gSW5pdGlhbGl6YXRpb25TdGF0ZS5DcmVhdGVkID8gdGhpcy5jcmVhdGVQcmVTb3J0KG1ldGFEYXRhKSA6IHN0YXRlLnNvcnRlZDtcclxuICAgIHJldHVybiB7Li4uc3RhdGUsIC4uLmluY29taW5nVGFibGVTdGF0ZSwgbWV0YURhdGEgLCBzb3J0ZWR9O1xyXG4gIH1cclxuXHJcbiAgcmVhZG9ubHkgc2V0UGFnZVNpemUgPSB0aGlzLnVwZGF0ZXIoIChzdGF0ZSwgcGFnZVNpemU6IG51bWJlcik9PiAoey4uLnN0YXRlLHBhZ2VTaXplfSkpO1xyXG5cclxuICByZWFkb25seSB1cGRhdGVTdGF0ZSA9IHRoaXMudXBkYXRlcjxQYXJ0aWFsPFRhYmxlU3RhdGU+Pih0aGlzLnVwZGF0ZVN0YXRlRnVuYyk7XHJcblxyXG4gIGNsZWFuUGVyc2lzdGVkU3RhdGUoc3RhdGU6IFRhYmxlU3RhdGUscFN0YXRlOiBQZXJzaXN0ZWRUYWJsZVN0YXRlKSB7XHJcbiAgICBjb25zdCBtZXRhcyA9IE9iamVjdC52YWx1ZXMoc3RhdGUubWV0YURhdGEpO1xyXG4gICAgY29uc3QgZmlsdGVycyA9IE9iamVjdC52YWx1ZXMocFN0YXRlLmZpbHRlcnMpLmZpbHRlcihmbHRyID0+IGlzQ3VzdG9tRmlsdGVyKGZsdHIpIHx8IG1ldGFzLnNvbWUobSA9PiBtLmtleSA9PT0gZmx0ci5rZXkpKS5yZWR1Y2UoKG9iajogYW55LCBmaWx0ZXIpID0+IHtcclxuICAgICAgb2JqW2ZpbHRlci5maWx0ZXJJZCFdID0gcFN0YXRlLmZpbHRlcnNbZmlsdGVyLmZpbHRlcklkIV07XHJcbiAgICAgIHJldHVybiBvYmo7XHJcbiAgICB9LCB7fSk7XHJcbiAgICBjb25zdCBzb3J0ZWQgPSBwU3RhdGUuc29ydGVkLmZpbHRlcihzID0+IG1ldGFzLnNvbWUobSA9PiBtLmtleSA9PT0gcy5hY3RpdmUpKTtcclxuICAgIHJldHVybiAoey4uLnBTdGF0ZSxmaWx0ZXJzLHNvcnRlZH0pXHJcbiAgfVxyXG5cclxuICByZWFkb25seSB1cGRhdGVTdGF0ZUZyb21QZXJzaXN0ZWRTdGF0ZSA9IHRoaXMudXBkYXRlciggKCBzdGF0ZTogVGFibGVTdGF0ZSwgcGVyc2lzdGVkU3RhdGU6IFBlcnNpc3RlZFRhYmxlU3RhdGUpIDogVGFibGVTdGF0ZSA9PiB7XHJcbiAgICBjb25zdCBpbmNvbWluZ1RhYmxlU3RhdGU6IFBhcnRpYWw8VGFibGVTdGF0ZT4gPSB0aGlzLmNsZWFuUGVyc2lzdGVkU3RhdGUoc3RhdGUscGVyc2lzdGVkU3RhdGUpO1xyXG4gICAgY29uc3QgbmV3U3RhdGUgPSAgdGhpcy51cGRhdGVTdGF0ZUZ1bmMoc3RhdGUsaW5jb21pbmdUYWJsZVN0YXRlKTtcclxuICAgIG5ld1N0YXRlLmluaXRpYWxpemF0aW9uU3RhdGUgPSBzdGF0ZS5pbml0aWFsaXphdGlvblN0YXRlID09PSBJbml0aWFsaXphdGlvblN0YXRlLk1ldGFEYXRhTG9hZGVkID8gSW5pdGlhbGl6YXRpb25TdGF0ZS5Mb2FkZWRGcm9tU3RvcmUgOiBzdGF0ZS5pbml0aWFsaXphdGlvblN0YXRlO1xyXG4gICAgcmV0dXJuIG5ld1N0YXRlO1xyXG4gIH0pO1xyXG5cclxuICBnZXRVc2VyRGVmaW5lZFRhYmxlU2l6ZSQgPSB0aGlzLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS51c2VyRGVmaW5lZC50YWJsZS53aWR0aCk7XHJcbiAgc2V0VGFibGVXaWR0aCA9IHRoaXMudXBkYXRlcigoc3RhdGUsd2lkdGhJbnBpeGVsczpudW1iZXIpID0+ICh7Li4uc3RhdGUsdXNlckRlZmluZWQ6IHsuLi5zdGF0ZS51c2VyRGVmaW5lZCx0YWJsZTp7d2lkdGg6d2lkdGhJbnBpeGVsc319fSkpIDtcclxuXHJcbiAgbWVyZ2VNZXRhID0gKG9yaWc6IE1ldGFEYXRhLCBtZXJnZTogTWV0YURhdGEpOiBNZXRhRGF0YSA9PiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIGtleTogb3JpZy5rZXksXHJcbiAgICAgICAgZGlzcGxheU5hbWU6IG1lcmdlLmRpc3BsYXlOYW1lID8/IG9yaWcuZGlzcGxheU5hbWUsXHJcbiAgICAgICAgZmllbGRUeXBlOiBtZXJnZS5maWVsZFR5cGUgfHwgb3JpZy5maWVsZFR5cGUsXHJcbiAgICAgICAgYWRkaXRpb25hbDogey4uLm9yaWcuYWRkaXRpb25hbCwgLi4ubWVyZ2UuYWRkaXRpb25hbH0sXHJcbiAgICAgICAgb3JkZXI6IG1lcmdlLm9yZGVyID8/IG9yaWcub3JkZXIsXHJcbiAgICAgICAgcHJlU29ydDogbWVyZ2UucHJlU29ydCA/PyBvcmlnLnByZVNvcnQsXHJcbiAgICAgICAgX2ludGVybmFsTm90VXNlckRlZmluZWQ6IG1lcmdlLl9pbnRlcm5hbE5vdFVzZXJEZWZpbmVkIHx8IG9yaWcuX2ludGVybmFsTm90VXNlckRlZmluZWQsXHJcbiAgICAgICAgd2lkdGg6IG1lcmdlLndpZHRoID8/IG9yaWcud2lkdGgsXHJcbiAgICAgICAgbm9FeHBvcnQ6IG1lcmdlLm5vRXhwb3J0IHx8IG9yaWcubm9FeHBvcnQsXHJcbiAgICAgICAgbm9GaWx0ZXI6IG1lcmdlLm5vRmlsdGVyIHx8IG9yaWcubm9GaWx0ZXIsXHJcbiAgICAgICAgY3VzdG9tQ2VsbDogbWVyZ2UuY3VzdG9tQ2VsbCA/PyBvcmlnLmN1c3RvbUNlbGwsXHJcbiAgICAgICAgdHJhbnNmb3JtOiBtZXJnZS50cmFuc2Zvcm0gPz8gb3JpZy50cmFuc2Zvcm0sXHJcbiAgICAgICAgY2xpY2s6IG1lcmdlLmNsaWNrID8/IG9yaWcuY2xpY2ssXHJcbiAgICAgICAgY2xhc3NlczogbWVyZ2UuY2xhc3NlcyA/PyBvcmlnLmNsYXNzZXMsXHJcbiAgICAgICAgbm9Tb3J0OiBtZXJnZS5ub1NvcnQgPz8gb3JpZy5ub1NvcnQsXHJcbiAgICAgICAgdGVtcGxhdGU6IG1lcmdlLnRlbXBsYXRlID8/IG9yaWcudGVtcGxhdGUsXHJcbiAgICAgICAgdG9vbFRpcDogbWVyZ2UudG9vbFRpcCA/PyBvcmlnLnRvb2xUaXAsXHJcbiAgICAgICAgdXNlSWNvbjogbWVyZ2UudXNlSWNvbiA/PyBvcmlnLnVzZUljb24sXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcmVhZG9ubHkgc2V0SW50aWFsaXphdGlvblN0YXRlID0gdGhpcy51cGRhdGVyKCAoc3RhdGUsIGluaXRpYWxpemF0aW9uU3RhdGU6ICBJbml0aWFsaXphdGlvblN0YXRlKSA9PiB7XHJcbiAgICByZXR1cm4gey4uLnN0YXRlLCBpbml0aWFsaXphdGlvblN0YXRlfTtcclxuICB9KTtcclxuXHJcbiAgcnVuT25jZVdoZW4ocHJlZGljYXRlOiBQcmVkaWNhdGU8VGFibGVTdGF0ZT4sIGZ1bmM6IChzdGF0ZTpUYWJsZVN0YXRlKSA9PiB2b2lkKSB7XHJcbiAgICBjb25zdCBvYnMgPSB0aGlzLnN0YXRlJC5waXBlKG9uY2VXaGVuKHByZWRpY2F0ZSkpO1xyXG4gICAgdGhpcy5vbihvYnMsIChzdGF0ZSkgPT4ge1xyXG4gICAgICBmdW5jKHN0YXRlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25SZWFkeSggZnVuYzogKHN0YXRlOiBUYWJsZVN0YXRlKSA9PiB2b2lkICkge1xyXG4gICAgdGhpcy5ydW5PbmNlV2hlbihzdGF0ZUlzKEluaXRpYWxpemF0aW9uU3RhdGUuUmVhZHkpLGZ1bmMpO1xyXG4gIH1cclxuXHJcbiAgcmVhZG9ubHkgc2V0TWV0YURhdGEgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBtZDogTWV0YURhdGFbXSB8IE1ldGFEYXRhICkgPT4ge1xyXG4gICAgY29uc3QgbWV0YURhdGEgPSAoIEFycmF5LmlzQXJyYXkobWQpID8gWy4uLm1kXSA6IFttZF0gKVxyXG4gICAgICAucmVkdWNlKChwcmV2OiBEaWN0aW9uYXJ5PE1ldGFEYXRhPixjdXJyKSA9PiB7XHJcbiAgICAgICAgaWYocHJldltjdXJyLmtleV0pIHtcclxuICAgICAgICAgIHByZXZbY3Vyci5rZXldID0gdGhpcy5tZXJnZU1ldGEocHJldltjdXJyLmtleV0sY3Vycik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHByZXZbY3Vyci5rZXldID0gY3VycjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHByZXY7XHJcbiAgICAgIH0gLHt9KTtcclxuICAgIGxldCBzb3J0ZWQgPSBzdGF0ZS5zb3J0ZWQ7XHJcbiAgICBpZihzb3J0ZWQubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHNvcnRlZCA9IHRoaXMuY3JlYXRlUHJlU29ydChtZXRhRGF0YSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBvcmRlciA9IHRoaXMuaW5pdGlhbGl6ZU9yZGVyKHN0YXRlLCBtZXRhRGF0YSk7XHJcbiAgICBjb25zdCBpbml0aWFsaXphdGlvblN0YXRlID0gc3RhdGUuaW5pdGlhbGl6YXRpb25TdGF0ZSA9PSBJbml0aWFsaXphdGlvblN0YXRlLkNyZWF0ZWQgPyAgSW5pdGlhbGl6YXRpb25TdGF0ZS5NZXRhRGF0YUxvYWRlZCA6IHN0YXRlLmluaXRpYWxpemF0aW9uU3RhdGU7XHJcbiAgICByZXR1cm4gey4uLnN0YXRlLCBpbml0aWFsaXphdGlvblN0YXRlLCBtZXRhRGF0YSwgc29ydGVkLCB1c2VyRGVmaW5lZDp7Li4uc3RhdGUudXNlckRlZmluZWQsb3JkZXI6b3JkZXJ9fTtcclxuICB9KTtcclxuXHJcbiAgcHJpdmF0ZSBpbml0aWFsaXplT3JkZXIgPSAoc3RhdGU6VGFibGVTdGF0ZSxtZHM6IERpY3Rpb25hcnk8TWV0YURhdGE+KSA6IERpY3Rpb25hcnk8bnVtYmVyPiA9PiB7XHJcbiAgICBjb25zdCB2aWV3YWJsZU1ldGFEYXRhQXJyID0gT2JqZWN0LnZhbHVlcyhtZHMpLmZpbHRlcihhID0+IGEuZmllbGRUeXBlICE9PSBGaWVsZFR5cGUuSGlkZGVuKTtcclxuICAgIGxldCB1c2VyRGVmaW5lZE9yZGVyID0gc3RhdGUudXNlckRlZmluZWQub3JkZXI7XHJcbiAgICBpZih2aWV3YWJsZU1ldGFEYXRhQXJyLnNvbWUobWV0YSA9PiB1c2VyRGVmaW5lZE9yZGVyW21ldGEua2V5XSA9PSBudWxsKSl7XHJcbiAgICAgIHJldHVybiB7fVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHVzZXJEZWZpbmVkT3JkZXI7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVDb2xsYXBzZUhlYWRlciA9IHRoaXMudXBkYXRlcigoc3RhdGUpPT57XHJcbiAgICBjb25zdCB0YWJsZVNldHRpbmdzID0gey4uLnN0YXRlLnBlcnNpc3RlZFRhYmxlU2V0dGluZ3N9O1xyXG4gICAgdGFibGVTZXR0aW5ncy5jb2xsYXBzZUhlYWRlciA9ICF0YWJsZVNldHRpbmdzLmNvbGxhcHNlSGVhZGVyO1xyXG4gICAgcmV0dXJuICh7Li4uc3RhdGUscGVyc2lzdGVkVGFibGVTZXR0aW5ncyA6IG5ldyBQZXJzaXN0ZWRUYWJsZVNldHRpbmdzKHRhYmxlU2V0dGluZ3MpfSk7XHJcbiAgfSlcclxuXHJcbiAgdG9nZ2xlQ29sbGFwc2VGb290ZXIgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlKT0+e1xyXG4gICAgY29uc3QgdGFibGVTZXR0aW5ncyA9IHsuLi5zdGF0ZS5wZXJzaXN0ZWRUYWJsZVNldHRpbmdzfTtcclxuICAgIHRhYmxlU2V0dGluZ3MuY29sbGFwc2VGb290ZXIgPSAhdGFibGVTZXR0aW5ncy5jb2xsYXBzZUZvb3RlcjtcclxuICAgIHJldHVybiAoey4uLnN0YXRlLHBlcnNpc3RlZFRhYmxlU2V0dGluZ3MgOiBuZXcgUGVyc2lzdGVkVGFibGVTZXR0aW5ncyh0YWJsZVNldHRpbmdzKX0pO1xyXG4gIH0pXHJcblxyXG4gIGFkZEdyb3VwQnlLZXkgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBncm91cEJ5S2V5OiBzdHJpbmcpID0+ICh7XHJcbiAgICAuLi5zdGF0ZSxcclxuICAgIGdyb3VwQnlLZXlzOiBbLi4uc3RhdGUuZ3JvdXBCeUtleXMsIGdyb3VwQnlLZXldXHJcbiAgfSkpO1xyXG5cclxuICByZW1vdmVHcm91cEJ5S2V5ID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgZ3JvdXBCeUtleTogc3RyaW5nKSA9PiAoe1xyXG4gICAgLi4uc3RhdGUsXHJcbiAgICBncm91cEJ5S2V5czogc3RhdGUuZ3JvdXBCeUtleXMuZmlsdGVyKGtleSA9PiBncm91cEJ5S2V5ICE9IGtleSlcclxuICB9KSk7XHJcblxyXG4gIHVwZGF0ZUdyb3VwID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgZ3JvdXA6IEdyb3VwKSA9PiAoe1xyXG4gICAgLi4uc3RhdGUsXHJcbiAgICBncm91cHM6IFsuLi5zdGF0ZS5ncm91cHMuZmlsdGVyKGcgPT4gZy5ncm91cE5hbWUgIT0gZ3JvdXAuZ3JvdXBOYW1lKSwgZ3JvdXBdXHJcbiAgfSkpXHJcblxyXG4gIGdyb3VwQnlLZXlzJCA9IHRoaXMuc2VsZWN0KHN0YXRlID0+IHN0YXRlLmdyb3VwQnlLZXlzKTtcclxuICBncm91cHMkID0gdGhpcy5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUuZ3JvdXBzKTtcclxuXHJcbiAgc2V0VGFibGVTZXR0aW5ncyA9IHRoaXMudXBkYXRlcigoc3RhdGUsc2V0dGluZ3M6R2VuZXJhbFRhYmxlU2V0dGluZ3MpPT57XHJcbiAgICBjb25zdCBzOlRhYmxlU3RhdGUgPSB7XHJcbiAgICAgIC4uLnN0YXRlLFxyXG4gICAgICBwZXJzaXN0ZWRUYWJsZVNldHRpbmdzIDogbmV3IFBlcnNpc3RlZFRhYmxlU2V0dGluZ3Moc2V0dGluZ3MpLFxyXG4gICAgICBub3RQZXJzaXN0ZWRUYWJsZVNldHRpbmdzIDogbmV3IE5vdFBlcnNpc3RlZFRhYmxlU2V0dGluZ3Moc2V0dGluZ3MpXHJcbiAgICAgIH07XHJcbiAgICByZXR1cm4gcztcclxuICB9KTtcclxuXHJcbiAgdGFibGVTZXR0aW5ncyQgPSB0aGlzLnNlbGVjdChzdGF0ZSA9PiB7XHJcbiAgICBjb25zdCB0cyA6IFBlcnNpc3RlZFRhYmxlU2V0dGluZ3MgJiBOb3RQZXJzaXN0ZWRUYWJsZVNldHRpbmdzID1cclxuICAgICAgey4uLnN0YXRlLnBlcnNpc3RlZFRhYmxlU2V0dGluZ3MsLi4uc3RhdGUubm90UGVyc2lzdGVkVGFibGVTZXR0aW5nc307XHJcbiAgICByZXR1cm4gdHM7XHJcbiAgfSlcclxuXHJcbiAgc2V0TGlua01hcHMgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLG1hcHM6IGFueSk9PntcclxuICAgIHJldHVybiB7Li4uc3RhdGUsbGlua01hcHM6bWFwc307XHJcbiAgfSk7XHJcbiAgZ2V0TGlua01hcCA9IChtZDpNZXRhRGF0YSkgPT57XHJcbiAgICByZXR1cm4gIHRoaXMuc2VsZWN0KHN0YXRlID0+IHtcclxuICAgICAgcmV0dXJuIHN0YXRlLmxpbmtNYXBzW21kLmtleV19KX07XHJcbn1cclxuZXhwb3J0IGNvbnN0IG9yZGVyVmlld2FibGVNZXRhRGF0YSA9IChzdGF0ZTpUYWJsZVN0YXRlKSA9PiBvcmRlck1ldGFEYXRhKHN0YXRlKS5maWx0ZXIoYSA9PiBhLmZpZWxkVHlwZSAhPT0gRmllbGRUeXBlLkhpZGRlbik7XHJcblxyXG5leHBvcnQgY29uc3Qgb3JkZXJNZXRhRGF0YSA9IChzdGF0ZTpUYWJsZVN0YXRlKSA9PiB7XHJcbiAgY29uc3QgdXNlck9yZGVyQXJyID0gT2JqZWN0LmVudHJpZXMoc3RhdGUudXNlckRlZmluZWQub3JkZXIpO1xyXG4gIHJldHVybiB1c2VyT3JkZXJBcnIubGVuZ3RoID9cclxuICAgT2JqZWN0LnZhbHVlcyhzdGF0ZS5tZXRhRGF0YSkuc29ydCgoYSxiKT0+IHN0YXRlLnVzZXJEZWZpbmVkLm9yZGVyW2Eua2V5XSAtIHN0YXRlLnVzZXJEZWZpbmVkLm9yZGVyW2Iua2V5XSlcclxuICAgOlxyXG4gICBPYmplY3QudmFsdWVzKHN0YXRlLm1ldGFEYXRhKS5zb3J0KChhLGIpPT4gYS5vcmRlciEgLSBiLm9yZGVyISlcclxufVxyXG4iXX0=
|