@firestitch/common 14.0.0 → 16.0.0
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/app/directives/auto-focus.directive.d.ts +1 -1
- package/app/directives/auto-select.directive.d.ts +1 -1
- package/app/directives/model-change.directive.d.ts +1 -1
- package/app/directives/prevent-default.directive.d.ts +1 -1
- package/app/directives/stop-propagation.directive.d.ts +1 -1
- package/esm2022/app/directives/auto-focus.directive.mjs +61 -0
- package/esm2022/app/directives/auto-select.directive.mjs +32 -0
- package/esm2022/app/directives/model-change.directive.mjs +39 -0
- package/{esm2020 → esm2022}/app/directives/prevent-default.directive.mjs +4 -4
- package/{esm2020 → esm2022}/app/directives/stop-propagation.directive.mjs +4 -4
- package/{esm2020 → esm2022}/app/fs-common.module.mjs +31 -31
- package/{esm2020 → esm2022}/app/pipes/bytes.pipe.mjs +4 -4
- package/esm2022/app/pipes/currency.pipe.mjs +24 -0
- package/{esm2020 → esm2022}/app/pipes/number.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/app/pipes/ordinal-number.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/app/pipes/truncate.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/app/pipes/util.pipe.mjs +13 -13
- package/{esm2020 → esm2022}/app/services/array.service.mjs +4 -4
- package/{esm2020 → esm2022}/app/services/math.service.mjs +4 -4
- package/esm2022/app/services/util.service.mjs +249 -0
- package/esm2022/app/services/vaildate.service.mjs +29 -0
- package/esm2022/libs/util/queue/operation.mjs +17 -0
- package/esm2022/libs/util/queue/queue.mjs +166 -0
- package/{fesm2020 → fesm2022}/firestitch-common.mjs +123 -115
- package/{fesm2020 → fesm2022}/firestitch-common.mjs.map +1 -1
- package/package.json +5 -11
- package/esm2020/app/directives/auto-focus.directive.mjs +0 -59
- package/esm2020/app/directives/auto-select.directive.mjs +0 -31
- package/esm2020/app/directives/model-change.directive.mjs +0 -37
- package/esm2020/app/pipes/currency.pipe.mjs +0 -23
- package/esm2020/app/services/util.service.mjs +0 -251
- package/esm2020/app/services/vaildate.service.mjs +0 -28
- package/esm2020/libs/util/queue/operation.mjs +0 -15
- package/esm2020/libs/util/queue/queue.mjs +0 -165
- package/fesm2015/firestitch-common.mjs +0 -1754
- package/fesm2015/firestitch-common.mjs.map +0 -1
- /package/{esm2020 → esm2022}/app/directives/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/pipes/index.mjs +0 -0
- /package/{esm2020 → esm2022}/firestitch-common.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/array/compare/compare.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/array/compare/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/array/filter/filter.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/array/filter/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/array/find/find.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/array/find/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/array/inArray/inArray.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/array/inArray/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/array/index/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/array/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/array/indexOf/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/array/indexOf/indexOf.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/array/keyExists/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/array/keyExists/keyExists.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/array/ksort/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/array/ksort/ksort.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/array/list/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/array/list/list.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/array/nameValue/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/array/nameValue/nameValue.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/array/remove/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/array/remove/remove.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/array/rsort/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/array/rsort/rsort.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/array/sort/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/array/sort/sort.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/format/acronym/acronym.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/format/acronym/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/format/bytes/bytes.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/format/bytes/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/format/currency/currency.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/format/currency/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/format/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/format/number/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/format/number/number.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/format/truncate/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/format/truncate/truncate.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/rxjs/delayedRetry.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/rxjs/keyboard-shortcut.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/util/boolean/boolean.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/util/boolean/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/util/clone/clone.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/util/clone/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/util/debounce/debounce.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/util/debounce/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/util/get-normalized-path/get-normalized-path.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/util/get-normalized-path/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/util/guid/guid.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/util/guid/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/util/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/util/is-array-equal/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/util/is-array-equal/is-array-equal.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/util/is-class/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/util/is-class/is-class.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/util/is-empty/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/util/is-empty/is-empty.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/util/is-numeric/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/util/is-numeric/is-numeric.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/util/is-object/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/util/is-object/is-object.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/util/keys/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/util/keys/keys.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/util/length/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/util/length/length.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/util/ordinal-number/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/util/ordinal-number/ordinal-number.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/util/queue/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/util/queue/queue-stats.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/util/queue/queue.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/util/remove-query-params/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/util/remove-query-params/remove-query-params.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/util/resolve/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/util/resolve/resolve.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/util/round/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/util/round/round.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/util/source-loader/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/util/source-loader/source-loader.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/util/stringify/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/util/stringify/stringify.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/util/throttle/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/util/throttle/throttle.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/util/to-string/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/util/to-string/to-string.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/util/uuid/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/util/uuid/uuid.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/util/value/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/util/value/value.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/validate/email/email.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/validate/email/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/validate/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/validate/phone/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/validate/phone/phone.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/validate/url/index.mjs +0 -0
- /package/{esm2020 → esm2022}/libs/validate/url/url.mjs +0 -0
- /package/{esm2020 → esm2022}/public_api.mjs +0 -0
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
import { of, Subject } from 'rxjs';
|
|
2
|
-
import { delay, finalize, map, take, takeUntil } from 'rxjs/operators';
|
|
3
|
-
import { Operation } from './operation';
|
|
4
|
-
import { QueueState } from './queue.enum';
|
|
5
|
-
export class Queue {
|
|
6
|
-
constructor(_limit = Infinity) {
|
|
7
|
-
this._limit = _limit;
|
|
8
|
-
this._queueStats = {
|
|
9
|
-
completed: 0,
|
|
10
|
-
total: 0,
|
|
11
|
-
errors: [],
|
|
12
|
-
};
|
|
13
|
-
this._doneQueueStats = {
|
|
14
|
-
completed: 0,
|
|
15
|
-
total: 0,
|
|
16
|
-
errors: [],
|
|
17
|
-
};
|
|
18
|
-
this._completeQueueStats = {
|
|
19
|
-
completed: 0,
|
|
20
|
-
total: 0,
|
|
21
|
-
errors: [],
|
|
22
|
-
};
|
|
23
|
-
this._done = new Subject();
|
|
24
|
-
this._queue = [];
|
|
25
|
-
this._inProgress = [];
|
|
26
|
-
this._state = QueueState.Idle;
|
|
27
|
-
this._destroy$ = new Subject();
|
|
28
|
-
// if(_targets) {
|
|
29
|
-
// _targets.forEach((target) => {
|
|
30
|
-
// this.push(target);
|
|
31
|
-
// });
|
|
32
|
-
// }
|
|
33
|
-
}
|
|
34
|
-
get total() {
|
|
35
|
-
return this._queueStats.total;
|
|
36
|
-
}
|
|
37
|
-
get completed() {
|
|
38
|
-
return this._queueStats.completed;
|
|
39
|
-
}
|
|
40
|
-
get pending() {
|
|
41
|
-
return this._queue.length;
|
|
42
|
-
}
|
|
43
|
-
get inProgress() {
|
|
44
|
-
return this._inProgress.length;
|
|
45
|
-
}
|
|
46
|
-
get errors() {
|
|
47
|
-
return this._queueStats.errors;
|
|
48
|
-
}
|
|
49
|
-
get state() {
|
|
50
|
-
return this._state;
|
|
51
|
-
}
|
|
52
|
-
get empty() {
|
|
53
|
-
return !this._queue.length && !this._inProgress.length;
|
|
54
|
-
}
|
|
55
|
-
get pendingOperations() {
|
|
56
|
-
return this._queue
|
|
57
|
-
.map((operation) => operation.name);
|
|
58
|
-
}
|
|
59
|
-
get inProgressOperations() {
|
|
60
|
-
return this._inProgress
|
|
61
|
-
.map((operation) => operation.name);
|
|
62
|
-
}
|
|
63
|
-
isProcessing() {
|
|
64
|
-
return this._state === QueueState.Processing;
|
|
65
|
-
}
|
|
66
|
-
isIdle() {
|
|
67
|
-
return this._state === QueueState.Idle;
|
|
68
|
-
}
|
|
69
|
-
setLimit(value) {
|
|
70
|
-
this._limit = value;
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* @depreated
|
|
74
|
-
*/
|
|
75
|
-
subscribe(fun, err, complete) {
|
|
76
|
-
this.observe$
|
|
77
|
-
.subscribe(fun, err, complete);
|
|
78
|
-
}
|
|
79
|
-
get observe$() {
|
|
80
|
-
return this._done
|
|
81
|
-
.pipe(takeUntil(this._destroy$));
|
|
82
|
-
}
|
|
83
|
-
get complete$() {
|
|
84
|
-
if (!this.isProcessing()) {
|
|
85
|
-
return of({ total: 0, completed: 0, errors: [] });
|
|
86
|
-
}
|
|
87
|
-
return this.observe$
|
|
88
|
-
.pipe(take(1), map(() => (this._completeQueueStats)));
|
|
89
|
-
}
|
|
90
|
-
complete(fun, err, complete) {
|
|
91
|
-
this.complete$.subscribe(fun, err, complete);
|
|
92
|
-
}
|
|
93
|
-
push(target, name) {
|
|
94
|
-
const operation = new Operation(target, name);
|
|
95
|
-
this._queueStats.total++;
|
|
96
|
-
this._doneQueueStats.total++;
|
|
97
|
-
this._completeQueueStats.total++;
|
|
98
|
-
this._state = QueueState.Processing;
|
|
99
|
-
if (this._inProgress.length < this._limit) {
|
|
100
|
-
this._processOperation(operation);
|
|
101
|
-
}
|
|
102
|
-
else {
|
|
103
|
-
this._queue.push(operation);
|
|
104
|
-
}
|
|
105
|
-
return operation.ready$;
|
|
106
|
-
}
|
|
107
|
-
clear() {
|
|
108
|
-
this._queue = [];
|
|
109
|
-
this._state = QueueState.Idle;
|
|
110
|
-
this._queueStats = {
|
|
111
|
-
total: 0,
|
|
112
|
-
errors: [],
|
|
113
|
-
completed: 0,
|
|
114
|
-
};
|
|
115
|
-
this._clearDoneQueueStats();
|
|
116
|
-
}
|
|
117
|
-
destroy() {
|
|
118
|
-
this._done.complete();
|
|
119
|
-
this.clear();
|
|
120
|
-
}
|
|
121
|
-
_processOperation(operation) {
|
|
122
|
-
this._inProgress.push(operation);
|
|
123
|
-
operation.target
|
|
124
|
-
.pipe(delay(200), // Hack to prevent extra quick proccess execution
|
|
125
|
-
finalize(() => {
|
|
126
|
-
const opIndex = this._inProgress.indexOf(operation);
|
|
127
|
-
this._inProgress.splice(opIndex, 1);
|
|
128
|
-
if (this.empty) {
|
|
129
|
-
this._state = QueueState.Idle;
|
|
130
|
-
this._done.next(this._doneQueueStats);
|
|
131
|
-
this._clearDoneQueueStats();
|
|
132
|
-
}
|
|
133
|
-
else {
|
|
134
|
-
if (this._queue.length) {
|
|
135
|
-
const queueItem = this._queue.shift();
|
|
136
|
-
this._processOperation(queueItem);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
}), takeUntil(this._destroy$)).subscribe({
|
|
140
|
-
next: (data) => {
|
|
141
|
-
operation.ready$.next(data);
|
|
142
|
-
},
|
|
143
|
-
error: (error) => {
|
|
144
|
-
this._queueStats.errors.push(error);
|
|
145
|
-
this._doneQueueStats.errors.push(error);
|
|
146
|
-
this._completeQueueStats.errors.push(error);
|
|
147
|
-
operation.ready$.error(error);
|
|
148
|
-
},
|
|
149
|
-
complete: () => {
|
|
150
|
-
this._queueStats.completed++;
|
|
151
|
-
this._doneQueueStats.completed++;
|
|
152
|
-
this._completeQueueStats.completed++;
|
|
153
|
-
operation.ready$.complete();
|
|
154
|
-
}
|
|
155
|
-
});
|
|
156
|
-
}
|
|
157
|
-
_clearDoneQueueStats() {
|
|
158
|
-
this._doneQueueStats = {
|
|
159
|
-
total: 0,
|
|
160
|
-
errors: [],
|
|
161
|
-
completed: 0,
|
|
162
|
-
};
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGlicy91dGlsL3F1ZXVlL3F1ZXVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV4QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRzFDLE1BQU0sT0FBTyxLQUFLO0lBMEJoQixZQUNVLFNBQVMsUUFBUTtRQUFqQixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBekJuQixnQkFBVyxHQUFlO1lBQ2hDLFNBQVMsRUFBRSxDQUFDO1lBQ1osS0FBSyxFQUFFLENBQUM7WUFDUixNQUFNLEVBQUUsRUFBRTtTQUNYLENBQUM7UUFFTSxvQkFBZSxHQUFlO1lBQ3BDLFNBQVMsRUFBRSxDQUFDO1lBQ1osS0FBSyxFQUFFLENBQUM7WUFDUixNQUFNLEVBQUUsRUFBRTtTQUNYLENBQUM7UUFFTSx3QkFBbUIsR0FBZTtZQUN4QyxTQUFTLEVBQUUsQ0FBQztZQUNaLEtBQUssRUFBRSxDQUFDO1lBQ1IsTUFBTSxFQUFFLEVBQUU7U0FDWCxDQUFDO1FBRU0sVUFBSyxHQUFHLElBQUksT0FBTyxFQUFjLENBQUM7UUFDbEMsV0FBTSxHQUFnQixFQUFFLENBQUM7UUFDekIsZ0JBQVcsR0FBZ0IsRUFBRSxDQUFDO1FBQzlCLFdBQU0sR0FBZSxVQUFVLENBQUMsSUFBSSxDQUFDO1FBQ3JDLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBTXRDLGlCQUFpQjtRQUNqQixtQ0FBbUM7UUFDbkMseUJBQXlCO1FBQ3pCLFNBQVM7UUFDVCxJQUFJO0lBQ04sQ0FBQztJQUVELElBQVcsS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQVcsU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7SUFDakMsQ0FBQztJQUVELElBQVcsTUFBTTtRQUNmLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7SUFDakMsQ0FBQztJQUVELElBQVcsS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBVyxLQUFLO1FBQ2QsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUE7SUFDeEQsQ0FBQztJQUVELElBQVcsaUJBQWlCO1FBQzFCLE9BQU8sSUFBSSxDQUFDLE1BQU07YUFDZixHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsSUFBVyxvQkFBb0I7UUFDN0IsT0FBTyxJQUFJLENBQUMsV0FBVzthQUNwQixHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRU0sWUFBWTtRQUNqQixPQUFPLElBQUksQ0FBQyxNQUFNLEtBQUssVUFBVSxDQUFDLFVBQVUsQ0FBQztJQUMvQyxDQUFDO0lBRU0sTUFBTTtRQUNYLE9BQU8sSUFBSSxDQUFDLE1BQU0sS0FBSyxVQUFVLENBQUMsSUFBSSxDQUFDO0lBQ3pDLENBQUM7SUFFTSxRQUFRLENBQUMsS0FBYTtRQUMzQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxTQUFTLENBQUMsR0FBRyxFQUFFLEdBQUksRUFBRSxRQUFTO1FBQ25DLElBQUksQ0FBQyxRQUFRO2FBQ1YsU0FBUyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxLQUFLO2FBQ2QsSUFBSSxDQUNILFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQzFCLENBQUM7SUFDTixDQUFDO0lBRUQsSUFBVyxTQUFTO1FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUU7WUFDeEIsT0FBTyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDbkQ7UUFFRCxPQUFPLElBQUksQ0FBQyxRQUFRO2FBQ2pCLElBQUksQ0FDSCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FDdEMsQ0FBQztJQUNOLENBQUM7SUFFTSxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUksRUFBRSxRQUFTO1FBQ2xDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVNLElBQUksQ0FBQyxNQUF1QixFQUFFLElBQWE7UUFDaEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxTQUFTLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRTlDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDO1FBRXBDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUN6QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDbkM7YUFBTTtZQUNMLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQzdCO1FBRUQsT0FBTyxTQUFTLENBQUMsTUFBTSxDQUFDO0lBQzFCLENBQUM7SUFFTSxLQUFLO1FBQ1YsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDO1FBQzlCLElBQUksQ0FBQyxXQUFXLEdBQUc7WUFDakIsS0FBSyxFQUFFLENBQUM7WUFDUixNQUFNLEVBQUUsRUFBRTtZQUNWLFNBQVMsRUFBRSxDQUFDO1NBQ2IsQ0FBQztRQUNGLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFTSxPQUFPO1FBQ1osSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDZixDQUFDO0lBRU8saUJBQWlCLENBQUMsU0FBb0I7UUFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFakMsU0FBUyxDQUFDLE1BQU07YUFDYixJQUFJLENBQ0gsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLGlEQUFpRDtRQUM3RCxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ1osTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBRXBDLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDZCxJQUFJLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7YUFDN0I7aUJBQU07Z0JBQ0wsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtvQkFDdEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDdEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUNuQzthQUNGO1FBQ0gsQ0FBQyxDQUFDLEVBQ0YsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FDMUIsQ0FBQyxTQUFTLENBQUM7WUFDVixJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDYixTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM5QixDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNwQyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUU1QyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNoQyxDQUFDO1lBQ0QsUUFBUSxFQUFFLEdBQUcsRUFBRTtnQkFDYixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUM3QixJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNqQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBRXJDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDOUIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxvQkFBb0I7UUFDMUIsSUFBSSxDQUFDLGVBQWUsR0FBRztZQUNyQixLQUFLLEVBQUUsQ0FBQztZQUNSLE1BQU0sRUFBRSxFQUFFO1lBQ1YsU0FBUyxFQUFFLENBQUM7U0FDYixDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlbGF5LCBmaW5hbGl6ZSwgbWFwLCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gJy4vb3BlcmF0aW9uJztcbmltcG9ydCB7IFF1ZXVlU3RhdHMgfSBmcm9tICcuL3F1ZXVlLXN0YXRzJztcbmltcG9ydCB7IFF1ZXVlU3RhdGUgfSBmcm9tICcuL3F1ZXVlLmVudW0nO1xuXG5cbmV4cG9ydCBjbGFzcyBRdWV1ZSB7XG5cbiAgcHJpdmF0ZSBfcXVldWVTdGF0czogUXVldWVTdGF0cyA9IHtcbiAgICBjb21wbGV0ZWQ6IDAsXG4gICAgdG90YWw6IDAsXG4gICAgZXJyb3JzOiBbXSxcbiAgfTtcblxuICBwcml2YXRlIF9kb25lUXVldWVTdGF0czogUXVldWVTdGF0cyA9IHtcbiAgICBjb21wbGV0ZWQ6IDAsXG4gICAgdG90YWw6IDAsXG4gICAgZXJyb3JzOiBbXSxcbiAgfTtcblxuICBwcml2YXRlIF9jb21wbGV0ZVF1ZXVlU3RhdHM6IFF1ZXVlU3RhdHMgPSB7XG4gICAgY29tcGxldGVkOiAwLFxuICAgIHRvdGFsOiAwLFxuICAgIGVycm9yczogW10sXG4gIH07XG5cbiAgcHJpdmF0ZSBfZG9uZSA9IG5ldyBTdWJqZWN0PFF1ZXVlU3RhdHM+KCk7XG4gIHByaXZhdGUgX3F1ZXVlOiBPcGVyYXRpb25bXSA9IFtdO1xuICBwcml2YXRlIF9pblByb2dyZXNzOiBPcGVyYXRpb25bXSA9IFtdO1xuICBwcml2YXRlIF9zdGF0ZTogUXVldWVTdGF0ZSA9IFF1ZXVlU3RhdGUuSWRsZTtcbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfbGltaXQgPSBJbmZpbml0eSxcbiAgICAvL3ByaXZhdGUgX3RhcmdldHM/OiBPYnNlcnZhYmxlPGFueT5bXSxcbiAgKSB7XG4gICAgLy8gaWYoX3RhcmdldHMpIHtcbiAgICAvLyAgIF90YXJnZXRzLmZvckVhY2goKHRhcmdldCkgPT4ge1xuICAgIC8vICAgICB0aGlzLnB1c2godGFyZ2V0KTtcbiAgICAvLyAgIH0pOyBcbiAgICAvLyB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRvdGFsKCkge1xuICAgIHJldHVybiB0aGlzLl9xdWV1ZVN0YXRzLnRvdGFsO1xuICB9XG5cbiAgcHVibGljIGdldCBjb21wbGV0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3F1ZXVlU3RhdHMuY29tcGxldGVkO1xuICB9XG5cbiAgcHVibGljIGdldCBwZW5kaW5nKCkge1xuICAgIHJldHVybiB0aGlzLl9xdWV1ZS5sZW5ndGg7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGluUHJvZ3Jlc3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2luUHJvZ3Jlc3MubGVuZ3RoO1xuICB9XG5cbiAgcHVibGljIGdldCBlcnJvcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3F1ZXVlU3RhdHMuZXJyb3JzO1xuICB9XG5cbiAgcHVibGljIGdldCBzdGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGVtcHR5KCkge1xuICAgIHJldHVybiAhdGhpcy5fcXVldWUubGVuZ3RoICYmICF0aGlzLl9pblByb2dyZXNzLmxlbmd0aFxuICB9XG5cbiAgcHVibGljIGdldCBwZW5kaW5nT3BlcmF0aW9ucygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3F1ZXVlXG4gICAgICAubWFwKChvcGVyYXRpb24pID0+IG9wZXJhdGlvbi5uYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaW5Qcm9ncmVzc09wZXJhdGlvbnMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl9pblByb2dyZXNzXG4gICAgICAubWFwKChvcGVyYXRpb24pID0+IG9wZXJhdGlvbi5uYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBpc1Byb2Nlc3NpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlID09PSBRdWV1ZVN0YXRlLlByb2Nlc3Npbmc7XG4gIH1cblxuICBwdWJsaWMgaXNJZGxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZSA9PT0gUXVldWVTdGF0ZS5JZGxlO1xuICB9XG5cbiAgcHVibGljIHNldExpbWl0KHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9saW1pdCA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWF0ZWRcbiAgICovXG4gIHB1YmxpYyBzdWJzY3JpYmUoZnVuLCBlcnI/LCBjb21wbGV0ZT8pOiB2b2lkIHtcbiAgICB0aGlzLm9ic2VydmUkXG4gICAgICAuc3Vic2NyaWJlKGZ1biwgZXJyLCBjb21wbGV0ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG9ic2VydmUkKCk6IE9ic2VydmFibGU8UXVldWVTdGF0cz4ge1xuICAgIHJldHVybiB0aGlzLl9kb25lXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNvbXBsZXRlJCgpOiBPYnNlcnZhYmxlPFF1ZXVlU3RhdHM+IHtcbiAgICBpZiAoIXRoaXMuaXNQcm9jZXNzaW5nKCkpIHtcbiAgICAgIHJldHVybiBvZih7IHRvdGFsOiAwLCBjb21wbGV0ZWQ6IDAsIGVycm9yczogW10gfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMub2JzZXJ2ZSRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICBtYXAoKCkgPT4gKHRoaXMuX2NvbXBsZXRlUXVldWVTdGF0cykpLFxuICAgICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBjb21wbGV0ZShmdW4sIGVycj8sIGNvbXBsZXRlPyk6IHZvaWQge1xuICAgIHRoaXMuY29tcGxldGUkLnN1YnNjcmliZShmdW4sIGVyciwgY29tcGxldGUpO1xuICB9XG5cbiAgcHVibGljIHB1c2godGFyZ2V0OiBPYnNlcnZhYmxlPGFueT4sIG5hbWU/OiBzdHJpbmcpIHtcbiAgICBjb25zdCBvcGVyYXRpb24gPSBuZXcgT3BlcmF0aW9uKHRhcmdldCwgbmFtZSk7XG5cbiAgICB0aGlzLl9xdWV1ZVN0YXRzLnRvdGFsKys7XG4gICAgdGhpcy5fZG9uZVF1ZXVlU3RhdHMudG90YWwrKztcbiAgICB0aGlzLl9jb21wbGV0ZVF1ZXVlU3RhdHMudG90YWwrKztcbiAgICB0aGlzLl9zdGF0ZSA9IFF1ZXVlU3RhdGUuUHJvY2Vzc2luZztcblxuICAgIGlmICh0aGlzLl9pblByb2dyZXNzLmxlbmd0aCA8IHRoaXMuX2xpbWl0KSB7XG4gICAgICB0aGlzLl9wcm9jZXNzT3BlcmF0aW9uKG9wZXJhdGlvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3F1ZXVlLnB1c2gob3BlcmF0aW9uKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3BlcmF0aW9uLnJlYWR5JDtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLl9xdWV1ZSA9IFtdO1xuICAgIHRoaXMuX3N0YXRlID0gUXVldWVTdGF0ZS5JZGxlOyAgICAgICBcbiAgICB0aGlzLl9xdWV1ZVN0YXRzID0ge1xuICAgICAgdG90YWw6IDAsXG4gICAgICBlcnJvcnM6IFtdLFxuICAgICAgY29tcGxldGVkOiAwLFxuICAgIH07XG4gICAgdGhpcy5fY2xlYXJEb25lUXVldWVTdGF0cygpO1xuICB9XG5cbiAgcHVibGljIGRlc3Ryb3koKTogdm9pZCB7ICAgIFxuICAgIHRoaXMuX2RvbmUuY29tcGxldGUoKTtcbiAgICB0aGlzLmNsZWFyKCk7XG4gIH1cblxuICBwcml2YXRlIF9wcm9jZXNzT3BlcmF0aW9uKG9wZXJhdGlvbjogT3BlcmF0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5faW5Qcm9ncmVzcy5wdXNoKG9wZXJhdGlvbik7XG5cbiAgICBvcGVyYXRpb24udGFyZ2V0XG4gICAgICAucGlwZShcbiAgICAgICAgZGVsYXkoMjAwKSwgLy8gSGFjayB0byBwcmV2ZW50IGV4dHJhIHF1aWNrIHByb2NjZXNzIGV4ZWN1dGlvblxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgY29uc3Qgb3BJbmRleCA9IHRoaXMuX2luUHJvZ3Jlc3MuaW5kZXhPZihvcGVyYXRpb24pO1xuICAgICAgICAgIHRoaXMuX2luUHJvZ3Jlc3Muc3BsaWNlKG9wSW5kZXgsIDEpO1xuICAgICAgICAgIFxuICAgICAgICAgIGlmICh0aGlzLmVtcHR5KSB7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZSA9IFF1ZXVlU3RhdGUuSWRsZTtcbiAgICAgICAgICAgIHRoaXMuX2RvbmUubmV4dCh0aGlzLl9kb25lUXVldWVTdGF0cyk7XG4gICAgICAgICAgICB0aGlzLl9jbGVhckRvbmVRdWV1ZVN0YXRzKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9xdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgY29uc3QgcXVldWVJdGVtID0gdGhpcy5fcXVldWUuc2hpZnQoKTtcbiAgICAgICAgICAgICAgdGhpcy5fcHJvY2Vzc09wZXJhdGlvbihxdWV1ZUl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChkYXRhKSA9PiB7XG4gICAgICAgICAgb3BlcmF0aW9uLnJlYWR5JC5uZXh0KGRhdGEpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XG4gICAgICAgICAgdGhpcy5fcXVldWVTdGF0cy5lcnJvcnMucHVzaChlcnJvcik7XG4gICAgICAgICAgdGhpcy5fZG9uZVF1ZXVlU3RhdHMuZXJyb3JzLnB1c2goZXJyb3IpO1xuICAgICAgICAgIHRoaXMuX2NvbXBsZXRlUXVldWVTdGF0cy5lcnJvcnMucHVzaChlcnJvcik7XG5cbiAgICAgICAgICBvcGVyYXRpb24ucmVhZHkkLmVycm9yKGVycm9yKTtcbiAgICAgICAgfSxcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLl9xdWV1ZVN0YXRzLmNvbXBsZXRlZCsrO1xuICAgICAgICAgIHRoaXMuX2RvbmVRdWV1ZVN0YXRzLmNvbXBsZXRlZCsrO1xuICAgICAgICAgIHRoaXMuX2NvbXBsZXRlUXVldWVTdGF0cy5jb21wbGV0ZWQrKztcblxuICAgICAgICAgIG9wZXJhdGlvbi5yZWFkeSQuY29tcGxldGUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9jbGVhckRvbmVRdWV1ZVN0YXRzKCk6IHZvaWQge1xuICAgIHRoaXMuX2RvbmVRdWV1ZVN0YXRzID0ge1xuICAgICAgdG90YWw6IDAsXG4gICAgICBlcnJvcnM6IFtdLFxuICAgICAgY29tcGxldGVkOiAwLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|