@pulumi/databricks 1.35.0-alpha.1711603543 → 1.35.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.
@@ -0,0 +1,301 @@
1
+ import * as pulumi from "@pulumi/pulumi";
2
+ import * as inputs from "./types/input";
3
+ import * as outputs from "./types/output";
4
+ /**
5
+ * This resource allows you to manage [Lakehouse Monitors](https://docs.databricks.com/en/lakehouse-monitoring/index.html) in Databricks.
6
+ *
7
+ * A `databricks.LakehouseMonitor` is attached to a databricks.SqlTable and can be of type timeseries, snapshot or inference.
8
+ *
9
+ * ### Inference Monitor
10
+ *
11
+ * <!--Start PulumiCodeChooser -->
12
+ * ```typescript
13
+ * import * as pulumi from "@pulumi/pulumi";
14
+ * import * as databricks from "@pulumi/databricks";
15
+ *
16
+ * const testMonitorInference = new databricks.LakehouseMonitor("testMonitorInference", {
17
+ * assetsDir: `/Shared/provider-test/databricks_lakehouse_monitoring/${databricks_table.myTestTable.name}`,
18
+ * inferenceLog: {
19
+ * granularities: ["1 hour"],
20
+ * modelIdCol: "model_id",
21
+ * predictionCol: "prediction",
22
+ * problemType: "PROBLEM_TYPE_REGRESSION",
23
+ * timestampCol: "timestamp",
24
+ * },
25
+ * outputSchemaName: `${databricks_catalog.sandbox.name}.${databricks_schema.things.name}`,
26
+ * tableName: `${databricks_catalog.sandbox.name}.${databricks_schema.things.name}.${databricks_table.myTestTable.name}`,
27
+ * });
28
+ * ```
29
+ * <!--End PulumiCodeChooser -->
30
+ * ### Snapshot Monitor
31
+ * <!--Start PulumiCodeChooser -->
32
+ * ```typescript
33
+ * import * as pulumi from "@pulumi/pulumi";
34
+ * import * as databricks from "@pulumi/databricks";
35
+ *
36
+ * const testMonitorInference = new databricks.LakehouseMonitor("testMonitorInference", {
37
+ * assetsDir: `/Shared/provider-test/databricks_lakehouse_monitoring/${databricks_table.myTestTable.name}`,
38
+ * outputSchemaName: `${databricks_catalog.sandbox.name}.${databricks_schema.things.name}`,
39
+ * snapshot: {},
40
+ * tableName: `${databricks_catalog.sandbox.name}.${databricks_schema.things.name}.${databricks_table.myTestTable.name}`,
41
+ * });
42
+ * ```
43
+ * <!--End PulumiCodeChooser -->
44
+ *
45
+ * ## Related Resources
46
+ *
47
+ * The following resources are often used in the same context:
48
+ *
49
+ * * databricks.Catalog
50
+ * * databricks.Schema
51
+ * * databricks.SqlTable
52
+ */
53
+ export declare class LakehouseMonitor extends pulumi.CustomResource {
54
+ /**
55
+ * Get an existing LakehouseMonitor resource's state with the given name, ID, and optional extra
56
+ * properties used to qualify the lookup.
57
+ *
58
+ * @param name The _unique_ name of the resulting resource.
59
+ * @param id The _unique_ provider ID of the resource to lookup.
60
+ * @param state Any extra arguments used during the lookup.
61
+ * @param opts Optional settings to control the behavior of the CustomResource.
62
+ */
63
+ static get(name: string, id: pulumi.Input<pulumi.ID>, state?: LakehouseMonitorState, opts?: pulumi.CustomResourceOptions): LakehouseMonitor;
64
+ /**
65
+ * Returns true if the given object is an instance of LakehouseMonitor. This is designed to work even
66
+ * when multiple copies of the Pulumi SDK have been loaded into the same process.
67
+ */
68
+ static isInstance(obj: any): obj is LakehouseMonitor;
69
+ /**
70
+ * The directory to store the monitoring assets (Eg. Dashboard and Metric Tables)
71
+ */
72
+ readonly assetsDir: pulumi.Output<string>;
73
+ /**
74
+ * Name of the baseline table from which drift metrics are computed from.Columns in the monitored table should also be present in the baseline
75
+ * table.
76
+ */
77
+ readonly baselineTableName: pulumi.Output<string | undefined>;
78
+ /**
79
+ * Custom metrics to compute on the monitored table. These can be aggregate metrics, derived metrics (from already computed aggregate metrics), or drift metrics (comparing metrics across time windows).
80
+ */
81
+ readonly customMetrics: pulumi.Output<outputs.LakehouseMonitorCustomMetric[] | undefined>;
82
+ /**
83
+ * The ID of the generated dashboard.
84
+ */
85
+ readonly dashboardId: pulumi.Output<string>;
86
+ /**
87
+ * The data classification config for the monitor
88
+ */
89
+ readonly dataClassificationConfig: pulumi.Output<outputs.LakehouseMonitorDataClassificationConfig | undefined>;
90
+ /**
91
+ * The full name of the drift metrics table. Format: __catalog_name__.__schema_name__.__table_name__.
92
+ */
93
+ readonly driftMetricsTableName: pulumi.Output<string>;
94
+ /**
95
+ * Configuration for the inference log monitor
96
+ */
97
+ readonly inferenceLog: pulumi.Output<outputs.LakehouseMonitorInferenceLog | undefined>;
98
+ readonly latestMonitorFailureMsg: pulumi.Output<string | undefined>;
99
+ /**
100
+ * The version of the monitor config (e.g. 1,2,3). If negative, the monitor may be corrupted
101
+ */
102
+ readonly monitorVersion: pulumi.Output<string>;
103
+ /**
104
+ * The notification settings for the monitor
105
+ */
106
+ readonly notifications: pulumi.Output<outputs.LakehouseMonitorNotifications | undefined>;
107
+ /**
108
+ * Schema where output metric tables are created
109
+ */
110
+ readonly outputSchemaName: pulumi.Output<string>;
111
+ /**
112
+ * The full name of the profile metrics table. Format: __catalog_name__.__schema_name__.__table_name__.
113
+ */
114
+ readonly profileMetricsTableName: pulumi.Output<string>;
115
+ /**
116
+ * The schedule for automatically updating and refreshing metric tables.
117
+ */
118
+ readonly schedule: pulumi.Output<outputs.LakehouseMonitorSchedule | undefined>;
119
+ /**
120
+ * Whether to skip creating a default dashboard summarizing data quality metrics.
121
+ */
122
+ readonly skipBuiltinDashboard: pulumi.Output<boolean | undefined>;
123
+ /**
124
+ * List of column expressions to slice data with for targeted analysis. The data is grouped by each expression independently, resulting in a separate slice for each predicate and its complements. For high-cardinality columns, only the top 100 unique values by frequency will generate slices.
125
+ */
126
+ readonly slicingExprs: pulumi.Output<string[] | undefined>;
127
+ /**
128
+ * Configuration for monitoring snapshot tables.
129
+ */
130
+ readonly snapshot: pulumi.Output<outputs.LakehouseMonitorSnapshot | undefined>;
131
+ /**
132
+ * Status of the Monitor
133
+ */
134
+ readonly status: pulumi.Output<string>;
135
+ /**
136
+ * The full name of the table to attach the monitor too. Its of the format {catalog}.{schema}.{tableName}
137
+ */
138
+ readonly tableName: pulumi.Output<string>;
139
+ /**
140
+ * Configuration for monitoring timeseries tables.
141
+ */
142
+ readonly timeSeries: pulumi.Output<outputs.LakehouseMonitorTimeSeries | undefined>;
143
+ /**
144
+ * Optional argument to specify the warehouse for dashboard creation. If not specified, the first running warehouse will be used.
145
+ */
146
+ readonly warehouseId: pulumi.Output<string | undefined>;
147
+ /**
148
+ * Create a LakehouseMonitor resource with the given unique name, arguments, and options.
149
+ *
150
+ * @param name The _unique_ name of the resource.
151
+ * @param args The arguments to use to populate this resource's properties.
152
+ * @param opts A bag of options that control this resource's behavior.
153
+ */
154
+ constructor(name: string, args: LakehouseMonitorArgs, opts?: pulumi.CustomResourceOptions);
155
+ }
156
+ /**
157
+ * Input properties used for looking up and filtering LakehouseMonitor resources.
158
+ */
159
+ export interface LakehouseMonitorState {
160
+ /**
161
+ * The directory to store the monitoring assets (Eg. Dashboard and Metric Tables)
162
+ */
163
+ assetsDir?: pulumi.Input<string>;
164
+ /**
165
+ * Name of the baseline table from which drift metrics are computed from.Columns in the monitored table should also be present in the baseline
166
+ * table.
167
+ */
168
+ baselineTableName?: pulumi.Input<string>;
169
+ /**
170
+ * Custom metrics to compute on the monitored table. These can be aggregate metrics, derived metrics (from already computed aggregate metrics), or drift metrics (comparing metrics across time windows).
171
+ */
172
+ customMetrics?: pulumi.Input<pulumi.Input<inputs.LakehouseMonitorCustomMetric>[]>;
173
+ /**
174
+ * The ID of the generated dashboard.
175
+ */
176
+ dashboardId?: pulumi.Input<string>;
177
+ /**
178
+ * The data classification config for the monitor
179
+ */
180
+ dataClassificationConfig?: pulumi.Input<inputs.LakehouseMonitorDataClassificationConfig>;
181
+ /**
182
+ * The full name of the drift metrics table. Format: __catalog_name__.__schema_name__.__table_name__.
183
+ */
184
+ driftMetricsTableName?: pulumi.Input<string>;
185
+ /**
186
+ * Configuration for the inference log monitor
187
+ */
188
+ inferenceLog?: pulumi.Input<inputs.LakehouseMonitorInferenceLog>;
189
+ latestMonitorFailureMsg?: pulumi.Input<string>;
190
+ /**
191
+ * The version of the monitor config (e.g. 1,2,3). If negative, the monitor may be corrupted
192
+ */
193
+ monitorVersion?: pulumi.Input<string>;
194
+ /**
195
+ * The notification settings for the monitor
196
+ */
197
+ notifications?: pulumi.Input<inputs.LakehouseMonitorNotifications>;
198
+ /**
199
+ * Schema where output metric tables are created
200
+ */
201
+ outputSchemaName?: pulumi.Input<string>;
202
+ /**
203
+ * The full name of the profile metrics table. Format: __catalog_name__.__schema_name__.__table_name__.
204
+ */
205
+ profileMetricsTableName?: pulumi.Input<string>;
206
+ /**
207
+ * The schedule for automatically updating and refreshing metric tables.
208
+ */
209
+ schedule?: pulumi.Input<inputs.LakehouseMonitorSchedule>;
210
+ /**
211
+ * Whether to skip creating a default dashboard summarizing data quality metrics.
212
+ */
213
+ skipBuiltinDashboard?: pulumi.Input<boolean>;
214
+ /**
215
+ * List of column expressions to slice data with for targeted analysis. The data is grouped by each expression independently, resulting in a separate slice for each predicate and its complements. For high-cardinality columns, only the top 100 unique values by frequency will generate slices.
216
+ */
217
+ slicingExprs?: pulumi.Input<pulumi.Input<string>[]>;
218
+ /**
219
+ * Configuration for monitoring snapshot tables.
220
+ */
221
+ snapshot?: pulumi.Input<inputs.LakehouseMonitorSnapshot>;
222
+ /**
223
+ * Status of the Monitor
224
+ */
225
+ status?: pulumi.Input<string>;
226
+ /**
227
+ * The full name of the table to attach the monitor too. Its of the format {catalog}.{schema}.{tableName}
228
+ */
229
+ tableName?: pulumi.Input<string>;
230
+ /**
231
+ * Configuration for monitoring timeseries tables.
232
+ */
233
+ timeSeries?: pulumi.Input<inputs.LakehouseMonitorTimeSeries>;
234
+ /**
235
+ * Optional argument to specify the warehouse for dashboard creation. If not specified, the first running warehouse will be used.
236
+ */
237
+ warehouseId?: pulumi.Input<string>;
238
+ }
239
+ /**
240
+ * The set of arguments for constructing a LakehouseMonitor resource.
241
+ */
242
+ export interface LakehouseMonitorArgs {
243
+ /**
244
+ * The directory to store the monitoring assets (Eg. Dashboard and Metric Tables)
245
+ */
246
+ assetsDir: pulumi.Input<string>;
247
+ /**
248
+ * Name of the baseline table from which drift metrics are computed from.Columns in the monitored table should also be present in the baseline
249
+ * table.
250
+ */
251
+ baselineTableName?: pulumi.Input<string>;
252
+ /**
253
+ * Custom metrics to compute on the monitored table. These can be aggregate metrics, derived metrics (from already computed aggregate metrics), or drift metrics (comparing metrics across time windows).
254
+ */
255
+ customMetrics?: pulumi.Input<pulumi.Input<inputs.LakehouseMonitorCustomMetric>[]>;
256
+ /**
257
+ * The data classification config for the monitor
258
+ */
259
+ dataClassificationConfig?: pulumi.Input<inputs.LakehouseMonitorDataClassificationConfig>;
260
+ /**
261
+ * Configuration for the inference log monitor
262
+ */
263
+ inferenceLog?: pulumi.Input<inputs.LakehouseMonitorInferenceLog>;
264
+ latestMonitorFailureMsg?: pulumi.Input<string>;
265
+ /**
266
+ * The notification settings for the monitor
267
+ */
268
+ notifications?: pulumi.Input<inputs.LakehouseMonitorNotifications>;
269
+ /**
270
+ * Schema where output metric tables are created
271
+ */
272
+ outputSchemaName: pulumi.Input<string>;
273
+ /**
274
+ * The schedule for automatically updating and refreshing metric tables.
275
+ */
276
+ schedule?: pulumi.Input<inputs.LakehouseMonitorSchedule>;
277
+ /**
278
+ * Whether to skip creating a default dashboard summarizing data quality metrics.
279
+ */
280
+ skipBuiltinDashboard?: pulumi.Input<boolean>;
281
+ /**
282
+ * List of column expressions to slice data with for targeted analysis. The data is grouped by each expression independently, resulting in a separate slice for each predicate and its complements. For high-cardinality columns, only the top 100 unique values by frequency will generate slices.
283
+ */
284
+ slicingExprs?: pulumi.Input<pulumi.Input<string>[]>;
285
+ /**
286
+ * Configuration for monitoring snapshot tables.
287
+ */
288
+ snapshot?: pulumi.Input<inputs.LakehouseMonitorSnapshot>;
289
+ /**
290
+ * The full name of the table to attach the monitor too. Its of the format {catalog}.{schema}.{tableName}
291
+ */
292
+ tableName: pulumi.Input<string>;
293
+ /**
294
+ * Configuration for monitoring timeseries tables.
295
+ */
296
+ timeSeries?: pulumi.Input<inputs.LakehouseMonitorTimeSeries>;
297
+ /**
298
+ * Optional argument to specify the warehouse for dashboard creation. If not specified, the first running warehouse will be used.
299
+ */
300
+ warehouseId?: pulumi.Input<string>;
301
+ }
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ // *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
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.LakehouseMonitor = void 0;
6
+ const pulumi = require("@pulumi/pulumi");
7
+ const utilities = require("./utilities");
8
+ /**
9
+ * This resource allows you to manage [Lakehouse Monitors](https://docs.databricks.com/en/lakehouse-monitoring/index.html) in Databricks.
10
+ *
11
+ * A `databricks.LakehouseMonitor` is attached to a databricks.SqlTable and can be of type timeseries, snapshot or inference.
12
+ *
13
+ * ### Inference Monitor
14
+ *
15
+ * <!--Start PulumiCodeChooser -->
16
+ * ```typescript
17
+ * import * as pulumi from "@pulumi/pulumi";
18
+ * import * as databricks from "@pulumi/databricks";
19
+ *
20
+ * const testMonitorInference = new databricks.LakehouseMonitor("testMonitorInference", {
21
+ * assetsDir: `/Shared/provider-test/databricks_lakehouse_monitoring/${databricks_table.myTestTable.name}`,
22
+ * inferenceLog: {
23
+ * granularities: ["1 hour"],
24
+ * modelIdCol: "model_id",
25
+ * predictionCol: "prediction",
26
+ * problemType: "PROBLEM_TYPE_REGRESSION",
27
+ * timestampCol: "timestamp",
28
+ * },
29
+ * outputSchemaName: `${databricks_catalog.sandbox.name}.${databricks_schema.things.name}`,
30
+ * tableName: `${databricks_catalog.sandbox.name}.${databricks_schema.things.name}.${databricks_table.myTestTable.name}`,
31
+ * });
32
+ * ```
33
+ * <!--End PulumiCodeChooser -->
34
+ * ### Snapshot Monitor
35
+ * <!--Start PulumiCodeChooser -->
36
+ * ```typescript
37
+ * import * as pulumi from "@pulumi/pulumi";
38
+ * import * as databricks from "@pulumi/databricks";
39
+ *
40
+ * const testMonitorInference = new databricks.LakehouseMonitor("testMonitorInference", {
41
+ * assetsDir: `/Shared/provider-test/databricks_lakehouse_monitoring/${databricks_table.myTestTable.name}`,
42
+ * outputSchemaName: `${databricks_catalog.sandbox.name}.${databricks_schema.things.name}`,
43
+ * snapshot: {},
44
+ * tableName: `${databricks_catalog.sandbox.name}.${databricks_schema.things.name}.${databricks_table.myTestTable.name}`,
45
+ * });
46
+ * ```
47
+ * <!--End PulumiCodeChooser -->
48
+ *
49
+ * ## Related Resources
50
+ *
51
+ * The following resources are often used in the same context:
52
+ *
53
+ * * databricks.Catalog
54
+ * * databricks.Schema
55
+ * * databricks.SqlTable
56
+ */
57
+ class LakehouseMonitor extends pulumi.CustomResource {
58
+ /**
59
+ * Get an existing LakehouseMonitor resource's state with the given name, ID, and optional extra
60
+ * properties used to qualify the lookup.
61
+ *
62
+ * @param name The _unique_ name of the resulting resource.
63
+ * @param id The _unique_ provider ID of the resource to lookup.
64
+ * @param state Any extra arguments used during the lookup.
65
+ * @param opts Optional settings to control the behavior of the CustomResource.
66
+ */
67
+ static get(name, id, state, opts) {
68
+ return new LakehouseMonitor(name, state, Object.assign(Object.assign({}, opts), { id: id }));
69
+ }
70
+ /**
71
+ * Returns true if the given object is an instance of LakehouseMonitor. This is designed to work even
72
+ * when multiple copies of the Pulumi SDK have been loaded into the same process.
73
+ */
74
+ static isInstance(obj) {
75
+ if (obj === undefined || obj === null) {
76
+ return false;
77
+ }
78
+ return obj['__pulumiType'] === LakehouseMonitor.__pulumiType;
79
+ }
80
+ constructor(name, argsOrState, opts) {
81
+ let resourceInputs = {};
82
+ opts = opts || {};
83
+ if (opts.id) {
84
+ const state = argsOrState;
85
+ resourceInputs["assetsDir"] = state ? state.assetsDir : undefined;
86
+ resourceInputs["baselineTableName"] = state ? state.baselineTableName : undefined;
87
+ resourceInputs["customMetrics"] = state ? state.customMetrics : undefined;
88
+ resourceInputs["dashboardId"] = state ? state.dashboardId : undefined;
89
+ resourceInputs["dataClassificationConfig"] = state ? state.dataClassificationConfig : undefined;
90
+ resourceInputs["driftMetricsTableName"] = state ? state.driftMetricsTableName : undefined;
91
+ resourceInputs["inferenceLog"] = state ? state.inferenceLog : undefined;
92
+ resourceInputs["latestMonitorFailureMsg"] = state ? state.latestMonitorFailureMsg : undefined;
93
+ resourceInputs["monitorVersion"] = state ? state.monitorVersion : undefined;
94
+ resourceInputs["notifications"] = state ? state.notifications : undefined;
95
+ resourceInputs["outputSchemaName"] = state ? state.outputSchemaName : undefined;
96
+ resourceInputs["profileMetricsTableName"] = state ? state.profileMetricsTableName : undefined;
97
+ resourceInputs["schedule"] = state ? state.schedule : undefined;
98
+ resourceInputs["skipBuiltinDashboard"] = state ? state.skipBuiltinDashboard : undefined;
99
+ resourceInputs["slicingExprs"] = state ? state.slicingExprs : undefined;
100
+ resourceInputs["snapshot"] = state ? state.snapshot : undefined;
101
+ resourceInputs["status"] = state ? state.status : undefined;
102
+ resourceInputs["tableName"] = state ? state.tableName : undefined;
103
+ resourceInputs["timeSeries"] = state ? state.timeSeries : undefined;
104
+ resourceInputs["warehouseId"] = state ? state.warehouseId : undefined;
105
+ }
106
+ else {
107
+ const args = argsOrState;
108
+ if ((!args || args.assetsDir === undefined) && !opts.urn) {
109
+ throw new Error("Missing required property 'assetsDir'");
110
+ }
111
+ if ((!args || args.outputSchemaName === undefined) && !opts.urn) {
112
+ throw new Error("Missing required property 'outputSchemaName'");
113
+ }
114
+ if ((!args || args.tableName === undefined) && !opts.urn) {
115
+ throw new Error("Missing required property 'tableName'");
116
+ }
117
+ resourceInputs["assetsDir"] = args ? args.assetsDir : undefined;
118
+ resourceInputs["baselineTableName"] = args ? args.baselineTableName : undefined;
119
+ resourceInputs["customMetrics"] = args ? args.customMetrics : undefined;
120
+ resourceInputs["dataClassificationConfig"] = args ? args.dataClassificationConfig : undefined;
121
+ resourceInputs["inferenceLog"] = args ? args.inferenceLog : undefined;
122
+ resourceInputs["latestMonitorFailureMsg"] = args ? args.latestMonitorFailureMsg : undefined;
123
+ resourceInputs["notifications"] = args ? args.notifications : undefined;
124
+ resourceInputs["outputSchemaName"] = args ? args.outputSchemaName : undefined;
125
+ resourceInputs["schedule"] = args ? args.schedule : undefined;
126
+ resourceInputs["skipBuiltinDashboard"] = args ? args.skipBuiltinDashboard : undefined;
127
+ resourceInputs["slicingExprs"] = args ? args.slicingExprs : undefined;
128
+ resourceInputs["snapshot"] = args ? args.snapshot : undefined;
129
+ resourceInputs["tableName"] = args ? args.tableName : undefined;
130
+ resourceInputs["timeSeries"] = args ? args.timeSeries : undefined;
131
+ resourceInputs["warehouseId"] = args ? args.warehouseId : undefined;
132
+ resourceInputs["dashboardId"] = undefined /*out*/;
133
+ resourceInputs["driftMetricsTableName"] = undefined /*out*/;
134
+ resourceInputs["monitorVersion"] = undefined /*out*/;
135
+ resourceInputs["profileMetricsTableName"] = undefined /*out*/;
136
+ resourceInputs["status"] = undefined /*out*/;
137
+ }
138
+ opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
139
+ super(LakehouseMonitor.__pulumiType, name, resourceInputs, opts);
140
+ }
141
+ }
142
+ exports.LakehouseMonitor = LakehouseMonitor;
143
+ /** @internal */
144
+ LakehouseMonitor.__pulumiType = 'databricks:index/lakehouseMonitor:LakehouseMonitor';
145
+ //# sourceMappingURL=lakehouseMonitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lakehouseMonitor.js","sourceRoot":"","sources":["../lakehouseMonitor.ts"],"names":[],"mappings":";AAAA,wFAAwF;AACxF,iFAAiF;;;AAEjF,yCAAyC;AAGzC,yCAAyC;AAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,MAAa,gBAAiB,SAAQ,MAAM,CAAC,cAAc;IACvD;;;;;;;;OAQG;IACI,MAAM,CAAC,GAAG,CAAC,IAAY,EAAE,EAA2B,EAAE,KAA6B,EAAE,IAAmC;QAC3H,OAAO,IAAI,gBAAgB,CAAC,IAAI,EAAO,KAAK,kCAAO,IAAI,KAAE,EAAE,EAAE,EAAE,IAAG,CAAC;IACvE,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,gBAAgB,CAAC,YAAY,CAAC;IACjE,CAAC;IAyFD,YAAY,IAAY,EAAE,WAA0D,EAAE,IAAmC;QACrH,IAAI,cAAc,GAAkB,EAAE,CAAC;QACvC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAClB,IAAI,IAAI,CAAC,EAAE,EAAE;YACT,MAAM,KAAK,GAAG,WAAgD,CAAC;YAC/D,cAAc,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;YAClE,cAAc,CAAC,mBAAmB,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC;YAClF,cAAc,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;YAC1E,cAAc,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;YACtE,cAAc,CAAC,0BAA0B,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC,SAAS,CAAC;YAChG,cAAc,CAAC,uBAAuB,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS,CAAC;YAC1F,cAAc,CAAC,cAAc,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;YACxE,cAAc,CAAC,yBAAyB,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC,SAAS,CAAC;YAC9F,cAAc,CAAC,gBAAgB,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC;YAC5E,cAAc,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;YAC1E,cAAc,CAAC,kBAAkB,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC;YAChF,cAAc,CAAC,yBAAyB,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC,SAAS,CAAC;YAC9F,cAAc,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;YAChE,cAAc,CAAC,sBAAsB,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC,SAAS,CAAC;YACxF,cAAc,CAAC,cAAc,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;YACxE,cAAc,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;YAChE,cAAc,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;YAC5D,cAAc,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;YAClE,cAAc,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;YACpE,cAAc,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;SACzE;aAAM;YACH,MAAM,IAAI,GAAG,WAA+C,CAAC;YAC7D,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;gBACtD,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;aAC5D;YACD,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC7D,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;aACnE;YACD,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;gBACtD,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;aAC5D;YACD,cAAc,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;YAChE,cAAc,CAAC,mBAAmB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC;YAChF,cAAc,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;YACxE,cAAc,CAAC,0BAA0B,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,SAAS,CAAC;YAC9F,cAAc,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;YACtE,cAAc,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,SAAS,CAAC;YAC5F,cAAc,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;YACxE,cAAc,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC;YAC9E,cAAc,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;YAC9D,cAAc,CAAC,sBAAsB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,SAAS,CAAC;YACtF,cAAc,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;YACtE,cAAc,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;YAC9D,cAAc,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;YAChE,cAAc,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;YAClE,cAAc,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;YACpE,cAAc,CAAC,aAAa,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;YAClD,cAAc,CAAC,uBAAuB,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;YAC5D,cAAc,CAAC,gBAAgB,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;YACrD,cAAc,CAAC,yBAAyB,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;YAC9D,cAAc,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;SAChD;QACD,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,EAAE,IAAI,CAAC,CAAC;QACnE,KAAK,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;IACrE,CAAC;;AA9KL,4CA+KC;AAjKG,gBAAgB;AACO,6BAAY,GAAG,oDAAoD,CAAC"}
package/modelServing.d.ts CHANGED
@@ -4,6 +4,8 @@ import * as outputs from "./types/output";
4
4
  /**
5
5
  * This resource allows you to manage [Model Serving](https://docs.databricks.com/machine-learning/model-serving/index.html) endpoints in Databricks.
6
6
  *
7
+ * **Note** If you replace `servedModels` with `servedEntities` in an existing serving endpoint, the serving endpoint will briefly go into an update state (~30 seconds) and increment the config version.
8
+ *
7
9
  * ## Example Usage
8
10
  *
9
11
  * <!--Start PulumiCodeChooser -->
@@ -12,17 +14,17 @@ import * as outputs from "./types/output";
12
14
  * import * as databricks from "@pulumi/databricks";
13
15
  *
14
16
  * const _this = new databricks.ModelServing("this", {config: {
15
- * servedModels: [
17
+ * servedEntities: [
16
18
  * {
17
- * modelName: "ads-model",
18
- * modelVersion: "2",
19
+ * entityName: "ads-model",
20
+ * entityVersion: "2",
19
21
  * name: "prod_model",
20
22
  * scaleToZeroEnabled: true,
21
23
  * workloadSize: "Small",
22
24
  * },
23
25
  * {
24
- * modelName: "ads-model",
25
- * modelVersion: "4",
26
+ * entityName: "ads-model",
27
+ * entityVersion: "4",
26
28
  * name: "candidate_model",
27
29
  * scaleToZeroEnabled: false,
28
30
  * workloadSize: "Small",
@@ -94,11 +96,17 @@ export declare class ModelServing extends pulumi.CustomResource {
94
96
  * The name of the model serving endpoint. This field is required and must be unique across a workspace. An endpoint name can consist of alphanumeric characters, dashes, and underscores. NOTE: Changing this name will delete the existing endpoint and create a new endpoint with the update name.
95
97
  */
