agora-electron-sdk 4.2.2-dev.4 → 4.2.2-dev.7
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/CHANGELOG.md +22 -0
- package/js/Private/AgoraBase.js +139 -53
- package/js/Private/AgoraMediaBase.js +13 -7
- package/js/Private/IAgoraRtcEngine.js +11 -11
- package/js/Private/IAgoraRtcEngineEx.js +1 -1
- package/js/Private/IAgoraSpatialAudio.js +2 -2
- package/js/Private/impl/IAgoraMediaEngineImpl.js +12 -6
- package/js/Private/impl/IAgoraRtcEngineImpl.js +7 -7
- package/js/Private/internal/IrisApiEngine.js +13 -0
- package/js/Private/internal/MusicContentCenterInternal.js +3 -0
- package/js/Private/internal/RtcEngineExInternal.js +24 -7
- package/js/Private/ti/IAgoraRtcEngine-ti.js +2 -2
- package/js/Renderer/WebGLRenderer/index.js +19 -19
- package/js/Renderer/YUVCanvasRenderer/index.js +1 -1
- package/package.json +3 -3
- package/scripts/zipBuild.js +3 -1
- package/ts/Private/AgoraBase.ts +296 -133
- package/ts/Private/AgoraMediaBase.ts +68 -34
- package/ts/Private/AgoraMediaPlayerTypes.ts +8 -5
- package/ts/Private/IAgoraLog.ts +7 -3
- package/ts/Private/IAgoraMediaEngine.ts +76 -35
- package/ts/Private/IAgoraMediaPlayer.ts +126 -64
- package/ts/Private/IAgoraMediaPlayerSource.ts +3 -1
- package/ts/Private/IAgoraRtcEngine.ts +1325 -530
- package/ts/Private/IAgoraRtcEngineEx.ts +227 -94
- package/ts/Private/IAgoraSpatialAudio.ts +71 -36
- package/ts/Private/IAudioDeviceManager.ts +61 -31
- package/ts/Private/impl/IAgoraMediaEngineImpl.ts +12 -6
- package/ts/Private/impl/IAgoraRtcEngineImpl.ts +9 -11
- package/ts/Private/internal/IrisApiEngine.ts +14 -0
- package/ts/Private/internal/MusicContentCenterInternal.ts +4 -0
- package/ts/Private/internal/RtcEngineExInternal.ts +36 -14
- package/ts/Private/ti/IAgoraRtcEngine-ti.ts +2 -2
- package/ts/Renderer/WebGLRenderer/index.ts +26 -21
- package/ts/Renderer/YUVCanvasRenderer/index.ts +1 -1
- package/types/Private/AgoraBase.d.ts +298 -135
- package/types/Private/AgoraBase.d.ts.map +1 -1
- package/types/Private/AgoraMediaBase.d.ts +69 -35
- package/types/Private/AgoraMediaBase.d.ts.map +1 -1
- package/types/Private/AgoraMediaPlayerTypes.d.ts +8 -5
- package/types/Private/AgoraMediaPlayerTypes.d.ts.map +1 -1
- package/types/Private/IAgoraLog.d.ts +7 -3
- package/types/Private/IAgoraLog.d.ts.map +1 -1
- package/types/Private/IAgoraMediaEngine.d.ts +76 -35
- package/types/Private/IAgoraMediaEngine.d.ts.map +1 -1
- package/types/Private/IAgoraMediaPlayer.d.ts +126 -64
- package/types/Private/IAgoraMediaPlayer.d.ts.map +1 -1
- package/types/Private/IAgoraMediaPlayerSource.d.ts +3 -1
- package/types/Private/IAgoraMediaPlayerSource.d.ts.map +1 -1
- package/types/Private/IAgoraRtcEngine.d.ts +1326 -530
- package/types/Private/IAgoraRtcEngine.d.ts.map +1 -1
- package/types/Private/IAgoraRtcEngineEx.d.ts +227 -94
- package/types/Private/IAgoraRtcEngineEx.d.ts.map +1 -1
- package/types/Private/IAgoraSpatialAudio.d.ts +71 -36
- package/types/Private/IAgoraSpatialAudio.d.ts.map +1 -1
- package/types/Private/IAudioDeviceManager.d.ts +61 -31
- package/types/Private/IAudioDeviceManager.d.ts.map +1 -1
- package/types/Private/impl/IAgoraMediaEngineImpl.d.ts +2 -2
- package/types/Private/impl/IAgoraMediaEngineImpl.d.ts.map +1 -1
- package/types/Private/impl/IAgoraRtcEngineImpl.d.ts +5 -5
- package/types/Private/impl/IAgoraRtcEngineImpl.d.ts.map +1 -1
- package/types/Private/internal/IrisApiEngine.d.ts.map +1 -1
- package/types/Private/internal/MusicContentCenterInternal.d.ts +1 -0
- package/types/Private/internal/MusicContentCenterInternal.d.ts.map +1 -1
- package/types/Private/internal/RtcEngineExInternal.d.ts.map +1 -1
- package/types/Renderer/WebGLRenderer/index.d.ts +1 -1
- package/types/Renderer/WebGLRenderer/index.d.ts.map +1 -1
|
@@ -29,34 +29,54 @@ export declare abstract class IMediaEngine {
|
|
|
29
29
|
/**
|
|
30
30
|
* Registers an audio frame observer object.
|
|
31
31
|
*
|
|
32
|
-
* Call this method to register an audio frame observer object (register a callback). When you need the SDK to trigger onMixedAudioFrame
|
|
32
|
+
* Call this method to register an audio frame observer object (register a callback). When you need the SDK to trigger onMixedAudioFrame, onRecordAudioFrame, onPlaybackAudioFrame or onEarMonitoringAudioFrame callback, you need to use this method to register the callbacks. Ensure that you call this method before joining a channel.
|
|
33
33
|
*
|
|
34
|
-
* @param observer The observer
|
|
34
|
+
* @param observer The observer instance. See IAudioFrameObserver. Agora recommends calling this method after receiving onLeaveChannel to release the audio observer object.
|
|
35
35
|
*
|
|
36
36
|
* @returns
|
|
37
|
-
* 0: Success.
|
|
37
|
+
* 0: Success.
|
|
38
|
+
* < 0: Failure.
|
|
38
39
|
*/
|
|
39
40
|
abstract registerAudioFrameObserver(observer: IAudioFrameObserver): number;
|
|
40
41
|
/**
|
|
41
42
|
* Registers a raw video frame observer object.
|
|
42
43
|
*
|
|
43
|
-
* If you want to obtain the original video data of some remote users (referred to as group A) and the encoded video data of other remote users (referred to as group B), you can refer to the following steps:
|
|
44
|
+
* If you want to obtain the original video data of some remote users (referred to as group A) and the encoded video data of other remote users (referred to as group B), you can refer to the following steps:
|
|
45
|
+
* Call registerVideoFrameObserver to register the raw video frame observer before joining the channel.
|
|
46
|
+
* Call registerVideoEncodedFrameObserver to register the encoded video frame observer before joining the channel.
|
|
47
|
+
* After joining the channel, get the user IDs of group B users through onUserJoined, and then call setRemoteVideoSubscriptionOptions to set the encodedFrameOnly of this group of users to true.
|
|
48
|
+
* Call muteAllRemoteVideoStreams (false) to start receiving the video streams of all remote users. Then:
|
|
49
|
+
* The raw video data of group A users can be obtained through the callback in IVideoFrameObserver, and the SDK renders the data by default.
|
|
50
|
+
* The encoded video data of group B users can be obtained through the callback in IVideoEncodedFrameObserver. If you want to observe raw video frames (such as YUV or RGBA format), Agora recommends that you implement one IVideoFrameObserver class with this method. When calling this method to register a video observer, you can register callbacks in the IVideoFrameObserver class as needed. After you successfully register the video frame observer, the SDK triggers the registered callbacks each time a video frame is received.
|
|
51
|
+
* Ensure that you call this method before joining a channel.
|
|
52
|
+
* When handling the video data returned in the callbacks, pay attention to the changes in the width and height parameters, which may be adapted under the following circumstances:
|
|
53
|
+
* When network conditions deteriorate, the video resolution decreases incrementally.
|
|
54
|
+
* If the user adjusts the video profile, the resolution of the video returned in the callbacks also changes.
|
|
44
55
|
*
|
|
45
|
-
* @param observer The observer
|
|
56
|
+
* @param observer The observer instance. See IVideoFrameObserver.
|
|
46
57
|
*
|
|
47
58
|
* @returns
|
|
48
|
-
* 0: Success.
|
|
59
|
+
* 0: Success.
|
|
60
|
+
* < 0: Failure.
|
|
49
61
|
*/
|
|
50
62
|
abstract registerVideoFrameObserver(observer: IVideoFrameObserver): number;
|
|
51
63
|
/**
|
|
52
64
|
* Registers a receiver object for the encoded video image.
|
|
53
65
|
*
|
|
54
|
-
* If you only want to observe encoded video frames (such as h.264 format) without decoding and rendering the video, Agora recommends that you implement one IVideoEncodedFrameObserver class through this method. If you want to obtain the original video data of some remote users (referred to as group A) and the encoded video data of other remote users (referred to as group B), you can refer to the following steps:
|
|
66
|
+
* If you only want to observe encoded video frames (such as h.264 format) without decoding and rendering the video, Agora recommends that you implement one IVideoEncodedFrameObserver class through this method. If you want to obtain the original video data of some remote users (referred to as group A) and the encoded video data of other remote users (referred to as group B), you can refer to the following steps:
|
|
67
|
+
* Call registerVideoFrameObserver to register the raw video frame observer before joining the channel.
|
|
68
|
+
* Call registerVideoEncodedFrameObserver to register the encoded video frame observer before joining the channel.
|
|
69
|
+
* After joining the channel, get the user IDs of group B users through onUserJoined, and then call setRemoteVideoSubscriptionOptions to set the encodedFrameOnly of this group of users to true.
|
|
70
|
+
* Call muteAllRemoteVideoStreams (false) to start receiving the video streams of all remote users. Then:
|
|
71
|
+
* The raw video data of group A users can be obtained through the callback in IVideoFrameObserver, and the SDK renders the data by default.
|
|
72
|
+
* The encoded video data of group B users can be obtained through the callback in IVideoEncodedFrameObserver.
|
|
73
|
+
* Call this method before joining a channel.
|
|
55
74
|
*
|
|
56
75
|
* @param observer The video frame observer object. See IVideoEncodedFrameObserver.
|
|
57
76
|
*
|
|
58
77
|
* @returns
|
|
59
|
-
* 0: Success.
|
|
78
|
+
* 0: Success.
|
|
79
|
+
* < 0: Failure.
|
|
60
80
|
*/
|
|
61
81
|
abstract registerVideoEncodedFrameObserver(observer: IVideoEncodedFrameObserver): number;
|
|
62
82
|
/**
|
|
@@ -66,58 +86,71 @@ export declare abstract class IMediaEngine {
|
|
|
66
86
|
* @param trackId The audio track ID. If you want to publish a custom external audio source, set this parameter to the ID of the corresponding custom audio track you want to publish.
|
|
67
87
|
*
|
|
68
88
|
* @returns
|
|
69
|
-
* 0: Success.
|
|
89
|
+
* 0: Success.
|
|
90
|
+
* < 0: Failure.
|
|
70
91
|
*/
|
|
71
92
|
abstract pushAudioFrame(frame: AudioFrame, trackId?: number): number;
|
|
72
93
|
/**
|
|
73
94
|
* Pulls the remote audio data.
|
|
74
95
|
*
|
|
75
|
-
* Before calling this method, you need to call setExternalAudioSink to notify the app to enable and set the external rendering. After a successful method call, the app pulls the decoded and mixed audio data for playback.
|
|
96
|
+
* Before calling this method, you need to call setExternalAudioSink to notify the app to enable and set the external rendering. After a successful method call, the app pulls the decoded and mixed audio data for playback.
|
|
97
|
+
* This method only supports pulling data from custom audio source. If you need to pull the data captured by the SDK, do not call this method.
|
|
98
|
+
* Call this method after joining a channel.
|
|
99
|
+
* Once you enable the external audio sink, the app will not retrieve any audio data from the onPlaybackAudioFrame callback.
|
|
100
|
+
* The difference between this method and the onPlaybackAudioFrame callback is as follows:
|
|
101
|
+
* The SDK sends the audio data to the app through the onPlaybackAudioFrame callback. Any delay in processing the audio frames may result in audio jitter.
|
|
102
|
+
* After a successful method call, the app automatically pulls the audio data from the SDK. After setting the audio data parameters, the SDK adjusts the frame buffer and avoids problems caused by jitter in the external audio playback.
|
|
76
103
|
*
|
|
77
104
|
* @returns
|
|
78
|
-
* The AudioFrame instance, if the method call succeeds.
|
|
105
|
+
* The AudioFrame instance, if the method call succeeds.
|
|
106
|
+
* An error code, if the call fails,.
|
|
79
107
|
*/
|
|
80
|
-
abstract pullAudioFrame():
|
|
108
|
+
abstract pullAudioFrame(frame: AudioFrame): number;
|
|
81
109
|
/**
|
|
82
110
|
* Configures the external video source.
|
|
83
111
|
*
|
|
84
112
|
* Call this method before joining a channel.
|
|
85
113
|
*
|
|
86
|
-
* @param enabled Whether to use the external video source:true: Use the external video source. The SDK prepares to accept the external video frame.false: (Default) Do not use the external video source.
|
|
87
|
-
* @param useTexture Whether to use the external video frame in the Texture format.true: Use the external video frame in the Texture format.false: (Default) Do not use the external video frame in the Texture format.
|
|
114
|
+
* @param enabled Whether to use the external video source: true : Use the external video source. The SDK prepares to accept the external video frame. false : (Default) Do not use the external video source.
|
|
115
|
+
* @param useTexture Whether to use the external video frame in the Texture format. true : Use the external video frame in the Texture format. false : (Default) Do not use the external video frame in the Texture format.
|
|
88
116
|
* @param sourceType Whether the external video frame is encoded. See ExternalVideoSourceType.
|
|
89
|
-
* @param encodedVideoOption Video encoding options. This parameter needs to be set if sourceType is EncodedVideoFrame. To set this parameter, contact
|
|
117
|
+
* @param encodedVideoOption Video encoding options. This parameter needs to be set if sourceType is EncodedVideoFrame. To set this parameter, contact.
|
|
90
118
|
*
|
|
91
119
|
* @returns
|
|
92
|
-
* 0: Success.
|
|
120
|
+
* 0: Success.
|
|
121
|
+
* < 0: Failure.
|
|
93
122
|
*/
|
|
94
123
|
abstract setExternalVideoSource(enabled: boolean, useTexture: boolean, sourceType?: ExternalVideoSourceType, encodedVideoOption?: SenderOptions): number;
|
|
95
124
|
/**
|
|
96
125
|
* Sets the external audio source parameters.
|
|
97
126
|
*
|
|
98
|
-
* Call this method before joining a channel.
|
|
127
|
+
* Deprecated: This method is deprecated, use createCustomAudioTrack instead. Call this method before joining a channel.
|
|
99
128
|
*
|
|
100
|
-
* @param enabled Whether to enable the external audio source:true: Enable the external audio source.false: (Default) Disable the external audio source.
|
|
129
|
+
* @param enabled Whether to enable the external audio source: true : Enable the external audio source. false : (Default) Disable the external audio source.
|
|
101
130
|
* @param sampleRate The sample rate (Hz) of the external audio source which can be set as 8000, 16000, 32000, 44100, or 48000.
|
|
102
131
|
* @param channels The number of channels of the external audio source, which can be set as 1 (Mono) or 2 (Stereo).
|
|
103
|
-
* @param
|
|
104
|
-
* @param
|
|
105
|
-
* @param publish Whether to publish audio to the remote users:true: (Default) Publish audio to the remote users.false: Do not publish audio to the remote users.
|
|
132
|
+
* @param localPlayback Whether to play the external audio source: true : Play the external audio source. false : (Default) Do not play the external source.
|
|
133
|
+
* @param publish Whether to publish audio to the remote users: true : (Default) Publish audio to the remote users. false : Do not publish audio to the remote users.
|
|
106
134
|
*
|
|
107
135
|
* @returns
|
|
108
|
-
* 0: Success.
|
|
136
|
+
* 0: Success.
|
|
137
|
+
* < 0: Failure.
|
|
109
138
|
*/
|
|
110
139
|
abstract setExternalAudioSource(enabled: boolean, sampleRate: number, channels: number, localPlayback?: boolean, publish?: boolean): number;
|
|
111
140
|
/**
|
|
112
|
-
* Creates a
|
|
141
|
+
* Creates a custom audio track.
|
|
113
142
|
*
|
|
114
|
-
*
|
|
143
|
+
* To publish a custom audio source to multiple channels, see the following steps:
|
|
144
|
+
* Call this method to create a custom audio track and get the audio track ID.
|
|
145
|
+
* In ChannelMediaOptions of each channel, set publishCustomAduioTrackId to the audio track ID that you want to publish, and set publishCustomAudioTrack to true.
|
|
146
|
+
* If you call pushAudioFrame, and specify trackId as the audio track ID set in step 2, you can publish the corresponding custom audio source in multiple channels.
|
|
115
147
|
*
|
|
116
|
-
* @param trackType The type of the custom audio track. See AudioTrackType.
|
|
148
|
+
* @param trackType The type of the custom audio track. See AudioTrackType. If AudioTrackDirect is specified for this parameter, you must set publishMicrophoneTrack to false in ChannelMediaOptions when calling joinChannel to join the channel; otherwise, joining the channel fails and returns the error code -2.
|
|
117
149
|
* @param config The configuration of the custom audio track. See AudioTrackConfig.
|
|
118
150
|
*
|
|
119
151
|
* @returns
|
|
120
|
-
* If the method call is successful, the audio track ID is returned as the unique identifier of the audio track.
|
|
152
|
+
* If the method call is successful, the audio track ID is returned as the unique identifier of the audio track.
|
|
153
|
+
* If the method call fails, a negative value is returned.
|
|
121
154
|
*/
|
|
122
155
|
abstract createCustomAudioTrack(trackType: AudioTrackType, config: AudioTrackConfig): number;
|
|
123
156
|
/**
|
|
@@ -126,7 +159,8 @@ export declare abstract class IMediaEngine {
|
|
|
126
159
|
* @param trackId The custom audio track ID returned in createCustomAudioTrack.
|
|
127
160
|
*
|
|
128
161
|
* @returns
|
|
129
|
-
* 0: Success.
|
|
162
|
+
* 0: Success.
|
|
163
|
+
* < 0: Failure.
|
|
130
164
|
*/
|
|
131
165
|
abstract destroyCustomAudioTrack(trackId: number): number;
|
|
132
166
|
/**
|
|
@@ -134,12 +168,15 @@ export declare abstract class IMediaEngine {
|
|
|
134
168
|
*
|
|
135
169
|
* This method applies to scenarios where you want to use external audio data for playback. After you set the external audio sink, you can call pullAudioFrame to pull remote audio frames. The app can process the remote audio and play it with the audio effects that you want.
|
|
136
170
|
*
|
|
137
|
-
* @param enabled Whether to enable or disable the external audio sink:true: Enables the external audio sink.false: (Default) Disables the external audio sink.
|
|
171
|
+
* @param enabled Whether to enable or disable the external audio sink: true : Enables the external audio sink. false : (Default) Disables the external audio sink.
|
|
138
172
|
* @param sampleRate The sample rate (Hz) of the external audio sink, which can be set as 16000, 32000, 44100, or 48000.
|
|
139
|
-
* @param channels The number of audio channels of the external audio sink:
|
|
173
|
+
* @param channels The number of audio channels of the external audio sink:
|
|
174
|
+
* 1: Mono.
|
|
175
|
+
* 2: Stereo.
|
|
140
176
|
*
|
|
141
177
|
* @returns
|
|
142
|
-
* 0: Success.
|
|
178
|
+
* 0: Success.
|
|
179
|
+
* < 0: Failure.
|
|
143
180
|
*/
|
|
144
181
|
abstract setExternalAudioSink(enabled: boolean, sampleRate: number, channels: number): number;
|
|
145
182
|
/**
|
|
@@ -149,13 +186,14 @@ export declare abstract class IMediaEngine {
|
|
|
149
186
|
/**
|
|
150
187
|
* Pushes the external raw video frame to the SDK.
|
|
151
188
|
*
|
|
152
|
-
* If you call createCustomVideoTrack method to get the video track ID, set the customVideoTrackId parameter to the video track ID you want to publish in the ChannelMediaOptions of each channel, and set the publishCustomVideoTrack parameter to true
|
|
189
|
+
* If you call createCustomVideoTrack method to get the video track ID, set the customVideoTrackId parameter to the video track ID you want to publish in the ChannelMediaOptions of each channel, and set the publishCustomVideoTrack parameter to true, you can call this method to push the unencoded external video frame to the SDK.
|
|
153
190
|
*
|
|
154
191
|
* @param frame The external raw video frame to be pushed. See ExternalVideoFrame.
|
|
155
192
|
* @param videoTrackId The video track ID returned by calling the createCustomVideoTrack method. The default value is 0.
|
|
156
193
|
*
|
|
157
194
|
* @returns
|
|
158
|
-
* 0: Success.
|
|
195
|
+
* 0: Success.
|
|
196
|
+
* < 0: Failure.
|
|
159
197
|
*/
|
|
160
198
|
abstract pushVideoFrame(frame: ExternalVideoFrame, videoTrackId?: number): number;
|
|
161
199
|
/**
|
|
@@ -172,7 +210,8 @@ export declare abstract class IMediaEngine {
|
|
|
172
210
|
* @param observer The audio frame observer, reporting the reception of each audio frame. See IAudioFrameObserver.
|
|
173
211
|
*
|
|
174
212
|
* @returns
|
|
175
|
-
* 0: Success.
|
|
213
|
+
* 0: Success.
|
|
214
|
+
* < 0: Failure.
|
|
176
215
|
*/
|
|
177
216
|
abstract unregisterAudioFrameObserver(observer: IAudioFrameObserver): number;
|
|
178
217
|
/**
|
|
@@ -181,7 +220,8 @@ export declare abstract class IMediaEngine {
|
|
|
181
220
|
* @param observer The video observer, reporting the reception of each video frame. See IVideoFrameObserver.
|
|
182
221
|
*
|
|
183
222
|
* @returns
|
|
184
|
-
* 0: Success.
|
|
223
|
+
* 0: Success.
|
|
224
|
+
* < 0: Failure.
|
|
185
225
|
*/
|
|
186
226
|
abstract unregisterVideoFrameObserver(observer: IVideoFrameObserver): number;
|
|
187
227
|
/**
|
|
@@ -190,7 +230,8 @@ export declare abstract class IMediaEngine {
|
|
|
190
230
|
* @param observer The video observer, reporting the reception of each video frame. See IVideoEncodedFrameObserver.
|
|
191
231
|
*
|
|
192
232
|
* @returns
|
|
193
|
-
* 0: Success.
|
|
233
|
+
* 0: Success.
|
|
234
|
+
* < 0: Failure.
|
|
194
235
|
*/
|
|
195
236
|
abstract unregisterVideoEncodedFrameObserver(observer: IVideoEncodedFrameObserver): number;
|
|
196
237
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IAgoraMediaEngine.d.ts","sourceRoot":"","sources":["../../ts/Private/IAgoraMediaEngine.ts"],"names":[],"mappings":"AAAA,OAAO,wCAAwC,CAAC;AAChD,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,aAAa,EACd,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,0BAA0B,EAC1B,mBAAmB,EACpB,MAAM,kBAAkB,CAAC;AAE1B;;GAEG;AACH,oBAAY,uBAAuB;IACjC;;OAEG;IACH,uBAAuB,IAAI;IAC3B;;OAEG;IACH,oBAAoB,IAAI;IACxB;;OAEG;IACH,oBAAoB,IAAI;IACxB;;OAEG;IACH,sBAAsB,IAAI;CAC3B;AAED;;GAEG;AACH,8BAAsB,YAAY;IAChC
|
|
1
|
+
{"version":3,"file":"IAgoraMediaEngine.d.ts","sourceRoot":"","sources":["../../ts/Private/IAgoraMediaEngine.ts"],"names":[],"mappings":"AAAA,OAAO,wCAAwC,CAAC;AAChD,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,aAAa,EACd,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,0BAA0B,EAC1B,mBAAmB,EACpB,MAAM,kBAAkB,CAAC;AAE1B;;GAEG;AACH,oBAAY,uBAAuB;IACjC;;OAEG;IACH,uBAAuB,IAAI;IAC3B;;OAEG;IACH,oBAAoB,IAAI;IACxB;;OAEG;IACH,oBAAoB,IAAI;IACxB;;OAEG;IACH,sBAAsB,IAAI;CAC3B;AAED;;GAEG;AACH,8BAAsB,YAAY;IAChC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,0BAA0B,CAAC,QAAQ,EAAE,mBAAmB,GAAG,MAAM;IAE1E;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,QAAQ,CAAC,0BAA0B,CAAC,QAAQ,EAAE,mBAAmB,GAAG,MAAM;IAE1E;;;;;;;;;;;;;;;;;OAiBG;IACH,QAAQ,CAAC,iCAAiC,CACxC,QAAQ,EAAE,0BAA0B,GACnC,MAAM;IAET;;;;;;;;;OASG;IACH,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM;IAEpE;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM;IAElD;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,sBAAsB,CAC7B,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,OAAO,EACnB,UAAU,CAAC,EAAE,uBAAuB,EACpC,kBAAkB,CAAC,EAAE,aAAa,GACjC,MAAM;IAET;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,sBAAsB,CAC7B,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,OAAO,EACvB,OAAO,CAAC,EAAE,OAAO,GAChB,MAAM;IAET;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,sBAAsB,CAC7B,SAAS,EAAE,cAAc,EACzB,MAAM,EAAE,gBAAgB,GACvB,MAAM;IAET;;;;;;;;OAQG;IACH,QAAQ,CAAC,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAEzD;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,oBAAoB,CAC3B,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,MAAM;IAET;;OAEG;IACH,QAAQ,CAAC,8BAA8B,CACrC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,GACf,MAAM;IAET;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,cAAc,CACrB,KAAK,EAAE,kBAAkB,EACzB,YAAY,CAAC,EAAE,MAAM,GACpB,MAAM;IAET;;OAEG;IACH,QAAQ,CAAC,qBAAqB,CAC5B,WAAW,EAAE,UAAU,EACvB,MAAM,EAAE,MAAM,EACd,qBAAqB,EAAE,qBAAqB,EAC5C,YAAY,CAAC,EAAE,MAAM,GACpB,MAAM;IAET;;OAEG;IACH,QAAQ,CAAC,OAAO,IAAI,IAAI;IAExB;;;;;;;;OAQG;IACH,QAAQ,CAAC,4BAA4B,CAAC,QAAQ,EAAE,mBAAmB,GAAG,MAAM;IAE5E;;;;;;;;OAQG;IACH,QAAQ,CAAC,4BAA4B,CAAC,QAAQ,EAAE,mBAAmB,GAAG,MAAM;IAE5E;;;;;;;;OAQG;IACH,QAAQ,CAAC,mCAAmC,CAC1C,QAAQ,EAAE,0BAA0B,GACnC,MAAM;CACV"}
|