@activepieces/piece-coralogix 0.1.2 → 0.1.4

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 (57) hide show
  1. package/package.json +7 -12
  2. package/src/index.js +22 -61
  3. package/src/index.d.ts +0 -6
  4. package/src/index.d.ts.map +0 -1
  5. package/src/index.js.map +0 -1
  6. package/src/lib/actions/acknowledge-incidents.d.ts +0 -8
  7. package/src/lib/actions/acknowledge-incidents.d.ts.map +0 -1
  8. package/src/lib/actions/acknowledge-incidents.js +0 -36
  9. package/src/lib/actions/acknowledge-incidents.js.map +0 -1
  10. package/src/lib/actions/assign-incidents.d.ts +0 -9
  11. package/src/lib/actions/assign-incidents.d.ts.map +0 -1
  12. package/src/lib/actions/assign-incidents.js +0 -39
  13. package/src/lib/actions/assign-incidents.js.map +0 -1
  14. package/src/lib/actions/close-incidents.d.ts +0 -8
  15. package/src/lib/actions/close-incidents.d.ts.map +0 -1
  16. package/src/lib/actions/close-incidents.js +0 -34
  17. package/src/lib/actions/close-incidents.js.map +0 -1
  18. package/src/lib/actions/get-incident-by-id.d.ts +0 -8
  19. package/src/lib/actions/get-incident-by-id.d.ts.map +0 -1
  20. package/src/lib/actions/get-incident-by-id.js +0 -30
  21. package/src/lib/actions/get-incident-by-id.js.map +0 -1
  22. package/src/lib/actions/get-incident-events.d.ts +0 -8
  23. package/src/lib/actions/get-incident-events.d.ts.map +0 -1
  24. package/src/lib/actions/get-incident-events.js +0 -28
  25. package/src/lib/actions/get-incident-events.js.map +0 -1
  26. package/src/lib/actions/list-incidents.d.ts +0 -12
  27. package/src/lib/actions/list-incidents.d.ts.map +0 -1
  28. package/src/lib/actions/list-incidents.js +0 -83
  29. package/src/lib/actions/list-incidents.js.map +0 -1
  30. package/src/lib/actions/resolve-incidents.d.ts +0 -8
  31. package/src/lib/actions/resolve-incidents.d.ts.map +0 -1
  32. package/src/lib/actions/resolve-incidents.js +0 -34
  33. package/src/lib/actions/resolve-incidents.js.map +0 -1
  34. package/src/lib/actions/send-logs.d.ts +0 -18
  35. package/src/lib/actions/send-logs.d.ts.map +0 -1
  36. package/src/lib/actions/send-logs.js +0 -111
  37. package/src/lib/actions/send-logs.js.map +0 -1
  38. package/src/lib/actions/set-alert-active.d.ts +0 -9
  39. package/src/lib/actions/set-alert-active.d.ts.map +0 -1
  40. package/src/lib/actions/set-alert-active.js +0 -35
  41. package/src/lib/actions/set-alert-active.js.map +0 -1
  42. package/src/lib/common/auth.d.ts +0 -6
  43. package/src/lib/common/auth.d.ts.map +0 -1
  44. package/src/lib/common/auth.js +0 -39
  45. package/src/lib/common/auth.js.map +0 -1
  46. package/src/lib/common/client.d.ts +0 -8
  47. package/src/lib/common/client.d.ts.map +0 -1
  48. package/src/lib/common/client.js +0 -39
  49. package/src/lib/common/client.js.map +0 -1
  50. package/src/lib/triggers/new-alert-event.d.ts +0 -27
  51. package/src/lib/triggers/new-alert-event.d.ts.map +0 -1
  52. package/src/lib/triggers/new-alert-event.js +0 -95
  53. package/src/lib/triggers/new-alert-event.js.map +0 -1
  54. package/src/lib/triggers/new-incident.d.ts +0 -27
  55. package/src/lib/triggers/new-incident.d.ts.map +0 -1
  56. package/src/lib/triggers/new-incident.js +0 -78
  57. package/src/lib/triggers/new-incident.js.map +0 -1
