@falkenslab/moodle-driver 0.4.0 → 0.5.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/README.md +3 -2
- package/dist/areas/activities/build.d.ts +47 -10
- package/dist/areas/activities/build.js +157 -24
- package/dist/areas/activities/build.js.map +1 -1
- package/dist/areas/activities/conditions.d.ts +77 -0
- package/dist/areas/activities/conditions.js +216 -0
- package/dist/areas/activities/conditions.js.map +1 -0
- package/dist/areas/activities/content.d.ts +3 -0
- package/dist/areas/activities/content.js +1 -0
- package/dist/areas/activities/content.js.map +1 -1
- package/dist/areas/assignments/grader.d.ts +32 -0
- package/dist/areas/assignments/grader.js +66 -2
- package/dist/areas/assignments/grader.js.map +1 -1
- package/dist/areas/assignments/grading.d.ts +69 -6
- package/dist/areas/assignments/grading.js +173 -13
- package/dist/areas/assignments/grading.js.map +1 -1
- package/dist/areas/assignments/student.d.ts +14 -0
- package/dist/areas/assignments/student.js +43 -2
- package/dist/areas/assignments/student.js.map +1 -1
- package/dist/areas/backup/backup.d.ts +86 -0
- package/dist/areas/backup/backup.js +368 -0
- package/dist/areas/backup/backup.js.map +1 -0
- package/dist/areas/calendar/calendar.d.ts +27 -0
- package/dist/areas/calendar/calendar.js +115 -9
- package/dist/areas/calendar/calendar.js.map +1 -1
- package/dist/areas/completion/completion.d.ts +3 -0
- package/dist/areas/completion/completion.js.map +1 -1
- package/dist/areas/courses/list.d.ts +2 -0
- package/dist/areas/courses/list.js.map +1 -1
- package/dist/areas/courses/reset.d.ts +51 -0
- package/dist/areas/courses/reset.js +123 -0
- package/dist/areas/courses/reset.js.map +1 -0
- package/dist/areas/courses/state.d.ts +17 -0
- package/dist/areas/courses/state.js +37 -6
- package/dist/areas/courses/state.js.map +1 -1
- package/dist/areas/courses/structure.d.ts +14 -2
- package/dist/areas/courses/structure.js +11 -5
- package/dist/areas/courses/structure.js.map +1 -1
- package/dist/areas/forums/discussions.d.ts +8 -0
- package/dist/areas/forums/discussions.js +10 -0
- package/dist/areas/forums/discussions.js.map +1 -1
- package/dist/areas/forums/grading.d.ts +49 -0
- package/dist/areas/forums/grading.js +125 -0
- package/dist/areas/forums/grading.js.map +1 -0
- package/dist/areas/forums/posts.d.ts +37 -0
- package/dist/areas/forums/posts.js +141 -6
- package/dist/areas/forums/posts.js.map +1 -1
- package/dist/areas/grades/export.d.ts +38 -0
- package/dist/areas/grades/export.js +88 -0
- package/dist/areas/grades/export.js.map +1 -0
- package/dist/areas/grades/gradebook.d.ts +50 -0
- package/dist/areas/grades/gradebook.js +120 -0
- package/dist/areas/grades/gradebook.js.map +1 -1
- package/dist/areas/grades/singleview.d.ts +39 -0
- package/dist/areas/grades/singleview.js +186 -0
- package/dist/areas/grades/singleview.js.map +1 -0
- package/dist/areas/h5p/h5p.d.ts +2 -0
- package/dist/areas/h5p/h5p.js +12 -7
- package/dist/areas/h5p/h5p.js.map +1 -1
- package/dist/areas/lessons/lessons.d.ts +1 -0
- package/dist/areas/lessons/lessons.js.map +1 -1
- package/dist/areas/messages/messages.d.ts +36 -1
- package/dist/areas/messages/messages.js +60 -4
- package/dist/areas/messages/messages.js.map +1 -1
- package/dist/areas/participants/enrolments.d.ts +60 -0
- package/dist/areas/participants/enrolments.js +218 -0
- package/dist/areas/participants/enrolments.js.map +1 -0
- package/dist/areas/participants/groups.d.ts +75 -0
- package/dist/areas/participants/groups.js +201 -0
- package/dist/areas/participants/groups.js.map +1 -0
- package/dist/areas/participants/methods.d.ts +56 -0
- package/dist/areas/participants/methods.js +154 -0
- package/dist/areas/participants/methods.js.map +1 -0
- package/dist/areas/participants/participants.d.ts +11 -0
- package/dist/areas/participants/participants.js +24 -19
- package/dist/areas/participants/participants.js.map +1 -1
- package/dist/areas/questions/banks.d.ts +36 -1
- package/dist/areas/questions/banks.js +140 -17
- package/dist/areas/questions/banks.js.map +1 -1
- package/dist/areas/quizzes/attempts.d.ts +2 -0
- package/dist/areas/quizzes/attempts.js +9 -0
- package/dist/areas/quizzes/attempts.js.map +1 -1
- package/dist/areas/quizzes/grading.d.ts +50 -0
- package/dist/areas/quizzes/grading.js +131 -0
- package/dist/areas/quizzes/grading.js.map +1 -0
- package/dist/areas/quizzes/results.d.ts +3 -0
- package/dist/areas/quizzes/results.js +2 -1
- package/dist/areas/quizzes/results.js.map +1 -1
- package/dist/areas/quizzes/structure.d.ts +65 -9
- package/dist/areas/quizzes/structure.js +222 -23
- package/dist/areas/quizzes/structure.js.map +1 -1
- package/dist/areas/ratings/ratings.d.ts +26 -0
- package/dist/areas/ratings/ratings.js +108 -0
- package/dist/areas/ratings/ratings.js.map +1 -0
- package/dist/areas/reports/dates.d.ts +18 -0
- package/dist/areas/reports/dates.js +134 -0
- package/dist/areas/reports/dates.js.map +1 -0
- package/dist/areas/reports/reports.d.ts +143 -0
- package/dist/areas/reports/reports.js +267 -0
- package/dist/areas/reports/reports.js.map +1 -0
- package/dist/areas/scorm/scorm.d.ts +1 -0
- package/dist/areas/scorm/scorm.js.map +1 -1
- package/dist/areas/site/users.d.ts +7 -1
- package/dist/areas/site/users.js +9 -2
- package/dist/areas/site/users.js.map +1 -1
- package/dist/areas/surveys/choice.d.ts +2 -0
- package/dist/areas/surveys/choice.js +6 -3
- package/dist/areas/surveys/choice.js.map +1 -1
- package/dist/areas/surveys/surveys.d.ts +3 -0
- package/dist/areas/surveys/surveys.js +1 -0
- package/dist/areas/surveys/surveys.js.map +1 -1
- package/dist/areas/workshops/workshops.d.ts +133 -0
- package/dist/areas/workshops/workshops.js +335 -0
- package/dist/areas/workshops/workshops.js.map +1 -0
- package/dist/browser/background.d.ts +43 -0
- package/dist/browser/background.js +164 -0
- package/dist/browser/background.js.map +1 -0
- package/dist/browser/host.d.ts +30 -0
- package/dist/browser/host.js +373 -0
- package/dist/browser/host.js.map +1 -0
- package/dist/browser/manager.d.ts +9 -0
- package/dist/browser/manager.js +8 -0
- package/dist/browser/manager.js.map +1 -1
- package/dist/categories.d.ts +1 -0
- package/dist/categories.js +67 -0
- package/dist/categories.js.map +1 -1
- package/dist/cli/args.d.ts +8 -0
- package/dist/cli/args.js +49 -0
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/background.d.ts +23 -0
- package/dist/cli/background.js +128 -0
- package/dist/cli/background.js.map +1 -0
- package/dist/cli/command.d.ts +66 -0
- package/dist/cli/command.js +328 -0
- package/dist/cli/command.js.map +1 -0
- package/dist/cli/commands.generated.js +2636 -578
- package/dist/cli/commands.generated.js.map +1 -1
- package/dist/cli/config.d.ts +2 -0
- package/dist/cli/config.js +2 -0
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/main.js +30 -10
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/run.d.ts +3 -14
- package/dist/cli/run.js +9 -185
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/shell.d.ts +9 -0
- package/dist/cli/shell.js +233 -0
- package/dist/cli/shell.js.map +1 -0
- package/dist/client.d.ts +71 -8
- package/dist/client.js +75 -8
- package/dist/client.js.map +1 -1
- package/dist/core/errors.d.ts +1 -1
- package/dist/core/errors.js.map +1 -1
- package/dist/core/files.d.ts +5 -0
- package/dist/core/files.js +7 -3
- package/dist/core/files.js.map +1 -1
- package/dist/core/forms.d.ts +33 -3
- package/dist/core/forms.js +105 -8
- package/dist/core/forms.js.map +1 -1
- package/dist/core/http.d.ts +7 -0
- package/dist/core/http.js +28 -7
- package/dist/core/http.js.map +1 -1
- package/dist/core/login.d.ts +3 -0
- package/dist/core/login.js +2 -0
- package/dist/core/login.js.map +1 -1
- package/dist/core/session.d.ts +12 -1
- package/dist/core/session.js +12 -1
- package/dist/core/session.js.map +1 -1
- package/dist/index.d.ts +35 -11
- package/dist/index.js +32 -12
- package/dist/index.js.map +1 -1
- package/dist/internals.d.ts +9 -1
- package/dist/internals.js +9 -4
- package/dist/internals.js.map +1 -1
- package/dist/options.d.ts +2 -0
- package/dist/options.js.map +1 -1
- package/dist/testing/fakeMoodle.d.ts +9 -2
- package/dist/testing/fakeMoodle.js +5 -3
- package/dist/testing/fakeMoodle.js.map +1 -1
- package/dist/testing/index.d.ts +7 -0
- package/dist/testing/index.js.map +1 -1
- package/package.json +2 -1
|
@@ -17,15 +17,21 @@ declare const AGGREGATION_CODES: {
|
|
|
17
17
|
readonly "mean-with-extra-credits": 12;
|
|
18
18
|
readonly natural: 13;
|
|
19
19
|
};
|
|
20
|
+
/** How a grade category computes its total from what it holds (one of `GRADE_AGGREGATIONS`). */
|
|
20
21
|
export type GradeAggregation = keyof typeof AGGREGATION_CODES;
|
|
22
|
+
/** The aggregations a grade category can use, as the driver names Moodle's. */
|
|
21
23
|
export declare const GRADE_AGGREGATIONS: GradeAggregation[];
|
|
24
|
+
/** A column of the grader report: a grade item, a category's total or the course's. */
|
|
22
25
|
export interface GradeColumn {
|
|
26
|
+
/** The grade item's id. */
|
|
23
27
|
id: number;
|
|
24
28
|
name: string;
|
|
25
29
|
kind: "item" | "category" | "course";
|
|
30
|
+
/** For an activity's item, the activity's course module id and module. */
|
|
26
31
|
activityId?: number;
|
|
27
32
|
activityType?: string;
|
|
28
33
|
}
|
|
34
|
+
/** Everyone's grades in a course, as `graderReport` reads them: a row per person, a grade per column. */
|
|
29
35
|
export interface GraderReport {
|
|
30
36
|
columns: GradeColumn[];
|
|
31
37
|
/** Grades as the report shows them ("-" left out). */
|
|
@@ -47,6 +53,7 @@ export declare function readGraderReport(page: Page): Promise<GraderReport>;
|
|
|
47
53
|
export declare function graderReport(context: BrowserContext, siteUrl: string, courseId: number, { group }?: {
|
|
48
54
|
group?: number;
|
|
49
55
|
}): Promise<GraderReport>;
|
|
56
|
+
/** A grade category of a course's gradebook, as its setup shows it (`gradebookSetup`). */
|
|
50
57
|
export interface GradebookCategory {
|
|
51
58
|
id: number;
|
|
52
59
|
/** The category's own grade item (its total). */
|
|
@@ -58,6 +65,7 @@ export interface GradebookCategory {
|
|
|
58
65
|
/** Its weight in its parent, in percent, where the parent aggregates with weights. */
|
|
59
66
|
weight?: number;
|
|
60
67
|
}
|
|
68
|
+
/** A grade item of a course's gradebook, as its setup shows it (`gradebookSetup`). */
|
|
61
69
|
export interface GradebookItem {
|
|
62
70
|
id: number;
|
|
63
71
|
name: string;
|
|
@@ -101,4 +109,46 @@ export declare function addGradeCategory(context: BrowserContext, siteUrl: strin
|
|
|
101
109
|
changed: string;
|
|
102
110
|
category?: GradebookCategory;
|
|
103
111
|
}>;
|
|
112
|
+
/**
|
|
113
|
+
* Adds a manual grade item (one graded in the gradebook, not by an activity): out of `maxGrade`
|
|
114
|
+
* (Moodle's default, 100, when left out) or on a scale (`scaleId`), at the course's top level or in
|
|
115
|
+
* `categoryId`, hidden from students when asked. Returns it as the setup shows it.
|
|
116
|
+
*/
|
|
117
|
+
export declare function addGradeItem(context: BrowserContext, siteUrl: string, courseId: number, { name, maxGrade, scaleId, categoryId, hidden }: {
|
|
118
|
+
name: string;
|
|
119
|
+
maxGrade?: number;
|
|
120
|
+
scaleId?: number;
|
|
121
|
+
categoryId?: number;
|
|
122
|
+
hidden?: boolean;
|
|
123
|
+
}): Promise<{
|
|
124
|
+
changed: string;
|
|
125
|
+
item?: GradebookItem;
|
|
126
|
+
}>;
|
|
127
|
+
/**
|
|
128
|
+
* Changes a grade category: its name, its aggregation, its weight in its parent (percent, overriding
|
|
129
|
+
* Natural's automatic one), or moves it into another category. Returns the category afterwards.
|
|
130
|
+
*/
|
|
131
|
+
export declare function updateGradeCategory(context: BrowserContext, siteUrl: string, courseId: number, categoryId: number, { name, aggregation, weight, parentId }: {
|
|
132
|
+
name?: string;
|
|
133
|
+
aggregation?: GradeAggregation;
|
|
134
|
+
weight?: number;
|
|
135
|
+
parentId?: number;
|
|
136
|
+
}): Promise<{
|
|
137
|
+
changed: string;
|
|
138
|
+
category?: GradebookCategory;
|
|
139
|
+
}>;
|
|
140
|
+
/**
|
|
141
|
+
* Deletes a grade category. Moodle moves what it held (items and categories) into its parent and
|
|
142
|
+
* deletes the grades of its total; the course's own category can't be deleted.
|
|
143
|
+
*/
|
|
144
|
+
export declare function deleteGradeCategory(context: BrowserContext, siteUrl: string, courseId: number, categoryId: number): Promise<{
|
|
145
|
+
changed: string;
|
|
146
|
+
}>;
|
|
147
|
+
/**
|
|
148
|
+
* Deletes a manual grade item and its grades. An activity's item goes with its activity (Moodle
|
|
149
|
+
* would make it again), so it's refused.
|
|
150
|
+
*/
|
|
151
|
+
export declare function deleteGradeItem(context: BrowserContext, siteUrl: string, courseId: number, itemId: number): Promise<{
|
|
152
|
+
changed: string;
|
|
153
|
+
}>;
|
|
104
154
|
export {};
|
|
@@ -21,6 +21,7 @@ const AGGREGATION_CODES = {
|
|
|
21
21
|
"mean-with-extra-credits": 12,
|
|
22
22
|
natural: 13,
|
|
23
23
|
};
|
|
24
|
+
/** The aggregations a grade category can use, as the driver names Moodle's. */
|
|
24
25
|
export const GRADE_AGGREGATIONS = Object.keys(AGGREGATION_CODES);
|
|
25
26
|
/** One page of the grader report, by data attributes and links, in any language. */
|
|
26
27
|
export function readGraderReport(page) {
|
|
@@ -247,4 +248,123 @@ export async function addGradeCategory(context, siteUrl, courseId, { name, aggre
|
|
|
247
248
|
}
|
|
248
249
|
return { changed: `Grade category ${created?.id ?? "?"} "${name}" added${parentId !== undefined ? ` in category ${parentId}` : ""}.`, category: created };
|
|
249
250
|
}
|
|
251
|
+
/**
|
|
252
|
+
* Adds a manual grade item (one graded in the gradebook, not by an activity): out of `maxGrade`
|
|
253
|
+
* (Moodle's default, 100, when left out) or on a scale (`scaleId`), at the course's top level or in
|
|
254
|
+
* `categoryId`, hidden from students when asked. Returns it as the setup shows it.
|
|
255
|
+
*/
|
|
256
|
+
export async function addGradeItem(context, siteUrl, courseId, { name, maxGrade, scaleId, categoryId, hidden }) {
|
|
257
|
+
if (name.trim() === "")
|
|
258
|
+
throw new MoodleError("Give the grade item a name.", "invalid-input");
|
|
259
|
+
if (maxGrade !== undefined && scaleId !== undefined)
|
|
260
|
+
throw new MoodleError("A grade item is out of a maximum grade or on a scale, not both.", "invalid-input");
|
|
261
|
+
const before = new Set((await gradebookSetup(context, siteUrl, courseId)).items.map((i) => i.id));
|
|
262
|
+
const values = { itemname: name };
|
|
263
|
+
if (scaleId !== undefined)
|
|
264
|
+
Object.assign(values, { gradetype: 2, scaleid: scaleId });
|
|
265
|
+
if (maxGrade !== undefined)
|
|
266
|
+
values.grademax = maxGrade;
|
|
267
|
+
if (hidden !== undefined)
|
|
268
|
+
values.hidden = hidden;
|
|
269
|
+
await submitDynamicForm(context, siteUrl, "core_grades\\form\\add_item", { courseid: courseId }, values, async (page) => {
|
|
270
|
+
if (scaleId === undefined)
|
|
271
|
+
return;
|
|
272
|
+
const offered = await page.evaluate(() => Array.from(globalThis.document.querySelectorAll('[name="scaleid"] option')).map((o) => o.value));
|
|
273
|
+
if (scaleId === 0 || !offered.includes(String(scaleId))) {
|
|
274
|
+
throw new GradebookError(`Course ${courseId} can't use scale ${scaleId}; it offers scales ${offered.filter((v) => v !== "0").join(", ") || "none"}.`);
|
|
275
|
+
}
|
|
276
|
+
});
|
|
277
|
+
let created = (await gradebookSetup(context, siteUrl, courseId)).items.find((i) => !before.has(i.id));
|
|
278
|
+
if (created && categoryId !== undefined) {
|
|
279
|
+
await moveIntoCategory(context, siteUrl, courseId, `ig${created.id}`, categoryId);
|
|
280
|
+
created = (await gradebookSetup(context, siteUrl, courseId)).items.find((i) => i.id === created.id);
|
|
281
|
+
}
|
|
282
|
+
return { changed: `Grade item ${created?.id ?? "?"} "${name}" added${categoryId !== undefined ? ` in category ${categoryId}` : ""}.`, item: created };
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Changes a grade category: its name, its aggregation, its weight in its parent (percent, overriding
|
|
286
|
+
* Natural's automatic one), or moves it into another category. Returns the category afterwards.
|
|
287
|
+
*/
|
|
288
|
+
export async function updateGradeCategory(context, siteUrl, courseId, categoryId, { name, aggregation, weight, parentId }) {
|
|
289
|
+
const current = (await gradebookSetup(context, siteUrl, courseId)).categories.find((c) => c.id === categoryId);
|
|
290
|
+
if (!current)
|
|
291
|
+
throw new GradebookError(`Course ${courseId}'s gradebook has no category ${categoryId}: check the id in gradebookSetup.`);
|
|
292
|
+
if (current.parentId === undefined && (weight !== undefined || parentId !== undefined)) {
|
|
293
|
+
throw new GradebookError(`Category ${categoryId} is the course's own: it has no weight and can't be moved.`);
|
|
294
|
+
}
|
|
295
|
+
if (parentId !== undefined)
|
|
296
|
+
await moveIntoCategory(context, siteUrl, courseId, `cg${categoryId}`, parentId);
|
|
297
|
+
if (name !== undefined || aggregation !== undefined || weight !== undefined) {
|
|
298
|
+
const values = {};
|
|
299
|
+
if (name !== undefined)
|
|
300
|
+
values.fullname = name;
|
|
301
|
+
if (aggregation !== undefined)
|
|
302
|
+
values.aggregation = AGGREGATION_CODES[aggregation];
|
|
303
|
+
if (weight !== undefined)
|
|
304
|
+
Object.assign(values, { grade_item_weightoverride: 1, grade_item_aggregationcoef2: weight });
|
|
305
|
+
await submitDynamicForm(context, siteUrl, "core_grades\\form\\add_category", { courseid: courseId, category: categoryId }, values, async (page) => {
|
|
306
|
+
const fields = await page.evaluate(() => {
|
|
307
|
+
const doc = globalThis.document;
|
|
308
|
+
return { offered: Array.from(doc.querySelectorAll('[name="aggregation"] option')).map((o) => o.value), weight: doc.querySelector('[name="grade_item_aggregationcoef2"]') !== null };
|
|
309
|
+
});
|
|
310
|
+
if (aggregation !== undefined && !fields.offered.includes(String(AGGREGATION_CODES[aggregation]))) {
|
|
311
|
+
const available = GRADE_AGGREGATIONS.filter((a) => fields.offered.includes(String(AGGREGATION_CODES[a])));
|
|
312
|
+
throw new GradebookError(`The site doesn't offer the ${aggregation} aggregation; it offers: ${available.join(", ")}.`);
|
|
313
|
+
}
|
|
314
|
+
if (weight !== undefined && !fields.weight)
|
|
315
|
+
throw new GradebookError(`Category ${categoryId}'s parent doesn't aggregate with weights that can be set (Natural): change its aggregation first.`);
|
|
316
|
+
});
|
|
317
|
+
}
|
|
318
|
+
const done = [
|
|
319
|
+
parentId !== undefined && `moved into category ${parentId}`,
|
|
320
|
+
name !== undefined && `renamed "${name}"`,
|
|
321
|
+
aggregation !== undefined && `aggregated by ${aggregation}`,
|
|
322
|
+
weight !== undefined && `weighted ${weight}%`,
|
|
323
|
+
].filter(Boolean);
|
|
324
|
+
const category = (await gradebookSetup(context, siteUrl, courseId)).categories.find((c) => c.id === categoryId);
|
|
325
|
+
return { changed: done.length > 0 ? `Grade category ${categoryId} ${done.join(", ")}.` : "Nothing to change.", category };
|
|
326
|
+
}
|
|
327
|
+
/** Deletes an element of the setup (`ig<id>`, `cg<id>`) as the setup page's "Delete" does, confirmed. */
|
|
328
|
+
async function deleteElement(context, siteUrl, courseId, element) {
|
|
329
|
+
const page = await openSitePage(context, siteUrl, `grade/edit/tree/index.php?id=${courseId}`);
|
|
330
|
+
try {
|
|
331
|
+
const sesskey = await page.evaluate(() => globalThis.M.cfg.sesskey);
|
|
332
|
+
await page.goto(new URL(`grade/edit/tree/index.php?id=${courseId}&action=delete&eid=${element}&confirm=1&sesskey=${sesskey}`, siteUrl).href, { waitUntil: "domcontentloaded" });
|
|
333
|
+
}
|
|
334
|
+
finally {
|
|
335
|
+
await page.close().catch(() => undefined);
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Deletes a grade category. Moodle moves what it held (items and categories) into its parent and
|
|
340
|
+
* deletes the grades of its total; the course's own category can't be deleted.
|
|
341
|
+
*/
|
|
342
|
+
export async function deleteGradeCategory(context, siteUrl, courseId, categoryId) {
|
|
343
|
+
const category = (await gradebookSetup(context, siteUrl, courseId)).categories.find((c) => c.id === categoryId);
|
|
344
|
+
if (!category)
|
|
345
|
+
throw new GradebookError(`Course ${courseId}'s gradebook has no category ${categoryId}: check the id in gradebookSetup.`);
|
|
346
|
+
if (category.parentId === undefined)
|
|
347
|
+
throw new GradebookError(`Category ${categoryId} is the course's own: it can't be deleted.`);
|
|
348
|
+
await deleteElement(context, siteUrl, courseId, `cg${categoryId}`);
|
|
349
|
+
if ((await gradebookSetup(context, siteUrl, courseId)).categories.some((c) => c.id === categoryId)) {
|
|
350
|
+
throw new GradebookError(`Moodle didn't delete category ${categoryId}: check you can manage course ${courseId}'s grades.`);
|
|
351
|
+
}
|
|
352
|
+
return { changed: `Grade category ${categoryId} "${category.name}" deleted; what it held moved into category ${category.parentId}.` };
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* Deletes a manual grade item and its grades. An activity's item goes with its activity (Moodle
|
|
356
|
+
* would make it again), so it's refused.
|
|
357
|
+
*/
|
|
358
|
+
export async function deleteGradeItem(context, siteUrl, courseId, itemId) {
|
|
359
|
+
const item = (await gradebookSetup(context, siteUrl, courseId)).items.find((i) => i.id === itemId);
|
|
360
|
+
if (!item)
|
|
361
|
+
throw new GradebookError(`Course ${courseId}'s gradebook has no grade item ${itemId}: check the id in gradebookSetup.`);
|
|
362
|
+
if (item.type !== "manual")
|
|
363
|
+
throw new GradebookError(`Grade item ${itemId} belongs to an activity (${item.type}): it goes when the activity is deleted, not from the gradebook.`);
|
|
364
|
+
await deleteElement(context, siteUrl, courseId, `ig${itemId}`);
|
|
365
|
+
if ((await gradebookSetup(context, siteUrl, courseId)).items.some((i) => i.id === itemId)) {
|
|
366
|
+
throw new GradebookError(`Moodle didn't delete grade item ${itemId}: check you can manage course ${courseId}'s grades.`);
|
|
367
|
+
}
|
|
368
|
+
return { changed: `Grade item ${itemId} "${item.name}" deleted, with its grades.` };
|
|
369
|
+
}
|
|
250
370
|
//# sourceMappingURL=gradebook.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gradebook.js","sourceRoot":"","sources":["../../../src/areas/grades/gradebook.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"gradebook.js","sourceRoot":"","sources":["../../../src/areas/grades/gradebook.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAmB,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,qGAAqG;AACrG,MAAM,OAAO,cAAe,SAAQ,WAAW;IACpC,IAAI,GAAG,gBAAgB,CAAC;IACjC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAC9B,CAAC;CACF;AAED,mEAAmE;AACnE,MAAM,iBAAiB,GAAG;IACxB,IAAI,EAAE,CAAC;IACP,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,CAAC;IACV,IAAI,EAAE,CAAC;IACP,eAAe,EAAE,EAAE;IACnB,sBAAsB,EAAE,EAAE;IAC1B,yBAAyB,EAAE,EAAE;IAC7B,OAAO,EAAE,EAAE;CACH,CAAC;AAGX,+EAA+E;AAC/E,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAuB,CAAC;AAoBvF,oFAAoF;AACpF,MAAM,UAAU,gBAAgB,CAAC,IAAU;IACzC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;QASxB,MAAM,GAAG,GAAI,UAA0C,CAAC,QAAQ,CAAC;QACjE,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,8CAA8C,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;YAC1G,MAAM,MAAM,GAAG,EAAE,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;YACpD,MAAM,IAAI,GAAG,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;YACrC,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;gBAAE,KAAK,CAAC,MAAM,EAAE,CAAC;YACtG,MAAM,KAAK,GAAG,kDAAkD,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YAC1G,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;YAC1H,OAAO;gBACL,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;gBAC1C,IAAI,EAAE,CAAC,IAAI,EAAE,WAAW,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE;gBAC3D,IAAI;gBACJ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC3E,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,wCAAwC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YAClG,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;YAC9D,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,sCAAsC,CAAC,IAAI,EAAE,CAAC;gBAAE,KAAK,CAAC,MAAM,EAAE,CAAC;YACrH,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,2BAA2B,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBACxF,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,WAAW,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;gBACjG,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,IAAI,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;YACnH,CAAC,CAAC,CAAC;YACH,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,WAAW,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC;QACnI,CAAC,CAAC,CAAC;QACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAkB,CAAC;IAC3C,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,SAAS,GAAG,GAAG,CAAC;AAEtB;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAuB,EAAE,OAAe,EAAE,QAAgB,EAAE,EAAE,KAAK,KAAyB,EAAE;IAC/H,MAAM,MAAM,GAAiB,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IACvD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,oCAAoC,QAAQ,SAAS,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7I,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAC/C,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvG,MAAM,IAAI,cAAc,CAAC,wBAAwB,QAAQ,qBAAqB,OAAO,IAAI,iDAAiD,EAAE,CAAC,CAAC;YAChJ,CAAC;YACD,0GAA0G;YAC1G,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5D,MAAM,IAAI,cAAc,CAAC,UAAU,QAAQ,sGAAsG,CAAC,CAAC;YACrJ,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,KAAK,CAAC;gBAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;YAC/D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAM;YAC9B,KAAK,MAAM,GAAG,IAAI,KAAK;gBAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC9C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;QAC7B,CAAC;gBAAS,CAAC;YACT,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AA4BD,2EAA2E;AAC3E,MAAM,UAAU,kBAAkB,CAAC,IAAU;IAC3C,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE;QAU7B,MAAM,GAAG,GAAI,UAA0C,CAAC,QAAQ,CAAC;QACjE,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QACpG,MAAM,UAAU,GAAwB,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAoB,EAAE,CAAC;QAClC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,wCAAwC,CAAC,CAAC,EAAE,CAAC;YAC7F,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC;YACvD,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,WAAW,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;YAC7F,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,SAAS,CAAC;YACxG,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC;YACtD,MAAM,WAAW,GAAG,GAAG,CAAC,aAAa,CAAC,mCAAmC,MAAM,IAAI,CAAC,CAAC;YACrF,MAAM,MAAM,GAAG,WAAW,IAAI,WAAW,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC/F,MAAM,QAAQ,GAAG,GAAG,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;YACnD,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC;gBACtE,UAAU,CAAC,IAAI,CAAC;oBACd,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBACvC,MAAM;oBACN,IAAI;oBACJ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACvC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,WAA+B,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACxE,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACrC,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC5C,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,qFAAqF;gBACrF,MAAM,IAAI,GAAG,mCAAmC,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACzH,KAAK,CAAC,IAAI,CAAC;oBACT,EAAE,EAAE,MAAM;oBACV,IAAI;oBACJ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACzC,IAAI,EAAE,CAAC,IAAI,IAAI,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI;oBAChD,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACrC,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC3C,gBAAgB,EAAE,GAAG,CAAC,aAAa,CAAC,+CAA+C,MAAM,IAAI,CAAC,EAAE,OAAO,IAAI,KAAK;iBACjH,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IAC/B,CAAC,EAAE,iBAAiB,CAAC,CAAC;AACxB,CAAC;AAED,qHAAqH;AACrH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAuB,EAAE,OAAe,EAAE,QAAgB;IAC7F,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,gCAAgC,QAAQ,EAAE,CAAC,CAAC;IAC9F,IAAI,CAAC;QACH,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,wDAAwD,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;YACjG,MAAM,IAAI,cAAc,CAAC,wBAAwB,QAAQ,uBAAuB,CAAC,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC,IAAI,sEAAsE,EAAE,CAAC,CAAC;QAChM,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC7C,sFAAsF;QACtF,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9D,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IACrG,CAAC;YAAS,CAAC;QACT,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,iBAAiB,CAC9B,OAAuB,EACvB,OAAe,EACf,IAAY,EACZ,MAAuC,EACvC,MAAkC,EAClC,OAAuC;IAEvC,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAoB,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACtI,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAmB,OAAO,EAAE,OAAO,EAAE,wBAAwB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IACrH,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;IACrC,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;QACtB,MAAM,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC9B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;YAC1C,MAAM,CAAC,GAAG,UAIT,CAAC;YACF,OAAO,IAAI,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAClG,CAAC,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAuC,OAAO,EAAE,OAAO,EAAE,wBAAwB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;QACnJ,IAAI,MAAM,CAAC,SAAS;YAAE,OAAO;QAC7B,iFAAiF;QACjF,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CACtC,KAAK,CAAC,IAAI,CAAE,UAA8H,CAAC,QAAQ,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;aACvL,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;aACtK,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,KAAK,EAAE,CAAC,CAC3C,CAAC;QACF,MAAM,IAAI,cAAc,CAAC,4BAA4B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,iBAAiB,GAAG,CAAC,CAAC;IACzI,CAAC;YAAS,CAAC;QACT,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC;AAED,wHAAwH;AACxH,KAAK,UAAU,gBAAgB,CAAC,OAAuB,EAAE,OAAe,EAAE,QAAgB,EAAE,OAAe,EAAE,UAAkB;IAC7H,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,gCAAgC,QAAQ,EAAE,CAAC,CAAC;IAC9F,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAE,UAA6D,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACxH,MAAM,IAAI,GAAG,gCAAgC,QAAQ,oBAAoB,OAAO,gBAAgB,UAAU,oBAAoB,OAAO,EAAE,CAAC;QACxI,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAChF,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;YACjE,MAAM,IAAI,cAAc,CAAC,sBAAsB,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB,UAAU,0CAA0C,CAAC,CAAC;QAC3L,CAAC;IACH,CAAC;YAAS,CAAC;QACT,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAuB,EACvB,OAAe,EACf,QAAgB,EAChB,MAAc,EACd,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAA6D;IAEzF,IAAI,QAAQ,KAAK,SAAS;QAAE,MAAM,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,MAAM,EAAE,EAAE,QAAQ,CAAC,CAAC;IACxG,IAAI,MAAM,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACnD,MAAM,MAAM,GAA+B,EAAE,CAAC;QAC9C,IAAI,MAAM,KAAK,SAAS;YAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC,CAAC;QACjG,IAAI,QAAQ,KAAK,SAAS;YAAE,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACvD,MAAM,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,6BAA6B,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtI,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;gBACtC,MAAM,GAAG,GAAI,UAAkG,CAAC,QAAQ,CAAC;gBACzH,MAAM,GAAG,GAAG,GAAG,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;gBACnD,OAAO,EAAE,WAAW,EAAE,GAAG,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,aAAa,CAAC,2BAA2B,CAAC,KAAK,IAAI,EAAE,CAAC;YACzH,CAAC,CAAC,CAAC;YACH,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;gBAClD,MAAM,IAAI,cAAc,CAAC,QAAQ,MAAM,qGAAqG,CAAC,CAAC;YAChJ,CAAC;YACD,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,MAAM;gBAAE,MAAM,IAAI,cAAc,CAAC,QAAQ,MAAM,qGAAqG,CAAC,CAAC;QAC5L,CAAC,CAAC,CAAC;IACL,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,uBAAuB,QAAQ,EAAE,EAAE,MAAM,KAAK,SAAS,IAAI,YAAY,MAAM,GAAG,EAAE,QAAQ,KAAK,SAAS,IAAI,UAAU,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC1L,MAAM,IAAI,GAAG,CAAC,MAAM,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;IACnG,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,oBAAoB,EAAE,IAAI,EAAE,CAAC;AAChH,CAAC;AAED,iHAAiH;AACjH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAuB,EACvB,OAAe,EACf,QAAgB,EAChB,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAuE;IAEpG,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACvG,MAAM,MAAM,GAA+B,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC9D,IAAI,WAAW,KAAK,SAAS;QAAE,MAAM,CAAC,WAAW,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;IACnF,MAAM,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,iCAAiC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC1H,IAAI,WAAW,KAAK,SAAS;YAAE,OAAO;QACtC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CACvC,KAAK,CAAC,IAAI,CAAE,UAAqG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,6BAA6B,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAChM,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnG,MAAM,IAAI,cAAc,CAAC,8BAA8B,WAAW,4BAA4B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzH,CAAC;IACH,CAAC,CAAC,CAAC;IACH,IAAI,OAAO,GAAG,CAAC,MAAM,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3G,IAAI,OAAO,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACtC,MAAM,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,OAAO,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;QAChF,OAAO,GAAG,CAAC,MAAM,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAQ,CAAC,EAAE,CAAC,CAAC;IAC5G,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,kBAAkB,OAAO,EAAE,EAAE,IAAI,GAAG,KAAK,IAAI,UAAU,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AAC5J,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAAuB,EACvB,OAAe,EACf,QAAgB,EAChB,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAgG;IAE7I,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,MAAM,IAAI,WAAW,CAAC,6BAA6B,EAAE,eAAe,CAAC,CAAC;IAC9F,IAAI,QAAQ,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS;QAAE,MAAM,IAAI,WAAW,CAAC,iEAAiE,EAAE,eAAe,CAAC,CAAC;IAC/J,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClG,MAAM,MAAM,GAA+B,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC9D,IAAI,OAAO,KAAK,SAAS;QAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IACrF,IAAI,QAAQ,KAAK,SAAS;QAAE,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACvD,IAAI,MAAM,KAAK,SAAS;QAAE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;IACjD,MAAM,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,6BAA6B,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtH,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO;QAClC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CACvC,KAAK,CAAC,IAAI,CAAE,UAAqG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAC5L,CAAC;QACF,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;YACxD,MAAM,IAAI,cAAc,CAAC,UAAU,QAAQ,oBAAoB,OAAO,sBAAsB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC;QACxJ,CAAC;IACH,CAAC,CAAC,CAAC;IACH,IAAI,OAAO,GAAG,CAAC,MAAM,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACtG,IAAI,OAAO,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QACxC,MAAM,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,OAAO,CAAC,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC;QAClF,OAAO,GAAG,CAAC,MAAM,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAQ,CAAC,EAAE,CAAC,CAAC;IACvG,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,cAAc,OAAO,EAAE,EAAE,IAAI,GAAG,KAAK,IAAI,UAAU,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AACxJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAuB,EACvB,OAAe,EACf,QAAgB,EAChB,UAAkB,EAClB,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAyF;IAE9H,MAAM,OAAO,GAAG,CAAC,MAAM,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;IAC/G,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,cAAc,CAAC,UAAU,QAAQ,gCAAgC,UAAU,mCAAmC,CAAC,CAAC;IACxI,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,CAAC,EAAE,CAAC;QACvF,MAAM,IAAI,cAAc,CAAC,YAAY,UAAU,4DAA4D,CAAC,CAAC;IAC/G,CAAC;IACD,IAAI,QAAQ,KAAK,SAAS;QAAE,MAAM,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,UAAU,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC5G,IAAI,IAAI,KAAK,SAAS,IAAI,WAAW,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QAC5E,MAAM,MAAM,GAA+B,EAAE,CAAC;QAC9C,IAAI,IAAI,KAAK,SAAS;YAAE,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC/C,IAAI,WAAW,KAAK,SAAS;YAAE,MAAM,CAAC,WAAW,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;QACnF,IAAI,MAAM,KAAK,SAAS;YAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,yBAAyB,EAAE,CAAC,EAAE,2BAA2B,EAAE,MAAM,EAAE,CAAC,CAAC;QACvH,MAAM,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,iCAAiC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YAChJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;gBACtC,MAAM,GAAG,GAAI,UAAwI,CAAC,QAAQ,CAAC;gBAC/J,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,6BAA6B,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,aAAa,CAAC,sCAAsC,CAAC,KAAK,IAAI,EAAE,CAAC;YACtL,CAAC,CAAC,CAAC;YACH,IAAI,WAAW,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClG,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1G,MAAM,IAAI,cAAc,CAAC,8BAA8B,WAAW,4BAA4B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACzH,CAAC;YACD,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,MAAM;gBAAE,MAAM,IAAI,cAAc,CAAC,YAAY,UAAU,mGAAmG,CAAC,CAAC;QAClM,CAAC,CAAC,CAAC;IACL,CAAC;IACD,MAAM,IAAI,GAAG;QACX,QAAQ,KAAK,SAAS,IAAI,uBAAuB,QAAQ,EAAE;QAC3D,IAAI,KAAK,SAAS,IAAI,YAAY,IAAI,GAAG;QACzC,WAAW,KAAK,SAAS,IAAI,iBAAiB,WAAW,EAAE;QAC3D,MAAM,KAAK,SAAS,IAAI,YAAY,MAAM,GAAG;KAC9C,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClB,MAAM,QAAQ,GAAG,CAAC,MAAM,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;IAChH,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,oBAAoB,EAAE,QAAQ,EAAE,CAAC;AAC5H,CAAC;AAED,yGAAyG;AACzG,KAAK,UAAU,aAAa,CAAC,OAAuB,EAAE,OAAe,EAAE,QAAgB,EAAE,OAAe;IACtG,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,gCAAgC,QAAQ,EAAE,CAAC,CAAC;IAC9F,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAE,UAA6D,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACxH,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,gCAAgC,QAAQ,sBAAsB,OAAO,sBAAsB,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAClL,CAAC;YAAS,CAAC;QACT,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,OAAuB,EAAE,OAAe,EAAE,QAAgB,EAAE,UAAkB;IACtH,MAAM,QAAQ,GAAG,CAAC,MAAM,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;IAChH,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,cAAc,CAAC,UAAU,QAAQ,gCAAgC,UAAU,mCAAmC,CAAC,CAAC;IACzI,IAAI,QAAQ,CAAC,QAAQ,KAAK,SAAS;QAAE,MAAM,IAAI,cAAc,CAAC,YAAY,UAAU,4CAA4C,CAAC,CAAC;IAClI,MAAM,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,UAAU,EAAE,CAAC,CAAC;IACnE,IAAI,CAAC,MAAM,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE,CAAC;QACnG,MAAM,IAAI,cAAc,CAAC,iCAAiC,UAAU,iCAAiC,QAAQ,YAAY,CAAC,CAAC;IAC7H,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,kBAAkB,UAAU,KAAK,QAAQ,CAAC,IAAI,+CAA+C,QAAQ,CAAC,QAAQ,GAAG,EAAE,CAAC;AACxI,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAuB,EAAE,OAAe,EAAE,QAAgB,EAAE,MAAc;IAC9G,MAAM,IAAI,GAAG,CAAC,MAAM,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;IACnG,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,cAAc,CAAC,UAAU,QAAQ,kCAAkC,MAAM,mCAAmC,CAAC,CAAC;IACnI,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;QAAE,MAAM,IAAI,cAAc,CAAC,cAAc,MAAM,4BAA4B,IAAI,CAAC,IAAI,kEAAkE,CAAC,CAAC;IAClL,MAAM,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,MAAM,EAAE,CAAC,CAAC;IAC/D,IAAI,CAAC,MAAM,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC;QAC1F,MAAM,IAAI,cAAc,CAAC,mCAAmC,MAAM,iCAAiC,QAAQ,YAAY,CAAC,CAAC;IAC3H,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,cAAc,MAAM,KAAK,IAAI,CAAC,IAAI,6BAA6B,EAAE,CAAC;AACtF,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { BrowserContext } from "playwright-core";
|
|
2
|
+
/** A person's grade in one grade item, as the single view report shows it after a change. */
|
|
3
|
+
export interface GradebookGrade {
|
|
4
|
+
itemId: number;
|
|
5
|
+
userId: number;
|
|
6
|
+
/** As the report shows it ("80.00", or the scale's item); left out when there's none. */
|
|
7
|
+
grade?: string;
|
|
8
|
+
feedback?: string;
|
|
9
|
+
/** Whether the grade overrides the activity's (or the category's computed one). */
|
|
10
|
+
overridden: boolean;
|
|
11
|
+
/** Whether it's left out of the category and course totals. */
|
|
12
|
+
excluded: boolean;
|
|
13
|
+
}
|
|
14
|
+
/** What `setGrade` changes in a person's grade: only what's given. */
|
|
15
|
+
export interface SetGradeOptions {
|
|
16
|
+
/** A number, or a scale item's name or value for a scale; `null` empties the grade. */
|
|
17
|
+
grade?: number | string | null;
|
|
18
|
+
/** Feedback text; an empty string removes it. */
|
|
19
|
+
feedback?: string;
|
|
20
|
+
/**
|
|
21
|
+
* Override the activity's or category's grade. Giving a grade or feedback to an activity's or a
|
|
22
|
+
* category's item overrides it unless this says `false`; `false` alone gives the grade back to the activity.
|
|
23
|
+
*/
|
|
24
|
+
override?: boolean;
|
|
25
|
+
/** Leave the grade out of the totals. */
|
|
26
|
+
excluded?: boolean;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Sets a person's grade in a grade item through the gradebook's single view report, as a teacher
|
|
30
|
+
* does there: a manual item takes the grade; an activity's or a category's is overridden (Moodle
|
|
31
|
+
* keeps the override until it's taken off with `override: false`). Feedback and excluding from
|
|
32
|
+
* the totals go the same way. Returns a sentence of what changed and the grade afterwards.
|
|
33
|
+
* Throws `GradebookError` when the item or the person isn't in the course's gradebook, the grade
|
|
34
|
+
* is locked, or Moodle refuses the value (out of range, a scale item it doesn't have).
|
|
35
|
+
*/
|
|
36
|
+
export declare function setGrade(context: BrowserContext, siteUrl: string, courseId: number, itemId: number, userId: number, { grade, feedback, override, excluded }: SetGradeOptions): Promise<{
|
|
37
|
+
changed: string;
|
|
38
|
+
grade: GradebookGrade;
|
|
39
|
+
}>;
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import { moodleErrorMessage, openSitePage } from "../../core/session.js";
|
|
2
|
+
import { MoodleError } from "../../core/errors.js";
|
|
3
|
+
import { inPage } from "../../core/inPage.js";
|
|
4
|
+
import { GradebookError } from "./gradebook.js";
|
|
5
|
+
function readRow(page, itemId, userId) {
|
|
6
|
+
return page.evaluate(({ itemId, userId }) => {
|
|
7
|
+
const doc = globalThis.document;
|
|
8
|
+
const suffix = `_${itemId}_${userId}`;
|
|
9
|
+
const grade = doc.querySelector(`#singleview-grades [name="finalgrade${suffix}"]`);
|
|
10
|
+
const feedback = doc.querySelector(`#singleview-grades [name="feedback${suffix}"]`);
|
|
11
|
+
const override = doc.querySelector(`#singleview-grades input[type="checkbox"][name="override${suffix}"]`);
|
|
12
|
+
const exclude = doc.querySelector(`#singleview-grades input[type="checkbox"][name="exclude${suffix}"]`);
|
|
13
|
+
const options = grade?.tagName === "SELECT" ? Array.from(grade.options ?? []).map((o) => ({ value: o.value, text: o.text.replace(/\s+/g, " ").trim() })) : [];
|
|
14
|
+
// A scale's "No grade" is -1.
|
|
15
|
+
const shown = grade?.tagName === "SELECT" ? (grade.value === "-1" ? "" : (options.find((o) => o.value === grade.value)?.text ?? "")) : (grade?.value ?? "");
|
|
16
|
+
return {
|
|
17
|
+
hasRow: grade !== null || override !== null || exclude !== null,
|
|
18
|
+
...(grade ? { gradeKind: grade.tagName === "SELECT" ? "select" : "number" } : {}),
|
|
19
|
+
gradeDisabled: grade?.disabled ?? true,
|
|
20
|
+
options,
|
|
21
|
+
hasOverride: override !== null,
|
|
22
|
+
overrideDisabled: override?.disabled ?? true,
|
|
23
|
+
...(shown !== "" ? { grade: shown } : {}),
|
|
24
|
+
...(feedback && feedback.value.trim() !== "" ? { feedback: feedback.value } : {}),
|
|
25
|
+
overridden: override?.checked ?? false,
|
|
26
|
+
excluded: exclude?.checked ?? false,
|
|
27
|
+
hasExclude: exclude !== null,
|
|
28
|
+
};
|
|
29
|
+
}, { itemId, userId });
|
|
30
|
+
}
|
|
31
|
+
/** Turns the person's editing mode on or off through the page's own switch (editmode.php). */
|
|
32
|
+
function setEditingMode(page, on) {
|
|
33
|
+
return page.evaluate(async (on) => {
|
|
34
|
+
const g = globalThis;
|
|
35
|
+
const form = g.document.querySelector("form.editmode-switch-form");
|
|
36
|
+
if (!form)
|
|
37
|
+
return false;
|
|
38
|
+
// Posted as the form posts itself, urlencoded.
|
|
39
|
+
const data = new g.URLSearchParams(new g.FormData(form));
|
|
40
|
+
data.set("setmode", on ? "1" : "0");
|
|
41
|
+
return (await g.fetch(form.action, { method: "POST", body: data, credentials: "same-origin" })).ok;
|
|
42
|
+
}, on);
|
|
43
|
+
}
|
|
44
|
+
function sameGrade(row, grade) {
|
|
45
|
+
if (grade === null)
|
|
46
|
+
return row.grade === undefined;
|
|
47
|
+
if (row.gradeKind === "select")
|
|
48
|
+
return row.options.some((o) => (o.value === String(grade) || o.text === String(grade)) && o.text === row.grade);
|
|
49
|
+
return row.grade !== undefined && Number(row.grade) === Number(grade);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Sets a person's grade in a grade item through the gradebook's single view report, as a teacher
|
|
53
|
+
* does there: a manual item takes the grade; an activity's or a category's is overridden (Moodle
|
|
54
|
+
* keeps the override until it's taken off with `override: false`). Feedback and excluding from
|
|
55
|
+
* the totals go the same way. Returns a sentence of what changed and the grade afterwards.
|
|
56
|
+
* Throws `GradebookError` when the item or the person isn't in the course's gradebook, the grade
|
|
57
|
+
* is locked, or Moodle refuses the value (out of range, a scale item it doesn't have).
|
|
58
|
+
*/
|
|
59
|
+
export async function setGrade(context, siteUrl, courseId, itemId, userId, { grade, feedback, override, excluded }) {
|
|
60
|
+
if (grade === undefined && feedback === undefined && override === undefined && excluded === undefined) {
|
|
61
|
+
throw new MoodleError("Give a grade, feedback, override or excluded to change.", "invalid-input");
|
|
62
|
+
}
|
|
63
|
+
if (typeof grade === "number" && !Number.isFinite(grade))
|
|
64
|
+
throw new MoodleError(`The grade must be a number: ${grade}.`, "invalid-input");
|
|
65
|
+
const path = `grade/report/singleview/index.php?id=${courseId}&item=user&itemid=${userId}`;
|
|
66
|
+
const page = await openSitePage(context, siteUrl, path);
|
|
67
|
+
let turnedOn = false;
|
|
68
|
+
try {
|
|
69
|
+
const refused = await moodleErrorMessage(page);
|
|
70
|
+
if (refused !== undefined || (await page.locator("body#page-grade-report-singleview-index").count()) === 0) {
|
|
71
|
+
throw new GradebookError(`You can't grade in course ${courseId}'s gradebook: ${refused ?? "the course doesn't exist, or you aren't allowed"}`);
|
|
72
|
+
}
|
|
73
|
+
if ((await page.locator("#singleview-grades").count()) === 0) {
|
|
74
|
+
throw new GradebookError(`User ${userId} isn't graded in course ${courseId}, or Moodle is recalculating its grades: check the participants, or try again in a moment.`);
|
|
75
|
+
}
|
|
76
|
+
// Read-only outside editing mode: no fields at all.
|
|
77
|
+
if ((await page.locator('#singleview-grades [name^="oldfinalgrade_"]').count()) === 0) {
|
|
78
|
+
if (!(await setEditingMode(page, true)))
|
|
79
|
+
throw new GradebookError("The single view report has no editing mode switch: the grades can't be edited here.");
|
|
80
|
+
turnedOn = true;
|
|
81
|
+
await page.reload({ waitUntil: "domcontentloaded" });
|
|
82
|
+
}
|
|
83
|
+
const before = await readRow(page, itemId, userId);
|
|
84
|
+
if (!before.hasRow)
|
|
85
|
+
throw new GradebookError(`Course ${courseId}'s gradebook has no grade item ${itemId} for user ${userId}: check the id in gradebookSetup or graderReport.`);
|
|
86
|
+
const overridable = before.hasOverride;
|
|
87
|
+
if (override !== undefined && !overridable)
|
|
88
|
+
throw new GradebookError(`Grade item ${itemId} is a manual item: its grades are set directly, never overridden.`);
|
|
89
|
+
// A grade or feedback for an activity's or category's item overrides it, as the report requires.
|
|
90
|
+
const wantOverride = overridable ? (override ?? (grade !== undefined || feedback !== undefined ? true : before.overridden)) : false;
|
|
91
|
+
if (overridable && !wantOverride && (grade !== undefined || feedback !== undefined)) {
|
|
92
|
+
throw new GradebookError(`Grade item ${itemId}'s grades come from its activity or category: a grade or feedback here overrides it, so it can't be given with override: false.`);
|
|
93
|
+
}
|
|
94
|
+
if (overridable && before.overrideDisabled)
|
|
95
|
+
throw new GradebookError(`User ${userId}'s grade in item ${itemId} is locked: unlock it in the gradebook first.`);
|
|
96
|
+
if (!overridable && before.gradeDisabled && (grade !== undefined || feedback !== undefined)) {
|
|
97
|
+
throw new GradebookError(`User ${userId}'s grade in item ${itemId} is locked: unlock it in the gradebook first.`);
|
|
98
|
+
}
|
|
99
|
+
if (excluded !== undefined && !before.hasExclude)
|
|
100
|
+
throw new GradebookError(`User ${userId}'s grade in item ${itemId} can't be excluded here.`);
|
|
101
|
+
if (grade !== undefined && grade !== null && before.gradeKind === "select" && !before.options.some((o) => o.value === String(grade) || o.text === String(grade))) {
|
|
102
|
+
throw new GradebookError(`Grade item ${itemId} uses a scale; give one of its items: ${before.options.filter((o) => o.value !== "-1").map((o) => `"${o.text}"`).join(", ")}.`);
|
|
103
|
+
}
|
|
104
|
+
if (grade !== undefined && grade !== null && before.gradeKind === "number" && !Number.isFinite(Number(grade))) {
|
|
105
|
+
throw new GradebookError(`Grade item ${itemId} takes a number, not "${grade}".`);
|
|
106
|
+
}
|
|
107
|
+
const changes = [
|
|
108
|
+
overridable && wantOverride !== before.overridden && (wantOverride ? "overridden" : "override taken off"),
|
|
109
|
+
grade !== undefined && !sameGrade(before, grade) && (grade === null ? "grade emptied" : `graded ${grade}`),
|
|
110
|
+
feedback !== undefined && feedback.trim() !== (before.feedback ?? "").trim() && (feedback.trim() === "" ? "feedback removed" : "feedback set"),
|
|
111
|
+
excluded !== undefined && excluded !== before.excluded && (excluded ? "excluded from the totals" : "included in the totals"),
|
|
112
|
+
].filter((c) => typeof c === "string");
|
|
113
|
+
if (changes.length === 0) {
|
|
114
|
+
return { changed: "Nothing to change.", grade: toGrade(itemId, userId, before) };
|
|
115
|
+
}
|
|
116
|
+
// Through inPage: the page code names a helper.
|
|
117
|
+
await inPage(page, ({ itemId, userId, overridable, wantOverride, grade, feedback, excluded }) => {
|
|
118
|
+
const doc = globalThis.document;
|
|
119
|
+
const suffix = `_${itemId}_${userId}`;
|
|
120
|
+
const field = (name) => doc.querySelector(`#singleview-grades [name="${name}${suffix}"]:not([type="hidden"])`);
|
|
121
|
+
if (overridable) {
|
|
122
|
+
field("override").checked = wantOverride;
|
|
123
|
+
// As the report's own script does: an override enables the grade and feedback.
|
|
124
|
+
for (const name of ["finalgrade", "feedback"]) {
|
|
125
|
+
const input = field(name);
|
|
126
|
+
if (input)
|
|
127
|
+
input.disabled = !wantOverride;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
const gradeField = field("finalgrade");
|
|
131
|
+
if (grade !== undefined && gradeField) {
|
|
132
|
+
if (gradeField.tagName === "SELECT") {
|
|
133
|
+
const options = Array.from(gradeField.options ?? []);
|
|
134
|
+
gradeField.value = grade === null ? "-1" : (options.find((o) => o.value === String(grade)) ?? options.find((o) => o.text.replace(/\s+/g, " ").trim() === String(grade))).value;
|
|
135
|
+
}
|
|
136
|
+
else
|
|
137
|
+
gradeField.value = grade === null ? "" : String(grade);
|
|
138
|
+
}
|
|
139
|
+
const feedbackField = field("feedback");
|
|
140
|
+
if (feedback !== undefined && feedbackField)
|
|
141
|
+
feedbackField.value = feedback;
|
|
142
|
+
const excludeField = field("exclude");
|
|
143
|
+
if (excluded !== undefined && excludeField)
|
|
144
|
+
excludeField.checked = excluded;
|
|
145
|
+
}, { itemId, userId, overridable, wantOverride, grade, feedback, excluded });
|
|
146
|
+
// The grade's input carries the item's range (min, max): the browser wouldn't send it out of range.
|
|
147
|
+
const invalid = await page.evaluate((name) => {
|
|
148
|
+
const input = globalThis.document.querySelector(`#singleview-grades input[name="${name}"]`);
|
|
149
|
+
return input && !input.checkValidity() ? { min: input.min, max: input.max } : undefined;
|
|
150
|
+
}, `finalgrade_${itemId}_${userId}`);
|
|
151
|
+
if (invalid)
|
|
152
|
+
throw new GradebookError(`Grade item ${itemId} takes grades from ${invalid.min || "any"} to ${invalid.max || "any"}, not ${grade}.`);
|
|
153
|
+
const standing = new Set(await alerts(page));
|
|
154
|
+
const save = page.locator('form:has(#singleview-grades) [type="submit"]').first();
|
|
155
|
+
await Promise.all([page.waitForNavigation({ waitUntil: "domcontentloaded" }), save.click({ noWaitAfter: true })]);
|
|
156
|
+
// Moodle's refusals (a grade out of range) come as warnings beside its success message; the
|
|
157
|
+
// page's standing ones (an activity being deleted) were there before saving.
|
|
158
|
+
const warnings = (await alerts(page)).filter((text) => !standing.has(text));
|
|
159
|
+
if (warnings.length > 0)
|
|
160
|
+
throw new GradebookError(`Moodle didn't save user ${userId}'s grade in item ${itemId}: ${warnings.join(" ")}`);
|
|
161
|
+
const after = await readRow(page, itemId, userId);
|
|
162
|
+
return { changed: `User ${userId}'s grade in item ${itemId}: ${changes.join(", ")}.`, grade: toGrade(itemId, userId, after) };
|
|
163
|
+
}
|
|
164
|
+
finally {
|
|
165
|
+
if (turnedOn)
|
|
166
|
+
await setEditingMode(page, false).catch(() => false);
|
|
167
|
+
await page.close().catch(() => undefined);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
/** The page's warning and error notifications, as texts. */
|
|
171
|
+
function alerts(page) {
|
|
172
|
+
return page.evaluate(() => Array.from(globalThis.document.querySelectorAll('.alert-warning[role="alert"], .alert-danger[role="alert"], .alert-error[role="alert"]'))
|
|
173
|
+
.map((alert) => (alert.textContent ?? "").replace(/\s+/g, " ").trim())
|
|
174
|
+
.filter((text) => text !== ""));
|
|
175
|
+
}
|
|
176
|
+
function toGrade(itemId, userId, row) {
|
|
177
|
+
return {
|
|
178
|
+
itemId,
|
|
179
|
+
userId,
|
|
180
|
+
...(row.grade !== undefined ? { grade: row.grade } : {}),
|
|
181
|
+
...(row.feedback !== undefined ? { feedback: row.feedback } : {}),
|
|
182
|
+
overridden: row.overridden,
|
|
183
|
+
excluded: row.excluded,
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=singleview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"singleview.js","sourceRoot":"","sources":["../../../src/areas/grades/singleview.ts"],"names":[],"mappings":"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"}
|
package/dist/areas/h5p/h5p.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export declare class NotAnH5PActivityError extends MoodleError {
|
|
|
5
5
|
name: string;
|
|
6
6
|
constructor(message: string);
|
|
7
7
|
}
|
|
8
|
+
/** One of the person's attempts at an H5P activity, with its score where Moodle tracks it. */
|
|
8
9
|
export interface H5PAttempt {
|
|
9
10
|
/** Moodle's id for the attempt (its report's), and its number for the person. */
|
|
10
11
|
id?: number;
|
|
@@ -14,6 +15,7 @@ export interface H5PAttempt {
|
|
|
14
15
|
completed?: boolean;
|
|
15
16
|
passed?: boolean;
|
|
16
17
|
}
|
|
18
|
+
/** An H5P activity as the person sees it (`h5pActivity`). */
|
|
17
19
|
export interface H5PActivity {
|
|
18
20
|
id: number;
|
|
19
21
|
name: string;
|
package/dist/areas/h5p/h5p.js
CHANGED
|
@@ -90,14 +90,19 @@ export async function h5pActivity(context, siteUrl, activityId) {
|
|
|
90
90
|
if (library)
|
|
91
91
|
activity.contentType = { library: library[1], version: library[2] };
|
|
92
92
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
93
|
+
// A student's page links to their report only once they have an attempt (Moodle 5.2's navigation,
|
|
94
|
+
// confirmed empirically): without the link, the report itself says whether Moodle tracks attempts,
|
|
95
|
+
// answering with an error page when it doesn't (or when the activity doesn't let students review them).
|
|
96
|
+
const report = await openSitePage(context, siteUrl, `mod/h5pactivity/report.php?id=${activityId}`);
|
|
97
|
+
try {
|
|
98
|
+
// Moodle's error page keeps the report's body id; its error box is what tells them apart.
|
|
99
|
+
if (!facts.tracked)
|
|
100
|
+
activity.tracked = (await report.locator("body#page-mod-h5pactivity-report").count()) > 0 && (await report.locator('[data-rel="fatalerror"]').count()) === 0;
|
|
101
|
+
if (activity.tracked)
|
|
96
102
|
activity.attempts = (await readH5PAttempts(report)).sort((a, b) => a.number - b.number);
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
}
|
|
103
|
+
}
|
|
104
|
+
finally {
|
|
105
|
+
await report.close().catch(() => undefined);
|
|
101
106
|
}
|
|
102
107
|
return activity;
|
|
103
108
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"h5p.js","sourceRoot":"","sources":["../../../src/areas/h5p/h5p.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,8DAA8D;AAC9D,MAAM,OAAO,qBAAsB,SAAQ,WAAW;IAC3C,IAAI,GAAG,uBAAuB,CAAC;IACxC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;IACxC,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"h5p.js","sourceRoot":"","sources":["../../../src/areas/h5p/h5p.ts"],"names":[],"mappings":"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"}
|