@ngutil/data 0.0.21 → 0.0.24
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/index.mjs +40 -1
- package/esm2022/query/slice.mjs +6 -3
- package/esm2022/source/index.mjs +2 -2
- package/esm2022/source/proxy.directive.mjs +115 -74
- package/fesm2022/ngutil-data.mjs +294 -213
- package/fesm2022/ngutil-data.mjs.map +1 -1
- package/index.d.ts +7 -0
- package/package.json +2 -2
- package/source/index.d.ts +1 -1
- package/source/proxy.directive.d.ts +46 -13
package/esm2022/index.mjs
CHANGED
|
@@ -1,6 +1,45 @@
|
|
|
1
|
+
import { NgModule } from "@angular/core";
|
|
2
|
+
import { DataSourceProxy, DataSourceProxyBusy, DataSourceProxyFilter, DataSourceProxyGrouper, DataSourceProxySlimer, DataSourceProxySorter } from "./source/proxy.directive";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
1
4
|
export * from "./model";
|
|
2
5
|
export * from "./provider";
|
|
3
6
|
export * from "./query";
|
|
4
7
|
export * from "./source";
|
|
5
8
|
export * from "./store";
|
|
6
|
-
|
|
9
|
+
export class DataSourceModule {
|
|
10
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: DataSourceModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
11
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.6", ngImport: i0, type: DataSourceModule, imports: [DataSourceProxy,
|
|
12
|
+
DataSourceProxyBusy,
|
|
13
|
+
DataSourceProxyFilter,
|
|
14
|
+
DataSourceProxyGrouper,
|
|
15
|
+
DataSourceProxySlimer,
|
|
16
|
+
DataSourceProxySorter], exports: [DataSourceProxy,
|
|
17
|
+
DataSourceProxyBusy,
|
|
18
|
+
DataSourceProxyFilter,
|
|
19
|
+
DataSourceProxyGrouper,
|
|
20
|
+
DataSourceProxySlimer,
|
|
21
|
+
DataSourceProxySorter] }); }
|
|
22
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: DataSourceModule }); }
|
|
23
|
+
}
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: DataSourceModule, decorators: [{
|
|
25
|
+
type: NgModule,
|
|
26
|
+
args: [{
|
|
27
|
+
imports: [
|
|
28
|
+
DataSourceProxy,
|
|
29
|
+
DataSourceProxyBusy,
|
|
30
|
+
DataSourceProxyFilter,
|
|
31
|
+
DataSourceProxyGrouper,
|
|
32
|
+
DataSourceProxySlimer,
|
|
33
|
+
DataSourceProxySorter
|
|
34
|
+
],
|
|
35
|
+
exports: [
|
|
36
|
+
DataSourceProxy,
|
|
37
|
+
DataSourceProxyBusy,
|
|
38
|
+
DataSourceProxyFilter,
|
|
39
|
+
DataSourceProxyGrouper,
|
|
40
|
+
DataSourceProxySlimer,
|
|
41
|
+
DataSourceProxySorter
|
|
42
|
+
]
|
|
43
|
+
}]
|
|
44
|
+
}] });
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kYXRhL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRXhDLE9BQU8sRUFDSCxlQUFlLEVBQ2YsbUJBQW1CLEVBQ25CLHFCQUFxQixFQUNyQixzQkFBc0IsRUFDdEIscUJBQXFCLEVBQ3JCLHFCQUFxQixFQUN4QixNQUFNLDBCQUEwQixDQUFBOztBQUVqQyxjQUFjLFNBQVMsQ0FBQTtBQUN2QixjQUFjLFlBQVksQ0FBQTtBQUMxQixjQUFjLFNBQVMsQ0FBQTtBQUN2QixjQUFjLFVBQVUsQ0FBQTtBQUN4QixjQUFjLFNBQVMsQ0FBQTtBQW9CdkIsTUFBTSxPQUFPLGdCQUFnQjs4R0FBaEIsZ0JBQWdCOytHQUFoQixnQkFBZ0IsWUFoQnJCLGVBQWU7WUFDZixtQkFBbUI7WUFDbkIscUJBQXFCO1lBQ3JCLHNCQUFzQjtZQUN0QixxQkFBcUI7WUFDckIscUJBQXFCLGFBR3JCLGVBQWU7WUFDZixtQkFBbUI7WUFDbkIscUJBQXFCO1lBQ3JCLHNCQUFzQjtZQUN0QixxQkFBcUI7WUFDckIscUJBQXFCOytHQUdoQixnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBbEI1QixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRTt3QkFDTCxlQUFlO3dCQUNmLG1CQUFtQjt3QkFDbkIscUJBQXFCO3dCQUNyQixzQkFBc0I7d0JBQ3RCLHFCQUFxQjt3QkFDckIscUJBQXFCO3FCQUN4QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ0wsZUFBZTt3QkFDZixtQkFBbUI7d0JBQ25CLHFCQUFxQjt3QkFDckIsc0JBQXNCO3dCQUN0QixxQkFBcUI7d0JBQ3JCLHFCQUFxQjtxQkFDeEI7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCJcblxuaW1wb3J0IHtcbiAgICBEYXRhU291cmNlUHJveHksXG4gICAgRGF0YVNvdXJjZVByb3h5QnVzeSxcbiAgICBEYXRhU291cmNlUHJveHlGaWx0ZXIsXG4gICAgRGF0YVNvdXJjZVByb3h5R3JvdXBlcixcbiAgICBEYXRhU291cmNlUHJveHlTbGltZXIsXG4gICAgRGF0YVNvdXJjZVByb3h5U29ydGVyXG59IGZyb20gXCIuL3NvdXJjZS9wcm94eS5kaXJlY3RpdmVcIlxuXG5leHBvcnQgKiBmcm9tIFwiLi9tb2RlbFwiXG5leHBvcnQgKiBmcm9tIFwiLi9wcm92aWRlclwiXG5leHBvcnQgKiBmcm9tIFwiLi9xdWVyeVwiXG5leHBvcnQgKiBmcm9tIFwiLi9zb3VyY2VcIlxuZXhwb3J0ICogZnJvbSBcIi4vc3RvcmVcIlxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtcbiAgICAgICAgRGF0YVNvdXJjZVByb3h5LFxuICAgICAgICBEYXRhU291cmNlUHJveHlCdXN5LFxuICAgICAgICBEYXRhU291cmNlUHJveHlGaWx0ZXIsXG4gICAgICAgIERhdGFTb3VyY2VQcm94eUdyb3VwZXIsXG4gICAgICAgIERhdGFTb3VyY2VQcm94eVNsaW1lcixcbiAgICAgICAgRGF0YVNvdXJjZVByb3h5U29ydGVyXG4gICAgXSxcbiAgICBleHBvcnRzOiBbXG4gICAgICAgIERhdGFTb3VyY2VQcm94eSxcbiAgICAgICAgRGF0YVNvdXJjZVByb3h5QnVzeSxcbiAgICAgICAgRGF0YVNvdXJjZVByb3h5RmlsdGVyLFxuICAgICAgICBEYXRhU291cmNlUHJveHlHcm91cGVyLFxuICAgICAgICBEYXRhU291cmNlUHJveHlTbGltZXIsXG4gICAgICAgIERhdGFTb3VyY2VQcm94eVNvcnRlclxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgRGF0YVNvdXJjZU1vZHVsZSB7fVxuIl19
|
package/esm2022/query/slice.mjs
CHANGED
|
@@ -41,8 +41,11 @@ export function sliceInsert(slice, array, newItems) {
|
|
|
41
41
|
let result = array.slice(0, slice.start);
|
|
42
42
|
result.length = slice.start;
|
|
43
43
|
result = result.concat(newItems);
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
if (!isNaN(slice.end) && isFinite(slice.end)) {
|
|
45
|
+
result.length = slice.end;
|
|
46
|
+
result = result.concat(array.slice(slice.end));
|
|
47
|
+
}
|
|
48
|
+
return result;
|
|
46
49
|
}
|
|
47
50
|
export function sliceClamp(slice, constraint) {
|
|
48
51
|
return {
|
|
@@ -58,4 +61,4 @@ export function sliceEq(a, b) {
|
|
|
58
61
|
// TODO: sliceIncludes(other: Slice): boolean
|
|
59
62
|
// TODO: sliceConcat(...slices: Slice[]): Slice[]
|
|
60
63
|
// TODO: sliceDiff(slice: Slice): Slice[]
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYXRhL3NyYy9xdWVyeS9zbGljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUF1QjFDLE1BQU0sVUFBVSxVQUFVLENBQUMsR0FBRyxNQUFlO0lBQ3pDLElBQUksTUFBTSxHQUFzQixTQUFTLENBQUE7SUFFekMsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUN6QixJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNoQixTQUFRO1FBQ1osQ0FBQztRQUNELElBQUksTUFBTSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ2pCLE1BQU0sR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDN0IsQ0FBQzthQUFNLENBQUM7WUFDSixNQUFNLEdBQUcsRUFBRSxHQUFJLE1BQWMsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFBO1FBQzdDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUE7QUFDakIsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQUMsS0FBWSxFQUFFLEtBQXFCO0lBQzFELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDbEQsTUFBTSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUE7SUFDdkMsT0FBTyxNQUFNLENBQUE7QUFDakIsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBQyxLQUFZO0lBQ3JDLElBQUksS0FBSyxDQUFDLFFBQVEsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN6QixNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUE7SUFDaEQsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDdEQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUNqRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxHQUFHLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFBO0FBQ25FLENBQUM7QUFFRCxNQUFNLFVBQVUsV0FBVyxDQUFDLEtBQVksRUFBRSxLQUFxQixFQUFFLFFBQXdCO0lBQ3JGLElBQUksS0FBSyxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDNUIsT0FBTyxLQUFZLENBQUE7SUFDdkIsQ0FBQztJQUVELElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUN4QyxNQUFNLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUE7SUFFM0IsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUE7SUFFaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzNDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQTtRQUN6QixNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBQ2xELENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQTtBQUNqQixDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxLQUFZLEVBQUUsVUFBaUI7SUFDdEQsT0FBTztRQUNILEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQztRQUM5QyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUM7UUFDeEMsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO0tBQzNCLENBQUE7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLE9BQU8sQ0FBQyxDQUFRLEVBQUUsQ0FBUTtJQUN0QyxPQUFPLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFBO0FBQzlFLENBQUM7QUFFRCwwQ0FBMEM7QUFDMUMsNkNBQTZDO0FBQzdDLGlEQUFpRDtBQUNqRCx5Q0FBeUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMaXN0UmFuZ2UgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zXCJcblxuaW1wb3J0IHsgZGVlcENsb25lIH0gZnJvbSBcIkBuZ3V0aWwvY29tbW9uXCJcblxuLy8gaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvYXJyYXktdmlld1xuXG4vKipcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICoge3N0YXJ0OiAwLCBlbmQ6IDB9IC8vIGVtcHR5IHJhbmdlXG4gKiB7c3RhcnQ6IDAsIGVuZDogMX0gLy8gcmFuZ2Ugd2l0aCBvbmUgaXRlbS5lZyBzbGljZUFwcGx5KFsxLCAyLCAzXSwge3N0YXJ0OjAsIGVuZDoxfSkgLT4gWzFdXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTbGljZSBleHRlbmRzIExpc3RSYW5nZSB7XG4gICAgLyoqXG4gICAgICogU3RhcnQgb2Ygc2xpY2UsIGV4YWN0IGluZGV4IG9mIGl0ZW0gaW4gbGlzdFxuICAgICAqL1xuICAgIHJlYWRvbmx5IHN0YXJ0OiBudW1iZXJcbiAgICAvKipcbiAgICAgKiBFbmQgb2Ygc2xpY2UsIG5vdCBpbmNsdWRlIGVuZCBpbmRleCBvZiBpdGVtIGluIGxpc3RcbiAgICAgKi9cbiAgICByZWFkb25seSBlbmQ6IG51bWJlclxuICAgIHJlYWRvbmx5IHBhZ2VTaXplPzogbnVtYmVyXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzbGljZU1lcmdlKC4uLnNsaWNlczogU2xpY2VbXSkge1xuICAgIGxldCByZXN1bHQ6IFNsaWNlIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkXG5cbiAgICBmb3IgKGNvbnN0IHNsaWNlIG9mIHNsaWNlcykge1xuICAgICAgICBpZiAoc2xpY2UgPT0gbnVsbCkge1xuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IGRlZXBDbG9uZShzbGljZSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHsgLi4uKHJlc3VsdCBhcyBhbnkpLCAuLi5zbGljZSB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0XG59XG5cbi8qKlxuICogQXBwbHkgc2xpY2UgdG8gYXJyYXksIGFuZCBmb3JjZSB0aGUgcmVzdWx0IGxlbmd0aCB0byBlcXVhbCB3aXRoIFNsaWNlIGxlbmd0aCxcbiAqIHNvIGZpbGwgYXJyYXkgd2l0aCB1bmRlZmluZWQgaWYgbm90IGVub3VnaHQgZWxlbWVudHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNsaWNlQXBwbHkoc2xpY2U6IFNsaWNlLCBhcnJheTogcmVhZG9ubHkgYW55W10pOiBhbnlbXSB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXJyYXkuc2xpY2Uoc2xpY2Uuc3RhcnQsIHNsaWNlLmVuZClcbiAgICByZXN1bHQubGVuZ3RoID0gc2xpY2UuZW5kIC0gc2xpY2Uuc3RhcnRcbiAgICByZXR1cm4gcmVzdWx0XG59XG5cbi8qKlxuICogQHJldHVybnMgUGFnZSBudW1iZXJzLCBlZy46IGBbMTAsIDExLCAxMiwgMTMsIC4uLl1gXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzbGljZVRvUGFnZXMoc2xpY2U6IFNsaWNlKTogbnVtYmVyW10ge1xuICAgIGlmIChzbGljZS5wYWdlU2l6ZSA9PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1pc3NpbmcgYHN0ZXBgIGZyb20gc2xpY2VcIilcbiAgICB9XG5cbiAgICBjb25zdCBzdGFydCA9IE1hdGguZmxvb3Ioc2xpY2Uuc3RhcnQgLyBzbGljZS5wYWdlU2l6ZSlcbiAgICBjb25zdCBlbmQgPSBNYXRoLmNlaWwoc2xpY2UuZW5kIC8gc2xpY2UucGFnZVNpemUpXG4gICAgcmV0dXJuIEFycmF5LmZyb20oeyBsZW5ndGg6IGVuZCAtIHN0YXJ0IH0sIChfLCBpKSA9PiBzdGFydCArIGkpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzbGljZUluc2VydChzbGljZTogU2xpY2UsIGFycmF5OiByZWFkb25seSBhbnlbXSwgbmV3SXRlbXM6IHJlYWRvbmx5IGFueVtdKTogYW55W10ge1xuICAgIGlmIChzbGljZS5zdGFydCA9PT0gc2xpY2UuZW5kKSB7XG4gICAgICAgIHJldHVybiBhcnJheSBhcyBhbnlcbiAgICB9XG5cbiAgICBsZXQgcmVzdWx0ID0gYXJyYXkuc2xpY2UoMCwgc2xpY2Uuc3RhcnQpXG4gICAgcmVzdWx0Lmxlbmd0aCA9IHNsaWNlLnN0YXJ0XG5cbiAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KG5ld0l0ZW1zKVxuXG4gICAgaWYgKCFpc05hTihzbGljZS5lbmQpICYmIGlzRmluaXRlKHNsaWNlLmVuZCkpIHtcbiAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHNsaWNlLmVuZFxuICAgICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KGFycmF5LnNsaWNlKHNsaWNlLmVuZCkpXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2xpY2VDbGFtcChzbGljZTogU2xpY2UsIGNvbnN0cmFpbnQ6IFNsaWNlKTogU2xpY2Uge1xuICAgIHJldHVybiB7XG4gICAgICAgIHN0YXJ0OiBNYXRoLm1heChzbGljZS5zdGFydCwgY29uc3RyYWludC5zdGFydCksXG4gICAgICAgIGVuZDogTWF0aC5taW4oc2xpY2UuZW5kLCBjb25zdHJhaW50LmVuZCksXG4gICAgICAgIHBhZ2VTaXplOiBzbGljZS5wYWdlU2l6ZVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNsaWNlRXEoYTogU2xpY2UsIGI6IFNsaWNlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGEuc3RhcnQgPT09IGIuc3RhcnQgJiYgYS5lbmQgPT09IGIuZW5kICYmIGEucGFnZVNpemUgPT09IGIucGFnZVNpemVcbn1cblxuLy8gVE9ETzogc2xpY2VPdmVybGFwKG90aGVyOiBTbGljZSk6IFNsaWNlXG4vLyBUT0RPOiBzbGljZUluY2x1ZGVzKG90aGVyOiBTbGljZSk6IGJvb2xlYW5cbi8vIFRPRE86IHNsaWNlQ29uY2F0KC4uLnNsaWNlczogU2xpY2VbXSk6IFNsaWNlW11cbi8vIFRPRE86IHNsaWNlRGlmZihzbGljZTogU2xpY2UpOiBTbGljZVtdXG4iXX0=
|
package/esm2022/source/index.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { DataSource } from "./source";
|
|
2
|
-
export { DataSourceProxy } from "./proxy.directive";
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
export { DataSourceProxy, DataSourceProxyBusy, DataSourceProxyFilter, DataSourceProxyGrouper, DataSourceProxySlimer, DataSourceProxySorter } from "./proxy.directive";
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYXRhL3NyYy9zb3VyY2UvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUNyQyxPQUFPLEVBQ0gsZUFBZSxFQUNmLG1CQUFtQixFQUNuQixxQkFBcUIsRUFDckIsc0JBQXNCLEVBQ3RCLHFCQUFxQixFQUNyQixxQkFBcUIsRUFFeEIsTUFBTSxtQkFBbUIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IERhdGFTb3VyY2UgfSBmcm9tIFwiLi9zb3VyY2VcIlxuZXhwb3J0IHtcbiAgICBEYXRhU291cmNlUHJveHksXG4gICAgRGF0YVNvdXJjZVByb3h5QnVzeSxcbiAgICBEYXRhU291cmNlUHJveHlGaWx0ZXIsXG4gICAgRGF0YVNvdXJjZVByb3h5R3JvdXBlcixcbiAgICBEYXRhU291cmNlUHJveHlTbGltZXIsXG4gICAgRGF0YVNvdXJjZVByb3h5U29ydGVyLFxuICAgIERhdGFTb3VyY2VQcm94eUlucHV0XG59IGZyb20gXCIuL3Byb3h5LmRpcmVjdGl2ZVwiXG4iXX0=
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { DataSource as CdkDataSource } from "@angular/cdk/collections";
|
|
2
|
-
import { Directive,
|
|
3
|
-
import { takeUntilDestroyed,
|
|
4
|
-
import { combineLatest, finalize, map, of, ReplaySubject,
|
|
2
|
+
import { Directive, inject, input, Input } from "@angular/core";
|
|
3
|
+
import { takeUntilDestroyed, toObservable } from "@angular/core/rxjs-interop";
|
|
4
|
+
import { combineLatest, finalize, map, of, ReplaySubject, shareReplay, Subject, switchMap, takeUntil, throwError } from "rxjs";
|
|
5
5
|
import { Busy } from "@ngutil/common";
|
|
6
6
|
import { DataProvider } from "../provider/provider";
|
|
7
7
|
import { DataSource } from "./source";
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "@ngutil/common";
|
|
10
9
|
/**
|
|
11
10
|
* @example
|
|
12
11
|
* ```html
|
|
@@ -38,66 +37,20 @@ import * as i1 from "@ngutil/common";
|
|
|
38
37
|
* ```
|
|
39
38
|
*/
|
|
40
39
|
export class DataSourceProxy extends CdkDataSource {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
this.#valueSub = coerceDataSource(value)
|
|
44
|
-
.pipe(tap(v => {
|
|
45
|
-
if (v == null) {
|
|
46
|
-
throw new Error("Missing DataSource");
|
|
47
|
-
}
|
|
48
|
-
}))
|
|
49
|
-
.subscribe(this.#value);
|
|
50
|
-
}
|
|
51
|
-
#valueSub;
|
|
52
|
-
#value;
|
|
53
|
-
set forcedFilterInput(value) {
|
|
54
|
-
// this.query.filter.forced.update(value)
|
|
55
|
-
this.#filter.next(value);
|
|
56
|
-
}
|
|
57
|
-
#filter;
|
|
58
|
-
set forcedSorterInput(value) {
|
|
59
|
-
this.#sorter.next(value);
|
|
60
|
-
}
|
|
61
|
-
#sorter;
|
|
62
|
-
set forcedGrouperInput(value) {
|
|
63
|
-
this.#grouper.next(value);
|
|
64
|
-
}
|
|
65
|
-
#grouper;
|
|
66
|
-
set forcedSlimerInput(value) {
|
|
67
|
-
this.#slimer.next(value);
|
|
68
|
-
}
|
|
69
|
-
#slimer;
|
|
70
|
-
#subs;
|
|
71
|
-
constructor(busy) {
|
|
72
|
-
super();
|
|
40
|
+
constructor() {
|
|
41
|
+
super(...arguments);
|
|
73
42
|
this.#value = new ReplaySubject(1);
|
|
74
43
|
this.value$ = this.#value.pipe(takeUntilDestroyed());
|
|
75
44
|
this.query$ = this.value$.pipe(map(value => value.query$), shareReplay(1));
|
|
76
|
-
this.items$ = this.value$.pipe(switchMap(value => value.items$),
|
|
77
|
-
this.busy$ = this.value$.pipe(switchMap(value => value.busy$), share());
|
|
78
|
-
this.isBusy = toSignal(this.busy$, { rejectErrors: true, initialValue: false });
|
|
79
|
-
this.#filter = new ReplaySubject(1);
|
|
80
|
-
this.#sorter = new ReplaySubject(1);
|
|
81
|
-
this.#grouper = new ReplaySubject(1);
|
|
82
|
-
this.#slimer = new ReplaySubject(1);
|
|
83
|
-
this.#subs = new Subscription();
|
|
45
|
+
this.items$ = this.value$.pipe(switchMap(value => value.items$), shareReplay(1));
|
|
84
46
|
this.#cvSubs = new Map();
|
|
85
|
-
if (busy != null) {
|
|
86
|
-
this.#subs.add(busy.connect(this.busy$).subscribe());
|
|
87
|
-
}
|
|
88
|
-
this.#subs.add(combineLatest({ query: this.query$, filter: this.#filter }).subscribe(({ query, filter }) => {
|
|
89
|
-
query.filter.forced.set(filter);
|
|
90
|
-
}));
|
|
91
|
-
this.#subs.add(combineLatest({ query: this.query$, sorter: this.#sorter }).subscribe(({ query, sorter }) => {
|
|
92
|
-
query.sorter.forced.set(sorter);
|
|
93
|
-
}));
|
|
94
|
-
this.#subs.add(combineLatest({ query: this.query$, grouper: this.#grouper }).subscribe(({ query, grouper }) => {
|
|
95
|
-
query.grouper.forced.set(grouper);
|
|
96
|
-
}));
|
|
97
|
-
this.#subs.add(combineLatest({ query: this.query$, slimer: this.#slimer }).subscribe(({ query, slimer }) => {
|
|
98
|
-
query.slimer.forced.set(slimer);
|
|
99
|
-
}));
|
|
100
47
|
}
|
|
48
|
+
set value(value) {
|
|
49
|
+
this.#valueSub?.unsubscribe();
|
|
50
|
+
this.#valueSub = coerceDataSource(value).subscribe(this.#value);
|
|
51
|
+
}
|
|
52
|
+
#valueSub;
|
|
53
|
+
#value;
|
|
101
54
|
#cvSubs;
|
|
102
55
|
connect(collectionViewer) {
|
|
103
56
|
const until = new Subject();
|
|
@@ -112,10 +65,9 @@ export class DataSourceProxy extends CdkDataSource {
|
|
|
112
65
|
ngOnDestroy() {
|
|
113
66
|
this.#valueSub?.unsubscribe();
|
|
114
67
|
this.#valueSub = undefined;
|
|
115
|
-
this.#subs.unsubscribe();
|
|
116
68
|
}
|
|
117
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: DataSourceProxy, deps:
|
|
118
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.6", type: DataSourceProxy, isStandalone: true, selector: "[nuDataSource]", inputs: { value: ["nuDataSource", "value"]
|
|
69
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: DataSourceProxy, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
70
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.6", type: DataSourceProxy, isStandalone: true, selector: "[nuDataSource]", inputs: { value: ["nuDataSource", "value"] }, exportAs: ["nuDataSource"], usesInheritance: true, ngImport: i0 }); }
|
|
119
71
|
}
|
|
120
72
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: DataSourceProxy, decorators: [{
|
|
121
73
|
type: Directive,
|
|
@@ -124,20 +76,109 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImpor
|
|
|
124
76
|
selector: "[nuDataSource]",
|
|
125
77
|
exportAs: "nuDataSource"
|
|
126
78
|
}]
|
|
127
|
-
}],
|
|
128
|
-
type: Optional
|
|
129
|
-
}] }], propDecorators: { value: [{
|
|
79
|
+
}], propDecorators: { value: [{
|
|
130
80
|
type: Input,
|
|
131
81
|
args: [{ required: true, alias: "nuDataSource" }]
|
|
132
|
-
}], forcedFilterInput: [{
|
|
133
|
-
type: Input
|
|
134
|
-
}], forcedSorterInput: [{
|
|
135
|
-
type: Input
|
|
136
|
-
}], forcedGrouperInput: [{
|
|
137
|
-
type: Input
|
|
138
|
-
}], forcedSlimerInput: [{
|
|
139
|
-
type: Input
|
|
140
82
|
}] } });
|
|
83
|
+
export class DataSourceProxyFilter {
|
|
84
|
+
#proxy;
|
|
85
|
+
constructor() {
|
|
86
|
+
this.#proxy = inject(DataSourceProxy);
|
|
87
|
+
this.filter = input.required();
|
|
88
|
+
this.filter$ = toObservable(this.filter);
|
|
89
|
+
combineLatest({ query: this.#proxy.query$, filter: this.filter$ })
|
|
90
|
+
.pipe(takeUntilDestroyed())
|
|
91
|
+
.subscribe(({ query, filter }) => query.filter.forced.set(filter));
|
|
92
|
+
}
|
|
93
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: DataSourceProxyFilter, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
94
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "17.3.6", type: DataSourceProxyFilter, isStandalone: true, selector: "[nuDataSource][filter]", inputs: { filter: { classPropertyName: "filter", publicName: "filter", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 }); }
|
|
95
|
+
}
|
|
96
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: DataSourceProxyFilter, decorators: [{
|
|
97
|
+
type: Directive,
|
|
98
|
+
args: [{
|
|
99
|
+
standalone: true,
|
|
100
|
+
selector: "[nuDataSource][filter]"
|
|
101
|
+
}]
|
|
102
|
+
}], ctorParameters: () => [] });
|
|
103
|
+
export class DataSourceProxySorter {
|
|
104
|
+
#proxy;
|
|
105
|
+
constructor() {
|
|
106
|
+
this.#proxy = inject(DataSourceProxy);
|
|
107
|
+
this.sorter = input.required();
|
|
108
|
+
this.sorter$ = toObservable(this.sorter);
|
|
109
|
+
combineLatest({ query: this.#proxy.query$, sorter: this.sorter$ })
|
|
110
|
+
.pipe(takeUntilDestroyed())
|
|
111
|
+
.subscribe(({ query, sorter }) => query.sorter.forced.set(sorter));
|
|
112
|
+
}
|
|
113
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: DataSourceProxySorter, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
114
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "17.3.6", type: DataSourceProxySorter, isStandalone: true, selector: "[nuDataSource][sorter]", inputs: { sorter: { classPropertyName: "sorter", publicName: "sorter", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 }); }
|
|
115
|
+
}
|
|
116
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: DataSourceProxySorter, decorators: [{
|
|
117
|
+
type: Directive,
|
|
118
|
+
args: [{
|
|
119
|
+
standalone: true,
|
|
120
|
+
selector: "[nuDataSource][sorter]"
|
|
121
|
+
}]
|
|
122
|
+
}], ctorParameters: () => [] });
|
|
123
|
+
export class DataSourceProxySlimer {
|
|
124
|
+
#proxy;
|
|
125
|
+
constructor() {
|
|
126
|
+
this.#proxy = inject(DataSourceProxy);
|
|
127
|
+
this.slimer = input.required();
|
|
128
|
+
this.slimer$ = toObservable(this.slimer);
|
|
129
|
+
combineLatest({ query: this.#proxy.query$, slimer: this.slimer$ })
|
|
130
|
+
.pipe(takeUntilDestroyed())
|
|
131
|
+
.subscribe(({ query, slimer }) => query.slimer.forced.set(slimer));
|
|
132
|
+
}
|
|
133
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: DataSourceProxySlimer, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
134
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "17.3.6", type: DataSourceProxySlimer, isStandalone: true, selector: "[nuDataSource][slimer]", inputs: { slimer: { classPropertyName: "slimer", publicName: "slimer", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 }); }
|
|
135
|
+
}
|
|
136
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: DataSourceProxySlimer, decorators: [{
|
|
137
|
+
type: Directive,
|
|
138
|
+
args: [{
|
|
139
|
+
standalone: true,
|
|
140
|
+
selector: "[nuDataSource][slimer]"
|
|
141
|
+
}]
|
|
142
|
+
}], ctorParameters: () => [] });
|
|
143
|
+
export class DataSourceProxyGrouper {
|
|
144
|
+
#proxy;
|
|
145
|
+
constructor() {
|
|
146
|
+
this.#proxy = inject(DataSourceProxy);
|
|
147
|
+
this.grouper = input.required();
|
|
148
|
+
this.grouper$ = toObservable(this.grouper);
|
|
149
|
+
combineLatest({ query: this.#proxy.query$, grouper: this.grouper$ })
|
|
150
|
+
.pipe(takeUntilDestroyed())
|
|
151
|
+
.subscribe(({ query, grouper }) => query.grouper.forced.set(grouper));
|
|
152
|
+
}
|
|
153
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: DataSourceProxyGrouper, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
154
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "17.3.6", type: DataSourceProxyGrouper, isStandalone: true, selector: "[nuDataSource][grouper]", inputs: { grouper: { classPropertyName: "grouper", publicName: "grouper", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 }); }
|
|
155
|
+
}
|
|
156
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: DataSourceProxyGrouper, decorators: [{
|
|
157
|
+
type: Directive,
|
|
158
|
+
args: [{
|
|
159
|
+
standalone: true,
|
|
160
|
+
selector: "[nuDataSource][grouper]"
|
|
161
|
+
}]
|
|
162
|
+
}], ctorParameters: () => [] });
|
|
163
|
+
export class DataSourceProxyBusy {
|
|
164
|
+
#proxy;
|
|
165
|
+
#busy;
|
|
166
|
+
constructor() {
|
|
167
|
+
this.#proxy = inject(DataSourceProxy);
|
|
168
|
+
this.#busy = inject(Busy);
|
|
169
|
+
this.busy$ = this.#proxy.value$.pipe(switchMap(value => value.busy$), shareReplay(1));
|
|
170
|
+
this.#busy.connect(this.busy$).pipe(takeUntilDestroyed()).subscribe();
|
|
171
|
+
}
|
|
172
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: DataSourceProxyBusy, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
173
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.6", type: DataSourceProxyBusy, isStandalone: true, selector: "[nuDataSource][nuBusy]", ngImport: i0 }); }
|
|
174
|
+
}
|
|
175
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: DataSourceProxyBusy, decorators: [{
|
|
176
|
+
type: Directive,
|
|
177
|
+
args: [{
|
|
178
|
+
standalone: true,
|
|
179
|
+
selector: "[nuDataSource][nuBusy]"
|
|
180
|
+
}]
|
|
181
|
+
}], ctorParameters: () => [] });
|
|
141
182
|
function coerceDataSource(value) {
|
|
142
183
|
if (value instanceof DataSourceProxy) {
|
|
143
184
|
return value.value$;
|
|
@@ -152,4 +193,4 @@ function coerceDataSource(value) {
|
|
|
152
193
|
return throwError(() => new Error("Invalid DataSource value"));
|
|
153
194
|
}
|
|
154
195
|
}
|
|
155
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJveHkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGF0YS9zcmMvc291cmNlL3Byb3h5LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxJQUFJLGFBQWEsRUFBb0IsTUFBTSwwQkFBMEIsQ0FBQTtBQUN4RixPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBYSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDckUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBRXpFLE9BQU8sRUFDSCxhQUFhLEVBQ2IsUUFBUSxFQUNSLEdBQUcsRUFFSCxFQUFFLEVBQ0YsYUFBYSxFQUNiLEtBQUssRUFDTCxXQUFXLEVBQ1gsT0FBTyxFQUNQLFlBQVksRUFDWixTQUFTLEVBQ1QsU0FBUyxFQUNULEdBQUcsRUFDSCxVQUFVLEVBQ2IsTUFBTSxNQUFNLENBQUE7QUFFYixPQUFPLEVBQUUsSUFBSSxFQUFtQixNQUFNLGdCQUFnQixDQUFBO0FBR3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUVuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sVUFBVSxDQUFBOzs7QUFJckM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkJHO0FBTUgsTUFBTSxPQUFPLGVBQ1QsU0FBUSxhQUE0QjtJQUdwQyxJQUNJLEtBQUssQ0FBQyxLQUF5QjtRQUMvQixJQUFJLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxDQUFBO1FBQzdCLElBQUksQ0FBQyxTQUFTLEdBQUcsZ0JBQWdCLENBQUksS0FBSyxDQUFDO2FBQ3RDLElBQUksQ0FDRCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDSixJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDWixNQUFNLElBQUksS0FBSyxDQUFD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QUFLLEVBQUUsY0FBYyxFQUFFO2dCQWtDNUMsaUJBQWlCO3NCQURwQixLQUFLO2dCQVFGLGlCQUFpQjtzQkFEcEIsS0FBSztnQkFPRixrQkFBa0I7c0JBRHJCLEtBQUs7Z0JBT0YsaUJBQWlCO3NCQURwQixLQUFLOztBQW1FVixTQUFTLGdCQUFnQixDQUFrQixLQUF5QjtJQUNoRSxJQUFJLEtBQUssWUFBWSxlQUFlLEVBQUUsQ0FBQztRQUNuQyxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUE7SUFDdkIsQ0FBQztTQUFNLElBQUksS0FBSyxZQUFZLFVBQVUsRUFBRSxDQUFDO1FBQ3JDLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3BCLENBQUM7U0FBTSxJQUFJLEtBQUssWUFBWSxZQUFZLEVBQUUsQ0FBQztRQUN2QyxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQTtJQUNuQyxDQUFDO1NBQU0sQ0FBQztRQUNKLE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQTtJQUNsRSxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGFTb3VyY2UgYXMgQ2RrRGF0YVNvdXJjZSwgQ29sbGVjdGlvblZpZXdlciB9IGZyb20gXCJAYW5ndWxhci9jZGsvY29sbGVjdGlvbnNcIlxuaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgT25EZXN0cm95LCBPcHRpb25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCJcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCwgdG9TaWduYWwgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3BcIlxuXG5pbXBvcnQge1xuICAgIGNvbWJpbmVMYXRlc3QsXG4gICAgZmluYWxpemUsXG4gICAgbWFwLFxuICAgIE9ic2VydmFibGUsXG4gICAgb2YsXG4gICAgUmVwbGF5U3ViamVjdCxcbiAgICBzaGFyZSxcbiAgICBzaGFyZVJlcGxheSxcbiAgICBTdWJqZWN0LFxuICAgIFN1YnNjcmlwdGlvbixcbiAgICBzd2l0Y2hNYXAsXG4gICAgdGFrZVVudGlsLFxuICAgIHRhcCxcbiAgICB0aHJvd0Vycm9yXG59IGZyb20gXCJyeGpzXCJcblxuaW1wb3J0IHsgQnVzeSwgQ29ubmVjdFByb3RvY29sIH0gZnJvbSBcIkBuZ3V0aWwvY29tbW9uXCJcblxuaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiLi4vbW9kZWxcIlxuaW1wb3J0IHsgRGF0YVByb3ZpZGVyIH0gZnJvbSBcIi4uL3Byb3ZpZGVyL3Byb3ZpZGVyXCJcbmltcG9ydCB7IEZpbHRlciwgR3JvdXBlciwgU2xpbWVyLCBTb3J0ZXIgfSBmcm9tIFwiLi4vcXVlcnlcIlxuaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gXCIuL3NvdXJjZVwiXG5cbmV4cG9ydCB0eXBlIERhdGFTb3VyY2VJbnB1dDxUIGV4dGVuZHMgTW9kZWw+ID0gYW55XG5cbi8qKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDx0YWJsZSBbbnVEYXRhU291cmNlXT1cIi4uLlwiIFtmaWx0ZXJdPVwie2lzQWN0aXZlOiB0cnVlfVwiIFtzb3J0ZXJdPVwiW3tuYW1lOiAnYXNjJ31dXCI+PC90YWJsZT5cbiAqIGBgYFxuICpcbiAqIGBgYHRzXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgdGVtcGxhdGU6IGA8dGFibGUgW251RGF0YVNvdXJjZV09XCJ1c2VycyRcIj48L3RhYmxlPmBcbiAqIH0pXG4gKiBjbGFzcyBVc2VyVGFibGUge1xuICogICByZWFkb25seSB1c2VyU2VydmljZSA9IGluamVjdChVc2VyU2VydmljZSlcbiAqICAgcmVhZG9ubHkgdXNlcnMkID0gVXNlclNlcnZpY2UuYWxsKClcbiAqIH1cbiAqIGBgYFxuICpcbiAqIGBgYHRzXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6IFwidGFibGUubXktdGFibGVcIixcbiAqICAgdGVtcGxhdGU6IGBcbiAqICAgPGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCBpdGVtU2l6ZT1cIjUwXCIgY2xhc3M9XCJleGFtcGxlLXZpZXdwb3J0XCI+XG4gKiAgICAgICA8ZGl2ICpjZGtWaXJ0dWFsRm9yPVwibGV0IGl0ZW0gb2YgZGF0YVNvdXJjZVwiIGNsYXNzPVwiZXhhbXBsZS1pdGVtXCI+e3tpdGVtfX08L2Rpdj5cbiAqICAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XG4gKiAgIGBcbiAqIH0pXG4gKiBjbGFzcyBUYWJsZUNvbXBvbmVudCB7XG4gKiAgIHJlYWRvbmx5IGRhdGFTb3VyY2UgPSBpbmplY3QoRGF0YVNvdXJjZVByb3h5KVxuICogfVxuICogYGBgXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6IFwiW251RGF0YVNvdXJjZV1cIixcbiAgICBleHBvcnRBczogXCJudURhdGFTb3VyY2VcIlxufSlcbmV4cG9ydCBjbGFzcyBEYXRhU291cmNlUHJveHk8VCBleHRlbmRzIE1vZGVsID0gTW9kZWw+XG4gICAgZXh0ZW5kcyBDZGtEYXRhU291cmNlPFQgfCB1bmRlZmluZWQ+XG4gICAgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIENvbm5lY3RQcm90b2NvbFxue1xuICAgIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlLCBhbGlhczogXCJudURhdGFTb3VyY2VcIiB9KVxuICAgIHNldCB2YWx1ZSh2YWx1ZTogRGF0YVNvdXJjZUlucHV0PFQ+KSB7XG4gICAgICAgIHRoaXMuI3ZhbHVlU3ViPy51bnN1YnNjcmliZSgpXG4gICAgICAgIHRoaXMuI3ZhbHVlU3ViID0gY29lcmNlRGF0YVNvdXJjZTxUPih2YWx1ZSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRhcCh2ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHYgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWlzc2luZyBEYXRhU291cmNlXCIpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSh0aGlzLiN2YWx1ZSlcbiAgICB9XG5cbiAgICAjdmFsdWVTdWI/OiBTdWJzY3JpcHRpb25cbiAgICByZWFkb25seSAjdmFsdWUgPSBuZXcgUmVwbGF5U3ViamVjdDxEYXRhU291cmNlPFQ+PigxKVxuICAgIHJlYWRvbmx5IHZhbHVlJCA9IHRoaXMuI3ZhbHVlLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgcmVhZG9ubHkgcXVlcnkkID0gdGhpcy52YWx1ZSQucGlwZShcbiAgICAgICAgbWFwKHZhbHVlID0+IHZhbHVlLnF1ZXJ5JCksXG4gICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKVxuXG4gICAgcmVhZG9ubHkgaXRlbXMkID0gdGhpcy52YWx1ZSQucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKHZhbHVlID0+IHZhbHVlLml0ZW1zJCksXG4gICAgICAgIHNoYXJlKClcbiAgICApXG5cbiAgICByZWFkb25seSBidXN5JCA9IHRoaXMudmFsdWUkLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCh2YWx1ZSA9PiB2YWx1ZS5idXN5JCksXG4gICAgICAgIHNoYXJlKClcbiAgICApXG4gICAgcmVhZG9ubHkgaXNCdXN5ID0gdG9TaWduYWwodGhpcy5idXN5JCwgeyByZWplY3RFcnJvcnM6IHRydWUsIGluaXRpYWxWYWx1ZTogZmFsc2UgfSlcblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGZvcmNlZEZpbHRlcklucHV0KHZhbHVlOiBGaWx0ZXI8VD4pIHtcbiAgICAgICAgLy8gdGhpcy5xdWVyeS5maWx0ZXIuZm9yY2VkLnVwZGF0ZSh2YWx1ZSlcbiAgICAgICAgdGhpcy4jZmlsdGVyLm5leHQodmFsdWUpXG4gICAgfVxuICAgIHJlYWRvbmx5ICNmaWx0ZXIgPSBuZXcgUmVwbGF5U3ViamVjdDxGaWx0ZXI8VD4+KDEpXG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBmb3JjZWRTb3J0ZXJJbnB1dCh2YWx1ZTogU29ydGVyPFQ+KSB7XG4gICAgICAgIHRoaXMuI3NvcnRlci5uZXh0KHZhbHVlKVxuICAgIH1cbiAgICByZWFkb25seSAjc29ydGVyID0gbmV3IFJlcGxheVN1YmplY3Q8U29ydGVyPFQ+PigxKVxuXG4gICAgQElucHV0KClcbiAgICBzZXQgZm9yY2VkR3JvdXBlcklucHV0KHZhbHVlOiBHcm91cGVyPFQ+KSB7XG4gICAgICAgIHRoaXMuI2dyb3VwZXIubmV4dCh2YWx1ZSlcbiAgICB9XG4gICAgcmVhZG9ubHkgI2dyb3VwZXIgPSBuZXcgUmVwbGF5U3ViamVjdDxHcm91cGVyPFQ+PigxKVxuXG4gICAgQElucHV0KClcbiAgICBzZXQgZm9yY2VkU2xpbWVySW5wdXQodmFsdWU6IFNsaW1lcjxUPikge1xuICAgICAgICB0aGlzLiNzbGltZXIubmV4dCh2YWx1ZSlcbiAgICB9XG4gICAgcmVhZG9ubHkgI3NsaW1lciA9IG5ldyBSZXBsYXlTdWJqZWN0PFNsaW1lcjxUPj4oMSlcblxuICAgIHJlYWRvbmx5ICNzdWJzID0gbmV3IFN1YnNjcmlwdGlvbigpXG5cbiAgICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBidXN5PzogQnVzeTxhbnk+KSB7XG4gICAgICAgIHN1cGVyKClcblxuICAgICAgICBpZiAoYnVzeSAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLiNzdWJzLmFkZChidXN5LmNvbm5lY3QodGhpcy5idXN5JCkuc3Vic2NyaWJlKCkpXG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLiNzdWJzLmFkZChcbiAgICAgICAgICAgIGNvbWJpbmVMYXRlc3QoeyBxdWVyeTogdGhpcy5xdWVyeSQsIGZpbHRlcjogdGhpcy4jZmlsdGVyIH0pLnN1YnNjcmliZSgoeyBxdWVyeSwgZmlsdGVyIH0pID0+IHtcbiAgICAgICAgICAgICAgICBxdWVyeS5maWx0ZXIuZm9yY2VkLnNldChmaWx0ZXIpXG4gICAgICAgICAgICB9KVxuICAgICAgICApXG5cbiAgICAgICAgdGhpcy4jc3Vicy5hZGQoXG4gICAgICAgICAgICBjb21iaW5lTGF0ZXN0KHsgcXVlcnk6IHRoaXMucXVlcnkkLCBzb3J0ZXI6IHRoaXMuI3NvcnRlciB9KS5zdWJzY3JpYmUoKHsgcXVlcnksIHNvcnRlciB9KSA9PiB7XG4gICAgICAgICAgICAgICAgcXVlcnkuc29ydGVyLmZvcmNlZC5zZXQoc29ydGVyKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKVxuXG4gICAgICAgIHRoaXMuI3N1YnMuYWRkKFxuICAgICAgICAgICAgY29tYmluZUxhdGVzdCh7IHF1ZXJ5OiB0aGlzLnF1ZXJ5JCwgZ3JvdXBlcjogdGhpcy4jZ3JvdXBlciB9KS5zdWJzY3JpYmUoKHsgcXVlcnksIGdyb3VwZXIgfSkgPT4ge1xuICAgICAgICAgICAgICAgIHF1ZXJ5Lmdyb3VwZXIuZm9yY2VkLnNldChncm91cGVyKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKVxuXG4gICAgICAgIHRoaXMuI3N1YnMuYWRkKFxuICAgICAgICAgICAgY29tYmluZUxhdGVzdCh7IHF1ZXJ5OiB0aGlzLnF1ZXJ5JCwgc2xpbWVyOiB0aGlzLiNzbGltZXIgfSkuc3Vic2NyaWJlKCh7IHF1ZXJ5LCBzbGltZXIgfSkgPT4ge1xuICAgICAgICAgICAgICAgIHF1ZXJ5LnNsaW1lci5mb3JjZWQuc2V0KHNsaW1lcilcbiAgICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICB9XG5cbiAgICAjY3ZTdWJzID0gbmV3IE1hcDxDb2xsZWN0aW9uVmlld2VyLCBTdWJqZWN0PHZvaWQ+PigpXG5cbiAgICBvdmVycmlkZSBjb25uZWN0KGNvbGxlY3Rpb25WaWV3ZXI6IENvbGxlY3Rpb25WaWV3ZXIpOiBPYnNlcnZhYmxlPHJlYWRvbmx5IChUIHwgdW5kZWZpbmVkKVtdPiB7XG4gICAgICAgIGNvbnN0IHVudGlsID0gbmV3IFN1YmplY3Q8dm9pZD4oKVxuXG4gICAgICAgIHRoaXMuI2N2U3Vicy5nZXQoY29sbGVjdGlvblZpZXdlcik/Lm5leHQoKVxuICAgICAgICB0aGlzLiNjdlN1YnMuc2V0KGNvbGxlY3Rpb25WaWV3ZXIsIHVudGlsKVxuXG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlJC5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKHZhbHVlID0+IHZhbHVlLmNvbm5lY3QoY29sbGVjdGlvblZpZXdlcikpLFxuICAgICAgICAgICAgdGFrZVVudGlsKHVudGlsKSxcbiAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHRoaXMuI2N2U3Vicy5kZWxldGUoY29sbGVjdGlvblZpZXdlcikpXG4gICAgICAgIClcbiAgICB9XG5cbiAgICBvdmVycmlkZSBkaXNjb25uZWN0KGNvbGxlY3Rpb25WaWV3ZXI6IENvbGxlY3Rpb25WaWV3ZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy4jY3ZTdWJzLmdldChjb2xsZWN0aW9uVmlld2VyKT8ubmV4dCgpXG4gICAgICAgIHRoaXMuI2N2U3Vicy5kZWxldGUoY29sbGVjdGlvblZpZXdlcilcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy4jdmFsdWVTdWI/LnVuc3Vic2NyaWJlKClcbiAgICAgICAgdGhpcy4jdmFsdWVTdWIgPSB1bmRlZmluZWRcbiAgICAgICAgdGhpcy4jc3Vicy51bnN1YnNjcmliZSgpXG4gICAgfVxufVxuXG5mdW5jdGlvbiBjb2VyY2VEYXRhU291cmNlPFQgZXh0ZW5kcyBNb2RlbD4odmFsdWU6IERhdGFTb3VyY2VJbnB1dDxUPik6IE9ic2VydmFibGU8RGF0YVNvdXJjZTxUPj4ge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGFTb3VyY2VQcm94eSkge1xuICAgICAgICByZXR1cm4gdmFsdWUudmFsdWUkXG4gICAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGFTb3VyY2UpIHtcbiAgICAgICAgcmV0dXJuIG9mKHZhbHVlKVxuICAgIH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRhUHJvdmlkZXIpIHtcbiAgICAgICAgcmV0dXJuIG9mKHZhbHVlLnRvRGF0YVNvdXJjZSgpKVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcihcIkludmFsaWQgRGF0YVNvdXJjZSB2YWx1ZVwiKSlcbiAgICB9XG59XG4iXX0=
|
|
196
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJveHkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGF0YS9zcmMvc291cmNlL3Byb3h5LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxJQUFJLGFBQWEsRUFBb0IsTUFBTSwwQkFBMEIsQ0FBQTtBQUN4RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFBO0FBQzFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUU3RSxPQUFPLEVBQ0gsYUFBYSxFQUNiLFFBQVEsRUFDUixHQUFHLEVBRUgsRUFBRSxFQUNGLGFBQWEsRUFDYixXQUFXLEVBQ1gsT0FBTyxFQUVQLFNBQVMsRUFDVCxTQUFTLEVBQ1QsVUFBVSxFQUNiLE1BQU0sTUFBTSxDQUFBO0FBRWIsT0FBTyxFQUFFLElBQUksRUFBbUIsTUFBTSxnQkFBZ0IsQ0FBQTtBQUd0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFFbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQTs7QUFJckM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkJHO0FBTUgsTUFBTSxPQUFPLGVBQ1QsU0FBUSxhQUE0QjtJQU54Qzs7UUFnQmEsV0FBTSxHQUFHLElBQUksYUFBYSxDQUFnQixDQUFDLENBQUMsQ0FBQTtRQUM1QyxXQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFBO1FBQy9DLFdBQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDOUIsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUMxQixXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2pCLENBQUE7UUFFUSxXQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQzlCLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFDaEMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNqQixDQUFBO1FBRUQsWUFBTyxHQUFHLElBQUksR0FBRyxFQUFtQyxDQUFBO0tBd0J2RDtJQTNDRyxJQUNJLEtBQUssQ0FBQyxLQUE4QjtRQUNwQyxJQUFJLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxDQUFBO1FBQzdCLElBQUksQ0FBQyxTQUFTLEdBQUcsZ0JBQWdCLENBQUksS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUN0RSxDQUFDO0lBRUQsU0FBUyxDQUFlO0lBQ2YsTUFBTSxDQUFzQztJQVlyRCxPQUFPLENBQTZDO0lBRTNDLE9BQU8sQ0FBQyxnQkFBa0M7UUFDL0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQTtRQUVqQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFBO1FBQzFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxDQUFBO1FBRXpDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ25CLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxFQUNuRCxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQ2hCLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQ3hELENBQUE7SUFDTCxDQUFDO0lBRVEsVUFBVSxDQUFDLGdCQUFrQztRQUNsRCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFBO1FBQzFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUE7SUFDekMsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxDQUFBO1FBQzdCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFBO0lBQzlCLENBQUM7OEdBOUNRLGVBQWU7a0dBQWYsZUFBZTs7MkZBQWYsZUFBZTtrQkFMM0IsU0FBUzttQkFBQztvQkFDUCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsUUFBUSxFQUFFLGNBQWM7aUJBQzNCOzhCQU1PLEtBQUs7c0JBRFIsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRTs7QUFpRHBELE1BQU0sT0FBTyxxQkFBcUI7SUFDckIsTUFBTSxDQUE4QztJQUk3RDtRQUpTLFdBQU0sR0FBRyxNQUFNLENBQXFCLGVBQWUsQ0FBQyxDQUFBO1FBQ3BELFdBQU0sR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFLLENBQUE7UUFDNUIsWUFBTyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7UUFHeEMsYUFBYSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDN0QsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7YUFDMUIsU0FBUyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBO0lBQzFFLENBQUM7OEdBVFEscUJBQXFCO2tHQUFyQixxQkFBcUI7OzJGQUFyQixxQkFBcUI7a0JBSmpDLFNBQVM7bUJBQUM7b0JBQ1AsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSx3QkFBd0I7aUJBQ3JDOztBQWlCRCxNQUFNLE9BQU8scUJBQXFCO0lBQ3JCLE1BQU0sQ0FBOEM7SUFJN0Q7UUFKUyxXQUFNLEdBQUcsTUFBTSxDQUFxQixlQUFlLENBQUMsQ0FBQTtRQUNwRCxXQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBSyxDQUFBO1FBQzVCLFlBQU8sR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBR3hDLGFBQWEsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQzdELElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2FBQzFCLFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtJQUMxRSxDQUFDOzhHQVRRLHFCQUFxQjtrR0FBckIscUJBQXFCOzsyRkFBckIscUJBQXFCO2tCQUpqQyxTQUFTO21CQUFDO29CQUNQLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsd0JBQXdCO2lCQUNyQzs7QUFpQkQsTUFBTSxPQUFPLHFCQUFxQjtJQUNyQixNQUFNLENBQThDO0lBSTdEO1FBSlMsV0FBTSxHQUFHLE1BQU0sQ0FBcUIsZUFBZSxDQUFDLENBQUE7UUFDcEQsV0FBTSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUssQ0FBQTtRQUM1QixZQUFPLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUd4QyxhQUFhLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUM3RCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQzthQUMxQixTQUFTLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUE7SUFDMUUsQ0FBQzs4R0FUUSxxQkFBcUI7a0dBQXJCLHFCQUFxQjs7MkZBQXJCLHFCQUFxQjtrQkFKakMsU0FBUzttQkFBQztvQkFDUCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLHdCQUF3QjtpQkFDckM7O0FBaUJELE1BQU0sT0FBTyxzQkFBc0I7SUFDdEIsTUFBTSxDQUE4QztJQUk3RDtRQUpTLFdBQU0sR0FBRyxNQUFNLENBQXFCLGVBQWUsQ0FBQyxDQUFBO1FBQ3BELFlBQU8sR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFLLENBQUE7UUFDN0IsYUFBUSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFHMUMsYUFBYSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7YUFDL0QsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7YUFDMUIsU0FBUyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO0lBQzdFLENBQUM7OEdBVFEsc0JBQXNCO2tHQUF0QixzQkFBc0I7OzJGQUF0QixzQkFBc0I7a0JBSmxDLFNBQVM7bUJBQUM7b0JBQ1AsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSx5QkFBeUI7aUJBQ3RDOztBQWlCRCxNQUFNLE9BQU8sbUJBQW1CO0lBQ25CLE1BQU0sQ0FBZ0Q7SUFDdEQsS0FBSyxDQUEwQjtJQU94QztRQVJTLFdBQU0sR0FBRyxNQUFNLENBQXVCLGVBQWUsQ0FBQyxDQUFBO1FBQ3RELFVBQUssR0FBRyxNQUFNLENBQVksSUFBSSxDQUFDLENBQUE7UUFFL0IsVUFBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDcEMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUMvQixXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2pCLENBQUE7UUFHRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQTtJQUN6RSxDQUFDOzhHQVhRLG1CQUFtQjtrR0FBbkIsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUovQixTQUFTO21CQUFDO29CQUNQLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsd0JBQXdCO2lCQUNyQzs7QUFlRCxTQUFTLGdCQUFnQixDQUFrQixLQUE4QjtJQUNyRSxJQUFJLEtBQUssWUFBWSxlQUFlLEVBQUUsQ0FBQztRQUNuQyxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUE7SUFDdkIsQ0FBQztTQUFNLElBQUksS0FBSyxZQUFZLFVBQVUsRUFBRSxDQUFDO1FBQ3JDLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3BCLENBQUM7U0FBTSxJQUFJLEtBQUssWUFBWSxZQUFZLEVBQUUsQ0FBQztRQUN2QyxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQTtJQUNuQyxDQUFDO1NBQU0sQ0FBQztRQUNKLE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQTtJQUNsRSxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGFTb3VyY2UgYXMgQ2RrRGF0YVNvdXJjZSwgQ29sbGVjdGlvblZpZXdlciB9IGZyb20gXCJAYW5ndWxhci9jZGsvY29sbGVjdGlvbnNcIlxuaW1wb3J0IHsgRGlyZWN0aXZlLCBpbmplY3QsIGlucHV0LCBJbnB1dCwgT25EZXN0cm95IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIlxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkLCB0b09ic2VydmFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3BcIlxuXG5pbXBvcnQge1xuICAgIGNvbWJpbmVMYXRlc3QsXG4gICAgZmluYWxpemUsXG4gICAgbWFwLFxuICAgIE9ic2VydmFibGUsXG4gICAgb2YsXG4gICAgUmVwbGF5U3ViamVjdCxcbiAgICBzaGFyZVJlcGxheSxcbiAgICBTdWJqZWN0LFxuICAgIFN1YnNjcmlwdGlvbixcbiAgICBzd2l0Y2hNYXAsXG4gICAgdGFrZVVudGlsLFxuICAgIHRocm93RXJyb3Jcbn0gZnJvbSBcInJ4anNcIlxuXG5pbXBvcnQgeyBCdXN5LCBDb25uZWN0UHJvdG9jb2wgfSBmcm9tIFwiQG5ndXRpbC9jb21tb25cIlxuXG5pbXBvcnQgeyBNb2RlbCB9IGZyb20gXCIuLi9tb2RlbFwiXG5pbXBvcnQgeyBEYXRhUHJvdmlkZXIgfSBmcm9tIFwiLi4vcHJvdmlkZXIvcHJvdmlkZXJcIlxuaW1wb3J0IHsgRmlsdGVyLCBHcm91cGVyLCBTbGltZXIsIFNvcnRlciB9IGZyb20gXCIuLi9xdWVyeVwiXG5pbXBvcnQgeyBEYXRhU291cmNlIH0gZnJvbSBcIi4vc291cmNlXCJcblxuZXhwb3J0IHR5cGUgRGF0YVNvdXJjZVByb3h5SW5wdXQ8VCBleHRlbmRzIE1vZGVsPiA9IERhdGFTb3VyY2VQcm94eTxUPiB8IERhdGFTb3VyY2U8VD4gfCBEYXRhUHJvdmlkZXI8VD5cblxuLyoqXG4gKiBAZXhhbXBsZVxuICogYGBgaHRtbFxuICogPHRhYmxlIFtudURhdGFTb3VyY2VdPVwiLi4uXCIgW2ZpbHRlcl09XCJ7aXNBY3RpdmU6IHRydWV9XCIgW3NvcnRlcl09XCJbe25hbWU6ICdhc2MnfV1cIj48L3RhYmxlPlxuICogYGBgXG4gKlxuICogYGBgdHNcbiAqIEBDb21wb25lbnQoe1xuICogICB0ZW1wbGF0ZTogYDx0YWJsZSBbbnVEYXRhU291cmNlXT1cInVzZXJzJFwiPjwvdGFibGU+YFxuICogfSlcbiAqIGNsYXNzIFVzZXJUYWJsZSB7XG4gKiAgIHJlYWRvbmx5IHVzZXJTZXJ2aWNlID0gaW5qZWN0KFVzZXJTZXJ2aWNlKVxuICogICByZWFkb25seSB1c2VycyQgPSBVc2VyU2VydmljZS5hbGwoKVxuICogfVxuICogYGBgXG4gKlxuICogYGBgdHNcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogXCJ0YWJsZS5teS10YWJsZVwiLFxuICogICB0ZW1wbGF0ZTogYFxuICogICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0IGl0ZW1TaXplPVwiNTBcIiBjbGFzcz1cImV4YW1wbGUtdmlld3BvcnRcIj5cbiAqICAgICAgIDxkaXYgKmNka1ZpcnR1YWxGb3I9XCJsZXQgaXRlbSBvZiBkYXRhU291cmNlXCIgY2xhc3M9XCJleGFtcGxlLWl0ZW1cIj57e2l0ZW19fTwvZGl2PlxuICogICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cbiAqICAgYFxuICogfSlcbiAqIGNsYXNzIFRhYmxlQ29tcG9uZW50IHtcbiAqICAgcmVhZG9ubHkgZGF0YVNvdXJjZSA9IGluamVjdChEYXRhU291cmNlUHJveHkpXG4gKiB9XG4gKiBgYGBcbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogXCJbbnVEYXRhU291cmNlXVwiLFxuICAgIGV4cG9ydEFzOiBcIm51RGF0YVNvdXJjZVwiXG59KVxuZXhwb3J0IGNsYXNzIERhdGFTb3VyY2VQcm94eTxUIGV4dGVuZHMgTW9kZWw+XG4gICAgZXh0ZW5kcyBDZGtEYXRhU291cmNlPFQgfCB1bmRlZmluZWQ+XG4gICAgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIENvbm5lY3RQcm90b2NvbFxue1xuICAgIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlLCBhbGlhczogXCJudURhdGFTb3VyY2VcIiB9KVxuICAgIHNldCB2YWx1ZSh2YWx1ZTogRGF0YVNvdXJjZVByb3h5SW5wdXQ8VD4pIHtcbiAgICAgICAgdGhpcy4jdmFsdWVTdWI/LnVuc3Vic2NyaWJlKClcbiAgICAgICAgdGhpcy4jdmFsdWVTdWIgPSBjb2VyY2VEYXRhU291cmNlPFQ+KHZhbHVlKS5zdWJzY3JpYmUodGhpcy4jdmFsdWUpXG4gICAgfVxuXG4gICAgI3ZhbHVlU3ViPzogU3Vic2NyaXB0aW9uXG4gICAgcmVhZG9ubHkgI3ZhbHVlID0gbmV3IFJlcGxheVN1YmplY3Q8RGF0YVNvdXJjZTxUPj4oMSlcbiAgICByZWFkb25seSB2YWx1ZSQgPSB0aGlzLiN2YWx1ZS5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgIHJlYWRvbmx5IHF1ZXJ5JCA9IHRoaXMudmFsdWUkLnBpcGUoXG4gICAgICAgIG1hcCh2YWx1ZSA9PiB2YWx1ZS5xdWVyeSQpLFxuICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgIClcblxuICAgIHJlYWRvbmx5IGl0ZW1zJCA9IHRoaXMudmFsdWUkLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCh2YWx1ZSA9PiB2YWx1ZS5pdGVtcyQpLFxuICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgIClcblxuICAgICNjdlN1YnMgPSBuZXcgTWFwPENvbGxlY3Rpb25WaWV3ZXIsIFN1YmplY3Q8dm9pZD4+KClcblxuICAgIG92ZXJyaWRlIGNvbm5lY3QoY29sbGVjdGlvblZpZXdlcjogQ29sbGVjdGlvblZpZXdlcik6IE9ic2VydmFibGU8cmVhZG9ubHkgKFQgfCB1bmRlZmluZWQpW10+IHtcbiAgICAgICAgY29uc3QgdW50aWwgPSBuZXcgU3ViamVjdDx2b2lkPigpXG5cbiAgICAgICAgdGhpcy4jY3ZTdWJzLmdldChjb2xsZWN0aW9uVmlld2VyKT8ubmV4dCgpXG4gICAgICAgIHRoaXMuI2N2U3Vicy5zZXQoY29sbGVjdGlvblZpZXdlciwgdW50aWwpXG5cbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUkLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAodmFsdWUgPT4gdmFsdWUuY29ubmVjdChjb2xsZWN0aW9uVmlld2VyKSksXG4gICAgICAgICAgICB0YWtlVW50aWwodW50aWwpLFxuICAgICAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy4jY3ZTdWJzLmRlbGV0ZShjb2xsZWN0aW9uVmlld2VyKSlcbiAgICAgICAgKVxuICAgIH1cblxuICAgIG92ZXJyaWRlIGRpc2Nvbm5lY3QoY29sbGVjdGlvblZpZXdlcjogQ29sbGVjdGlvblZpZXdlcik6IHZvaWQge1xuICAgICAgICB0aGlzLiNjdlN1YnMuZ2V0KGNvbGxlY3Rpb25WaWV3ZXIpPy5uZXh0KClcbiAgICAgICAgdGhpcy4jY3ZTdWJzLmRlbGV0ZShjb2xsZWN0aW9uVmlld2VyKVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLiN2YWx1ZVN1Yj8udW5zdWJzY3JpYmUoKVxuICAgICAgICB0aGlzLiN2YWx1ZVN1YiA9IHVuZGVmaW5lZFxuICAgIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogXCJbbnVEYXRhU291cmNlXVtmaWx0ZXJdXCJcbn0pXG5leHBvcnQgY2xhc3MgRGF0YVNvdXJjZVByb3h5RmlsdGVyPFQgZXh0ZW5kcyBNb2RlbCwgRiBleHRlbmRzIEZpbHRlcjxUPj4ge1xuICAgIHJlYWRvbmx5ICNwcm94eSA9IGluamVjdDxEYXRhU291cmNlUHJveHk8VD4+KERhdGFTb3VyY2VQcm94eSlcbiAgICByZWFkb25seSBmaWx0ZXIgPSBpbnB1dC5yZXF1aXJlZDxGPigpXG4gICAgcmVhZG9ubHkgZmlsdGVyJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLmZpbHRlcilcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBjb21iaW5lTGF0ZXN0KHsgcXVlcnk6IHRoaXMuI3Byb3h5LnF1ZXJ5JCwgZmlsdGVyOiB0aGlzLmZpbHRlciQgfSlcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoeyBxdWVyeSwgZmlsdGVyIH0pID0+IHF1ZXJ5LmZpbHRlci5mb3JjZWQuc2V0KGZpbHRlcikpXG4gICAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiBcIltudURhdGFTb3VyY2VdW3NvcnRlcl1cIlxufSlcbmV4cG9ydCBjbGFzcyBEYXRhU291cmNlUHJveHlTb3J0ZXI8VCBleHRlbmRzIE1vZGVsLCBTIGV4dGVuZHMgU29ydGVyPFQ+PiB7XG4gICAgcmVhZG9ubHkgI3Byb3h5ID0gaW5qZWN0PERhdGFTb3VyY2VQcm94eTxUPj4oRGF0YVNvdXJjZVByb3h5KVxuICAgIHJlYWRvbmx5IHNvcnRlciA9IGlucHV0LnJlcXVpcmVkPFM+KClcbiAgICByZWFkb25seSBzb3J0ZXIkID0gdG9PYnNlcnZhYmxlKHRoaXMuc29ydGVyKVxuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGNvbWJpbmVMYXRlc3QoeyBxdWVyeTogdGhpcy4jcHJveHkucXVlcnkkLCBzb3J0ZXI6IHRoaXMuc29ydGVyJCB9KVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCh7IHF1ZXJ5LCBzb3J0ZXIgfSkgPT4gcXVlcnkuc29ydGVyLmZvcmNlZC5zZXQoc29ydGVyKSlcbiAgICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6IFwiW251RGF0YVNvdXJjZV1bc2xpbWVyXVwiXG59KVxuZXhwb3J0IGNsYXNzIERhdGFTb3VyY2VQcm94eVNsaW1lcjxUIGV4dGVuZHMgTW9kZWwsIFMgZXh0ZW5kcyBTbGltZXI8VD4+IHtcbiAgICByZWFkb25seSAjcHJveHkgPSBpbmplY3Q8RGF0YVNvdXJjZVByb3h5PFQ+PihEYXRhU291cmNlUHJveHkpXG4gICAgcmVhZG9ubHkgc2xpbWVyID0gaW5wdXQucmVxdWlyZWQ8Uz4oKVxuICAgIHJlYWRvbmx5IHNsaW1lciQgPSB0b09ic2VydmFibGUodGhpcy5zbGltZXIpXG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgY29tYmluZUxhdGVzdCh7IHF1ZXJ5OiB0aGlzLiNwcm94eS5xdWVyeSQsIHNsaW1lcjogdGhpcy5zbGltZXIkIH0pXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHsgcXVlcnksIHNsaW1lciB9KSA9PiBxdWVyeS5zbGltZXIuZm9yY2VkLnNldChzbGltZXIpKVxuICAgIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogXCJbbnVEYXRhU291cmNlXVtncm91cGVyXVwiXG59KVxuZXhwb3J0IGNsYXNzIERhdGFTb3VyY2VQcm94eUdyb3VwZXI8VCBleHRlbmRzIE1vZGVsLCBHIGV4dGVuZHMgR3JvdXBlcjxUPj4ge1xuICAgIHJlYWRvbmx5ICNwcm94eSA9IGluamVjdDxEYXRhU291cmNlUHJveHk8VD4+KERhdGFTb3VyY2VQcm94eSlcbiAgICByZWFkb25seSBncm91cGVyID0gaW5wdXQucmVxdWlyZWQ8Rz4oKVxuICAgIHJlYWRvbmx5IGdyb3VwZXIkID0gdG9PYnNlcnZhYmxlKHRoaXMuZ3JvdXBlcilcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBjb21iaW5lTGF0ZXN0KHsgcXVlcnk6IHRoaXMuI3Byb3h5LnF1ZXJ5JCwgZ3JvdXBlcjogdGhpcy5ncm91cGVyJCB9KVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCh7IHF1ZXJ5LCBncm91cGVyIH0pID0+IHF1ZXJ5Lmdyb3VwZXIuZm9yY2VkLnNldChncm91cGVyKSlcbiAgICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6IFwiW251RGF0YVNvdXJjZV1bbnVCdXN5XVwiXG59KVxuZXhwb3J0IGNsYXNzIERhdGFTb3VyY2VQcm94eUJ1c3kge1xuICAgIHJlYWRvbmx5ICNwcm94eSA9IGluamVjdDxEYXRhU291cmNlUHJveHk8YW55Pj4oRGF0YVNvdXJjZVByb3h5KVxuICAgIHJlYWRvbmx5ICNidXN5ID0gaW5qZWN0PEJ1c3k8YW55Pj4oQnVzeSlcblxuICAgIHJlYWRvbmx5IGJ1c3kkID0gdGhpcy4jcHJveHkudmFsdWUkLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCh2YWx1ZSA9PiB2YWx1ZS5idXN5JCksXG4gICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKVxuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuI2J1c3kuY29ubmVjdCh0aGlzLmJ1c3kkKS5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUoKVxuICAgIH1cbn1cblxuZnVuY3Rpb24gY29lcmNlRGF0YVNvdXJjZTxUIGV4dGVuZHMgTW9kZWw+KHZhbHVlOiBEYXRhU291cmNlUHJveHlJbnB1dDxUPik6IE9ic2VydmFibGU8RGF0YVNvdXJjZTxUPj4ge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGFTb3VyY2VQcm94eSkge1xuICAgICAgICByZXR1cm4gdmFsdWUudmFsdWUkXG4gICAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGFTb3VyY2UpIHtcbiAgICAgICAgcmV0dXJuIG9mKHZhbHVlKVxuICAgIH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRhUHJvdmlkZXIpIHtcbiAgICAgICAgcmV0dXJuIG9mKHZhbHVlLnRvRGF0YVNvdXJjZSgpKVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcihcIkludmFsaWQgRGF0YVNvdXJjZSB2YWx1ZVwiKSlcbiAgICB9XG59XG4iXX0=
|