96
98
  readonly name: pulumi.Output<string>;
99
+ /**
100
+ * A list of rate limits to be applied to the serving endpoint. NOTE: only external and foundation model endpoints are supported as of now.
101
+ */
97
102
  readonly rateLimits: pulumi.Output<outputs.ModelServingRateLimit[] | undefined>;
98
103
  /**
99
104
  * Unique identifier of the serving endpoint primarily used to set permissions and refer to this instance for other operations.
100
105
  */
101
106
  readonly servingEndpointId: pulumi.Output<string>;
107
+ /**
108
+ * Tags to be attached to the serving endpoint and automatically propagated to billing logs.
109
+ */
102
110
  readonly tags: pulumi.Output<outputs.ModelServingTag[] | undefined>;
103
111
  /**
104
112
  * Create a ModelServing resource with the given unique name, arguments, and options.
@@ -121,11 +129,17 @@ export interface ModelServingState {
121
129
  * The name of the model serving endpoint. This field is required and must be unique across a workspace. An endpoint name can consist of alphanumeric characters, dashes, and underscores. NOTE: Changing this name will delete the existing endpoint and create a new endpoint with the update name.
122
130
  */
123
131
  name?: pulumi.Input<string>;
132
+ /**
133
+ * A list of rate limits to be applied to the serving endpoint. NOTE: only external and foundation model endpoints are supported as of now.
134
+ */
124
135
  rateLimits?: pulumi.Input<pulumi.Input<inputs.ModelServingRateLimit>[]>;
