@pulumi/digitalocean 4.56.0-alpha.1766426892 → 4.56.0-alpha.1766428645

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 (51) hide show
  1. package/app.d.ts +12 -0
  2. package/app.js +2 -0
  3. package/app.js.map +1 -1
  4. package/byoipPrefix.d.ts +148 -0
  5. package/byoipPrefix.js +101 -0
  6. package/byoipPrefix.js.map +1 -0
  7. package/containerRegistries.d.ts +53 -0
  8. package/containerRegistries.js +64 -0
  9. package/containerRegistries.js.map +1 -0
  10. package/databaseLogsinkOpensearch.d.ts +246 -0
  11. package/databaseLogsinkOpensearch.js +192 -0
  12. package/databaseLogsinkOpensearch.js.map +1 -0
  13. package/databaseLogsinkRsyslog.d.ts +286 -0
  14. package/databaseLogsinkRsyslog.js +192 -0
  15. package/databaseLogsinkRsyslog.js.map +1 -0
  16. package/getByoipPrefix.d.ts +122 -0
  17. package/getByoipPrefix.js +90 -0
  18. package/getByoipPrefix.js.map +1 -0
  19. package/getByoipPrefixResources.d.ts +94 -0
  20. package/getByoipPrefixResources.js +80 -0
  21. package/getByoipPrefixResources.js.map +1 -0
  22. package/getContainerRegistries.d.ts +31 -0
  23. package/getContainerRegistries.js +22 -0
  24. package/getContainerRegistries.js.map +1 -0
  25. package/getKubernetesCluster.d.ts +6 -0
  26. package/getKubernetesCluster.js +4 -0
  27. package/getKubernetesCluster.js.map +1 -1
  28. package/getNfs.d.ts +97 -0
  29. package/getNfs.js +58 -0
  30. package/getNfs.js.map +1 -0
  31. package/getNfsSnapshot.d.ts +58 -0
  32. package/getNfsSnapshot.js +42 -0
  33. package/getNfsSnapshot.js.map +1 -0
  34. package/index.d.ts +36 -0
  35. package/index.js +55 -4
  36. package/index.js.map +1 -1
  37. package/kubernetesCluster.d.ts +15 -0
  38. package/kubernetesCluster.js +4 -0
  39. package/kubernetesCluster.js.map +1 -1
  40. package/nfs.d.ts +142 -0
  41. package/nfs.js +103 -0
  42. package/nfs.js.map +1 -0
  43. package/nfsAttachment.d.ts +96 -0
  44. package/nfsAttachment.js +95 -0
  45. package/nfsAttachment.js.map +1 -0
  46. package/nfsSnapshot.d.ts +124 -0
  47. package/nfsSnapshot.js +99 -0
  48. package/nfsSnapshot.js.map +1 -0
  49. package/package.json +2 -2
  50. package/types/input.d.ts +25 -0
  51. package/types/output.d.ts +37 -0
