@owvision/station-interface-ts 0.0.1
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/README.md +58 -0
- package/dist/generated/recorder.d.ts +205 -0
- package/dist/generated/recorder.d.ts.map +1 -0
- package/dist/generated/recorder.js +1018 -0
- package/dist/generated/recorder.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -0
- package/package.json +33 -0
- package/src/generated/recorder.ts +1373 -0
- package/src/index.ts +57 -0
- package/tsconfig.json +44 -0
package/README.md
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# @owvision/station-interface-ts
|
|
2
|
+
|
|
3
|
+
Support package thats helps you to write a station interface (using typescript or javascript) which automatically gets detected by owvision.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
import {
|
|
9
|
+
GetSensorStateRequest,
|
|
10
|
+
GetStationDefinitionRequest,
|
|
11
|
+
startInterface,
|
|
12
|
+
} from "@owvision/station-interface-ts";
|
|
13
|
+
|
|
14
|
+
/* This function is called by owvision. It should read from the requested sensor. */
|
|
15
|
+
async function getSensorState(req: GetSensorStateRequest) {
|
|
16
|
+
const state = SensorState.create({
|
|
17
|
+
createdAt: Date.now(),
|
|
18
|
+
});
|
|
19
|
+
if (req.name === "temp_in") {
|
|
20
|
+
state.unitId = "celsius";
|
|
21
|
+
state.value = 21; // TODO: Query the sensor's value here
|
|
22
|
+
} else if (req.name === "temp_out") {
|
|
23
|
+
state.unitId = "celsius";
|
|
24
|
+
state.value = 12; // TODO: Query the sensor's value here
|
|
25
|
+
}
|
|
26
|
+
return state;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/* This function is called by owvision. It should return a list of all available sensors. */
|
|
30
|
+
async function getStationDefinition(req: GetStationDefinitionRequest) {
|
|
31
|
+
return StationDefinition.create({
|
|
32
|
+
name: "My station",
|
|
33
|
+
longitude: 23.1,
|
|
34
|
+
latitude: 12.3,
|
|
35
|
+
sensors: [
|
|
36
|
+
SensorDefinition.create({
|
|
37
|
+
name: "temp_in",
|
|
38
|
+
element: "temperature",
|
|
39
|
+
recordIntervalSeconds: 60,
|
|
40
|
+
}),
|
|
41
|
+
SensorDefinition.create({
|
|
42
|
+
name: "temp_out",
|
|
43
|
+
element: "temperature",
|
|
44
|
+
recordIntervalSeconds: 60,
|
|
45
|
+
}),
|
|
46
|
+
],
|
|
47
|
+
version: 1, // Increase this value, if your station definition changed and you don't won't to lose your data
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// Starts the grpc service, the owvision recorder will automatically detect the station after some time.
|
|
52
|
+
await startInterface({
|
|
53
|
+
getSensorState,
|
|
54
|
+
getStationDefinition,
|
|
55
|
+
});
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Read this [guide](./guides/01_starter.md) to get started.
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
|
|
2
|
+
import { type CallOptions, type ChannelCredentials, Client, type ClientOptions, type ClientUnaryCall, type handleUnaryCall, type Metadata, type ServiceError, type UntypedServiceImplementation } from "@grpc/grpc-js";
|
|
3
|
+
export declare const protobufPackage = "recorder";
|
|
4
|
+
export interface PingMessage {
|
|
5
|
+
randomId: number;
|
|
6
|
+
}
|
|
7
|
+
export interface GetStationRequest {
|
|
8
|
+
stationId: number;
|
|
9
|
+
}
|
|
10
|
+
export interface UpdateSensorsRequest {
|
|
11
|
+
updates: UpdateSensorRequest[];
|
|
12
|
+
}
|
|
13
|
+
export interface UpdateSensorRequest {
|
|
14
|
+
sensorId: number;
|
|
15
|
+
newState: SensorState | undefined;
|
|
16
|
+
}
|
|
17
|
+
export interface UpdateSensorsResponse {
|
|
18
|
+
errors: string[];
|
|
19
|
+
processed: number[];
|
|
20
|
+
}
|
|
21
|
+
export interface UpdateStationRequest {
|
|
22
|
+
stationId: number;
|
|
23
|
+
definition: StationDefinition | undefined;
|
|
24
|
+
}
|
|
25
|
+
export interface GetStationDefinitionRequest {
|
|
26
|
+
}
|
|
27
|
+
export interface StationDefinition {
|
|
28
|
+
name: string;
|
|
29
|
+
sensors: SensorDefinition[];
|
|
30
|
+
longitude: number;
|
|
31
|
+
latitude: number;
|
|
32
|
+
version: number;
|
|
33
|
+
}
|
|
34
|
+
export interface SensorDefinition {
|
|
35
|
+
name: string;
|
|
36
|
+
element: string;
|
|
37
|
+
recordIntervalSeconds: number;
|
|
38
|
+
}
|
|
39
|
+
export interface Station {
|
|
40
|
+
id: number;
|
|
41
|
+
sensors: Sensor[];
|
|
42
|
+
version: number;
|
|
43
|
+
}
|
|
44
|
+
export interface Sensor {
|
|
45
|
+
id: number;
|
|
46
|
+
name: string;
|
|
47
|
+
recordIntervalSeconds: number;
|
|
48
|
+
}
|
|
49
|
+
export interface GetSensorStateRequest {
|
|
50
|
+
name: string;
|
|
51
|
+
}
|
|
52
|
+
export interface SensorState {
|
|
53
|
+
unitId: string;
|
|
54
|
+
value?: number | undefined;
|
|
55
|
+
createdAt: number;
|
|
56
|
+
intervalStart?: number | undefined;
|
|
57
|
+
}
|
|
58
|
+
export declare const PingMessage: MessageFns<PingMessage>;
|
|
59
|
+
export declare const GetStationRequest: MessageFns<GetStationRequest>;
|
|
60
|
+
export declare const UpdateSensorsRequest: MessageFns<UpdateSensorsRequest>;
|
|
61
|
+
export declare const UpdateSensorRequest: MessageFns<UpdateSensorRequest>;
|
|
62
|
+
export declare const UpdateSensorsResponse: MessageFns<UpdateSensorsResponse>;
|
|
63
|
+
export declare const UpdateStationRequest: MessageFns<UpdateStationRequest>;
|
|
64
|
+
export declare const GetStationDefinitionRequest: MessageFns<GetStationDefinitionRequest>;
|
|
65
|
+
export declare const StationDefinition: MessageFns<StationDefinition>;
|
|
66
|
+
export declare const SensorDefinition: MessageFns<SensorDefinition>;
|
|
67
|
+
export declare const Station: MessageFns<Station>;
|
|
68
|
+
export declare const Sensor: MessageFns<Sensor>;
|
|
69
|
+
export declare const GetSensorStateRequest: MessageFns<GetSensorStateRequest>;
|
|
70
|
+
export declare const SensorState: MessageFns<SensorState>;
|
|
71
|
+
export type DaemonServiceService = typeof DaemonServiceService;
|
|
72
|
+
export declare const DaemonServiceService: {
|
|
73
|
+
readonly createStation: {
|
|
74
|
+
readonly path: "/recorder.DaemonService/CreateStation";
|
|
75
|
+
readonly requestStream: false;
|
|
76
|
+
readonly responseStream: false;
|
|
77
|
+
readonly requestSerialize: (value: StationDefinition) => Buffer;
|
|
78
|
+
readonly requestDeserialize: (value: Buffer) => StationDefinition;
|
|
79
|
+
readonly responseSerialize: (value: Station) => Buffer;
|
|
80
|
+
readonly responseDeserialize: (value: Buffer) => Station;
|
|
81
|
+
};
|
|
82
|
+
readonly getStation: {
|
|
83
|
+
readonly path: "/recorder.DaemonService/GetStation";
|
|
84
|
+
readonly requestStream: false;
|
|
85
|
+
readonly responseStream: false;
|
|
86
|
+
readonly requestSerialize: (value: GetStationRequest) => Buffer;
|
|
87
|
+
readonly requestDeserialize: (value: Buffer) => GetStationRequest;
|
|
88
|
+
readonly responseSerialize: (value: Station) => Buffer;
|
|
89
|
+
readonly responseDeserialize: (value: Buffer) => Station;
|
|
90
|
+
};
|
|
91
|
+
readonly updateStation: {
|
|
92
|
+
readonly path: "/recorder.DaemonService/UpdateStation";
|
|
93
|
+
readonly requestStream: false;
|
|
94
|
+
readonly responseStream: false;
|
|
95
|
+
readonly requestSerialize: (value: UpdateStationRequest) => Buffer;
|
|
96
|
+
readonly requestDeserialize: (value: Buffer) => UpdateStationRequest;
|
|
97
|
+
readonly responseSerialize: (value: Station) => Buffer;
|
|
98
|
+
readonly responseDeserialize: (value: Buffer) => Station;
|
|
99
|
+
};
|
|
100
|
+
readonly updateSensors: {
|
|
101
|
+
readonly path: "/recorder.DaemonService/UpdateSensors";
|
|
102
|
+
readonly requestStream: false;
|
|
103
|
+
readonly responseStream: false;
|
|
104
|
+
readonly requestSerialize: (value: UpdateSensorsRequest) => Buffer;
|
|
105
|
+
readonly requestDeserialize: (value: Buffer) => UpdateSensorsRequest;
|
|
106
|
+
readonly responseSerialize: (value: UpdateSensorsResponse) => Buffer;
|
|
107
|
+
readonly responseDeserialize: (value: Buffer) => UpdateSensorsResponse;
|
|
108
|
+
};
|
|
109
|
+
readonly ping: {
|
|
110
|
+
readonly path: "/recorder.DaemonService/Ping";
|
|
111
|
+
readonly requestStream: false;
|
|
112
|
+
readonly responseStream: false;
|
|
113
|
+
readonly requestSerialize: (value: PingMessage) => Buffer;
|
|
114
|
+
readonly requestDeserialize: (value: Buffer) => PingMessage;
|
|
115
|
+
readonly responseSerialize: (value: PingMessage) => Buffer;
|
|
116
|
+
readonly responseDeserialize: (value: Buffer) => PingMessage;
|
|
117
|
+
};
|
|
118
|
+
};
|
|
119
|
+
export interface DaemonServiceServer extends UntypedServiceImplementation {
|
|
120
|
+
createStation: handleUnaryCall<StationDefinition, Station>;
|
|
121
|
+
getStation: handleUnaryCall<GetStationRequest, Station>;
|
|
122
|
+
updateStation: handleUnaryCall<UpdateStationRequest, Station>;
|
|
123
|
+
updateSensors: handleUnaryCall<UpdateSensorsRequest, UpdateSensorsResponse>;
|
|
124
|
+
ping: handleUnaryCall<PingMessage, PingMessage>;
|
|
125
|
+
}
|
|
126
|
+
export interface DaemonServiceClient extends Client {
|
|
127
|
+
createStation(request: StationDefinition, callback: (error: ServiceError | null, response: Station) => void): ClientUnaryCall;
|
|
128
|
+
createStation(request: StationDefinition, metadata: Metadata, callback: (error: ServiceError | null, response: Station) => void): ClientUnaryCall;
|
|
129
|
+
createStation(request: StationDefinition, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Station) => void): ClientUnaryCall;
|
|
130
|
+
getStation(request: GetStationRequest, callback: (error: ServiceError | null, response: Station) => void): ClientUnaryCall;
|
|
131
|
+
getStation(request: GetStationRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Station) => void): ClientUnaryCall;
|
|
132
|
+
getStation(request: GetStationRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Station) => void): ClientUnaryCall;
|
|
133
|
+
updateStation(request: UpdateStationRequest, callback: (error: ServiceError | null, response: Station) => void): ClientUnaryCall;
|
|
134
|
+
updateStation(request: UpdateStationRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Station) => void): ClientUnaryCall;
|
|
135
|
+
updateStation(request: UpdateStationRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Station) => void): ClientUnaryCall;
|
|
136
|
+
updateSensors(request: UpdateSensorsRequest, callback: (error: ServiceError | null, response: UpdateSensorsResponse) => void): ClientUnaryCall;
|
|
137
|
+
updateSensors(request: UpdateSensorsRequest, metadata: Metadata, callback: (error: ServiceError | null, response: UpdateSensorsResponse) => void): ClientUnaryCall;
|
|
138
|
+
updateSensors(request: UpdateSensorsRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: UpdateSensorsResponse) => void): ClientUnaryCall;
|
|
139
|
+
ping(request: PingMessage, callback: (error: ServiceError | null, response: PingMessage) => void): ClientUnaryCall;
|
|
140
|
+
ping(request: PingMessage, metadata: Metadata, callback: (error: ServiceError | null, response: PingMessage) => void): ClientUnaryCall;
|
|
141
|
+
ping(request: PingMessage, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: PingMessage) => void): ClientUnaryCall;
|
|
142
|
+
}
|
|
143
|
+
export declare const DaemonServiceClient: {
|
|
144
|
+
new (address: string, credentials: ChannelCredentials, options?: Partial<ClientOptions>): DaemonServiceClient;
|
|
145
|
+
service: typeof DaemonServiceService;
|
|
146
|
+
serviceName: string;
|
|
147
|
+
};
|
|
148
|
+
export type StationInterfaceService = typeof StationInterfaceService;
|
|
149
|
+
export declare const StationInterfaceService: {
|
|
150
|
+
readonly getStationDefinition: {
|
|
151
|
+
readonly path: "/recorder.StationInterface/GetStationDefinition";
|
|
152
|
+
readonly requestStream: false;
|
|
153
|
+
readonly responseStream: false;
|
|
154
|
+
readonly requestSerialize: (value: GetStationDefinitionRequest) => Buffer;
|
|
155
|
+
readonly requestDeserialize: (value: Buffer) => GetStationDefinitionRequest;
|
|
156
|
+
readonly responseSerialize: (value: StationDefinition) => Buffer;
|
|
157
|
+
readonly responseDeserialize: (value: Buffer) => StationDefinition;
|
|
158
|
+
};
|
|
159
|
+
readonly getSensorState: {
|
|
160
|
+
readonly path: "/recorder.StationInterface/GetSensorState";
|
|
161
|
+
readonly requestStream: false;
|
|
162
|
+
readonly responseStream: false;
|
|
163
|
+
readonly requestSerialize: (value: GetSensorStateRequest) => Buffer;
|
|
164
|
+
readonly requestDeserialize: (value: Buffer) => GetSensorStateRequest;
|
|
165
|
+
readonly responseSerialize: (value: SensorState) => Buffer;
|
|
166
|
+
readonly responseDeserialize: (value: Buffer) => SensorState;
|
|
167
|
+
};
|
|
168
|
+
};
|
|
169
|
+
export interface StationInterfaceServer extends UntypedServiceImplementation {
|
|
170
|
+
getStationDefinition: handleUnaryCall<GetStationDefinitionRequest, StationDefinition>;
|
|
171
|
+
getSensorState: handleUnaryCall<GetSensorStateRequest, SensorState>;
|
|
172
|
+
}
|
|
173
|
+
export interface StationInterfaceClient extends Client {
|
|
174
|
+
getStationDefinition(request: GetStationDefinitionRequest, callback: (error: ServiceError | null, response: StationDefinition) => void): ClientUnaryCall;
|
|
175
|
+
getStationDefinition(request: GetStationDefinitionRequest, metadata: Metadata, callback: (error: ServiceError | null, response: StationDefinition) => void): ClientUnaryCall;
|
|
176
|
+
getStationDefinition(request: GetStationDefinitionRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: StationDefinition) => void): ClientUnaryCall;
|
|
177
|
+
getSensorState(request: GetSensorStateRequest, callback: (error: ServiceError | null, response: SensorState) => void): ClientUnaryCall;
|
|
178
|
+
getSensorState(request: GetSensorStateRequest, metadata: Metadata, callback: (error: ServiceError | null, response: SensorState) => void): ClientUnaryCall;
|
|
179
|
+
getSensorState(request: GetSensorStateRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: SensorState) => void): ClientUnaryCall;
|
|
180
|
+
}
|
|
181
|
+
export declare const StationInterfaceClient: {
|
|
182
|
+
new (address: string, credentials: ChannelCredentials, options?: Partial<ClientOptions>): StationInterfaceClient;
|
|
183
|
+
service: typeof StationInterfaceService;
|
|
184
|
+
serviceName: string;
|
|
185
|
+
};
|
|
186
|
+
type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
|
|
187
|
+
export type DeepPartial<T> = T extends Builtin ? T : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : T extends {} ? {
|
|
188
|
+
[K in keyof T]?: DeepPartial<T[K]>;
|
|
189
|
+
} : Partial<T>;
|
|
190
|
+
type KeysOfUnion<T> = T extends T ? keyof T : never;
|
|
191
|
+
export type Exact<P, I extends P> = P extends Builtin ? P : P & {
|
|
192
|
+
[K in keyof P]: Exact<P[K], I[K]>;
|
|
193
|
+
} & {
|
|
194
|
+
[K in Exclude<keyof I, KeysOfUnion<P>>]: never;
|
|
195
|
+
};
|
|
196
|
+
export interface MessageFns<T> {
|
|
197
|
+
encode(message: T, writer?: BinaryWriter): BinaryWriter;
|
|
198
|
+
decode(input: BinaryReader | Uint8Array, length?: number): T;
|
|
199
|
+
fromJSON(object: any): T;
|
|
200
|
+
toJSON(message: T): unknown;
|
|
201
|
+
create<I extends Exact<DeepPartial<T>, I>>(base?: I): T;
|
|
202
|
+
fromPartial<I extends Exact<DeepPartial<T>, I>>(object: I): T;
|
|
203
|
+
}
|
|
204
|
+
export {};
|
|
205
|
+
//# sourceMappingURL=recorder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recorder.d.ts","sourceRoot":"","sources":["../../src/generated/recorder.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,MAAM,EACN,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,eAAe,EAEpB,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,4BAA4B,EAClC,MAAM,eAAe,CAAC;AAEvB,eAAO,MAAM,eAAe,aAAa,CAAC;AAE1C,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,mBAAmB,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,WAAW,GAAG,SAAS,CAAC;CACnC;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,iBAAiB,GAAG,SAAS,CAAC;CAC3C;AAED,MAAM,WAAW,2BAA2B;CAC3C;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC;AAMD,eAAO,MAAM,WAAW,EAAE,UAAU,CAAC,WAAW,CAoD/C,CAAC;AAMF,eAAO,MAAM,iBAAiB,EAAE,UAAU,CAAC,iBAAiB,CAoD3D,CAAC;AAMF,eAAO,MAAM,oBAAoB,EAAE,UAAU,CAAC,oBAAoB,CAwDjE,CAAC;AAMF,eAAO,MAAM,mBAAmB,EAAE,UAAU,CAAC,mBAAmB,CAwE/D,CAAC;AAMF,eAAO,MAAM,qBAAqB,EAAE,UAAU,CAAC,qBAAqB,CAoFnE,CAAC;AAMF,eAAO,MAAM,oBAAoB,EAAE,UAAU,CAAC,oBAAoB,CAwEjE,CAAC;AAMF,eAAO,MAAM,2BAA2B,EAAE,UAAU,CAAC,2BAA2B,CAqC/E,CAAC;AAMF,eAAO,MAAM,iBAAiB,EAAE,UAAU,CAAC,iBAAiB,CAwH3D,CAAC;AAMF,eAAO,MAAM,gBAAgB,EAAE,UAAU,CAAC,gBAAgB,CAsFzD,CAAC;AAMF,eAAO,MAAM,OAAO,EAAE,UAAU,CAAC,OAAO,CAsFvC,CAAC;AAMF,eAAO,MAAM,MAAM,EAAE,UAAU,CAAC,MAAM,CAsFrC,CAAC;AAMF,eAAO,MAAM,qBAAqB,EAAE,UAAU,CAAC,qBAAqB,CAoDnE,CAAC;AAMF,eAAO,MAAM,WAAW,EAAE,UAAU,CAAC,WAAW,CAsG/C,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,OAAO,oBAAoB,CAAC;AAC/D,eAAO,MAAM,oBAAoB;;;;;2CAKH,iBAAiB,KAAG,MAAM;6CACxB,MAAM,KAAG,iBAAiB;4CAC3B,OAAO,KAAG,MAAM;8CACd,MAAM,KAAG,OAAO;;;;;;2CAMnB,iBAAiB,KAAG,MAAM;6CACxB,MAAM,KAAG,iBAAiB;4CAC3B,OAAO,KAAG,MAAM;8CACd,MAAM,KAAG,OAAO;;;;;;2CAMnB,oBAAoB,KAAG,MAAM;6CAC3B,MAAM,KAAG,oBAAoB;4CAC9B,OAAO,KAAG,MAAM;8CACd,MAAM,KAAG,OAAO;;;;;;2CAMnB,oBAAoB,KAAG,MAAM;6CAC3B,MAAM,KAAG,oBAAoB;4CAC9B,qBAAqB,KAAG,MAAM;8CAE5B,MAAM,KAAG,qBAAqB;;;;;;2CAMjC,WAAW,KAAG,MAAM;6CAClB,MAAM,KAAG,WAAW;4CACrB,WAAW,KAAG,MAAM;8CAClB,MAAM,KAAG,WAAW;;CAE3C,CAAC;AAEX,MAAM,WAAW,mBAAoB,SAAQ,4BAA4B;IACvE,aAAa,EAAE,eAAe,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;IAC3D,UAAU,EAAE,eAAe,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;IACxD,aAAa,EAAE,eAAe,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;IAC9D,aAAa,EAAE,eAAe,CAAC,oBAAoB,EAAE,qBAAqB,CAAC,CAAC;IAC5E,IAAI,EAAE,eAAe,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,mBAAoB,SAAQ,MAAM;IACjD,aAAa,CACX,OAAO,EAAE,iBAAiB,EAC1B,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,GAChE,eAAe,CAAC;IACnB,aAAa,CACX,OAAO,EAAE,iBAAiB,EAC1B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,GAChE,eAAe,CAAC;IACnB,aAAa,CACX,OAAO,EAAE,iBAAiB,EAC1B,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,EAC7B,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,GAChE,eAAe,CAAC;IACnB,UAAU,CACR,OAAO,EAAE,iBAAiB,EAC1B,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,GAChE,eAAe,CAAC;IACnB,UAAU,CACR,OAAO,EAAE,iBAAiB,EAC1B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,GAChE,eAAe,CAAC;IACnB,UAAU,CACR,OAAO,EAAE,iBAAiB,EAC1B,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,EAC7B,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,GAChE,eAAe,CAAC;IACnB,aAAa,CACX,OAAO,EAAE,oBAAoB,EAC7B,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,GAChE,eAAe,CAAC;IACnB,aAAa,CACX,OAAO,EAAE,oBAAoB,EAC7B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,GAChE,eAAe,CAAC;IACnB,aAAa,CACX,OAAO,EAAE,oBAAoB,EAC7B,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,EAC7B,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,GAChE,eAAe,CAAC;IACnB,aAAa,CACX,OAAO,EAAE,oBAAoB,EAC7B,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,EAAE,QAAQ,EAAE,qBAAqB,KAAK,IAAI,GAC9E,eAAe,CAAC;IACnB,aAAa,CACX,OAAO,EAAE,oBAAoB,EAC7B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,EAAE,QAAQ,EAAE,qBAAqB,KAAK,IAAI,GAC9E,eAAe,CAAC;IACnB,aAAa,CACX,OAAO,EAAE,oBAAoB,EAC7B,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,EAC7B,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,EAAE,QAAQ,EAAE,qBAAqB,KAAK,IAAI,GAC9E,eAAe,CAAC;IACnB,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,EAAE,QAAQ,EAAE,WAAW,KAAK,IAAI,GAAG,eAAe,CAAC;IACnH,IAAI,CACF,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,EAAE,QAAQ,EAAE,WAAW,KAAK,IAAI,GACpE,eAAe,CAAC;IACnB,IAAI,CACF,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,EAC7B,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,EAAE,QAAQ,EAAE,WAAW,KAAK,IAAI,GACpE,eAAe,CAAC;CACpB;AAED,eAAO,MAAM,mBAAmB,EAGhB;IACd,KAAK,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,kBAAkB,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,mBAAmB,CAAC;IAC9G,OAAO,EAAE,OAAO,oBAAoB,CAAC;IACrC,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,OAAO,uBAAuB,CAAC;AACrE,eAAO,MAAM,uBAAuB;;;;;2CAKN,2BAA2B,KAAG,MAAM;6CAElC,MAAM,KAAG,2BAA2B;4CACrC,iBAAiB,KAAG,MAAM;8CACxB,MAAM,KAAG,iBAAiB;;;;;;2CAM7B,qBAAqB,KAAG,MAAM;6CAE5B,MAAM,KAAG,qBAAqB;4CAC/B,WAAW,KAAG,MAAM;8CAClB,MAAM,KAAG,WAAW;;CAE3C,CAAC;AAEX,MAAM,WAAW,sBAAuB,SAAQ,4BAA4B;IAC1E,oBAAoB,EAAE,eAAe,CAAC,2BAA2B,EAAE,iBAAiB,CAAC,CAAC;IACtF,cAAc,EAAE,eAAe,CAAC,qBAAqB,EAAE,WAAW,CAAC,CAAC;CACrE;AAED,MAAM,WAAW,sBAAuB,SAAQ,MAAM;IACpD,oBAAoB,CAClB,OAAO,EAAE,2BAA2B,EACpC,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,EAAE,QAAQ,EAAE,iBAAiB,KAAK,IAAI,GAC1E,eAAe,CAAC;IACnB,oBAAoB,CAClB,OAAO,EAAE,2BAA2B,EACpC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,EAAE,QAAQ,EAAE,iBAAiB,KAAK,IAAI,GAC1E,eAAe,CAAC;IACnB,oBAAoB,CAClB,OAAO,EAAE,2BAA2B,EACpC,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,EAC7B,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,EAAE,QAAQ,EAAE,iBAAiB,KAAK,IAAI,GAC1E,eAAe,CAAC;IACnB,cAAc,CACZ,OAAO,EAAE,qBAAqB,EAC9B,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,EAAE,QAAQ,EAAE,WAAW,KAAK,IAAI,GACpE,eAAe,CAAC;IACnB,cAAc,CACZ,OAAO,EAAE,qBAAqB,EAC9B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,EAAE,QAAQ,EAAE,WAAW,KAAK,IAAI,GACpE,eAAe,CAAC;IACnB,cAAc,CACZ,OAAO,EAAE,qBAAqB,EAC9B,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,EAC7B,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,EAAE,QAAQ,EAAE,WAAW,KAAK,IAAI,GACpE,eAAe,CAAC;CACpB;AAED,eAAO,MAAM,sBAAsB,EAGnB;IACd,KAAK,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,kBAAkB,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,sBAAsB,CAAC;IACjH,OAAO,EAAE,OAAO,uBAAuB,CAAC;IACxC,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,KAAK,OAAO,GAAG,IAAI,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;AAEpF,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,OAAO,GAAG,CAAC,GAC9C,CAAC,SAAS,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GACtE,CAAC,SAAS,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAChE,CAAC,SAAS,EAAE,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GACrD,OAAO,CAAC,CAAC,CAAC,CAAC;AAEf,KAAK,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,GAAG,KAAK,CAAC;AACpD,MAAM,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,OAAO,GAAG,CAAC,GACrD,CAAC,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GAAG;KAAG,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK;CAAE,CAAC;AAiBnG,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,YAAY,CAAC;IACxD,MAAM,CAAC,KAAK,EAAE,YAAY,GAAG,UAAU,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC;IAC7D,QAAQ,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC;IACzB,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC;IAC5B,MAAM,CAAC,CAAC,SAAS,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACxD,WAAW,CAAC,CAAC,SAAS,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;CAC/D"}
|