125
136
  /**
126
137
  * Unique identifier of the serving endpoint primarily used to set permissions and refer to this instance for other operations.
127
138
  */
128
139
  servingEndpointId?: pulumi.Input<string>;
140
+ /**
141
+ * Tags to be attached to the serving endpoint and automatically propagated to billing logs.
142
+ */
129
143
  tags?: pulumi.Input<pulumi.Input<inputs.ModelServingTag>[]>;
130
144
  }
131
145
  /**
@@ -140,6 +154,12 @@ export interface ModelServingArgs {
140
154
  * The name of the model serving endpoint. This field is required and must be unique across a workspace. An endpoint name can consist of alphanumeric characters, dashes, and underscores. NOTE: Changing this name will delete the existing endpoint and create a new endpoint with the update name.
141
155
  */
142
156
  name?: pulumi.Input<string>;
157
+ /**
158
+ * A list of rate limits to be applied to the serving endpoint. NOTE: only external and foundation model endpoints are supported as of now.
159
+ */
143
160
  rateLimits?: pulumi.Input<pulumi.Input<inputs.ModelServingRateLimit>[]>;
161
+ /**
162
+ * Tags to be attached to the serving endpoint and automatically propagated to billing logs.
163
+ */
144
164
  tags?: pulumi.Input<pulumi.Input<inputs.ModelServingTag>[]>;
