@digabi/exam-engine-rendering 19.8.0 → 19.8.3

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.
Files changed (50) hide show
  1. package/dist/Grading.d.ts +4 -0
  2. package/dist/Grading.d.ts.map +1 -0
  3. package/dist/Grading.js +109 -0
  4. package/dist/Grading.js.map +1 -0
  5. package/dist/PreviewGrading.d.ts.map +1 -1
  6. package/dist/PreviewGrading.js +9 -10
  7. package/dist/PreviewGrading.js.map +1 -1
  8. package/dist/__tests__/puppeteerUtils.js +7 -7
  9. package/dist/__tests__/puppeteerUtils.js.map +1 -1
  10. package/dist/__tests__/testCasTransition.js +2 -2
  11. package/dist/__tests__/testCasTransition.js.map +1 -1
  12. package/dist/__tests__/testChoiceAnswer.js +15 -1
  13. package/dist/__tests__/testChoiceAnswer.js.map +1 -1
  14. package/dist/__tests__/testGrading.js +20 -11
  15. package/dist/__tests__/testGrading.js.map +1 -1
  16. package/dist/__tests__/testGradingInstructionsGeneration.js +2 -2
  17. package/dist/__tests__/testGradingInstructionsGeneration.js.map +1 -1
  18. package/dist/__tests__/testOfflineGeneration.js +1 -1
  19. package/dist/__tests__/testOfflineGeneration.js.map +1 -1
  20. package/dist/__tests__/testSidebarNavigation.d.ts +2 -0
  21. package/dist/__tests__/testSidebarNavigation.d.ts.map +1 -0
  22. package/dist/__tests__/testSidebarNavigation.js +53 -0
  23. package/dist/__tests__/testSidebarNavigation.js.map +1 -0
  24. package/dist/__tests__/testTextAnswers.js +71 -0
  25. package/dist/__tests__/testTextAnswers.js.map +1 -1
  26. package/dist/__tests__/tsconfig.tsbuildinfo +1 -1
  27. package/dist/createOfflineExam.js +8 -8
  28. package/dist/createOfflineExam.js.map +1 -1
  29. package/dist/exam-loader.js +3 -3
  30. package/dist/exam-loader.js.map +1 -1
  31. package/dist/getOfflineWebpackConfig.js +18 -18
  32. package/dist/getPreviewWebpackConfig.js +12 -12
  33. package/dist/getWebpackConfig.js +18 -18
  34. package/dist/offline.js +4 -3
  35. package/dist/offline.js.map +1 -1
  36. package/dist/postcss.config.d.ts +1 -1
  37. package/dist/postcss.config.js +1 -1
  38. package/dist/preview.js +22 -19
  39. package/dist/preview.js.map +1 -1
  40. package/dist/previewExam.js +1 -1
  41. package/dist/previewExam.js.map +1 -1
  42. package/dist/utils/indexedDBExamServerAPI.js +3 -3
  43. package/dist/utils/indexedDBExamServerAPI.js.map +1 -1
  44. package/dist/utils/indexedDBGraringServerAPI.d.ts +3 -0
  45. package/dist/utils/indexedDBGraringServerAPI.d.ts.map +1 -0
  46. package/dist/utils/indexedDBGraringServerAPI.js +33 -0
  47. package/dist/utils/indexedDBGraringServerAPI.js.map +1 -0
  48. package/dist/utils/noopExamServerAPI.js +2 -2
  49. package/dist/utils/noopExamServerAPI.js.map +1 -1
  50. package/package.json +10 -10
@@ -38,19 +38,90 @@ describe('testTextAnswers.ts — Text answer interactions', () => {
38
38
  await expectToBeSaved();
39
39
  });
