@acorex/connectivity 20.2.4-next.3 → 20.2.4-next.6
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/fesm2022/acorex-connectivity-mock.mjs +24645 -1
- package/fesm2022/acorex-connectivity-mock.mjs.map +1 -1
- package/mock/index.d.ts +178 -72
- package/package.json +7 -7
- package/fesm2022/acorex-connectivity-mock-acorex-connectivity-mock-CVAXxD06.mjs +0 -22955
- package/fesm2022/acorex-connectivity-mock-acorex-connectivity-mock-CVAXxD06.mjs.map +0 -1
- package/fesm2022/acorex-connectivity-mock-employee-skills.queries-DLQzhHUF.mjs +0 -194
- package/fesm2022/acorex-connectivity-mock-employee-skills.queries-DLQzhHUF.mjs.map +0 -1
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injectable } from '@angular/core';
|
|
3
|
-
import { E as EMPLOYEE_SKILLS_MOCK } from './acorex-connectivity-mock-acorex-connectivity-mock-CVAXxD06.mjs';
|
|
4
|
-
|
|
5
|
-
class AXQEmployeeSkillsListQuery {
|
|
6
|
-
async fetch(input) {
|
|
7
|
-
const { skillId, level, minYears, startDate, endDate, skip = 0, take = 10 } = input ?? {};
|
|
8
|
-
const sDate = startDate ? new Date(startDate) : undefined;
|
|
9
|
-
const eDate = endDate ? new Date(endDate) : undefined;
|
|
10
|
-
let data = EMPLOYEE_SKILLS_MOCK.map((r) => ({
|
|
11
|
-
id: r.id,
|
|
12
|
-
employeeId: r.employeeId,
|
|
13
|
-
employeeName: r.employee?.contact?.displayName,
|
|
14
|
-
skillId: r.skillId,
|
|
15
|
-
skillTitle: r.skill?.title ?? r.skillId,
|
|
16
|
-
level: r.level,
|
|
17
|
-
yearsOfExperience: r.yearsOfExperience ?? 0,
|
|
18
|
-
lastUsedDate: r.lastUsedDate,
|
|
19
|
-
}));
|
|
20
|
-
if (skillId)
|
|
21
|
-
data = data.filter((x) => x.skillId === skillId);
|
|
22
|
-
if (level)
|
|
23
|
-
data = data.filter((x) => x.level === level);
|
|
24
|
-
if (minYears != null)
|
|
25
|
-
data = data.filter((x) => (x.yearsOfExperience ?? 0) >= Number(minYears));
|
|
26
|
-
if (sDate)
|
|
27
|
-
data = data.filter((x) => x.lastUsedDate && new Date(x.lastUsedDate) >= sDate);
|
|
28
|
-
if (eDate)
|
|
29
|
-
data = data.filter((x) => x.lastUsedDate && new Date(x.lastUsedDate) <= eDate);
|
|
30
|
-
const total = data.length;
|
|
31
|
-
const items = data.slice(skip, skip + take);
|
|
32
|
-
return { items, total };
|
|
33
|
-
}
|
|
34
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXQEmployeeSkillsListQuery, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
35
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXQEmployeeSkillsListQuery, providedIn: 'root' }); }
|
|
36
|
-
}
|
|
37
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXQEmployeeSkillsListQuery, decorators: [{
|
|
38
|
-
type: Injectable,
|
|
39
|
-
args: [{
|
|
40
|
-
providedIn: 'root'
|
|
41
|
-
}]
|
|
42
|
-
}] });
|
|
43
|
-
class AXQEmployeeSkillsStatsQuery {
|
|
44
|
-
async fetch(input) {
|
|
45
|
-
const { skillId, level, minYears } = input ?? {};
|
|
46
|
-
let data = EMPLOYEE_SKILLS_MOCK;
|
|
47
|
-
if (skillId)
|
|
48
|
-
data = data.filter((x) => x.skillId === skillId);
|
|
49
|
-
if (level)
|
|
50
|
-
data = data.filter((x) => x.level === level);
|
|
51
|
-
if (minYears != null)
|
|
52
|
-
data = data.filter((x) => (x.yearsOfExperience ?? 0) >= Number(minYears));
|
|
53
|
-
const grouped = data.reduce((acc, cur) => {
|
|
54
|
-
const key = cur.skill?.title ?? cur.skillId;
|
|
55
|
-
acc[key] = (acc[key] ?? 0) + 1;
|
|
56
|
-
return acc;
|
|
57
|
-
}, {});
|
|
58
|
-
return grouped;
|
|
59
|
-
}
|
|
60
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXQEmployeeSkillsStatsQuery, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
61
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXQEmployeeSkillsStatsQuery, providedIn: 'root' }); }
|
|
62
|
-
}
|
|
63
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXQEmployeeSkillsStatsQuery, decorators: [{
|
|
64
|
-
type: Injectable,
|
|
65
|
-
args: [{
|
|
66
|
-
providedIn: 'root'
|
|
67
|
-
}]
|
|
68
|
-
}] });
|
|
69
|
-
class AXQEmployeeSkillsLevelsQuery {
|
|
70
|
-
async fetch(input) {
|
|
71
|
-
const { skillId, minYears } = input ?? {};
|
|
72
|
-
let data = EMPLOYEE_SKILLS_MOCK;
|
|
73
|
-
if (skillId)
|
|
74
|
-
data = data.filter((x) => x.skillId === skillId);
|
|
75
|
-
if (minYears != null)
|
|
76
|
-
data = data.filter((x) => (x.yearsOfExperience ?? 0) >= Number(minYears));
|
|
77
|
-
const levels = ['Beginner', 'Intermediate', 'Advanced', 'Expert'];
|
|
78
|
-
const grouped = data.reduce((acc, cur) => {
|
|
79
|
-
const key = cur.level && levels.includes(cur.level) ? cur.level : 'Unknown';
|
|
80
|
-
acc[key] = (acc[key] ?? 0) + 1;
|
|
81
|
-
return acc;
|
|
82
|
-
}, {});
|
|
83
|
-
// Ensure all known levels exist (0 if missing)
|
|
84
|
-
levels.forEach((lvl) => (grouped[lvl] = grouped[lvl] ?? 0));
|
|
85
|
-
return grouped;
|
|
86
|
-
}
|
|
87
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXQEmployeeSkillsLevelsQuery, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
88
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXQEmployeeSkillsLevelsQuery, providedIn: 'root' }); }
|
|
89
|
-
}
|
|
90
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXQEmployeeSkillsLevelsQuery, decorators: [{
|
|
91
|
-
type: Injectable,
|
|
92
|
-
args: [{
|
|
93
|
-
providedIn: 'root'
|
|
94
|
-
}]
|
|
95
|
-
}] });
|
|
96
|
-
class AXQEmployeeSkillsTrendQuery {
|
|
97
|
-
async fetch(input) {
|
|
98
|
-
const { startDate, endDate, skillId, level } = input ?? {};
|
|
99
|
-
const sDate = startDate ? new Date(startDate) : undefined;
|
|
100
|
-
const eDate = endDate ? new Date(endDate) : undefined;
|
|
101
|
-
let data = EMPLOYEE_SKILLS_MOCK
|
|
102
|
-
.filter((x) => (skillId ? x.skillId === skillId : true))
|
|
103
|
-
.filter((x) => (level ? x.level === level : true))
|
|
104
|
-
.filter((x) => (sDate ? (x.lastUsedDate && new Date(x.lastUsedDate) >= sDate) : true))
|
|
105
|
-
.filter((x) => (eDate ? (x.lastUsedDate && new Date(x.lastUsedDate) <= eDate) : true));
|
|
106
|
-
// Group by YYYY-MM from lastUsedDate and count occurrences
|
|
107
|
-
const counts = data.reduce((acc, cur) => {
|
|
108
|
-
const d = cur.lastUsedDate ? new Date(cur.lastUsedDate) : undefined;
|
|
109
|
-
const key = d ? `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, '0')}` : 'Unknown';
|
|
110
|
-
acc[key] = (acc[key] ?? 0) + 1;
|
|
111
|
-
return acc;
|
|
112
|
-
}, {});
|
|
113
|
-
// Convert to sorted array, ignoring 'Unknown'
|
|
114
|
-
return Object.entries(counts)
|
|
115
|
-
.filter(([k]) => k !== 'Unknown')
|
|
116
|
-
.sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0))
|
|
117
|
-
.map(([month, value]) => ({ month, value }));
|
|
118
|
-
}
|
|
119
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXQEmployeeSkillsTrendQuery, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
120
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXQEmployeeSkillsTrendQuery, providedIn: 'root' }); }
|
|
121
|
-
}
|
|
122
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXQEmployeeSkillsTrendQuery, decorators: [{
|
|
123
|
-
type: Injectable,
|
|
124
|
-
args: [{
|
|
125
|
-
providedIn: 'root'
|
|
126
|
-
}]
|
|
127
|
-
}] });
|
|
128
|
-
//#region ---- Percentage Queries ----
|
|
129
|
-
class AXQEmployeeSkillsSkillPercentagesQuery {
|
|
130
|
-
async fetch(input) {
|
|
131
|
-
const { skillId, level, minYears } = input ?? {};
|
|
132
|
-
let data = EMPLOYEE_SKILLS_MOCK;
|
|
133
|
-
if (skillId)
|
|
134
|
-
data = data.filter((x) => x.skillId === skillId);
|
|
135
|
-
if (level)
|
|
136
|
-
data = data.filter((x) => x.level === level);
|
|
137
|
-
if (minYears != null)
|
|
138
|
-
data = data.filter((x) => (x.yearsOfExperience ?? 0) >= Number(minYears));
|
|
139
|
-
const counts = data.reduce((acc, cur) => {
|
|
140
|
-
const key = cur.skill?.title ?? cur.skillId;
|
|
141
|
-
acc[key] = (acc[key] ?? 0) + 1;
|
|
142
|
-
return acc;
|
|
143
|
-
}, {});
|
|
144
|
-
const total = Object.values(counts).reduce((a, b) => a + b, 0) || 1;
|
|
145
|
-
const percentages = {};
|
|
146
|
-
Object.entries(counts).forEach(([k, v]) => {
|
|
147
|
-
percentages[k] = Math.round((v / total) * 100);
|
|
148
|
-
});
|
|
149
|
-
return percentages;
|
|
150
|
-
}
|
|
151
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXQEmployeeSkillsSkillPercentagesQuery, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
152
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXQEmployeeSkillsSkillPercentagesQuery, providedIn: 'root' }); }
|
|
153
|
-
}
|
|
154
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXQEmployeeSkillsSkillPercentagesQuery, decorators: [{
|
|
155
|
-
type: Injectable,
|
|
156
|
-
args: [{
|
|
157
|
-
providedIn: 'root'
|
|
158
|
-
}]
|
|
159
|
-
}] });
|
|
160
|
-
class AXQEmployeeSkillsLevelPercentagesQuery {
|
|
161
|
-
async fetch(input) {
|
|
162
|
-
const { skillId, minYears } = input ?? {};
|
|
163
|
-
let data = EMPLOYEE_SKILLS_MOCK;
|
|
164
|
-
if (skillId)
|
|
165
|
-
data = data.filter((x) => x.skillId === skillId);
|
|
166
|
-
if (minYears != null)
|
|
167
|
-
data = data.filter((x) => (x.yearsOfExperience ?? 0) >= Number(minYears));
|
|
168
|
-
const levels = ['Beginner', 'Intermediate', 'Advanced', 'Expert'];
|
|
169
|
-
const counts = data.reduce((acc, cur) => {
|
|
170
|
-
const key = cur.level && levels.includes(cur.level) ? cur.level : 'Unknown';
|
|
171
|
-
acc[key] = (acc[key] ?? 0) + 1;
|
|
172
|
-
return acc;
|
|
173
|
-
}, {});
|
|
174
|
-
// Ensure fixed level keys exist
|
|
175
|
-
levels.forEach((lvl) => (counts[lvl] = counts[lvl] ?? 0));
|
|
176
|
-
const total = levels.reduce((sum, lvl) => sum + (counts[lvl] ?? 0), 0) || 1;
|
|
177
|
-
const percentages = {};
|
|
178
|
-
levels.forEach((lvl) => {
|
|
179
|
-
percentages[lvl] = Math.round(((counts[lvl] ?? 0) / total) * 100);
|
|
180
|
-
});
|
|
181
|
-
return percentages;
|
|
182
|
-
}
|
|
183
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXQEmployeeSkillsLevelPercentagesQuery, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
184
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXQEmployeeSkillsLevelPercentagesQuery, providedIn: 'root' }); }
|
|
185
|
-
}
|
|
186
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXQEmployeeSkillsLevelPercentagesQuery, decorators: [{
|
|
187
|
-
type: Injectable,
|
|
188
|
-
args: [{
|
|
189
|
-
providedIn: 'root'
|
|
190
|
-
}]
|
|
191
|
-
}] });
|
|
192
|
-
|
|
193
|
-
export { AXQEmployeeSkillsLevelPercentagesQuery, AXQEmployeeSkillsLevelsQuery, AXQEmployeeSkillsListQuery, AXQEmployeeSkillsSkillPercentagesQuery, AXQEmployeeSkillsStatsQuery, AXQEmployeeSkillsTrendQuery };
|
|
194
|
-
//# sourceMappingURL=acorex-connectivity-mock-employee-skills.queries-DLQzhHUF.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-connectivity-mock-employee-skills.queries-DLQzhHUF.mjs","sources":["../tmp-esm2022/mock/lib/organization-management/reports/employee-skills.queries.js"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { EMPLOYEE_SKILLS_MOCK } from '../employee-skill/employee-skill.mock';\nimport * as i0 from \"@angular/core\";\nexport class AXQEmployeeSkillsListQuery {\n async fetch(input) {\n const { skillId, level, minYears, startDate, endDate, skip = 0, take = 10 } = input ?? {};\n const sDate = startDate ? new Date(startDate) : undefined;\n const eDate = endDate ? new Date(endDate) : undefined;\n let data = EMPLOYEE_SKILLS_MOCK.map((r) => ({\n id: r.id,\n employeeId: r.employeeId,\n employeeName: r.employee?.contact?.displayName,\n skillId: r.skillId,\n skillTitle: r.skill?.title ?? r.skillId,\n level: r.level,\n yearsOfExperience: r.yearsOfExperience ?? 0,\n lastUsedDate: r.lastUsedDate,\n }));\n if (skillId)\n data = data.filter((x) => x.skillId === skillId);\n if (level)\n data = data.filter((x) => x.level === level);\n if (minYears != null)\n data = data.filter((x) => (x.yearsOfExperience ?? 0) >= Number(minYears));\n if (sDate)\n data = data.filter((x) => x.lastUsedDate && new Date(x.lastUsedDate) >= sDate);\n if (eDate)\n data = data.filter((x) => x.lastUsedDate && new Date(x.lastUsedDate) <= eDate);\n const total = data.length;\n const items = data.slice(skip, skip + take);\n return { items, total };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.6\", ngImport: i0, type: AXQEmployeeSkillsListQuery, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.6\", ngImport: i0, type: AXQEmployeeSkillsListQuery, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.6\", ngImport: i0, type: AXQEmployeeSkillsListQuery, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }] });\nexport class AXQEmployeeSkillsStatsQuery {\n async fetch(input) {\n const { skillId, level, minYears } = input ?? {};\n let data = EMPLOYEE_SKILLS_MOCK;\n if (skillId)\n data = data.filter((x) => x.skillId === skillId);\n if (level)\n data = data.filter((x) => x.level === level);\n if (minYears != null)\n data = data.filter((x) => (x.yearsOfExperience ?? 0) >= Number(minYears));\n const grouped = data.reduce((acc, cur) => {\n const key = cur.skill?.title ?? cur.skillId;\n acc[key] = (acc[key] ?? 0) + 1;\n return acc;\n }, {});\n return grouped;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.6\", ngImport: i0, type: AXQEmployeeSkillsStatsQuery, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.6\", ngImport: i0, type: AXQEmployeeSkillsStatsQuery, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.6\", ngImport: i0, type: AXQEmployeeSkillsStatsQuery, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }] });\nexport class AXQEmployeeSkillsLevelsQuery {\n async fetch(input) {\n const { skillId, minYears } = input ?? {};\n let data = EMPLOYEE_SKILLS_MOCK;\n if (skillId)\n data = data.filter((x) => x.skillId === skillId);\n if (minYears != null)\n data = data.filter((x) => (x.yearsOfExperience ?? 0) >= Number(minYears));\n const levels = ['Beginner', 'Intermediate', 'Advanced', 'Expert'];\n const grouped = data.reduce((acc, cur) => {\n const key = cur.level && levels.includes(cur.level) ? cur.level : 'Unknown';\n acc[key] = (acc[key] ?? 0) + 1;\n return acc;\n }, {});\n // Ensure all known levels exist (0 if missing)\n levels.forEach((lvl) => (grouped[lvl] = grouped[lvl] ?? 0));\n return grouped;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.6\", ngImport: i0, type: AXQEmployeeSkillsLevelsQuery, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.6\", ngImport: i0, type: AXQEmployeeSkillsLevelsQuery, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.6\", ngImport: i0, type: AXQEmployeeSkillsLevelsQuery, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }] });\nexport class AXQEmployeeSkillsTrendQuery {\n async fetch(input) {\n const { startDate, endDate, skillId, level } = input ?? {};\n const sDate = startDate ? new Date(startDate) : undefined;\n const eDate = endDate ? new Date(endDate) : undefined;\n let data = EMPLOYEE_SKILLS_MOCK\n .filter((x) => (skillId ? x.skillId === skillId : true))\n .filter((x) => (level ? x.level === level : true))\n .filter((x) => (sDate ? (x.lastUsedDate && new Date(x.lastUsedDate) >= sDate) : true))\n .filter((x) => (eDate ? (x.lastUsedDate && new Date(x.lastUsedDate) <= eDate) : true));\n // Group by YYYY-MM from lastUsedDate and count occurrences\n const counts = data.reduce((acc, cur) => {\n const d = cur.lastUsedDate ? new Date(cur.lastUsedDate) : undefined;\n const key = d ? `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, '0')}` : 'Unknown';\n acc[key] = (acc[key] ?? 0) + 1;\n return acc;\n }, {});\n // Convert to sorted array, ignoring 'Unknown'\n return Object.entries(counts)\n .filter(([k]) => k !== 'Unknown')\n .sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0))\n .map(([month, value]) => ({ month, value }));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.6\", ngImport: i0, type: AXQEmployeeSkillsTrendQuery, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.6\", ngImport: i0, type: AXQEmployeeSkillsTrendQuery, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.6\", ngImport: i0, type: AXQEmployeeSkillsTrendQuery, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }] });\n//#region ---- Percentage Queries ----\nexport class AXQEmployeeSkillsSkillPercentagesQuery {\n async fetch(input) {\n const { skillId, level, minYears } = input ?? {};\n let data = EMPLOYEE_SKILLS_MOCK;\n if (skillId)\n data = data.filter((x) => x.skillId === skillId);\n if (level)\n data = data.filter((x) => x.level === level);\n if (minYears != null)\n data = data.filter((x) => (x.yearsOfExperience ?? 0) >= Number(minYears));\n const counts = data.reduce((acc, cur) => {\n const key = cur.skill?.title ?? cur.skillId;\n acc[key] = (acc[key] ?? 0) + 1;\n return acc;\n }, {});\n const total = Object.values(counts).reduce((a, b) => a + b, 0) || 1;\n const percentages = {};\n Object.entries(counts).forEach(([k, v]) => {\n percentages[k] = Math.round((v / total) * 100);\n });\n return percentages;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.6\", ngImport: i0, type: AXQEmployeeSkillsSkillPercentagesQuery, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.6\", ngImport: i0, type: AXQEmployeeSkillsSkillPercentagesQuery, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.6\", ngImport: i0, type: AXQEmployeeSkillsSkillPercentagesQuery, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }] });\nexport class AXQEmployeeSkillsLevelPercentagesQuery {\n async fetch(input) {\n const { skillId, minYears } = input ?? {};\n let data = EMPLOYEE_SKILLS_MOCK;\n if (skillId)\n data = data.filter((x) => x.skillId === skillId);\n if (minYears != null)\n data = data.filter((x) => (x.yearsOfExperience ?? 0) >= Number(minYears));\n const levels = ['Beginner', 'Intermediate', 'Advanced', 'Expert'];\n const counts = data.reduce((acc, cur) => {\n const key = cur.level && levels.includes(cur.level) ? cur.level : 'Unknown';\n acc[key] = (acc[key] ?? 0) + 1;\n return acc;\n }, {});\n // Ensure fixed level keys exist\n levels.forEach((lvl) => (counts[lvl] = counts[lvl] ?? 0));\n const total = levels.reduce((sum, lvl) => sum + (counts[lvl] ?? 0), 0) || 1;\n const percentages = {};\n levels.forEach((lvl) => {\n percentages[lvl] = Math.round(((counts[lvl] ?? 0) / total) * 100);\n });\n return percentages;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.6\", ngImport: i0, type: AXQEmployeeSkillsLevelPercentagesQuery, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.6\", ngImport: i0, type: AXQEmployeeSkillsLevelPercentagesQuery, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.6\", ngImport: i0, type: AXQEmployeeSkillsLevelPercentagesQuery, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1wbG95ZWUtc2tpbGxzLnF1ZXJpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nvbm5lY3Rpdml0eS9tb2NrL3NyYy9saWIvb3JnYW5pemF0aW9uLW1hbmFnZW1lbnQvcmVwb3J0cy9lbXBsb3llZS1za2lsbHMucXVlcmllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOztBQWlCN0UsTUFBTSxPQUFPLDBCQUEwQjtJQUNuQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQWdCO1FBQ3hCLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLEVBQUUsRUFBRSxHQUFHLEtBQUssSUFBSSxFQUFTLENBQUM7UUFFakcsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQzFELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUN0RCxJQUFJLElBQUksR0FBRyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDeEMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFO1lBQ1IsVUFBVSxFQUFFLENBQUMsQ0FBQyxVQUFVO1lBQ3hCLFlBQVksRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxXQUFXO1lBQzlDLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTztZQUNsQixVQUFVLEVB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QUFDLFNBQVMsQ0FBQztZQUM1RSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQy9CLE9BQU8sR0FBRyxDQUFDO1FBQ2YsQ0FBQyxFQUFFLEVBQTRCLENBQUMsQ0FBQztRQUVqQyxnQ0FBZ0M7UUFDaEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFMUQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUUsTUFBTSxXQUFXLEdBQTJCLEVBQUUsQ0FBQztRQUMvQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDbkIsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUN0RSxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sV0FBVyxDQUFDO0lBQ3ZCLENBQUM7OEdBeEJRLHNDQUFzQztrSEFBdEMsc0NBQXNDLGNBRm5DLE1BQU07OzJGQUVULHNDQUFzQztrQkFIbEQsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUFF1ZXJ5IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9ydW50aW1lJztcbmltcG9ydCB7IEVNUExPWUVFX1NLSUxMU19NT0NLIH0gZnJvbSAnLi4vZW1wbG95ZWUtc2tpbGwvZW1wbG95ZWUtc2tpbGwubW9jayc7XG5cbi8vI3JlZ2lvbiAtLS0tICAgUXVlcmllcyAgIC0tLS1cblxudHlwZSBMaXN0SW5wdXQgPSB7XG4gICAgc2tpbGxJZD86IHN0cmluZztcbiAgICBsZXZlbD86IHN0cmluZztcbiAgICBtaW5ZZWFycz86IG51bWJlcjtcbiAgICBzdGFydERhdGU/OiBEYXRlIHwgc3RyaW5nO1xuICAgIGVuZERhdGU/OiBEYXRlIHwgc3RyaW5nO1xuICAgIHNraXA/OiBudW1iZXI7XG4gICAgdGFrZT86IG51bWJlcjtcbn07XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQVhRRW1wbG95ZWVTa2lsbHNMaXN0UXVlcnkgaW1wbGVtZW50cyBBWFBRdWVyeTxMaXN0SW5wdXQsIHsgaXRlbXM6IGFueVtdOyB0b3RhbDogbnVtYmVyIH0+IHtcbiAgICBhc3luYyBmZXRjaChpbnB1dDogTGlzdElucHV0KTogUHJvbWlzZTx7IGl0ZW1zOiBhbnlbXTsgdG90YWw6IG51bWJlciB9PiB7XG4gICAgICAgIGNvbnN0IHsgc2tpbGxJZCwgbGV2ZWwsIG1pblllYXJzLCBzdGFydERhdGUsIGVuZERhdGUsIHNraXAgPSAwLCB0YWtlID0gMTAgfSA9IGlucHV0ID8/IHt9IGFzIGFueTtcblxuICAgICAgICBjb25zdCBzRGF0ZSA9IHN0YXJ0RGF0ZSA/IG5ldyBEYXRlKHN0YXJ0RGF0ZSkgOiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGVEYXRlID0gZW5kRGF0ZSA/IG5ldyBEYXRlKGVuZERhdGUpIDogdW5kZWZpbmVkO1xuICAgICAgICBsZXQgZGF0YSA9IEVNUExPWUVFX1NLSUxMU19NT0NLLm1hcCgocikgPT4gKHtcbiAgICAgICAgICAgIGlkOiByLmlkLFxuICAgICAgICAgICAgZW1wbG95ZWVJZDogci5lbXBsb3llZUlkLFxuICAgICAgICAgICAgZW1wbG95ZWVOYW1lOiByLmVtcGxveWVlPy5jb250YWN0Py5kaXNwbGF5TmFtZSxcbiAgICAgICAgICAgIHNraWxsSWQ6IHIuc2tpbGxJZCxcbiAgICAgICAgICAgIHNraWxsVGl0bGU6IHIuc2tpbGw/LnRpdGxlID8/IHIuc2tpbGxJZCxcbiAgICAgICAgICAgIGxldmVsOiByLmxldmVsLFxuICAgICAgICAgICAgeWVhcnNPZkV4cGVyaWVuY2U6IHIueWVhcnNPZkV4cGVyaWVuY2UgPz8gMCxcbiAgICAgICAgICAgIGxhc3RVc2VkRGF0ZTogci5sYXN0VXNlZERhdGUsXG4gICAgICAgIH0pKTtcblxuICAgICAgICBpZiAoc2tpbGxJZCkgZGF0YSA9IGRhdGEuZmlsdGVyKCh4KSA9PiB4LnNraWxsSWQgPT09IHNraWxsSWQpO1xuICAgICAgICBpZiAobGV2ZWwpIGRhdGEgPSBkYXRhLmZpbHRlcigoeCkgPT4geC5sZXZlbCA9PT0gbGV2ZWwpO1xuICAgICAgICBpZiAobWluWWVhcnMgIT0gbnVsbCkgZGF0YSA9IGRhdGEuZmlsdGVyKCh4KSA9PiAoeC55ZWFyc09mRXhwZXJpZW5jZSA/PyAwKSA+PSBOdW1iZXIobWluWWVhcnMpKTtcbiAgICAgICAgaWYgKHNEYXRlKSBkYXRhID0gZGF0YS5maWx0ZXIoKHgpID0+IHgubGFzdFVzZWREYXRlICYmIG5ldyBEYXRlKHgubGFzdFVzZWREYXRlKSA+PSBzRGF0ZSk7XG4gICAgICAgIGlmIChlRGF0ZSkgZGF0YSA9IGRhdGEuZmlsdGVyKCh4KSA9PiB4Lmxhc3RVc2VkRGF0ZSAmJiBuZXcgRGF0ZSh4Lmxhc3RVc2VkRGF0ZSkgPD0gZURhdGUpO1xuXG4gICAgICAgIGNvbnN0IHRvdGFsID0gZGF0YS5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gZGF0YS5zbGljZShza2lwLCBza2lwICsgdGFrZSk7XG4gICAgICAgIHJldHVybiB7IGl0ZW1zLCB0b3RhbCB9O1xuICAgIH1cbn1cblxudHlwZSBTdGF0c0lucHV0ID0ge1xuICAgIHNraWxsSWQ/OiBzdHJpbmc7XG4gICAgbGV2ZWw/OiBzdHJpbmc7XG4gICAgbWluWWVhcnM/OiBudW1iZXI7XG59O1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEFYUUVtcGxveWVlU2tpbGxzU3RhdHNRdWVyeSBpbXBsZW1lbnRzIEFYUFF1ZXJ5PFN0YXRzSW5wdXQsIFJlY29yZDxzdHJpbmcsIG51bWJlcj4+IHtcbiAgICBhc3luYyBmZXRjaChpbnB1dDogU3RhdHNJbnB1dCk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgbnVtYmVyPj4ge1xuICAgICAgICBjb25zdCB7IHNraWxsSWQsIGxldmVsLCBtaW5ZZWFycyB9ID0gaW5wdXQgPz8ge30gYXMgYW55O1xuICAgICAgICBsZXQgZGF0YSA9IEVNUExPWUVFX1NLSUxMU19NT0NLO1xuXG4gICAgICAgIGlmIChza2lsbElkKSBkYXRhID0gZGF0YS5maWx0ZXIoKHgpID0+IHguc2tpbGxJZCA9PT0gc2tpbGxJZCk7XG4gICAgICAgIGlmIChsZXZlbCkgZGF0YSA9IGRhdGEuZmlsdGVyKCh4KSA9PiB4LmxldmVsID09PSBsZXZlbCk7XG4gICAgICAgIGlmIChtaW5ZZWFycyAhPSBudWxsKSBkYXRhID0gZGF0YS5maWx0ZXIoKHgpID0+ICh4LnllYXJzT2ZFeHBlcmllbmNlID8/IDApID49IE51bWJlcihtaW5ZZWFycykpO1xuXG4gICAgICAgIGNvbnN0IGdyb3VwZWQgPSBkYXRhLnJlZHVjZSgoYWNjOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+LCBjdXIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IGN1ci5za2lsbD8udGl0bGUgPz8gY3VyLnNraWxsSWQ7XG4gICAgICAgICAgICBhY2Nba2V5XSA9IChhY2Nba2V5XSA/PyAwKSArIDE7XG4gICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LCB7fSk7XG5cbiAgICAgICAgcmV0dXJuIGdyb3VwZWQ7XG4gICAgfVxufVxuXG50eXBlIExldmVsc0lucHV0ID0ge1xuICAgIHNraWxsSWQ/OiBzdHJpbmc7XG4gICAgbWluWWVhcnM/OiBudW1iZXI7XG59O1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEFYUUVtcGxveWVlU2tpbGxzTGV2ZWxzUXVlcnkgaW1wbGVtZW50cyBBWFBRdWVyeTxMZXZlbHNJbnB1dCwgUmVjb3JkPHN0cmluZywgbnVtYmVyPj4ge1xuICAgIGFzeW5jIGZldGNoKGlucHV0OiBMZXZlbHNJbnB1dCk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgbnVtYmVyPj4ge1xuICAgICAgICBjb25zdCB7IHNraWxsSWQsIG1pblllYXJzIH0gPSBpbnB1dCA/PyB7fSBhcyBhbnk7XG4gICAgICAgIGxldCBkYXRhID0gRU1QTE9ZRUVfU0tJTExTX01PQ0s7XG5cbiAgICAgICAgaWYgKHNraWxsSWQpIGRhdGEgPSBkYXRhLmZpbHRlcigoeCkgPT4geC5za2lsbElkID09PSBza2lsbElkKTtcbiAgICAgICAgaWYgKG1pblllYXJzICE9IG51bGwpIGRhdGEgPSBkYXRhLmZpbHRlcigoeCkgPT4gKHgueWVhcnNPZkV4cGVyaWVuY2UgPz8gMCkgPj0gTnVtYmVyKG1pblllYXJzKSk7XG5cbiAgICAgICAgY29uc3QgbGV2ZWxzID0gWydCZWdpbm5lcicsICdJbnRlcm1lZGlhdGUnLCAnQWR2YW5jZWQnLCAnRXhwZXJ0J107XG4gICAgICAgIGNvbnN0IGdyb3VwZWQgPSBkYXRhLnJlZHVjZSgoYWNjOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+LCBjdXIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IGN1ci5sZXZlbCAmJiBsZXZlbHMuaW5jbHVkZXMoY3VyLmxldmVsKSA/IGN1ci5sZXZlbCA6ICdVbmtub3duJztcbiAgICAgICAgICAgIGFjY1trZXldID0gKGFjY1trZXldID8/IDApICsgMTtcbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sIHt9KTtcbiAgICAgICAgLy8gRW5zdXJlIGFsbCBrbm93biBsZXZlbHMgZXhpc3QgKDAgaWYgbWlzc2luZylcbiAgICAgICAgbGV2ZWxzLmZvckVhY2goKGx2bCkgPT4gKGdyb3VwZWRbbHZsXSA9IGdyb3VwZWRbbHZsXSA/PyAwKSk7XG4gICAgICAgIHJldHVybiBncm91cGVkO1xuICAgIH1cbn1cblxudHlwZSBUcmVuZElucHV0ID0ge1xuICAgIHN0YXJ0RGF0ZT86IERhdGUgfCBzdHJpbmc7XG4gICAgZW5kRGF0ZT86IERhdGUgfCBzdHJpbmc7XG4gICAgc2tpbGxJZD86IHN0cmluZztcbiAgICBsZXZlbD86IHN0cmluZztcbn07XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQVhRRW1wbG95ZWVTa2lsbHNUcmVuZFF1ZXJ5IGltcGxlbWVudHMgQVhQUXVlcnk8VHJlbmRJbnB1dCwgeyBtb250aDogc3RyaW5nOyB2YWx1ZTogbnVtYmVyIH1bXT4ge1xuICAgIGFzeW5jIGZldGNoKGlucHV0OiBUcmVuZElucHV0KTogUHJvbWlzZTx7IG1vbnRoOiBzdHJpbmc7IHZhbHVlOiBudW1iZXIgfVtdPiB7XG4gICAgICAgIGNvbnN0IHsgc3RhcnREYXRlLCBlbmREYXRlLCBza2lsbElkLCBsZXZlbCB9ID0gaW5wdXQgPz8ge30gYXMgYW55O1xuICAgICAgICBjb25zdCBzRGF0ZSA9IHN0YXJ0RGF0ZSA/IG5ldyBEYXRlKHN0YXJ0RGF0ZSkgOiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGVEYXRlID0gZW5kRGF0ZSA/IG5ldyBEYXRlKGVuZERhdGUpIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIGxldCBkYXRhID0gRU1QTE9ZRUVfU0tJTExTX01PQ0tcbiAgICAgICAgICAgIC5maWx0ZXIoKHgpID0+IChza2lsbElkID8geC5za2lsbElkID09PSBza2lsbElkIDogdHJ1ZSkpXG4gICAgICAgICAgICAuZmlsdGVyKCh4KSA9PiAobGV2ZWwgPyB4LmxldmVsID09PSBsZXZlbCA6IHRydWUpKVxuICAgICAgICAgICAgLmZpbHRlcigoeCkgPT4gKHNEYXRlID8gKHgubGFzdFVzZWREYXRlICYmIG5ldyBEYXRlKHgubGFzdFVzZWREYXRlKSA+PSBzRGF0ZSkgOiB0cnVlKSlcbiAgICAgICAgICAgIC5maWx0ZXIoKHgpID0+IChlRGF0ZSA/ICh4Lmxhc3RVc2VkRGF0ZSAmJiBuZXcgRGF0ZSh4Lmxhc3RVc2VkRGF0ZSkgPD0gZURhdGUpIDogdHJ1ZSkpO1xuXG4gICAgICAgIC8vIEdyb3VwIGJ5IFlZWVktTU0gZnJvbSBsYXN0VXNlZERhdGUgYW5kIGNvdW50IG9jY3VycmVuY2VzXG4gICAgICAgIGNvbnN0IGNvdW50cyA9IGRhdGEucmVkdWNlKChhY2M6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4sIGN1cikgPT4ge1xuICAgICAgICAgICAgY29uc3QgZCA9IGN1ci5sYXN0VXNlZERhdGUgPyBuZXcgRGF0ZShjdXIubGFzdFVzZWREYXRlKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IGQgPyBgJHtkLmdldEZ1bGxZZWFyKCl9LSR7U3RyaW5nKGQuZ2V0TW9udGgoKSArIDEpLnBhZFN0YXJ0KDIsICcwJyl9YCA6ICdVbmtub3duJztcbiAgICAgICAgICAgIGFjY1trZXldID0gKGFjY1trZXldID8/IDApICsgMTtcbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sIHt9IGFzIFJlY29yZDxzdHJpbmcsIG51bWJlcj4pO1xuXG4gICAgICAgIC8vIENvbnZlcnQgdG8gc29ydGVkIGFycmF5LCBpZ25vcmluZyAnVW5rbm93bidcbiAgICAgICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGNvdW50cylcbiAgICAgICAgICAgIC5maWx0ZXIoKFtrXSkgPT4gayAhPT0gJ1Vua25vd24nKVxuICAgICAgICAgICAgLnNvcnQoKFthXSwgW2JdKSA9PiAoYSA8IGIgPyAtMSA6IGEgPiBiID8gMSA6IDApKVxuICAgICAgICAgICAgLm1hcCgoW21vbnRoLCB2YWx1ZV0pID0+ICh7IG1vbnRoLCB2YWx1ZSB9KSk7XG4gICAgfVxufVxuXG4vLyNyZWdpb24gLS0tLSAgIFBlcmNlbnRhZ2UgUXVlcmllcyAgIC0tLS1cblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBWFFFbXBsb3llZVNraWxsc1NraWxsUGVyY2VudGFnZXNRdWVyeSBpbXBsZW1lbnRzIEFYUFF1ZXJ5PFN0YXRzSW5wdXQsIFJlY29yZDxzdHJpbmcsIG51bWJlcj4+IHtcbiAgICBhc3luYyBmZXRjaChpbnB1dDogU3RhdHNJbnB1dCk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgbnVtYmVyPj4ge1xuICAgICAgICBjb25zdCB7IHNraWxsSWQsIGxldmVsLCBtaW5ZZWFycyB9ID0gaW5wdXQgPz8gKHt9IGFzIGFueSk7XG4gICAgICAgIGxldCBkYXRhID0gRU1QTE9ZRUVfU0tJTExTX01PQ0s7XG5cbiAgICAgICAgaWYgKHNraWxsSWQpIGRhdGEgPSBkYXRhLmZpbHRlcigoeCkgPT4geC5za2lsbElkID09PSBza2lsbElkKTtcbiAgICAgICAgaWYgKGxldmVsKSBkYXRhID0gZGF0YS5maWx0ZXIoKHgpID0+IHgubGV2ZWwgPT09IGxldmVsKTtcbiAgICAgICAgaWYgKG1pblllYXJzICE9IG51bGwpIGRhdGEgPSBkYXRhLmZpbHRlcigoeCkgPT4gKHgueWVhcnNPZkV4cGVyaWVuY2UgPz8gMCkgPj0gTnVtYmVyKG1pblllYXJzKSk7XG5cbiAgICAgICAgY29uc3QgY291bnRzID0gZGF0YS5yZWR1Y2UoKGFjYzogUmVjb3JkPHN0cmluZywgbnVtYmVyPiwgY3VyKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBjdXIuc2tpbGw/LnRpdGxlID8/IGN1ci5za2lsbElkO1xuICAgICAgICAgICAgYWNjW2tleV0gPSAoYWNjW2tleV0gPz8gMCkgKyAxO1xuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfSwge30gYXMgUmVjb3JkPHN0cmluZywgbnVtYmVyPik7XG5cbiAgICAgICAgY29uc3QgdG90YWwgPSBPYmplY3QudmFsdWVzKGNvdW50cykucmVkdWNlKChhLCBiKSA9PiBhICsgYiwgMCkgfHwgMTtcbiAgICAgICAgY29uc3QgcGVyY2VudGFnZXM6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7fTtcbiAgICAgICAgT2JqZWN0LmVudHJpZXMoY291bnRzKS5mb3JFYWNoKChbaywgdl0pID0+IHtcbiAgICAgICAgICAgIHBlcmNlbnRhZ2VzW2tdID0gTWF0aC5yb3VuZCgodiAvIHRvdGFsKSAqIDEwMCk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcGVyY2VudGFnZXM7XG4gICAgfVxufVxuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEFYUUVtcGxveWVlU2tpbGxzTGV2ZWxQZXJjZW50YWdlc1F1ZXJ5IGltcGxlbWVudHMgQVhQUXVlcnk8TGV2ZWxzSW5wdXQsIFJlY29yZDxzdHJpbmcsIG51bWJlcj4+IHtcbiAgICBhc3luYyBmZXRjaChpbnB1dDogTGV2ZWxzSW5wdXQpOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIG51bWJlcj4+IHtcbiAgICAgICAgY29uc3QgeyBza2lsbElkLCBtaW5ZZWFycyB9ID0gaW5wdXQgPz8gKHt9IGFzIGFueSk7XG4gICAgICAgIGxldCBkYXRhID0gRU1QTE9ZRUVfU0tJTExTX01PQ0s7XG5cbiAgICAgICAgaWYgKHNraWxsSWQpIGRhdGEgPSBkYXRhLmZpbHRlcigoeCkgPT4geC5za2lsbElkID09PSBza2lsbElkKTtcbiAgICAgICAgaWYgKG1pblllYXJzICE9IG51bGwpIGRhdGEgPSBkYXRhLmZpbHRlcigoeCkgPT4gKHgueWVhcnNPZkV4cGVyaWVuY2UgPz8gMCkgPj0gTnVtYmVyKG1pblllYXJzKSk7XG5cbiAgICAgICAgY29uc3QgbGV2ZWxzID0gWydCZWdpbm5lcicsICdJbnRlcm1lZGlhdGUnLCAnQWR2YW5jZWQnLCAnRXhwZXJ0J107XG4gICAgICAgIGNvbnN0IGNvdW50cyA9IGRhdGEucmVkdWNlKChhY2M6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4sIGN1cikgPT4ge1xuICAgICAgICAgICAgY29uc3Qga2V5ID0gY3VyLmxldmVsICYmIGxldmVscy5pbmNsdWRlcyhjdXIubGV2ZWwpID8gY3VyLmxldmVsIDogJ1Vua25vd24nO1xuICAgICAgICAgICAgYWNjW2tleV0gPSAoYWNjW2tleV0gPz8gMCkgKyAxO1xuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfSwge30gYXMgUmVjb3JkPHN0cmluZywgbnVtYmVyPik7XG5cbiAgICAgICAgLy8gRW5zdXJlIGZpeGVkIGxldmVsIGtleXMgZXhpc3RcbiAgICAgICAgbGV2ZWxzLmZvckVhY2goKGx2bCkgPT4gKGNvdW50c1tsdmxdID0gY291bnRzW2x2bF0gPz8gMCkpO1xuXG4gICAgICAgIGNvbnN0IHRvdGFsID0gbGV2ZWxzLnJlZHVjZSgoc3VtLCBsdmwpID0+IHN1bSArIChjb3VudHNbbHZsXSA/PyAwKSwgMCkgfHwgMTtcbiAgICAgICAgY29uc3QgcGVyY2VudGFnZXM6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7fTtcbiAgICAgICAgbGV2ZWxzLmZvckVhY2goKGx2bCkgPT4ge1xuICAgICAgICAgICAgcGVyY2VudGFnZXNbbHZsXSA9IE1hdGgucm91bmQoKChjb3VudHNbbHZsXSA/PyAwKSAvIHRvdGFsKSAqIDEwMCk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcGVyY2VudGFnZXM7XG4gICAgfVxufVxuXG4vLyNlbmRyZWdpb25cblxuLy8jZW5kcmVnaW9uXG5cblxuIl19"],"names":[],"mappings":"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"}
|