145
165
  }
package/modelServing.js CHANGED
@@ -8,6 +8,8 @@ const utilities = require("./utilities");
8
8
  /**
9
9
  * This resource allows you to manage [Model Serving](https://docs.databricks.com/machine-learning/model-serving/index.html) endpoints in Databricks.
10
10
  *
11
+ * **Note** If you replace `servedModels` with `servedEntities` in an existing serving endpoint, the serving endpoint will briefly go into an update state (~30 seconds) and increment the config version.
12
+ *
11
13
  * ## Example Usage
12
14
  *
13
15
  * <!--Start PulumiCodeChooser -->
@@ -16,17 +18,17 @@ const utilities = require("./utilities");
16
18
  * import * as databricks from "@pulumi/databricks";
17
19
  *
18
20
  * const _this = new databricks.ModelServing("this", {config: {
19
- * servedModels: [
21
+ * servedEntities: [
20
22
  * {
21
- * modelName: "ads-model",
22
- * modelVersion: "2",
23
+ * entityName: "ads-model",
24
+ * entityVersion: "2",
23
25
  * name: "prod_model",
24
26
  * scaleToZeroEnabled: true,
25
27
  * workloadSize: "Small",
26
28
  * },
27
29
  * {
28
- * modelName: "ads-model",
29
- * modelVersion: "4",
30
+ * entityName: "ads-model",
31
+ * entityVersion: "4",
30
32
  * name: "candidate_model",
31
33
  * scaleToZeroEnabled: false,
32
34
  * workloadSize: "Small",
@@ -1 +1 @@
1
- {"version":3,"file":"modelServing.js","sourceRoot":"","sources":["../modelServing.ts"],"names":[],"mappings":";AAAA,wFAAwF;AACxF,iFAAiF;;;AAEjF,yCAAyC;AAGzC,yCAAyC;AAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoEG;AACH,MAAa,YAAa,SAAQ,MAAM,CAAC,cAAc;IACnD;;;;;;;;OAQG;IACI,MAAM,CAAC,GAAG,CAAC,IAAY,EAAE,EAA2B,EAAE,KAAyB,EAAE,IAAmC;QACvH,OAAO,IAAI,YAAY,CAAC,IAAI,EAAO,KAAK,kCAAO,IAAI,KAAE,EAAE,EAAE,EAAE,IAAG,CAAC;IACnE,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,YAAY,CAAC,YAAY,CAAC;IAC7D,CAAC;IAyBD,YAAY,IAAY,EAAE,WAAkD,EAAE,IAAmC;QAC7G,IAAI,cAAc,GAAkB,EAAE,CAAC;QACvC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAClB,IAAI,IAAI,CAAC,EAAE,EAAE;YACT,MAAM,KAAK,GAAG,WAA4C,CAAC;YAC3D,cAAc,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;YAC5D,cAAc,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;YACxD,cAAc,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;YACpE,cAAc,CAAC,mBAAmB,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC;YAClF,cAAc,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;SAC3D;aAAM;YACH,MAAM,IAAI,GAAG,WAA2C,CAAC;YACzD,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;gBACnD,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;aACzD;YACD,cAAc,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;YAC1D,cAAc,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;YACtD,cAAc,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;YAClE,cAAc,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;YACtD,cAAc,CAAC,mBAAmB,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;SAC3D;QACD,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,EAAE,IAAI,CAAC,CAAC;QACnE,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;IACjE,CAAC;;AA1EL,oCA2EC;AA7DG,gBAAgB;AACO,yBAAY,GAAG,4CAA4C,CAAC"}
1
+ {"version":3,"file":"modelServing.js","sourceRoot":"","sources":["../modelServing.ts"],"names":[],"mappings":";AAAA,wFAAwF;AACxF,iFAAiF;;;AAEjF,yCAAyC;AAGzC,yCAAyC;AAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsEG;AACH,MAAa,YAAa,SAAQ,MAAM,CAAC,cAAc;IACnD;;;;;;;;OAQG;IACI,MAAM,CAAC,GAAG,CAAC,IAAY,EAAE,EAA2B,EAAE,KAAyB,EAAE,IAAmC;QACvH,OAAO,IAAI,YAAY,CAAC,IAAI,EAAO,KAAK,kCAAO,IAAI,KAAE,EAAE,EAAE,EAAE,IAAG,CAAC;IACnE,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,YAAY,CAAC,YAAY,CAAC;IAC7D,CAAC;IA+BD,YAAY,IAAY,EAAE,WAAkD,EAAE,IAAmC;QAC7G,IAAI,cAAc,GAAkB,EAAE,CAAC;QACvC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAClB,IAAI,IAAI,CAAC,EAAE,EAAE;YACT,MAAM,KAAK,GAAG,WAA4C,CAAC;YAC3D,cAAc,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;YAC5D,cAAc,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;YACxD,cAAc,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;YACpE,cAAc,CAAC,mBAAmB,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC;YAClF,cAAc,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;SAC3D;aAAM;YACH,MAAM,IAAI,GAAG,WAA2C,CAAC;YACzD,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;gBACnD,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;aACzD;YACD,cAAc,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;YAC1D,cAAc,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;YACtD,cAAc,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;YAClE,cAAc,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;YACtD,cAAc,CAAC,mBAAmB,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;SAC3D;QACD,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,EAAE,IAAI,CAAC,CAAC;QACnE,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;IACjE,CAAC;;AAhFL,oCAiFC;AAnEG,gBAAgB;AACO,yBAAY,GAAG,4CAA4C,CAAC"}