@actuate-media/cms-admin 0.72.1 → 0.72.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 (65) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/dist/__tests__/components/toggle.test.d.ts +2 -0
  3. package/dist/__tests__/components/toggle.test.d.ts.map +1 -0
  4. package/dist/__tests__/components/toggle.test.js +17 -0
  5. package/dist/__tests__/components/toggle.test.js.map +1 -0
  6. package/dist/__tests__/views/post-fields-modal.render.test.js +38 -0
  7. package/dist/__tests__/views/post-fields-modal.render.test.js.map +1 -1
  8. package/dist/actuate-admin.css +1 -1
  9. package/dist/components/MediaPickerModal.d.ts.map +1 -1
  10. package/dist/components/MediaPickerModal.js +1 -1
  11. package/dist/components/MediaPickerModal.js.map +1 -1
  12. package/dist/components/TagInput.js +1 -1
  13. package/dist/components/TagInput.js.map +1 -1
  14. package/dist/components/ui/Modal.d.ts +17 -1
  15. package/dist/components/ui/Modal.d.ts.map +1 -1
  16. package/dist/components/ui/Modal.js +29 -3
  17. package/dist/components/ui/Modal.js.map +1 -1
  18. package/dist/components/ui/Toggle.d.ts.map +1 -1
  19. package/dist/components/ui/Toggle.js +4 -3
  20. package/dist/components/ui/Toggle.js.map +1 -1
  21. package/dist/fields/RichTextField.d.ts +3 -1
  22. package/dist/fields/RichTextField.d.ts.map +1 -1
  23. package/dist/fields/RichTextField.js +2 -2
  24. package/dist/fields/RichTextField.js.map +1 -1
  25. package/dist/views/Dashboard.d.ts.map +1 -1
  26. package/dist/views/Dashboard.js +1 -1
  27. package/dist/views/Dashboard.js.map +1 -1
  28. package/dist/views/page-editor/EditorCanvas.d.ts.map +1 -1
  29. package/dist/views/page-editor/EditorCanvas.js +1 -1
  30. package/dist/views/page-editor/EditorCanvas.js.map +1 -1
  31. package/dist/views/page-editor/PagePreview.js +1 -1
  32. package/dist/views/page-editor/PagePreview.js.map +1 -1
  33. package/dist/views/page-editor/SectionInspector.d.ts +4 -1
  34. package/dist/views/page-editor/SectionInspector.d.ts.map +1 -1
  35. package/dist/views/page-editor/SectionInspector.js +8 -2
  36. package/dist/views/page-editor/SectionInspector.js.map +1 -1
  37. package/dist/views/post-editor/PostEditorCanvas.js +1 -1
  38. package/dist/views/post-editor/PostEditorCanvas.js.map +1 -1
  39. package/dist/views/post-editor/PostFieldsModal.d.ts +1 -1
  40. package/dist/views/post-editor/PostFieldsModal.d.ts.map +1 -1
  41. package/dist/views/post-editor/PostFieldsModal.js +152 -13
  42. package/dist/views/post-editor/PostFieldsModal.js.map +1 -1
  43. package/dist/views/post-editor/PostPreview.js +1 -1
  44. package/dist/views/post-editor/PostPreview.js.map +1 -1
  45. package/dist/views/post-editor/PostSectionEditor.d.ts.map +1 -1
  46. package/dist/views/post-editor/PostSectionEditor.js +6 -1
  47. package/dist/views/post-editor/PostSectionEditor.js.map +1 -1
  48. package/package.json +1 -1
  49. package/src/__tests__/components/toggle.test.tsx +17 -0
  50. package/src/__tests__/views/post-fields-modal.render.test.tsx +54 -0
  51. package/src/components/MediaPickerModal.tsx +6 -2
  52. package/src/components/TagInput.tsx +1 -1
  53. package/src/components/ui/Modal.tsx +46 -3
  54. package/src/components/ui/Toggle.tsx +4 -3
  55. package/src/fields/RichTextField.tsx +4 -1
  56. package/src/styles/actuate-tokens.css +7 -2
  57. package/src/styles/theme.css +34 -8
  58. package/src/views/Dashboard.tsx +2 -1
  59. package/src/views/page-editor/EditorCanvas.tsx +4 -1
  60. package/src/views/page-editor/PagePreview.tsx +1 -1
  61. package/src/views/page-editor/SectionInspector.tsx +23 -1
  62. package/src/views/post-editor/PostEditorCanvas.tsx +1 -1
  63. package/src/views/post-editor/PostFieldsModal.tsx +412 -174
  64. package/src/views/post-editor/PostPreview.tsx +1 -1
  65. package/src/views/post-editor/PostSectionEditor.tsx +8 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,58 @@