40
40
  it('shows the error indicator when too many answers', async () => {
41
+ var _a, _b;
41
42
  await (0, puppeteerUtils_1.loadExam)(page, ctx.url);
42
43
  await expectErrorIndicatorToDisappear();
43
44
  await type('oikea vastaus', 89);
44
45
  await type('oikea vastaus 2', 90);
45
46
  await expectErrorIndicator('Tehtävä 20: Vastaa joko kohtaan 20.1 tai 20.2.');
47
+ const questionName = await page.$('.sidebar-toc-container li[data-list-number="20."]');
48
+ const className = await ((_a = (await (questionName === null || questionName === void 0 ? void 0 : questionName.getProperty('className')))) === null || _a === void 0 ? void 0 : _a.jsonValue());
49
+ expect(className).toContain('error');
46
50
  await clearInput(90);
47
51
  await expectErrorIndicatorToDisappear();
52
+ const classNameThen = await ((_b = (await (questionName === null || questionName === void 0 ? void 0 : questionName.getProperty('className')))) === null || _b === void 0 ? void 0 : _b.jsonValue());
53
+ expect(classNameThen).not.toContain('error');
48
54
  });
49
55
  it('shows the error indicator when answer is too long', async () => {
56
+ var _a;
50
57
  await (0, puppeteerUtils_1.loadExam)(page, ctx.url);
51
58
  await expectErrorIndicatorToDisappear();
52
59
  await type('o'.repeat(241), 89);
53
60
  await expectErrorIndicator('Tehtävä 20.1: Vastaus on liian pitkä.');
61
+ const indicator = await page.$('.sidebar-toc-container div[data-indicator-id="89"]');
62
+ const className = await ((_a = (await (indicator === null || indicator === void 0 ? void 0 : indicator.getProperty('className')))) === null || _a === void 0 ? void 0 : _a.jsonValue());
63
+ expect(className).toContain('error');
64
+ });
65
+ it('opens rich text answer in writer mode, and exits', async () => {
66
+ var _a, _b;
67
+ await (0, puppeteerUtils_1.loadExam)(page, ctx.url);
68
+ const body = await page.$('body');
69
+ const fullScreenSelector = 'div[data-full-screen-id="1.2"]';
70
+ const answerText = 'vastaukseni';
71
+ await openWriterMode(page);
72
+ await type(answerText, 2);
73
+ await page.click(`${fullScreenSelector} .expand.close`);
74
+ const bodyClass = await ((_a = (await (body === null || body === void 0 ? void 0 : body.getProperty('className')))) === null || _a === void 0 ? void 0 : _a.jsonValue());
75
+ expect(bodyClass).not.toContain('writer-mode');
76
+ const fullScreen = await page.$(fullScreenSelector);
77
+ expect(fullScreen).toBeFalsy();
78
+ const answerBox = await page.$('.text-answer[data-question-id="2"]');
79
+ const answer = await ((_b = (await (answerBox === null || answerBox === void 0 ? void 0 : answerBox.getProperty('innerHTML')))) === null || _b === void 0 ? void 0 : _b.jsonValue());
80
+ expect(answer).toBe(answerText);
81
+ });
82
+ it('ESC exits writer mode', async () => {
83
+ var _a;
84
+ await (0, puppeteerUtils_1.loadExam)(page, ctx.url);
85
+ const body = await page.$('body');
86
+ const fullScreenSelector = 'div[data-full-screen-id="1.2"]';
87
+ await openWriterMode(page);
88
+ await page.keyboard.press('Escape');
89
+ const bodyClass = await ((_a = (await (body === null || body === void 0 ? void 0 : body.getProperty('className')))) === null || _a === void 0 ? void 0 : _a.jsonValue());
90
+ expect(bodyClass).not.toContain('writer-mode');
91
+ const fullScreen = await page.$(fullScreenSelector);
92
+ expect(fullScreen).toBeFalsy();
93
+ });
94
+ const openWriterMode = async (page) => {
95
+ var _a;
96
+ // focus the textarea first, because it may affect the clickability of expand button
97
+ await page.click('.text-answer[data-question-id="2"]');
98
+ await page.click('.text-answer[data-question-id="2"] + .expand');
99
+ const body = await page.$('body');
100
+ const fullScreenSelector = 'div[data-full-screen-id="1.2"]';
101
+ const fullScreen = await page.$(fullScreenSelector);
102
+ expect(fullScreen).toBeTruthy();
103
+ const bodyClass = await ((_a = (await (body === null || body === void 0 ? void 0 : body.getProperty('className')))) === null || _a === void 0 ? void 0 : _a.jsonValue());
104
+ expect(bodyClass).toContain('writer-mode');
105
+ };
106
+ it('a text answer indicator has correct state in side navigation', async () => {
107
+ var _a, _b, _c, _d, _e, _f;
108
+ await (0, puppeteerUtils_1.loadExam)(page, ctx.url);
109
+ await clearInput(90);
110
+ const indicator = await page.$('.sidebar-toc-container div[data-indicator-id="90"]');
111
+ const className = await ((_a = (await (indicator === null || indicator === void 0 ? void 0 : indicator.getProperty('className')))) === null || _a === void 0 ? void 0 : _a.jsonValue());
112
+ const indicatorValue = await ((_b = (await (indicator === null || indicator === void 0 ? void 0 : indicator.getProperty('innerHTML')))) === null || _b === void 0 ? void 0 : _b.jsonValue());
113
+ await type('testivastaus', 90);
114
+ const classNameThen = await ((_c = (await (indicator === null || indicator === void 0 ? void 0 : indicator.getProperty('className')))) === null || _c === void 0 ? void 0 : _c.jsonValue());
115
+ const indicatorValueThen = await ((_d = (await (indicator === null || indicator === void 0 ? void 0 : indicator.getProperty('innerHTML')))) === null || _d === void 0 ? void 0 : _d.jsonValue());
116
+ await clearInput(90);
117
+ const classNameFinally = await ((_e = (await (indicator === null || indicator === void 0 ? void 0 : indicator.getProperty('className')))) === null || _e === void 0 ? void 0 : _e.jsonValue());
118
+ const indicatorValueFinally = await ((_f = (await (indicator === null || indicator === void 0 ? void 0 : indicator.getProperty('innerHTML')))) === null || _f === void 0 ? void 0 : _f.jsonValue());
119
+ expect(className).not.toContain('ok');
120
+ expect(indicatorValue).toContain('');
121
+ expect(classNameThen).toContain('ok');
122
+ expect(indicatorValueThen).toContain('12');
123
+ expect(classNameFinally).not.toContain('ok');
124
+ expect(indicatorValueFinally).toContain('');
54
125
  });
