@marcel2215/homebridge-supla-plugin 2.1.28 → 2.1.29

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 CHANGED
@@ -30,3 +30,45 @@ $ npm i homebridge-supla-plugin
30
30
  2. Configure the plugin. You can find your MQTT credentials in the [Supla Cloud](https://cloud.supla.org/).
31
31
  3. Restart Homebridge
32
32
  4. Plugin will automatically discover your devices and add them to HomeKit
33
+
34
+ ### Front-gate safety model
35
+
36
+ Supla front gates controlled through the non-idempotent `open_close` action need a closed end-stop sensor. If the sensor is on a
37
+ separate channel, the plugin pairs it only when there is one unambiguous candidate. Configure one of these overrides if automatic
38
+ pairing is not possible:
39
+
40
+ ```json
41
+ {
42
+ "frontGateSensorTopic": "supla/USER/devices/123/channels/456"
43
+ }
44
+ ```
45
+
46
+ Alternatively, use `frontGateSensorDeviceId` and `frontGateSensorChannelId`. A missing or ambiguous sensor keeps the gate unavailable.
47
+ The legacy control-channel sensor fallback is disabled unless `frontGateSensorFallbackToControlChannel` is explicitly enabled.
48
+
49
+ With only a closed sensor, `false` means “not fully closed”; it does not prove that the gate is fully open or reveal its direction.
50
+ The plugin therefore reports an unproven non-closed position as HomeKit `STOPPED` and rejects ambiguous open and close requests by
51
+ default:
52
+
53
+ ```json
54
+ {
55
+ "frontGateUnknownOpenPolicy": "reject",
56
+ "frontGateUnknownClosePolicy": "reject",
57
+ "frontGateAssumeOpenAfterTravel": false
58
+ }
59
+ ```
60
+
61
+ Optional compatibility policies are:
62
+
63
+ - `accept_non_closed` for open requests: accepts any non-closed position without sending a pulse.
64
+ - `single_pulse_best_effort` for close requests: sends one pulse but continues reporting `STOPPED` until hard evidence arrives.
65
+ - `seek_closed` for close requests: sends up to `frontGateSeekClosedMaxPulses` pulses, one full travel interval apart, until the closed
66
+ sensor activates. The search can initially move the gate in the opposite direction and must only be enabled with that behavior
67
+ understood.
68
+
69
+ `frontGateAssumeOpenAfterTravel` is also an approximation and is disabled by default. An IR remote cannot be observed by the plugin,
70
+ so external IR use can always invalidate a direction estimate until new sensor evidence arrives.
71
+
72
+ Front-gate action publications always use MQTT QoS 0 and `retain: false`, independently of the global command settings. Retained
73
+ `execute_action` messages are ignored by the state estimator; any old retained action already stored on the broker should be removed.
74
+ MQTT 5 enables a No Local subscription for safer self-echo handling by setting `mqttProtocolVersion` to `5`, if the broker supports it.
@@ -58,95 +58,82 @@
58
58
  "auto"
59
59
  ]
60
60
  },
61
- "gateControlMode": {
62
- "title": "Gate Control Mode",
63
- "type": "string",
64
- "default": "execute_action",
65
- "enum": [
66
- "execute_action",
67
- "toggle"
68
- ]
69
- },
70
- "gateExecuteActionOpen": {
71
- "title": "Gate Execute Action Open",
72
- "type": "string",
73
- "default": "open_close"
74
- },
75
- "gateExecuteActionClose": {
76
- "title": "Gate Execute Action Close",
77
- "type": "string",
78
- "default": "open_close"
79
- },
80
61
  "gateExecuteActionToggle": {
81
- "title": "Gate Execute Action Toggle",
62
+ "title": "Front Gate Toggle Action",
82
63
  "type": "string",
83
64
  "default": "open_close"
84
65
  },
