homebridge-unifi-protect 7.1.2 → 7.3.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.
Files changed (65) hide show
  1. package/dist/devices/protect-camera-package.js +1 -2
  2. package/dist/devices/protect-camera-package.js.map +1 -1
  3. package/dist/devices/protect-camera.d.ts +3 -0
  4. package/dist/devices/protect-camera.js +103 -41
  5. package/dist/devices/protect-camera.js.map +1 -1
  6. package/dist/devices/protect-chime.d.ts +2 -0
  7. package/dist/devices/protect-chime.js +38 -5
  8. package/dist/devices/protect-chime.js.map +1 -1
  9. package/dist/devices/protect-device.d.ts +7 -2
  10. package/dist/devices/protect-device.js +67 -66
  11. package/dist/devices/protect-device.js.map +1 -1
  12. package/dist/devices/protect-light.d.ts +2 -0
  13. package/dist/devices/protect-light.js +22 -4
  14. package/dist/devices/protect-light.js.map +1 -1
  15. package/dist/devices/protect-liveviews.js +2 -2
  16. package/dist/devices/protect-liveviews.js.map +1 -1
  17. package/dist/devices/protect-sensor.js +4 -0
  18. package/dist/devices/protect-sensor.js.map +1 -1
  19. package/dist/ffmpeg/protect-ffmpeg-exec.d.ts +0 -2
  20. package/dist/ffmpeg/protect-ffmpeg-options.js +9 -9
  21. package/dist/ffmpeg/protect-ffmpeg-options.js.map +1 -1
  22. package/dist/ffmpeg/protect-ffmpeg-record.d.ts +2 -3
  23. package/dist/ffmpeg/protect-ffmpeg-record.js +50 -56
  24. package/dist/ffmpeg/protect-ffmpeg-record.js.map +1 -1
  25. package/dist/ffmpeg/protect-ffmpeg-stream.d.ts +0 -2
  26. package/dist/ffmpeg/protect-ffmpeg-stream.js +17 -9
  27. package/dist/ffmpeg/protect-ffmpeg-stream.js.map +1 -1
  28. package/dist/ffmpeg/protect-ffmpeg.d.ts +2 -6
  29. package/dist/ffmpeg/protect-ffmpeg.js +0 -1
  30. package/dist/ffmpeg/protect-ffmpeg.js.map +1 -1
  31. package/dist/protect-events.d.ts +0 -1
  32. package/dist/protect-events.js +75 -59
  33. package/dist/protect-events.js.map +1 -1
  34. package/dist/protect-livestream.d.ts +3 -0
  35. package/dist/protect-livestream.js +61 -5
  36. package/dist/protect-livestream.js.map +1 -1
  37. package/dist/protect-nvr.d.ts +2 -3
  38. package/dist/protect-nvr.js +35 -52
  39. package/dist/protect-nvr.js.map +1 -1
  40. package/dist/protect-options.js +4 -4
  41. package/dist/protect-options.js.map +1 -1
  42. package/dist/protect-platform.js +1 -1
  43. package/dist/protect-platform.js.map +1 -1
  44. package/dist/protect-record.d.ts +7 -8
  45. package/dist/protect-record.js +126 -123
  46. package/dist/protect-record.js.map +1 -1
  47. package/dist/protect-snapshot.d.ts +0 -1
  48. package/dist/protect-snapshot.js +2 -2
  49. package/dist/protect-snapshot.js.map +1 -1
  50. package/dist/protect-stream.d.ts +2 -2
  51. package/dist/protect-stream.js +54 -29
  52. package/dist/protect-stream.js.map +1 -1
  53. package/dist/protect-timeshift.d.ts +3 -4
  54. package/dist/protect-timeshift.js +34 -31
  55. package/dist/protect-timeshift.js.map +1 -1
  56. package/dist/protect-types.d.ts +1 -0
  57. package/dist/protect-types.js +1 -0
  58. package/dist/protect-types.js.map +1 -1
  59. package/dist/settings.d.ts +1 -3
  60. package/dist/settings.js +1 -5
  61. package/dist/settings.js.map +1 -1
  62. package/homebridge-ui/public/lib/webUi-featureoptions.mjs +70 -70
  63. package/homebridge-ui/public/lib/webUi.mjs +7 -7
  64. package/homebridge-ui/public/ui.mjs +6 -5
  65. package/package.json +16 -16