55
126
  const expectErrorIndicator = async (text) => {
56
127
  await page.waitForFunction((text) => {
@@ -1 +1 @@
1
- {"version":3,"file":"testTextAnswers.js","sourceRoot":"","sources":["../../__tests__/testTextAnswers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"testTextAnswers.js","sourceRoot":"","sources":["../../__tests__/testTextAnswers.ts"],"names":[],"mappings":";;AAAA,iEAAuD;AACvD,yEAA2E;AAE3E,qDAA0E;AAE1E,QAAQ,CAAC,+CAA+C,EAAE,GAAG,EAAE;IAC7D,MAAM,UAAU,GAAG,IAAA,8BAAa,GAAE,CAAA;IAClC,IAAI,IAAU,CAAA;IACd,IAAI,GAAmB,CAAA;IAEvB,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,GAAG,GAAG,MAAM,IAAA,mCAAW,EAAC,IAAA,+BAAW,EAAC,WAAW,CAAC,CAAC,CAAA;QACjD,IAAI,GAAG,MAAM,UAAU,EAAE,CAAA;IAC3B,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,KAAK,IAAI,EAAE;QAClB,MAAM,GAAG,CAAC,KAAK,EAAE,CAAA;IACnB,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;QAC3C,MAAM,IAAA,yBAAQ,EAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAA;QAE7B,MAAM,IAAI,CAAC,GAAG,CAAC,CAAA;QACf,MAAM,wBAAwB,CAAC,CAAC,CAAC,CAAA;QAEjC,MAAM,IAAI,CAAC,GAAG,CAAC,CAAA;QACf,MAAM,wBAAwB,CAAC,CAAC,CAAC,CAAA;QAEjC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAA;QACjB,MAAM,wBAAwB,CAAC,CAAC,CAAC,CAAA;QAEjC,MAAM,UAAU,EAAE,CAAA;QAClB,MAAM,wBAAwB,CAAC,CAAC,CAAC,CAAA;IACnC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,IAAA,yBAAQ,EAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAA;QAE7B,MAAM,6BAA6B,EAAE,CAAA;QAErC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAA;QACjB,MAAM,kBAAkB,EAAE,CAAA;QAC1B,MAAM,eAAe,EAAE,CAAA;QAEvB,MAAM,IAAI,CAAC,WAAW,CAAC,CAAA;QACvB,MAAM,kBAAkB,EAAE,CAAA;QAC1B,MAAM,eAAe,EAAE,CAAA;QAEvB,MAAM,IAAA,yBAAQ,EAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAA;QAC7B,MAAM,eAAe,EAAE,CAAA;IACzB,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;;QAC/D,MAAM,IAAA,yBAAQ,EAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAA;QAC7B,MAAM,+BAA+B,EAAE,CAAA;QACvC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC,CAAA;QAC/B,MAAM,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAA;QACjC,MAAM,oBAAoB,CAAC,gDAAgD,CAAC,CAAA;QAE5E,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,mDAAmD,CAAC,CAAA;QACtF,MAAM,SAAS,GAAG,MAAM,CAAA,MAAA,CAAC,MAAM,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,WAAW,CAAC,WAAW,CAAC,CAAA,CAAC,0CAAE,SAAS,EAAE,CAAA,CAAA;QACnF,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;QAEpC,MAAM,UAAU,CAAC,EAAE,CAAC,CAAA;QACpB,MAAM,+BAA+B,EAAE,CAAA;QAEvC,MAAM,aAAa,GAAG,MAAM,CAAA,MAAA,CAAC,MAAM,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,WAAW,CAAC,WAAW,CAAC,CAAA,CAAC,0CAAE,SAAS,EAAE,CAAA,CAAA;QACvF,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;IAC9C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;;QACjE,MAAM,IAAA,yBAAQ,EAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAA;QAC7B,MAAM,+BAA+B,EAAE,CAAA;QACvC,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAA;QAC/B,MAAM,oBAAoB,CAAC,uCAAuC,CAAC,CAAA;QACnE,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,oDAAoD,CAAC,CAAA;QACpF,MAAM,SAAS,GAAG,MAAM,CAAA,MAAA,CAAC,MAAM,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,WAAW,CAAC,WAAW,CAAC,CAAA,CAAC,0CAAE,SAAS,EAAE,CAAA,CAAA;QAChF,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;IACtC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;;QAChE,MAAM,IAAA,yBAAQ,EAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAA;QAE7B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;QACjC,MAAM,kBAAkB,GAAG,gCAAgC,CAAA;QAC3D,MAAM,UAAU,GAAG,aAAa,CAAA;QAEhC,MAAM,cAAc,CAAC,IAAI,CAAC,CAAA;QAC1B,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAA;QACzB,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,kBAAkB,gBAAgB,CAAC,CAAA;QACvD,MAAM,SAAS,GAAG,MAAM,CAAA,MAAA,CAAC,MAAM,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,WAAW,CAAC,WAAW,CAAC,CAAA,CAAC,0CAAE,SAAS,EAAE,CAAA,CAAA;QAC3E,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA;QAE9C,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAA;QACnD,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE,CAAA;QAE9B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAA;QACpE,MAAM,MAAM,GAAG,MAAM,CAAA,MAAA,CAAC,MAAM,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,WAAW,CAAC,WAAW,CAAC,CAAA,CAAC,0CAAE,SAAS,EAAE,CAAA,CAAA;QAC7E,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACjC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;;QACrC,MAAM,IAAA,yBAAQ,EAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAA;QAE7B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;QACjC,MAAM,kBAAkB,GAAG,gCAAgC,CAAA;QAE3D,MAAM,cAAc,CAAC,IAAI,CAAC,CAAA;QAC1B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QACnC,MAAM,SAAS,GAAG,MAAM,CAAA,MAAA,CAAC,MAAM,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,WAAW,CAAC,WAAW,CAAC,CAAA,CAAC,0CAAE,SAAS,EAAE,CAAA,CAAA;QAC3E,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA;QAE9C,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAA;QACnD,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE,CAAA;IAChC,CAAC,CAAC,CAAA;IAEF,MAAM,cAAc,GAAG,KAAK,EAAE,IAAU,EAAE,EAAE;;QAC1C,oFAAoF;QACpF,MAAM,IAAI,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAA;QACtD,MAAM,IAAI,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAA;QAChE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;QACjC,MAAM,kBAAkB,GAAG,gCAAgC,CAAA;QAE3D,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAA;QACnD,MAAM,CAAC,UAAU,CAAC,CAAC,UAAU,EAAE,CAAA;QAE/B,MAAM,SAAS,GAAG,MAAM,CAAA,MAAA,CAAC,MAAM,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,WAAW,CAAC,WAAW,CAAC,CAAA,CAAC,0CAAE,SAAS,EAAE,CAAA,CAAA;QAC3E,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA;IAC5C,CAAC,CAAA;IAED,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;;QAC5E,MAAM,IAAA,yBAAQ,EAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAA;QAC7B,MAAM,UAAU,CAAC,EAAE,CAAC,CAAA;QACpB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,oDAAoD,CAAC,CAAA;QAEpF,MAAM,SAAS,GAAG,MAAM,CAAA,MAAA,CAAC,MAAM,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,WAAW,CAAC,WAAW,CAAC,CAAA,CAAC,0CAAE,SAAS,EAAE,CAAA,CAAA;QAChF,MAAM,cAAc,GAAG,MAAM,CAAA,MAAA,CAAC,MAAM,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,WAAW,CAAC,WAAW,CAAC,CAAA,CAAC,0CAAE,SAAS,EAAE,CAAA,CAAA;QACrF,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC,CAAA;QAC9B,MAAM,aAAa,GAAG,MAAM,CAAA,MAAA,CAAC,MAAM,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,WAAW,CAAC,WAAW,CAAC,CAAA,CAAC,0CAAE,SAAS,EAAE,CAAA,CAAA;QACpF,MAAM,kBAAkB,GAAG,MAAM,CAAA,MAAA,CAAC,MAAM,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,WAAW,CAAC,WAAW,CAAC,CAAA,CAAC,0CAAE,SAAS,EAAE,CAAA,CAAA;QACzF,MAAM,UAAU,CAAC,EAAE,CAAC,CAAA;QACpB,MAAM,gBAAgB,GAAG,MAAM,CAAA,MAAA,CAAC,MAAM,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,WAAW,CAAC,WAAW,CAAC,CAAA,CAAC,0CAAE,SAAS,EAAE,CAAA,CAAA;QACvF,MAAM,qBAAqB,GAAG,MAAM,CAAA,MAAA,CAAC,MAAM,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,WAAW,CAAC,WAAW,CAAC,CAAA,CAAC,0CAAE,SAAS,EAAE,CAAA,CAAA;QAE5F,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QACrC,MAAM,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;QACpC,MAAM,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QACrC,MAAM,CAAC,kBAAkB,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QAC1C,MAAM,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QAC5C,MAAM,CAAC,qBAAqB,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;IAC7C,CAAC,CAAC,CAAA;IAEF,MAAM,oBAAoB,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;QAClD,MAAM,IAAI,CAAC,eAAe,CACxB,CAAC,IAAY,EAAE,EAAE;YACf,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAiB,kBAAkB,CAAC,CAAA;YACjF,OAAO,CAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,SAAS,CAAC,IAAI,EAAE,MAAK,IAAI,CAAA;QAClD,CAAC,EACD,EAAE,EACF,IAAI,CACL,CAAA;IACH,CAAC,CAAA;IAED,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,UAAU,GAAG,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,kCAAkC,UAAU,IAAI,EAAE,IAAI,CAAC,CAAA;IAEjH,KAAK,UAAU,UAAU,CAAC,UAAU,GAAG,EAAE;QACvC,MAAM,IAAI,CAAC,KAAK,CAAC,kCAAkC,UAAU,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAA;QACrF,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;IACxC,CAAC;IAED,KAAK,UAAU,wBAAwB,CAAC,aAAqB,EAAE,UAAU,GAAG,EAAE;QAC5E,MAAM,IAAI,GAAG,MAAM,IAAA,+BAAc,EAAC,IAAI,EAAE,kCAAkC,UAAU,sBAAsB,CAAC,CAAA;QAC3G,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QACtC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;IACtC,CAAC;IAED,MAAM,eAAe,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,6BAA6B,CAAC,CAAA;IAEjF,MAAM,kBAAkB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,6BAA6B,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;IAEtG,MAAM,6BAA6B,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;IAErG,MAAM,+BAA+B,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;AAC1G,CAAC,CAAC,CAAA"}