85
- "gatePartialHiMode": {
86
- "title": "Gate Partial Hi Mode",
87
- "type": "string",
88
- "default": "moving",
89
- "enum": [
90
- "moving",
91
- "open_endstop",
92
- "pedestrian_endstop",
93
- "ignore"
94
- ]
95
- },
96
- "gateReverseFollowUpDelayMs": {
97
- "title": "Gate Reverse Follow-up Delay (ms)",
66
+ "frontGateFullTravelMs": {
67
+ "title": "Front Gate Full Travel (ms)",
98
68
  "type": "number",
99
- "default": 3000
69
+ "default": 25000,
70
+ "minimum": 5000,
71
+ "maximum": 120000
100
72
  },
101
- "gateOpenAssumeDelayMs": {
102
- "title": "Gate Open Assume Delay (ms)",
73
+ "frontGateReversePauseMs": {
74
+ "title": "Front Gate Reverse Pause (ms)",
103
75
  "type": "number",
104
- "default": 22000
76
+ "default": 3000,
77
+ "minimum": 3000,
78
+ "maximum": 15000
105
79
  },
106
- "gateCommandCooldownMs": {
107
- "title": "Gate Command Cooldown (ms)",
80
+ "frontGateMinimumPulseGapMs": {
81
+ "title": "Front Gate Minimum Pulse Gap (ms)",
108
82
  "type": "number",
109
- "default": 700
83
+ "default": 3000,
84
+ "minimum": 0,
85
+ "maximum": 15000
110
86
  },
111
- "gatePublishRetryDelayMs": {
112
- "title": "Gate Publish Retry Delay (ms)",
113
- "type": "number",
114
- "default": 300
87
+ "frontGateUnknownOpenPolicy": {
88
+ "title": "Unknown-State Open Policy",
89
+ "type": "string",
90
+ "default": "reject",
91
+ "enum": [
92
+ "reject",
93
+ "accept_non_closed"
94
+ ]
115
95
  },
116
- "gateStrictReverseDoublePulse": {
117
- "title": "Gate Strict Reverse Double Pulse",
118
- "type": "boolean",
119
- "default": true
96
+ "frontGateUnknownClosePolicy": {
97
+ "title": "Unknown-State Close Policy",
98
+ "type": "string",
99
+ "default": "reject",
100
+ "enum": [
101
+ "reject",
102
+ "single_pulse_best_effort",
103
+ "seek_closed"
104
+ ]
105
+ },
106
+ "frontGateSeekClosedMaxPulses": {
107
+ "title": "Seek-Closed Maximum Pulses",
108
+ "type": "number",
109
+ "default": 3,
110
+ "minimum": 1,
111
+ "maximum": 3
120
112
  },
121
- "gateDebugTimeline": {
122
- "title": "Gate Debug Timeline",
113
+ "frontGateAssumeOpenAfterTravel": {
114
+ "title": "Assume Fully Open After Travel Time",
123
115
  "type": "boolean",
124
116
  "default": false
125
117
  },
126
- "frontGateFullTravelMs": {
127
- "title": "Front Gate Full Travel (ms)",
128
- "type": "number",
129
- "default": 25000
130
- },
131
- "frontGateReversePauseMs": {
132
- "title": "Front Gate Reverse Pause (ms)",
133
- "type": "number",
134
- "default": 900
118
+ "frontGateSensorTopic": {
119
+ "title": "Front Gate Sensor Base Topic",
120
+ "type": "string",
121
+ "default": ""
135
122
  },
136
- "frontGateWrongDirectionRunMs": {
137
- "title": "Front Gate Wrong Direction Run (ms)",
138
- "type": "number",
139
- "default": 700
123
+ "frontGateSensorDeviceId": {
124
+ "title": "Front Gate Sensor Device ID",
125
+ "type": "string",
126
+ "default": ""
140
127
  },
141
- "frontGateMinimumPulseGapMs": {
142
- "title": "Front Gate Minimum Pulse Gap (ms)",
143
- "type": "number",
144
- "default": 400
128
+ "frontGateSensorChannelId": {
129
+ "title": "Front Gate Sensor Channel ID",
130
+ "type": "string",
131
+ "default": ""
145
132
  },
146
- "frontGateCloseRetryLimit": {
147
- "title": "Front Gate Close Retry Limit",
148
- "type": "number",
149
- "default": 1
133
+ "frontGateSensorFallbackToControlChannel": {
134
+ "title": "Use Control Channel as Sensor Fallback",
135
+ "type": "boolean",
136
+ "default": false
150
137
  },
151
138
  "gateLockControlMode": {
152
139
  "title": "Gate Lock Control Mode",
@@ -222,6 +209,15 @@
222
209
  "type": "number",
223
210
  "default": 0
224
211
  },
212
+ "mqttProtocolVersion": {
213
+ "title": "MQTT Protocol Version",
214
+ "type": "number",
215
+ "default": 4,
216
+ "enum": [
217
+ 4,
218
+ 5
219
+ ]
220
+ },
225
221
  "commandQos": {
226
222
  "title": "Command QoS",
227
223
  "type": "number",
@@ -1,9 +1,7 @@
1
1
  export type GateTarget = 'open' | 'closed';
2
2
  export type MotionDirection = 'opening' | 'closing';
3
- export type MotionCertainty = 'known' | 'goalOnly';
4
- export type MotionSource = 'homekit' | 'external' | 'recovery';
5
- export type IdleNotClosedMode = 'openKnown' | 'openishUnknown';
6
- export type NextPulseDirection = MotionDirection | 'unknown';
3
+ export type UnknownOpenPolicy = 'reject' | 'accept_non_closed';
4
+ export type UnknownClosePolicy = 'reject' | 'single_pulse_best_effort' | 'seek_closed';
7
5
  export declare const enum DoorCurrentState {
8
6
  OPEN = 0,
9
7
  CLOSED = 1,
@@ -15,30 +13,37 @@ export declare const enum DoorTargetState {
15
13
  OPEN = 0,
16
14
  CLOSED = 1
17
15
  }
18
- export interface FrontGateTimingConfig {
16
+ export interface FrontGateConfig {
19
17
  fullTravelMs: number;
20
18
  reversePauseMs: number;
21
- wrongDirectionRunMs: number;
22
19
  minimumPulseGapMs: number;
23
- closeRetryLimit: number;
20
+ unknownOpenPolicy: UnknownOpenPolicy;
21
+ unknownClosePolicy: UnknownClosePolicy;
22
+ seekClosedMaxPulses: number;
23
+ assumeOpenAfterTravel: boolean;
24
24
  }
25
- export declare const DEFAULT_FRONT_GATE_TIMINGS: FrontGateTimingConfig;
26
- export interface PersistedFrontGateState {
25
+ export declare const DEFAULT_FRONT_GATE_CONFIG: FrontGateConfig;
26
+ export type FrontGateErrorCode = 'unavailable' | 'not_allowed' | 'resource_busy' | 'communication_failure' | 'operation_timed_out';
27
+ export declare class FrontGateError extends Error {
28
+ readonly code: FrontGateErrorCode;
29
+ constructor(code: FrontGateErrorCode, message: string, options?: ErrorOptions);
27
30
  }
31
+ export type PositionEstimateKind = 'closed' | 'openingKnown' | 'closingKnown' | 'reversalPause' | 'notClosedUnknown' | 'openAssumed';
32
+ export type FrontGateOperationKind = 'none' | 'scheduledPulse' | 'reversalPause' | 'seekClosed';
28
33
  export interface FrontGateSnapshot {
29
34
  available: boolean;
35
+ transportConnected: boolean;
30
36
  controlConnected: boolean | null;
31
37
  sensorConnected: boolean | null;
32
38
  closedSensor: boolean | null;
33
- sensorFreshSinceOnline: boolean;
39
+ observationEpoch: number;
40
+ sensorSampleEpoch: number | null;
34
41
  currentDoorState?: DoorCurrentState;
35
42
  targetDoorState?: DoorTargetState;
36
- requestedTarget: GateTarget | null;
43
+ desiredTarget: GateTarget | null;
44
+ positionEstimate: PositionEstimateKind;
37
45
  motionDirection: MotionDirection | 'none';
38
- motionCertainty: MotionCertainty | 'none';
39
- planKind: Plan['kind'];
40
- idleNotClosedMode: IdleNotClosedMode;
41
- nextPulseDirection: NextPulseDirection;
46
+ operationKind: FrontGateOperationKind;
42
47
  note: string;
43
48
  }
44
49
  export interface FrontGateLogger {
@@ -51,81 +56,76 @@ export interface FrontGateIo {
51
56
  publishSnapshot(snapshot: FrontGateSnapshot): void;
52
57
  log: FrontGateLogger;
53
58
  }
54
- type Plan = {
55
- kind: 'idle';
56
- } | {
57
- kind: 'moving';
58
- direction: MotionDirection;
59
- certainty: MotionCertainty;
60
- source: MotionSource;
61
- startedAt: number;
62
- deadlineAt: number;
63
- } | {
64
- kind: 'waitingSecondPulse';
65
- stoppedFrom: MotionDirection;
66
- finalDirection: MotionDirection;
67
- source: MotionSource;
68
- dueAt: number;
69
- deadlineAt: number;
70
- reason: 'reverseToOpen' | 'reverseToClose';
71
- };
59
+ export interface FrontGateScheduler {
60
+ now(): number;
61
+ schedule(callback: () => void, delayMs: number): () => void;
62
+ }
72
63
  export declare class FrontGateFsm {
73
64
  private readonly io;
74
- private readonly travelMs;
75
- private readonly pulseGapMs;
65
+ private readonly config;
66
+ private readonly scheduler;
76
67
  private facts;
77
- private sensorFreshSinceOnline;
78
- private requestedTarget;
79
- private idleNotClosedMode;
80
- private idleNextPulseDirection;
81
- private plan;
82
- private lastPulseLikeActivityAt;
83
- private movementTimer?;
84
- private movementTimerToken;
85
- private phaseTimer?;
86
- private phaseTimerToken;
68
+ private observationEpoch;
69
+ private sensorSampleEpoch;
70
+ private previousSensorInEpoch;
71
+ private desiredTarget;
72
+ private position;
73
+ private positionGeneration;
74
+ private operation;
75
+ private nextOperationId;
76
+ private lastPublishedPulseAt;
77
+ private cancelMovementTimer?;
78
+ private cancelOperationTimer?;
87
79
  private sequence;
88
80
  private disposed;
89
- constructor(io: FrontGateIo, timings?: FrontGateTimingConfig, _persisted?: PersistedFrontGateState);
81
+ constructor(io: FrontGateIo, config?: Partial<FrontGateConfig>, scheduler?: FrontGateScheduler);
90
82
  dispose(): void;
91
- handleConnectedChange(connected: boolean): void;
83
+ handleTransportConnectedChange(connected: boolean): void;
92
84
  handleControlConnectedChange(connected: boolean): void;
93
85
  handleSensorConnectedChange(connected: boolean): void;
94
86
  handleClosedSensorChange(closed: boolean): void;
95
87
  handleObservedExternalPulse(reason?: string): void;
96
88
  requestHomeKitTarget(target: GateTarget): Promise<void>;
97
89
  getSnapshot(): FrontGateSnapshot;
90
+ whenIdle(): Promise<void>;
98
91
  private enqueue;
92
+ private applyTransportConnectedChange;
99
93
  private applyControlConnectedChange;
100
94
  private applySensorConnectedChange;
101
95
  private applyClosedSensorChange;
102
96
  private applyHomeKitTarget;
103
- private handleOpenRequest;
104
- private handleCloseRequest;
105
- private startOpeningFromClosed;
106
- private startOpeningFromStoppedState;
107
- private startKnownCloseFromIdle;
108
- private startAmbiguousCloseAttempt;
109
- private reverseKnownMotion;
110
- private startOpeningMotion;
111
- private startClosingMotion;
112
- private scheduleMovementTimer;
113
- private schedulePhaseTimer;
114
- private clearMovementTimer;
115
- private clearPhaseTimer;
116
- private clearTimers;
117
- private handlePhaseTimer;
118
- private handleMovementTimeout;
97
+ private acceptOpenRequest;
98
+ private acceptCloseRequest;
99
+ private acceptUnknownCloseRequest;
100
+ private acceptPulse;
101
+ private executeScheduledPulse;
102
+ private applySuccessfulPulse;
103
+ private startReversalPause;
104
+ private startSeekClosedWait;
105
+ private scheduleOperationTimer;
106
+ private handleOperationTimer;
107
+ private executeReversalPulse;
108
+ private advanceSeekClosed;
109
+ private validateScheduledPulse;
110
+ private validateOperationContext;
111
+ private hasCurrentOperation;
112
+ private cancelConflictingOperation;
113
+ private cancelInvalidOperation;
119
114
  private applyObservedExternalPulse;
120
- private enterUnavailable;
115
+ private advanceObservationEpoch;
116
+ private setKnownMovement;
117
+ private setPosition;
118
+ private handleMovementTimeout;
119
+ private setOperation;
120
+ private clearOperation;
121
+ private clearMovementTimer;
122
+ private clearOperationTimer;
121
123
  private isAvailableForHomeKit;
122
- private pulseMotor;
123
124
  private emitSnapshot;
124
125
  private buildSnapshot;
125
126
  private getMotionDirection;
126
- private getMotionCertainty;
127
127
  private computeCurrentDoorState;
128
128
  private computeTargetDoorState;
129
+ private errorMessage;
129
130
  }
130
- export {};
131
131
  //# sourceMappingURL=FrontGateFsm.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FrontGateFsm.d.ts","sourceRoot":"","sources":["../../src/Accesories/FrontGateFsm.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FrontGateFsm.d.ts","sourceRoot":"","sources":["../../src/Accesories/FrontGateFsm.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,QAAQ,CAAC;AAC3C,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,SAAS,CAAC;AACpD,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,mBAAmB,CAAC;AAC/D,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,0BAA0B,GAAG,aAAa,CAAC;AAEvF,0BAAkB,gBAAgB;IAChC,IAAI,IAAI;IACR,MAAM,IAAI;IACV,OAAO,IAAI;IACX,OAAO,IAAI;IACX,OAAO,IAAI;CACZ;AAED,0BAAkB,eAAe;IAC/B,IAAI,IAAI;IACR,MAAM,IAAI;CACX;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,qBAAqB,EAAE,OAAO,CAAC;CAChC;AAED,eAAO,MAAM,yBAAyB,EAAE,eAQvC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAC1B,aAAa,GACb,aAAa,GACb,eAAe,GACf,uBAAuB,GACvB,qBAAqB,CAAC;AAE1B,qBAAa,cAAe,SAAQ,KAAK;aAErB,IAAI,EAAE,kBAAkB;gBAAxB,IAAI,EAAE,kBAAkB,EACxC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,YAAY;CAKzB;AAED,MAAM,MAAM,oBAAoB,GAC5B,QAAQ,GACR,cAAc,GACd,cAAc,GACd,eAAe,GACf,kBAAkB,GAClB,aAAa,CAAC;AAElB,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,gBAAgB,GAAG,eAAe,GAAG,YAAY,CAAC;AAEhG,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,OAAO,CAAC;IACnB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,gBAAgB,EAAE,OAAO,GAAG,IAAI,CAAC;IACjC,eAAe,EAAE,OAAO,GAAG,IAAI,CAAC;IAChC,YAAY,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,aAAa,EAAE,UAAU,GAAG,IAAI,CAAC;IACjC,gBAAgB,EAAE,oBAAoB,CAAC;IACvC,eAAe,EAAE,eAAe,GAAG,MAAM,CAAC;IAC1C,aAAa,EAAE,sBAAsB,CAAC;IACtC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,eAAe,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACnD,GAAG,EAAE,eAAe,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,IAAI,MAAM,CAAC;IACd,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,IAAI,CAAC;CAC7D;AA+ED,qBAAa,YAAY;IA0BrB,OAAO,CAAC,QAAQ,CAAC,EAAE;IAzBrB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;IAE/C,OAAO,CAAC,KAAK,CAKX;IAEF,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,iBAAiB,CAAuB;IAChD,OAAO,CAAC,qBAAqB,CAAwB;IACrD,OAAO,CAAC,aAAa,CAA2B;IAChD,OAAO,CAAC,QAAQ,CAAkD;IAClE,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,oBAAoB,CAAK;IACjC,OAAO,CAAC,mBAAmB,CAAC,CAAa;IACzC,OAAO,CAAC,oBAAoB,CAAC,CAAa;IAC1C,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,QAAQ,CAAS;gBAGN,EAAE,EAAE,WAAW,EAChC,MAAM,GAAE,OAAO,CAAC,eAAe,CAA6B,EAC5D,SAAS,GAAE,kBAAqC;IAmC3C,OAAO,IAAI,IAAI;IAMf,8BAA8B,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI;IAMxD,4BAA4B,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI;IAMtD,2BAA2B,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI;IAMrD,wBAAwB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAM/C,2BAA2B,CAAC,MAAM,SAAwB,GAAG,IAAI;IAMjE,oBAAoB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAMvD,WAAW,IAAI,iBAAiB;IAIhC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAIhC,OAAO,CAAC,OAAO;IAmBf,OAAO,CAAC,6BAA6B;IAiBrC,OAAO,CAAC,2BAA2B;IAenC,OAAO,CAAC,0BAA0B;IAelC,OAAO,CAAC,uBAAuB;YA0CjB,kBAAkB;YA4BlB,iBAAiB;YAqBjB,kBAAkB;YAmBlB,yBAAyB;YAyBzB,WAAW;YAuBX,qBAAqB;IA2CnC,OAAO,CAAC,oBAAoB;IA2B5B,OAAO,CAAC,kBAAkB;IAkB1B,OAAO,CAAC,mBAAmB;IAc3B,OAAO,CAAC,sBAAsB;YAUhB,oBAAoB;YAwBpB,oBAAoB;YA2BpB,iBAAiB;IAgC/B,OAAO,CAAC,sBAAsB;IAkC9B,OAAO,CAAC,wBAAwB;IAUhC,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,0BAA0B;IAQlC,OAAO,CAAC,sBAAsB;IAU9B,OAAO,CAAC,0BAA0B;IAalC,OAAO,CAAC,uBAAuB;IAW/B,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,qBAAqB;IA8B7B,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,aAAa;IAoBrB,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,uBAAuB;IAgB/B,OAAO,CAAC,sBAAsB;IAe9B,OAAO,CAAC,YAAY;CAGrB"}