@ngrx/store-devtools 11.0.0-rc.0 → 11.1.1
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/bundles/ngrx-store-devtools.umd.js +44 -789
- package/bundles/ngrx-store-devtools.umd.js.map +1 -1
- package/bundles/ngrx-store-devtools.umd.min.js +2 -2
- package/bundles/ngrx-store-devtools.umd.min.js.map +1 -1
- package/esm2015/index.js +2 -7
- package/esm2015/ngrx-store-devtools.js +2 -7
- package/esm2015/public_api.js +2 -7
- package/esm2015/src/actions.js +1 -135
- package/esm2015/src/config.js +1 -80
- package/esm2015/src/devtools-dispatcher.js +1 -6
- package/esm2015/src/devtools.js +9 -123
- package/esm2015/src/extension.js +14 -216
- package/esm2015/src/index.js +1 -6
- package/esm2015/src/instrument.js +3 -26
- package/esm2015/src/reducer.js +8 -146
- package/esm2015/src/utils.js +10 -92
- package/fesm2015/ngrx-store-devtools.js +43 -834
- package/fesm2015/ngrx-store-devtools.js.map +1 -1
- package/package.json +3 -3
- package/schematics-core/index.js +4 -1
- package/schematics-core/index.js.map +1 -1
- package/schematics-core/utility/ast-utils.js +127 -1
- package/schematics-core/utility/ast-utils.js.map +1 -1
- package/schematics-core/utility/config.js +1 -1
- package/schematics-core/utility/config.js.map +1 -1
- package/schematics-core/utility/find-component.js +101 -0
- package/schematics-core/utility/find-component.js.map +1 -0
- package/schematics-core/utility/libs-version.js +1 -1
- package/schematics-core/utility/libs-version.js.map +1 -1
- package/schematics-core/utility/project.js +4 -2
- package/schematics-core/utility/project.js.map +1 -1
- package/CHANGELOG.md +0 -3
- package/esm2015/index.ngsummary.json +0 -1
- package/esm2015/ngrx-store-devtools.ngsummary.json +0 -1
- package/esm2015/public_api.ngsummary.json +0 -1
- package/esm2015/src/actions.ngsummary.json +0 -1
- package/esm2015/src/config.ngsummary.json +0 -1
- package/esm2015/src/devtools-dispatcher.ngsummary.json +0 -1
- package/esm2015/src/devtools.ngsummary.json +0 -1
- package/esm2015/src/extension.ngsummary.json +0 -1
- package/esm2015/src/index.ngsummary.json +0 -1
- package/esm2015/src/instrument.ngfactory.js +0 -11
- package/esm2015/src/instrument.ngsummary.json +0 -1
- package/esm2015/src/reducer.ngsummary.json +0 -1
- package/esm2015/src/utils.ngsummary.json +0 -1
- package/src/instrument.ngfactory.d.ts +0 -3
package/esm2015/src/utils.js
CHANGED
|
@@ -1,25 +1,9 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* Generated from: src/utils.ts
|
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
5
|
-
*/
|
|
6
1
|
import * as Actions from './actions';
|
|
7
|
-
/**
|
|
8
|
-
* @param {?} first
|
|
9
|
-
* @param {?} second
|
|
10
|
-
* @return {?}
|
|
11
|
-
*/
|
|
12
2
|
export function difference(first, second) {
|
|
13
|
-
return first.filter((
|
|
14
|
-
* @param {?} item
|
|
15
|
-
* @return {?}
|
|
16
|
-
*/
|
|
17
|
-
(item) => second.indexOf(item) < 0));
|
|
3
|
+
return first.filter((item) => second.indexOf(item) < 0);
|
|
18
4
|
}
|
|
19
5
|
/**
|
|
20
6
|
* Provides an app's view into the state of the lifted store.
|
|
21
|
-
* @param {?} liftedState
|
|
22
|
-
* @return {?}
|
|
23
7
|
*/
|
|
24
8
|
export function unliftState(liftedState) {
|
|
25
9
|
const { computedStates, currentStateIndex } = liftedState;
|
|
@@ -34,107 +18,60 @@ export function unliftState(liftedState) {
|
|
|
34
18
|
const { state } = computedStates[currentStateIndex];
|
|
35
19
|
return state;
|
|
36
20
|
}
|
|
37
|
-
/**
|
|
38
|
-
* @param {?} liftedState
|
|
39
|
-
* @return {?}
|
|
40
|
-
*/
|
|
41
21
|
export function unliftAction(liftedState) {
|
|
42
22
|
return liftedState.actionsById[liftedState.nextActionId - 1];
|
|
43
23
|
}
|
|
44
24
|
/**
|
|
45
25
|
* Lifts an app's action into an action on the lifted store.
|
|
46
|
-
* @param {?} action
|
|
47
|
-
* @return {?}
|
|
48
26
|
*/
|
|
49
27
|
export function liftAction(action) {
|
|
50
28
|
return new Actions.PerformAction(action, +Date.now());
|
|
51
29
|
}
|
|
52
30
|
/**
|
|
53
31
|
* Sanitizes given actions with given function.
|
|
54
|
-
* @param {?} actionSanitizer
|
|
55
|
-
* @param {?} actions
|
|
56
|
-
* @return {?}
|
|
57
32
|
*/
|
|
58
33
|
export function sanitizeActions(actionSanitizer, actions) {
|
|
59
|
-
return Object.keys(actions).reduce((
|
|
60
|
-
* @param {?} sanitizedActions
|
|
61
|
-
* @param {?} actionIdx
|
|
62
|
-
* @return {?}
|
|
63
|
-
*/
|
|
64
|
-
(sanitizedActions, actionIdx) => {
|
|
65
|
-
/** @type {?} */
|
|
34
|
+
return Object.keys(actions).reduce((sanitizedActions, actionIdx) => {
|
|
66
35
|
const idx = Number(actionIdx);
|
|
67
36
|
sanitizedActions[idx] = sanitizeAction(actionSanitizer, actions[idx], idx);
|
|
68
37
|
return sanitizedActions;
|
|
69
|
-
}
|
|
38
|
+
}, {});
|
|
70
39
|
}
|
|
71
40
|
/**
|
|
72
41
|
* Sanitizes given action with given function.
|
|
73
|
-
* @param {?} actionSanitizer
|
|
74
|
-
* @param {?} action
|
|
75
|
-
* @param {?} actionIdx
|
|
76
|
-
* @return {?}
|
|
77
42
|
*/
|
|
78
43
|
export function sanitizeAction(actionSanitizer, action, actionIdx) {
|
|
79
44
|
return Object.assign(Object.assign({}, action), { action: actionSanitizer(action.action, actionIdx) });
|
|
80
45
|
}
|
|
81
46
|
/**
|
|
82
47
|
* Sanitizes given states with given function.
|
|
83
|
-
* @param {?} stateSanitizer
|
|
84
|
-
* @param {?} states
|
|
85
|
-
* @return {?}
|
|
86
48
|
*/
|
|
87
49
|
export function sanitizeStates(stateSanitizer, states) {
|
|
88
|
-
return states.map((
|
|
89
|
-
* @param {?} computedState
|
|
90
|
-
* @param {?} idx
|
|
91
|
-
* @return {?}
|
|
92
|
-
*/
|
|
93
|
-
(computedState, idx) => ({
|
|
50
|
+
return states.map((computedState, idx) => ({
|
|
94
51
|
state: sanitizeState(stateSanitizer, computedState.state, idx),
|
|
95
52
|
error: computedState.error,
|
|
96
|
-
}))
|
|
53
|
+
}));
|
|
97
54
|
}
|
|
98
55
|
/**
|
|
99
56
|
* Sanitizes given state with given function.
|
|
100
|
-
* @param {?} stateSanitizer
|
|
101
|
-
* @param {?} state
|
|
102
|
-
* @param {?} stateIdx
|
|
103
|
-
* @return {?}
|
|
104
57
|
*/
|
|
105
58
|
export function sanitizeState(stateSanitizer, state, stateIdx) {
|
|
106
59
|
return stateSanitizer(state, stateIdx);
|
|
107
60
|
}
|
|
108
61
|
/**
|
|
109
62
|
* Read the config and tell if actions should be filtered
|
|
110
|
-
* @param {?} config
|
|
111
|
-
* @return {?}
|
|
112
63
|
*/
|
|
113
64
|
export function shouldFilterActions(config) {
|
|
114
65
|
return config.predicate || config.actionsSafelist || config.actionsBlocklist;
|
|
115
66
|
}
|
|
116
67
|
/**
|
|
117
68
|
* Return a full filtered lifted state
|
|
118
|
-
* @param {?} liftedState
|
|
119
|
-
* @param {?=} predicate
|
|
120
|
-
* @param {?=} safelist
|
|
121
|
-
* @param {?=} blocklist
|
|
122
|
-
* @return {?}
|
|
123
69
|
*/
|
|
124
70
|
export function filterLiftedState(liftedState, predicate, safelist, blocklist) {
|
|
125
|
-
/** @type {?} */
|
|
126
71
|
const filteredStagedActionIds = [];
|
|
127
|
-
/** @type {?} */
|
|
128
72
|
const filteredActionsById = {};
|
|
129
|
-
/** @type {?} */
|
|
130
73
|
const filteredComputedStates = [];
|
|
131
|
-
liftedState.stagedActionIds.forEach((
|
|
132
|
-
* @param {?} id
|
|
133
|
-
* @param {?} idx
|
|
134
|
-
* @return {?}
|
|
135
|
-
*/
|
|
136
|
-
(id, idx) => {
|
|
137
|
-
/** @type {?} */
|
|
74
|
+
liftedState.stagedActionIds.forEach((id, idx) => {
|
|
138
75
|
const liftedAction = liftedState.actionsById[id];
|
|
139
76
|
if (!liftedAction)
|
|
140
77
|
return;
|
|
@@ -145,44 +82,25 @@ export function filterLiftedState(liftedState, predicate, safelist, blocklist) {
|
|
|
145
82
|
filteredActionsById[id] = liftedAction;
|
|
146
83
|
filteredStagedActionIds.push(id);
|
|
147
84
|
filteredComputedStates.push(liftedState.computedStates[idx]);
|
|
148
|
-
})
|
|
85
|
+
});
|
|
149
86
|
return Object.assign(Object.assign({}, liftedState), { stagedActionIds: filteredStagedActionIds, actionsById: filteredActionsById, computedStates: filteredComputedStates });
|
|
150
87
|
}
|
|
151
88
|
/**
|
|
152
89
|
* Return true is the action should be ignored
|
|
153
|
-
* @param {?} state
|
|
154
|
-
* @param {?} action
|
|
155
|
-
* @param {?=} predicate
|
|
156
|
-
* @param {?=} safelist
|
|
157
|
-
* @param {?=} blockedlist
|
|
158
|
-
* @return {?}
|
|
159
90
|
*/
|
|
160
91
|
export function isActionFiltered(state, action, predicate, safelist, blockedlist) {
|
|
161
|
-
/** @type {?} */
|
|
162
92
|
const predicateMatch = predicate && !predicate(state, action.action);
|
|
163
|
-
/** @type {?} */
|
|
164
93
|
const safelistMatch = safelist &&
|
|
165
|
-
!action.action.type.match(safelist.map((
|
|
166
|
-
* @param {?} s
|
|
167
|
-
* @return {?}
|
|
168
|
-
*/
|
|
169
|
-
(s) => escapeRegExp(s))).join('|'));
|
|
170
|
-
/** @type {?} */
|
|
94
|
+
!action.action.type.match(safelist.map((s) => escapeRegExp(s)).join('|'));
|
|
171
95
|
const blocklistMatch = blockedlist &&
|
|
172
|
-
action.action.type.match(blockedlist.map((
|
|
173
|
-
* @param {?} s
|
|
174
|
-
* @return {?}
|
|
175
|
-
*/
|
|
176
|
-
(s) => escapeRegExp(s))).join('|'));
|
|
96
|
+
action.action.type.match(blockedlist.map((s) => escapeRegExp(s)).join('|'));
|
|
177
97
|
return predicateMatch || safelistMatch || blocklistMatch;
|
|
178
98
|
}
|
|
179
99
|
/**
|
|
180
100
|
* Return string with escaped RegExp special characters
|
|
181
101
|
* https://stackoverflow.com/a/6969486/1337347
|
|
182
|
-
* @param {?} s
|
|
183
|
-
* @return {?}
|
|
184
102
|
*/
|
|
185
103
|
function escapeRegExp(s) {
|
|
186
104
|
return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
187
105
|
}
|
|
188
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vbW9kdWxlcy9zdG9yZS1kZXZ0b29scy8iLCJzb3VyY2VzIjpbInNyYy91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUVBLE9BQU8sS0FBSyxPQUFPLE1BQU0sV0FBVyxDQUFDOzs7Ozs7QUFjckMsTUFBTSxVQUFVLFVBQVUsQ0FBQyxLQUFZLEVBQUUsTUFBYTtJQUNwRCxPQUFPLEtBQUssQ0FBQyxNQUFNOzs7O0lBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFDLENBQUM7QUFDMUQsQ0FBQzs7Ozs7O0FBS0QsTUFBTSxVQUFVLFdBQVcsQ0FBQyxXQUF3QjtVQUM1QyxFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxHQUFHLFdBQVc7SUFFekQsNENBQTRDO0lBQzVDLDZGQUE2RjtJQUM3RixnREFBZ0Q7SUFDaEQsaUhBQWlIO0lBQ2pILElBQUksaUJBQWlCLElBQUksY0FBYyxDQUFDLE1BQU0sRUFBRTtjQUN4QyxFQUFFLEtBQUssRUFBRSxHQUFHLGNBQWMsQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUMzRCxPQUFPLEtBQUssQ0FBQztLQUNkO1VBRUssRUFBRSxLQUFLLEVBQUUsR0FBRyxjQUFjLENBQUMsaUJBQWlCLENBQUM7SUFDbkQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDOzs7OztBQUVELE1BQU0sVUFBVSxZQUFZLENBQUMsV0FBd0I7SUFDbkQsT0FBTyxXQUFXLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDL0QsQ0FBQzs7Ozs7O0FBS0QsTUFBTSxVQUFVLFVBQVUsQ0FBQyxNQUFjO0lBQ3ZDLE9BQU8sSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUs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QXNCOztVQUVoQixjQUFjLEdBQUcsU0FBUyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDOztVQUM5RCxhQUFhLEdBQ2pCLFFBQVE7UUFDUixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRzs7OztRQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7O1VBQ3JFLGNBQWMsR0FDbEIsV0FBVztRQUNYLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRzs7OztRQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0UsT0FBTyxjQUFjLElBQUksYUFBYSxJQUFJLGNBQWMsQ0FBQztBQUMzRCxDQUFDOzs7Ozs7O0FBTUQsU0FBUyxZQUFZLENBQUMsQ0FBUztJQUM3QixPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMscUJBQXFCLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDbEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGlvbiB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcblxuaW1wb3J0ICogYXMgQWN0aW9ucyBmcm9tICcuL2FjdGlvbnMnO1xuaW1wb3J0IHtcbiAgQWN0aW9uU2FuaXRpemVyLFxuICBTdGF0ZVNhbml0aXplcixcbiAgUHJlZGljYXRlLFxuICBTdG9yZURldnRvb2xzQ29uZmlnLFxufSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQge1xuICBDb21wdXRlZFN0YXRlLFxuICBMaWZ0ZWRBY3Rpb24sXG4gIExpZnRlZEFjdGlvbnMsXG4gIExpZnRlZFN0YXRlLFxufSBmcm9tICcuL3JlZHVjZXInO1xuXG5leHBvcnQgZnVuY3Rpb24gZGlmZmVyZW5jZShmaXJzdDogYW55W10sIHNlY29uZDogYW55W10pIHtcbiAgcmV0dXJuIGZpcnN0LmZpbHRlcigoaXRlbSkgPT4gc2Vjb25kLmluZGV4T2YoaXRlbSkgPCAwKTtcbn1cblxuLyoqXG4gKiBQcm92aWRlcyBhbiBhcHAncyB2aWV3IGludG8gdGhlIHN0YXRlIG9mIHRoZSBsaWZ0ZWQgc3RvcmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bmxpZnRTdGF0ZShsaWZ0ZWRTdGF0ZTogTGlmdGVkU3RhdGUpIHtcbiAgY29uc3QgeyBjb21wdXRlZFN0YXRlcywgY3VycmVudFN0YXRlSW5kZXggfSA9IGxpZnRlZFN0YXRlO1xuXG4gIC8vIEF0IHN0YXJ0IHVwIE5nUnggZGlzcGF0Y2hlcyBpbml0IGFjdGlvbnMsXG4gIC8vIFdoZW4gdGhlc2UgaW5pdCBhY3Rpb25zIGFyZSBiZWluZyBmaWx0ZXJlZCBvdXQgYnkgdGhlIHByZWRpY2F0ZSBvciBzYWZlL2Jsb2NrIGxpc3Qgb3B0aW9uc1xuICAvLyB3ZSBkb24ndCBoYXZlIGEgY29tcGxldGUgY29tcHV0ZWQgc3RhdGVzIHlldC5cbiAgLy8gQXQgdGhpcyBwb2ludCBpdCBjb3VsZCBoYXBwZW4gdGhhdCB3ZSdyZSBvdXQgb2YgYm91bmRzLCB3aGVuIHRoaXMgaGFwcGVucyB3ZSBmYWxsIGJhY2sgdG8gdGhlIGxhc3Qga25vd24gc3RhdGVcbiAgaWYgKGN1cnJlbnRTdGF0ZUluZGV4ID49IGNvbXB1dGVkU3RhdGVzLmxlbmd0aCkge1xuICAgIGNvbnN0IHsgc3RhdGUgfSA9IGNvbXB1dGVkU3RhdGVzW2NvbXB1dGVkU3RhdGVzLmxlbmd0aCAtIDFdO1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIGNvbnN0IHsgc3RhdGUgfSA9IGNvbXB1dGVkU3RhdGVzW2N1cnJlbnRTdGF0ZUluZGV4XTtcbiAgcmV0dXJuIHN0YXRlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5saWZ0QWN0aW9uKGxpZnRlZFN0YXRlOiBMaWZ0ZWRTdGF0ZSk6IExpZnRlZEFjdGlvbiB7XG4gIHJldHVybiBsaWZ0ZWRTdGF0ZS5hY3Rpb25zQnlJZFtsaWZ0ZWRTdGF0ZS5uZXh0QWN0aW9uSWQgLSAxXTtcbn1cblxuLyoqXG4gKiBMaWZ0cyBhbiBhcHAncyBhY3Rpb24gaW50byBhbiBhY3Rpb24gb24gdGhlIGxpZnRlZCBzdG9yZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxpZnRBY3Rpb24oYWN0aW9uOiBBY3Rpb24pIHtcbiAgcmV0dXJuIG5ldyBBY3Rpb25zLlBlcmZvcm1BY3Rpb24oYWN0aW9uLCArRGF0ZS5ub3coKSk7XG59XG5cbi8qKlxuICogU2FuaXRpemVzIGdpdmVuIGFjdGlvbnMgd2l0aCBnaXZlbiBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNhbml0aXplQWN0aW9ucyhcbiAgYWN0aW9uU2FuaXRpemVyOiBBY3Rpb25TYW5pdGl6ZXIsXG4gIGFjdGlvbnM6IExpZnRlZEFjdGlvbnNcbik6IExpZnRlZEFjdGlvbnMge1xuICByZXR1cm4gT2JqZWN0LmtleXMoYWN0aW9ucykucmVkdWNlKChzYW5pdGl6ZWRBY3Rpb25zLCBhY3Rpb25JZHgpID0+IHtcbiAgICBjb25zdCBpZHggPSBOdW1iZXIoYWN0aW9uSWR4KTtcbiAgICBzYW5pdGl6ZWRBY3Rpb25zW2lkeF0gPSBzYW5pdGl6ZUFjdGlvbihhY3Rpb25TYW5pdGl6ZXIsIGFjdGlvbnNbaWR4XSwgaWR4KTtcbiAgICByZXR1cm4gc2FuaXRpemVkQWN0aW9ucztcbiAgfSwgPExpZnRlZEFjdGlvbnM+e30pO1xufVxuXG4vKipcbiAqIFNhbml0aXplcyBnaXZlbiBhY3Rpb24gd2l0aCBnaXZlbiBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNhbml0aXplQWN0aW9uKFxuICBhY3Rpb25TYW5pdGl6ZXI6IEFjdGlvblNhbml0aXplcixcbiAgYWN0aW9uOiBMaWZ0ZWRBY3Rpb24sXG4gIGFjdGlvbklkeDogbnVtYmVyXG4pOiBMaWZ0ZWRBY3Rpb24ge1xuICByZXR1cm4ge1xuICAgIC4uLmFjdGlvbixcbiAgICBhY3Rpb246IGFjdGlvblNhbml0aXplcihhY3Rpb24uYWN0aW9uLCBhY3Rpb25JZHgpLFxuICB9O1xufVxuXG4vKipcbiAqIFNhbml0aXplcyBnaXZlbiBzdGF0ZXMgd2l0aCBnaXZlbiBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNhbml0aXplU3RhdGVzKFxuICBzdGF0ZVNhbml0aXplcjogU3RhdGVTYW5pdGl6ZXIsXG4gIHN0YXRlczogQ29tcHV0ZWRTdGF0ZVtdXG4pOiBDb21wdXRlZFN0YXRlW10ge1xuICByZXR1cm4gc3RhdGVzLm1hcCgoY29tcHV0ZWRTdGF0ZSwgaWR4KSA9PiAoe1xuICAgIHN0YXRlOiBzYW5pdGl6ZVN0YXRlKHN0YXRlU2FuaXRpemVyLCBjb21wdXRlZFN0YXRlLnN0YXRlLCBpZHgpLFxuICAgIGVycm9yOiBjb21wdXRlZFN0YXRlLmVycm9yLFxuICB9KSk7XG59XG5cbi8qKlxuICogU2FuaXRpemVzIGdpdmVuIHN0YXRlIHdpdGggZ2l2ZW4gZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzYW5pdGl6ZVN0YXRlKFxuICBzdGF0ZVNhbml0aXplcjogU3RhdGVTYW5pdGl6ZXIsXG4gIHN0YXRlOiBhbnksXG4gIHN0YXRlSWR4OiBudW1iZXJcbikge1xuICByZXR1cm4gc3RhdGVTYW5pdGl6ZXIoc3RhdGUsIHN0YXRlSWR4KTtcbn1cblxuLyoqXG4gKiBSZWFkIHRoZSBjb25maWcgYW5kIHRlbGwgaWYgYWN0aW9ucyBzaG91bGQgYmUgZmlsdGVyZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNob3VsZEZpbHRlckFjdGlvbnMoY29uZmlnOiBTdG9yZURldnRvb2xzQ29uZmlnKSB7XG4gIHJldHVybiBjb25maWcucHJlZGljYXRlIHx8IGNvbmZpZy5hY3Rpb25zU2FmZWxpc3QgfHwgY29uZmlnLmFjdGlvbnNCbG9ja2xpc3Q7XG59XG5cbi8qKlxuICogUmV0dXJuIGEgZnVsbCBmaWx0ZXJlZCBsaWZ0ZWQgc3RhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlckxpZnRlZFN0YXRlKFxuICBsaWZ0ZWRTdGF0ZTogTGlmdGVkU3RhdGUsXG4gIHByZWRpY2F0ZT86IFByZWRpY2F0ZSxcbiAgc2FmZWxpc3Q/OiBzdHJpbmdbXSxcbiAgYmxvY2tsaXN0Pzogc3RyaW5nW11cbik6IExpZnRlZFN0YXRlIHtcbiAgY29uc3QgZmlsdGVyZWRTdGFnZWRBY3Rpb25JZHM6IG51bWJlcltdID0gW107XG4gIGNvbnN0IGZpbHRlcmVkQWN0aW9uc0J5SWQ6IExpZnRlZEFjdGlvbnMgPSB7fTtcbiAgY29uc3QgZmlsdGVyZWRDb21wdXRlZFN0YXRlczogQ29tcHV0ZWRTdGF0ZVtdID0gW107XG4gIGxpZnRlZFN0YXRlLnN0YWdlZEFjdGlvbklkcy5mb3JFYWNoKChpZCwgaWR4KSA9PiB7XG4gICAgY29uc3QgbGlmdGVkQWN0aW9uID0gbGlmdGVkU3RhdGUuYWN0aW9uc0J5SWRbaWRdO1xuICAgIGlmICghbGlmdGVkQWN0aW9uKSByZXR1cm47XG4gICAgaWYgKFxuICAgICAgaWR4ICYmXG4gICAgICBpc0FjdGlvbkZpbHRlcmVkKFxuICAgICAgICBsaWZ0ZWRTdGF0ZS5jb21wdXRlZFN0YXRlc1tpZHhdLFxuICAgICAgICBsaWZ0ZWRBY3Rpb24sXG4gICAgICAgIHByZWRpY2F0ZSxcbiAgICAgICAgc2FmZWxpc3QsXG4gICAgICAgIGJsb2NrbGlzdFxuICAgICAgKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBmaWx0ZXJlZEFjdGlvbnNCeUlkW2lkXSA9IGxpZnRlZEFjdGlvbjtcbiAgICBmaWx0ZXJlZFN0YWdlZEFjdGlvbklkcy5wdXNoKGlkKTtcbiAgICBmaWx0ZXJlZENvbXB1dGVkU3RhdGVzLnB1c2gobGlmdGVkU3RhdGUuY29tcHV0ZWRTdGF0ZXNbaWR4XSk7XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIC4uLmxpZnRlZFN0YXRlLFxuICAgIHN0YWdlZEFjdGlvbklkczogZmlsdGVyZWRTdGFnZWRBY3Rpb25JZHMsXG4gICAgYWN0aW9uc0J5SWQ6IGZpbHRlcmVkQWN0aW9uc0J5SWQsXG4gICAgY29tcHV0ZWRTdGF0ZXM6IGZpbHRlcmVkQ29tcHV0ZWRTdGF0ZXMsXG4gIH07XG59XG5cbi8qKlxuICogUmV0dXJuIHRydWUgaXMgdGhlIGFjdGlvbiBzaG91bGQgYmUgaWdub3JlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBY3Rpb25GaWx0ZXJlZChcbiAgc3RhdGU6IGFueSxcbiAgYWN0aW9uOiBMaWZ0ZWRBY3Rpb24sXG4gIHByZWRpY2F0ZT86IFByZWRpY2F0ZSxcbiAgc2FmZWxpc3Q/OiBzdHJpbmdbXSxcbiAgYmxvY2tlZGxpc3Q/OiBzdHJpbmdbXVxuKSB7XG4gIGNvbnN0IHByZWRpY2F0ZU1hdGNoID0gcHJlZGljYXRlICYmICFwcmVkaWNhdGUoc3RhdGUsIGFjdGlvbi5hY3Rpb24pO1xuICBjb25zdCBzYWZlbGlzdE1hdGNoID1cbiAgICBzYWZlbGlzdCAmJlxuICAgICFhY3Rpb24uYWN0aW9uLnR5cGUubWF0Y2goc2FmZWxpc3QubWFwKChzKSA9PiBlc2NhcGVSZWdFeHAocykpLmpvaW4oJ3wnKSk7XG4gIGNvbnN0IGJsb2NrbGlzdE1hdGNoID1cbiAgICBibG9ja2VkbGlzdCAmJlxuICAgIGFjdGlvbi5hY3Rpb24udHlwZS5tYXRjaChibG9ja2VkbGlzdC5tYXAoKHMpID0+IGVzY2FwZVJlZ0V4cChzKSkuam9pbignfCcpKTtcbiAgcmV0dXJuIHByZWRpY2F0ZU1hdGNoIHx8IHNhZmVsaXN0TWF0Y2ggfHwgYmxvY2tsaXN0TWF0Y2g7XG59XG5cbi8qKlxuICogUmV0dXJuIHN0cmluZyB3aXRoIGVzY2FwZWQgUmVnRXhwIHNwZWNpYWwgY2hhcmFjdGVyc1xuICogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzY5Njk0ODYvMTMzNzM0N1xuICovXG5mdW5jdGlvbiBlc2NhcGVSZWdFeHAoczogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xcXVxcXFxdL2csICdcXFxcJCYnKTtcbn1cbiJdfQ==
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9tb2R1bGVzL3N0b3JlLWRldnRvb2xzL3NyYy91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEtBQUssT0FBTyxNQUFNLFdBQVcsQ0FBQztBQWNyQyxNQUFNLFVBQVUsVUFBVSxDQUFDLEtBQVksRUFBRSxNQUFhO0lBQ3BELE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMxRCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLFdBQXdCO0lBQ2xELE1BQU0sRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxXQUFXLENBQUM7SUFFMUQsNENBQTRDO0lBQzVDLDZGQUE2RjtJQUM3RixnREFBZ0Q7SUFDaEQsaUhBQWlIO0lBQ2pILElBQUksaUJBQWlCLElBQUksY0FBYyxDQUFDLE1BQU0sRUFBRTtRQUM5QyxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsY0FBYyxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDNUQsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUVELE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxjQUFjLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNwRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLFdBQXdCO0lBQ25ELE9BQU8sV0FBVyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQy9ELENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQUMsTUFBYztJQUN2QyxPQUFPLElBQUksT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVB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R0FFRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FDOUIsS0FBVSxFQUNWLE1BQW9CLEVBQ3BCLFNBQXFCLEVBQ3JCLFFBQW1CLEVBQ25CLFdBQXNCO0lBRXRCLE1BQU0sY0FBYyxHQUFHLFNBQVMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JFLE1BQU0sYUFBYSxHQUNqQixRQUFRO1FBQ1IsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDNUUsTUFBTSxjQUFjLEdBQ2xCLFdBQVc7UUFDWCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDOUUsT0FBTyxjQUFjLElBQUksYUFBYSxJQUFJLGNBQWMsQ0FBQztBQUMzRCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyxZQUFZLENBQUMsQ0FBUztJQUM3QixPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMscUJBQXFCLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDbEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGlvbiB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcblxuaW1wb3J0ICogYXMgQWN0aW9ucyBmcm9tICcuL2FjdGlvbnMnO1xuaW1wb3J0IHtcbiAgQWN0aW9uU2FuaXRpemVyLFxuICBTdGF0ZVNhbml0aXplcixcbiAgUHJlZGljYXRlLFxuICBTdG9yZURldnRvb2xzQ29uZmlnLFxufSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQge1xuICBDb21wdXRlZFN0YXRlLFxuICBMaWZ0ZWRBY3Rpb24sXG4gIExpZnRlZEFjdGlvbnMsXG4gIExpZnRlZFN0YXRlLFxufSBmcm9tICcuL3JlZHVjZXInO1xuXG5leHBvcnQgZnVuY3Rpb24gZGlmZmVyZW5jZShmaXJzdDogYW55W10sIHNlY29uZDogYW55W10pIHtcbiAgcmV0dXJuIGZpcnN0LmZpbHRlcigoaXRlbSkgPT4gc2Vjb25kLmluZGV4T2YoaXRlbSkgPCAwKTtcbn1cblxuLyoqXG4gKiBQcm92aWRlcyBhbiBhcHAncyB2aWV3IGludG8gdGhlIHN0YXRlIG9mIHRoZSBsaWZ0ZWQgc3RvcmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bmxpZnRTdGF0ZShsaWZ0ZWRTdGF0ZTogTGlmdGVkU3RhdGUpIHtcbiAgY29uc3QgeyBjb21wdXRlZFN0YXRlcywgY3VycmVudFN0YXRlSW5kZXggfSA9IGxpZnRlZFN0YXRlO1xuXG4gIC8vIEF0IHN0YXJ0IHVwIE5nUnggZGlzcGF0Y2hlcyBpbml0IGFjdGlvbnMsXG4gIC8vIFdoZW4gdGhlc2UgaW5pdCBhY3Rpb25zIGFyZSBiZWluZyBmaWx0ZXJlZCBvdXQgYnkgdGhlIHByZWRpY2F0ZSBvciBzYWZlL2Jsb2NrIGxpc3Qgb3B0aW9uc1xuICAvLyB3ZSBkb24ndCBoYXZlIGEgY29tcGxldGUgY29tcHV0ZWQgc3RhdGVzIHlldC5cbiAgLy8gQXQgdGhpcyBwb2ludCBpdCBjb3VsZCBoYXBwZW4gdGhhdCB3ZSdyZSBvdXQgb2YgYm91bmRzLCB3aGVuIHRoaXMgaGFwcGVucyB3ZSBmYWxsIGJhY2sgdG8gdGhlIGxhc3Qga25vd24gc3RhdGVcbiAgaWYgKGN1cnJlbnRTdGF0ZUluZGV4ID49IGNvbXB1dGVkU3RhdGVzLmxlbmd0aCkge1xuICAgIGNvbnN0IHsgc3RhdGUgfSA9IGNvbXB1dGVkU3RhdGVzW2NvbXB1dGVkU3RhdGVzLmxlbmd0aCAtIDFdO1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIGNvbnN0IHsgc3RhdGUgfSA9IGNvbXB1dGVkU3RhdGVzW2N1cnJlbnRTdGF0ZUluZGV4XTtcbiAgcmV0dXJuIHN0YXRlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5saWZ0QWN0aW9uKGxpZnRlZFN0YXRlOiBMaWZ0ZWRTdGF0ZSk6IExpZnRlZEFjdGlvbiB7XG4gIHJldHVybiBsaWZ0ZWRTdGF0ZS5hY3Rpb25zQnlJZFtsaWZ0ZWRTdGF0ZS5uZXh0QWN0aW9uSWQgLSAxXTtcbn1cblxuLyoqXG4gKiBMaWZ0cyBhbiBhcHAncyBhY3Rpb24gaW50byBhbiBhY3Rpb24gb24gdGhlIGxpZnRlZCBzdG9yZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxpZnRBY3Rpb24oYWN0aW9uOiBBY3Rpb24pIHtcbiAgcmV0dXJuIG5ldyBBY3Rpb25zLlBlcmZvcm1BY3Rpb24oYWN0aW9uLCArRGF0ZS5ub3coKSk7XG59XG5cbi8qKlxuICogU2FuaXRpemVzIGdpdmVuIGFjdGlvbnMgd2l0aCBnaXZlbiBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNhbml0aXplQWN0aW9ucyhcbiAgYWN0aW9uU2FuaXRpemVyOiBBY3Rpb25TYW5pdGl6ZXIsXG4gIGFjdGlvbnM6IExpZnRlZEFjdGlvbnNcbik6IExpZnRlZEFjdGlvbnMge1xuICByZXR1cm4gT2JqZWN0LmtleXMoYWN0aW9ucykucmVkdWNlKChzYW5pdGl6ZWRBY3Rpb25zLCBhY3Rpb25JZHgpID0+IHtcbiAgICBjb25zdCBpZHggPSBOdW1iZXIoYWN0aW9uSWR4KTtcbiAgICBzYW5pdGl6ZWRBY3Rpb25zW2lkeF0gPSBzYW5pdGl6ZUFjdGlvbihhY3Rpb25TYW5pdGl6ZXIsIGFjdGlvbnNbaWR4XSwgaWR4KTtcbiAgICByZXR1cm4gc2FuaXRpemVkQWN0aW9ucztcbiAgfSwgPExpZnRlZEFjdGlvbnM+e30pO1xufVxuXG4vKipcbiAqIFNhbml0aXplcyBnaXZlbiBhY3Rpb24gd2l0aCBnaXZlbiBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNhbml0aXplQWN0aW9uKFxuICBhY3Rpb25TYW5pdGl6ZXI6IEFjdGlvblNhbml0aXplcixcbiAgYWN0aW9uOiBMaWZ0ZWRBY3Rpb24sXG4gIGFjdGlvbklkeDogbnVtYmVyXG4pOiBMaWZ0ZWRBY3Rpb24ge1xuICByZXR1cm4ge1xuICAgIC4uLmFjdGlvbixcbiAgICBhY3Rpb246IGFjdGlvblNhbml0aXplcihhY3Rpb24uYWN0aW9uLCBhY3Rpb25JZHgpLFxuICB9O1xufVxuXG4vKipcbiAqIFNhbml0aXplcyBnaXZlbiBzdGF0ZXMgd2l0aCBnaXZlbiBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNhbml0aXplU3RhdGVzKFxuICBzdGF0ZVNhbml0aXplcjogU3RhdGVTYW5pdGl6ZXIsXG4gIHN0YXRlczogQ29tcHV0ZWRTdGF0ZVtdXG4pOiBDb21wdXRlZFN0YXRlW10ge1xuICByZXR1cm4gc3RhdGVzLm1hcCgoY29tcHV0ZWRTdGF0ZSwgaWR4KSA9PiAoe1xuICAgIHN0YXRlOiBzYW5pdGl6ZVN0YXRlKHN0YXRlU2FuaXRpemVyLCBjb21wdXRlZFN0YXRlLnN0YXRlLCBpZHgpLFxuICAgIGVycm9yOiBjb21wdXRlZFN0YXRlLmVycm9yLFxuICB9KSk7XG59XG5cbi8qKlxuICogU2FuaXRpemVzIGdpdmVuIHN0YXRlIHdpdGggZ2l2ZW4gZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzYW5pdGl6ZVN0YXRlKFxuICBzdGF0ZVNhbml0aXplcjogU3RhdGVTYW5pdGl6ZXIsXG4gIHN0YXRlOiBhbnksXG4gIHN0YXRlSWR4OiBudW1iZXJcbikge1xuICByZXR1cm4gc3RhdGVTYW5pdGl6ZXIoc3RhdGUsIHN0YXRlSWR4KTtcbn1cblxuLyoqXG4gKiBSZWFkIHRoZSBjb25maWcgYW5kIHRlbGwgaWYgYWN0aW9ucyBzaG91bGQgYmUgZmlsdGVyZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNob3VsZEZpbHRlckFjdGlvbnMoY29uZmlnOiBTdG9yZURldnRvb2xzQ29uZmlnKSB7XG4gIHJldHVybiBjb25maWcucHJlZGljYXRlIHx8IGNvbmZpZy5hY3Rpb25zU2FmZWxpc3QgfHwgY29uZmlnLmFjdGlvbnNCbG9ja2xpc3Q7XG59XG5cbi8qKlxuICogUmV0dXJuIGEgZnVsbCBmaWx0ZXJlZCBsaWZ0ZWQgc3RhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlckxpZnRlZFN0YXRlKFxuICBsaWZ0ZWRTdGF0ZTogTGlmdGVkU3RhdGUsXG4gIHByZWRpY2F0ZT86IFByZWRpY2F0ZSxcbiAgc2FmZWxpc3Q/OiBzdHJpbmdbXSxcbiAgYmxvY2tsaXN0Pzogc3RyaW5nW11cbik6IExpZnRlZFN0YXRlIHtcbiAgY29uc3QgZmlsdGVyZWRTdGFnZWRBY3Rpb25JZHM6IG51bWJlcltdID0gW107XG4gIGNvbnN0IGZpbHRlcmVkQWN0aW9uc0J5SWQ6IExpZnRlZEFjdGlvbnMgPSB7fTtcbiAgY29uc3QgZmlsdGVyZWRDb21wdXRlZFN0YXRlczogQ29tcHV0ZWRTdGF0ZVtdID0gW107XG4gIGxpZnRlZFN0YXRlLnN0YWdlZEFjdGlvbklkcy5mb3JFYWNoKChpZCwgaWR4KSA9PiB7XG4gICAgY29uc3QgbGlmdGVkQWN0aW9uID0gbGlmdGVkU3RhdGUuYWN0aW9uc0J5SWRbaWRdO1xuICAgIGlmICghbGlmdGVkQWN0aW9uKSByZXR1cm47XG4gICAgaWYgKFxuICAgICAgaWR4ICYmXG4gICAgICBpc0FjdGlvbkZpbHRlcmVkKFxuICAgICAgICBsaWZ0ZWRTdGF0ZS5jb21wdXRlZFN0YXRlc1tpZHhdLFxuICAgICAgICBsaWZ0ZWRBY3Rpb24sXG4gICAgICAgIHByZWRpY2F0ZSxcbiAgICAgICAgc2FmZWxpc3QsXG4gICAgICAgIGJsb2NrbGlzdFxuICAgICAgKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBmaWx0ZXJlZEFjdGlvbnNCeUlkW2lkXSA9IGxpZnRlZEFjdGlvbjtcbiAgICBmaWx0ZXJlZFN0YWdlZEFjdGlvbklkcy5wdXNoKGlkKTtcbiAgICBmaWx0ZXJlZENvbXB1dGVkU3RhdGVzLnB1c2gobGlmdGVkU3RhdGUuY29tcHV0ZWRTdGF0ZXNbaWR4XSk7XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIC4uLmxpZnRlZFN0YXRlLFxuICAgIHN0YWdlZEFjdGlvbklkczogZmlsdGVyZWRTdGFnZWRBY3Rpb25JZHMsXG4gICAgYWN0aW9uc0J5SWQ6IGZpbHRlcmVkQWN0aW9uc0J5SWQsXG4gICAgY29tcHV0ZWRTdGF0ZXM6IGZpbHRlcmVkQ29tcHV0ZWRTdGF0ZXMsXG4gIH07XG59XG5cbi8qKlxuICogUmV0dXJuIHRydWUgaXMgdGhlIGFjdGlvbiBzaG91bGQgYmUgaWdub3JlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBY3Rpb25GaWx0ZXJlZChcbiAgc3RhdGU6IGFueSxcbiAgYWN0aW9uOiBMaWZ0ZWRBY3Rpb24sXG4gIHByZWRpY2F0ZT86IFByZWRpY2F0ZSxcbiAgc2FmZWxpc3Q/OiBzdHJpbmdbXSxcbiAgYmxvY2tlZGxpc3Q/OiBzdHJpbmdbXVxuKSB7XG4gIGNvbnN0IHByZWRpY2F0ZU1hdGNoID0gcHJlZGljYXRlICYmICFwcmVkaWNhdGUoc3RhdGUsIGFjdGlvbi5hY3Rpb24pO1xuICBjb25zdCBzYWZlbGlzdE1hdGNoID1cbiAgICBzYWZlbGlzdCAmJlxuICAgICFhY3Rpb24uYWN0aW9uLnR5cGUubWF0Y2goc2FmZWxpc3QubWFwKChzKSA9PiBlc2NhcGVSZWdFeHAocykpLmpvaW4oJ3wnKSk7XG4gIGNvbnN0IGJsb2NrbGlzdE1hdGNoID1cbiAgICBibG9ja2VkbGlzdCAmJlxuICAgIGFjdGlvbi5hY3Rpb24udHlwZS5tYXRjaChibG9ja2VkbGlzdC5tYXAoKHMpID0+IGVzY2FwZVJlZ0V4cChzKSkuam9pbignfCcpKTtcbiAgcmV0dXJuIHByZWRpY2F0ZU1hdGNoIHx8IHNhZmVsaXN0TWF0Y2ggfHwgYmxvY2tsaXN0TWF0Y2g7XG59XG5cbi8qKlxuICogUmV0dXJuIHN0cmluZyB3aXRoIGVzY2FwZWQgUmVnRXhwIHNwZWNpYWwgY2hhcmFjdGVyc1xuICogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzY5Njk0ODYvMTMzNzM0N1xuICovXG5mdW5jdGlvbiBlc2NhcGVSZWdFeHAoczogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xcXVxcXFxdL2csICdcXFxcJCYnKTtcbn1cbiJdfQ==
|