1
1
  # @actuate-media/cms-admin
2
2
 
3
+ ## 0.72.3
4
+
5
+ ### Patch Changes
6
+
7
+ - d1ffaeb: Darken the `--muted` text token to meet WCAG AA contrast.
8
+
9
+ Section labels, hint/help text, and muted icons used `--muted` at the raw
10
+ design-token value (#B0ADBE light / #504E68 dark), which is ~2.2:1 against
11
+ card surfaces — barely visible. The token is now #716E83 (light) and
12
+ #8784A2 (dark): >=4.5:1 on card and page backgrounds in both modes, while
13
+ staying one step lighter than `--sub` so the text hierarchy (txt > sub >
14
+ muted) is preserved everywhere the token is used.
15
+
16
+ Also marks the dashboard's literal date line as `data-volatile` so visual
17
+ regression tests mask it instead of drifting daily.
18
+
19
+ Fix toggle thumb alignment to match the design system's `.tog-thumb`
20
+ handoff: absolute positioning at `top/left: 2.5px`, sliding to `left:
21
+ 19.5px` when checked. The previous flex + translate layout pinned the knob
22
+ to the top of the 21px track and left it 2px short horizontally when on.
23
+
24
+ - d1ffaeb: Improve the post fields modal layout and fix nested media picker stacking.
25
+ - Widen the Post details dialog (`Modal` size `lg`) for metadata-only setup
26
+ (title, slug, excerpt, featured image, SEO). Body editing moves to the
27
+ Article Body section inspector on the canvas.
28
+ - Use visible `border-border` inputs (replacing transparent `border-input`) to
29
+ match the body editor chrome.
30
+ - Add AI generate buttons for excerpt, SEO title, and SEO description (coauthor
31
+ for unsaved drafts; governed SEO endpoint when the post is persisted).
32
+ - Raise `MediaPickerModal` to z-70 so Browse opens above z-60 form modals.
33
+ - Confirm before closing the post details dialog when there are unsaved edits
34
+ (outside click, Escape, header X, or Cancel).
35
+
36
+ ## 0.72.2
37
+
38
+ ### Patch Changes
39
+
40
+ - 4f1b8e0: Protect the admin shell from consumer site CSS and add a sanctioned canvas styling hook.
41
+
42
+ Consumer apps import their site stylesheet into the admin route so the
43
+ page-editor canvas can preview brand styles — but site rules that target
44
+ `.actuate-admin` (or tie with it in `@layer base`) were overriding the admin
45
+ shell's inherited typography, washing out text color and inflating font
46
+ sizes across every admin view.
47
+ - Admin base typography now uses doubled `.actuate-admin.actuate-admin`
48
+ specificity, so same-layer consumer rules can no longer override the
49
+ shell's color, font size, or line height regardless of stylesheet order.
50
+ - The editor canvas and preview surfaces expose a stable `actuate-canvas`
51
+ class. Site styles that should render inside the canvas preview should be
52
+ scoped `.actuate-admin .actuate-canvas …` instead of styling
53
+ `.actuate-admin` directly. Admin heading sizing reverts inside the canvas
54
+ so the preview reflects the site's typographic context.
55
+
3
56
  ## 0.72.1
4
57
 
5
58
  ### Patch Changes
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=toggle.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toggle.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/components/toggle.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ // @vitest-environment happy-dom
3
+ import { afterEach, describe, expect, it } from 'vitest';
4
+ import { cleanup, render, screen } from '@testing-library/react';
5
+ import { Toggle } from '../../components/ui/Toggle.js';
6
+ afterEach(cleanup);
7
+ describe('Toggle', () => {
8
+ it('positions the thumb with design-system absolute offsets', () => {
9
+ render(_jsx(Toggle, { checked: false, onCheckedChange: () => { }, "aria-label": "Test toggle" }));
10
+ const thumb = screen.getByRole('switch').querySelector('span');
11
+ expect(thumb?.className).toContain('absolute');
12
+ expect(thumb?.className).toContain('top-[2.5px]');
13
+ expect(thumb?.className).toContain('left-[2.5px]');
14
+ expect(thumb?.className).toContain('data-[state=checked]:left-[19.5px]');
15
+ });
16
+ });
17
+ //# sourceMappingURL=toggle.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toggle.test.js","sourceRoot":"","sources":["../../../src/__tests__/components/toggle.test.tsx"],"names":[],"mappings":";AAAA,gCAAgC;AAChC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAEtD,SAAS,CAAC,OAAO,CAAC,CAAA;AAElB,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,CAAC,KAAC,MAAM,IAAC,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,EAAE,GAAE,CAAC,gBAAa,aAAa,GAAG,CAAC,CAAA;QACtF,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;QAC9D,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;QAC9C,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA;QACjD,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAA;QAClD,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC,oCAAoC,CAAC,CAAA;IAC1E,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -17,6 +17,15 @@ vi.mock('../../lib/api.js', () => ({
17
17
  vi.mock('../../fields/RichTextField.js', () => ({
18
18
  RichTextField: () => _jsx("div", { "data-testid": "rich-text" }),
19
19
  }));
20
+ vi.mock('../../lib/coauthor-client.js', () => ({
21
+ coauthorText: vi.fn(async () => ({
22
+ ok: true,
23
+ result: { action: 'compress', text: 'AI excerpt' },
24
+ })),
25
+ }));
26
+ vi.mock('../../lib/seo-service.js', () => ({
27
+ generateSeoField: vi.fn(async () => ({ text: 'AI SEO title' })),
28
+ }));
20
29
  const { PostFieldsModal } = await import('../../views/post-editor/PostFieldsModal.js');
21
30
  function basePost(over = {}) {
22
31
  return {
@@ -82,5 +91,34 @@ describe('PostFieldsModal', () => {
82
91
  fireEvent.click(screen.getByRole('button', { name: 'Done' }));
83
92
  expect(onSave).toHaveBeenCalledWith(expect.objectContaining({ category: 'tutorials', tags: ['AI', 'CMS'] }));
84
93
  });
94
+ it('derives slug from title until the slug field is edited', () => {
95
+ render(_jsx(PostFieldsModal, { open: true, post: basePost({ title: '', slug: '' }), canEdit: true, onClose: () => { }, onSave: () => { } }));
96
+ fireEvent.change(screen.getByLabelText(/^Title/), { target: { value: 'Hello World' } });
97
+ expect(screen.getByLabelText(/^Slug/).value).toBe('hello-world');
98
+ fireEvent.change(screen.getByLabelText(/^Slug/), { target: { value: 'custom-slug' } });
99
+ fireEvent.change(screen.getByLabelText(/^Title/), { target: { value: 'Changed Title' } });
100
+ expect(screen.getByLabelText(/^Slug/).value).toBe('custom-slug');
101
+ });
102
+ it('exposes AI generate controls for excerpt and SEO fields', () => {
103
+ render(_jsx(PostFieldsModal, { open: true, post: basePost(), canEdit: true, onClose: () => { }, onSave: () => { } }));
104
+ expect(screen.getByRole('button', { name: 'Generate excerpt from content' })).toBeTruthy();
105
+ expect(screen.getByRole('button', { name: 'Generate SEO title from content' })).toBeTruthy();
106
+ expect(screen.getByRole('button', { name: 'Generate SEO description from content' })).toBeTruthy();
107
+ });
108
+ it('prompts before discarding when Cancel is clicked with unsaved edits', () => {
109
+ const onClose = vi.fn();
110
+ render(_jsx(PostFieldsModal, { open: true, post: basePost(), canEdit: true, onClose: onClose, onSave: () => { } }));
111
+ fireEvent.change(screen.getByLabelText(/^Title/), { target: { value: 'Changed title' } });
112
+ fireEvent.click(screen.getByRole('button', { name: 'Cancel' }));
113
+ expect(onClose).not.toHaveBeenCalled();
114
+ expect(screen.getByRole('dialog', { name: 'Discard unsaved changes?' })).toBeTruthy();
115
+ });
116
+ it('closes without prompting when nothing changed', () => {
117
+ const onClose = vi.fn();
118
+ render(_jsx(PostFieldsModal, { open: true, post: basePost(), canEdit: true, onClose: onClose, onSave: () => { } }));
119
+ fireEvent.click(screen.getByRole('button', { name: 'Cancel' }));
120
+ expect(onClose).toHaveBeenCalledTimes(1);
121
+ expect(screen.queryByRole('dialog', { name: 'Discard unsaved changes?' })).toBeNull();
122
+ });
85
123
  });
86
124
  //# sourceMappingURL=post-fields-modal.render.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"post-fields-modal.render.test.js","sourceRoot":"","sources":["../../../src/__tests__/views/post-fields-modal.render.test.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"post-fields-modal.render.test.js","sourceRoot":"","sources":["../../../src/__tests__/views/post-fields-modal.render.test.tsx"],"names":[],"mappings":";AAAA,gCAAgC;AAChC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAElE;;;;;GAKG;AAEH,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;AAExF,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,CAAC;IACjC,MAAM,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,MAAM,CAAC,GAAI,IAAW,CAAC;IACvD,eAAe,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC;CACvC,CAAC,CAAC,CAAA;AAEH,6DAA6D;AAC7D,EAAE,CAAC,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE,CAAC,CAAC;IAC9C,aAAa,EAAE,GAAG,EAAE,CAAC,6BAAiB,WAAW,GAAG;CACrD,CAAC,CAAC,CAAA;AAEH,EAAE,CAAC,IAAI,CAAC,8BAA8B,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7C,YAAY,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAC/B,EAAE,EAAE,IAAI;QACR,MAAM,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE;KACnD,CAAC,CAAC;CACJ,CAAC,CAAC,CAAA;AAEH,EAAE,CAAC,IAAI,CAAC,0BAA0B,EAAE,GAAG,EAAE,CAAC,CAAC;IACzC,gBAAgB,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;CAChE,CAAC,CAAC,CAAA;AAEH,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,4CAA4C,CAAC,CAAA;AAGtF,SAAS,QAAQ,CAAC,OAAoC,EAAE;IACtD,OAAO;QACL,EAAE,EAAE,IAAI;QACR,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,EAAE;QACX,aAAa,EAAE,EAAE;QACjB,IAAI,EAAE,EAAE;QACR,QAAQ,EAAE,EAAE;QACZ,IAAI,EAAE,EAAE;QACR,MAAM,EAAE,OAAO;QACf,WAAW,EAAE,IAAI;QACjB,QAAQ,EAAE,EAAE;QACZ,QAAQ,EAAE,EAAE;QACZ,cAAc,EAAE,EAAE;QAClB,WAAW,EAAE,IAAI;QACjB,SAAS,EAAE,IAAI;QACf,GAAG,IAAI;KACR,CAAA;AACH,CAAC;AAED,MAAM,aAAa,GAAyB;IAC1C,QAAQ,EAAE;QACR,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE;YACP,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;YAChC,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;SAC3C;KACF;IACD,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE;CACrC,CAAA;AAED,UAAU,CAAC,GAAG,EAAE;IACd,MAAM,CAAC,SAAS,EAAE,CAAA;AACpB,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,CACJ,KAAC,eAAe,IACd,IAAI,QACJ,IAAI,EAAE,QAAQ,EAAE,EAChB,OAAO,QACP,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,EACjB,MAAM,EAAE,GAAG,EAAE,GAAE,CAAC,GAChB,CACH,CAAA;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,UAAU,CAAsB,CAAA;QACrE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACrC,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAA;QAC5D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAA;IAC9D,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uEAAuE,EAAE,GAAG,EAAE;QAC/E,MAAM,CACJ,KAAC,eAAe,IACd,IAAI,QACJ,IAAI,EAAE,QAAQ,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,EAC1C,OAAO,QACP,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,EACjB,MAAM,EAAE,GAAG,EAAE,GAAE,CAAC,GAChB,CACH,CAAA;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,UAAU,CAAsB,CAAA;QACrE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IACzC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,CAAC,KAAC,eAAe,IAAC,IAAI,QAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,OAAO,QAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,GAAE,CAAC,GAAI,CAAC,CAAA;QAC/F,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,UAAU,CAAqB,CAAA;QACnE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACnC,oCAAoC;QACpC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;IACpD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,EAAE,CAAA;QACtB,MAAM,CACJ,KAAC,eAAe,IACd,IAAI,QACJ,IAAI,EAAE,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAChC,OAAO,QACP,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,EACjB,MAAM,EAAE,MAAM,GACd,CACH,CAAA;QACD,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,CAAC,CAAA;QACvF,MAAM,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA;QAC9C,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAA;QACxD,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAA;QAC7C,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;QAC7D,MAAM,CAAC,MAAM,CAAC,CAAC,oBAAoB,CACjC,MAAM,CAAC,gBAAgB,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CACxE,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,CACJ,KAAC,eAAe,IACd,IAAI,QACJ,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EACvC,OAAO,QACP,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,EACjB,MAAM,EAAE,GAAG,EAAE,GAAE,CAAC,GAChB,CACH,CAAA;QACD,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,CAAC,CAAA;QACvF,MAAM,CAAE,MAAM,CAAC,cAAc,CAAC,OAAO,CAAsB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QACtF,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,CAAC,CAAA;QACtF,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE,CAAC,CAAA;QACzF,MAAM,CAAE,MAAM,CAAC,cAAc,CAAC,OAAO,CAAsB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IACxF,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,CAAC,KAAC,eAAe,IAAC,IAAI,QAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,OAAO,QAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,GAAE,CAAC,GAAI,CAAC,CAAA;QAC/F,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,+BAA+B,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;QAC1F,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,iCAAiC,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;QAC5F,MAAM,CACJ,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,uCAAuC,EAAE,CAAC,CAC9E,CAAC,UAAU,EAAE,CAAA;IAChB,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,MAAM,OAAO,GAAG,EAAE,CAAC,EAAE,EAAE,CAAA;QACvB,MAAM,CAAC,KAAC,eAAe,IAAC,IAAI,QAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,OAAO,QAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,GAAE,CAAC,GAAI,CAAC,CAAA;QAC9F,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE,CAAC,CAAA;QACzF,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAA;QAC/D,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAA;QACtC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;IACvF,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,OAAO,GAAG,EAAE,CAAC,EAAE,EAAE,CAAA;QACvB,MAAM,CAAC,KAAC,eAAe,IAAC,IAAI,QAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,OAAO,QAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,GAAE,CAAC,GAAI,CAAC,CAAA;QAC9F,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAA;QAC/D,MAAM,CAAC,OAAO,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAA;QACxC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;IACvF,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}