@agenshield/daemon 0.1.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.
Files changed (124) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +118 -0
  3. package/acl.d.ts +44 -0
  4. package/acl.d.ts.map +1 -0
  5. package/auth/index.d.ts +9 -0
  6. package/auth/index.d.ts.map +1 -0
  7. package/auth/middleware.d.ts +49 -0
  8. package/auth/middleware.d.ts.map +1 -0
  9. package/auth/passcode.d.ts +70 -0
  10. package/auth/passcode.d.ts.map +1 -0
  11. package/auth/session.d.ts +71 -0
  12. package/auth/session.d.ts.map +1 -0
  13. package/command-sync.d.ts +41 -0
  14. package/command-sync.d.ts.map +1 -0
  15. package/config/defaults.d.ts +10 -0
  16. package/config/defaults.d.ts.map +1 -0
  17. package/config/index.d.ts +7 -0
  18. package/config/index.d.ts.map +1 -0
  19. package/config/loader.d.ts +25 -0
  20. package/config/loader.d.ts.map +1 -0
  21. package/config/paths.d.ts +20 -0
  22. package/config/paths.d.ts.map +1 -0
  23. package/data/integration-catalog.d.ts +32 -0
  24. package/data/integration-catalog.d.ts.map +1 -0
  25. package/events/emitter.d.ts +126 -0
  26. package/events/emitter.d.ts.map +1 -0
  27. package/events/index.d.ts +5 -0
  28. package/events/index.d.ts.map +1 -0
  29. package/index.d.ts +19 -0
  30. package/index.d.ts.map +1 -0
  31. package/index.js +7591 -0
  32. package/main.d.ts +6 -0
  33. package/main.d.ts.map +1 -0
  34. package/main.js +7539 -0
  35. package/mcp/client.d.ts +73 -0
  36. package/mcp/client.d.ts.map +1 -0
  37. package/mcp/index.d.ts +7 -0
  38. package/mcp/index.d.ts.map +1 -0
  39. package/mcp/oauth-provider.d.ts +27 -0
  40. package/mcp/oauth-provider.d.ts.map +1 -0
  41. package/mcp/state.d.ts +31 -0
  42. package/mcp/state.d.ts.map +1 -0
  43. package/package.json +43 -0
  44. package/routes/agenco.d.ts +13 -0
  45. package/routes/agenco.d.ts.map +1 -0
  46. package/routes/auth.d.ts +11 -0
  47. package/routes/auth.d.ts.map +1 -0
  48. package/routes/config.d.ts +6 -0
  49. package/routes/config.d.ts.map +1 -0
  50. package/routes/discovery.d.ts +8 -0
  51. package/routes/discovery.d.ts.map +1 -0
  52. package/routes/exec.d.ts +6 -0
  53. package/routes/exec.d.ts.map +1 -0
  54. package/routes/fs.d.ts +6 -0
  55. package/routes/fs.d.ts.map +1 -0
  56. package/routes/health.d.ts +6 -0
  57. package/routes/health.d.ts.map +1 -0
  58. package/routes/index.d.ts +9 -0
  59. package/routes/index.d.ts.map +1 -0
  60. package/routes/marketplace.d.ts +9 -0
  61. package/routes/marketplace.d.ts.map +1 -0
  62. package/routes/rpc.d.ts +9 -0
  63. package/routes/rpc.d.ts.map +1 -0
  64. package/routes/secrets.d.ts +6 -0
  65. package/routes/secrets.d.ts.map +1 -0
  66. package/routes/security.d.ts +6 -0
  67. package/routes/security.d.ts.map +1 -0
  68. package/routes/skills.d.ts +11 -0
  69. package/routes/skills.d.ts.map +1 -0
  70. package/routes/sse.d.ts +9 -0
  71. package/routes/sse.d.ts.map +1 -0
  72. package/routes/status.d.ts +6 -0
  73. package/routes/status.d.ts.map +1 -0
  74. package/routes/wrappers.d.ts +12 -0
  75. package/routes/wrappers.d.ts.map +1 -0
  76. package/server.d.ts +18 -0
  77. package/server.d.ts.map +1 -0
  78. package/services/activity-log.d.ts +21 -0
  79. package/services/activity-log.d.ts.map +1 -0
  80. package/services/broker-bridge.d.ts +43 -0
  81. package/services/broker-bridge.d.ts.map +1 -0
  82. package/services/integration-skills.d.ts +26 -0
  83. package/services/integration-skills.d.ts.map +1 -0
  84. package/services/marketplace.d.ts +79 -0
  85. package/services/marketplace.d.ts.map +1 -0
  86. package/services/openclaw-config.d.ts +15 -0
  87. package/services/openclaw-config.d.ts.map +1 -0
  88. package/services/skill-analyzer.d.ts +21 -0
  89. package/services/skill-analyzer.d.ts.map +1 -0
  90. package/services/skill-lifecycle.d.ts +23 -0
  91. package/services/skill-lifecycle.d.ts.map +1 -0
  92. package/state/index.d.ts +76 -0
  93. package/state/index.d.ts.map +1 -0
  94. package/static.d.ts +9 -0
  95. package/static.d.ts.map +1 -0
  96. package/ui-assets/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff +0 -0
  97. package/ui-assets/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2 +0 -0
  98. package/ui-assets/assets/index-CC_zbvUx.css +1 -0
  99. package/ui-assets/assets/index-Chp3YFDr.js +947 -0
  100. package/ui-assets/assets/manrope-latin-400-normal-8tf8FM3T.woff +0 -0
  101. package/ui-assets/assets/manrope-latin-400-normal-PaqtzbVb.woff2 +0 -0
  102. package/ui-assets/assets/manrope-latin-500-normal-BYYD-dBL.woff2 +0 -0
  103. package/ui-assets/assets/manrope-latin-500-normal-DMZssgOp.woff +0 -0
  104. package/ui-assets/assets/manrope-latin-600-normal-4f0koTD-.woff2 +0 -0
  105. package/ui-assets/assets/manrope-latin-600-normal-BqgrALkZ.woff +0 -0
  106. package/ui-assets/assets/manrope-latin-700-normal-BZp_XxE4.woff2 +0 -0
  107. package/ui-assets/assets/manrope-latin-700-normal-DGRFkw-m.woff +0 -0
  108. package/ui-assets/assets/manrope-latin-800-normal-BfWYOv1c.woff2 +0 -0
  109. package/ui-assets/assets/manrope-latin-800-normal-uHUdIJgA.woff +0 -0
  110. package/ui-assets/favicon.svg +1 -0
  111. package/ui-assets/index.html +14 -0
  112. package/ui-assets/package.json +34 -0
  113. package/utils/logged-fetch.d.ts +13 -0
  114. package/utils/logged-fetch.d.ts.map +1 -0
  115. package/vault/crypto.d.ts +28 -0
  116. package/vault/crypto.d.ts.map +1 -0
  117. package/vault/index.d.ts +64 -0
  118. package/vault/index.d.ts.map +1 -0
  119. package/watchers/index.d.ts +6 -0
  120. package/watchers/index.d.ts.map +1 -0
  121. package/watchers/security.d.ts +20 -0
  122. package/watchers/security.d.ts.map +1 -0
  123. package/watchers/skills.d.ts +85 -0
  124. package/watchers/skills.d.ts.map +1 -0
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" fill="#171717" stroke="none"><path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 .67-.95l7-2.5a1 1 0 0 1 .67 0l7 2.5A1 1 0 0 1 20 6z"/></svg>
@@ -0,0 +1,14 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
+ <title>AgenShield Dashboard</title>
8
+ <script type="module" crossorigin src="/assets/index-Chp3YFDr.js"></script>
9
+ <link rel="stylesheet" crossorigin href="/assets/index-CC_zbvUx.css">
10
+ </head>
11
+ <body>
12
+ <div id="root"></div>
13
+ </body>
14
+ </html>
@@ -0,0 +1,34 @@
1
+ {
2
+ "name": "@agenshield/ui",
3
+ "version": "0.1.0",
4
+ "private": true,
5
+ "description": "AgenShield Web UI Dashboard",
6
+ "license": "MIT",
7
+ "dependencies": {
8
+ "@agenshield/ipc": "0.1.0",
9
+ "@emotion/react": "^11.14.0",
10
+ "@emotion/styled": "^11.14.0",
11
+ "@fontsource/ibm-plex-mono": "^5.2.7",
12
+ "@fontsource/manrope": "^5.2.8",
13
+ "@mui/material": "^6.4.0",
14
+ "@tanstack/react-query": "^5.60.0",
15
+ "@tanstack/react-virtual": "^3.0.0",
16
+ "@xyflow/react": "^12.0.0",
17
+ "date-fns": "^4.1.0",
18
+ "lucide-react": "^0.563.0",
19
+ "react": "^19.0.0",
20
+ "react-dom": "^19.0.0",
21
+ "react-markdown": "^10.1.0",
22
+ "react-router-dom": "^7.0.0",
23
+ "recharts": "^3.7.0",
24
+ "remark-gfm": "^4.0.1",
25
+ "valtio": "^2.3.0"
26
+ },
27
+ "devDependencies": {
28
+ "@types/react": "^19.0.0",
29
+ "@types/react-dom": "^19.0.0",
30
+ "@vitejs/plugin-react": "^4.3.0",
31
+ "typescript": "^5.9.3",
32
+ "vite": "^6.0.0"
33
+ }
34
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Logged fetch utility — wraps fetch() with console logging and SSE event emission.
3
+ * Sanitizes sensitive parameters from URLs and bodies before logging.
4
+ */
5
+ /**
6
+ * Logged fetch — wraps native fetch with request/response logging and SSE emission.
7
+ *
8
+ * @param url - The URL to fetch
9
+ * @param init - Standard RequestInit options
10
+ * @param context - A label for the call context (e.g. 'agenco:token-refresh')
11
+ */
12
+ export declare function loggedFetch(url: string, init: RequestInit, context: string): Promise<Response>;
13
+ //# sourceMappingURL=logged-fetch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logged-fetch.d.ts","sourceRoot":"","sources":["../../src/utils/logged-fetch.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA2DH;;;;;;GAMG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAkEpG"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Cryptographic utilities for vault encryption
3
+ */
4
+ /**
5
+ * Get machine-specific identifier for key derivation
6
+ * Uses hardware UUID, hostname, and user info to create a unique identifier
7
+ */
8
+ export declare function getMachineId(): string;
9
+ /**
10
+ * Derive encryption key from machine ID using scrypt
11
+ */
12
+ export declare function deriveKey(machineId: string): Buffer;
13
+ /**
14
+ * Encrypt data using AES-256-GCM
15
+ * @param data - Plaintext data to encrypt
16
+ * @param key - 32-byte encryption key
17
+ * @returns Encrypted data in format: iv:authTag:ciphertext (base64 encoded)
18
+ */
19
+ export declare function encrypt(data: string, key: Buffer): string;
20
+ /**
21
+ * Decrypt data using AES-256-GCM
22
+ * @param encryptedData - Encrypted data in format: iv:authTag:ciphertext
23
+ * @param key - 32-byte encryption key
24
+ * @returns Decrypted plaintext
25
+ * @throws Error if decryption fails (wrong key, tampered data, etc.)
26
+ */
27
+ export declare function decrypt(encryptedData: string, key: Buffer): string;
28
+ //# sourceMappingURL=crypto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../src/vault/crypto.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH;;;GAGG;AACH,wBAAgB,YAAY,IAAI,MAAM,CA0BrC;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAKnD;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAgBzD;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAqBlE"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Encrypted vault manager
3
+ *
4
+ * Provides secure storage for sensitive data like OAuth tokens
5
+ * using machine-specific encryption.
6
+ */
7
+ import type { VaultContents } from '@agenshield/ipc';
8
+ /**
9
+ * Vault manager class for encrypted storage
10
+ */
11
+ export declare class Vault {
12
+ private key;
13
+ private vaultPath;
14
+ private cache;
15
+ constructor();
16
+ /**
17
+ * Load vault contents from disk
18
+ * Returns cached contents if available
19
+ */
20
+ load(): Promise<VaultContents>;
21
+ /**
22
+ * Save vault contents to disk
23
+ */
24
+ save(contents: VaultContents): Promise<void>;
25
+ /**
26
+ * Get a specific key from vault
27
+ */
28
+ get<K extends keyof VaultContents>(key: K): Promise<VaultContents[K]>;
29
+ /**
30
+ * Set a specific key in vault
31
+ */
32
+ set<K extends keyof VaultContents>(key: K, value: VaultContents[K]): Promise<void>;
33
+ /**
34
+ * Delete a specific key from vault
35
+ */
36
+ delete<K extends keyof VaultContents>(key: K): Promise<void>;
37
+ /**
38
+ * Check if vault file exists
39
+ */
40
+ exists(): boolean;
41
+ /**
42
+ * Clear the in-memory cache
43
+ * Useful for testing or when vault file is modified externally
44
+ */
45
+ clearCache(): void;
46
+ /**
47
+ * Delete the vault file entirely
48
+ */
49
+ destroy(): Promise<void>;
50
+ /**
51
+ * Get default empty vault contents
52
+ */
53
+ private getDefaultContents;
54
+ }
55
+ /**
56
+ * Get the singleton vault instance
57
+ */
58
+ export declare function getVault(): Vault;
59
+ /**
60
+ * Reset the vault singleton (for testing)
61
+ */
62
+ export declare function resetVault(): void;
63
+ export { getMachineId, deriveKey, encrypt, decrypt } from './crypto';
64
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vault/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAKrD;;GAEG;AACH,qBAAa,KAAK;IAChB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,KAAK,CAA8B;;IAQ3C;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,aAAa,CAAC;IAwBpC;;OAEG;IACG,IAAI,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBlD;;OAEG;IACG,GAAG,CAAC,CAAC,SAAS,MAAM,aAAa,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAK3E;;OAEG;IACG,GAAG,CAAC,CAAC,SAAS,MAAM,aAAa,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxF;;OAEG;IACG,MAAM,CAAC,CAAC,SAAS,MAAM,aAAa,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAMlE;;OAEG;IACH,MAAM,IAAI,OAAO;IAIjB;;;OAGG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAO9B;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAM3B;AAKD;;GAEG;AACH,wBAAgB,QAAQ,IAAI,KAAK,CAKhC;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,IAAI,CAEjC;AAGD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Watchers module exports
3
+ */
4
+ export * from './security';
5
+ export * from './skills';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/watchers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Security status watcher
3
+ *
4
+ * Periodically checks security status and emits events when it changes.
5
+ */
6
+ /**
7
+ * Start the security watcher
8
+ *
9
+ * @param intervalMs - Check interval in milliseconds (default: 10 seconds)
10
+ */
11
+ export declare function startSecurityWatcher(intervalMs?: number): void;
12
+ /**
13
+ * Stop the security watcher
14
+ */
15
+ export declare function stopSecurityWatcher(): void;
16
+ /**
17
+ * Force an immediate security check
18
+ */
19
+ export declare function triggerSecurityCheck(): void;
20
+ //# sourceMappingURL=security.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../src/watchers/security.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAmEH;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,SAAQ,GAAG,IAAI,CAY7D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAM1C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Skills Watcher
3
+ *
4
+ * Monitors the agent's skills directory for unapproved skills.
5
+ * Unapproved skills are moved to a quarantine directory.
6
+ * Follows the pattern of the existing security watcher.
7
+ */
8
+ export interface ApprovedSkillEntry {
9
+ name: string;
10
+ approvedAt: string;
11
+ hash?: string;
12
+ publisher?: string;
13
+ }
14
+ export interface QuarantinedSkillInfo {
15
+ name: string;
16
+ quarantinedAt: string;
17
+ originalPath: string;
18
+ reason: string;
19
+ }
20
+ interface SkillsWatcherCallbacks {
21
+ onQuarantined?: (info: QuarantinedSkillInfo) => void;
22
+ onApproved?: (name: string) => void;
23
+ }
24
+ /**
25
+ * Start the skills watcher
26
+ *
27
+ * @param watchDir - The skills directory to watch (e.g., $HOME/.openclaw/skills)
28
+ * @param cbs - Callbacks for quarantine/approve events
29
+ * @param pollIntervalMs - Polling fallback interval (default: 30 seconds)
30
+ */
31
+ export declare function startSkillsWatcher(watchDir: string, cbs?: SkillsWatcherCallbacks, pollIntervalMs?: number): void;
32
+ /**
33
+ * Stop the skills watcher
34
+ */
35
+ export declare function stopSkillsWatcher(): void;
36
+ /**
37
+ * Approve a skill (move from quarantine back to skills directory)
38
+ */
39
+ export declare function approveSkill(skillName: string): {
40
+ success: boolean;
41
+ error?: string;
42
+ };
43
+ /**
44
+ * Reject a quarantined skill (permanently delete)
45
+ */
46
+ export declare function rejectSkill(skillName: string): {
47
+ success: boolean;
48
+ error?: string;
49
+ };
50
+ /**
51
+ * Revoke an approved skill (remove from approved list and quarantine)
52
+ */
53
+ export declare function revokeSkill(skillName: string): {
54
+ success: boolean;
55
+ error?: string;
56
+ };
57
+ /**
58
+ * List quarantined skills
59
+ */
60
+ export declare function listQuarantined(): QuarantinedSkillInfo[];
61
+ /**
62
+ * List approved skills
63
+ */
64
+ export declare function listApproved(): ApprovedSkillEntry[];
65
+ /**
66
+ * Force an immediate skill scan
67
+ */
68
+ export declare function triggerSkillsScan(): void;
69
+ /**
70
+ * Get the configured skills directory path
71
+ */
72
+ export declare function getSkillsDir(): string;
73
+ /**
74
+ * Add a skill to the approved list without requiring quarantine.
75
+ * Used by marketplace install to pre-approve before writing files,
76
+ * preventing a race condition with the watcher quarantining new skills.
77
+ */
78
+ export declare function addToApprovedList(skillName: string, publisher?: string): void;
79
+ /**
80
+ * Remove a skill from the approved list (without quarantining).
81
+ * Used for cleanup when marketplace install fails after pre-approval.
82
+ */
83
+ export declare function removeFromApprovedList(skillName: string): void;
84
+ export {};
85
+ //# sourceMappingURL=skills.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/watchers/skills.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAeH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,sBAAsB;IAC9B,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,IAAI,CAAC;IACrD,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAkID;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,GAAG,GAAE,sBAA2B,EAChC,cAAc,SAAQ,GACrB,IAAI,CAiCN;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAiBxC;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAmCpF;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAenF;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAkBnF;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,oBAAoB,EAAE,CAyBxD;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,kBAAkB,EAAE,CAEnD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAU7E;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAM9D"}