@octostar/platform-api 0.5.23 → 0.5.24

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 (71) hide show
  1. package/dist/apis.d.ts +2 -2
  2. package/dist/apis.d.ts.map +1 -1
  3. package/dist/apis.js.map +1 -1
  4. package/dist/components/OsIcon.d.ts +1 -1
  5. package/dist/components/OsIcon.d.ts.map +1 -1
  6. package/dist/components/OsIcon.js.map +1 -1
  7. package/dist/components/OsRecordTitle.d.ts +3 -3
  8. package/dist/components/OsRecordTitle.d.ts.map +1 -1
  9. package/dist/components/OsRecordTitle.js.map +1 -1
  10. package/dist/components/OsTags.d.ts +1 -1
  11. package/dist/components/OsTags.d.ts.map +1 -1
  12. package/dist/components/OsTags.js.map +1 -1
  13. package/dist/components/OsTagsContextMenu.d.ts +1 -1
  14. package/dist/components/OsTagsContextMenu.d.ts.map +1 -1
  15. package/dist/components/OsTagsContextMenu.js.map +1 -1
  16. package/dist/components/TagsDots.d.ts +1 -1
  17. package/dist/components/TagsDots.d.ts.map +1 -1
  18. package/dist/components/TagsDots.js +1 -3
  19. package/dist/components/TagsDots.js.map +1 -1
  20. package/dist/constants.d.ts.map +1 -1
  21. package/dist/constants.js +2 -11
  22. package/dist/constants.js.map +1 -1
  23. package/dist/factory.d.ts +1 -1
  24. package/dist/factory.d.ts.map +1 -1
  25. package/dist/factory.js +3 -5
  26. package/dist/factory.js.map +1 -1
  27. package/dist/index.d.ts +2 -0
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +2 -0
  30. package/dist/index.js.map +1 -1
  31. package/dist/lib/AIClientImpl.d.ts +1 -1
  32. package/dist/lib/AIClientImpl.d.ts.map +1 -1
  33. package/dist/lib/AIClientImpl.js +38 -6
  34. package/dist/lib/AIClientImpl.js.map +1 -1
  35. package/dist/lib/AsyncServiceLocator.d.ts +7 -7
  36. package/dist/lib/AsyncServiceLocator.d.ts.map +1 -1
  37. package/dist/lib/AsyncServiceLocator.js +5 -3
  38. package/dist/lib/AsyncServiceLocator.js.map +1 -1
  39. package/dist/lib/FilesAPIImpl.d.ts +7 -5
  40. package/dist/lib/FilesAPIImpl.d.ts.map +1 -1
  41. package/dist/lib/FilesAPIImpl.js +48 -8
  42. package/dist/lib/FilesAPIImpl.js.map +1 -1
  43. package/dist/lib/FusionApi.d.ts +69 -0
  44. package/dist/lib/FusionApi.d.ts.map +1 -0
  45. package/dist/lib/FusionApi.js +361 -0
  46. package/dist/lib/FusionApi.js.map +1 -0
  47. package/dist/lib/LiveContextAPI.d.ts +12 -10
  48. package/dist/lib/LiveContextAPI.d.ts.map +1 -1
  49. package/dist/lib/LiveContextAPI.js +88 -73
  50. package/dist/lib/LiveContextAPI.js.map +1 -1
  51. package/dist/lib/Proxy.d.ts +1 -1
  52. package/dist/lib/Proxy.d.ts.map +1 -1
  53. package/dist/lib/Proxy.js +1 -4
  54. package/dist/lib/Proxy.js.map +1 -1
  55. package/dist/lib/userWorkspace.d.ts +1 -1
  56. package/dist/lib/userWorkspace.d.ts.map +1 -1
  57. package/dist/lib/userWorkspace.js +26 -11
  58. package/dist/lib/userWorkspace.js.map +1 -1
  59. package/dist/octostar-platform-api.js +19014 -865
  60. package/dist/type/FusionTypes.d.ts +39 -0
  61. package/dist/type/FusionTypes.d.ts.map +1 -0
  62. package/dist/type/FusionTypes.js +2 -0
  63. package/dist/type/FusionTypes.js.map +1 -0
  64. package/dist/types.d.ts +11 -11
  65. package/dist/types.d.ts.map +1 -1
  66. package/dist/types.js.map +1 -1
  67. package/dist/utils.d.ts +2 -2
  68. package/dist/utils.d.ts.map +1 -1
  69. package/dist/utils.js +0 -2
  70. package/dist/utils.js.map +1 -1
  71. package/package.json +26 -4