@@ -268,15 +268,15 @@ export class ProtectStreamingDelegate {
268
268
  (this.protectCamera.ufp.videoCodec !== "h264");
269
269
  // Set the initial bitrate we should use for this request based on what HomeKit is requesting.
270
270
  let targetBitrate = request.video.max_bit_rate;
271
- // Override the stream quality selection if we know they're problematic on the Protect controller.
272
- const overrideStream = this.protectCamera.hints.apiStreaming && ["AI Pro", "G4 Pro"].includes(this.protectCamera.ufp.marketName);
271
+ // Only use API livestreaming if we have a live timeshift buffer. Otherwise, we'll get better startup performance out of RTSP streaming.
272
+ const useApi = this.protectCamera.hints.apiStreaming && this.hksv?.isRecording;
273
273
  // If we're using the livestream API and we're timeshifting, we override the stream quality we've determined in favor of our timeshift buffer.
274
- let rtspEntry = (this.protectCamera.hints.apiStreaming && this.protectCamera.hints.timeshift && this.hksv?.rtspEntry) ? this.hksv.rtspEntry : null;
274
+ let rtspEntry = useApi ? this.hksv?.rtspEntry : null;
275
275
  // Find the best RTSP stream based on what we're looking for.
276
276
  if (isTranscoding) {
277
277
  // If we have hardware transcoding enabled, we treat it uniquely and get the highest quality stream we can. Fixed-function hardware transcoders tend to perform
278
278
  // better with higher bitrate sources. Wel also want to generally bias ourselves toward higher quality streams where possible.
279
- rtspEntry ??= this.protectCamera.findRtsp((this.protectCamera.hints.hardwareTranscoding || overrideStream) ? 3840 : request.video.width, (this.protectCamera.hints.hardwareTranscoding || overrideStream) ? 2160 : request.video.height, { biasHigher: true, maxPixels: this.ffmpegOptions.hostSystemMaxPixels });
279
+ rtspEntry ??= this.protectCamera.findRtsp((this.protectCamera.hints.hardwareTranscoding) ? 3840 : request.video.width, (this.protectCamera.hints.hardwareTranscoding) ? 2160 : request.video.height, { biasHigher: true, maxPixels: this.ffmpegOptions.hostSystemMaxPixels });
280
280
  // If we have specified the bitrates we want to use when transcoding, let's honor those here.
281
281
  if (isHighLatency && (this.protectCamera.hints.transcodeHighLatencyBitrate > 0)) {
282
282
  targetBitrate = this.protectCamera.hints.transcodeHighLatencyBitrate;
@@ -290,7 +290,7 @@ export class ProtectStreamingDelegate {
290
290
  }
291
291
  }
292
292
  else {
293
- rtspEntry ??= this.protectCamera.findRtsp(overrideStream ? 3840 : request.video.width, overrideStream ? 2160 : request.video.height);
293
+ rtspEntry ??= this.protectCamera.findRtsp(request.video.width, request.video.height);
294
294
  }
295
295
  if (!rtspEntry) {
296
296
  const errorMessage = "Unable to start video stream: no valid RTSP stream profile was found.";
@@ -307,33 +307,28 @@ export class ProtectStreamingDelegate {
307
307
  //
308
308
  // - Since we are using an already existing connection to the Protect controller, we don't need to create another connection which incurs an additional delay, as well
309
309
  // as a resource hit on the Protect controller.
310
- const tsBuffer = (this.protectCamera.hints.apiStreaming && this.protectCamera.hints.timeshift) ?
311
- (this.hksv?.timeshift.getLast(PROTECT_LIVESTREAM_API_IDR_INTERVAL * 1000) ?? null) : null;
310
+ const tsBuffer = useApi ? (this.hksv?.timeshift.getLast(PROTECT_LIVESTREAM_API_IDR_INTERVAL * 1000) ?? null) : null;
312
311
  // -hide_banner Suppress printing the startup banner in FFmpeg.
313
312
  // -nostats Suppress printing progress reports while encoding in FFmpeg.
314
313
  // -fflags flags Set format flags to discard any corrupt packets rather than exit.
314
+ // -err_detect ignore_err Ignore decoding errors and continue rather than exit.
315
315
  // -max_delay 500000 Set an upper limit on how much time FFmpeg can take in demuxing packets, in microseconds.
316
316
  // -flags low_delay Tell FFmpeg to optimize for low delay / realtime decoding.
317
317
  // -r fps Set the input frame rate for the video stream.
318
318
  const ffmpegArgs = [
319
319
  "-hide_banner",
320
320
  "-nostats",
321
- "-fflags", "+discardcorrupt",
321
+ "-fflags", "+discardcorrupt+flush_packets+genpts+igndts+nobuffer",
322
+ "-err_detect", "ignore_err",
322
323
  ...this.ffmpegOptions.videoDecoder,
323
324
  "-max_delay", "500000",
324
325
  "-flags", "low_delay",
325
326
  "-r", rtspEntry.channel.fps.toString()
326
327
  ];
327
- if (this.protectCamera.hints.apiStreaming) {
328
- // -probesize number How many bytes should be analyzed for stream information. Use the lesser of the size of the timeshift buffer or our defaults.
328
+ if (useApi) {
329
329
  // -f mp4 Tell ffmpeg that it should expect an MP4-encoded input stream.
330
330
  // -i pipe:0 Use standard input to get video data.
331
- // -enc_time_base demux Set the encoder timebase to avoid timebase adjustments at the encoder layer.
332
- // -fps_mode passthrough Pass through the framerate as defined by the Protect stream. This avoids frame duplication.
333
- // -muxdelay 0 Set the maximum demux decode delay to 0.
334
- // -video_track_timescale 90000 Set the timescale to what Protect sends out.
335
- ffmpegArgs.push("-probesize", Math.min(this.probesize, tsBuffer?.length ?? this.probesize).toString(), "-f", "mp4", "-i", "pipe:0", "-enc_time_base", "-1", // -1 should be changed to demux for FFmpeg 7 and beyond.
336
- "-fps_mode", "passthrough", "-muxdelay", "0", "-video_track_timescale", "90000");
331
+ ffmpegArgs.push("-f", "mp4", "-i", "pipe:0");
337
332
  }
338
333
  else {
339
334
  // -probesize number How many bytes should be analyzed for stream information. Use our configured defaults.
@@ -348,13 +343,13 @@ export class ProtectStreamingDelegate {
348
343
  // Protect changes this in the future.
349
344
  ffmpegArgs.push("-map", "0:v:0");
350
345
  // Inform the user.
351
- this.log.info("Streaming request from %s%s: %sx%s@%sfps, %s kbps. %s %s, %s kbps [%s].", sessionInfo.address, (request.audio.packet_time === 60) ? " (high latency connection)" : "", request.video.width, request.video.height, request.video.fps, targetBitrate.toLocaleString("en-US"), isTranscoding ? (this.protectCamera.hints.hardwareTranscoding ? "Hardware accelerated transcoding" : "Transcoding") : "Using", rtspEntry.name, (rtspEntry.channel.bitrate / 1000).toLocaleString("en-US"), this.protectCamera.hints.apiStreaming ? "API" : "RTSP");
346
+ this.log.info("Streaming request from %s%s: %sx%s@%sfps, %s kbps. %s %s, %s kbps [%s].", sessionInfo.address, (request.audio.packet_time === 60) ? " (high latency connection)" : "", request.video.width, request.video.height, request.video.fps, targetBitrate.toLocaleString("en-US"), isTranscoding ? (this.protectCamera.hints.hardwareTranscoding ? "Hardware accelerated transcoding" : "Transcoding") : "Using", rtspEntry.name, (rtspEntry.channel.bitrate / 1000).toLocaleString("en-US"), useApi ? "API" : "RTSP");
352
347
  // Check to see if we're transcoding. If we are, set the right FFmpeg encoder options. If not, copy the video stream.
353
348
  if (isTranscoding) {
354
349
  // Configure our video parameters for transcoding.
355
350
  ffmpegArgs.push(...this.ffmpegOptions.streamEncoder({
356
351
  bitrate: targetBitrate,
357
- fps: rtspEntry.channel.fps,
352
+ fps: request.video.fps,
358
353
  height: request.video.height,
359
354
  idrInterval: PROTECT_HOMEKIT_IDR_INTERVAL,
360
355
  inputFps: rtspEntry.channel.fps,
@@ -369,7 +364,7 @@ export class ProtectStreamingDelegate {
369
364
  // -vcodec copy Copy the stream withour reencoding it.
370
365
  ffmpegArgs.push("-vcodec", "copy");
371
366
  // The livestream API needs to be transmuxed before we use it directly.
372
- if (this.protectCamera.hints.apiStreaming) {
367
+ if (useApi) {
373
368
  // -r bsf:v h264_mp4toannexb Convert the livestream container format from MP4 to MPEG-TS.
374
369
  ffmpegArgs.push("-bsf:v", "h264_mp4toannexb");
375
370
  }
@@ -402,7 +397,7 @@ export class ProtectStreamingDelegate {
402
397
  // -ar samplerate Sample rate to use for this audio. This is specified by HomeKit.
403
398
  // -b:a bitrate Bitrate to use for this audio stream. This is specified by HomeKit.
404
399
  // -bufsize size This is the decoder buffer size, which drives the variability / quality of the output bitrate.
405
- // -ac 1 Set the number of audio channels to 1.
400
+ // -ac number Set the number of audio channels.
406
401
  // -frame_size Set the number of samples per frame to match the requested frame size from HomeKit.
407
402
  if (sessionInfo.hasAudioSupport) {
408
403
  // Configure our audio parameters.
@@ -458,24 +453,55 @@ export class ProtectStreamingDelegate {
458
453
  // Combine everything and start an instance of FFmpeg.
459
454
  const ffmpegStream = new FfmpegStreamingProcess(this, request.sessionID, ffmpegArgs, (sessionInfo.hasAudioSupport && this.protectCamera.hints.twoWayAudio) ? undefined :
460
455
  { addressVersion: sessionInfo.addressVersion, port: sessionInfo.videoReturnPort }, callback);
461
- if (this.protectCamera.hints.apiStreaming) {
456
+ if (useApi) {
462
457
  const livestream = this.protectCamera.livestream.acquire(rtspEntry.channel.id, rtspEntry.lens);
463
458
  let seenInitSegment = false;
459
+ // We maintain a queue to manage segment writes to FFmpeg. Why? We need to account for backpressure when writing to FFmpeg.
460
+ const segmentQueue = [];
461
+ let isWriting = false;
462
+ // Segment queue manager.
463
+ const processSegmentQueue = (segment) => {
464
+ // Add the segment to the queue.
465
+ if (segment) {
466
+ segmentQueue.push(segment);
467
+ }
468
+ // If we already have a write in progress, or nothing left to write, we're done.
469
+ if (isWriting || segmentQueue.length === 0) {
470
+ return;
471
+ }
472
+ // Dequeue and write.
473
+ isWriting = true;
474
+ segment = segmentQueue.shift();
475
+ // Send the segment to FFmpeg for processing.
476
+ if (!ffmpegStream.stdin?.write(segment)) {
477
+ // FFmpeg isn't ready to read more data yet, queue the segment until we are.
478
+ ffmpegStream.stdin?.once("drain", () => {
479
+ // Mark us available to write and process the write queue.
480
+ isWriting = false;
481
+ processSegmentQueue();
482
+ });
483
+ }
484
+ else {
485
+ // Process the next segment.
486
+ isWriting = false;
487
+ processSegmentQueue();
488
+ }
489
+ };
464
490
  // If we're using a timeshift buffer, let's use that to livestream. It has the dual benefit of reducing the workload on the Protect controller since it's already
465
491
  // providing a livestream to us and it also improves performance by ensuring there's several seconds of video ready to immediately transmit.
466
492
  const livestreamListener = async (segment) => {
467
493
  if (!seenInitSegment) {
468
494
  if (tsBuffer) {
469
- ffmpegStream.stdin?.write(tsBuffer ?? (await livestream.getInitSegment()));
495
+ processSegmentQueue(tsBuffer ?? (await livestream.getInitSegment()));
470
496
  seenInitSegment = true;
471
497
  }
472
498
  else {
473
- ffmpegStream.stdin?.write(await livestream.getInitSegment());
499
+ processSegmentQueue(await livestream.getInitSegment());
474
500
  seenInitSegment = true;
475
501
  }
476
502
  }
477
503
  // Send the segment to FFmpeg for processing.
478
- ffmpegStream.stdin?.write(segment);
504
+ processSegmentQueue(segment);
479
505
  };
480
506
  const closeListener = () => void ffmpegStream.ffmpegProcess?.stdin.end();
481
507
  livestream.on("close", closeListener);
@@ -661,13 +687,13 @@ export class ProtectStreamingDelegate {
661
687
  break;
662
688
  case "stop" /* StreamRequestTypes.STOP */:
663
689
  default:
664
- await this.stopStream(request.sessionID);
690
+ this.stopStream(request.sessionID);
665
691
  callback();
666
692
  break;
667
693
  }
668
694
  }
669
695
  // Close a video stream.
670
- async stopStream(sessionId) {
696
+ stopStream(sessionId) {
671
697
  try {
672
698
  // Stop any FFmpeg instances we have running.
673
699
  if (this.ongoingSessions[sessionId]) {
@@ -693,10 +719,9 @@ export class ProtectStreamingDelegate {
693
719
  }
694
720
  }
695
721
  // Shutdown all our video streams.
696
- async shutdown() {
722
+ shutdown() {
697
723
  for (const session of Object.keys(this.ongoingSessions)) {
698
- // eslint-disable-next-line no-await-in-loop
699
- await this.stopStream(session);
724
+ this.stopStream(session);
700
725
  }
701
726
  }
702
727
  // Adjust our probe hints.
@@ -1 +1 @@
1
- {"version":3,"file":"protect-stream.js","sourceRoot":"","sources":["../src/protect-stream.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAA2B,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,iCAAiC,EAAE,4BAA4B,EAAE,yCAAyC,EAAE,4BAA4B,EAC/I,mCAAmC,EAAE,MAAM,eAAe,CAAC;AAI7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,SAAS,MAAM,IAAI,CAAC;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AA4BnC,wDAAwD;AACxD,MAAM,OAAO,wBAAwB;IAElB,GAAG,CAAM;IACnB,UAAU,CAAmB;IACpB,aAAa,CAAgB;IAC5B,GAAG,CAAM;IACnB,IAAI,CAAkC;IAC7B,GAAG,CAA0B;IAC5B,GAAG,CAAa;IACzB,eAAe,CAA0H;IACzI,eAAe,CAAmC;IAC1C,QAAQ,CAAkB;IAC1B,aAAa,CAAgB;IACrC,iBAAiB,CAAS;IAC1B,sBAAsB,CAAS;IAC/B,wBAAwB,CAAkB;IAC1C,QAAQ,CAAkB;IAC3B,aAAa,CAAU;IACtB,MAAM,GAAG,IAAI,CAAC;IAEtB,sDAAsD;IACtD,YAAY,aAA4B,EAAE,WAAuC;QAE/E,IAAI,CAAC,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC;QAC7B,IAAI,CAAC,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC;QACjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC;QAC7B,IAAI,CAAC,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC;QAC7B,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC;QACvC,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,sBAAsB,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAE3B,+CAA+C;QAC/C,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,aAAa,CAAC,CAAC;QAEtD,8BAA8B;QAC9B,IAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;YAE9B,IAAI,CAAC,IAAI,GAAG,IAAI,wBAAwB,CAAC,aAAa,CAAC,CAAC;QAC1D,CAAC;QAED,kCAAkC;QAClC,IAAI,CAAC,QAAQ,GAAG,IAAI,eAAe,CAAC,aAAa,CAAC,CAAC;QAEnD,mCAAmC;QACnC,MAAM,OAAO,GAA4B;YAEvC,4EAA4E;YAC5E,iBAAiB,EAAE,EAAE;YAErB,mCAAmC;YACnC,QAAQ,EAAE,IAAI;YAEd,uDAAuD;YACvD,SAAS,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;gBAEnD,QAAQ,EAAE,IAAI,CAAC,IAAgC;gBAE/C,OAAO,EAAE;oBAEP,KAAK,EAAE;wBAEL,MAAM,EAAE;4BACN;gCAEE,+EAA+E;gCAC/E,UAAU,yCAAiC;gCAC3C,IAAI,wCAAgC;6BACrC;yBACF;qBACF;oBAED,2BAA2B,EAAE;wBAC3B;4BAEE,6HAA6H;4BAC7H,cAAc,EAAE,4BAA4B;4BAC5C,IAAI,2CAAmC;yBACxC;qBACF;oBAED,oJAAoJ;oBACpJ,eAAe,EAAE,yCAAyC;oBAE1D,KAAK,EAAE;wBAEL,UAAU,EAAE;4BAEV,uJAAuJ;4BACvJ,sJAAsJ;4BACtJ,aAAa;4BACb,MAAM,EAAE,oFAA8D;4BACtE,QAAQ,EAAE,0BAAoB;yBAC/B;wBAED,WAAW,EAAE,WAAW;wBAExB,IAAI,0CAAkC;qBACvC;iBACF;aACF;YAED,qBAAqB;YACrB,OAAO,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;gBAEjD,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC;aAC/E;YAED,gBAAgB,EAAE;gBAEhB,KAAK,EAAE;oBAEL,MAAM,EAAE;wBAEN;4BAEE,aAAa,EAAE,CAAC;4BAChB,OAAO,EAAE,CAAC;4BACV,UAAU,EAAE,oFAAoE;4BAChF,IAAI,iDAAiC;yBACtC;qBACF;oBAED,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW;iBAClD;gBAED,qBAAqB,EAAE,2DAAqD;gBAE5E,KAAK,EAAE;oBAEL,KAAK,EAAE;wBAEL,uJAAuJ;wBACvJ,sJAAsJ;wBACtJ,aAAa;wBACb,MAAM,EAAE,oFAA8D;wBACtE,QAAQ,EAAE,0BAAoB;qBAC/B;oBAED,+JAA+J;oBAC/J,gKAAgK;oBAChK,gJAAgJ;oBAChJ,WAAW,EAAE,WAAW;iBACzB;aACF;SACF,CAAC;QAEF,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC3D,CAAC;IAED,0CAA0C;IACnC,KAAK,CAAC,qBAAqB,CAAC,OAAyB,EAAE,QAAkC;QAE9F,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAE1D,8CAA8C;QAC9C,IAAG,CAAC,QAAQ,EAAE,CAAC;YAEb,IAAG,QAAQ,EAAE,CAAC;gBAEZ,QAAQ,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,iCAAiC,CAAC,CAAC,CAAC;YACnF,CAAC;YAED,OAAO;QACT,CAAC;QAED,+BAA+B;QAC/B,IAAG,QAAQ,EAAE,CAAC;YAEZ,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAChC,CAAC;QAED,6DAA6D;QAC7D,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,EAAE,yBAAyB,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC1H,CAAC;IAED,sCAAsC;IAC/B,KAAK,CAAC,aAAa,CAAC,OAA6B,EAAE,QAA+B;QAEvF,IAAI,iBAAiB,GAAG,KAAK,CAAC;QAC9B,MAAM,mBAAmB,GAAa,EAAE,CAAC;QAEzC,6EAA6E;QAC7E,MAAM,WAAW,GAAG,KAAK,EAAE,WAA8B,MAAM,EAAE,YAAqB,CAAC,EAAmB,EAAE;YAE1G,iEAAiE;YACjE,IAAG,iBAAiB,EAAE,CAAC;gBAErB,OAAO,CAAC,CAAC,CAAC;YACZ,CAAC;YAED,wCAAwC;YACxC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAE/E,wCAAwC;YACxC,IAAG,YAAY,KAAK,CAAC,CAAC,EAAE,CAAC;gBAEvB,iBAAiB,GAAG,IAAI,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBAEN,uEAAuE;gBACvE,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAEvC,IAAG,SAAS,KAAK,CAAC,EAAE,CAAC;oBAEnB,mBAAmB,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;gBAC7C,CAAC;YACH,CAAC;YAED,eAAe;YACf,OAAO,YAAY,CAAC;QACtB,CAAC,CAAC;QAEF,8FAA8F;QAC9F,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAE5G,6FAA6F;QAC7F,MAAM,eAAe,GAAG,cAAc,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAEvF,4BAA4B;QAC5B,MAAM,qBAAqB,GAAG,CAAC,MAAM,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;QAC1E,MAAM,iBAAiB,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvI,MAAM,oBAAoB,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,WAAW,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAE7I,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,6BAA6B,EAAE,CAAC;QAE5E,IAAG,CAAC,eAAe,EAAE,CAAC;YAEpB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,2BAA2B,EAAE,cAAc,CAAC,CAAC,CAAC,0FAA0F,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/J,CAAC;QAED,IAAI,UAAU,GAAG,IAAI,CAAC;QACtB,IAAI,QAAQ,GAAG,IAAI,CAAC;QAEpB,IAAG,eAAe,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YAE3D,qDAAqD;YACrD,UAAU,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,cAAc,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YAE9H,sDAAsD;YACtD,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;YAE1E,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAEnE,+DAA+D;YAC/D,IAAG,CAAC,QAAQ,EAAE,CAAC;gBAEb,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;QAED,4BAA4B;QAC5B,MAAM,eAAe,GAAG,CAAC,MAAM,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;QACpE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,6BAA6B,EAAE,CAAC;QAE5E,sFAAsF;QACtF,IAAG,iBAAiB,EAAE,CAAC;YAErB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAC/E,CAAC;QAED,MAAM,WAAW,GAAgB;YAE/B,OAAO,EAAE,OAAO,CAAC,aAAa;YAC9B,cAAc,EAAE,OAAO,CAAC,cAAc;YAEtC,gBAAgB,EAAE,OAAO,CAAC,KAAK,CAAC,eAAe;YAC/C,qBAAqB,EAAE,qBAAqB;YAC5C,oBAAoB,EAAE,oBAAoB;YAC1C,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI;YAC7B,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC3E,SAAS,EAAE,SAAS;YAEpB,eAAe,EAAE,eAAe;YAChC,UAAU,EAAE,UAAU;YACtB,mBAAmB,EAAE,mBAAmB;YACxC,QAAQ,EAAE,QAAQ;YAElB,gBAAgB,EAAE,OAAO,CAAC,KAAK,CAAC,eAAe;YAC/C,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI;YAC7B,eAAe,EAAE,eAAe;YAChC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC3E,SAAS,EAAE,SAAS;SACrB,CAAC;QAEF,kHAAkH;QAClH,oHAAoH;QACpH,qCAAqC;QACrC,MAAM,QAAQ,GAA0B;YAEtC,KAAK,EAAE;gBAEL,IAAI,EAAE,CAAC,eAAe,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,qBAAqB;gBAC3G,qCAAqC;gBACrC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ;gBAChC,qCAAqC;gBACrC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,SAAS;gBAClC,IAAI,EAAE,SAAS;aAChB;YAED,KAAK,EAAE;gBAEL,IAAI,EAAE,eAAe;gBACrB,qCAAqC;gBACrC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ;gBAChC,qCAAqC;gBACrC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,SAAS;gBAClC,IAAI,EAAE,SAAS;aAChB;SACF,CAAC;QAEF,sFAAsF;QACtF,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC;QACtD,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAChC,CAAC;IAED,+CAA+C;IACvC,KAAK,CAAC,WAAW,CAAC,OAA2B,EAAE,QAA+B;QAEpF,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC5D,MAAM,YAAY,GAAG,WAAW,CAAC,cAAc,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;QAE3E,sCAAsC;QACtC,IAAG,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;YAEhC,MAAM,YAAY,GAAG,qEAAqE,CAAC;YAE3F,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YAC7B,QAAQ,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC;YAEnE,OAAO;QACT,CAAC;QAED,qDAAqD;QACrD,EAAE;QACF,uDAAuD;QACvD,8DAA8D;QAC9D,kKAAkK;QAClK,iKAAiK;QACjK,mBAAmB;QACnB,2DAA2D;QAC3D,EAAE;QACF,iKAAiK;QACjK,0JAA0J;QAC1J,eAAe;QACf,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC;QACtD,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,oBAAoB,CAAC;YAC3J,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,KAAK,MAAM,CAAC,CAAC;QAEjD,8FAA8F;QAC9F,IAAI,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC;QAE/C,kGAAkG;QAClG,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAEjI,8IAA8I;QAC9I,IAAI,SAAS,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;QAEnJ,6DAA6D;QAC7D,IAAG,aAAa,EAAE,CAAC;YAEjB,+JAA+J;YAC/J,8HAA8H;YAC9H,SAAS,KAAK,IAAI,CAAC,aAAa,CAAC,QAAQ,CACvC,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,mBAAmB,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAC7F,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,mBAAmB,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAC9F,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,CACxE,CAAC;YAEF,6FAA6F;YAC7F,IAAG,aAAa,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,2BAA2B,GAAG,CAAC,CAAC,EAAE,CAAC;gBAE/E,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,2BAA2B,CAAC;YACvE,CAAC;iBAAM,IAAG,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,gBAAgB,GAAG,CAAC,CAAC,EAAE,CAAC;gBAE5E,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,gBAAgB,CAAC;YAC5D,CAAC;YAED,4HAA4H;YAC5H,IAAG,SAAS,IAAI,CAAC,aAAa,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC;gBAErE,aAAa,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;YACnD,CAAC;QACH,CAAC;aAAM,CAAC;YAEN,SAAS,KAAK,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACvI,CAAC;QAED,IAAG,CAAC,SAAS,EAAE,CAAC;YAEd,MAAM,YAAY,GAAG,uEAAuE,CAAC;YAE7F,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,4BAA4B,EAAE,YAAY,EACvD,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;YAEpH,QAAQ,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC;YAEnE,OAAO;QACT,CAAC;QAED,0JAA0J;QAC1J,oGAAoG;QACpG,EAAE;QACF,+JAA+J;QAC/J,oKAAoK;QACpK,kIAAkI;QAClI,EAAE;QACF,sKAAsK;QACtK,iDAAiD;QACjD,MAAM,QAAQ,GAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;YAC7G,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,mCAAmC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAE5F,mFAAmF;QACnF,gGAAgG;QAChG,qGAAqG;QACrG,6HAA6H;QAC7H,8FAA8F;QAC9F,kFAAkF;QAClF,MAAM,UAAU,GAAG;YAEjB,cAAc;YACd,UAAU;YACV,SAAS,EAAE,iBAAiB;YAC5B,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY;YAClC,YAAY,EAAE,QAAQ;YACtB,QAAQ,EAAE,WAAW;YACrB,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE;SACvC,CAAC;QAEF,IAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;YAEzC,+JAA+J;YAC/J,gGAAgG;YAChG,uEAAuE;YACvE,8GAA8G;YAC9G,6HAA6H;YAC7H,0EAA0E;YAC1E,8EAA8E;YAC9E,UAAU,CAAC,IAAI,CAEb,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,EACrF,IAAI,EAAE,KAAK,EACX,IAAI,EAAE,QAAQ,EACd,gBAAgB,EAAE,IAAI,EAAE,yDAAyD;YACjF,WAAW,EAAE,aAAa,EAC1B,WAAW,EAAE,GAAG,EAChB,wBAAwB,EAAE,OAAO,CAClC,CAAC;QACJ,CAAC;aAAM,CAAC;YAEN,wHAAwH;YACxH,mHAAmH;YACnH,uGAAuG;YACvG,yEAAyE;YACzE,UAAU,CAAC,IAAI,CAEb,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EACvC,YAAY,EAAE,QAAQ,EACtB,iBAAiB,EAAE,KAAK,EACxB,IAAI,EAAE,SAAS,CAAC,GAAG,CACpB,CAAC;QACJ,CAAC;QAED,wHAAwH;QACxH,yHAAyH;QACzH,uHAAuH;QACvH,uEAAuE;QACvE,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAEjC,mBAAmB;QACnB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,yEAAyE,EACrF,WAAW,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,EAAE,EAC3F,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC,EACnG,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,EAC7H,SAAS,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAEtI,qHAAqH;QACrH,IAAG,aAAa,EAAE,CAAC;YAEjB,kDAAkD;YAClD,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC;gBAElD,OAAO,EAAE,aAAa;gBACtB,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG;gBAC1B,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM;gBAC5B,WAAW,EAAE,4BAA4B;gBACzC,QAAQ,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG;gBAC/B,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK;gBAC1B,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO;gBAC9B,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK;aAC3B,CAAC,CAAC,CAAC;QACN,CAAC;aAAM,CAAC;YAEN,4HAA4H;YAC5H,EAAE;YACF,wEAAwE;YACxE,UAAU,CAAC,IAAI,CAEb,SAAS,EAAE,MAAM,CAClB,CAAC;YAEF,uEAAuE;YACvE,IAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;gBAEzC,4FAA4F;gBAC5F,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;QAED,gHAAgH;QAChH,UAAU,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;QAE1C,gDAAgD;QAChD,IAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YAEtC,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QACzD,CAAC;QAED,qDAAqD;QACrD,EAAE;QACF,qIAAqI;QACrI,0IAA0I;QAC1I,8EAA8E;QAC9E,kFAAkF;QAClF,0GAA0G;QAC1G,UAAU,CAAC,IAAI,CAEb,eAAe,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,EAC5C,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,QAAQ,EAAE,EACzC,IAAI,EAAE,KAAK,EACX,iBAAiB,EAAE,yBAAyB,EAC5C,kBAAkB,EAAE,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAC5D,SAAS,GAAG,WAAW,CAAC,OAAO,GAAG,GAAG,GAAG,WAAW,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,YAAY,GAAG,WAAW,CAAC,SAAS,CAAC,QAAQ,EAAE;YACxH,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAC9C,CAAC;QAEF,yIAAyI;QACzI,EAAE;QACF,sIAAsI;QACtI,yHAAyH;QACzH,uHAAuH;QACvH,uEAAuE;QACvE,+FAA+F;QAC/F,gFAAgF;QAChF,4EAA4E;QAC5E,uHAAuH;QACvH,oGAAoG;QACpG,uGAAuG;QACvG,kIAAkI;QAClI,0EAA0E;QAC1E,uHAAuH;QACvH,IAAG,WAAW,CAAC,eAAe,EAAE,CAAC;YAE/B,kCAAkC;YAClC,UAAU,CAAC,IAAI,CAEb,MAAM,EAAE,QAAQ,EAChB,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,EAClC,YAAY,EAAE,IAAI,EAClB,QAAQ,EAAE,gBAAgB,EAC1B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,GAAG,EACjD,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,GAAG,EACnD,UAAU,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE,GAAG,GAAG,EAC7D,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,EACvC,aAAa,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,CAClF,CAAC;YAEF,8CAA8C;YAC9C,IAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE,CAAC;gBAEvD,MAAM,SAAS,GAAG,EAAE,CAAC;gBAErB,mEAAmE;gBACnE,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,0BAA0B,CAAC,IAAI,iCAAiC,CAAC;gBAEhH,mDAAmD;gBACnD,IAAG,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC;oBAElC,KAAK,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC9D,CAAC;gBAED,wCAAwC;gBACxC,EAAE;gBACF,0CAA0C;gBAC1C,mCAAmC;gBACnC,+BAA+B;gBAC/B,kCAAkC;gBAClC,2CAA2C;gBAC3C,SAAS,CAAC,IAAI,CAAC,gCAAgC,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAEpE,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,6BAA6B,CAAC,CAAC;gBACpF,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,4BAA4B,CAAC,CAAC;gBAElF,qFAAqF;gBACrF,IAAG,QAAQ,KAAK,SAAS,EAAE,CAAC;oBAE1B,SAAS,CAAC,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACtD,CAAC;gBAED,IAAG,OAAO,KAAK,SAAS,EAAE,CAAC;oBAEzB,SAAS,CAAC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACpD,CAAC;gBAED,4CAA4C;gBAC5C,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/C,CAAC;YAED,+DAA+D;YAC/D,EAAE;YACF,wIAAwI;YACxI,0IAA0I;YAC1I,8EAA8E;YAC9E,kFAAkF;YAClF,0GAA0G;YAC1G,6JAA6J;YAC7J,kGAAkG;YAClG,UAAU,CAAC,IAAI,CAEb,eAAe,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,EAC5C,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,QAAQ,EAAE,EACzC,IAAI,EAAE,KAAK,EACX,iBAAiB,EAAE,yBAAyB,EAC5C,kBAAkB,EAAE,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAC5D,SAAS,GAAG,WAAW,CAAC,OAAO,GAAG,GAAG,GAAG,WAAW,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,YAAY,GAAG,WAAW,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,YAAY;gBACvI,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,CAChD,CAAC;QACJ,CAAC;QAED,mDAAmD;QACnD,IAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YAErD,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QAChD,CAAC;QAED,IAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YAEjC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;QAC9C,CAAC;QAED,sDAAsD;QACtD,MAAM,YAAY,GAAG,IAAI,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,UAAU,EACjF,CAAC,WAAW,CAAC,eAAe,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACjF,EAAE,cAAc,EAAE,WAAW,CAAC,cAAc,EAAE,IAAI,EAAE,WAAW,CAAC,eAAe,EAAE,EACnF,QAAQ,CAAC,CAAC;QAEZ,IAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;YAEzC,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;YAC/F,IAAI,eAAe,GAAG,KAAK,CAAC;YAE5B,iKAAiK;YACjK,4IAA4I;YAC5I,MAAM,kBAAkB,GAAG,KAAK,EAAE,OAAe,EAAiB,EAAE;gBAElE,IAAG,CAAC,eAAe,EAAE,CAAC;oBAEpB,IAAG,QAAQ,EAAE,CAAC;wBAEZ,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,IAAI,CAAC,MAAM,UAAU,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;wBAC3E,eAAe,GAAG,IAAI,CAAC;oBACzB,CAAC;yBAAM,CAAC;wBAEN,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,UAAU,CAAC,cAAc,EAAE,CAAC,CAAC;wBAC7D,eAAe,GAAG,IAAI,CAAC;oBACzB,CAAC;gBACH,CAAC;gBAED,6CAA6C;gBAC7C,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YACrC,CAAC,CAAC;YAEF,MAAM,aAAa,GAAG,GAAS,EAAE,CAAC,KAAK,YAAY,CAAC,aAAa,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;YAE/E,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YAEtC,6BAA6B;YAC7B,YAAY,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;gBAE5C,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;gBACzE,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;gBAC9C,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,4DAA4D;YAC5D,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;YAE7C,0BAA0B;YAC1B,IAAG,CAAC,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;gBAEtF,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;gBAC9C,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;gBAEvC,OAAO;YACT,CAAC;QACH,CAAC;QAED,yDAAyD;QACzD,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG;YAExC,MAAM,EAAE,CAAE,YAAY,CAAE;YACxB,UAAU,EAAE,WAAW,CAAC,UAAU;YAClC,mBAAmB,EAAE,WAAW,CAAC,mBAAmB;SACrD,CAAC;QAEF,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAE/C,2GAA2G;QAC3G,IAAG,CAAC,WAAW,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YAEzE,OAAO;QACT,CAAC;QAED,4EAA4E;QAC5E,sFAAsF;QACtF,EAAE;QACF,kBAAkB;QAClB,EAAE;QACF,6CAA6C;QAC7C,mDAAmD;QACnD,qCAAqC;QACrC,wCAAwC;QACxC,iEAAiE;QACjE,2EAA2E;QAC3E,0EAA0E;QAC1E,2HAA2H;QAC3H,mEAAmE;QACnE,sDAAsD;QACtD,MAAM,cAAc,GAAG;YAErB,KAAK;YACL,aAAa,GAAG,YAAY,GAAG,YAAY;YAC3C,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,iBAAiB;YAClD,OAAO,GAAG,YAAY,GAAG,GAAG,GAAG,WAAW,CAAC,OAAO;YAClD,OAAO;YACP,UAAU,GAAG,WAAW,CAAC,oBAAoB,CAAC,QAAQ,EAAE,GAAG,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE;YACpG,SAAS;YACT,6BAA6B,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,6CAAoC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE;YAC9J,oGAAoG;gBAClG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,6CAAoC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC;YACzG,4CAA4C,GAAG,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC;SACxF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,yIAAyI;QACzI,EAAE;QACF,yEAAyE;QACzE,sFAAsF;QACtF,oFAAoF;QACpF,qEAAqE;QACrE,uEAAuE;QACvE,yDAAyD;QACzD,uEAAuE;QACvE,kEAAkE;QAClE,2EAA2E;QAC3E,qGAAqG;QACrG,yGAAyG;QACzG,kDAAkD;QAClD,oEAAoE;QACpE,MAAM,oBAAoB,GAAG;YAE3B,cAAc;YACd,UAAU;YACV,qBAAqB,EAAE,0BAA0B;YACjD,IAAI,EAAE,KAAK;YACX,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,YAAY;YAC1C,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,OAAO;YACf,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY;YAClC,QAAQ,EAAE,gBAAgB;YAC1B,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,gBAAgB,CAAC,YAAY,CAAC,QAAQ,EAAE;YACtE,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,GAAG;YACnD,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,EAAE;YAClE,IAAI,EAAE,MAAM;YACZ,QAAQ;SACT,CAAC;QAEF,mDAAmD;QACnD,IAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YAErD,oBAAoB,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QAC1D,CAAC;QAED,IAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YAEjC,oBAAoB,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;QACxD,CAAC;QAED,IAAI,CAAC;YAEH,6BAA6B;YAC7B,IAAI,EAAE,GAAqB,IAAI,CAAC;YAChC,IAAI,cAAc,GAAG,KAAK,CAAC;YAC3B,IAAI,YAAoC,CAAC;YACzC,IAAI,YAAwB,CAAC;YAC7B,MAAM,SAAS,GAAG,GAAS,EAAE;gBAE3B,uBAAuB;gBACvB,IAAG,EAAE,EAAE,UAAU,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC;oBAEvC,EAAE,EAAE,SAAS,EAAE,CAAC;gBAClB,CAAC;YACH,CAAC,CAAC;YAEF,IAAG,WAAW,CAAC,QAAQ,EAAE,CAAC;gBAExB,gCAAgC;gBAChC,EAAE,GAAG,IAAI,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC,CAAC;gBACxE,cAAc,GAAG,IAAI,CAAC;gBAEtB,mDAAmD;gBACnD,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;oBAE1B,kEAAkE;oBAClE,IAAG,CAAE,KAA+B,CAAC,IAAI,KAAK,WAAW,CAAC;wBACxD,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,mEAAmE,CAAC,EAAE,CAAC;wBAEpG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,0DAA0D,EAAE,KAAK,CAAC,CAAC;oBACpF,CAAC;oBAED,mCAAmC;oBACnC,SAAS,EAAE,CAAC;gBACd,CAAC,CAAC,CAAC;gBAEH,kDAAkD;gBAClD,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,YAAY,GAAG,GAAS,EAAE;oBAEvC,qFAAqF;oBACrF,IAAG,CAAC,cAAc,EAAE,CAAC;wBAEnB,mCAAmC;wBACnC,SAAS,EAAE,CAAC;oBACd,CAAC;gBACH,CAAC,CAAC,CAAC;gBAEH,oCAAoC;gBACpC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;oBAErB,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;gBAChC,CAAC,CAAC,CAAC;YACL,CAAC;YAED,+EAA+E;YAC/E,IAAG,WAAW,CAAC,UAAU,EAAE,CAAC;gBAE1B,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;gBAE1C,4DAA4D;gBAC5D,IAAG,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;oBAErC,mCAAmC;oBACnC,SAAS,EAAE,CAAC;oBAEZ,OAAO;gBACT,CAAC;YACH,CAAC;YAED,0DAA0D;YAC1D,MAAM,iBAAiB,GAAG,IAAI,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;YAEpG,oDAAoD;YACpD,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAEvE,uDAAuD;YACvD,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;YAEpD,kBAAkB;YAClB,iBAAiB,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,YAAY,GAAG,CAAC,IAAY,EAAQ,EAAE;gBAEzE,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,KAAwB,EAAQ,EAAE;oBAEhD,4IAA4I;oBAC5I,IAAG,KAAK,EAAE,CAAC;wBAET,SAAS,EAAE,CAAC;oBACd,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,iEAAiE;YACjE,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;gBAEjD,yEAAyE;gBACzE,cAAc,GAAG,KAAK,CAAC;gBAEvB,mCAAmC;gBACnC,SAAS,EAAE,CAAC;gBAEZ,iBAAiB,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YACtD,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAM,KAAK,EAAE,CAAC;YAEd,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,mDAAmD,EAAE,KAAK,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;IAED,oCAAoC;IAC7B,KAAK,CAAC,mBAAmB,CAAC,OAAyB,EAAE,QAA+B;QAEzF,QAAO,OAAO,CAAC,IAAI,EAAE,CAAC;YAEpB;gBAEE,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBAE1C,MAAM;YAER;gBAEE,iEAAiE;gBACjE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,+EAA+E,EAC5F,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;gBAEpH,QAAQ,EAAE,CAAC;gBAEX,MAAM;YAER,0CAA6B;YAC7B;gBAEE,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBACzC,QAAQ,EAAE,CAAC;gBAEX,MAAM;QACV,CAAC;IACH,CAAC;IAED,wBAAwB;IACjB,KAAK,CAAC,UAAU,CAAC,SAAiB;QAEvC,IAAI,CAAC;YAEH,6CAA6C;YAC7C,IAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC;gBAEnC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;gBAElF,qCAAqC;gBACrC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC;gBAEpD,mBAAmB;gBACnB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;gBAElD,iCAAiC;gBACjC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACjG,CAAC;YAED,mIAAmI;YACnI,IAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC;gBAEnC,iCAAiC;gBACjC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACjG,CAAC;YAED,sBAAsB;YACtB,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YACvC,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QACzC,CAAC;QAAC,OAAM,KAAK,EAAE,CAAC;YAEd,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,6DAA6D,EAAE,KAAK,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;IAED,kCAAkC;IAC3B,KAAK,CAAC,QAAQ;QAEnB,KAAI,MAAM,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;YAEvD,4CAA4C;YAC5C,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,0BAA0B;IACnB,eAAe;QAEpB,IAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAEjC,YAAY,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YAC5C,IAAI,CAAC,wBAAwB,GAAG,SAAS,CAAC;QAC5C,CAAC;QAED,wIAAwI;QACxI,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAE9B,yIAAyI;QACzI,6EAA6E;QAC7E,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QAE5C,uDAAuD;QACvD,IAAG,IAAI,CAAC,iBAAiB,GAAG,OAAO,EAAE,CAAC;YAEpC,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC;QACnC,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,0HAA0H;YACzI,8HAA8H,EAC9H,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;QAElE,wEAAwE;QACxE,IAAG,IAAI,CAAC,sBAAsB,GAAG,EAAE,EAAE,CAAC;YAEpC,IAAI,CAAC,wBAAwB,GAAG,UAAU,CAAC,GAAG,EAAE;gBAE9C,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;gBAC3B,IAAI,CAAC,wBAAwB,GAAG,SAAS,CAAC;YAC5C,CAAC,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,8DAA8D;IAC9D,IAAW,SAAS;QAElB,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC;IAC9F,CAAC;CACF"}
1
+ {"version":3,"file":"protect-stream.js","sourceRoot":"","sources":["../src/protect-stream.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,3 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
1
  import { ProtectCamera } from "./devices/index.js";
4
2
  import { EventEmitter } from "node:events";
5
3
  export declare class ProtectTimeshiftBuffer extends EventEmitter {
@@ -7,11 +5,11 @@ export declare class ProtectTimeshiftBuffer extends EventEmitter {
7
5
  private _channel;
8
6
  private _isStarted;
9
7
  private _isTransmitting;
10
- private _lens;
8
+ private _lens?;
11
9
  private _segmentLength;
12
10
  private readonly accessory;
13
11
  private eventHandlers;
14
- private livestream;
12
+ private livestream?;
15
13
  private readonly log;
16
14
  private readonly nvr;
17
15
  private readonly protectCamera;
@@ -20,6 +18,7 @@ export declare class ProtectTimeshiftBuffer extends EventEmitter {
20
18
  private configureTimeshiftBuffer;
21
19
  start(channelId?: number, lens?: number | undefined): Promise<boolean>;
22
20
  stop(): boolean;
21
+ restart(): void;
23
22
  transmitStart(): Promise<boolean>;
24
23
  transmitStop(): boolean;
25
24
  isInitSegment(segment: Buffer): boolean;
@@ -2,7 +2,7 @@
2
2
  *
3
3
  * protect-timeshift.ts: UniFi Protect livestream timeshift buffer implementation to support HomeKit Secure Video.
4
4
  */
5
- import { sleep } from "homebridge-plugin-utils";
5
+ import { runWithTimeout } from "homebridge-plugin-utils";
6
6
  import { ProtectCameraPackage } from "./devices/index.js";
7
7
  import { EventEmitter } from "node:events";
8
8
  import { PROTECT_HKSV_SEGMENT_RESOLUTION } from "./settings.js";
@@ -31,14 +31,24 @@ export class ProtectTimeshiftBuffer extends EventEmitter {
31
31
  this.segmentCount = 1;
32
32
  this._channel = 0;
33
33
  this.eventHandlers = {};
34
- this._lens = (protectCamera instanceof ProtectCameraPackage) ? protectCamera.ufp.lenses[0].id : undefined;
35
- this.livestream = null;
34
+ this._lens = (protectCamera instanceof ProtectCameraPackage) ? protectCamera.ufp.lenses?.[0]?.id : undefined;
36
35
  this.log = protectCamera.log;
37
36
  this.nvr = protectCamera.nvr;
38
37
  this.protectCamera = protectCamera;
39
38
  // We use a small value for segment resolution in our timeshift buffer to ensure we provide an optimal timeshifting experience. It's a very small amount of additional
40
39
  // overhead for modern CPUs, but the result is a much better HKSV event recording experience.
41
40
  this._segmentLength = PROTECT_HKSV_SEGMENT_RESOLUTION;
41
+ // Now let's configure the timeshift buffer.
42
+ this.configureTimeshiftBuffer();
43
+ }
44
+ // Configure the timeshift buffer.
45
+ configureTimeshiftBuffer() {
46
+ // If the API connection has closed, let the user know.
47
+ this.eventHandlers.close = () => {
48
+ this.log.error("The livestream API connection was unexpectedly closed by the Protect controller: " +
49
+ "this is typically due to device restarts or issues with Protect controller firmware versions, and can be safely ignored. Will retry again shortly.");
50
+ };
51
+ // Listen for any segments sent by the UniFi Protect livestream in order to create our timeshift buffer.
42
52
  this.eventHandlers.segment = (segment) => {
43
53
  // If we're transmitting, send the segment as quickly as we can so FFmpeg can consume it.
44
54
  if (this.isTransmitting) {
@@ -52,17 +62,6 @@ export class ProtectTimeshiftBuffer extends EventEmitter {
52
62
  }
53
63
  };
54
64
  }
55
- // Configure the timeshift buffer.
56
- configureTimeshiftBuffer() {
57
- // If the livestream API has closed, stop what we're doing. XXX -- LEAK HERE AT CLOSE
58
- this.livestream?.on("close", this.eventHandlers.close = () => {
59
- this.log.error("The livestream API connection was unexpectedly closed by the Protect controller: " +
60
- "this is typically due to device restarts or issues with Protect controller firmware versions, and can be safely ignored. Will retry again shortly.");
61
- this.stop();
62
- });
63
- // First, we need to listen for any segments sent by the UniFi Protect livestream in order to create our timeshift buffer.
64
- this.livestream?.on("segment", this.eventHandlers.segment);
65
- }
66
65
  // Start the livestream and begin maintaining our timeshift buffer.
67
66
  async start(channelId = this._channel, lens = this._lens) {
68
67
  // Stop the timeshift buffer if it's already running.
@@ -86,14 +85,23 @@ export class ProtectTimeshiftBuffer extends EventEmitter {
86
85
  return false;
87
86
  }
88
87
  // Setup our listeners.
89
- this.configureTimeshiftBuffer();
88
+ this.livestream?.on("close", this.eventHandlers.close);
89
+ this.livestream?.on("segment", this.eventHandlers.segment);
90
90
  // Start the livestream and let's begin building our timeshift buffer.
91
91
  if (!(await this.protectCamera.livestream.start(channelId, lens, this.segmentLength))) {
92
+ // Something went wrong, let's cleanup our event handlers and we're done.
93
+ Object.keys(this.eventHandlers).map(eventName => this.livestream?.off(eventName, this.eventHandlers[eventName]));
92
94
  return false;
93
95
  }
94
96
  this._channel = channelId;
95
97
  this._lens = lens;
96
98
  this._isStarted = true;
99
+ // Add the initialization segment to the beginning of the timeshift buffer, if we have it. If we don't, we're either starting up or something's wrong with the API.
100
+ const initSegment = await this.getInitSegment();
101
+ if (!initSegment) {
102
+ this.stop();
103
+ return false;
104
+ }
97
105
  return true;
98
106
  }
99
107
  // Stop timeshifting the livestream.
@@ -107,25 +115,20 @@ export class ProtectTimeshiftBuffer extends EventEmitter {
107
115
  this._isStarted = false;
108
116
  return true;
109
117
  }
118
+ // Restart the timeshift buffer and underlying livestream.
119
+ restart() {
120
+ this.livestream?.emit("restart");
121
+ this._buffer = [];
122
+ }
110
123
  // Start transmitting our timeshift buffer.
111
124
  async transmitStart() {
112
125
  // If we haven't started the livestream, or it was closed for some reason, let's start it now.
113
- if (!this.isStarted && !(await this.start())) {
126
+ if ((!this.isStarted && !(await this.start())) || !this.livestream?.initSegment) {
114
127
  this.log.error("Unable to access the Protect livestream API: this is typically due to the Protect controller or camera rebooting. Will retry again.");
115
- await this.nvr.resetNvrConnection();
116
- return false;
117
- }
118
- // Add the initialization segment to the beginning of the timeshift buffer, if we have it. If we don't, FFmpeg will still be able to generate a valid fMP4 stream,
119
- // albeit a slightly less elegantly.
120
- const initSegment = await this.getInitSegment();
121
- if (!initSegment) {
122
- this.log.error("Unable to begin transmitting the stream to HomeKit Secure Video: unable to retrieve initialization data from the UniFi Protect controller. " +
123
- "This error is typically due to either an issue connecting to the Protect controller, or a problem on the Protect controller.");
124
- await this.nvr.resetNvrConnection();
125
128
  return false;
126
129
  }
127
130
  // Transmit everything we have queued up to get started as quickly as possible.
128
- this.emit("segment", Buffer.concat([initSegment, ...this._buffer]));
131
+ this.emit("segment", Buffer.concat([this.livestream.initSegment, ...this._buffer]));
129
132
  // Let our livestream listener know that we're now transmitting.
130
133
  this._isTransmitting = true;
131
134
  return true;
@@ -150,10 +153,10 @@ export class ProtectTimeshiftBuffer extends EventEmitter {
150
153
  return this.livestream.initSegment;
151
154
  }
152
155
  // We haven't seen it yet, wait for a couple of seconds and check an additional time.
153
- await sleep(2000);
154
- // We either have it or we don't - we can't afford to wait too long for this - HKSV is time-sensitive and we need to ensure we have a reasonable upper bound on how
155
- // long we wait for data from the Protect API.
156
- return this.livestream?.initSegment ?? null;
156
+ if (this.livestream) {
157
+ return runWithTimeout(this.livestream.getInitSegment(), 2000);
158
+ }
159
+ return null;
157
160
  }
158
161
  // Return the last duration milliseconds of the buffer, with an initialization segment.
159
162
  getLast(duration) {
@@ -1 +1 @@
1
- {"version":3,"file":"protect-timeshift.js","sourceRoot":"","sources":["../src/protect-timeshift.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protect-timeshift.js","sourceRoot":"","sources":["../src/protect-timeshift.ts"],"names":[],"mappings":"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"}
@@ -25,6 +25,7 @@ export declare enum ProtectReservedNames {
25
25
  SWITCH_HKSV_RECORDING = "HKSVRecordingSwitch",
26
26
  SWITCH_MOTION_SENSOR = "MotionSensorSwitch",
27
27
  SWITCH_MOTION_TRIGGER = "MotionSensorTrigger",
28
+ SWITCH_STATUS_LED = "StatusLedSwitch",
28
29
  SWITCH_UFP_RECORDING_ALWAYS = "UFPRecordingSwitch.always",
29
30
  SWITCH_UFP_RECORDING_DETECTIONS = "UFPRecordingSwitch.detections",
30
31
  SWITCH_UFP_RECORDING_NEVER = "UFPRecordingSwitch.never"
@@ -25,6 +25,7 @@ export var ProtectReservedNames;
25
25
  ProtectReservedNames["SWITCH_HKSV_RECORDING"] = "HKSVRecordingSwitch";
26
26
  ProtectReservedNames["SWITCH_MOTION_SENSOR"] = "MotionSensorSwitch";
27
27
  ProtectReservedNames["SWITCH_MOTION_TRIGGER"] = "MotionSensorTrigger";
28
+ ProtectReservedNames["SWITCH_STATUS_LED"] = "StatusLedSwitch";
28
29
  ProtectReservedNames["SWITCH_UFP_RECORDING_ALWAYS"] = "UFPRecordingSwitch.always";
29
30
  ProtectReservedNames["SWITCH_UFP_RECORDING_DETECTIONS"] = "UFPRecordingSwitch.detections";
30
31
  ProtectReservedNames["SWITCH_UFP_RECORDING_NEVER"] = "UFPRecordingSwitch.never";
@@ -1 +1 @@
1
- {"version":3,"file":"protect-types.js","sourceRoot":"","sources":["../src/protect-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,oBAAoB;AACpB,MAAM,UAAU,WAAW,CAAC,KAAa;IAEvC,OAAO,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;AACrE,CAAC;AAYD,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAE,CAAC;AAI1F,uBAAuB;AACvB,MAAM,CAAN,IAAY,oBAqBX;AArBD,WAAY,oBAAoB;IAE9B,mCAAmC;IACnC,+EAAuD,CAAA;IACvD,8FAAsE,CAAA;IACtE,wDAAgC,CAAA;IAChC,wEAAgD,CAAA;IAEhD,2BAA2B;IAC3B,6EAAqD,CAAA;IACrD,+EAAuD,CAAA;IACvD,qFAA6D,CAAA;IAC7D,yEAAiD,CAAA;IACjD,+EAAuD,CAAA;IACvD,mEAA2C,CAAA;IAC3C,qEAA6C,CAAA;IAC7C,mEAA2C,CAAA;IAC3C,qEAA6C,CAAA;IAC7C,iFAAyD,CAAA;IACzD,yFAAiE,CAAA;IACjE,+EAAuD,CAAA;AACzD,CAAC,EArBW,oBAAoB,KAApB,oBAAoB,QAqB/B"}
1
+ {"version":3,"file":"protect-types.js","sourceRoot":"","sources":["../src/protect-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,oBAAoB;AACpB,MAAM,UAAU,WAAW,CAAC,KAAa;IAEvC,OAAO,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;AACrE,CAAC;AAYD,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAE,CAAC;AAI1F,uBAAuB;AACvB,MAAM,CAAN,IAAY,oBAsBX;AAtBD,WAAY,oBAAoB;IAE9B,mCAAmC;IACnC,+EAAuD,CAAA;IACvD,8FAAsE,CAAA;IACtE,wDAAgC,CAAA;IAChC,wEAAgD,CAAA;IAEhD,2BAA2B;IAC3B,6EAAqD,CAAA;IACrD,+EAAuD,CAAA;IACvD,qFAA6D,CAAA;IAC7D,yEAAiD,CAAA;IACjD,+EAAuD,CAAA;IACvD,mEAA2C,CAAA;IAC3C,qEAA6C,CAAA;IAC7C,mEAA2C,CAAA;IAC3C,qEAA6C,CAAA;IAC7C,6DAAqC,CAAA;IACrC,iFAAyD,CAAA;IACzD,yFAAiE,CAAA;IACjE,+EAAuD,CAAA;AACzD,CAAC,EAtBW,oBAAoB,KAApB,oBAAoB,QAsB/B"}
@@ -11,8 +11,7 @@ export declare const PROTECT_FFMPEG_AUDIO_FILTER_HIGHPASS = 200;
11
11
  export declare const PROTECT_FFMPEG_AUDIO_FILTER_LOWPASS = 1000;
12
12
  export declare const PROTECT_FFMPEG_OPTIONS: never[];
13
13
  export declare const PROTECT_LIVESTREAM_API_IDR_INTERVAL = 5;
14
- export declare const PROTECT_HKSV_IDR_INTERVAL = 4;
15
- export declare const PROTECT_HKSV_MAX_EVENT_ERRORS = 3;
14
+ export declare const PROTECT_HKSV_IDR_INTERVAL = 1;
16
15
  export declare const PROTECT_HKSV_FRAGMENT_LENGTH = 4000;
17
16
  export declare const PROTECT_HKSV_SEGMENT_RESOLUTION = 100;
18
17
  export declare const PROTECT_HKSV_TIMESHIFT_BUFFER_MAXDURATION: number;
@@ -27,4 +26,3 @@ export declare const PROTECT_RPI_GPU_MINIMUM = 128;
27
26
  export declare const PROTECT_SNAPSHOT_CACHE_MAXAGE = 90;
28
27
  export declare const PROTECT_TRANSCODE_BITRATE = 2000;
29
28
  export declare const PROTECT_TRANSCODE_HIGH_LATENCY_BITRATE = 1000;
30
- export declare const PROTECT_TWOWAY_HEARTBEAT_INTERVAL = 3;
package/dist/settings.js CHANGED
@@ -29,9 +29,7 @@ export const PROTECT_FFMPEG_OPTIONS = [];
29
29
  // Protect's native I-frame interval can vary, but the livestream API seems to default to 5 seconds at most, though it depends on camera type and stream quality selected.
30
30
  export const PROTECT_LIVESTREAM_API_IDR_INTERVAL = 5;
31
31
  // HomeKit prefers a default I-frame interval of 4 seconds for HKSV event recordings.
32
- export const PROTECT_HKSV_IDR_INTERVAL = 4;
33
- // HomeKit Secure Video maximum event recording errors to accept before resetting a connection to the Protect controller.
34
- export const PROTECT_HKSV_MAX_EVENT_ERRORS = 3;
32
+ export const PROTECT_HKSV_IDR_INTERVAL = 1;
35
33
  // HomeKit Secure Video fragment length, in milliseconds. HomeKit only supports this value currently.
36
34
  export const PROTECT_HKSV_FRAGMENT_LENGTH = 4000;
37
35
  // HomeKit Secure Video segment resolution, in milliseconds. This defines the resolution of our buffer. It should never be less than 100ms or greater than 1500ms.
@@ -60,6 +58,4 @@ export const PROTECT_SNAPSHOT_CACHE_MAXAGE = 90;
60
58
  export const PROTECT_TRANSCODE_BITRATE = 2000;
61
59
  // Bitrate, in kilobits per second, to use when transcoding to high-latency clients.
62
60
  export const PROTECT_TRANSCODE_HIGH_LATENCY_BITRATE = 1000;
63
- // How often, in seconds, should we heartbeat FFmpeg in two-way audio sessions. This should be less than 5 seconds, which is FFmpeg's input timeout interval.
64
- export const PROTECT_TWOWAY_HEARTBEAT_INTERVAL = 3;
65
61
  //# sourceMappingURL=settings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,0BAA0B;AAC1B,MAAM,CAAC,MAAM,WAAW,GAAG,0BAA0B,CAAC;AAEtD,mCAAmC;AACnC,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;AAE7C,yFAAyF;AACzF,MAAM,CAAC,MAAM,mCAAmC,GAAG,GAAG,CAAC;AAEvD,0GAA0G;AAC1G,MAAM,CAAC,MAAM,iCAAiC,GAAG,EAAE,CAAC;AAEpD,mFAAmF;AACnF,MAAM,CAAC,MAAM,qCAAqC,GAAG,EAAE,CAAC;AAExD,6IAA6I;AAC7I,MAAM,CAAC,MAAM,uCAAuC,GAAG,IAAI,CAAC;AAE5D,oHAAoH;AACpH,MAAM,CAAC,MAAM,uCAAuC,GAAG,IAAI,CAAC;AAE5D,sHAAsH;AACtH,MAAM,CAAC,MAAM,iCAAiC,GAAG,IAAI,CAAC;AAEtD,mIAAmI;AACnI,MAAM,CAAC,MAAM,iCAAiC,GAAG,EAAE,CAAC;AAEpD,4GAA4G;AAC5G,MAAM,CAAC,MAAM,oCAAoC,GAAG,GAAG,CAAC;AAExD,2GAA2G;AAC3G,MAAM,CAAC,MAAM,mCAAmC,GAAG,IAAI,CAAC;AAExD,+DAA+D;AAC/D,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAEzC,0KAA0K;AAC1K,MAAM,CAAC,MAAM,mCAAmC,GAAG,CAAC,CAAC;AAErD,qFAAqF;AACrF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC;AAE3C,yHAAyH;AACzH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC;AAE/C,qGAAqG;AACrG,MAAM,CAAC,MAAM,4BAA4B,GAAG,IAAI,CAAC;AAEjD,kKAAkK;AAClK,MAAM,CAAC,MAAM,+BAA+B,GAAG,GAAG,CAAC;AAEnD,qJAAqJ;AACrJ,MAAM,CAAC,MAAM,yCAAyC,GAAG,mCAAmC,GAAG,IAAI,GAAG,CAAC,CAAC;AAExG,uEAAuE;AACvE,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC;AAE9C,+IAA+I;AAC/I,MAAM,CAAC,MAAM,kCAAkC,GAAG,EAAE,CAAC;AAErD,wJAAwJ;AACxJ,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,CAAC;AAE/C,0HAA0H;AAC1H,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAE1C,oGAAoG;AACpG,MAAM,CAAC,MAAM,+BAA+B,GAAG,EAAE,CAAC;AAElD,uGAAuG;AACvG,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAe,CAAC;AAElD,qDAAqD;AACrD,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAE9C,2EAA2E;AAC3E,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAE3C,wCAAwC;AACxC,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAE,CAAC;AAEhD,6EAA6E;AAC7E,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,CAAC;AAE9C,oFAAoF;AACpF,MAAM,CAAC,MAAM,sCAAsC,GAAG,IAAI,CAAC;AAE3D,6JAA6J;AAC7J,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,CAAC"}
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,0BAA0B;AAC1B,MAAM,CAAC,MAAM,WAAW,GAAG,0BAA0B,CAAC;AAEtD,mCAAmC;AACnC,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;AAE7C,yFAAyF;AACzF,MAAM,CAAC,MAAM,mCAAmC,GAAG,GAAG,CAAC;AAEvD,0GAA0G;AAC1G,MAAM,CAAC,MAAM,iCAAiC,GAAG,EAAE,CAAC;AAEpD,mFAAmF;AACnF,MAAM,CAAC,MAAM,qCAAqC,GAAG,EAAE,CAAC;AAExD,6IAA6I;AAC7I,MAAM,CAAC,MAAM,uCAAuC,GAAG,IAAI,CAAC;AAE5D,oHAAoH;AACpH,MAAM,CAAC,MAAM,uCAAuC,GAAG,IAAI,CAAC;AAE5D,sHAAsH;AACtH,MAAM,CAAC,MAAM,iCAAiC,GAAG,IAAI,CAAC;AAEtD,mIAAmI;AACnI,MAAM,CAAC,MAAM,iCAAiC,GAAG,EAAE,CAAC;AAEpD,4GAA4G;AAC5G,MAAM,CAAC,MAAM,oCAAoC,GAAG,GAAG,CAAC;AAExD,2GAA2G;AAC3G,MAAM,CAAC,MAAM,mCAAmC,GAAG,IAAI,CAAC;AAExD,+DAA+D;AAC/D,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAEzC,0KAA0K;AAC1K,MAAM,CAAC,MAAM,mCAAmC,GAAG,CAAC,CAAC;AAErD,qFAAqF;AACrF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC;AAE3C,qGAAqG;AACrG,MAAM,CAAC,MAAM,4BAA4B,GAAG,IAAI,CAAC;AAEjD,kKAAkK;AAClK,MAAM,CAAC,MAAM,+BAA+B,GAAG,GAAG,CAAC;AAEnD,qJAAqJ;AACrJ,MAAM,CAAC,MAAM,yCAAyC,GAAG,mCAAmC,GAAG,IAAI,GAAG,CAAC,CAAC;AAExG,uEAAuE;AACvE,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC;AAE9C,+IAA+I;AAC/I,MAAM,CAAC,MAAM,kCAAkC,GAAG,EAAE,CAAC;AAErD,wJAAwJ;AACxJ,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,CAAC;AAE/C,0HAA0H;AAC1H,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAE1C,oGAAoG;AACpG,MAAM,CAAC,MAAM,+BAA+B,GAAG,EAAE,CAAC;AAElD,uGAAuG;AACvG,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAe,CAAC;AAElD,qDAAqD;AACrD,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAE9C,2EAA2E;AAC3E,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAE3C,wCAAwC;AACxC,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAE,CAAC;AAEhD,6EAA6E;AAC7E,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,CAAC;AAE9C,oFAAoF;AACpF,MAAM,CAAC,MAAM,sCAAsC,GAAG,IAAI,CAAC"}