airbyte-faros-destination 0.23.38 → 0.23.39
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.
- package/lib/converters/codex/costs.d.ts +9 -0
- package/lib/converters/codex/costs.js +69 -0
- package/lib/converters/codex/costs.js.map +1 -0
- package/lib/converters/codex/usage.d.ts +6 -2
- package/lib/converters/codex/usage.js +55 -21
- package/lib/converters/codex/usage.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { AirbyteRecord } from 'faros-airbyte-cdk';
|
|
2
|
+
import { DestinationModel, DestinationRecord, StreamContext } from '../converter';
|
|
3
|
+
import { Usage } from './usage';
|
|
4
|
+
export declare class Costs extends Usage {
|
|
5
|
+
readonly destinationModels: ReadonlyArray<DestinationModel>;
|
|
6
|
+
id(record: AirbyteRecord): any;
|
|
7
|
+
convert(record: AirbyteRecord, ctx: StreamContext): Promise<ReadonlyArray<DestinationRecord>>;
|
|
8
|
+
onProcessingComplete(): Promise<ReadonlyArray<DestinationRecord>>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Costs = void 0;
|
|
4
|
+
const vcs_1 = require("../common/vcs");
|
|
5
|
+
const usage_1 = require("./usage");
|
|
6
|
+
// site_hosting and unknown products are dropped
|
|
7
|
+
const PRODUCT_TOOLS = {
|
|
8
|
+
codex: vcs_1.VCSToolDetail.Codex,
|
|
9
|
+
ChatGPT: vcs_1.VCSToolDetail.ChatGPT,
|
|
10
|
+
Work: vcs_1.VCSToolDetail.Work,
|
|
11
|
+
};
|
|
12
|
+
// Model rows per product. They share uids with usage model rows, which the
|
|
13
|
+
// source omits on days costs covers, so each model bucket is written once.
|
|
14
|
+
class Costs extends usage_1.Usage {
|
|
15
|
+
constructor() {
|
|
16
|
+
super(...arguments);
|
|
17
|
+
this.destinationModels = [
|
|
18
|
+
'vcs_User',
|
|
19
|
+
'vcs_UserEmail',
|
|
20
|
+
'vcs_UserTool',
|
|
21
|
+
'vcs_AssistantMetric',
|
|
22
|
+
'vcs_UserToolUsage',
|
|
23
|
+
];
|
|
24
|
+
}
|
|
25
|
+
id(record) {
|
|
26
|
+
const data = record?.record?.data;
|
|
27
|
+
return [
|
|
28
|
+
data?.start_time,
|
|
29
|
+
data?.user_id,
|
|
30
|
+
data?.product,
|
|
31
|
+
data?.model,
|
|
32
|
+
data?.speed,
|
|
33
|
+
].join('__');
|
|
34
|
+
}
|
|
35
|
+
async convert(record, ctx) {
|
|
36
|
+
const item = record.record.data;
|
|
37
|
+
const tool = PRODUCT_TOOLS[item.product];
|
|
38
|
+
if (!tool || !item.model || !item.user_email) {
|
|
39
|
+
return [];
|
|
40
|
+
}
|
|
41
|
+
const startedAt = new Date(item.start_time * 1000);
|
|
42
|
+
const organization = {
|
|
43
|
+
uid: this.streamName.source,
|
|
44
|
+
source: this.streamName.source,
|
|
45
|
+
};
|
|
46
|
+
const values = [...(0, usage_1.billingMetrics)(item), ...(0, usage_1.tokenMetrics)(item)];
|
|
47
|
+
const metrics = values.flatMap(([assistantMetricType, value, assistantMetricTypeDetail]) => this.getAssistantMetric({
|
|
48
|
+
startedAt,
|
|
49
|
+
endedAt: new Date(item.end_time * 1000),
|
|
50
|
+
organization,
|
|
51
|
+
userEmail: item.user_email,
|
|
52
|
+
model: item.model,
|
|
53
|
+
speed: item.speed,
|
|
54
|
+
tool,
|
|
55
|
+
assistantMetricType,
|
|
56
|
+
assistantMetricTypeDetail,
|
|
57
|
+
value,
|
|
58
|
+
}));
|
|
59
|
+
// Usage rows omit models here, so a user whose only spend is in model
|
|
60
|
+
// buckets would otherwise have no user or activity records
|
|
61
|
+
const active = values.some(([, value]) => value > 0);
|
|
62
|
+
return this.withUserRecords(metrics, item.user_email, organization, startedAt, new Set([tool]), new Set(active ? [tool] : []));
|
|
63
|
+
}
|
|
64
|
+
async onProcessingComplete() {
|
|
65
|
+
return [];
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
exports.Costs = Costs;
|
|
69
|
+
//# sourceMappingURL=costs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"costs.js","sourceRoot":"","sources":["../../../src/converters/codex/costs.ts"],"names":[],"mappings":";;;AAEA,uCAA4C;AAE5C,mCAAyE;AAYzE,gDAAgD;AAChD,MAAM,aAAa,GAAkC;IACnD,KAAK,EAAE,mBAAa,CAAC,KAAK;IAC1B,OAAO,EAAE,mBAAa,CAAC,OAAO;IAC9B,IAAI,EAAE,mBAAa,CAAC,IAAI;CACzB,CAAC;AAEF,2EAA2E;AAC3E,2EAA2E;AAC3E,MAAa,KAAM,SAAQ,aAAK;IAAhC;;QACW,sBAAiB,GAAoC;YAC5D,UAAU;YACV,eAAe;YACf,cAAc;YACd,qBAAqB;YACrB,mBAAmB;SACpB,CAAC;IA4DJ,CAAC;IA1DC,EAAE,CAAC,MAAqB;QACtB,MAAM,IAAI,GAAG,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC;QAClC,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,KAAK;SACZ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IAED,KAAK,CAAC,OAAO,CACX,MAAqB,EACrB,GAAkB;QAElB,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAqB,CAAC;QACjD,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YAC7C,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;QACnD,MAAM,YAAY,GAAG;YACnB,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM;YAC3B,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM;SAC/B,CAAC;QACF,MAAM,MAAM,GAAG,CAAC,GAAG,IAAA,sBAAc,EAAC,IAAI,CAAC,EAAE,GAAG,IAAA,oBAAY,EAAC,IAAI,CAAC,CAAC,CAAC;QAChE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAC5B,CAAC,CAAC,mBAAmB,EAAE,KAAK,EAAE,yBAAyB,CAAC,EAAE,EAAE,CAC1D,IAAI,CAAC,kBAAkB,CAAC;YACtB,SAAS;YACT,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACvC,YAAY;YACZ,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI;YACJ,mBAAmB;YACnB,yBAAyB;YACzB,KAAK;SACN,CAAC,CACL,CAAC;QACF,sEAAsE;QACtE,2DAA2D;QAC3D,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC,eAAe,CACzB,OAAO,EACP,IAAI,CAAC,UAAU,EACf,YAAY,EACZ,SAAS,EACT,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EACf,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAC9B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,oBAAoB;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;CACF;AAnED,sBAmEC"}
|
|
@@ -2,13 +2,13 @@ import { AirbyteRecord } from 'faros-airbyte-cdk';
|
|
|
2
2
|
import { AssistantMetric, OrgKey, VCSToolDetail } from '../common/vcs';
|
|
3
3
|
import { DestinationModel, DestinationRecord, StreamContext } from '../converter';
|
|
4
4
|
import { CodexConverter } from './common';
|
|
5
|
-
interface TextTokenUsage {
|
|
5
|
+
export interface TextTokenUsage {
|
|
6
6
|
uncached_text_input_tokens?: number | null;
|
|
7
7
|
cached_text_input_tokens?: number | null;
|
|
8
8
|
text_output_tokens?: number | null;
|
|
9
9
|
text_total_tokens?: number | null;
|
|
10
10
|
}
|
|
11
|
-
interface BilledUsage extends TextTokenUsage {
|
|
11
|
+
export interface BilledUsage extends TextTokenUsage {
|
|
12
12
|
credits: number | null;
|
|
13
13
|
cost_usd?: number | null;
|
|
14
14
|
estimated_cost_usd?: number | null;
|
|
@@ -69,12 +69,16 @@ export interface CodexAssistantMetricConfig {
|
|
|
69
69
|
}
|
|
70
70
|
export declare function clientTool(clientId: string): VCSToolDetail | undefined;
|
|
71
71
|
export declare function isCodexClient(clientId: string): boolean;
|
|
72
|
+
type MetricValue = [AssistantMetric, number, string?];
|
|
73
|
+
export declare function billingMetrics(usage: BilledUsage): MetricValue[];
|
|
74
|
+
export declare function tokenMetrics(usage: TextTokenUsage): MetricValue[];
|
|
72
75
|
export declare class Usage extends CodexConverter {
|
|
73
76
|
private readonly seenUsers;
|
|
74
77
|
private readonly seenUserTools;
|
|
75
78
|
readonly destinationModels: ReadonlyArray<DestinationModel>;
|
|
76
79
|
protected getAssistantMetric(config: CodexAssistantMetricConfig): DestinationRecord[];
|
|
77
80
|
convert(record: AirbyteRecord, ctx: StreamContext): Promise<ReadonlyArray<DestinationRecord>>;
|
|
81
|
+
protected withUserRecords(metrics: ReadonlyArray<DestinationRecord>, userEmail: string, organization: OrgKey, startedAt: Date, tools: ReadonlySet<VCSToolDetail>, activeTools: ReadonlySet<VCSToolDetail>): DestinationRecord[];
|
|
78
82
|
onProcessingComplete(): Promise<ReadonlyArray<DestinationRecord>>;
|
|
79
83
|
}
|
|
80
84
|
export {};
|
|
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.Usage = void 0;
|
|
4
4
|
exports.clientTool = clientTool;
|
|
5
5
|
exports.isCodexClient = isCodexClient;
|
|
6
|
+
exports.billingMetrics = billingMetrics;
|
|
7
|
+
exports.tokenMetrics = tokenMetrics;
|
|
6
8
|
const common_1 = require("faros-airbyte-common/common");
|
|
7
9
|
const lodash_1 = require("lodash");
|
|
8
10
|
const vcs_1 = require("../common/vcs");
|
|
@@ -21,6 +23,51 @@ function clientTool(clientId) {
|
|
|
21
23
|
function isCodexClient(clientId) {
|
|
22
24
|
return clientTool(clientId) === vcs_1.VCSToolDetail.Codex;
|
|
23
25
|
}
|
|
26
|
+
// Null means not reported and is skipped; a reported zero is kept
|
|
27
|
+
function billingMetrics(usage) {
|
|
28
|
+
const metrics = [];
|
|
29
|
+
if (!(0, lodash_1.isNil)(usage.credits)) {
|
|
30
|
+
metrics.push([vcs_1.AssistantMetric.Cost, usage.credits]);
|
|
31
|
+
}
|
|
32
|
+
// Cost/USD is estimated_cost_usd: credits priced at the workspace's
|
|
33
|
+
// overage rate, not billed spend. API rounds it to the cent; store
|
|
34
|
+
// integer cents, matching the Claude path.
|
|
35
|
+
if (!(0, lodash_1.isNil)(usage.estimated_cost_usd)) {
|
|
36
|
+
metrics.push([
|
|
37
|
+
vcs_1.AssistantMetric.Cost,
|
|
38
|
+
Math.round(usage.estimated_cost_usd * 100),
|
|
39
|
+
'USD',
|
|
40
|
+
]);
|
|
41
|
+
}
|
|
42
|
+
// Native USD-priced usage, excluding credit-priced usage
|
|
43
|
+
if (!(0, lodash_1.isNil)(usage.cost_usd)) {
|
|
44
|
+
metrics.push([
|
|
45
|
+
vcs_1.AssistantMetric.Cost,
|
|
46
|
+
Math.round(usage.cost_usd * 100),
|
|
47
|
+
'NativeUSD',
|
|
48
|
+
]);
|
|
49
|
+
}
|
|
50
|
+
return metrics;
|
|
51
|
+
}
|
|
52
|
+
function tokenMetrics(usage) {
|
|
53
|
+
const metrics = [];
|
|
54
|
+
if (usage.uncached_text_input_tokens) {
|
|
55
|
+
metrics.push([
|
|
56
|
+
vcs_1.AssistantMetric.InputTokens,
|
|
57
|
+
usage.uncached_text_input_tokens,
|
|
58
|
+
]);
|
|
59
|
+
}
|
|
60
|
+
if (usage.cached_text_input_tokens) {
|
|
61
|
+
metrics.push([
|
|
62
|
+
vcs_1.AssistantMetric.CacheReadTokens,
|
|
63
|
+
usage.cached_text_input_tokens,
|
|
64
|
+
]);
|
|
65
|
+
}
|
|
66
|
+
if (usage.text_output_tokens) {
|
|
67
|
+
metrics.push([vcs_1.AssistantMetric.OutputTokens, usage.text_output_tokens]);
|
|
68
|
+
}
|
|
69
|
+
return metrics;
|
|
70
|
+
}
|
|
24
71
|
function isBilled(usage) {
|
|
25
72
|
return Boolean(usage.credits || usage.cost_usd || usage.estimated_cost_usd);
|
|
26
73
|
}
|
|
@@ -120,31 +167,14 @@ class Usage extends common_2.CodexConverter {
|
|
|
120
167
|
...dims,
|
|
121
168
|
}));
|
|
122
169
|
};
|
|
123
|
-
// Null means not reported and is skipped; a reported zero is kept
|
|
124
170
|
const emitBilling = (usage, dims) => {
|
|
125
|
-
|
|
126
|
-
emit(
|
|
127
|
-
}
|
|
128
|
-
// Cost/USD is estimated_cost_usd: credits priced at the workspace's
|
|
129
|
-
// overage rate, not billed spend. API rounds it to the cent; store
|
|
130
|
-
// integer cents, matching the Claude path.
|
|
131
|
-
if (!(0, lodash_1.isNil)(usage.estimated_cost_usd)) {
|
|
132
|
-
emit(vcs_1.AssistantMetric.Cost, Math.round(usage.estimated_cost_usd * 100), dims, 'USD');
|
|
133
|
-
}
|
|
134
|
-
// Native USD-priced usage, excluding credit-priced usage
|
|
135
|
-
if (!(0, lodash_1.isNil)(usage.cost_usd)) {
|
|
136
|
-
emit(vcs_1.AssistantMetric.Cost, Math.round(usage.cost_usd * 100), dims, 'NativeUSD');
|
|
171
|
+
for (const [type, value, detail] of billingMetrics(usage)) {
|
|
172
|
+
emit(type, value, dims, detail);
|
|
137
173
|
}
|
|
138
174
|
};
|
|
139
175
|
const emitTokens = (usage, dims) => {
|
|
140
|
-
|
|
141
|
-
emit(
|
|
142
|
-
}
|
|
143
|
-
if (usage.cached_text_input_tokens) {
|
|
144
|
-
emit(vcs_1.AssistantMetric.CacheReadTokens, usage.cached_text_input_tokens, dims);
|
|
145
|
-
}
|
|
146
|
-
if (usage.text_output_tokens) {
|
|
147
|
-
emit(vcs_1.AssistantMetric.OutputTokens, usage.text_output_tokens, dims);
|
|
176
|
+
for (const [type, value] of tokenMetrics(usage)) {
|
|
177
|
+
emit(type, value, dims);
|
|
148
178
|
}
|
|
149
179
|
};
|
|
150
180
|
// Per-client breakdown, attributed to each client's product. Totals are
|
|
@@ -212,6 +242,10 @@ class Usage extends common_2.CodexConverter {
|
|
|
212
242
|
if (commitAttribution?.with_codex_contribution) {
|
|
213
243
|
emit(vcs_1.AssistantMetric.CommitsCreated, commitAttribution.with_codex_contribution, codeDims);
|
|
214
244
|
}
|
|
245
|
+
return this.withUserRecords(metrics, userEmail, organization, startedAt, tools, activeTools);
|
|
246
|
+
}
|
|
247
|
+
// Wraps metrics with the user and tool records they reference
|
|
248
|
+
withUserRecords(metrics, userEmail, organization, startedAt, tools, activeTools) {
|
|
215
249
|
// Rows with no known product must not register the user
|
|
216
250
|
if (!metrics.length) {
|
|
217
251
|
return [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage.js","sourceRoot":"","sources":["../../../src/converters/codex/usage.ts"],"names":[],"mappings":";;;AAyFA,gCAKC;AAED,sCAEC;
|
|
1
|
+
{"version":3,"file":"usage.js","sourceRoot":"","sources":["../../../src/converters/codex/usage.ts"],"names":[],"mappings":";;;AAyFA,gCAKC;AAED,sCAEC;AAKD,wCAwBC;AAED,oCAkBC;AAlJD,wDAAmD;AACnD,mCAA6B;AAE7B,uCAMuB;AAEvB,qCAAwC;AA2ExC,yEAAyE;AACzE,6CAA6C;AAC7C,SAAgB,UAAU,CAAC,QAAgB;IACzC,IAAI,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC;QAAE,OAAO,mBAAa,CAAC,IAAI,CAAC;IAClE,IAAI,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,mBAAa,CAAC,KAAK,CAAC;IAC9D,IAAI,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,mBAAa,CAAC,OAAO,CAAC;IAC/D,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAgB,aAAa,CAAC,QAAgB;IAC5C,OAAO,UAAU,CAAC,QAAQ,CAAC,KAAK,mBAAa,CAAC,KAAK,CAAC;AACtD,CAAC;AAID,kEAAkE;AAClE,SAAgB,cAAc,CAAC,KAAkB;IAC/C,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,IAAI,CAAC,IAAA,cAAK,EAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,qBAAe,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACtD,CAAC;IACD,oEAAoE;IACpE,mEAAmE;IACnE,2CAA2C;IAC3C,IAAI,CAAC,IAAA,cAAK,EAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC;YACX,qBAAe,CAAC,IAAI;YACpB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,kBAAkB,GAAG,GAAG,CAAC;YAC1C,KAAK;SACN,CAAC,CAAC;IACL,CAAC;IACD,yDAAyD;IACzD,IAAI,CAAC,IAAA,cAAK,EAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC;YACX,qBAAe,CAAC,IAAI;YACpB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC;YAChC,WAAW;SACZ,CAAC,CAAC;IACL,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAgB,YAAY,CAAC,KAAqB;IAChD,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,IAAI,KAAK,CAAC,0BAA0B,EAAE,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC;YACX,qBAAe,CAAC,WAAW;YAC3B,KAAK,CAAC,0BAA0B;SACjC,CAAC,CAAC;IACL,CAAC;IACD,IAAI,KAAK,CAAC,wBAAwB,EAAE,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC;YACX,qBAAe,CAAC,eAAe;YAC/B,KAAK,CAAC,wBAAwB;SAC/B,CAAC,CAAC;IACL,CAAC;IACD,IAAI,KAAK,CAAC,kBAAkB,EAAE,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,qBAAe,CAAC,YAAY,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,QAAQ,CAAC,KAAkB;IAClC,OAAO,OAAO,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;AAC9E,CAAC;AAOD,MAAa,KAAM,SAAQ,uBAAc;IAAzC;;QACmB,cAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QAC9B,kBAAa,GAAG,IAAI,GAAG,EAAU,CAAC;QAE1C,sBAAiB,GAAoC;YAC5D,kBAAkB;YAClB,UAAU;YACV,eAAe;YACf,cAAc;YACd,qBAAqB;YACrB,mBAAmB;SACpB,CAAC;IAuTJ,CAAC;IArTW,kBAAkB,CAC1B,MAAkC;QAElC,MAAM,EACJ,SAAS,EACT,OAAO,EACP,mBAAmB,EACnB,yBAAyB,EACzB,KAAK,EACL,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,OAAO,EACP,KAAK,EACL,KAAK,EACL,IAAI,GACL,GAAG,MAAM,CAAC;QAEX,OAAO;YACL;gBACE,KAAK,EAAE,qBAAqB;gBAC5B,MAAM,EAAE;oBACN,GAAG,EAAE,IAAA,eAAM,EACT,EAAE;yBACC,MAAM,CACL,GAAG;wBACD,IAAI;wBACJ,mBAAmB;wBACnB,SAAS,CAAC,WAAW,EAAE;wBACvB,YAAY,CAAC,GAAG;wBAChB,SAAS;wBACT,gBAAgB;wBAChB,yBAAyB;qBAC1B,EACD,GAAG;wBACD,EAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAC;wBAChC,EAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAC;wBAC5B,EAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAC;qBAC7B;yBACE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAA,cAAK,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC;yBAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,CACrC;yBACA,IAAI,CAAC,IAAI,CAAC,CACd;oBACD,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,SAAS;oBACT,OAAO;oBACP,IAAI,EAAE;wBACJ,QAAQ,EAAE,mBAAmB;wBAC7B,GAAG,CAAC,yBAAyB,IAAI;4BAC/B,MAAM,EAAE,yBAAyB;yBAClC,CAAC;wBACF,GAAG,CAAC,gBAAgB,IAAI,EAAC,MAAM,EAAE,gBAAgB,EAAC,CAAC;qBACpD;oBACD,SAAS,EACP,mBAAmB,KAAK,qBAAe,CAAC,IAAI;wBAC5C,mBAAmB,KAAK,qBAAe,CAAC,uBAAuB;wBAC7D,CAAC,CAAC,OAAO;wBACT,CAAC,CAAC,KAAK;oBACX,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;oBACpB,YAAY;oBACZ,IAAI,EAAE,EAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,EAAC;oBACtD,IAAI,EAAE;wBACJ,QAAQ,EAAE,qBAAe,CAAC,eAAe;wBACzC,MAAM,EAAE,IAAI;qBACb;oBACD,GAAG,CAAC,OAAO,IAAI,EAAC,OAAO,EAAC,CAAC;oBACzB,GAAG,CAAC,KAAK,IAAI,EAAC,KAAK,EAAC,CAAC;iBACtB;aACF;SACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO,CACX,MAAqB,EACrB,GAAkB;QAElB,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,IAAsB,CAAC;QAEvD,uEAAuE;QACvE,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,EAAE,KAAK,IAAI,SAAS,CAAC,UAAU,CAAC;QACjE,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;QAEpD,MAAM,YAAY,GAAG;YACnB,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM;YAC3B,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM;SAC/B,CAAC;QAEF,MAAM,OAAO,GAAwB,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAiB,CAAC;QACvC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAiB,CAAC;QAC7C,MAAM,IAAI,GAAG,CACX,mBAAoC,EACpC,KAAa,EACb,IAAgB,EAChB,yBAAkC,EAC5B,EAAE;YACR,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBACd,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;YACD,OAAO,CAAC,IAAI,CACV,GAAG,IAAI,CAAC,kBAAkB,CAAC;gBACzB,SAAS;gBACT,OAAO;gBACP,mBAAmB;gBACnB,yBAAyB;gBACzB,KAAK;gBACL,YAAY;gBACZ,SAAS;gBACT,GAAG,IAAI;aACR,CAAC,CACH,CAAC;QACJ,CAAC,CAAC;QACF,MAAM,WAAW,GAAG,CAAC,KAAkB,EAAE,IAAgB,EAAQ,EAAE;YACjE,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1D,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YAClC,CAAC;QACH,CAAC,CAAC;QACF,MAAM,UAAU,GAAG,CAAC,KAAqB,EAAE,IAAgB,EAAQ,EAAE;YACnE,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChD,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC,CAAC;QAEF,wEAAwE;QACxE,kCAAkC;QAClC,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,IAAI,EAAE,CAAC;QACxC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC1C,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,SAAS;YACX,CAAC;YACD,MAAM,IAAI,GAAG,EAAC,OAAO,EAAE,MAAM,CAAC,SAAS,EAAE,IAAI,EAAC,CAAC;YAC/C,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAE1B,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC;YAC/C,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;gBAChB,IAAI,CAAC,qBAAe,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;YACzD,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC;YAC9C,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBACd,IAAI,CAAC,qBAAe,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YACrD,CAAC;YACD,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC3B,CAAC;QAED,wEAAwE;QACxE,kEAAkE;QAClE,kEAAkE;QAClE,yEAAyE;QACzE,UAAU;QACV,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,IAAI,EAAE,CAAC;QACtC,MAAM,WAAW,GAAG,IAAI,GAAG,CACzB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAC7D,CAAC;QACF,yEAAyE;QACzE,gEAAgE;QAChE,MAAM,gBAAgB,GACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3E,MAAM,CAAC,UAAU,CAAC,GAAG,WAAW,CAAC;QACjC,MAAM,SAAS,GACb,WAAW,CAAC,IAAI,KAAK,CAAC;YACpB,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,IAAI,gBAAgB;gBAC1C,CAAC,CAAC,mBAAa,CAAC,KAAK;gBACrB,CAAC,CAAC,SAAS,CAAC;QAClB,IAAI,SAAS,EAAE,CAAC;YACd,KAAK,MAAM,UAAU,IAAI,MAAM,EAAE,CAAC;gBAChC,oEAAoE;gBACpE,0BAA0B;gBAC1B,MAAM,IAAI,GAAG;oBACX,KAAK,EAAE,UAAU,CAAC,KAAK;oBACvB,KAAK,EAAE,UAAU,CAAC,KAAK,IAAI,SAAS;oBACpC,IAAI,EAAE,SAAS;iBAChB,CAAC;gBACF,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gBAC9B,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,kEAAkE;QAClE,MAAM,QAAQ,GAAG,EAAC,IAAI,EAAE,mBAAa,CAAC,KAAK,EAAC,CAAC;QAC7C,MAAM,WAAW,GAAG,SAAS,CAAC,gBAAgB,EAAE,aAAa,CAAC;QAC9D,IAAI,WAAW,EAAE,KAAK,EAAE,CAAC;YACvB,IAAI,CAAC,qBAAe,CAAC,YAAY,EAAE,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAClE,CAAC;QACD,IAAI,WAAW,EAAE,OAAO,EAAE,CAAC;YACzB,IAAI,CAAC,qBAAe,CAAC,cAAc,EAAE,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,WAAW,EAAE,oBAAoB,EAAE,CAAC;YACtC,IAAI,CACF,qBAAe,CAAC,uBAAuB,EACvC,WAAW,CAAC,oBAAoB,EAChC,QAAQ,CACT,CAAC;QACJ,CAAC;QACD,MAAM,iBAAiB,GAAG,SAAS,CAAC,gBAAgB,EAAE,OAAO,CAAC;QAC9D,IAAI,iBAAiB,EAAE,uBAAuB,EAAE,CAAC;YAC/C,IAAI,CACF,qBAAe,CAAC,cAAc,EAC9B,iBAAiB,CAAC,uBAAuB,EACzC,QAAQ,CACT,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,eAAe,CACzB,OAAO,EACP,SAAS,EACT,YAAY,EACZ,SAAS,EACT,KAAK,EACL,WAAW,CACZ,CAAC;IACJ,CAAC;IAED,8DAA8D;IACpD,eAAe,CACvB,OAAyC,EACzC,SAAiB,EACjB,YAAoB,EACpB,SAAe,EACf,KAAiC,EACjC,WAAuC;QAEvC,wDAAwD;QACxD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACpB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,GAAG,GAAwB,EAAE,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAE9B,GAAG,CAAC,IAAI,CAAC;gBACP,KAAK,EAAE,UAAU;gBACjB,MAAM,EAAE;oBACN,GAAG,EAAE,SAAS;oBACd,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM;oBAC9B,KAAK,EAAE,SAAS;oBAChB,IAAI,EAAE,EAAC,QAAQ,EAAE,sBAAgB,CAAC,IAAI,EAAC;iBACxC;aACF,CAAC,CAAC;YAEH,GAAG,CAAC,IAAI,CAAC;gBACP,KAAK,EAAE,eAAe;gBACtB,MAAM,EAAE;oBACN,IAAI,EAAE,EAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,EAAC;oBACtD,KAAK,EAAE,SAAS;iBACjB;aACF,CAAC,CAAC;QACL,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,GAAG,SAAS,KAAK,IAAI,EAAE,CAAC;YACpC,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChC,SAAS;YACX,CAAC;YACD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5B,GAAG,CAAC,IAAI,CAAC;gBACP,KAAK,EAAE,cAAc;gBACrB,MAAM,EAAE;oBACN,IAAI,EAAE,EAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,EAAC;oBACtD,YAAY;oBACZ,IAAI,EAAE,EAAC,QAAQ,EAAE,qBAAe,CAAC,eAAe,EAAE,MAAM,EAAE,IAAI,EAAC;oBAC/D,QAAQ,EAAE,KAAK;iBAChB;aACF,CAAC,CAAC;QACL,CAAC;QAED,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;QAErB,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,GAAG,CAAC,IAAI,CAAC;gBACP,KAAK,EAAE,mBAAmB;gBAC1B,MAAM,EAAE;oBACN,QAAQ,EAAE;wBACR,IAAI,EAAE,EAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,EAAC;wBACtD,YAAY,EAAE;4BACZ,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM;4BAC3B,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM;yBAC/B;wBACD,IAAI,EAAE,EAAC,QAAQ,EAAE,qBAAe,CAAC,eAAe,EAAE,MAAM,EAAE,IAAI,EAAC;qBAChE;oBACD,MAAM,EAAE,SAAS,CAAC,WAAW,EAAE;oBAC/B,UAAU,EAAE,SAAS,CAAC,WAAW,EAAE;iBACpC;aACF,CAAC,CAAC;QACL,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,oBAAoB;QACxB,OAAO;YACL;gBACE,KAAK,EAAE,kBAAkB;gBACzB,MAAM,EAAE;oBACN,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM;oBAC3B,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM;iBAC/B;aACF;SACF,CAAC;IACJ,CAAC;CACF;AAlUD,sBAkUC"}
|