@@ -1,27 +0,0 @@
1
- import { TriggerStrategy } from '@activepieces/pieces-framework';
2
- export declare const newAlertEvent: import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.WEBHOOK, import("@activepieces/pieces-framework").CustomAuthProperty<{
3
- personalOrTeamApiKey: import("@activepieces/pieces-framework").SecretTextProperty<true>;
4
- sendYourDataApiKey: import("@activepieces/pieces-framework").SecretTextProperty<false>;
5
- coralogixDomain: import("@activepieces/pieces-framework").StaticDropdownProperty<string, true>;
6
- }>, {
7
- setupInstructions: import("@activepieces/pieces-framework/dist/src/lib/property/input/markdown-property").MarkDownProperty;
8
- }> | import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.POLLING, import("@activepieces/pieces-framework").CustomAuthProperty<{
9
- personalOrTeamApiKey: import("@activepieces/pieces-framework").SecretTextProperty<true>;
10
- sendYourDataApiKey: import("@activepieces/pieces-framework").SecretTextProperty<false>;
11
- coralogixDomain: import("@activepieces/pieces-framework").StaticDropdownProperty<string, true>;
12
- }>, {
13
- setupInstructions: import("@activepieces/pieces-framework/dist/src/lib/property/input/markdown-property").MarkDownProperty;
14
- }> | import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.MANUAL, import("@activepieces/pieces-framework").CustomAuthProperty<{
15
- personalOrTeamApiKey: import("@activepieces/pieces-framework").SecretTextProperty<true>;
16
- sendYourDataApiKey: import("@activepieces/pieces-framework").SecretTextProperty<false>;
17
- coralogixDomain: import("@activepieces/pieces-framework").StaticDropdownProperty<string, true>;
18
- }>, {
19
- setupInstructions: import("@activepieces/pieces-framework/dist/src/lib/property/input/markdown-property").MarkDownProperty;
20
- }> | import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.APP_WEBHOOK, import("@activepieces/pieces-framework").CustomAuthProperty<{
21
- personalOrTeamApiKey: import("@activepieces/pieces-framework").SecretTextProperty<true>;
22
- sendYourDataApiKey: import("@activepieces/pieces-framework").SecretTextProperty<false>;
23
- coralogixDomain: import("@activepieces/pieces-framework").StaticDropdownProperty<string, true>;
24
- }>, {
25
- setupInstructions: import("@activepieces/pieces-framework/dist/src/lib/property/input/markdown-property").MarkDownProperty;
26
- }>;
27
- //# sourceMappingURL=new-alert-event.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"new-alert-event.d.ts","sourceRoot":"","sources":["../../../../src/lib/triggers/new-alert-event.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,eAAe,EAChB,MAAM,gCAAgC,CAAC;AAGxC,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;EAmFxB,CAAC"}
@@ -1,95 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.newAlertEvent = void 0;
4
- const tslib_1 = require("tslib");
5
- const pieces_framework_1 = require("@activepieces/pieces-framework");
6
- const auth_1 = require("../common/auth");
7
- exports.newAlertEvent = (0, pieces_framework_1.createTrigger)({
8
- auth: auth_1.coralogixAuth,
9
- name: 'newAlertEvent',
10
- displayName: 'New Alert Event',
11
- description: 'Triggers when Coralogix sends an alert-event webhook payload to this flow.',
12
- props: {
13
- setupInstructions: pieces_framework_1.Property.MarkDown({
14
- value: `
15
- ### Webhook setup in Coralogix
16
-
17
- 1. In Coralogix, go to **Alerts** and open the alert definition you want.
18
- 2. Open **Outbound Webhooks** and click **Add webhook**.
19
- 3. Select **Generic webhook**.
20
- 4. In **Webhook URL**, paste: \`{{webhookUrl}}\`
21
- 5. Keep method as **POST** and content type as **application/json**.
22
- 6. Save the webhook, then trigger a test alert to verify events are received.
23
- `,
24
- }),
25
- },
26
- type: pieces_framework_1.TriggerStrategy.WEBHOOK,
27
- sampleData: {
28
- value: '0',
29
- source: 'S3',
30
- schema: 'nginx',
31
- metric: '',
32
- log: '',
33
- correlationId: '',
34
- category: 'Security',
35
- applicationName: 'Critical app',
36
- subsystemName: 'payments',
37
- incidentIdentifier: 'abc123',
38
- alertDescription: 'check this out',
39
- timestamp: 1713175564848,
40
- tenantUrl: 'https://api.coralogix.com',
41
- fields: [
42
- {
43
- key: 'coralogix.metadata.timestamp',
44
- value: ['2024-04-15T07:26:04.848Z'],
45
- },
46
- {
47
- key: 'coralogix.metadata.severity',
48
- value: [3],
49
- },
50
- {
51
- key: 'ip',
52
- value: ['::1'],
53
- },
54
- {
55
- key: 'log',
56
- value: [
57
- '127.0.0.1 - - [17/May/2015:08:05:12 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.64.1"',
58
- ],
59
- },
60
- {
61
- key: 'message',
62
- value: ['test'],
63
- },
64
- {
65
- key: 'metric',
66
- value: [''],
67
- },
68
- {
69
- key: 'region',
70
- value: ['us-central1'],
71
- },
72
- {
73
- key: 'source',
74
- value: ['S3'],
75
- },
76
- ],
77
- },
78
- onEnable() {
79
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
80
- // Coralogix outbound webhook is configured from Coralogix UI/API.
81
- });
82
- },
83
- onDisable() {
84
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
85
- // Coralogix outbound webhook is configured from Coralogix UI/API.
86
- });
87
- },
88
- run(context) {
89
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
90
- const body = context.payload.body;
91
- return [body !== null && body !== void 0 ? body : context.payload];
92
- });
93
- },
94
- });
95
- //# sourceMappingURL=new-alert-event.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"new-alert-event.js","sourceRoot":"","sources":["../../../../src/lib/triggers/new-alert-event.ts"],"names":[],"mappings":";;;;AAAA,qEAIwC;AACxC,yCAA+C;AAElC,QAAA,aAAa,GAAG,IAAA,gCAAa,EAAC;IACzC,IAAI,EAAE,oBAAa;IACnB,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,iBAAiB;IAC9B,WAAW,EACT,4EAA4E;IAC9E,KAAK,EAAE;QACL,iBAAiB,EAAE,2BAAQ,CAAC,QAAQ,CAAC;YACnC,KAAK,EAAE;;;;;;;;;OASN;SACF,CAAC;KACH;IACD,IAAI,EAAE,kCAAe,CAAC,OAAO;IAC7B,UAAU,EAAE;QACV,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,OAAO;QACf,MAAM,EAAE,EAAE;QACV,GAAG,EAAE,EAAE;QACP,aAAa,EAAE,EAAE;QACjB,QAAQ,EAAE,UAAU;QACpB,eAAe,EAAE,cAAc;QAC/B,aAAa,EAAE,UAAU;QACzB,kBAAkB,EAAE,QAAQ;QAC5B,gBAAgB,EAAE,gBAAgB;QAClC,SAAS,EAAE,aAAa;QACxB,SAAS,EAAE,2BAA2B;QACtC,MAAM,EAAE;YACN;gBACE,GAAG,EAAE,8BAA8B;gBACnC,KAAK,EAAE,CAAC,0BAA0B,CAAC;aACpC;YACD;gBACE,GAAG,EAAE,6BAA6B;gBAClC,KAAK,EAAE,CAAC,CAAC,CAAC;aACX;YACD;gBACE,GAAG,EAAE,IAAI;gBACT,KAAK,EAAE,CAAC,KAAK,CAAC;aACf;YACD;gBACE,GAAG,EAAE,KAAK;gBACV,KAAK,EAAE;oBACL,uFAAuF;iBACxF;aACF;YACD;gBACE,GAAG,EAAE,SAAS;gBACd,KAAK,EAAE,CAAC,MAAM,CAAC;aAChB;YACD;gBACE,GAAG,EAAE,QAAQ;gBACb,KAAK,EAAE,CAAC,EAAE,CAAC;aACZ;YACD;gBACE,GAAG,EAAE,QAAQ;gBACb,KAAK,EAAE,CAAC,aAAa,CAAC;aACvB;YACD;gBACE,GAAG,EAAE,QAAQ;gBACb,KAAK,EAAE,CAAC,IAAI,CAAC;aACd;SACF;KACF;IACK,QAAQ;;YACZ,kEAAkE;QACpE,CAAC;KAAA;IACK,SAAS;;YACb,kEAAkE;QACpE,CAAC;KAAA;IACK,GAAG,CAAC,OAAO;;YACf,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;YAElC,OAAO,CAAC,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,OAAO,CAAC,OAAO,CAAC,CAAC;QACnC,CAAC;KAAA;CACF,CAAC,CAAC"}
@@ -1,27 +0,0 @@
1
- import { TriggerStrategy } from '@activepieces/pieces-framework';
2
- export declare const newIncident: import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.WEBHOOK, import("@activepieces/pieces-framework").CustomAuthProperty<{
3
- personalOrTeamApiKey: import("@activepieces/pieces-framework").SecretTextProperty<true>;
4
- sendYourDataApiKey: import("@activepieces/pieces-framework").SecretTextProperty<false>;
5
- coralogixDomain: import("@activepieces/pieces-framework").StaticDropdownProperty<string, true>;
6
- }>, {
7
- severity: import("@activepieces/pieces-framework").StaticMultiSelectDropdownProperty<string, false>;
8
- }> | import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.POLLING, import("@activepieces/pieces-framework").CustomAuthProperty<{
9
- personalOrTeamApiKey: import("@activepieces/pieces-framework").SecretTextProperty<true>;
10
- sendYourDataApiKey: import("@activepieces/pieces-framework").SecretTextProperty<false>;
11
- coralogixDomain: import("@activepieces/pieces-framework").StaticDropdownProperty<string, true>;
12
- }>, {
13
- severity: import("@activepieces/pieces-framework").StaticMultiSelectDropdownProperty<string, false>;
14
- }> | import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.MANUAL, import("@activepieces/pieces-framework").CustomAuthProperty<{
15
- personalOrTeamApiKey: import("@activepieces/pieces-framework").SecretTextProperty<true>;
16
- sendYourDataApiKey: import("@activepieces/pieces-framework").SecretTextProperty<false>;
17
- coralogixDomain: import("@activepieces/pieces-framework").StaticDropdownProperty<string, true>;
18
- }>, {
19
- severity: import("@activepieces/pieces-framework").StaticMultiSelectDropdownProperty<string, false>;
20
- }> | import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.APP_WEBHOOK, import("@activepieces/pieces-framework").CustomAuthProperty<{
21
- personalOrTeamApiKey: import("@activepieces/pieces-framework").SecretTextProperty<true>;
22
- sendYourDataApiKey: import("@activepieces/pieces-framework").SecretTextProperty<false>;
23
- coralogixDomain: import("@activepieces/pieces-framework").StaticDropdownProperty<string, true>;
24
- }>, {
25
- severity: import("@activepieces/pieces-framework").StaticMultiSelectDropdownProperty<string, false>;
26
- }>;
27
- //# sourceMappingURL=new-incident.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"new-incident.d.ts","sourceRoot":"","sources":["../../../../src/lib/triggers/new-incident.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,eAAe,EAChB,MAAM,gCAAgC,CAAC;AAOxC,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;EAgFtB,CAAC"}
@@ -1,78 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.newIncident = void 0;
4
- const tslib_1 = require("tslib");
5
- const pieces_framework_1 = require("@activepieces/pieces-framework");
6
- const pieces_common_1 = require("@activepieces/pieces-common");
7
- const auth_1 = require("../common/auth");
8
- const client_1 = require("../common/client");
9
- const STORE_KEY = 'coralogix_seen_incident_ids';
10
- exports.newIncident = (0, pieces_framework_1.createTrigger)({
11
- auth: auth_1.coralogixAuth,
12
- name: 'newIncident',
13
- displayName: 'New Incident',
14
- description: 'Triggers when a new incident appears in Coralogix. Polls on a schedule — ideal for paging on-call, creating Jira tickets, or posting to Slack.',
15
- type: pieces_framework_1.TriggerStrategy.POLLING,
16
- props: {
17
- severity: pieces_framework_1.Property.StaticMultiSelectDropdown({
18
- displayName: 'Severity Filter',
19
- description: 'Only trigger for incidents with these severities. Leave empty for all.',
20
- required: false,
21
- options: {
22
- options: [
23
- { label: 'Critical', value: 'INCIDENT_SEVERITY_CRITICAL' },
24
- { label: 'Error', value: 'INCIDENT_SEVERITY_ERROR' },
25
- { label: 'Warning', value: 'INCIDENT_SEVERITY_WARNING' },
26
- { label: 'Info', value: 'INCIDENT_SEVERITY_INFO' },
27
- { label: 'Low', value: 'INCIDENT_SEVERITY_LOW' },
28
- ],
29
- },
30
- }),
31
- },
32
- sampleData: {
33
- id: 'incident-abc-123',
34
- name: 'High error rate detected',
35
- status: 'INCIDENT_STATUS_TRIGGERED',
36
- severity: 'INCIDENT_SEVERITY_CRITICAL',
37
- createdAt: '2024-04-15T07:26:04.848Z',
38
- applicationName: ['my-app'],
39
- subsystemName: ['payments'],
40
- },
41
- onEnable(context) {
42
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
43
- var _a;
44
- const response = (yield (0, client_1.makeRequest)(context.auth, 'management', pieces_common_1.HttpMethod.POST, '/mgmt/openapi/latest/incidents/incidents/v1?filter.status=INCIDENT_STATUS_TRIGGERED&pagination.pageSize=100'));
45
- const ids = ((_a = response.incidents) !== null && _a !== void 0 ? _a : []).map((i) => i.id);
46
- yield context.store.put(STORE_KEY, ids);
47
- });
48
- },
49
- onDisable() {
50
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
51
- // nothing to clean up
52
- });
53
- },
54
- run(context) {
55
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
56
- var _a, _b;
57
- const seenIds = (_a = (yield context.store.get(STORE_KEY))) !== null && _a !== void 0 ? _a : [];
58
- const severityFilter = context.propsValue.severity;
59
- const params = [
60
- 'filter.status=INCIDENT_STATUS_TRIGGERED',
61
- 'pagination.pageSize=100',
62
- ];
63
- if (severityFilter && severityFilter.length > 0) {
64
- severityFilter.forEach((s) => params.push(`filter.severity=${encodeURIComponent(s)}`));
65
- }
66
- const queryString = params.join('&');
67
- const response = (yield (0, client_1.makeRequest)(context.auth, 'management', pieces_common_1.HttpMethod.POST, `/mgmt/openapi/latest/incidents/incidents/v1?${queryString}`));
68
- const incidents = (_b = response.incidents) !== null && _b !== void 0 ? _b : [];
69
- const newIncidents = incidents.filter((i) => !seenIds.includes(i.id));
70
- const allIds = incidents.map((i) => i.id);
71
- // merge: keep old seen IDs + new ones so we don't re-trigger if severity filter changes
72
- const mergedIds = Array.from(new Set([...seenIds, ...allIds]));
73
- yield context.store.put(STORE_KEY, mergedIds);
74
- return newIncidents;
75
- });
76
- },
77
- });
78
- //# sourceMappingURL=new-incident.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"new-incident.js","sourceRoot":"","sources":["../../../../src/lib/triggers/new-incident.ts"],"names":[],"mappings":";;;;AAAA,qEAIwC;AACxC,+DAAyD;AACzD,yCAA+C;AAC/C,6CAA+C;AAE/C,MAAM,SAAS,GAAG,6BAA6B,CAAC;AAEnC,QAAA,WAAW,GAAG,IAAA,gCAAa,EAAC;IACvC,IAAI,EAAE,oBAAa;IACnB,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,cAAc;IAC3B,WAAW,EACT,gJAAgJ;IAClJ,IAAI,EAAE,kCAAe,CAAC,OAAO;IAC7B,KAAK,EAAE;QACL,QAAQ,EAAE,2BAAQ,CAAC,yBAAyB,CAAC;YAC3C,WAAW,EAAE,iBAAiB;YAC9B,WAAW,EAAE,wEAAwE;YACrF,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE;gBACP,OAAO,EAAE;oBACP,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,4BAA4B,EAAE;oBAC1D,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,yBAAyB,EAAE;oBACpD,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,2BAA2B,EAAE;oBACxD,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,wBAAwB,EAAE;oBAClD,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,uBAAuB,EAAE;iBACjD;aACF;SACF,CAAC;KACH;IACD,UAAU,EAAE;QACV,EAAE,EAAE,kBAAkB;QACtB,IAAI,EAAE,0BAA0B;QAChC,MAAM,EAAE,2BAA2B;QACnC,QAAQ,EAAE,4BAA4B;QACtC,SAAS,EAAE,0BAA0B;QACrC,eAAe,EAAE,CAAC,QAAQ,CAAC;QAC3B,aAAa,EAAE,CAAC,UAAU,CAAC;KAC5B;IACK,QAAQ,CAAC,OAAO;;;YACpB,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAA,oBAAW,EACjC,OAAO,CAAC,IAAI,EACZ,YAAY,EACZ,0BAAU,CAAC,IAAI,EACf,6GAA6G,CAC9G,CAAqC,CAAC;YAEvC,MAAM,GAAG,GAAG,CAAC,MAAA,QAAQ,CAAC,SAAS,mCAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACxD,MAAM,OAAO,CAAC,KAAK,CAAC,GAAG,CAAW,SAAS,EAAE,GAAG,CAAC,CAAC;QACpD,CAAC;KAAA;IAEK,SAAS;;YACb,sBAAsB;QACxB,CAAC;KAAA;IAEK,GAAG,CAAC,OAAO;;;YACf,MAAM,OAAO,GAAG,MAAA,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,GAAG,CAAW,SAAS,CAAC,CAAC,mCAAI,EAAE,CAAC;YAErE,MAAM,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,QAAgC,CAAC;YAC3E,MAAM,MAAM,GAAa;gBACvB,yCAAyC;gBACzC,yBAAyB;aAC1B,CAAC;YACF,IAAI,cAAc,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChD,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAC3B,MAAM,CAAC,IAAI,CAAC,mBAAmB,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,CACxD,CAAC;YACJ,CAAC;YACD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAErC,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAA,oBAAW,EACjC,OAAO,CAAC,IAAI,EACZ,YAAY,EACZ,0BAAU,CAAC,IAAI,EACf,+CAA+C,WAAW,EAAE,CAC7D,CAAqC,CAAC;YAEvC,MAAM,SAAS,GAAG,MAAA,QAAQ,CAAC,SAAS,mCAAI,EAAE,CAAC;YAC3C,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAEtE,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC1C,wFAAwF;YACxF,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAC/D,MAAM,OAAO,CAAC,KAAK,CAAC,GAAG,CAAW,SAAS,EAAE,SAAS,CAAC,CAAC;YAExD,OAAO,YAAY,CAAC;QACtB,CAAC;KAAA;CACF,CAAC,CAAC"}