@@ -1,88 +1,96 @@
1
1
  import { v4 as uuidv4 } from 'uuid';
2
- import * as postRobot from 'post-robot';
3
- const CONTEXT_UPDATE_EVENT = 'context-update';
2
+ import { isEqual } from 'lodash';
3
+ const IFRAME_CHANNEL_ID_PARAM = 'octostarChannelId';
4
+ const DATA_OCTOSTAR_IFRAME_CHANNEL = 'data-octostar-iframe-channel';
4
5
  export class LiveContextAPI {
5
6
  constructor(contextData) {
6
- this.listeners = {};
7
- this.iframeChannelAttr = 'data-octostar-iframe-channel';
7
+ // Public readonly fields
8
8
  this.id = uuidv4();
9
+ this.listeners = {};
10
+ this.messageType = 'LiveContextAPI-Message';
9
11
  this.contextData = contextData;
10
- const iframeChannelId = window.frameElement?.getAttribute(this.iframeChannelAttr);
11
- this.channelId = iframeChannelId || uuidv4();
12
- this.type = iframeChannelId ? 'iframe' : 'parent';
13
- }
14
- async connectPostRobot() {
15
- const targetWindow = await this.getTargetWindow();
16
- const postRobotEventName = this.getPostRobotEventName(this.channelId);
17
- this.postRobotListener = (postRobot.on(postRobotEventName, { window: targetWindow }, (event) => {
18
- if (event.data.type === 'init') {
19
- this.setContext((context) => ({ ...context, ...event.data.context }));
20
- }
21
- else {
22
- this.setContextAndNotify((context) => ({ ...context, ...event.data.context }));
23
- }
24
- return Promise.resolve();
25
- }));
26
- await this.sendContextUpdate(true);
12
+ const iframeChannelId = new URLSearchParams(window.location.search).get(IFRAME_CHANNEL_ID_PARAM);
13
+ this.channelId = iframeChannelId ?? uuidv4();
14
+ this.type = window.top !== window ? 'iframe' : 'parent';
15
+ // Bind the message handler to maintain context
16
+ this.messageHandler = this.handleMessage.bind(this);
17
+ this.initPostRobot();
27
18
  }
28
- getConnectId(contextAPI) {
29
- return `ContextAPI-${contextAPI.id}`;
19
+ // Private methods
20
+ initPostRobot() {
21
+ window.addEventListener('message', this.messageHandler);
22
+ this.requestInit();
30
23
  }
31
- async getTargetWindow() {
32
- if (this.type === 'iframe' && window.top) {
33
- return window.top;
24
+ handleMessage(event) {
25
+ const { payload: { context: eventContext, type, channelId } = {}, type: messageType } = event.data;
26
+ if (messageType !== this.messageType || channelId !== this.channelId) {
27
+ return;
34
28
  }
35
- const iframe = document.querySelector(`iframe[${this.iframeChannelAttr}='${this.channelId}']`);
36
- if (iframe?.contentWindow) {
37
- return iframe.contentWindow;
29
+ switch (type) {
30
+ case 'init': {
31
+ this.setContext({ ...this.contextData, ...eventContext });
32
+ break;
33
+ }
34
+ case 'requestInit': {
35
+ this.sendContextUpdate(true);
36
+ break;
37
+ }
38
+ case 'update':
39
+ default: {
40
+ this.setContextAndNotify({ ...this.contextData, ...eventContext });
41
+ }
38
42
  }
39
- // Wait for the iframe to appear in the DOM
40
- return new Promise((resolve) => {
41
- const observer = new MutationObserver(() => {
42
- const iframe = document.querySelector(`iframe[${this.iframeChannelAttr}='${this.channelId}']`);
43
- if (iframe?.contentWindow) {
44
- observer.disconnect();
45
- resolve(iframe.contentWindow);
46
- }
47
- });
48
- // Start observing
49
- observer.observe(document.body, { childList: true, subtree: true });
50
- });
51
43
  }
52
- setContextAndNotify(context) {
53
- if (typeof context === 'function') {
54
- this.contextData = context(this.contextData);
44
+ requestInit() {
45
+ this.sendMessage({ type: 'requestInit' });
46
+ }
47
+ sendMessage(payload) {
48
+ const message = { payload: { ...payload, channelId: this.channelId }, type: this.messageType };
49
+ if (this.type === 'iframe') {
50
+ window.top?.postMessage({ ...message, channelId: this.channelId }, '*');
55
51
  }
56
52
  else {
57
- this.contextData = context;
53
+ document
54
+ .querySelector(`iframe[${DATA_OCTOSTAR_IFRAME_CHANNEL}="${this.channelId}"]`)
55
+ ?.contentWindow?.postMessage({ ...message, channelId: this.channelId }, '*');
58
56
  }
59
- Object.values(this.listeners).forEach(listener => listener(this.contextData));
60
57
  }
61
- getPostRobotEventName(channelId) {
62
- return `${channelId}-${CONTEXT_UPDATE_EVENT}`;
58
+ getConnectId(contextAPI) {
59
+ return `ContextAPI-${contextAPI.id}`;
63
60
  }
64
- async sendContextUpdate(isInit = false) {
65
- try {
66
- const targetWindow = await this.getTargetWindow();
67
- postRobot.send(targetWindow, this.getPostRobotEventName(this.channelId), { context: this.contextData, ...(isInit && { type: 'init' }) });
68
- }
69
- catch (error) {
70
- // Silently ignore any errors during context update
71
- console.debug('Failed to send context update:', error);
61
+ getContextDataFromParams(context) {
62
+ if (typeof context === 'function') {
63
+ return context(this.contextData);
72
64
  }
65
+ return context;
66
+ }
67
+ setContextAndNotify(context) {
68
+ this.contextData = context;
69
+ Object.values(this.listeners).forEach(listener => {
70
+ listener(this.contextData);
71
+ });
72
+ }
73
+ sendContextUpdate(isInit = false) {
74
+ const payload = {
75
+ context: this.contextData,
76
+ ...(isInit && { type: 'init' }),
77
+ };
78
+ this.sendMessage(payload);
73
79
  }
80
+ // Public methods
74
81
  getContext() {
75
82
  return this.contextData;
76
83
  }
77
- async setContext(context) {
78
- this.setContextAndNotify(context);
79
- await this.sendContextUpdate();
84
+ setContext(context) {
85
+ const contextData = this.getContextDataFromParams(context);
86
+ if (!isEqual(this.contextData, contextData)) {
87
+ this.setContextAndNotify(contextData);
88
+ this.sendContextUpdate();
89
+ }
80
90
  }
81
91
  subscribeToChanges(idOrContextListener, contextListenerOrNothing) {
82
92
  const id = typeof idOrContextListener === 'string' ? idOrContextListener : uuidv4();
83
- const contextListener = typeof idOrContextListener === 'function'
84
- ? idOrContextListener
85
- : contextListenerOrNothing;
93
+ const contextListener = typeof idOrContextListener === 'function' ? idOrContextListener : contextListenerOrNothing;
86
94
  if (!contextListener) {
87
95
  const error = new Error('Context listener is required');
88
96
  throw error;
@@ -91,30 +99,37 @@ export class LiveContextAPI {
91
99
  return id;
92
100
  }
93
101
  unsubscribeFromChanges(id) {
94
- delete this.listeners[id];
102
+ const { [id]: _, ...listeners } = this.listeners;
103
+ this.listeners = listeners;
95
104
  }
96
- addContextListener(LiveContextAPItoConnect, mapContext = (context) => context) {
105
+ addContextListener(liveContextAPItoConnect, mapContext = context => context) {
97
106
  // Merge the new context with existing context
98
- this.setContext((currentContext) => ({ ...currentContext, ...mapContext(LiveContextAPItoConnect.getContext()) }));
107
+ this.setContext(currentContext => ({
108
+ ...currentContext,
109
+ ...mapContext(liveContextAPItoConnect.getContext()),
110
+ }));
99
111
  // Subscribe to changes if id is provided
100
- const subscriptionId = this.getConnectId(LiveContextAPItoConnect);
101
- LiveContextAPItoConnect.subscribeToChanges(subscriptionId, (updatedContext) => {
102
- this.setContext((currentContext) => ({ ...currentContext, ...mapContext(updatedContext) }));
112
+ const subscriptionId = this.getConnectId(liveContextAPItoConnect);
113
+ liveContextAPItoConnect.subscribeToChanges(subscriptionId, updatedContext => {
114
+ this.setContext(currentContext => ({ ...currentContext, ...mapContext(updatedContext) }));
103
115
  });
104
116
  // Return a callback function that unsubscribes
105
- return () => this.unsubscribeFromChanges(subscriptionId);
117
+ return () => {
118
+ this.unsubscribeFromChanges(subscriptionId);
119
+ };
106
120
  }
107
121
  removeContextListener(idOrContextAPI) {
108
122
  const id = typeof idOrContextAPI === 'string' ? idOrContextAPI : this.getConnectId(idOrContextAPI);
109
123
  this.unsubscribeFromChanges(id);
110
124
  }
111
125
  connect() {
112
- const channelId = this.channelId;
113
- this.connectPostRobot();
114
- return channelId;
126
+ return this.channelId;
115
127
  }
116
128
  destroy() {
117
- this.postRobotListener?.cancel();
129
+ // Clean up all listeners
130
+ this.listeners = {};
131
+ // Remove the message event listener
132
+ window.removeEventListener('message', this.messageHandler);
118
133
  }
119
134
  }
120
135
  //# sourceMappingURL=LiveContextAPI.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LiveContextAPI.js","sourceRoot":"","sources":["../../src/lib/LiveContextAPI.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LiveContextAPI.js","sourceRoot":"","sources":["../../src/lib/LiveContextAPI.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export declare const makeProxy: <T extends object>(obj: T, excludeKeys?: (keyof T)[]) => Record<string, any>;
1
+ export declare const makeProxy: <T extends object>(obj: T, excludeKeys?: (keyof T)[]) => T;
2
2
  //# sourceMappingURL=Proxy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Proxy.d.ts","sourceRoot":"","sources":["../../src/lib/Proxy.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,MAAM,EACxC,KAAK,CAAC,EACN,cAAa,CAAC,MAAM,CAAC,CAAC,EAAO,KAC5B,MAAM,CAAC,MAAM,EAAE,GAAG,CAkBpB,CAAC"}
1
+ {"version":3,"file":"Proxy.d.ts","sourceRoot":"","sources":["../../src/lib/Proxy.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,MAAM,EAAE,KAAK,CAAC,EAAE,cAAa,CAAC,MAAM,CAAC,CAAC,EAAO,KAAG,CAcnF,CAAC"}
package/dist/lib/Proxy.js CHANGED
@@ -1,13 +1,10 @@
1
- /* eslint-disable no-restricted-syntax */
2
1
  export const makeProxy = (obj, excludeKeys = []) => {
3
2
  const proxyObj = {};
4
3
  // Get prototype methods
5
4
  const proto = Object.getPrototypeOf(obj);
6
5
  if (proto) {
7
6
  for (const key of Object.getOwnPropertyNames(proto)) {
8
- if (key !== 'constructor' &&
9
- typeof proto[key] === 'function' &&
10
- !excludeKeys.includes(key)) {
7
+ if (key !== 'constructor' && typeof proto[key] === 'function' && !excludeKeys.includes(key)) {
11
8
  proxyObj[key] = proto[key].bind(obj);
12
9
  }
13
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Proxy.js","sourceRoot":"","sources":["../../src/lib/Proxy.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,GAAM,EACN,cAA2B,EAAE,EACR,EAAE;IACvB,MAAM,QAAQ,GAAwB,EAAE,CAAC;IAEzC,wBAAwB;IACxB,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,KAAK,EAAE,CAAC;QACV,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAmB,EAAE,CAAC;YACtE,IACE,GAAG,KAAK,aAAa;gBACrB,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,UAAU;gBAChC,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAC1B,CAAC;gBACD,QAAQ,CAAC,GAAa,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC"}
1
+ {"version":3,"file":"Proxy.js","sourceRoot":"","sources":["../../src/lib/Proxy.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG,CAAmB,GAAM,EAAE,cAA2B,EAAE,EAAK,EAAE;IACtF,MAAM,QAAQ,GAAwB,EAAE,CAAC;IAEzC,wBAAwB;IACxB,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,KAAK,EAAE,CAAC;QACV,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAgB,EAAE,CAAC;YACnE,IAAI,GAAG,KAAK,aAAa,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,UAAU,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC5F,QAAQ,CAAC,GAAa,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,QAAa,CAAC;AACvB,CAAC,CAAC"}
@@ -1,3 +1,3 @@
1
- import { Desktop, Ontology, WorkspaceItem } from '@octostar/platform-types';
1
+ import { type Desktop, type Ontology, type WorkspaceItem } from '@octostar/platform-types';
2
2
  export declare const getOrCreateUsersPrivateWorkspaceRecord: (desktop: Desktop, ontology: Ontology) => Promise<WorkspaceItem>;
3
3
  //# sourceMappingURL=userWorkspace.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"userWorkspace.d.ts","sourceRoot":"","sources":["../../src/lib/userWorkspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAK5E,eAAO,MAAM,sCAAsC,GACjD,SAAS,OAAO,EAChB,UAAU,QAAQ,KACjB,OAAO,CAAC,aAAa,CAgBvB,CAAC"}
1
+ {"version":3,"file":"userWorkspace.d.ts","sourceRoot":"","sources":["../../src/lib/userWorkspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAO3F,eAAO,MAAM,sCAAsC,GACjD,SAAS,OAAO,EAChB,UAAU,QAAQ,KACjB,OAAO,CAAC,aAAa,CAkCvB,CAAC"}
@@ -1,19 +1,34 @@
1
1
  import { v5 as uuidv5 } from 'uuid';
2
2
  const NAMESPACE = '9a5e7f16-23c0-49c0-8339-b441d8a84373';
3
+ const pending = new Map();
3
4
  export const getOrCreateUsersPrivateWorkspaceRecord = async (desktop, ontology) => {
4
5
  const user = await desktop.whoami();
5
6
  const entity_id = uuidv5(user.username, NAMESPACE);
6
- const not_in_database = `This entity is not in the database ${Date.now()}`;
7
- const workspace = await ontology.getEntity({
8
- entity_type: 'os_workspace',
9
- entity_id,
10
- entity_label: not_in_database,
11
- });
12
- if (workspace.entity_label === not_in_database) {
13
- return desktop.createWorkspace(`${user.username} Workspace`, {
14
- id: entity_id,
15
- });
7
+ const inProgress = pending.get(entity_id);
8
+ if (inProgress) {
9
+ return inProgress;
16
10
  }
17
- return workspace;
11
+ const promise = (async () => {
12
+ try {
13
+ const not_in_database = `This entity is not in the database ${Date.now()}`;
14
+ let workspace = await ontology.getEntity({
15
+ entity_type: 'os_workspace',
16
+ entity_id,
17
+ entity_label: not_in_database,
18
+ });
19
+ if (workspace.entity_label === not_in_database) {
20
+ workspace = await desktop.createWorkspace(`${user.username} Workspace`, {
21
+ entity_id,
22
+ '#quietly': true,
23
+ });
24
+ }
25
+ return workspace;
26
+ }
27
+ finally {
28
+ pending.delete(entity_id);
29
+ }
30
+ })();
31
+ pending.set(entity_id, promise);
32
+ return promise;
18
33
  };
19
34
  //# sourceMappingURL=userWorkspace.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"userWorkspace.js","sourceRoot":"","sources":["../../src/lib/userWorkspace.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAEpC,MAAM,SAAS,GAAG,sCAAsC,CAAC;AAEzD,MAAM,CAAC,MAAM,sCAAsC,GAAG,KAAK,EACzD,OAAgB,EAChB,QAAkB,EACM,EAAE;IAC1B,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;IACpC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACnD,MAAM,eAAe,GAAG,sCAAsC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IAE3E,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAgB;QACxD,WAAW,EAAE,cAAc;QAC3B,SAAS;QACT,YAAY,EAAE,eAAe;KAC9B,CAAC,CAAC;IACH,IAAI,SAAS,CAAC,YAAY,KAAK,eAAe,EAAE,CAAC;QAC/C,OAAO,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,QAAQ,YAAY,EAAE;YAC3D,EAAE,EAAE,SAAS;SACd,CAAC,CAAC;IACL,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC"}
1
+ {"version":3,"file":"userWorkspace.js","sourceRoot":"","sources":["../../src/lib/userWorkspace.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAEpC,MAAM,SAAS,GAAG,sCAAsC,CAAC;AAEzD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkC,CAAC;AAE1D,MAAM,CAAC,MAAM,sCAAsC,GAAG,KAAK,EACzD,OAAgB,EAChB,QAAkB,EACM,EAAE;IAC1B,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;IACpC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAEnD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,KAAK,IAAI,EAAE;QAC1B,IAAI,CAAC;YACH,MAAM,eAAe,GAAG,sCAAsC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YAE3E,IAAI,SAAS,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAgB;gBACtD,WAAW,EAAE,cAAc;gBAC3B,SAAS;gBACT,YAAY,EAAE,eAAe;aAC9B,CAAC,CAAC;YAEH,IAAI,SAAS,CAAC,YAAY,KAAK,eAAe,EAAE,CAAC;gBAC/C,SAAS,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,QAAQ,YAAY,EAAE;oBACtE,SAAS;oBACT,UAAU,EAAE,IAAI;iBACjB,CAAC,CAAC;YACL,CAAC;YAED,OAAO,SAAS,CAAC;QACnB,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAChC,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}