@@ -0,0 +1,246 @@
1
+ import * as pulumi from "@pulumi/pulumi";
2
+ /**
3
+ * Provides a DigitalOcean database logsink resource allowing you to forward logs from a managed database cluster to an external OpenSearch cluster or Elasticsearch endpoint.
4
+ *
5
+ * This resource is compatible with both OpenSearch and Elasticsearch endpoints due to API compatibility. You can use this resource to connect to either service.
6
+ *
7
+ * This resource supports the following DigitalOcean managed database engines:
8
+ *
9
+ * * PostgreSQL
10
+ * * MySQL
11
+ * * Kafka
12
+ * * Valkey
13
+ *
14
+ * **Note**: MongoDB databases use a different log forwarding mechanism and require Datadog logsinks (not currently available in this provider).
15
+ *
16
+ * ## Example Usage
17
+ *
18
+ * ### Basic OpenSearch configuration
19
+ *
20
+ * ```typescript
21
+ * import * as pulumi from "@pulumi/pulumi";
22
+ * import * as digitalocean from "@pulumi/digitalocean";
23
+ *
24
+ * const postgres_example = new digitalocean.DatabaseCluster("postgres-example", {
25
+ * name: "example-postgres-cluster",
26
+ * engine: "pg",
27
+ * version: "15",
28
+ * size: digitalocean.DatabaseSlug.DB_1VPCU1GB,
29
+ * region: digitalocean.Region.NYC1,
30
+ * nodeCount: 1,
31
+ * });
32
+ * const example = new digitalocean.DatabaseLogsinkOpensearch("example", {
33
+ * clusterId: postgres_example.id,
34
+ * name: "opensearch-logs",
35
+ * endpoint: "https://opensearch.example.com:9200",
36
+ * indexPrefix: "db-logs",
37
+ * indexDaysMax: 7,
38
+ * });
39
+ * ```
40
+ *
41
+ * ### OpenSearch with authentication and CA certificate
42
+ *
43
+ * ```typescript
44
+ * import * as pulumi from "@pulumi/pulumi";
45
+ * import * as digitalocean from "@pulumi/digitalocean";
46
+ * import * as std from "@pulumi/std";
47
+ *
48
+ * const example_secure = new digitalocean.DatabaseLogsinkOpensearch("example-secure", {
49
+ * clusterId: postgres_example.id,
50
+ * name: "opensearch-secure",
51
+ * endpoint: "https://user:password@opensearch.example.com:9200",
52
+ * indexPrefix: "secure-logs",
53
+ * indexDaysMax: 14,
54
+ * caCert: std.file({
55
+ * input: "/path/to/ca.pem",
56
+ * }).then(invoke => invoke.result),
57
+ * timeoutSeconds: 30,
58
+ * });
59
+ * ```
60
+ *
61
+ * ### Elasticsearch endpoint configuration
62
+ *
63
+ * ```typescript
64
+ * import * as pulumi from "@pulumi/pulumi";
65
+ * import * as digitalocean from "@pulumi/digitalocean";
66
+ *
67
+ * const elasticsearch = new digitalocean.DatabaseLogsinkOpensearch("elasticsearch", {
68
+ * clusterId: postgres_example.id,
69
+ * name: "elasticsearch-logs",
70
+ * endpoint: "https://elasticsearch.example.com:9243",
71
+ * indexPrefix: "es-logs",
72
+ * indexDaysMax: 30,
73
+ * });
74
+ * ```
75
+ *
76
+ * ### MySQL to OpenSearch configuration
77
+ *
78
+ * ```typescript
79
+ * import * as pulumi from "@pulumi/pulumi";
80
+ * import * as digitalocean from "@pulumi/digitalocean";
81
+ *
82
+ * const mysql_example = new digitalocean.DatabaseCluster("mysql-example", {
83
+ * name: "example-mysql-cluster",
84
+ * engine: "mysql",
85
+ * version: "8",
86
+ * size: digitalocean.DatabaseSlug.DB_1VPCU1GB,
87
+ * region: digitalocean.Region.NYC1,
88
+ * nodeCount: 1,
89
+ * });
90
+ * const mysql = new digitalocean.DatabaseLogsinkOpensearch("mysql", {
91
+ * clusterId: mysql_example.id,
92
+ * name: "mysql-logs",
93
+ * endpoint: "https://opensearch.example.com:9200",
94
+ * indexPrefix: "mysql-logs",
95
+ * indexDaysMax: 7,
96
+ * });
97
+ * ```
98
+ *
99
+ * ## Important Notes
100
+ *
101
+ * ### Elasticsearch Compatibility
102
+ * This resource works with both OpenSearch and Elasticsearch endpoints due to their API compatibility. Use the same resource type regardless of whether you're connecting to OpenSearch or Elasticsearch.
103
+ *
104
+ * ### Managed OpenSearch with Trusted Sources
105
+ * When forwarding logs to a DigitalOcean Managed OpenSearch cluster with trusted sources enabled, you must manually allow-list the IP addresses of your database cluster nodes.
106
+ *
107
+ * ### Authentication
108
+ * Include authentication credentials directly in the endpoint URL using the format `https://username:password@host:port`. Alternatively, configure authentication on your OpenSearch/Elasticsearch cluster to accept connections from your database cluster's IP addresses.
109
+ *
110
+ * ## Import
111
+ *
112
+ * Database logsink OpenSearch resources can be imported using the composite ID format `cluster_id,logsink_id`. For example:
113
+ *
114
+ * ```sh
115
+ * $ pulumi import digitalocean:index/databaseLogsinkOpensearch:DatabaseLogsinkOpensearch example 245bcfd0-7f31-4ce6-a2bc-475a116cca97,f38db7c8-1f31-4ce6-a2bc-475a116cca97
116
+ * ```
117
+ *
118
+ * **Note**: The cluster ID and logsink ID must be separated by a comma.
119
+ */
120
+ export declare class DatabaseLogsinkOpensearch extends pulumi.CustomResource {
121
+ /**
122
+ * Get an existing DatabaseLogsinkOpensearch resource's state with the given name, ID, and optional extra
123
+ * properties used to qualify the lookup.
124
+ *
125
+ * @param name The _unique_ name of the resulting resource.
126
+ * @param id The _unique_ provider ID of the resource to lookup.
127
+ * @param state Any extra arguments used during the lookup.
128
+ * @param opts Optional settings to control the behavior of the CustomResource.
129
+ */
130
+ static get(name: string, id: pulumi.Input<pulumi.ID>, state?: DatabaseLogsinkOpensearchState, opts?: pulumi.CustomResourceOptions): DatabaseLogsinkOpensearch;
131
+ /**
132
+ * Returns true if the given object is an instance of DatabaseLogsinkOpensearch. This is designed to work even
133
+ * when multiple copies of the Pulumi SDK have been loaded into the same process.
134
+ */
135
+ static isInstance(obj: any): obj is DatabaseLogsinkOpensearch;
136
+ /**
137
+ * CA certificate for TLS verification in PEM format. Can be specified using `file()` function. This field is marked as sensitive.
138
+ */
139
+ readonly caCert: pulumi.Output<string | undefined>;
140
+ /**
141
+ * UUID of the source database cluster that will forward logs.
142
+ */
143
+ readonly clusterId: pulumi.Output<string>;
144
+ /**
145
+ * HTTPS URL to the OpenSearch or Elasticsearch cluster (e.g., `https://host:port`). **Note**: Only HTTPS URLs are supported.
146
+ */
147
+ readonly endpoint: pulumi.Output<string>;
148
+ /**
149
+ * Maximum number of days to retain indices. Must be 1 or greater.
150
+ */
151
+ readonly indexDaysMax: pulumi.Output<number | undefined>;
152
+ /**
153
+ * Prefix for the indices where logs will be stored.
154
+ */
155
+ readonly indexPrefix: pulumi.Output<string>;
156
+ /**
157
+ * The unique identifier for the logsink as returned by the DigitalOcean API.
158
+ */
159
+ readonly logsinkId: pulumi.Output<string>;
160
+ /**
161
+ * Display name for the logsink. **Note**: This is immutable; changing it will force recreation of the resource.
162
+ */
163
+ readonly name: pulumi.Output<string>;
164
+ /**
165
+ * Request timeout for log deliveries in seconds. Must be 1 or greater.
166
+ */
167
+ readonly timeoutSeconds: pulumi.Output<number | undefined>;
168
+ /**
169
+ * Create a DatabaseLogsinkOpensearch resource with the given unique name, arguments, and options.
170
+ *
171
+ * @param name The _unique_ name of the resource.
172
+ * @param args The arguments to use to populate this resource's properties.
173
+ * @param opts A bag of options that control this resource's behavior.
174
+ */
175
+ constructor(name: string, args: DatabaseLogsinkOpensearchArgs, opts?: pulumi.CustomResourceOptions);
176
+ }
177
+ /**
178
+ * Input properties used for looking up and filtering DatabaseLogsinkOpensearch resources.
179
+ */
180
+ export interface DatabaseLogsinkOpensearchState {
181
+ /**
182
+ * CA certificate for TLS verification in PEM format. Can be specified using `file()` function. This field is marked as sensitive.
183
+ */
184
+ caCert?: pulumi.Input<string>;
185
+ /**
186
+ * UUID of the source database cluster that will forward logs.
187
+ */
188
+ clusterId?: pulumi.Input<string>;
189
+ /**
190
+ * HTTPS URL to the OpenSearch or Elasticsearch cluster (e.g., `https://host:port`). **Note**: Only HTTPS URLs are supported.
191
+ */
192
+ endpoint?: pulumi.Input<string>;
193
+ /**
194
+ * Maximum number of days to retain indices. Must be 1 or greater.
195
+ */
196
+ indexDaysMax?: pulumi.Input<number>;
197
+ /**
198
+ * Prefix for the indices where logs will be stored.
199
+ */
200
+ indexPrefix?: pulumi.Input<string>;
201
+ /**
202
+ * The unique identifier for the logsink as returned by the DigitalOcean API.
203
+ */
204
+ logsinkId?: pulumi.Input<string>;
205
+ /**
206
+ * Display name for the logsink. **Note**: This is immutable; changing it will force recreation of the resource.
207
+ */
208
+ name?: pulumi.Input<string>;
209
+ /**
210
+ * Request timeout for log deliveries in seconds. Must be 1 or greater.
211
+ */
212
+ timeoutSeconds?: pulumi.Input<number>;
213
+ }
214
+ /**
215
+ * The set of arguments for constructing a DatabaseLogsinkOpensearch resource.
216
+ */
217
+ export interface DatabaseLogsinkOpensearchArgs {
218
+ /**
219
+ * CA certificate for TLS verification in PEM format. Can be specified using `file()` function. This field is marked as sensitive.
220
+ */
221
+ caCert?: pulumi.Input<string>;
222
+ /**
223
+ * UUID of the source database cluster that will forward logs.
224
+ */
225
+ clusterId: pulumi.Input<string>;
226
+ /**
227
+ * HTTPS URL to the OpenSearch or Elasticsearch cluster (e.g., `https://host:port`). **Note**: Only HTTPS URLs are supported.
228
+ */
229
+ endpoint: pulumi.Input<string>;
230
+ /**
231
+ * Maximum number of days to retain indices. Must be 1 or greater.
232
+ */
233
+ indexDaysMax?: pulumi.Input<number>;
234
+ /**
235
+ * Prefix for the indices where logs will be stored.
236
+ */
237
+ indexPrefix: pulumi.Input<string>;
238
+ /**
239
+ * Display name for the logsink. **Note**: This is immutable; changing it will force recreation of the resource.
240
+ */
241
+ name?: pulumi.Input<string>;
242
+ /**
243
+ * Request timeout for log deliveries in seconds. Must be 1 or greater.
244
+ */
245
+ timeoutSeconds?: pulumi.Input<number>;
246
+ }
@@ -0,0 +1,192 @@
1
+ "use strict";
2
+ // *** WARNING: this file was generated by pulumi-language-nodejs. ***
3
+ // *** Do not edit by hand unless you're certain you know what you are doing! ***
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.DatabaseLogsinkOpensearch = void 0;
6
+ const pulumi = require("@pulumi/pulumi");
7
+ const utilities = require("./utilities");
8
+ /**
9
+ * Provides a DigitalOcean database logsink resource allowing you to forward logs from a managed database cluster to an external OpenSearch cluster or Elasticsearch endpoint.
10
+ *
11
+ * This resource is compatible with both OpenSearch and Elasticsearch endpoints due to API compatibility. You can use this resource to connect to either service.
12
+ *
13
+ * This resource supports the following DigitalOcean managed database engines:
14
+ *
15
+ * * PostgreSQL
16
+ * * MySQL
17
+ * * Kafka
18
+ * * Valkey
19
+ *
20
+ * **Note**: MongoDB databases use a different log forwarding mechanism and require Datadog logsinks (not currently available in this provider).
21
+ *
22
+ * ## Example Usage
23
+ *
24
+ * ### Basic OpenSearch configuration
25
+ *
26
+ * ```typescript
27
+ * import * as pulumi from "@pulumi/pulumi";
28
+ * import * as digitalocean from "@pulumi/digitalocean";
29
+ *
30
+ * const postgres_example = new digitalocean.DatabaseCluster("postgres-example", {
31
+ * name: "example-postgres-cluster",
32
+ * engine: "pg",
33
+ * version: "15",
34
+ * size: digitalocean.DatabaseSlug.DB_1VPCU1GB,
35
+ * region: digitalocean.Region.NYC1,
36
+ * nodeCount: 1,
37
+ * });
38
+ * const example = new digitalocean.DatabaseLogsinkOpensearch("example", {
39
+ * clusterId: postgres_example.id,
40
+ * name: "opensearch-logs",
41
+ * endpoint: "https://opensearch.example.com:9200",
42
+ * indexPrefix: "db-logs",
43
+ * indexDaysMax: 7,
44
+ * });
45
+ * ```
46
+ *
47
+ * ### OpenSearch with authentication and CA certificate
48
+ *
49
+ * ```typescript
50
+ * import * as pulumi from "@pulumi/pulumi";
51
+ * import * as digitalocean from "@pulumi/digitalocean";
52
+ * import * as std from "@pulumi/std";
53
+ *
54
+ * const example_secure = new digitalocean.DatabaseLogsinkOpensearch("example-secure", {
55
+ * clusterId: postgres_example.id,
56
+ * name: "opensearch-secure",
57
+ * endpoint: "https://user:password@opensearch.example.com:9200",
58
+ * indexPrefix: "secure-logs",
59
+ * indexDaysMax: 14,
60
+ * caCert: std.file({
61
+ * input: "/path/to/ca.pem",
62
+ * }).then(invoke => invoke.result),
63
+ * timeoutSeconds: 30,
64
+ * });
65
+ * ```
66
+ *
67
+ * ### Elasticsearch endpoint configuration
68
+ *
69
+ * ```typescript
70
+ * import * as pulumi from "@pulumi/pulumi";
71
+ * import * as digitalocean from "@pulumi/digitalocean";
72
+ *
73
+ * const elasticsearch = new digitalocean.DatabaseLogsinkOpensearch("elasticsearch", {
74
+ * clusterId: postgres_example.id,
75
+ * name: "elasticsearch-logs",
76
+ * endpoint: "https://elasticsearch.example.com:9243",
77
+ * indexPrefix: "es-logs",
78
+ * indexDaysMax: 30,
79
+ * });
80
+ * ```
81
+ *
82
+ * ### MySQL to OpenSearch configuration
83
+ *
84
+ * ```typescript
85
+ * import * as pulumi from "@pulumi/pulumi";
86
+ * import * as digitalocean from "@pulumi/digitalocean";
87
+ *
88
+ * const mysql_example = new digitalocean.DatabaseCluster("mysql-example", {
89
+ * name: "example-mysql-cluster",
90
+ * engine: "mysql",
91
+ * version: "8",
92
+ * size: digitalocean.DatabaseSlug.DB_1VPCU1GB,
93
+ * region: digitalocean.Region.NYC1,
94
+ * nodeCount: 1,
95
+ * });
96
+ * const mysql = new digitalocean.DatabaseLogsinkOpensearch("mysql", {
97
+ * clusterId: mysql_example.id,
98
+ * name: "mysql-logs",
99
+ * endpoint: "https://opensearch.example.com:9200",
100
+ * indexPrefix: "mysql-logs",
101
+ * indexDaysMax: 7,
102
+ * });
103
+ * ```
104
+ *
105
+ * ## Important Notes
106
+ *
107
+ * ### Elasticsearch Compatibility
108
+ * This resource works with both OpenSearch and Elasticsearch endpoints due to their API compatibility. Use the same resource type regardless of whether you're connecting to OpenSearch or Elasticsearch.
109
+ *
110
+ * ### Managed OpenSearch with Trusted Sources
111
+ * When forwarding logs to a DigitalOcean Managed OpenSearch cluster with trusted sources enabled, you must manually allow-list the IP addresses of your database cluster nodes.
112
+ *
113
+ * ### Authentication
114
+ * Include authentication credentials directly in the endpoint URL using the format `https://username:password@host:port`. Alternatively, configure authentication on your OpenSearch/Elasticsearch cluster to accept connections from your database cluster's IP addresses.
115
+ *
116
+ * ## Import
117
+ *
118
+ * Database logsink OpenSearch resources can be imported using the composite ID format `cluster_id,logsink_id`. For example:
119
+ *
120
+ * ```sh
121
+ * $ pulumi import digitalocean:index/databaseLogsinkOpensearch:DatabaseLogsinkOpensearch example 245bcfd0-7f31-4ce6-a2bc-475a116cca97,f38db7c8-1f31-4ce6-a2bc-475a116cca97
122
+ * ```
123
+ *
124
+ * **Note**: The cluster ID and logsink ID must be separated by a comma.
125
+ */
126
+ class DatabaseLogsinkOpensearch extends pulumi.CustomResource {
127
+ /**
128
+ * Get an existing DatabaseLogsinkOpensearch resource's state with the given name, ID, and optional extra
129
+ * properties used to qualify the lookup.
130
+ *
131
+ * @param name The _unique_ name of the resulting resource.
132
+ * @param id The _unique_ provider ID of the resource to lookup.
133
+ * @param state Any extra arguments used during the lookup.
134
+ * @param opts Optional settings to control the behavior of the CustomResource.
135
+ */
136
+ static get(name, id, state, opts) {
137
+ return new DatabaseLogsinkOpensearch(name, state, { ...opts, id: id });
138
+ }
139
+ /**
140
+ * Returns true if the given object is an instance of DatabaseLogsinkOpensearch. This is designed to work even
141
+ * when multiple copies of the Pulumi SDK have been loaded into the same process.
142
+ */
143
+ static isInstance(obj) {
144
+ if (obj === undefined || obj === null) {
145
+ return false;
146
+ }
147
+ return obj['__pulumiType'] === DatabaseLogsinkOpensearch.__pulumiType;
148
+ }
149
+ constructor(name, argsOrState, opts) {
150
+ let resourceInputs = {};
151
+ opts = opts || {};
152
+ if (opts.id) {
153
+ const state = argsOrState;
154
+ resourceInputs["caCert"] = state?.caCert;
155
+ resourceInputs["clusterId"] = state?.clusterId;
156
+ resourceInputs["endpoint"] = state?.endpoint;
157
+ resourceInputs["indexDaysMax"] = state?.indexDaysMax;
158
+ resourceInputs["indexPrefix"] = state?.indexPrefix;
159
+ resourceInputs["logsinkId"] = state?.logsinkId;
160
+ resourceInputs["name"] = state?.name;
161
+ resourceInputs["timeoutSeconds"] = state?.timeoutSeconds;
162
+ }
163
+ else {
164
+ const args = argsOrState;
165
+ if (args?.clusterId === undefined && !opts.urn) {
166
+ throw new Error("Missing required property 'clusterId'");
167
+ }
168
+ if (args?.endpoint === undefined && !opts.urn) {
169
+ throw new Error("Missing required property 'endpoint'");
170
+ }
171
+ if (args?.indexPrefix === undefined && !opts.urn) {
172
+ throw new Error("Missing required property 'indexPrefix'");
173
+ }
174
+ resourceInputs["caCert"] = args?.caCert ? pulumi.secret(args.caCert) : undefined;
175
+ resourceInputs["clusterId"] = args?.clusterId;
176
+ resourceInputs["endpoint"] = args?.endpoint;
177
+ resourceInputs["indexDaysMax"] = args?.indexDaysMax;
178
+ resourceInputs["indexPrefix"] = args?.indexPrefix;
179
+ resourceInputs["name"] = args?.name;
180
+ resourceInputs["timeoutSeconds"] = args?.timeoutSeconds;
181
+ resourceInputs["logsinkId"] = undefined /*out*/;
182
+ }
183
+ opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
184
+ const secretOpts = { additionalSecretOutputs: ["caCert"] };
185
+ opts = pulumi.mergeOptions(opts, secretOpts);
186
+ super(DatabaseLogsinkOpensearch.__pulumiType, name, resourceInputs, opts);
187
+ }
188
+ }
189
+ exports.DatabaseLogsinkOpensearch = DatabaseLogsinkOpensearch;
190
+ /** @internal */
191
+ DatabaseLogsinkOpensearch.__pulumiType = 'digitalocean:index/databaseLogsinkOpensearch:DatabaseLogsinkOpensearch';
192
+ //# sourceMappingURL=databaseLogsinkOpensearch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"databaseLogsinkOpensearch.js","sourceRoot":"","sources":["../databaseLogsinkOpensearch.ts"],"names":[],"mappings":";AAAA,sEAAsE;AACtE,iFAAiF;;;AAEjF,yCAAyC;AACzC,yCAAyC;AAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqHG;AACH,MAAa,yBAA0B,SAAQ,MAAM,CAAC,cAAc;IAChE;;;;;;;;OAQG;IACI,MAAM,CAAC,GAAG,CAAC,IAAY,EAAE,EAA2B,EAAE,KAAsC,EAAE,IAAmC;QACpI,OAAO,IAAI,yBAAyB,CAAC,IAAI,EAAO,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAChF,CAAC;IAKD;;;OAGG;IACI,MAAM,CAAC,UAAU,CAAC,GAAQ;QAC7B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE;YACnC,OAAO,KAAK,CAAC;SAChB;QACD,OAAO,GAAG,CAAC,cAAc,CAAC,KAAK,yBAAyB,CAAC,YAAY,CAAC;IAC1E,CAAC;IA2CD,YAAY,IAAY,EAAE,WAA4E,EAAE,IAAmC;QACvI,IAAI,cAAc,GAAkB,EAAE,CAAC;QACvC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAClB,IAAI,IAAI,CAAC,EAAE,EAAE;YACT,MAAM,KAAK,GAAG,WAAyD,CAAC;YACxE,cAAc,CAAC,QAAQ,CAAC,GAAG,KAAK,EAAE,MAAM,CAAC;YACzC,cAAc,CAAC,WAAW,CAAC,GAAG,KAAK,EAAE,SAAS,CAAC;YAC/C,cAAc,CAAC,UAAU,CAAC,GAAG,KAAK,EAAE,QAAQ,CAAC;YAC7C,cAAc,CAAC,cAAc,CAAC,GAAG,KAAK,EAAE,YAAY,CAAC;YACrD,cAAc,CAAC,aAAa,CAAC,GAAG,KAAK,EAAE,WAAW,CAAC;YACnD,cAAc,CAAC,WAAW,CAAC,GAAG,KAAK,EAAE,SAAS,CAAC;YAC/C,cAAc,CAAC,MAAM,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC;YACrC,cAAc,CAAC,gBAAgB,CAAC,GAAG,KAAK,EAAE,cAAc,CAAC;SAC5D;aAAM;YACH,MAAM,IAAI,GAAG,WAAwD,CAAC;YACtE,IAAI,IAAI,EAAE,SAAS,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC5C,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;aAC5D;YACD,IAAI,IAAI,EAAE,QAAQ,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC3C,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;aAC3D;YACD,IAAI,IAAI,EAAE,WAAW,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC9C,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;aAC9D;YACD,cAAc,CAAC,QAAQ,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACjF,cAAc,CAAC,WAAW,CAAC,GAAG,IAAI,EAAE,SAAS,CAAC;YAC9C,cAAc,CAAC,UAAU,CAAC,GAAG,IAAI,EAAE,QAAQ,CAAC;YAC5C,cAAc,CAAC,cAAc,CAAC,GAAG,IAAI,EAAE,YAAY,CAAC;YACpD,cAAc,CAAC,aAAa,CAAC,GAAG,IAAI,EAAE,WAAW,CAAC;YAClD,cAAc,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC;YACpC,cAAc,CAAC,gBAAgB,CAAC,GAAG,IAAI,EAAE,cAAc,CAAC;YACxD,cAAc,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;SACnD;QACD,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,EAAE,IAAI,CAAC,CAAC;QACnE,MAAM,UAAU,GAAG,EAAE,uBAAuB,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3D,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC7C,KAAK,CAAC,yBAAyB,CAAC,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;IAC9E,CAAC;;AA1GL,8DA2GC;AA7FG,gBAAgB;AACO,sCAAY,GAAG,wEAAwE,CAAC"}