@ckeditor/ckeditor5-source-editing 0.0.0-nightly-20241216.0 → 0.0.0-nightly-20241218.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.
package/dist/index.js CHANGED
@@ -267,34 +267,25 @@ const COMMAND_FORCE_DISABLE_ID = 'SourceEditingMode';
267
267
  * {@glink api/source-editing package page}.
268
268
  */ class SourceEditing extends Plugin {
269
269
  /**
270
- * @inheritDoc
271
- */ static get pluginName() {
270
+ * @inheritDoc
271
+ */ static get pluginName() {
272
272
  return 'SourceEditing';
273
273
  }
274
274
  /**
275
- * @inheritDoc
276
- */ static get isOfficialPlugin() {
275
+ * @inheritDoc
276
+ */ static get isOfficialPlugin() {
277
277
  return true;
278
278
  }
279
279
  /**
280
- * @inheritDoc
281
- */ static get requires() {
280
+ * @inheritDoc
281
+ */ static get requires() {
282
282
  return [
283
283
  PendingActions
284
284
  ];
285
285
  }
286
286
  /**
287
- * The element replacer instance used to replace the editing roots with the wrapper elements containing the document source.
288
- */ _elementReplacer;
289
- /**
290
- * Maps all root names to wrapper elements containing the document source.
291
- */ _replacedRoots;
292
- /**
293
- * Maps all root names to their document data.
294
- */ _dataFromRoots;
295
- /**
296
- * @inheritDoc
297
- */ constructor(editor){
287
+ * @inheritDoc
288
+ */ constructor(editor){
298
289
  super(editor);
299
290
  this.set('isSourceEditingMode', false);
300
291
  this._elementReplacer = new ElementReplacer();
@@ -303,8 +294,8 @@ const COMMAND_FORCE_DISABLE_ID = 'SourceEditingMode';
303
294
  editor.config.define('sourceEditing.allowCollaborationFeatures', false);
304
295
  }
305
296
  /**
306
- * @inheritDoc
307
- */ init() {
297
+ * @inheritDoc
298
+ */ init() {
308
299
  this._checkCompatibility();
309
300
  const editor = this.editor;
310
301
  const t = editor.locale.t;
@@ -352,8 +343,8 @@ const COMMAND_FORCE_DISABLE_ID = 'SourceEditingMode';
352
343
  });
353
344
  }
354
345
  /**
355
- * Updates the source data in all hidden editing roots.
356
- */ updateEditorData() {
346
+ * Updates the source data in all hidden editing roots.
347
+ */ updateEditorData() {
357
348
  const editor = this.editor;
358
349
  const data = {};
359
350
  for (const [rootName, domSourceEditingElementWrapper] of this._replacedRoots){
@@ -380,17 +371,17 @@ const COMMAND_FORCE_DISABLE_ID = 'SourceEditingMode';
380
371
  const allowCollaboration = editor.config.get('sourceEditing.allowCollaborationFeatures');
381
372
  if (!allowCollaboration && editor.plugins.has('RealTimeCollaborativeEditing')) {
382
373
  /**
383
- * Source editing feature is not fully compatible with real-time collaboration,
384
- * and using it may lead to data loss. Please read
385
- * {@glink features/source-editing#limitations-and-incompatibilities source editing feature guide} to learn more.
386
- *
387
- * If you understand the possible risk of data loss, you can enable the source editing
388
- * by setting the
389
- * {@link module:source-editing/sourceeditingconfig~SourceEditingConfig#allowCollaborationFeatures}
390
- * configuration flag to `true`.
391
- *
392
- * @error source-editing-incompatible-with-real-time-collaboration
393
- */ throw new CKEditorError('source-editing-incompatible-with-real-time-collaboration', null);
374
+ * Source editing feature is not fully compatible with real-time collaboration,
375
+ * and using it may lead to data loss. Please read
376
+ * {@glink features/source-editing#limitations-and-incompatibilities source editing feature guide} to learn more.
377
+ *
378
+ * If you understand the possible risk of data loss, you can enable the source editing
379
+ * by setting the
380
+ * {@link module:source-editing/sourceeditingconfig~SourceEditingConfig#allowCollaborationFeatures}
381
+ * configuration flag to `true`.
382
+ *
383
+ * @error source-editing-incompatible-with-real-time-collaboration
384
+ */ throw new CKEditorError('source-editing-incompatible-with-real-time-collaboration', null);
394
385
  }
395
386
  const collaborationPluginNamesToWarn = [
396
387
  'CommentsEditing',
@@ -411,18 +402,18 @@ const COMMAND_FORCE_DISABLE_ID = 'SourceEditingMode';
411
402
  }
412
403
  }
413
404
  /**
414
- * Creates source editing wrappers that replace each editing root. Each wrapper contains the document source from the corresponding
415
- * root.
416
- *
417
- * The wrapper element contains a textarea and it solves the problem, that the textarea element cannot auto expand its height based on
418
- * the content it contains. The solution is to make the textarea more like a plain div element, which expands in height as much as it
419
- * needs to, in order to display the whole document source without scrolling. The wrapper element is a parent for the textarea and for
420
- * the pseudo-element `::after`, that replicates the look, content, and position of the textarea. The pseudo-element replica is hidden,
421
- * but it is styled to be an identical visual copy of the textarea with the same content. Then, the wrapper is a grid container and both
422
- * of its children (the textarea and the `::after` pseudo-element) are positioned within a CSS grid to occupy the same grid cell. The
423
- * content in the pseudo-element `::after` is set in CSS and it stretches the grid to the appropriate size based on the textarea value.
424
- * Since both children occupy the same grid cell, both have always the same height.
425
- */ _showSourceEditing() {
405
+ * Creates source editing wrappers that replace each editing root. Each wrapper contains the document source from the corresponding
406
+ * root.
407
+ *
408
+ * The wrapper element contains a textarea and it solves the problem, that the textarea element cannot auto expand its height based on
409
+ * the content it contains. The solution is to make the textarea more like a plain div element, which expands in height as much as it
410
+ * needs to, in order to display the whole document source without scrolling. The wrapper element is a parent for the textarea and for
411
+ * the pseudo-element `::after`, that replicates the look, content, and position of the textarea. The pseudo-element replica is hidden,
412
+ * but it is styled to be an identical visual copy of the textarea with the same content. Then, the wrapper is a grid container and both
413
+ * of its children (the textarea and the `::after` pseudo-element) are positioned within a CSS grid to occupy the same grid cell. The
414
+ * content in the pseudo-element `::after` is set in CSS and it stretches the grid to the appropriate size based on the textarea value.
415
+ * Since both children occupy the same grid cell, both have always the same height.
416
+ */ _showSourceEditing() {
426
417
  const editor = this.editor;
427
418
  const editingView = editor.editing.view;
428
419
  const model = editor.model;
@@ -468,8 +459,8 @@ const COMMAND_FORCE_DISABLE_ID = 'SourceEditingMode';
468
459
  this._focusSourceEditing();
469
460
  }
470
461
  /**
471
- * Restores all hidden editing roots and sets the source data in them.
472
- */ _hideSourceEditing() {
462
+ * Restores all hidden editing roots and sets the source data in them.
463
+ */ _hideSourceEditing() {
473
464
  const editor = this.editor;
474
465
  const editingView = editor.editing.view;
475
466
  this.updateEditorData();
@@ -484,8 +475,8 @@ const COMMAND_FORCE_DISABLE_ID = 'SourceEditingMode';
484
475
  editingView.focus();
485
476
  }
486
477
  /**
487
- * Focuses the textarea containing document source from the first editing root.
488
- */ _focusSourceEditing() {
478
+ * Focuses the textarea containing document source from the first editing root.
479
+ */ _focusSourceEditing() {
489
480
  const editor = this.editor;
490
481
  const [domSourceEditingElementWrapper] = this._replacedRoots.values();
491
482
  const textarea = domSourceEditingElementWrapper.querySelector('textarea');
@@ -497,8 +488,8 @@ const COMMAND_FORCE_DISABLE_ID = 'SourceEditingMode';
497
488
  textarea.focus();
498
489
  }
499
490
  /**
500
- * Disables all commands.
501
- */ _disableCommands() {
491
+ * Disables all commands.
492
+ */ _disableCommands() {
502
493
  const editor = this.editor;
503
494
  for (const command of editor.commands.commands()){
504
495
  command.forceDisabled(COMMAND_FORCE_DISABLE_ID);
@@ -509,8 +500,8 @@ const COMMAND_FORCE_DISABLE_ID = 'SourceEditingMode';
509
500
  }
510
501
  }
511
502
  /**
512
- * Clears forced disable for all commands, that was previously set through {@link #_disableCommands}.
513
- */ _enableCommands() {
503
+ * Clears forced disable for all commands, that was previously set through {@link #_disableCommands}.
504
+ */ _enableCommands() {
514
505
  const editor = this.editor;
515
506
  for (const command of editor.commands.commands()){
516
507
  command.clearForceDisabled(COMMAND_FORCE_DISABLE_ID);
@@ -521,10 +512,10 @@ const COMMAND_FORCE_DISABLE_ID = 'SourceEditingMode';
521
512
  }
522
513
  }
523
514
  /**
524
- * Adds or removes the `readonly` attribute from the textarea from all roots, if document source mode is active.
525
- *
526
- * @param isReadOnly Indicates whether all textarea elements should be read-only.
527
- */ _handleReadOnlyMode(isReadOnly) {
515
+ * Adds or removes the `readonly` attribute from the textarea from all roots, if document source mode is active.
516
+ *
517
+ * @param isReadOnly Indicates whether all textarea elements should be read-only.
518
+ */ _handleReadOnlyMode(isReadOnly) {
528
519
  if (!this.isSourceEditingMode) {
529
520
  return;
530
521
  }
@@ -533,17 +524,17 @@ const COMMAND_FORCE_DISABLE_ID = 'SourceEditingMode';
533
524
  }
534
525
  }
535
526
  /**
536
- * Checks, if the plugin is allowed to handle the source editing mode by itself. Currently, the source editing mode is supported only
537
- * for the {@link module:editor-classic/classiceditor~ClassicEditor classic editor}.
538
- */ _isAllowedToHandleSourceEditingMode() {
527
+ * Checks, if the plugin is allowed to handle the source editing mode by itself. Currently, the source editing mode is supported only
528
+ * for the {@link module:editor-classic/classiceditor~ClassicEditor classic editor}.
529
+ */ _isAllowedToHandleSourceEditingMode() {
539
530
  const editor = this.editor;
540
531
  const editable = editor.ui.view.editable;
541
532
  // Checks, if the editor's editable belongs to the editor's DOM tree.
542
533
  return editable && !editable.hasExternalElement;
543
534
  }
544
535
  /**
545
- * If any {@link module:ui/dialog/dialogview~DialogView editor dialog} is currently visible, hide it.
546
- */ _hideVisibleDialog() {
536
+ * If any {@link module:ui/dialog/dialogview~DialogView editor dialog} is currently visible, hide it.
537
+ */ _hideVisibleDialog() {
547
538
  if (this.editor.plugins.has('Dialog')) {
548
539
  const dialogPlugin = this.editor.plugins.get('Dialog');
549
540
  if (dialogPlugin.isOpen) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["index.js","../src/utils/formathtml.ts","../src/sourceediting.ts"],"names":["formatHtml","input","elementsToFormat","name","isVoid","elementNamesToFormat","map","element","join","lines","replace","RegExp","split","indentCount","isPreformattedLine","filter","line","length","isPreformattedBlockLine","isNonVoidOpeningTag","indentLine","isClosingTag","some","test","indentChar","repeat","Math","max","isPreviousLinePreFormatted","COMMAND_FORCE_DISABLE_ID","SourceEditing","Plugin","pluginName","isOfficialPlugin","requires","PendingActions","constructor","editor","set","_elementReplacer","ElementReplacer","_replacedRoots","Map","_dataFromRoots","config","define","_checkCompatibility","t","locale","ui","componentFactory","add","buttonView","_createButton","ButtonView","label","icon","sourceEditingIcon","tooltip","class","MenuBarMenuListItemButtonView","role","_isAllowedToHandleSourceEditingMode","on","evt","isSourceEditingMode","_hideVisibleDialog","_showSourceEditing","_disableCommands","_hideSourceEditing","_enableCommands","isEnabled","_handleReadOnlyMode","listenTo","isReadOnly","data","updateEditorData","priority","rootName","domSourceEditingElementWrapper","oldData","get","newData","dataset","value","Object","keys","batchType","isUndoable","suppressErrorInCollaboration","allowCollaboration","plugins","has","CKEditorError","collaborationPluginNamesToWarn","console","warn","editingView","editing","view","model","change","writer","setSelection","removeSelectionAttribute","document","selection","getAttributeKeys","domRootElement","domRoots","formatSource","domSourceEditingElementTextarea","createElement","ownerDocument","rows","setSelectionRange","addEventListener","update","viewRoot","getRoot","addClass","setEditableElement","_focusSourceEditing","removeClass","restore","clear","focus","values","textarea","querySelector","isFocused","command","commands","forceDisabled","clearForceDisabled","readOnly","editable","hasExternalElement","dialogPlugin","isOpen","hide","ButtonClass","withText","isToggleable","bind","to","isEditorReadOnly","hasAnyPendingActions","isHtml","startsWith"],"mappings":"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C,CCjDKC,MAAQ,CAAA,CAAA;AAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC5B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ADmDF,CCnDID,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAM,CAAA,CAAA,CAAA,EAAA,CAAA;ADoDV,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CCpDKC,MAAQ,CAAA,CAAA;AAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC5B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ADsDF,CCtDID,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAM,CAAA,CAAA,CAAA,EAAA,CAAA;ADuDV,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CCvDKC,MAAQ,CAAA,CAAA;AAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC5B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ADyDF,CCzDID,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAM,CAAA,CAAA,CAAA,EAAA,CAAA;AD0DV,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CC1DKC,MAAQ,CAAA,CAAA;AAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC5B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AD4DF,CC5DID,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAM,CAAA,CAAA,CAAA,EAAA,CAAA;AD6DV,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CC7DKC,MAAQ,CAAA,CAAA;AAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC5B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AD+DF,CC/DID,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAM,CAAA,CAAA,CAAA,MAAA,CAAA;ADgEV,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CChESC,MAAQ,CAAA,CAAA;AAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAChC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ADkEF,CClEID,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAM,CAAA,CAAA,CAAA,MAAA,CAAA;ADmEV,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CCnESC,MAAQ,CAAA,CAAA;AAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAChC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ADqEF,CCrEID,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAM,CAAA,CAAA,CAAA,EAAA,CAAA;ADsEV,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CCtEKC,MAAQ,CAAA,CAAA;AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC3B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ADwEF,CCxEID,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAM,CAAA,CAAA,CAAA,EAAA,CAAA;ADyEV,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CCzEKC,MAAQ,CAAA,CAAA;AAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC5B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AD2EF,CC3EID,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAM,CAAA,CAAA,CAAA,IAAA,CAAA;AD4EV,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CC5EOC,MAAQ,CAAA,CAAA;AAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC9B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AD8EF,CC9EID,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAM,CAAA,CAAA,CAAA,GAAA,CAAA;AD+EV,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CC/EMC,MAAQ,CAAA,CAAA;AAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC7B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ADiFF,CCjFID,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAM,CAAA,CAAA,CAAA,EAAA,CAAA;ADkFV,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CClFKC,MAAQ,CAAA,CAAA;AAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC5B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ADoFF,CCpFID,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAM,CAAA,CAAA,CAAA,CAAA,CAAA;ADqFV,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CCrFIC,MAAQ,CAAA,CAAA;AAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC3B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ADuFF,CCvFID,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAM,CAAA,CAAA,CAAA,OAAA,CAAA;ADwFV,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CCxFUC,MAAQ,CAAA,CAAA;AAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACjC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AD0FF,CC1FID,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAM,CAAA,CAAA,CAAA,KAAA,CAAA;AD2FV,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CC3FQC,MAAQ,CAAA,CAAA;AAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC/B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AD6FF,CC7FID,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAM,CAAA,CAAA,CAAA,KAAA,CAAA;AD8FV,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CC9FQC,MAAQ,CAAA,CAAA;AAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC/B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ADgGF,CChGID,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAM,CAAA,CAAA,CAAA,EAAA,CAAA;ADiGV,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CCjGKC,MAAQ,CAAA,CAAA;AAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC5B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ADmGF,CCnGID,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAM,CAAA,CAAA,CAAA,EAAA,CAAA;ADoGV,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CCpGKC,MAAQ,CAAA,CAAA;AAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC5B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ADsGF,CCtGID,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAM,CAAA,CAAA,CAAA,KAAA,CAAA;ADuGV,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CCvGQC,MAAQ,CAAA,CAAA;AAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC/B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ADyGF,CCzGID,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAM,CAAA,CAAA,CAAA,EAAA,CAAA;AD0GV,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CC1GKC,MAAQ,CAAA,CAAA;AAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC5B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AD4GF,CC5GID,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAM,CAAA,CAAA,CAAA,EAAA,CAAA;AD6GV,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CC7GKC,MAAQ,CAAA,CAAA;AAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC5B,CAAA,CAAA,CAAA,CAAA,CAAA;AD+GF,CAAC,CAAC,CAAC,CC7GF,KAAA,CAAMC,oBAAAA,CAAAA,CAAAA,CAAuBH,gBAAiBI,CAAAA,GAAG,CAAEC,CAAAA,OAAAA,CAAWA,CAAAA,CAAAA,OAAQJ,CAAAA,IAAI,CAAGK,CAAAA,IAAI,CAAE,CAAA,CAAA,CAAA,CAAA;AD8GpF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM;AACpG,CC5GC,CAAA,CAAA,CAAA,KAAA,CAAMC,KAAAA,CAAAA,CAAAA,CAAQR,KACb,CAAA,CAAA,CAAA,GAAA,CAAA,GAAA,CAAA,IAAA,CAAA,MAAA,CAAA,GAAA,CAAA,KAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA;AD4GF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK;AC1GxFS,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,OAAO,CAAE,GAAA,CAAIC,MAAQ,CAAA,CAAC,CAAI,CAAA,CAAA,CAAA,CAAA,CAAGN,oBAAsB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAC,CAAA,CAAE,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACvE,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,GAAA,CAAA,GAAA,CAAA,EAAA,CAAA,IAAA,CAAA,EAAA,CAAA,KAAA,CAAA,MAAA,CAAA,UAAA,CAAA,WAAA,CAAA,MAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA;AD2GF,CAAC,CAAC,CAAC,CAAC,CC1GDK,OAAO,CAAE,CAAc,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACxB,CAAA,CAAA,CAAA,MAAA,CAAA,KAAA,CAAA,MAAA,CAAA,IAAA,CAAA,KAAA,CAAA,CAAA,KAAA,CAAA,KAAA,CAAA,IAAA,CAAA,MAAA,CAAA,EAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,EAAA,CAAA,IAAA,CAAA,CAAA,CAAA,IAAA;AACCE,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,KAAK,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA;AAET,CAAA,CAAA,CAAA,CAAA,GAAA,CAAIC,WAAc,CAAA,CAAA,CAAA,CAAA;AAClB,CAAA,CAAA,CAAA,CAAA,GAAA,CAAIC,kBAAiE,CAAA,CAAA,CAAA,KAAA;ADyGtE,CAAC,CAAC,CAAC,CCvGF,MAAA,CAAOL,KAAAA,CACLM,MAAM,CAAEC,CAAAA,IAAAA,CAAAA,CAAAA,CAAQA,IAAAA,CAAKC,MAAM,CAAA,CAC3BX,GAAG,CAAEU,CAAAA,IAAAA,CAAAA,CAAAA,CAAAA;AACLF,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,kBAAAA,CAAqBI,CAAAA,CAAAA,uBAAAA,CAAyBF,IAAMF,CAAAA,CAAAA,kBAAAA,CAAAA;ADsGvD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CCpGJ,EAAA,CAAA,CAAKK,mBAAAA,CAAqBH,IAAAA,CAAMd,CAAAA,gBAAqB,CAAA,CAAA,CAAA;AACpD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA,CAAOkB,UAAAA,CAAYJ,IAAMH,CAAAA,CAAAA,WAAAA,CAAAA,CAAAA,CAAAA;AAC1B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ADqGH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CCnGJ,EAAA,CAAA,CAAKQ,YAAAA,CAAcL,IAAAA,CAAMd,CAAAA,gBAAqB,CAAA,CAAA,CAAA;ADoGjD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CCnGP,MAAA,CAAOkB,UAAAA,CAAYJ,IAAAA,CAAM,CAAA,CAAA,CAAEH,WAAAA,CAAAA;AAC5B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ADoGH,CClGG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAKC,kBAAAA,CAAuB,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA,CAAYA,CAAAA,CAAAA,CAAAA,CAAAA,kBAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAuB,CAAA,IAAA,CAAS,CAAA,CAAA;ADmG3E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CClGP,MAAA,CAAOE,IAAAA;AACR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA,CAAOI,UAAAA,CAAYJ,IAAMH,CAAAA,CAAAA,WAAAA,CAAAA;AAC1B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACCL,IAAI,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA;AACT;AAEA,CAAA,CAAA;ADgGA,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS;AACjF,CAAC;AACD,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK;AAC9B,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS;AC9FlD,CAAA,CAAA,CAAA,CACD,QAAA,CAASW,mBAAAA,CAAqBH,IAAY,CAAA,CAAEd,gBAAwC,CAAA,CAAA;AD+FpF,CAAC,CAAC,CAAC,CC9FF,MAAA,CAAOA,gBAAAA,CAAiBoB,IAAI,CAAEf,CAAAA,OAAAA,CAAAA,CAAAA,CAAAA;AD+F/B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CC9FL,EAAKA,CAAAA,CAAAA,OAAAA,CAAQH,MAAM,CAAG,CAAA;AD+FxB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CC9FR,MAAA,CAAO,KAAA;AACR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAK,CAAC,GAAIO,CAAAA,MAAQ,CAAA,CAAC,CAAC,CAAA,CAAGJ,OAAAA,CAAQJ,IAAI,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAC,CAAGoB,CAAAA,IAAI,CAAEP,IAAS,CAAA,CAAA,CAAA;AD8FlE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CC7FR,MAAA,CAAO,KAAA;AACR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AD8FF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CC5FL,MAAA,CAAO,IAAA;AACR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD;AAEA,CAAA,CAAA;AD4FA,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG;AAC1C,CAAC;AACD,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK;AAC9B,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS;AC1FlD,CAAA,CAAA,CAAA,CACD,QAAA,CAASK,YAAAA,CAAcL,IAAY,CAAA,CAAEd,gBAAwC,CAAA,CAAA;AD2F7E,CAAC,CAAC,CAAC,CC1FF,MAAA,CAAOA,gBAAAA,CAAiBoB,IAAI,CAAEf,CAAAA,OAAAA,CAAAA,CAAAA,CAAAA;AAC7B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA,CAAO,GAAII,CAAAA,MAAAA,CAAQ,CAAC,CAAA,CAAE,CAAA,CAAGJ,OAAAA,CAAQJ,IAAI,CAAE,CAAC,CAAC,CAAGoB,CAAAA,IAAI,CAAEP,IAAAA,CAAAA;AACnD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD;AAEA,CAAA,CAAA;AD0FA,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU;AACrD,CAAC;AACD,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM;AAC7B,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW;AACjE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO;ACxFjE,CACD,CAAA,CAAA,CAAA,QAAA,CAASI,UAAYJ,CAAAA,IAAY,CAAA,CAAEH,WAAmB,CAAEW,CAAAA,UAAAA,CAAqB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA;ADyFnF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK;AACvF,CCxFC,CAAA,CAAA,CAAA,MAAA,CAAO,CAAA,CAAIA,CAAAA,UAAAA,CAAWC,MAAM,CAAEC,IAAAA,CAAKC,GAAG,CAAE,CAAGd,CAAAA,CAAAA,WAAAA,CAAAA,CAAAA,CAAAA,CAAoBG,CAAAA,IAAO,CAAA,CAAA;AACvE;AAEA,CAAA,CAAA;ADwFA,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK;AAClE,CAAC;AACD,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK;AAC5B,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,0BAA0B,CAAC,WAAW,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;ACtFvG,CAAA,CAAA,CAAA,CACD,QAAA,CAASE,uBAAAA,CAAyBF,IAAY,CAAA,CAAEY,0BAA+D,CAAA,CAAA;AAC9G,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAK,GAAIjB,CAAAA,MAAAA,CAAQ,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAiBY,CAAAA,CAAAA,IAAI,CAAEP,IAAS,CAAA,CAAA,CAAA;ADuFlD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CCtFL,MAAA,CAAO,CAAA,KAAA,CAAA;AACR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,IAAA,CAAA,EAAA,CAAA,CAAK,GAAIL,CAAAA,MAAAA,CAAQ,CAAA,CAAA,CAAA,GAAA,CAAA,CAAWY,CAAAA,CAAAA,IAAI,CAAEP,IAAS,CAAA,CAAA,CAAA;ADuFnD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CCtFL,MAAA,CAAO,CAAA,IAAA,CAAA;AACR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAO,EAAA,CAAA,CAAKY,0BAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAA+B,CAAA,KAAA,CAAWA,CAAAA,CAAAA,CAAAA,CAAAA,0BAAAA,CAA+B,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA,CAAW,CAAA,CAAA;ADuFjG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CCtFL,MAAA,CAAO,CAAA,MAAA,CAAA;ADuFT,CAAC,CAAC,CAAC,CAAC,CCtFI,CAAA,IAAA,CAAA;ADuFR,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CCtFL,MAAA,CAAO,KAAA;AACR,CAAA,CAAA,CAAA,CAAA;AACD;;ADwFA,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;;AE1OntB,KAAMC,CAAAA,wBAA2B,CAAA,CAAA,CAAA,CAAA,iBAAA,CAAA;AAEjC,CAAA,CAAA;AF4OA,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO;AAC7B,CAAC;AACD,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ;AAC1E,CAAC;AACD,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC;AAChH,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;AAC3C,CAAC,CAAC,CAAC,CE1OY,KAAMC,CAAAA,aAAsBC,CAAAA,OAAAA,CAAAA,MAAAA,CAAAA;AAC1C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AF2OD,CAAC,CAAC,CAAC,CAAC,CAAC;AEzOH,CACD,CAAA,CAAA,CAAA,CAAA,MAAA,CAAA,GAAA,CAAkBC,UAAa,CAAA,CAAA,CAAA;AF0OhC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CEzOL,MAAA,CAAO,CAAA,aAAA,CAAA;AACR,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AFyOD,CAAC,CAAC,CAAC,CAAC,CAAC;AEvOH,CACD,CAAA,CAAA,CAAA,CAAA,MAAA,CAAA,GAAA,CAA2BC,gBAAyB,CAAA,CAAA,CAAA;AFwOrD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CEvOL,MAAA,CAAO,IAAA;AACR,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AFuOD,CAAC,CAAC,CAAC,CAAC,CAAC;AErOH,CACD,CAAA,CAAA,CAAA,CAAA,MAAA,CAAA,GAAA,CAAkBC,QAAW,CAAA,CAAA,CAAA;AFsO9B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CErOL,MAAO,CAAA;AAAEC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAAgB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC1B,CAAA,CAAA,CAAA,CAAA;AASA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AFgOD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM;AE9N1H,CAAA,CAAA,CAAA,CAAA,CACD,gBAA0C;AAE1C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AF8ND,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM;AE5NxE,CAAA,CAAA,CAAA,CAAA,CACD,cAAiD;AAEjD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AF4ND,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI;AE1N5C,CAAA,CAAA,CAAA,CAAA,CACD,cAA4C;AAE5C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AF0ND,CAAC,CAAC,CAAC,CAAC,CAAC;AACL,CExNCC,CAAAA,CAAAA,CAAAA,CAAAA,WAAAA,CAAaC,MAAc,CAAG;AAC7B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAK,CAAEA,MAAAA,CAAAA;AFyNT,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CEvNL,IAAI,CAACC,GAAG,CAAE,CAAuB,mBAAA,CAAA,CAAA,CAAA,KAAA,CAAA;AFwNnC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CEvNL,IAAI,CAACC,gBAAgB,CAAG,CAAA,CAAA,GAAA,CAAIC,eAAAA,CAAAA,CAAAA;AFwN9B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CEvNL,IAAI,CAACC,cAAc,CAAG,CAAA,CAAA,GAAA,CAAIC,GAAAA,CAAAA,CAAAA;AFwN5B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CEvNL,IAAI,CAACC,cAAc,CAAG,CAAA,CAAA,GAAA,CAAID,GAAAA,CAAAA,CAAAA;AAE1BL,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAOO,MAAM,CAACC,MAAM,CAAE,CAAA,aAAA,CAAA,0BAAA,CAA4C,CAAA,CAAA,KAAA,CAAA;AACnE,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AFsND,CAAC,CAAC,CAAC,CAAC,CAAC;AEpNH,CAAA,CAAA,CAAA,CAAA,CACD,IAAoB,CAAA,CAAA,CAAA;AACnB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAACC,mBAAmB,CAAA,CAAA;AFqN1B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CEnNL,KAAMT,CAAAA,MAAAA,CAAS,CAAA,CAAA,IAAI,CAACA,MAAM;AAC1B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMU,CAAIV,CAAAA,CAAAA,CAAAA,MAAAA,CAAOW,MAAM,CAACD,CAAC;AAEzBV,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAOY,EAAE,CAACC,gBAAgB,CAACC,GAAG,CAAE,CAAiB,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAChD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMC,UAAa,CAAA,CAAA,CAAA,IAAI,CAACC,aAAa,CAAEC,UAAAA,CAAAA;AAEvCF,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,UAAAA,CAAWd,GAAG,CAAE;AACfiB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,KAAAA,CAAAA,CAAOR,CAAG,CAAA,CAAA,MAAA,CAAA,CAAA;AFkNd,CEjNIS,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAMC,CAAAA,CAAAA,iBAAAA;AFkNV,CEjNIC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,OAAS,CAAA,CAAA,IAAA;AFkNb,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CEjNXC,KAAO,CAAA,CAAA,CAAA,EAAA,CAAA,MAAA,CAAA,OAAA,CAAA,MAAA;AACR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AFkNH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CEhNR,MAAA,CAAOP,UAAAA;AACR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEAf,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAOY,EAAE,CAACC,gBAAgB,CAACC,GAAG,CAAE,CAAyB,OAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACxD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMC,UAAa,CAAA,CAAA,CAAA,IAAI,CAACC,aAAa,CAAEO,6BAAAA,CAAAA;AAEvCR,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,UAAAA,CAAWd,GAAG,CAAE;AACfiB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,KAAAA,CAAAA,CAAOR,CAAG,CAAA,CAAA,IAAA,CAAA,MAAA,CAAA,CAAA;AF+Md,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CE9MXc,IAAM,CAAA,CAAA,CAAA,gBAAA;AACP,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AF+MH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CE7MR,MAAA,CAAOT,UAAAA;AACR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AF8MF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAChI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW;AAC7F,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CE5ML,EAAK,CAAA,CAAA,IAAI,CAACU,mCAAmC,CAAA,CAAK,CAAA,CAAA;AACjD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAACC,EAAE,CAAE,CAA8B,MAAA,CAAA,mBAAA,CAAA,CAAA,CAAA,CAAEC,GAAAA,CAAK7D,CAAAA,IAAM8D,CAAAA,CAAAA,mBAAAA,CAAAA,CAAAA,CAAAA;AACnD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAKA,mBAAsB,CAAA,CAAA;AAC1B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAACC,kBAAkB,CAAA,CAAA;AACvB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAACC,kBAAkB,CAAA,CAAA;AACvB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAACC,gBAAgB,CAAA,CAAA;AF6M1B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CE5ML,CAAA,IAAA,CAAA;AACN,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAACC,kBAAkB,CAAA,CAAA;AACvB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAACC,eAAe,CAAA,CAAA;AACrB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAACP,EAAE,CAAE,CAAA,MAAA,CAAA,SAAA,CAAA,CAAoB,CAAA,CAAEC,GAAAA,CAAK7D,CAAAA,IAAMoE,CAAAA,CAAAA,SAAAA,CAAAA,CAAAA,CAAe,IAAI,CAACC,mBAAmB,CAAE,CAACD,SAAAA,CAAAA,CAAAA;AAEpF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAACE,QAAQ,CAAEpC,MAAAA,CAAQ,CAAA,CAAA,MAAA,CAAA,UAAA,CAAqB,CAAA,CAAA,CAAE2B,GAAK7D,CAAAA,CAAAA,IAAAA,CAAAA,CAAMuE,UAAgB,CAAA,CAAA,CAAA,IAAI,CAACF,mBAAmB,CAAEE,UAAAA,CAAAA,CAAAA;AACpG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AF2MF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI;AExMzFrC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAOsC,IAAI,CAACZ,EAAE,CAAE,CAAA,GAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AF0MzB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CEzMR,EAAK,CAAA,CAAA,IAAI,CAACE,mBAAmB,CAAG,CAAA;AAC/B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAACW,gBAAgB,CAAA,CAAA;AACtB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AF0MH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CEzMH,CAAA,CAAA;AF0ML,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CE1MJC,QAAU,CAAA,CAAA,CAAA,IAAA;AAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACvB,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AF2MD,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK;AEzMrD,CAAA,CAAA,CAAA,CAAA,CACD,gBAAgC,CAAA,CAAA,CAAA;AF0MjC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CEzML,KAAMxC,CAAAA,MAAAA,CAAS,CAAA,CAAA,IAAI,CAACA,MAAM;AAC1B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMsC,IAAAA,CAAAA,CAAAA,CAA+B,CAAC,CAAA;AF0MxC,CExME,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAM,KAAM,CAAA,CAAEG,QAAUC,CAAAA,CAAAA,8BAAAA,CAAgC,CAAI,EAAA,CAAA,IAAI,CAACtC,cAAc,CAAG;AACjF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMuC,OAAAA,CAAAA,CAAAA,CAAU,IAAI,CAACrC,cAAc,CAACsC,GAAG,CAAEH,QAAAA,CAAAA;AACzC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMI,OAAUH,CAAAA,CAAAA,CAAAA,8BAAAA,CAA+BI,OAAO,CAACC,KAAK;AFyM/D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ;AACrF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM;AEtM/E,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAKJ,CAAAA,CAAAA,OAAAA,CAAYE,CAAAA,CAAAA,CAAAA,CAAAA,OAAU,CAAA,CAAA;AFwM9B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CEvMXP,IAAI,CAAEG,QAAAA,CAAU,CAAA,CAAA,CAAGI,OAAAA;AACnB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAACvC,cAAc,CAACL,GAAG,CAAEwC,QAAUI,CAAAA,CAAAA,OAAAA,CAAAA;AACpC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAKG,MAAOC,CAAAA,IAAI,CAAEX,IAAAA,CAAAA,CAAO1D,MAAM,CAAG,CAAA;AACjCoB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAOsC,IAAI,CAACrC,GAAG,CAAEqC,IAAM,CAAA,CAAA;AFuM1B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CEvMaY,SAAW,CAAA,CAAA;AFwMvC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CExMsBC,UAAY,CAAA,CAAA;AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AF0M1D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CE1M8CC,4BAA8B,CAAA,CAAA;AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC9F,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA;AF4MD,CAAC,CAAC,CAAC,CE1MM3C,mBAAsB,CAAA,CAAA,CAAA;AF2M/B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CE1ML,KAAMT,CAAAA,MAAAA,CAAS,CAAA,CAAA,IAAI,CAACA,MAAM;AAC1B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMqD,kBAAqBrD,CAAAA,CAAAA,CAAAA,MAAAA,CAAOO,MAAM,CAACqC,GAAG,CAAE,CAAA,aAAA,CAAA,0BAAA,CAAA,CAAA;AAE9C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAK,CAAA,CAAA,CAACS,kBAAsBrD,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAOsD,OAAO,CAACC,GAAG,CAAE,CAAmC,4BAAA,CAAA,CAAA,CAAA,CAAA;AAClF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AF0MH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa;AACjF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;AACjD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI;AACnH,CAAC,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;AAClF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC;AACjB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,0BAA0B;AACrG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC;AAClC,CAAC,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACxD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CExMH,KAAA,CAAM,GAAIC,CAAAA,aAAAA,CAAe,CAA4D,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,IAAA,CAAA,IAAA,CAAA,IAAA,CAAA,aAAA,CAAA,CAAA,CAAA,IAAA,CAAA;AACtF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMC,8BAAiC,CAAA,CAAA,CAAA;AACtC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,eAAA,CAAA;AACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,mBAAA,CAAA;AACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,eAAA;AACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AFwMH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO;AAC9G,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACT,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;AAC9H,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ;AAC/F,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AErMP,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAK,CAACJ,kBAAAA,CAAAA,CAAAA,CAAAA,CAAsBI,8BAA+BxE,CAAAA,IAAI,CAAEU,CAAAA,UAAcK,CAAAA,CAAAA,CAAAA,MAAAA,CAAOsD,OAAO,CAACC,GAAG,CAAE5D,UAAiB,CAAA,CAAA,CAAA,CAAA;AFuMtH,CEtMG+D,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,OAAQC,CAAAA,IAAI,CACX,CAAA,GAAA,CAAA,WAAA,CAAA,GAAA,CAAA,MAAA,CAAA,IAAA,CAAA,GAAA,CAAA,MAAA,CAAA,OAAA,CAAA,OAAA,CAAA,GAAA,CAAA,EAAA,CAAA,KAAA,CAAA,GAAA,CAAA,EAAA,CAAA,GAAA,CAAA,aAAA,CAAA,QAAA,CAAA,CAAA,CAAA,CACA,CAAA,CAAA,CAAA,MAAA,CAAA,EAAA,CAAA,OAAA,CAAA,IAAA,CAAA,GAAA,CAAA,MAAA,CAAA,OAAA,CAAA,OAAA,CAAA,GAAA,CAAA,GAAA,CAAA,IAAA,CAAA,CAAA,GAAA,CAAA,EAAA,CAAA,OAAA,CAAA,IAAA,CAAA,OAAA,CAAA,QAAA,CAAA,MAAA,CAAA,CACA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,QAAA,CAAA,OAAA,CAAA,OAAA,CAAA,EAAA,CAAA,GAAA,CAAA,aAAA,CAAA,QAAA,CAAA,CAAA,CAAA;AAEF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AFmMF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW;AEhM5F,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAK3D,MAAOsD,CAAAA,OAAO,CAACC,GAAG,CAAE,CAAmC,4BAAA,CAAA,CAAA,CAAA,CAAA;AFkM9D,CEjMGG,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,OAAQC,CAAAA,IAAI,CACX,CAAA,GAAA,CAAA,WAAA,CAAA,GAAA,CAAA,MAAA,CAAA,IAAA,CAAA,GAAA,CAAA,MAAA,CAAA,OAAA,CAAA,OAAA,CAAA,GAAA,CAAA,UAAA,CAAA,OAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CACA,CAAA,CAAA,CAAA,MAAA,CAAA,EAAA,CAAA,OAAA,CAAA,IAAA,CAAA,GAAA,CAAA,MAAA,CAAA,OAAA,CAAA,OAAA,CAAA,GAAA,CAAA,GAAA,CAAA,IAAA,CAAA,CAAA,GAAA,CAAA,EAAA,CAAA,OAAA,CAAA,IAAA,CAAA,OAAA,CAAA,QAAA,CAAA,MAAA,CAAA,CACA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,QAAA,CAAA,OAAA,CAAA,OAAA,CAAA,EAAA,CAAA,GAAA,CAAA,UAAA,CAAA,OAAA,CAAA,OAAA,CAAA,CAAA,CAAA;AAEF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AF6LD,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AACvH,CAAC,CAAC,CAAC,CAAC,IAAI;AACR,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;AACrI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;AACpI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;AACpI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM;AACvI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;AACrI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK;AACvI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM;AE3LjF,CAAA,CAAA,CAAA,CAAA,CACD,kBAAmC,CAAA,CAAA,CAAA;AF4LpC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CE3LL,KAAM3D,CAAAA,MAAAA,CAAS,CAAA,CAAA,IAAI,CAACA,MAAM;AAC1B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAM4D,WAAc5D,CAAAA,CAAAA,CAAAA,MAAAA,CAAO6D,OAAO,CAACC,IAAI;AF4LzC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CE3LL,KAAMC,CAAAA,KAAAA,CAAQ/D,CAAAA,CAAAA,MAAAA,CAAO+D,KAAK;AF4L5B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CE1LLA,KAAMC,CAAAA,MAAM,CAAEC,CAAAA,MAAAA,CAAAA,CAAAA,CAAAA;AACbA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAOC,YAAY,CAAE,IAAA,CAAA;AACrBD,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAOE,wBAAwB,CAAEJ,KAAAA,CAAMK,QAAQ,CAACC,SAAS,CAACC,gBAAgB,CAAA,CAAA,CAAA;AAC3E,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AF2LF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAClI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY;AExLnG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAM,KAAM,CAAA,CAAE7B,QAAAA,CAAAA,CAAU8B,cAAAA,CAAgB,CAAIX,EAAAA,CAAAA,WAAAA,CAAYY,QAAQ,CAAG;AAClE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMlC,IAAAA,CAAAA,CAAAA,CAAOmC,YAAczE,CAAAA,MAAAA,CAAOsC,IAAI,CAACM,GAAG,CAAE;AAAEH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEvD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMiC,+BAAkCC,CAAAA,CAAAA,CAAAA,aAAAA,CAAeJ,cAAeK,CAAAA,aAAa,CAAE,CAAA,CAAA,QAAA,CAAY,CAAA,CAAA;AF2LpG,CE1LIC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAM,CAAA,CAAA,CAAA,CAAA,CAAA;AF2LV,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CE1LX,CAAA,IAAA,CAAA,KAAA,CAAc,CAAA,CAAA,CAAA,MAAA,CAAA,IAAA,CAAA,OAAA,CAAA,IAAA;AACf,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMnC,8BAAiCiC,CAAAA,CAAAA,CAAAA,aAAAA,CAAeJ,cAAeK,CAAAA,aAAa,CAAE,CAAA,CAAA,GAAA,CAAO,CAAA,CAAA;AF0L9F,CEzLItD,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,KAAO,CAAA,CAAA,CAAA,EAAA,CAAA,MAAA,CAAA,OAAA,CAAA,IAAA,CAAA;AF0LX,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CEzLX,CAAA,IAAA,CAAA,KAAA,CAAcgB,CAAAA,CAAAA;AF0LlB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CEzLN,CAAA,CAAA;AAAEoC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAAiC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEtCA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,+BAAAA,CAAgC3B,KAAK,CAAA,CAAA,CAAGT,IAAAA;AF2L3C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS;AACpH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CEzLRoC,+BAAgCI,CAAAA,iBAAiB,CAAE,CAAG,CAAA,CAAA,CAAA,CAAA;AF0LzD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;AAC7H,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ;AAC9C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CExLRJ,+BAAgCK,CAAAA,gBAAgB,CAAE,CAAA,KAAA,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC1DrC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,8BAAAA,CAA+BI,OAAO,CAACC,KAAK,CAAG2B,CAAAA,CAAAA,+BAAAA,CAAgC3B,KAAK;AFyLxF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CEvLX/C,MAAOY,CAAAA,EAAE,CAACoE,MAAM,CAAA,CAAA;AACjB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AFwLH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CEtLRpB,WAAYI,CAAAA,MAAM,CAAEC,CAAAA,MAAAA,CAAAA,CAAAA,CAAAA;AACnB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMgB,QAAWrB,CAAAA,CAAAA,CAAAA,WAAAA,CAAYQ,QAAQ,CAACc,OAAO,CAAEzC,QAAAA,CAAAA;AFuLnD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CErLXwB,MAAOkB,CAAAA,QAAQ,CAAE,CAAaF,EAAAA,CAAAA,MAAAA,CAAAA,CAAAA,CAAAA,QAAAA,CAAAA;AAC/B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AFsLH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU;AEnLvFjF,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAOY,EAAE,CAACwE,kBAAkB,CAAE,CAAA,aAAA,CAAA,CAAA,CAAmB3C,CAAAA,CAAAA,QAAUiC,CAAAA,CAAAA,+BAAAA,CAAAA;AAE3D,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAACtE,cAAc,CAACH,GAAG,CAAEwC,QAAUC,CAAAA,CAAAA,8BAAAA,CAAAA;AAEnC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAACxC,gBAAgB,CAAC7B,OAAO,CAAEkG,cAAgB7B,CAAAA,CAAAA,8BAAAA,CAAAA;AAE/C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAACpC,cAAc,CAACL,GAAG,CAAEwC,QAAUH,CAAAA,CAAAA,IAAAA,CAAAA;AACpC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAAC+C,mBAAmB,CAAA,CAAA;AACzB,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AFgLD,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI;AE9KpE,CAAA,CAAA,CAAA,CAAA,CACD,kBAAmC,CAAA,CAAA,CAAA;AF+KpC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CE9KL,KAAMrF,CAAAA,MAAAA,CAAS,CAAA,CAAA,IAAI,CAACA,MAAM;AAC1B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAM4D,WAAc5D,CAAAA,CAAAA,CAAAA,MAAAA,CAAO6D,OAAO,CAACC,IAAI;AAEvC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAACvB,gBAAgB,CAAA,CAAA;AF8KvB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CE5KLqB,WAAYI,CAAAA,MAAM,CAAEC,CAAAA,MAAAA,CAAAA,CAAAA,CAAAA;AACnB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAM,KAAA,CAAM,CAAExB,QAAAA,CAAU,CAAI,EAAA,CAAA,IAAI,CAACrC,cAAc,CAAG;AACjD6D,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAOqB,WAAW,CAAE,CAAA,EAAA,CAAA,MAAA,CAAA,CAAa1B,CAAAA,WAAAA,CAAYQ,QAAQ,CAACc,OAAO,CAAEzC,QAAAA,CAAAA,CAAAA;AAChE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AF6KF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CE3KL,IAAI,CAACvC,gBAAgB,CAACqF,OAAO,CAAA,CAAA;AF4K/B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CE1KL,IAAI,CAACnF,cAAc,CAACoF,KAAK,CAAA,CAAA;AF2K3B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CE1KL,IAAI,CAAClF,cAAc,CAACkF,KAAK,CAAA,CAAA;AAEzB5B,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,WAAAA,CAAY6B,KAAK,CAAA,CAAA;AAClB,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AFyKD,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI;AEvK7E,CAAA,CAAA,CAAA,CAAA,CACD,mBAAoC,CAAA,CAAA,CAAA;AFwKrC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CEvKL,KAAMzF,CAAAA,MAAAA,CAAS,CAAA,CAAA,IAAI,CAACA,MAAM;AAC1B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAM,CAAE0C,8BAAgC,CAAA,CAAA,CAAA,CAAG,IAAI,CAACtC,cAAc,CAACsF,MAAM,CAAA,CAAA;AFwKvE,CEvKE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMC,QAAAA,CAAWjD,CAAAA,CAAAA,8BAA+BkD,CAAAA,aAAa,CAAE,CAAA,QAAA,CAAA,CAAA;AFwKjE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;AACzG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO;AACpG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC;AACjG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI;AErKjC5F,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAO6D,OAAO,CAACC,IAAI,CAACM,QAAQ,CAACyB,SAAS,CAAA,CAAA,CAAG,KAAA;AAEzCF,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,QAAAA,CAASF,KAAK,CAAA,CAAA;AACf,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AFqKD,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ;AEnKvB,CAAA,CAAA,CAAA,CAAA,CACD,gBAAiC,CAAA,CAAA,CAAA;AFoKlC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CEnKL,KAAMzF,CAAAA,MAAAA,CAAS,CAAA,CAAA,IAAI,CAACA,MAAM;AAE1B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAM,KAAM8F,CAAAA,OAAW9F,CAAAA,EAAAA,CAAAA,MAAAA,CAAO+F,QAAQ,CAACA,QAAQ,CAAA,CAAK,CAAA;AACnDD,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,OAAAA,CAAQE,aAAa,CAAExG,wBAAAA,CAAAA;AACxB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AFmKF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG;AEhKjE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAKQ,MAAOsD,CAAAA,OAAO,CAACC,GAAG,CAAE,CAAwB,iBAAA,CAAA,CAAA,CAAA,CAAA;AAC9CvD,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAOsD,OAAO,CAACV,GAAG,CAAE,CAAA,iBAAA,CAAA,CAAA,CAAkCoD,aAAa,CAAExG,wBAAAA,CAAAA;AACxE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AFiKD,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC;AE/JnG,CAAA,CAAA,CAAA,CAAA,CACD,eAAgC,CAAA,CAAA,CAAA;AFgKjC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CE/JL,KAAMQ,CAAAA,MAAAA,CAAS,CAAA,CAAA,IAAI,CAACA,MAAM;AAE1B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAM,KAAM8F,CAAAA,OAAW9F,CAAAA,EAAAA,CAAAA,MAAAA,CAAO+F,QAAQ,CAACA,QAAQ,CAAA,CAAK,CAAA;AACnDD,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,OAAAA,CAAQG,kBAAkB,CAAEzG,wBAAAA,CAAAA;AAC7B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AF+JF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG;AE5JhE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAKQ,MAAOsD,CAAAA,OAAO,CAACC,GAAG,CAAE,CAAwB,iBAAA,CAAA,CAAA,CAAA,CAAA;AAC9CvD,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAOsD,OAAO,CAACV,GAAG,CAAE,CAAA,iBAAA,CAAA,CAAA,CAAkCqD,kBAAkB,CAAEzG,wBAAAA,CAAAA;AAC7E,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AF6JD,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM;AAChH,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI;AACjF,CE3JS2C,CAAAA,CAAAA,CAAAA,CAAAA,mBAAqBE,CAAAA,UAAmB,CAAS,CAAA;AACxD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAK,CAAA,CAAA,CAAC,IAAI,CAACT,mBAAmB,CAAG,CAAA;AAChC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAM,KAAA,CAAM,CAAIc,CAAAA,CAAAA,8BAAAA,CAAgC,CAAI,EAAA,CAAA,IAAI,CAACtC,cAAc,CAAG;AACzEsC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,8BAAAA,CAA+BkD,aAAa,CAAE,CAAA,QAAA,CAAcM,CAAAA,CAAAA,QAAQ,CAAA,CAAA,CAAG7D,UAAAA;AACxE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AF0JD,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC;AAClI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC;AExJlF,CAAA,CAAA,CAAA,CAAA,CACD,mCAAuD,CAAA,CAAA,CAAA;AFyJxD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CExJL,KAAMrC,CAAAA,MAAAA,CAAS,CAAA,CAAA,IAAI,CAACA,MAAM;AAC1B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMmG,QAAAA,CAAWnG,CAAAA,CAAAA,MAAOY,CAAAA,EAAE,CAACkD,IAAI,CAACqC,QAAQ;AFyJ1C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI;AAC5E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CEvJL,MAAA,CAAOA,QAAAA,CAAAA,CAAAA,CAAAA,CAAY,CAACA,QAAAA,CAASC,kBAAkB;AAChD,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AFuJD,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE;AErJnG,CAAA,CAAA,CAAA,CAAA,CACD,kBAAmC,CAAA,CAAA,CAAA;AFsJpC,CErJE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAK,IAAI,CAACpG,MAAM,CAACsD,OAAO,CAACC,GAAG,CAAE,CAAa,MAAA,CAAA,CAAA,CAAA,CAAA;AFsJ7C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CErJR,KAAM8C,CAAAA,YAAAA,CAAuB,CAAA,CAAA,IAAI,CAACrG,MAAM,CAACsD,OAAO,CAACV,GAAG,CAAE,CAAA,MAAA,CAAA,CAAA;AFsJzD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CEpJR,EAAKyD,CAAAA,CAAAA,YAAAA,CAAaC,MAAM,CAAG,CAAA;AAC1BD,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,YAAAA,CAAaE,IAAI,CAAA,CAAA;AAClB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA;AAEQvF,CAAAA,CAAAA,CAAAA,CAAAA,aAAAA,CAA4CwF,WAAc,CAAoB,CAAA;AFoJvF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CEnJL,KAAMxG,CAAAA,MAAAA,CAAS,CAAA,CAAA,IAAI,CAACA,MAAM;AAC1B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMe,UAAa,CAAA,CAAA,CAAA,GAAA,CAAIyF,WAAaxG,CAAAA,MAAAA,CAAOW,MAAM,CAAA;AAEjDI,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,UAAAA,CAAWd,GAAG,CAAE;AFmJlB,CElJGwG,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,QAAU,CAAA,CAAA,IAAA;AFmJb,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CElJRC,YAAc,CAAA,CAAA;AACf,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA3F,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,UAAAA,CAAW4F,IAAI,CAAE,CAAA,IAAA,CAAA,CAAA,CAASC,EAAE,CAAE,IAAI,CAAE,CAAA,CAAA,mBAAA,CAAA,CAAA;AFkJtC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG;AE/IhF7F,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,UAAAA,CAAW4F,IAAI,CAAE,CAAA,SAAA,CAAA,CAAA,CAAcC,EAAE,CAChC,IAAI,CAAE,CAAA,CAAA,SAAA,CACN5G,CAAAA,CAAAA,MAAAA,CAAAA,CAAQ,CAAA,UAAA,CAAA,CAAA,CACRA,MAAOsD,CAAAA,OAAO,CAACV,GAAG,CAAE9C,cAAAA,CAAAA,CAAAA,CAAkB,CACtC,MAAA,CAAA,CAAA,CAAA,CAAEoC,SAAAA,CAAAA,CAAW2E,gBAAkBC,CAAAA,CAAAA,oBAAAA,CAAAA,CAAAA,CAAAA;AF6IlC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ;AE3I5C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAK,CAAC5E,SAAY,CAAA,CAAA;AF6ItB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CE5IV,MAAA,CAAO,KAAA;AACR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AF6IJ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AE1I9C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAK2E,gBAAmB,CAAA,CAAA;AF4I5B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CE3IV,MAAA,CAAO,KAAA;AACR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AF4IJ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;AACxH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG;AEzIzC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAKC,oBAAuB,CAAA,CAAA;AF2IhC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CE1IV,MAAA,CAAO,KAAA;AACR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AF2IJ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CEzIP,MAAA,CAAO,IAAA;AACR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAGD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAAC1E,QAAQ,CAAErB,UAAAA,CAAY,CAAA,CAAA,OAAA,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACrC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAACa,mBAAmB,CAAA,CAAA,CAAG,CAAC,IAAI,CAACA,mBAAmB;AACrD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AFwIF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CEtIL,MAAA,CAAOb,UAAAA;AACR,CAAA,CAAA,CAAA,CAAA;AACD;AAEA,CAAA,CAAA;AFsIA,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW;AAC/C,CAAC;AACD,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ;AAC/D,CAAC;AACD,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK;AACrC,CAAC,CAAC,CAAC,CEpIH,QAAS0D,CAAAA,YAAAA,CAAc7G,KAAa,CAAA,CAAA;AFqIpC,CAAC,CAAC,CAAC,CEpIF,EAAA,CAAA,CAAK,CAACmJ,MAAAA,CAAQnJ,KAAU,CAAA,CAAA,CAAA;AFqIzB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CEpIL,MAAA,CAAOA,KAAAA;AACR,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,MAAOD,CAAAA,UAAYC,CAAAA,KAAAA,CAAAA;AACpB;AAEA,CAAA,CAAA;AFmIA,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI;AACpH,CAAC;AACD,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK;AACrC,CAAC,CAAC,CAAC,CEjIH,QAASmJ,CAAAA,MAAAA,CAAQnJ,KAAa,CAAA,CAAA;AFkI9B,CAAC,CAAC,CAAC,CEjIF,MAAA,CAAOA,KAAAA,CAAMoJ,UAAU,CAAE,CAAA,CAAA,CAAA,CAAA;AAC1B;;AFmIA,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;AACxB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC","file":"index.js.map","sourcesContent":["import { Plugin, PendingActions } from '@ckeditor/ckeditor5-core/dist/index.js';\nimport { ButtonView, MenuBarMenuListItemButtonView } from '@ckeditor/ckeditor5-ui/dist/index.js';\nimport { ElementReplacer, CKEditorError, createElement } from '@ckeditor/ckeditor5-utils/dist/index.js';\n\n/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */ /**\n * @module source-editing/utils/formathtml\n */ /**\n * A simple (and naive) HTML code formatter that returns a formatted HTML markup that can be easily\n * parsed by human eyes. It beautifies the HTML code by adding new lines between elements that behave like block elements\n * (https://developer.mozilla.org/en-US/docs/Web/HTML/Block-level_elements\n * and a few more like `tr`, `td`, and similar ones) and inserting indents for nested content.\n *\n * WARNING: This function works only on a text that does not contain any indentations or new lines.\n * Calling this function on the already formatted text will damage the formatting.\n *\n * @param input An HTML string to format.\n */ function formatHtml(input) {\n // A list of block-like elements around which the new lines should be inserted, and within which\n // the indentation of their children should be increased.\n // The list is partially based on https://developer.mozilla.org/en-US/docs/Web/HTML/Block-level_elements that contains\n // a full list of HTML block-level elements.\n // A void element is an element that cannot have any child - https://html.spec.whatwg.org/multipage/syntax.html#void-elements.\n // Note that <pre> element is not listed on this list to avoid breaking whitespace formatting.\n // Note that <br> element is not listed and handled separately so no additional white spaces are injected.\n const elementsToFormat = [\n {\n name: 'address',\n isVoid: false\n },\n {\n name: 'article',\n isVoid: false\n },\n {\n name: 'aside',\n isVoid: false\n },\n {\n name: 'blockquote',\n isVoid: false\n },\n {\n name: 'details',\n isVoid: false\n },\n {\n name: 'dialog',\n isVoid: false\n },\n {\n name: 'dd',\n isVoid: false\n },\n {\n name: 'div',\n isVoid: false\n },\n {\n name: 'dl',\n isVoid: false\n },\n {\n name: 'dt',\n isVoid: false\n },\n {\n name: 'fieldset',\n isVoid: false\n },\n {\n name: 'figcaption',\n isVoid: false\n },\n {\n name: 'figure',\n isVoid: false\n },\n {\n name: 'footer',\n isVoid: false\n },\n {\n name: 'form',\n isVoid: false\n },\n {\n name: 'h1',\n isVoid: false\n },\n {\n name: 'h2',\n isVoid: false\n },\n {\n name: 'h3',\n isVoid: false\n },\n {\n name: 'h4',\n isVoid: false\n },\n {\n name: 'h5',\n isVoid: false\n },\n {\n name: 'h6',\n isVoid: false\n },\n {\n name: 'header',\n isVoid: false\n },\n {\n name: 'hgroup',\n isVoid: false\n },\n {\n name: 'hr',\n isVoid: true\n },\n {\n name: 'li',\n isVoid: false\n },\n {\n name: 'main',\n isVoid: false\n },\n {\n name: 'nav',\n isVoid: false\n },\n {\n name: 'ol',\n isVoid: false\n },\n {\n name: 'p',\n isVoid: false\n },\n {\n name: 'section',\n isVoid: false\n },\n {\n name: 'table',\n isVoid: false\n },\n {\n name: 'tbody',\n isVoid: false\n },\n {\n name: 'td',\n isVoid: false\n },\n {\n name: 'th',\n isVoid: false\n },\n {\n name: 'thead',\n isVoid: false\n },\n {\n name: 'tr',\n isVoid: false\n },\n {\n name: 'ul',\n isVoid: false\n }\n ];\n const elementNamesToFormat = elementsToFormat.map((element)=>element.name).join('|');\n // It is not the fastest way to format the HTML markup but the performance should be good enough.\n const lines = input// Add new line before and after `<tag>` and `</tag>`.\n // It may separate individual elements with two new lines, but this will be fixed below.\n .replace(new RegExp(`</?(${elementNamesToFormat})( .*?)?>`, 'g'), '\\n$&\\n')// Keep `<br>`s at the end of line to avoid adding additional whitespaces before `<br>`.\n .replace(/<br[^>]*>/g, '$&\\n')// Divide input string into lines, which start with either an opening tag, a closing tag, or just a text.\n .split('\\n');\n let indentCount = 0;\n let isPreformattedLine = false;\n return lines.filter((line)=>line.length).map((line)=>{\n isPreformattedLine = isPreformattedBlockLine(line, isPreformattedLine);\n if (isNonVoidOpeningTag(line, elementsToFormat)) {\n return indentLine(line, indentCount++);\n }\n if (isClosingTag(line, elementsToFormat)) {\n return indentLine(line, --indentCount);\n }\n if (isPreformattedLine === 'middle' || isPreformattedLine === 'last') {\n return line;\n }\n return indentLine(line, indentCount);\n }).join('\\n');\n}\n/**\n * Checks, if an argument is an opening tag of a non-void element to be formatted.\n *\n * @param line String to check.\n * @param elementsToFormat Elements to be formatted.\n */ function isNonVoidOpeningTag(line, elementsToFormat) {\n return elementsToFormat.some((element)=>{\n if (element.isVoid) {\n return false;\n }\n if (!new RegExp(`<${element.name}( .*?)?>`).test(line)) {\n return false;\n }\n return true;\n });\n}\n/**\n * Checks, if an argument is a closing tag.\n *\n * @param line String to check.\n * @param elementsToFormat Elements to be formatted.\n */ function isClosingTag(line, elementsToFormat) {\n return elementsToFormat.some((element)=>{\n return new RegExp(`</${element.name}>`).test(line);\n });\n}\n/**\n * Indents a line by a specified number of characters.\n *\n * @param line Line to indent.\n * @param indentCount Number of characters to use for indentation.\n * @param indentChar Indentation character(s). 4 spaces by default.\n */ function indentLine(line, indentCount, indentChar = ' ') {\n // More about Math.max() here in https://github.com/ckeditor/ckeditor5/issues/10698.\n return `${indentChar.repeat(Math.max(0, indentCount))}${line}`;\n}\n/**\n * Checks whether a line belongs to a preformatted (`<pre>`) block.\n *\n * @param line Line to check.\n * @param isPreviousLinePreFormatted Information on whether the previous line was preformatted (and how).\n */ function isPreformattedBlockLine(line, isPreviousLinePreFormatted) {\n if (new RegExp('<pre( .*?)?>').test(line)) {\n return 'first';\n } else if (new RegExp('</pre>').test(line)) {\n return 'last';\n } else if (isPreviousLinePreFormatted === 'first' || isPreviousLinePreFormatted === 'middle') {\n return 'middle';\n } else {\n return false;\n }\n}\n\nvar sourceEditingIcon = \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m12.5 0 5 4.5v15.003h-16V0h11zM3 1.5v3.25l-1.497 1-.003 8 1.5 1v3.254L7.685 18l-.001 1.504H17.5V8.002L16 9.428l-.004-4.22-4.222-3.692L3 1.5z\\\"/><path d=\\\"M4.06 6.64a.75.75 0 0 1 .958 1.15l-.085.07L2.29 9.75l2.646 1.89c.302.216.4.62.232.951l-.058.095a.75.75 0 0 1-.951.232l-.095-.058-3.5-2.5V9.14l3.496-2.5zm4.194 6.22a.75.75 0 0 1-.958-1.149l.085-.07 2.643-1.89-2.646-1.89a.75.75 0 0 1-.232-.952l.058-.095a.75.75 0 0 1 .95-.232l.096.058 3.5 2.5v1.22l-3.496 2.5zm7.644-.836 2.122 2.122-5.825 5.809-2.125-.005.003-2.116zm2.539-1.847 1.414 1.414a.5.5 0 0 1 0 .707l-1.06 1.06-2.122-2.12 1.061-1.061a.5.5 0 0 1 .707 0z\\\"/></svg>\";\n\nconst COMMAND_FORCE_DISABLE_ID = 'SourceEditingMode';\n/**\n * The source editing feature.\n *\n * It provides the possibility to view and edit the source of the document.\n *\n * For a detailed overview, check the {@glink features/source-editing source editing feature documentation} and the\n * {@glink api/source-editing package page}.\n */ class SourceEditing extends Plugin {\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'SourceEditing';\n }\n /**\n\t * @inheritDoc\n\t */ static get isOfficialPlugin() {\n return true;\n }\n /**\n\t * @inheritDoc\n\t */ static get requires() {\n return [\n PendingActions\n ];\n }\n /**\n\t * The element replacer instance used to replace the editing roots with the wrapper elements containing the document source.\n\t */ _elementReplacer;\n /**\n\t * Maps all root names to wrapper elements containing the document source.\n\t */ _replacedRoots;\n /**\n\t * Maps all root names to their document data.\n\t */ _dataFromRoots;\n /**\n\t * @inheritDoc\n\t */ constructor(editor){\n super(editor);\n this.set('isSourceEditingMode', false);\n this._elementReplacer = new ElementReplacer();\n this._replacedRoots = new Map();\n this._dataFromRoots = new Map();\n editor.config.define('sourceEditing.allowCollaborationFeatures', false);\n }\n /**\n\t * @inheritDoc\n\t */ init() {\n this._checkCompatibility();\n const editor = this.editor;\n const t = editor.locale.t;\n editor.ui.componentFactory.add('sourceEditing', ()=>{\n const buttonView = this._createButton(ButtonView);\n buttonView.set({\n label: t('Source'),\n icon: sourceEditingIcon,\n tooltip: true,\n class: 'ck-source-editing-button'\n });\n return buttonView;\n });\n editor.ui.componentFactory.add('menuBar:sourceEditing', ()=>{\n const buttonView = this._createButton(MenuBarMenuListItemButtonView);\n buttonView.set({\n label: t('Show source'),\n role: 'menuitemcheckbox'\n });\n return buttonView;\n });\n // Currently, the plugin handles the source editing mode by itself only for the classic editor. To use this plugin with other\n // integrations, listen to the `change:isSourceEditingMode` event and act accordingly.\n if (this._isAllowedToHandleSourceEditingMode()) {\n this.on('change:isSourceEditingMode', (evt, name, isSourceEditingMode)=>{\n if (isSourceEditingMode) {\n this._hideVisibleDialog();\n this._showSourceEditing();\n this._disableCommands();\n } else {\n this._hideSourceEditing();\n this._enableCommands();\n }\n });\n this.on('change:isEnabled', (evt, name, isEnabled)=>this._handleReadOnlyMode(!isEnabled));\n this.listenTo(editor, 'change:isReadOnly', (evt, name, isReadOnly)=>this._handleReadOnlyMode(isReadOnly));\n }\n // Update the editor data while calling editor.getData() in the source editing mode.\n editor.data.on('get', ()=>{\n if (this.isSourceEditingMode) {\n this.updateEditorData();\n }\n }, {\n priority: 'high'\n });\n }\n /**\n\t * Updates the source data in all hidden editing roots.\n\t */ updateEditorData() {\n const editor = this.editor;\n const data = {};\n for (const [rootName, domSourceEditingElementWrapper] of this._replacedRoots){\n const oldData = this._dataFromRoots.get(rootName);\n const newData = domSourceEditingElementWrapper.dataset.value;\n // Do not set the data unless some changes have been made in the meantime.\n // This prevents empty undo steps after switching to the normal editor.\n if (oldData !== newData) {\n data[rootName] = newData;\n this._dataFromRoots.set(rootName, newData);\n }\n }\n if (Object.keys(data).length) {\n editor.data.set(data, {\n batchType: {\n isUndoable: true\n },\n suppressErrorInCollaboration: true\n });\n }\n }\n _checkCompatibility() {\n const editor = this.editor;\n const allowCollaboration = editor.config.get('sourceEditing.allowCollaborationFeatures');\n if (!allowCollaboration && editor.plugins.has('RealTimeCollaborativeEditing')) {\n /**\n\t\t\t * Source editing feature is not fully compatible with real-time collaboration,\n\t\t\t * and using it may lead to data loss. Please read\n\t\t\t * {@glink features/source-editing#limitations-and-incompatibilities source editing feature guide} to learn more.\n\t\t\t *\n\t\t\t * If you understand the possible risk of data loss, you can enable the source editing\n\t\t\t * by setting the\n\t\t\t * {@link module:source-editing/sourceeditingconfig~SourceEditingConfig#allowCollaborationFeatures}\n\t\t\t * configuration flag to `true`.\n\t\t\t *\n\t\t\t * @error source-editing-incompatible-with-real-time-collaboration\n\t\t\t */ throw new CKEditorError('source-editing-incompatible-with-real-time-collaboration', null);\n }\n const collaborationPluginNamesToWarn = [\n 'CommentsEditing',\n 'TrackChangesEditing',\n 'RevisionHistory'\n ];\n // Currently, the basic integration with Collaboration Features is to display a warning in the console.\n //\n // If `allowCollaboration` flag is set, do not show these warnings. If the flag is set, we assume that the integrator read\n // appropriate section of the guide so there's no use to spam the console with warnings.\n //\n if (!allowCollaboration && collaborationPluginNamesToWarn.some((pluginName)=>editor.plugins.has(pluginName))) {\n console.warn('You initialized the editor with the source editing feature and at least one of the collaboration features. ' + 'Please be advised that the source editing feature may not work, and be careful when editing document source ' + 'that contains markers created by the collaboration features.');\n }\n // Restricted Editing integration can also lead to problems. Warn the user accordingly.\n if (editor.plugins.has('RestrictedEditingModeEditing')) {\n console.warn('You initialized the editor with the source editing feature and restricted editing feature. ' + 'Please be advised that the source editing feature may not work, and be careful when editing document source ' + 'that contains markers created by the restricted editing feature.');\n }\n }\n /**\n\t * Creates source editing wrappers that replace each editing root. Each wrapper contains the document source from the corresponding\n\t * root.\n\t *\n\t * The wrapper element contains a textarea and it solves the problem, that the textarea element cannot auto expand its height based on\n\t * the content it contains. The solution is to make the textarea more like a plain div element, which expands in height as much as it\n\t * needs to, in order to display the whole document source without scrolling. The wrapper element is a parent for the textarea and for\n\t * the pseudo-element `::after`, that replicates the look, content, and position of the textarea. The pseudo-element replica is hidden,\n\t * but it is styled to be an identical visual copy of the textarea with the same content. Then, the wrapper is a grid container and both\n\t * of its children (the textarea and the `::after` pseudo-element) are positioned within a CSS grid to occupy the same grid cell. The\n\t * content in the pseudo-element `::after` is set in CSS and it stretches the grid to the appropriate size based on the textarea value.\n\t * Since both children occupy the same grid cell, both have always the same height.\n\t */ _showSourceEditing() {\n const editor = this.editor;\n const editingView = editor.editing.view;\n const model = editor.model;\n model.change((writer)=>{\n writer.setSelection(null);\n writer.removeSelectionAttribute(model.document.selection.getAttributeKeys());\n });\n // It is not needed to iterate through all editing roots, as currently the plugin supports only the Classic Editor with a single\n // main root, but this code may help understand and use this feature in external integrations.\n for (const [rootName, domRootElement] of editingView.domRoots){\n const data = formatSource(editor.data.get({\n rootName\n }));\n const domSourceEditingElementTextarea = createElement(domRootElement.ownerDocument, 'textarea', {\n rows: '1',\n 'aria-label': 'Source code editing area'\n });\n const domSourceEditingElementWrapper = createElement(domRootElement.ownerDocument, 'div', {\n class: 'ck-source-editing-area',\n 'data-value': data\n }, [\n domSourceEditingElementTextarea\n ]);\n domSourceEditingElementTextarea.value = data;\n // Setting a value to textarea moves the input cursor to the end. We want the selection at the beginning.\n domSourceEditingElementTextarea.setSelectionRange(0, 0);\n // Bind the textarea's value to the wrapper's `data-value` property. Each change of the textarea's value updates the\n // wrapper's `data-value` property.\n domSourceEditingElementTextarea.addEventListener('input', ()=>{\n domSourceEditingElementWrapper.dataset.value = domSourceEditingElementTextarea.value;\n editor.ui.update();\n });\n editingView.change((writer)=>{\n const viewRoot = editingView.document.getRoot(rootName);\n writer.addClass('ck-hidden', viewRoot);\n });\n // Register the element so it becomes available for Alt+F10 and Esc navigation.\n editor.ui.setEditableElement('sourceEditing:' + rootName, domSourceEditingElementTextarea);\n this._replacedRoots.set(rootName, domSourceEditingElementWrapper);\n this._elementReplacer.replace(domRootElement, domSourceEditingElementWrapper);\n this._dataFromRoots.set(rootName, data);\n }\n this._focusSourceEditing();\n }\n /**\n\t * Restores all hidden editing roots and sets the source data in them.\n\t */ _hideSourceEditing() {\n const editor = this.editor;\n const editingView = editor.editing.view;\n this.updateEditorData();\n editingView.change((writer)=>{\n for (const [rootName] of this._replacedRoots){\n writer.removeClass('ck-hidden', editingView.document.getRoot(rootName));\n }\n });\n this._elementReplacer.restore();\n this._replacedRoots.clear();\n this._dataFromRoots.clear();\n editingView.focus();\n }\n /**\n\t * Focuses the textarea containing document source from the first editing root.\n\t */ _focusSourceEditing() {\n const editor = this.editor;\n const [domSourceEditingElementWrapper] = this._replacedRoots.values();\n const textarea = domSourceEditingElementWrapper.querySelector('textarea');\n // The FocusObserver was disabled by View.render() while the DOM root was getting hidden and the replacer\n // revealed the textarea. So it couldn't notice that the DOM root got blurred in the process.\n // Let's sync this state manually here because otherwise Renderer will attempt to render selection\n // in an invisible DOM root.\n editor.editing.view.document.isFocused = false;\n textarea.focus();\n }\n /**\n\t * Disables all commands.\n\t */ _disableCommands() {\n const editor = this.editor;\n for (const command of editor.commands.commands()){\n command.forceDisabled(COMMAND_FORCE_DISABLE_ID);\n }\n // Comments archive UI plugin will be disabled manually too.\n if (editor.plugins.has('CommentsArchiveUI')) {\n editor.plugins.get('CommentsArchiveUI').forceDisabled(COMMAND_FORCE_DISABLE_ID);\n }\n }\n /**\n\t * Clears forced disable for all commands, that was previously set through {@link #_disableCommands}.\n\t */ _enableCommands() {\n const editor = this.editor;\n for (const command of editor.commands.commands()){\n command.clearForceDisabled(COMMAND_FORCE_DISABLE_ID);\n }\n // Comments archive UI plugin will be enabled manually too.\n if (editor.plugins.has('CommentsArchiveUI')) {\n editor.plugins.get('CommentsArchiveUI').clearForceDisabled(COMMAND_FORCE_DISABLE_ID);\n }\n }\n /**\n\t * Adds or removes the `readonly` attribute from the textarea from all roots, if document source mode is active.\n\t *\n\t * @param isReadOnly Indicates whether all textarea elements should be read-only.\n\t */ _handleReadOnlyMode(isReadOnly) {\n if (!this.isSourceEditingMode) {\n return;\n }\n for (const [, domSourceEditingElementWrapper] of this._replacedRoots){\n domSourceEditingElementWrapper.querySelector('textarea').readOnly = isReadOnly;\n }\n }\n /**\n\t * Checks, if the plugin is allowed to handle the source editing mode by itself. Currently, the source editing mode is supported only\n\t * for the {@link module:editor-classic/classiceditor~ClassicEditor classic editor}.\n\t */ _isAllowedToHandleSourceEditingMode() {\n const editor = this.editor;\n const editable = editor.ui.view.editable;\n // Checks, if the editor's editable belongs to the editor's DOM tree.\n return editable && !editable.hasExternalElement;\n }\n /**\n\t * If any {@link module:ui/dialog/dialogview~DialogView editor dialog} is currently visible, hide it.\n\t */ _hideVisibleDialog() {\n if (this.editor.plugins.has('Dialog')) {\n const dialogPlugin = this.editor.plugins.get('Dialog');\n if (dialogPlugin.isOpen) {\n dialogPlugin.hide();\n }\n }\n }\n _createButton(ButtonClass) {\n const editor = this.editor;\n const buttonView = new ButtonClass(editor.locale);\n buttonView.set({\n withText: true,\n isToggleable: true\n });\n buttonView.bind('isOn').to(this, 'isSourceEditingMode');\n // The button should be disabled if one of the following conditions is met:\n buttonView.bind('isEnabled').to(this, 'isEnabled', editor, 'isReadOnly', editor.plugins.get(PendingActions), 'hasAny', (isEnabled, isEditorReadOnly, hasAnyPendingActions)=>{\n // (1) The plugin itself is disabled.\n if (!isEnabled) {\n return false;\n }\n // (2) The editor is in read-only mode.\n if (isEditorReadOnly) {\n return false;\n }\n // (3) Any pending action is scheduled. It may change the model, so modifying the document source should be prevented\n // until the model is finally set.\n if (hasAnyPendingActions) {\n return false;\n }\n return true;\n });\n this.listenTo(buttonView, 'execute', ()=>{\n this.isSourceEditingMode = !this.isSourceEditingMode;\n });\n return buttonView;\n }\n}\n/**\n * Formats the content for a better readability.\n *\n * For a non-HTML source the unchanged input string is returned.\n *\n * @param input Input string to check.\n */ function formatSource(input) {\n if (!isHtml(input)) {\n return input;\n }\n return formatHtml(input);\n}\n/**\n * Checks, if the document source is HTML. It is sufficient to just check the first character from the document data.\n *\n * @param input Input string to check.\n */ function isHtml(input) {\n return input.startsWith('<');\n}\n\nexport { SourceEditing };\n//# sourceMappingURL=index.js.map\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module source-editing/utils/formathtml\n */\n\n/**\n * A simple (and naive) HTML code formatter that returns a formatted HTML markup that can be easily\n * parsed by human eyes. It beautifies the HTML code by adding new lines between elements that behave like block elements\n * (https://developer.mozilla.org/en-US/docs/Web/HTML/Block-level_elements\n * and a few more like `tr`, `td`, and similar ones) and inserting indents for nested content.\n *\n * WARNING: This function works only on a text that does not contain any indentations or new lines.\n * Calling this function on the already formatted text will damage the formatting.\n *\n * @param input An HTML string to format.\n */\nexport function formatHtml( input: string ): string {\n\t// A list of block-like elements around which the new lines should be inserted, and within which\n\t// the indentation of their children should be increased.\n\t// The list is partially based on https://developer.mozilla.org/en-US/docs/Web/HTML/Block-level_elements that contains\n\t// a full list of HTML block-level elements.\n\t// A void element is an element that cannot have any child - https://html.spec.whatwg.org/multipage/syntax.html#void-elements.\n\t// Note that <pre> element is not listed on this list to avoid breaking whitespace formatting.\n\t// Note that <br> element is not listed and handled separately so no additional white spaces are injected.\n\tconst elementsToFormat: Array<ElementToFormat> = [\n\t\t{ name: 'address', isVoid: false },\n\t\t{ name: 'article', isVoid: false },\n\t\t{ name: 'aside', isVoid: false },\n\t\t{ name: 'blockquote', isVoid: false },\n\t\t{ name: 'details', isVoid: false },\n\t\t{ name: 'dialog', isVoid: false },\n\t\t{ name: 'dd', isVoid: false },\n\t\t{ name: 'div', isVoid: false },\n\t\t{ name: 'dl', isVoid: false },\n\t\t{ name: 'dt', isVoid: false },\n\t\t{ name: 'fieldset', isVoid: false },\n\t\t{ name: 'figcaption', isVoid: false },\n\t\t{ name: 'figure', isVoid: false },\n\t\t{ name: 'footer', isVoid: false },\n\t\t{ name: 'form', isVoid: false },\n\t\t{ name: 'h1', isVoid: false },\n\t\t{ name: 'h2', isVoid: false },\n\t\t{ name: 'h3', isVoid: false },\n\t\t{ name: 'h4', isVoid: false },\n\t\t{ name: 'h5', isVoid: false },\n\t\t{ name: 'h6', isVoid: false },\n\t\t{ name: 'header', isVoid: false },\n\t\t{ name: 'hgroup', isVoid: false },\n\t\t{ name: 'hr', isVoid: true },\n\t\t{ name: 'li', isVoid: false },\n\t\t{ name: 'main', isVoid: false },\n\t\t{ name: 'nav', isVoid: false },\n\t\t{ name: 'ol', isVoid: false },\n\t\t{ name: 'p', isVoid: false },\n\t\t{ name: 'section', isVoid: false },\n\t\t{ name: 'table', isVoid: false },\n\t\t{ name: 'tbody', isVoid: false },\n\t\t{ name: 'td', isVoid: false },\n\t\t{ name: 'th', isVoid: false },\n\t\t{ name: 'thead', isVoid: false },\n\t\t{ name: 'tr', isVoid: false },\n\t\t{ name: 'ul', isVoid: false }\n\t];\n\n\tconst elementNamesToFormat = elementsToFormat.map( element => element.name ).join( '|' );\n\n\t// It is not the fastest way to format the HTML markup but the performance should be good enough.\n\tconst lines = input\n\t\t// Add new line before and after `<tag>` and `</tag>`.\n\t\t// It may separate individual elements with two new lines, but this will be fixed below.\n\t\t.replace( new RegExp( `</?(${ elementNamesToFormat })( .*?)?>`, 'g' ), '\\n$&\\n' )\n\t\t// Keep `<br>`s at the end of line to avoid adding additional whitespaces before `<br>`.\n\t\t.replace( /<br[^>]*>/g, '$&\\n' )\n\t\t// Divide input string into lines, which start with either an opening tag, a closing tag, or just a text.\n\t\t.split( '\\n' );\n\n\tlet indentCount = 0;\n\tlet isPreformattedLine: ReturnType<typeof isPreformattedBlockLine> = false;\n\n\treturn lines\n\t\t.filter( line => line.length )\n\t\t.map( line => {\n\t\t\tisPreformattedLine = isPreformattedBlockLine( line, isPreformattedLine );\n\n\t\t\tif ( isNonVoidOpeningTag( line, elementsToFormat ) ) {\n\t\t\t\treturn indentLine( line, indentCount++ );\n\t\t\t}\n\n\t\t\tif ( isClosingTag( line, elementsToFormat ) ) {\n\t\t\t\treturn indentLine( line, --indentCount );\n\t\t\t}\n\n\t\t\tif ( isPreformattedLine === 'middle' || isPreformattedLine === 'last' ) {\n\t\t\t\treturn line;\n\t\t\t}\n\n\t\t\treturn indentLine( line, indentCount );\n\t\t} )\n\t\t.join( '\\n' );\n}\n\n/**\n * Checks, if an argument is an opening tag of a non-void element to be formatted.\n *\n * @param line String to check.\n * @param elementsToFormat Elements to be formatted.\n */\nfunction isNonVoidOpeningTag( line: string, elementsToFormat: Array<ElementToFormat> ): boolean {\n\treturn elementsToFormat.some( element => {\n\t\tif ( element.isVoid ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( !new RegExp( `<${ element.name }( .*?)?>` ).test( line ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} );\n}\n\n/**\n * Checks, if an argument is a closing tag.\n *\n * @param line String to check.\n * @param elementsToFormat Elements to be formatted.\n */\nfunction isClosingTag( line: string, elementsToFormat: Array<ElementToFormat> ): boolean {\n\treturn elementsToFormat.some( element => {\n\t\treturn new RegExp( `</${ element.name }>` ).test( line );\n\t} );\n}\n\n/**\n * Indents a line by a specified number of characters.\n *\n * @param line Line to indent.\n * @param indentCount Number of characters to use for indentation.\n * @param indentChar Indentation character(s). 4 spaces by default.\n */\nfunction indentLine( line: string, indentCount: number, indentChar: string = ' ' ): string {\n\t// More about Math.max() here in https://github.com/ckeditor/ckeditor5/issues/10698.\n\treturn `${ indentChar.repeat( Math.max( 0, indentCount ) ) }${ line }`;\n}\n\n/**\n * Checks whether a line belongs to a preformatted (`<pre>`) block.\n *\n * @param line Line to check.\n * @param isPreviousLinePreFormatted Information on whether the previous line was preformatted (and how).\n */\nfunction isPreformattedBlockLine( line: string, isPreviousLinePreFormatted: 'first' | 'last' | 'middle' | false ) {\n\tif ( new RegExp( '<pre( .*?)?>' ).test( line ) ) {\n\t\treturn 'first';\n\t} else if ( new RegExp( '</pre>' ).test( line ) ) {\n\t\treturn 'last';\n\t} else if ( isPreviousLinePreFormatted === 'first' || isPreviousLinePreFormatted === 'middle' ) {\n\t\treturn 'middle';\n\t} else {\n\t\treturn false;\n\t}\n}\n\n/**\n * Element to be formatted.\n */\ninterface ElementToFormat {\n\n\t/**\n\t * Element name.\n\t */\n\tname: string;\n\n\t/**\n\t * Flag indicating whether element is a void one.\n\t */\n\tisVoid: boolean;\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module source-editing/sourceediting\n */\n\n/* global console */\n\nimport { type Editor, Plugin, PendingActions } from 'ckeditor5/src/core.js';\nimport { ButtonView, MenuBarMenuListItemButtonView, type Dialog } from 'ckeditor5/src/ui.js';\nimport { CKEditorError, createElement, ElementReplacer } from 'ckeditor5/src/utils.js';\nimport { formatHtml } from './utils/formathtml.js';\n\nimport '../theme/sourceediting.css';\nimport sourceEditingIcon from '../theme/icons/source-editing.svg';\n\nconst COMMAND_FORCE_DISABLE_ID = 'SourceEditingMode';\n\n/**\n * The source editing feature.\n *\n * It provides the possibility to view and edit the source of the document.\n *\n * For a detailed overview, check the {@glink features/source-editing source editing feature documentation} and the\n * {@glink api/source-editing package page}.\n */\nexport default class SourceEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'SourceEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ PendingActions ] as const;\n\t}\n\n\t/**\n\t * Flag indicating whether the document source mode is active.\n\t *\n\t * @observable\n\t */\n\tdeclare public isSourceEditingMode: boolean;\n\n\t/**\n\t * The element replacer instance used to replace the editing roots with the wrapper elements containing the document source.\n\t */\n\tprivate _elementReplacer: ElementReplacer;\n\n\t/**\n\t * Maps all root names to wrapper elements containing the document source.\n\t */\n\tprivate _replacedRoots: Map<string, HTMLElement>;\n\n\t/**\n\t * Maps all root names to their document data.\n\t */\n\tprivate _dataFromRoots: Map<string, string>;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\tthis.set( 'isSourceEditingMode', false );\n\t\tthis._elementReplacer = new ElementReplacer();\n\t\tthis._replacedRoots = new Map();\n\t\tthis._dataFromRoots = new Map();\n\n\t\teditor.config.define( 'sourceEditing.allowCollaborationFeatures', false );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tthis._checkCompatibility();\n\n\t\tconst editor = this.editor;\n\t\tconst t = editor.locale.t;\n\n\t\teditor.ui.componentFactory.add( 'sourceEditing', () => {\n\t\t\tconst buttonView = this._createButton( ButtonView );\n\n\t\t\tbuttonView.set( {\n\t\t\t\tlabel: t( 'Source' ),\n\t\t\t\ticon: sourceEditingIcon,\n\t\t\t\ttooltip: true,\n\t\t\t\tclass: 'ck-source-editing-button'\n\t\t\t} );\n\n\t\t\treturn buttonView;\n\t\t} );\n\n\t\teditor.ui.componentFactory.add( 'menuBar:sourceEditing', () => {\n\t\t\tconst buttonView = this._createButton( MenuBarMenuListItemButtonView );\n\n\t\t\tbuttonView.set( {\n\t\t\t\tlabel: t( 'Show source' ),\n\t\t\t\trole: 'menuitemcheckbox'\n\t\t\t} );\n\n\t\t\treturn buttonView;\n\t\t} );\n\n\t\t// Currently, the plugin handles the source editing mode by itself only for the classic editor. To use this plugin with other\n\t\t// integrations, listen to the `change:isSourceEditingMode` event and act accordingly.\n\t\tif ( this._isAllowedToHandleSourceEditingMode() ) {\n\t\t\tthis.on( 'change:isSourceEditingMode', ( evt, name, isSourceEditingMode ) => {\n\t\t\t\tif ( isSourceEditingMode ) {\n\t\t\t\t\tthis._hideVisibleDialog();\n\t\t\t\t\tthis._showSourceEditing();\n\t\t\t\t\tthis._disableCommands();\n\t\t\t\t} else {\n\t\t\t\t\tthis._hideSourceEditing();\n\t\t\t\t\tthis._enableCommands();\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tthis.on( 'change:isEnabled', ( evt, name, isEnabled ) => this._handleReadOnlyMode( !isEnabled ) );\n\n\t\t\tthis.listenTo( editor, 'change:isReadOnly', ( evt, name, isReadOnly ) => this._handleReadOnlyMode( isReadOnly ) );\n\t\t}\n\n\t\t// Update the editor data while calling editor.getData() in the source editing mode.\n\t\teditor.data.on( 'get', () => {\n\t\t\tif ( this.isSourceEditingMode ) {\n\t\t\t\tthis.updateEditorData();\n\t\t\t}\n\t\t}, { priority: 'high' } );\n\t}\n\n\t/**\n\t * Updates the source data in all hidden editing roots.\n\t */\n\tpublic updateEditorData(): void {\n\t\tconst editor = this.editor;\n\t\tconst data: Record<string, string> = {};\n\n\t\tfor ( const [ rootName, domSourceEditingElementWrapper ] of this._replacedRoots ) {\n\t\t\tconst oldData = this._dataFromRoots.get( rootName );\n\t\t\tconst newData = domSourceEditingElementWrapper.dataset.value!;\n\n\t\t\t// Do not set the data unless some changes have been made in the meantime.\n\t\t\t// This prevents empty undo steps after switching to the normal editor.\n\t\t\tif ( oldData !== newData ) {\n\t\t\t\tdata[ rootName ] = newData;\n\t\t\t\tthis._dataFromRoots.set( rootName, newData );\n\t\t\t}\n\t\t}\n\n\t\tif ( Object.keys( data ).length ) {\n\t\t\teditor.data.set( data, { batchType: { isUndoable: true }, suppressErrorInCollaboration: true } );\n\t\t}\n\t}\n\n\tprivate _checkCompatibility() {\n\t\tconst editor = this.editor;\n\t\tconst allowCollaboration = editor.config.get( 'sourceEditing.allowCollaborationFeatures' );\n\n\t\tif ( !allowCollaboration && editor.plugins.has( 'RealTimeCollaborativeEditing' ) ) {\n\t\t\t/**\n\t\t\t * Source editing feature is not fully compatible with real-time collaboration,\n\t\t\t * and using it may lead to data loss. Please read\n\t\t\t * {@glink features/source-editing#limitations-and-incompatibilities source editing feature guide} to learn more.\n\t\t\t *\n\t\t\t * If you understand the possible risk of data loss, you can enable the source editing\n\t\t\t * by setting the\n\t\t\t * {@link module:source-editing/sourceeditingconfig~SourceEditingConfig#allowCollaborationFeatures}\n\t\t\t * configuration flag to `true`.\n\t\t\t *\n\t\t\t * @error source-editing-incompatible-with-real-time-collaboration\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'source-editing-incompatible-with-real-time-collaboration', null );\n\t\t}\n\n\t\tconst collaborationPluginNamesToWarn = [\n\t\t\t'CommentsEditing',\n\t\t\t'TrackChangesEditing',\n\t\t\t'RevisionHistory'\n\t\t];\n\n\t\t// Currently, the basic integration with Collaboration Features is to display a warning in the console.\n\t\t//\n\t\t// If `allowCollaboration` flag is set, do not show these warnings. If the flag is set, we assume that the integrator read\n\t\t// appropriate section of the guide so there's no use to spam the console with warnings.\n\t\t//\n\t\tif ( !allowCollaboration && collaborationPluginNamesToWarn.some( pluginName => editor.plugins.has( pluginName ) ) ) {\n\t\t\tconsole.warn(\n\t\t\t\t'You initialized the editor with the source editing feature and at least one of the collaboration features. ' +\n\t\t\t\t'Please be advised that the source editing feature may not work, and be careful when editing document source ' +\n\t\t\t\t'that contains markers created by the collaboration features.'\n\t\t\t);\n\t\t}\n\n\t\t// Restricted Editing integration can also lead to problems. Warn the user accordingly.\n\t\tif ( editor.plugins.has( 'RestrictedEditingModeEditing' ) ) {\n\t\t\tconsole.warn(\n\t\t\t\t'You initialized the editor with the source editing feature and restricted editing feature. ' +\n\t\t\t\t'Please be advised that the source editing feature may not work, and be careful when editing document source ' +\n\t\t\t\t'that contains markers created by the restricted editing feature.'\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Creates source editing wrappers that replace each editing root. Each wrapper contains the document source from the corresponding\n\t * root.\n\t *\n\t * The wrapper element contains a textarea and it solves the problem, that the textarea element cannot auto expand its height based on\n\t * the content it contains. The solution is to make the textarea more like a plain div element, which expands in height as much as it\n\t * needs to, in order to display the whole document source without scrolling. The wrapper element is a parent for the textarea and for\n\t * the pseudo-element `::after`, that replicates the look, content, and position of the textarea. The pseudo-element replica is hidden,\n\t * but it is styled to be an identical visual copy of the textarea with the same content. Then, the wrapper is a grid container and both\n\t * of its children (the textarea and the `::after` pseudo-element) are positioned within a CSS grid to occupy the same grid cell. The\n\t * content in the pseudo-element `::after` is set in CSS and it stretches the grid to the appropriate size based on the textarea value.\n\t * Since both children occupy the same grid cell, both have always the same height.\n\t */\n\tprivate _showSourceEditing(): void {\n\t\tconst editor = this.editor;\n\t\tconst editingView = editor.editing.view;\n\t\tconst model = editor.model;\n\n\t\tmodel.change( writer => {\n\t\t\twriter.setSelection( null );\n\t\t\twriter.removeSelectionAttribute( model.document.selection.getAttributeKeys() );\n\t\t} );\n\n\t\t// It is not needed to iterate through all editing roots, as currently the plugin supports only the Classic Editor with a single\n\t\t// main root, but this code may help understand and use this feature in external integrations.\n\t\tfor ( const [ rootName, domRootElement ] of editingView.domRoots ) {\n\t\t\tconst data = formatSource( editor.data.get( { rootName } ) );\n\n\t\t\tconst domSourceEditingElementTextarea = createElement( domRootElement.ownerDocument, 'textarea', {\n\t\t\t\trows: '1',\n\t\t\t\t'aria-label': 'Source code editing area'\n\t\t\t} );\n\n\t\t\tconst domSourceEditingElementWrapper = createElement( domRootElement.ownerDocument, 'div', {\n\t\t\t\tclass: 'ck-source-editing-area',\n\t\t\t\t'data-value': data\n\t\t\t}, [ domSourceEditingElementTextarea ] );\n\n\t\t\tdomSourceEditingElementTextarea.value = data;\n\n\t\t\t// Setting a value to textarea moves the input cursor to the end. We want the selection at the beginning.\n\t\t\tdomSourceEditingElementTextarea.setSelectionRange( 0, 0 );\n\n\t\t\t// Bind the textarea's value to the wrapper's `data-value` property. Each change of the textarea's value updates the\n\t\t\t// wrapper's `data-value` property.\n\t\t\tdomSourceEditingElementTextarea.addEventListener( 'input', () => {\n\t\t\t\tdomSourceEditingElementWrapper.dataset.value = domSourceEditingElementTextarea.value;\n\n\t\t\t\teditor.ui.update();\n\t\t\t} );\n\n\t\t\teditingView.change( writer => {\n\t\t\t\tconst viewRoot = editingView.document.getRoot( rootName )!;\n\n\t\t\t\twriter.addClass( 'ck-hidden', viewRoot );\n\t\t\t} );\n\n\t\t\t// Register the element so it becomes available for Alt+F10 and Esc navigation.\n\t\t\teditor.ui.setEditableElement( 'sourceEditing:' + rootName, domSourceEditingElementTextarea );\n\n\t\t\tthis._replacedRoots.set( rootName, domSourceEditingElementWrapper );\n\n\t\t\tthis._elementReplacer.replace( domRootElement, domSourceEditingElementWrapper );\n\n\t\t\tthis._dataFromRoots.set( rootName, data );\n\t\t}\n\n\t\tthis._focusSourceEditing();\n\t}\n\n\t/**\n\t * Restores all hidden editing roots and sets the source data in them.\n\t */\n\tprivate _hideSourceEditing(): void {\n\t\tconst editor = this.editor;\n\t\tconst editingView = editor.editing.view;\n\n\t\tthis.updateEditorData();\n\n\t\teditingView.change( writer => {\n\t\t\tfor ( const [ rootName ] of this._replacedRoots ) {\n\t\t\t\twriter.removeClass( 'ck-hidden', editingView.document.getRoot( rootName )! );\n\t\t\t}\n\t\t} );\n\n\t\tthis._elementReplacer.restore();\n\n\t\tthis._replacedRoots.clear();\n\t\tthis._dataFromRoots.clear();\n\n\t\teditingView.focus();\n\t}\n\n\t/**\n\t * Focuses the textarea containing document source from the first editing root.\n\t */\n\tprivate _focusSourceEditing(): void {\n\t\tconst editor = this.editor;\n\t\tconst [ domSourceEditingElementWrapper ] = this._replacedRoots.values();\n\t\tconst textarea = domSourceEditingElementWrapper.querySelector( 'textarea' )!;\n\n\t\t// The FocusObserver was disabled by View.render() while the DOM root was getting hidden and the replacer\n\t\t// revealed the textarea. So it couldn't notice that the DOM root got blurred in the process.\n\t\t// Let's sync this state manually here because otherwise Renderer will attempt to render selection\n\t\t// in an invisible DOM root.\n\t\teditor.editing.view.document.isFocused = false;\n\n\t\ttextarea.focus();\n\t}\n\n\t/**\n\t * Disables all commands.\n\t */\n\tprivate _disableCommands(): void {\n\t\tconst editor = this.editor;\n\n\t\tfor ( const command of editor.commands.commands() ) {\n\t\t\tcommand.forceDisabled( COMMAND_FORCE_DISABLE_ID );\n\t\t}\n\n\t\t// Comments archive UI plugin will be disabled manually too.\n\t\tif ( editor.plugins.has( 'CommentsArchiveUI' ) ) {\n\t\t\t( editor.plugins.get( 'CommentsArchiveUI' ) as Plugin ).forceDisabled( COMMAND_FORCE_DISABLE_ID );\n\t\t}\n\t}\n\n\t/**\n\t * Clears forced disable for all commands, that was previously set through {@link #_disableCommands}.\n\t */\n\tprivate _enableCommands(): void {\n\t\tconst editor = this.editor;\n\n\t\tfor ( const command of editor.commands.commands() ) {\n\t\t\tcommand.clearForceDisabled( COMMAND_FORCE_DISABLE_ID );\n\t\t}\n\n\t\t// Comments archive UI plugin will be enabled manually too.\n\t\tif ( editor.plugins.has( 'CommentsArchiveUI' ) ) {\n\t\t\t( editor.plugins.get( 'CommentsArchiveUI' ) as Plugin ).clearForceDisabled( COMMAND_FORCE_DISABLE_ID );\n\t\t}\n\t}\n\n\t/**\n\t * Adds or removes the `readonly` attribute from the textarea from all roots, if document source mode is active.\n\t *\n\t * @param isReadOnly Indicates whether all textarea elements should be read-only.\n\t */\n\tprivate _handleReadOnlyMode( isReadOnly: boolean ): void {\n\t\tif ( !this.isSourceEditingMode ) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor ( const [ , domSourceEditingElementWrapper ] of this._replacedRoots ) {\n\t\t\tdomSourceEditingElementWrapper.querySelector( 'textarea' )!.readOnly = isReadOnly;\n\t\t}\n\t}\n\n\t/**\n\t * Checks, if the plugin is allowed to handle the source editing mode by itself. Currently, the source editing mode is supported only\n\t * for the {@link module:editor-classic/classiceditor~ClassicEditor classic editor}.\n\t */\n\tprivate _isAllowedToHandleSourceEditingMode(): boolean {\n\t\tconst editor = this.editor;\n\t\tconst editable = editor.ui.view.editable;\n\n\t\t// Checks, if the editor's editable belongs to the editor's DOM tree.\n\t\treturn editable && !editable.hasExternalElement;\n\t}\n\n\t/**\n\t * If any {@link module:ui/dialog/dialogview~DialogView editor dialog} is currently visible, hide it.\n\t */\n\tprivate _hideVisibleDialog(): void {\n\t\tif ( this.editor.plugins.has( 'Dialog' ) ) {\n\t\t\tconst dialogPlugin: Dialog = this.editor.plugins.get( 'Dialog' );\n\n\t\t\tif ( dialogPlugin.isOpen ) {\n\t\t\t\tdialogPlugin.hide();\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _createButton<T extends typeof ButtonView>( ButtonClass: T ): InstanceType<T> {\n\t\tconst editor = this.editor;\n\t\tconst buttonView = new ButtonClass( editor.locale ) as InstanceType<T>;\n\n\t\tbuttonView.set( {\n\t\t\twithText: true,\n\t\t\tisToggleable: true\n\t\t} );\n\n\t\tbuttonView.bind( 'isOn' ).to( this, 'isSourceEditingMode' );\n\n\t\t// The button should be disabled if one of the following conditions is met:\n\t\tbuttonView.bind( 'isEnabled' ).to(\n\t\t\tthis, 'isEnabled',\n\t\t\teditor, 'isReadOnly',\n\t\t\teditor.plugins.get( PendingActions ), 'hasAny',\n\t\t\t( isEnabled, isEditorReadOnly, hasAnyPendingActions ) => {\n\t\t\t\t// (1) The plugin itself is disabled.\n\t\t\t\tif ( !isEnabled ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// (2) The editor is in read-only mode.\n\t\t\t\tif ( isEditorReadOnly ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// (3) Any pending action is scheduled. It may change the model, so modifying the document source should be prevented\n\t\t\t\t// until the model is finally set.\n\t\t\t\tif ( hasAnyPendingActions ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t);\n\n\t\tthis.listenTo( buttonView, 'execute', () => {\n\t\t\tthis.isSourceEditingMode = !this.isSourceEditingMode;\n\t\t} );\n\n\t\treturn buttonView;\n\t}\n}\n\n/**\n * Formats the content for a better readability.\n *\n * For a non-HTML source the unchanged input string is returned.\n *\n * @param input Input string to check.\n */\nfunction formatSource( input: string ): string {\n\tif ( !isHtml( input ) ) {\n\t\treturn input;\n\t}\n\n\treturn formatHtml( input );\n}\n\n/**\n * Checks, if the document source is HTML. It is sufficient to just check the first character from the document data.\n *\n * @param input Input string to check.\n */\nfunction isHtml( input: string ): boolean {\n\treturn input.startsWith( '<' );\n}\n"]}
1
+ {"version":3,"sources":["index.js","../src/utils/formathtml.js","../src/sourceediting.js"],"names":["formatHtml","input","elementsToFormat","name","isVoid","elementNamesToFormat","map","element","join","lines","replace","RegExp","split","indentCount","isPreformattedLine","filter","line","length","isPreformattedBlockLine","isNonVoidOpeningTag","indentLine","isClosingTag","some","test","indentChar","repeat","Math","max","isPreviousLinePreFormatted","COMMAND_FORCE_DISABLE_ID","SourceEditing","Plugin","pluginName","isOfficialPlugin","requires","PendingActions","constructor","editor","set","_elementReplacer","ElementReplacer","_replacedRoots","Map","_dataFromRoots","config","define","init","_checkCompatibility","t","locale","ui","componentFactory","add","buttonView","_createButton","ButtonView","label","icon","sourceEditingIcon","tooltip","class","MenuBarMenuListItemButtonView","role","_isAllowedToHandleSourceEditingMode","on","evt","isSourceEditingMode","_hideVisibleDialog","_showSourceEditing","_disableCommands","_hideSourceEditing","_enableCommands","isEnabled","_handleReadOnlyMode","listenTo","isReadOnly","data","updateEditorData","priority","rootName","domSourceEditingElementWrapper","oldData","get","newData","dataset","value","Object","keys","batchType","isUndoable","suppressErrorInCollaboration","allowCollaboration","plugins","has","CKEditorError","collaborationPluginNamesToWarn","console","warn","editingView","editing","view","model","change","writer","setSelection","removeSelectionAttribute","document","selection","getAttributeKeys","domRootElement","domRoots","formatSource","domSourceEditingElementTextarea","createElement","ownerDocument","rows","setSelectionRange","addEventListener","update","viewRoot","getRoot","addClass","setEditableElement","_focusSourceEditing","removeClass","restore","clear","focus","values","textarea","querySelector","isFocused","command","commands","forceDisabled","clearForceDisabled","readOnly","editable","hasExternalElement","dialogPlugin","isOpen","hide","ButtonClass","withText","isToggleable","bind","to","isEditorReadOnly","hasAnyPendingActions","isHtml","startsWith"],"mappings":"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C,CAAC,CAAC,CAAC,CAAC,CAAC,CCnDWC,MAAQ,CAAA,CAAA;AAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC5B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ADqDR,CCrDUD,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAM,CAAA,CAAA,CAAA,EAAA,CAAA;ADsDhB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CCtDWC,MAAQ,CAAA,CAAA;AAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC5B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ADwDR,CCxDUD,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAM,CAAA,CAAA,CAAA,EAAA,CAAA;ADyDhB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CCzDWC,MAAQ,CAAA,CAAA;AAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC5B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AD2DR,CC3DUD,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAM,CAAA,CAAA,CAAA,EAAA,CAAA;AD4DhB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CC5DWC,MAAQ,CAAA,CAAA;AAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC5B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AD8DR,CC9DUD,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAM,CAAA,CAAA,CAAA,EAAA,CAAA;AD+DhB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CC/DWC,MAAQ,CAAA,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","file":"index.js.map","sourcesContent":["import { Plugin, PendingActions } from '@ckeditor/ckeditor5-core/dist/index.js';\nimport { ButtonView, MenuBarMenuListItemButtonView } from '@ckeditor/ckeditor5-ui/dist/index.js';\nimport { ElementReplacer, CKEditorError, createElement } from '@ckeditor/ckeditor5-utils/dist/index.js';\n\n/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */ /**\n * @module source-editing/utils/formathtml\n */ /**\n * A simple (and naive) HTML code formatter that returns a formatted HTML markup that can be easily\n * parsed by human eyes. It beautifies the HTML code by adding new lines between elements that behave like block elements\n * (https://developer.mozilla.org/en-US/docs/Web/HTML/Block-level_elements\n * and a few more like `tr`, `td`, and similar ones) and inserting indents for nested content.\n *\n * WARNING: This function works only on a text that does not contain any indentations or new lines.\n * Calling this function on the already formatted text will damage the formatting.\n *\n * @param input An HTML string to format.\n */ function formatHtml(input) {\n // A list of block-like elements around which the new lines should be inserted, and within which\n // the indentation of their children should be increased.\n // The list is partially based on https://developer.mozilla.org/en-US/docs/Web/HTML/Block-level_elements that contains\n // a full list of HTML block-level elements.\n // A void element is an element that cannot have any child - https://html.spec.whatwg.org/multipage/syntax.html#void-elements.\n // Note that <pre> element is not listed on this list to avoid breaking whitespace formatting.\n // Note that <br> element is not listed and handled separately so no additional white spaces are injected.\n const elementsToFormat = [\n {\n name: 'address',\n isVoid: false\n },\n {\n name: 'article',\n isVoid: false\n },\n {\n name: 'aside',\n isVoid: false\n },\n {\n name: 'blockquote',\n isVoid: false\n },\n {\n name: 'details',\n isVoid: false\n },\n {\n name: 'dialog',\n isVoid: false\n },\n {\n name: 'dd',\n isVoid: false\n },\n {\n name: 'div',\n isVoid: false\n },\n {\n name: 'dl',\n isVoid: false\n },\n {\n name: 'dt',\n isVoid: false\n },\n {\n name: 'fieldset',\n isVoid: false\n },\n {\n name: 'figcaption',\n isVoid: false\n },\n {\n name: 'figure',\n isVoid: false\n },\n {\n name: 'footer',\n isVoid: false\n },\n {\n name: 'form',\n isVoid: false\n },\n {\n name: 'h1',\n isVoid: false\n },\n {\n name: 'h2',\n isVoid: false\n },\n {\n name: 'h3',\n isVoid: false\n },\n {\n name: 'h4',\n isVoid: false\n },\n {\n name: 'h5',\n isVoid: false\n },\n {\n name: 'h6',\n isVoid: false\n },\n {\n name: 'header',\n isVoid: false\n },\n {\n name: 'hgroup',\n isVoid: false\n },\n {\n name: 'hr',\n isVoid: true\n },\n {\n name: 'li',\n isVoid: false\n },\n {\n name: 'main',\n isVoid: false\n },\n {\n name: 'nav',\n isVoid: false\n },\n {\n name: 'ol',\n isVoid: false\n },\n {\n name: 'p',\n isVoid: false\n },\n {\n name: 'section',\n isVoid: false\n },\n {\n name: 'table',\n isVoid: false\n },\n {\n name: 'tbody',\n isVoid: false\n },\n {\n name: 'td',\n isVoid: false\n },\n {\n name: 'th',\n isVoid: false\n },\n {\n name: 'thead',\n isVoid: false\n },\n {\n name: 'tr',\n isVoid: false\n },\n {\n name: 'ul',\n isVoid: false\n }\n ];\n const elementNamesToFormat = elementsToFormat.map((element)=>element.name).join('|');\n // It is not the fastest way to format the HTML markup but the performance should be good enough.\n const lines = input// Add new line before and after `<tag>` and `</tag>`.\n // It may separate individual elements with two new lines, but this will be fixed below.\n .replace(new RegExp(`</?(${elementNamesToFormat})( .*?)?>`, 'g'), '\\n$&\\n')// Keep `<br>`s at the end of line to avoid adding additional whitespaces before `<br>`.\n .replace(/<br[^>]*>/g, '$&\\n')// Divide input string into lines, which start with either an opening tag, a closing tag, or just a text.\n .split('\\n');\n let indentCount = 0;\n let isPreformattedLine = false;\n return lines.filter((line)=>line.length).map((line)=>{\n isPreformattedLine = isPreformattedBlockLine(line, isPreformattedLine);\n if (isNonVoidOpeningTag(line, elementsToFormat)) {\n return indentLine(line, indentCount++);\n }\n if (isClosingTag(line, elementsToFormat)) {\n return indentLine(line, --indentCount);\n }\n if (isPreformattedLine === 'middle' || isPreformattedLine === 'last') {\n return line;\n }\n return indentLine(line, indentCount);\n }).join('\\n');\n}\n/**\n * Checks, if an argument is an opening tag of a non-void element to be formatted.\n *\n * @param line String to check.\n * @param elementsToFormat Elements to be formatted.\n */ function isNonVoidOpeningTag(line, elementsToFormat) {\n return elementsToFormat.some((element)=>{\n if (element.isVoid) {\n return false;\n }\n if (!new RegExp(`<${element.name}( .*?)?>`).test(line)) {\n return false;\n }\n return true;\n });\n}\n/**\n * Checks, if an argument is a closing tag.\n *\n * @param line String to check.\n * @param elementsToFormat Elements to be formatted.\n */ function isClosingTag(line, elementsToFormat) {\n return elementsToFormat.some((element)=>{\n return new RegExp(`</${element.name}>`).test(line);\n });\n}\n/**\n * Indents a line by a specified number of characters.\n *\n * @param line Line to indent.\n * @param indentCount Number of characters to use for indentation.\n * @param indentChar Indentation character(s). 4 spaces by default.\n */ function indentLine(line, indentCount, indentChar = ' ') {\n // More about Math.max() here in https://github.com/ckeditor/ckeditor5/issues/10698.\n return `${indentChar.repeat(Math.max(0, indentCount))}${line}`;\n}\n/**\n * Checks whether a line belongs to a preformatted (`<pre>`) block.\n *\n * @param line Line to check.\n * @param isPreviousLinePreFormatted Information on whether the previous line was preformatted (and how).\n */ function isPreformattedBlockLine(line, isPreviousLinePreFormatted) {\n if (new RegExp('<pre( .*?)?>').test(line)) {\n return 'first';\n } else if (new RegExp('</pre>').test(line)) {\n return 'last';\n } else if (isPreviousLinePreFormatted === 'first' || isPreviousLinePreFormatted === 'middle') {\n return 'middle';\n } else {\n return false;\n }\n}\n\nvar sourceEditingIcon = \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m12.5 0 5 4.5v15.003h-16V0h11zM3 1.5v3.25l-1.497 1-.003 8 1.5 1v3.254L7.685 18l-.001 1.504H17.5V8.002L16 9.428l-.004-4.22-4.222-3.692L3 1.5z\\\"/><path d=\\\"M4.06 6.64a.75.75 0 0 1 .958 1.15l-.085.07L2.29 9.75l2.646 1.89c.302.216.4.62.232.951l-.058.095a.75.75 0 0 1-.951.232l-.095-.058-3.5-2.5V9.14l3.496-2.5zm4.194 6.22a.75.75 0 0 1-.958-1.149l.085-.07 2.643-1.89-2.646-1.89a.75.75 0 0 1-.232-.952l.058-.095a.75.75 0 0 1 .95-.232l.096.058 3.5 2.5v1.22l-3.496 2.5zm7.644-.836 2.122 2.122-5.825 5.809-2.125-.005.003-2.116zm2.539-1.847 1.414 1.414a.5.5 0 0 1 0 .707l-1.06 1.06-2.122-2.12 1.061-1.061a.5.5 0 0 1 .707 0z\\\"/></svg>\";\n\nconst COMMAND_FORCE_DISABLE_ID = 'SourceEditingMode';\n/**\n * The source editing feature.\n *\n * It provides the possibility to view and edit the source of the document.\n *\n * For a detailed overview, check the {@glink features/source-editing source editing feature documentation} and the\n * {@glink api/source-editing package page}.\n */ class SourceEditing extends Plugin {\n /**\n * @inheritDoc\n */ static get pluginName() {\n return 'SourceEditing';\n }\n /**\n * @inheritDoc\n */ static get isOfficialPlugin() {\n return true;\n }\n /**\n * @inheritDoc\n */ static get requires() {\n return [\n PendingActions\n ];\n }\n /**\n * @inheritDoc\n */ constructor(editor){\n super(editor);\n this.set('isSourceEditingMode', false);\n this._elementReplacer = new ElementReplacer();\n this._replacedRoots = new Map();\n this._dataFromRoots = new Map();\n editor.config.define('sourceEditing.allowCollaborationFeatures', false);\n }\n /**\n * @inheritDoc\n */ init() {\n this._checkCompatibility();\n const editor = this.editor;\n const t = editor.locale.t;\n editor.ui.componentFactory.add('sourceEditing', ()=>{\n const buttonView = this._createButton(ButtonView);\n buttonView.set({\n label: t('Source'),\n icon: sourceEditingIcon,\n tooltip: true,\n class: 'ck-source-editing-button'\n });\n return buttonView;\n });\n editor.ui.componentFactory.add('menuBar:sourceEditing', ()=>{\n const buttonView = this._createButton(MenuBarMenuListItemButtonView);\n buttonView.set({\n label: t('Show source'),\n role: 'menuitemcheckbox'\n });\n return buttonView;\n });\n // Currently, the plugin handles the source editing mode by itself only for the classic editor. To use this plugin with other\n // integrations, listen to the `change:isSourceEditingMode` event and act accordingly.\n if (this._isAllowedToHandleSourceEditingMode()) {\n this.on('change:isSourceEditingMode', (evt, name, isSourceEditingMode)=>{\n if (isSourceEditingMode) {\n this._hideVisibleDialog();\n this._showSourceEditing();\n this._disableCommands();\n } else {\n this._hideSourceEditing();\n this._enableCommands();\n }\n });\n this.on('change:isEnabled', (evt, name, isEnabled)=>this._handleReadOnlyMode(!isEnabled));\n this.listenTo(editor, 'change:isReadOnly', (evt, name, isReadOnly)=>this._handleReadOnlyMode(isReadOnly));\n }\n // Update the editor data while calling editor.getData() in the source editing mode.\n editor.data.on('get', ()=>{\n if (this.isSourceEditingMode) {\n this.updateEditorData();\n }\n }, {\n priority: 'high'\n });\n }\n /**\n * Updates the source data in all hidden editing roots.\n */ updateEditorData() {\n const editor = this.editor;\n const data = {};\n for (const [rootName, domSourceEditingElementWrapper] of this._replacedRoots){\n const oldData = this._dataFromRoots.get(rootName);\n const newData = domSourceEditingElementWrapper.dataset.value;\n // Do not set the data unless some changes have been made in the meantime.\n // This prevents empty undo steps after switching to the normal editor.\n if (oldData !== newData) {\n data[rootName] = newData;\n this._dataFromRoots.set(rootName, newData);\n }\n }\n if (Object.keys(data).length) {\n editor.data.set(data, {\n batchType: {\n isUndoable: true\n },\n suppressErrorInCollaboration: true\n });\n }\n }\n _checkCompatibility() {\n const editor = this.editor;\n const allowCollaboration = editor.config.get('sourceEditing.allowCollaborationFeatures');\n if (!allowCollaboration && editor.plugins.has('RealTimeCollaborativeEditing')) {\n /**\n * Source editing feature is not fully compatible with real-time collaboration,\n * and using it may lead to data loss. Please read\n * {@glink features/source-editing#limitations-and-incompatibilities source editing feature guide} to learn more.\n *\n * If you understand the possible risk of data loss, you can enable the source editing\n * by setting the\n * {@link module:source-editing/sourceeditingconfig~SourceEditingConfig#allowCollaborationFeatures}\n * configuration flag to `true`.\n *\n * @error source-editing-incompatible-with-real-time-collaboration\n */ throw new CKEditorError('source-editing-incompatible-with-real-time-collaboration', null);\n }\n const collaborationPluginNamesToWarn = [\n 'CommentsEditing',\n 'TrackChangesEditing',\n 'RevisionHistory'\n ];\n // Currently, the basic integration with Collaboration Features is to display a warning in the console.\n //\n // If `allowCollaboration` flag is set, do not show these warnings. If the flag is set, we assume that the integrator read\n // appropriate section of the guide so there's no use to spam the console with warnings.\n //\n if (!allowCollaboration && collaborationPluginNamesToWarn.some((pluginName)=>editor.plugins.has(pluginName))) {\n console.warn('You initialized the editor with the source editing feature and at least one of the collaboration features. ' + 'Please be advised that the source editing feature may not work, and be careful when editing document source ' + 'that contains markers created by the collaboration features.');\n }\n // Restricted Editing integration can also lead to problems. Warn the user accordingly.\n if (editor.plugins.has('RestrictedEditingModeEditing')) {\n console.warn('You initialized the editor with the source editing feature and restricted editing feature. ' + 'Please be advised that the source editing feature may not work, and be careful when editing document source ' + 'that contains markers created by the restricted editing feature.');\n }\n }\n /**\n * Creates source editing wrappers that replace each editing root. Each wrapper contains the document source from the corresponding\n * root.\n *\n * The wrapper element contains a textarea and it solves the problem, that the textarea element cannot auto expand its height based on\n * the content it contains. The solution is to make the textarea more like a plain div element, which expands in height as much as it\n * needs to, in order to display the whole document source without scrolling. The wrapper element is a parent for the textarea and for\n * the pseudo-element `::after`, that replicates the look, content, and position of the textarea. The pseudo-element replica is hidden,\n * but it is styled to be an identical visual copy of the textarea with the same content. Then, the wrapper is a grid container and both\n * of its children (the textarea and the `::after` pseudo-element) are positioned within a CSS grid to occupy the same grid cell. The\n * content in the pseudo-element `::after` is set in CSS and it stretches the grid to the appropriate size based on the textarea value.\n * Since both children occupy the same grid cell, both have always the same height.\n */ _showSourceEditing() {\n const editor = this.editor;\n const editingView = editor.editing.view;\n const model = editor.model;\n model.change((writer)=>{\n writer.setSelection(null);\n writer.removeSelectionAttribute(model.document.selection.getAttributeKeys());\n });\n // It is not needed to iterate through all editing roots, as currently the plugin supports only the Classic Editor with a single\n // main root, but this code may help understand and use this feature in external integrations.\n for (const [rootName, domRootElement] of editingView.domRoots){\n const data = formatSource(editor.data.get({\n rootName\n }));\n const domSourceEditingElementTextarea = createElement(domRootElement.ownerDocument, 'textarea', {\n rows: '1',\n 'aria-label': 'Source code editing area'\n });\n const domSourceEditingElementWrapper = createElement(domRootElement.ownerDocument, 'div', {\n class: 'ck-source-editing-area',\n 'data-value': data\n }, [\n domSourceEditingElementTextarea\n ]);\n domSourceEditingElementTextarea.value = data;\n // Setting a value to textarea moves the input cursor to the end. We want the selection at the beginning.\n domSourceEditingElementTextarea.setSelectionRange(0, 0);\n // Bind the textarea's value to the wrapper's `data-value` property. Each change of the textarea's value updates the\n // wrapper's `data-value` property.\n domSourceEditingElementTextarea.addEventListener('input', ()=>{\n domSourceEditingElementWrapper.dataset.value = domSourceEditingElementTextarea.value;\n editor.ui.update();\n });\n editingView.change((writer)=>{\n const viewRoot = editingView.document.getRoot(rootName);\n writer.addClass('ck-hidden', viewRoot);\n });\n // Register the element so it becomes available for Alt+F10 and Esc navigation.\n editor.ui.setEditableElement('sourceEditing:' + rootName, domSourceEditingElementTextarea);\n this._replacedRoots.set(rootName, domSourceEditingElementWrapper);\n this._elementReplacer.replace(domRootElement, domSourceEditingElementWrapper);\n this._dataFromRoots.set(rootName, data);\n }\n this._focusSourceEditing();\n }\n /**\n * Restores all hidden editing roots and sets the source data in them.\n */ _hideSourceEditing() {\n const editor = this.editor;\n const editingView = editor.editing.view;\n this.updateEditorData();\n editingView.change((writer)=>{\n for (const [rootName] of this._replacedRoots){\n writer.removeClass('ck-hidden', editingView.document.getRoot(rootName));\n }\n });\n this._elementReplacer.restore();\n this._replacedRoots.clear();\n this._dataFromRoots.clear();\n editingView.focus();\n }\n /**\n * Focuses the textarea containing document source from the first editing root.\n */ _focusSourceEditing() {\n const editor = this.editor;\n const [domSourceEditingElementWrapper] = this._replacedRoots.values();\n const textarea = domSourceEditingElementWrapper.querySelector('textarea');\n // The FocusObserver was disabled by View.render() while the DOM root was getting hidden and the replacer\n // revealed the textarea. So it couldn't notice that the DOM root got blurred in the process.\n // Let's sync this state manually here because otherwise Renderer will attempt to render selection\n // in an invisible DOM root.\n editor.editing.view.document.isFocused = false;\n textarea.focus();\n }\n /**\n * Disables all commands.\n */ _disableCommands() {\n const editor = this.editor;\n for (const command of editor.commands.commands()){\n command.forceDisabled(COMMAND_FORCE_DISABLE_ID);\n }\n // Comments archive UI plugin will be disabled manually too.\n if (editor.plugins.has('CommentsArchiveUI')) {\n editor.plugins.get('CommentsArchiveUI').forceDisabled(COMMAND_FORCE_DISABLE_ID);\n }\n }\n /**\n * Clears forced disable for all commands, that was previously set through {@link #_disableCommands}.\n */ _enableCommands() {\n const editor = this.editor;\n for (const command of editor.commands.commands()){\n command.clearForceDisabled(COMMAND_FORCE_DISABLE_ID);\n }\n // Comments archive UI plugin will be enabled manually too.\n if (editor.plugins.has('CommentsArchiveUI')) {\n editor.plugins.get('CommentsArchiveUI').clearForceDisabled(COMMAND_FORCE_DISABLE_ID);\n }\n }\n /**\n * Adds or removes the `readonly` attribute from the textarea from all roots, if document source mode is active.\n *\n * @param isReadOnly Indicates whether all textarea elements should be read-only.\n */ _handleReadOnlyMode(isReadOnly) {\n if (!this.isSourceEditingMode) {\n return;\n }\n for (const [, domSourceEditingElementWrapper] of this._replacedRoots){\n domSourceEditingElementWrapper.querySelector('textarea').readOnly = isReadOnly;\n }\n }\n /**\n * Checks, if the plugin is allowed to handle the source editing mode by itself. Currently, the source editing mode is supported only\n * for the {@link module:editor-classic/classiceditor~ClassicEditor classic editor}.\n */ _isAllowedToHandleSourceEditingMode() {\n const editor = this.editor;\n const editable = editor.ui.view.editable;\n // Checks, if the editor's editable belongs to the editor's DOM tree.\n return editable && !editable.hasExternalElement;\n }\n /**\n * If any {@link module:ui/dialog/dialogview~DialogView editor dialog} is currently visible, hide it.\n */ _hideVisibleDialog() {\n if (this.editor.plugins.has('Dialog')) {\n const dialogPlugin = this.editor.plugins.get('Dialog');\n if (dialogPlugin.isOpen) {\n dialogPlugin.hide();\n }\n }\n }\n _createButton(ButtonClass) {\n const editor = this.editor;\n const buttonView = new ButtonClass(editor.locale);\n buttonView.set({\n withText: true,\n isToggleable: true\n });\n buttonView.bind('isOn').to(this, 'isSourceEditingMode');\n // The button should be disabled if one of the following conditions is met:\n buttonView.bind('isEnabled').to(this, 'isEnabled', editor, 'isReadOnly', editor.plugins.get(PendingActions), 'hasAny', (isEnabled, isEditorReadOnly, hasAnyPendingActions)=>{\n // (1) The plugin itself is disabled.\n if (!isEnabled) {\n return false;\n }\n // (2) The editor is in read-only mode.\n if (isEditorReadOnly) {\n return false;\n }\n // (3) Any pending action is scheduled. It may change the model, so modifying the document source should be prevented\n // until the model is finally set.\n if (hasAnyPendingActions) {\n return false;\n }\n return true;\n });\n this.listenTo(buttonView, 'execute', ()=>{\n this.isSourceEditingMode = !this.isSourceEditingMode;\n });\n return buttonView;\n }\n}\n/**\n * Formats the content for a better readability.\n *\n * For a non-HTML source the unchanged input string is returned.\n *\n * @param input Input string to check.\n */ function formatSource(input) {\n if (!isHtml(input)) {\n return input;\n }\n return formatHtml(input);\n}\n/**\n * Checks, if the document source is HTML. It is sufficient to just check the first character from the document data.\n *\n * @param input Input string to check.\n */ function isHtml(input) {\n return input.startsWith('<');\n}\n\nexport { SourceEditing };\n//# sourceMappingURL=index.js.map\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n/**\n * @module source-editing/utils/formathtml\n */\n/**\n * A simple (and naive) HTML code formatter that returns a formatted HTML markup that can be easily\n * parsed by human eyes. It beautifies the HTML code by adding new lines between elements that behave like block elements\n * (https://developer.mozilla.org/en-US/docs/Web/HTML/Block-level_elements\n * and a few more like `tr`, `td`, and similar ones) and inserting indents for nested content.\n *\n * WARNING: This function works only on a text that does not contain any indentations or new lines.\n * Calling this function on the already formatted text will damage the formatting.\n *\n * @param input An HTML string to format.\n */\nexport function formatHtml(input) {\n // A list of block-like elements around which the new lines should be inserted, and within which\n // the indentation of their children should be increased.\n // The list is partially based on https://developer.mozilla.org/en-US/docs/Web/HTML/Block-level_elements that contains\n // a full list of HTML block-level elements.\n // A void element is an element that cannot have any child - https://html.spec.whatwg.org/multipage/syntax.html#void-elements.\n // Note that <pre> element is not listed on this list to avoid breaking whitespace formatting.\n // Note that <br> element is not listed and handled separately so no additional white spaces are injected.\n const elementsToFormat = [\n { name: 'address', isVoid: false },\n { name: 'article', isVoid: false },\n { name: 'aside', isVoid: false },\n { name: 'blockquote', isVoid: false },\n { name: 'details', isVoid: false },\n { name: 'dialog', isVoid: false },\n { name: 'dd', isVoid: false },\n { name: 'div', isVoid: false },\n { name: 'dl', isVoid: false },\n { name: 'dt', isVoid: false },\n { name: 'fieldset', isVoid: false },\n { name: 'figcaption', isVoid: false },\n { name: 'figure', isVoid: false },\n { name: 'footer', isVoid: false },\n { name: 'form', isVoid: false },\n { name: 'h1', isVoid: false },\n { name: 'h2', isVoid: false },\n { name: 'h3', isVoid: false },\n { name: 'h4', isVoid: false },\n { name: 'h5', isVoid: false },\n { name: 'h6', isVoid: false },\n { name: 'header', isVoid: false },\n { name: 'hgroup', isVoid: false },\n { name: 'hr', isVoid: true },\n { name: 'li', isVoid: false },\n { name: 'main', isVoid: false },\n { name: 'nav', isVoid: false },\n { name: 'ol', isVoid: false },\n { name: 'p', isVoid: false },\n { name: 'section', isVoid: false },\n { name: 'table', isVoid: false },\n { name: 'tbody', isVoid: false },\n { name: 'td', isVoid: false },\n { name: 'th', isVoid: false },\n { name: 'thead', isVoid: false },\n { name: 'tr', isVoid: false },\n { name: 'ul', isVoid: false }\n ];\n const elementNamesToFormat = elementsToFormat.map(element => element.name).join('|');\n // It is not the fastest way to format the HTML markup but the performance should be good enough.\n const lines = input\n // Add new line before and after `<tag>` and `</tag>`.\n // It may separate individual elements with two new lines, but this will be fixed below.\n .replace(new RegExp(`</?(${elementNamesToFormat})( .*?)?>`, 'g'), '\\n$&\\n')\n // Keep `<br>`s at the end of line to avoid adding additional whitespaces before `<br>`.\n .replace(/<br[^>]*>/g, '$&\\n')\n // Divide input string into lines, which start with either an opening tag, a closing tag, or just a text.\n .split('\\n');\n let indentCount = 0;\n let isPreformattedLine = false;\n return lines\n .filter(line => line.length)\n .map(line => {\n isPreformattedLine = isPreformattedBlockLine(line, isPreformattedLine);\n if (isNonVoidOpeningTag(line, elementsToFormat)) {\n return indentLine(line, indentCount++);\n }\n if (isClosingTag(line, elementsToFormat)) {\n return indentLine(line, --indentCount);\n }\n if (isPreformattedLine === 'middle' || isPreformattedLine === 'last') {\n return line;\n }\n return indentLine(line, indentCount);\n })\n .join('\\n');\n}\n/**\n * Checks, if an argument is an opening tag of a non-void element to be formatted.\n *\n * @param line String to check.\n * @param elementsToFormat Elements to be formatted.\n */\nfunction isNonVoidOpeningTag(line, elementsToFormat) {\n return elementsToFormat.some(element => {\n if (element.isVoid) {\n return false;\n }\n if (!new RegExp(`<${element.name}( .*?)?>`).test(line)) {\n return false;\n }\n return true;\n });\n}\n/**\n * Checks, if an argument is a closing tag.\n *\n * @param line String to check.\n * @param elementsToFormat Elements to be formatted.\n */\nfunction isClosingTag(line, elementsToFormat) {\n return elementsToFormat.some(element => {\n return new RegExp(`</${element.name}>`).test(line);\n });\n}\n/**\n * Indents a line by a specified number of characters.\n *\n * @param line Line to indent.\n * @param indentCount Number of characters to use for indentation.\n * @param indentChar Indentation character(s). 4 spaces by default.\n */\nfunction indentLine(line, indentCount, indentChar = ' ') {\n // More about Math.max() here in https://github.com/ckeditor/ckeditor5/issues/10698.\n return `${indentChar.repeat(Math.max(0, indentCount))}${line}`;\n}\n/**\n * Checks whether a line belongs to a preformatted (`<pre>`) block.\n *\n * @param line Line to check.\n * @param isPreviousLinePreFormatted Information on whether the previous line was preformatted (and how).\n */\nfunction isPreformattedBlockLine(line, isPreviousLinePreFormatted) {\n if (new RegExp('<pre( .*?)?>').test(line)) {\n return 'first';\n }\n else if (new RegExp('</pre>').test(line)) {\n return 'last';\n }\n else if (isPreviousLinePreFormatted === 'first' || isPreviousLinePreFormatted === 'middle') {\n return 'middle';\n }\n else {\n return false;\n }\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n/**\n * @module source-editing/sourceediting\n */\n/* global console */\nimport { Plugin, PendingActions } from 'ckeditor5/src/core.js';\nimport { ButtonView, MenuBarMenuListItemButtonView } from 'ckeditor5/src/ui.js';\nimport { CKEditorError, createElement, ElementReplacer } from 'ckeditor5/src/utils.js';\nimport { formatHtml } from './utils/formathtml.js';\nimport '../theme/sourceediting.css';\nimport sourceEditingIcon from '../theme/icons/source-editing.svg';\nconst COMMAND_FORCE_DISABLE_ID = 'SourceEditingMode';\n/**\n * The source editing feature.\n *\n * It provides the possibility to view and edit the source of the document.\n *\n * For a detailed overview, check the {@glink features/source-editing source editing feature documentation} and the\n * {@glink api/source-editing package page}.\n */\nexport default class SourceEditing extends Plugin {\n /**\n * @inheritDoc\n */\n static get pluginName() {\n return 'SourceEditing';\n }\n /**\n * @inheritDoc\n */\n static get isOfficialPlugin() {\n return true;\n }\n /**\n * @inheritDoc\n */\n static get requires() {\n return [PendingActions];\n }\n /**\n * @inheritDoc\n */\n constructor(editor) {\n super(editor);\n this.set('isSourceEditingMode', false);\n this._elementReplacer = new ElementReplacer();\n this._replacedRoots = new Map();\n this._dataFromRoots = new Map();\n editor.config.define('sourceEditing.allowCollaborationFeatures', false);\n }\n /**\n * @inheritDoc\n */\n init() {\n this._checkCompatibility();\n const editor = this.editor;\n const t = editor.locale.t;\n editor.ui.componentFactory.add('sourceEditing', () => {\n const buttonView = this._createButton(ButtonView);\n buttonView.set({\n label: t('Source'),\n icon: sourceEditingIcon,\n tooltip: true,\n class: 'ck-source-editing-button'\n });\n return buttonView;\n });\n editor.ui.componentFactory.add('menuBar:sourceEditing', () => {\n const buttonView = this._createButton(MenuBarMenuListItemButtonView);\n buttonView.set({\n label: t('Show source'),\n role: 'menuitemcheckbox'\n });\n return buttonView;\n });\n // Currently, the plugin handles the source editing mode by itself only for the classic editor. To use this plugin with other\n // integrations, listen to the `change:isSourceEditingMode` event and act accordingly.\n if (this._isAllowedToHandleSourceEditingMode()) {\n this.on('change:isSourceEditingMode', (evt, name, isSourceEditingMode) => {\n if (isSourceEditingMode) {\n this._hideVisibleDialog();\n this._showSourceEditing();\n this._disableCommands();\n }\n else {\n this._hideSourceEditing();\n this._enableCommands();\n }\n });\n this.on('change:isEnabled', (evt, name, isEnabled) => this._handleReadOnlyMode(!isEnabled));\n this.listenTo(editor, 'change:isReadOnly', (evt, name, isReadOnly) => this._handleReadOnlyMode(isReadOnly));\n }\n // Update the editor data while calling editor.getData() in the source editing mode.\n editor.data.on('get', () => {\n if (this.isSourceEditingMode) {\n this.updateEditorData();\n }\n }, { priority: 'high' });\n }\n /**\n * Updates the source data in all hidden editing roots.\n */\n updateEditorData() {\n const editor = this.editor;\n const data = {};\n for (const [rootName, domSourceEditingElementWrapper] of this._replacedRoots) {\n const oldData = this._dataFromRoots.get(rootName);\n const newData = domSourceEditingElementWrapper.dataset.value;\n // Do not set the data unless some changes have been made in the meantime.\n // This prevents empty undo steps after switching to the normal editor.\n if (oldData !== newData) {\n data[rootName] = newData;\n this._dataFromRoots.set(rootName, newData);\n }\n }\n if (Object.keys(data).length) {\n editor.data.set(data, { batchType: { isUndoable: true }, suppressErrorInCollaboration: true });\n }\n }\n _checkCompatibility() {\n const editor = this.editor;\n const allowCollaboration = editor.config.get('sourceEditing.allowCollaborationFeatures');\n if (!allowCollaboration && editor.plugins.has('RealTimeCollaborativeEditing')) {\n /**\n * Source editing feature is not fully compatible with real-time collaboration,\n * and using it may lead to data loss. Please read\n * {@glink features/source-editing#limitations-and-incompatibilities source editing feature guide} to learn more.\n *\n * If you understand the possible risk of data loss, you can enable the source editing\n * by setting the\n * {@link module:source-editing/sourceeditingconfig~SourceEditingConfig#allowCollaborationFeatures}\n * configuration flag to `true`.\n *\n * @error source-editing-incompatible-with-real-time-collaboration\n */\n throw new CKEditorError('source-editing-incompatible-with-real-time-collaboration', null);\n }\n const collaborationPluginNamesToWarn = [\n 'CommentsEditing',\n 'TrackChangesEditing',\n 'RevisionHistory'\n ];\n // Currently, the basic integration with Collaboration Features is to display a warning in the console.\n //\n // If `allowCollaboration` flag is set, do not show these warnings. If the flag is set, we assume that the integrator read\n // appropriate section of the guide so there's no use to spam the console with warnings.\n //\n if (!allowCollaboration && collaborationPluginNamesToWarn.some(pluginName => editor.plugins.has(pluginName))) {\n console.warn('You initialized the editor with the source editing feature and at least one of the collaboration features. ' +\n 'Please be advised that the source editing feature may not work, and be careful when editing document source ' +\n 'that contains markers created by the collaboration features.');\n }\n // Restricted Editing integration can also lead to problems. Warn the user accordingly.\n if (editor.plugins.has('RestrictedEditingModeEditing')) {\n console.warn('You initialized the editor with the source editing feature and restricted editing feature. ' +\n 'Please be advised that the source editing feature may not work, and be careful when editing document source ' +\n 'that contains markers created by the restricted editing feature.');\n }\n }\n /**\n * Creates source editing wrappers that replace each editing root. Each wrapper contains the document source from the corresponding\n * root.\n *\n * The wrapper element contains a textarea and it solves the problem, that the textarea element cannot auto expand its height based on\n * the content it contains. The solution is to make the textarea more like a plain div element, which expands in height as much as it\n * needs to, in order to display the whole document source without scrolling. The wrapper element is a parent for the textarea and for\n * the pseudo-element `::after`, that replicates the look, content, and position of the textarea. The pseudo-element replica is hidden,\n * but it is styled to be an identical visual copy of the textarea with the same content. Then, the wrapper is a grid container and both\n * of its children (the textarea and the `::after` pseudo-element) are positioned within a CSS grid to occupy the same grid cell. The\n * content in the pseudo-element `::after` is set in CSS and it stretches the grid to the appropriate size based on the textarea value.\n * Since both children occupy the same grid cell, both have always the same height.\n */\n _showSourceEditing() {\n const editor = this.editor;\n const editingView = editor.editing.view;\n const model = editor.model;\n model.change(writer => {\n writer.setSelection(null);\n writer.removeSelectionAttribute(model.document.selection.getAttributeKeys());\n });\n // It is not needed to iterate through all editing roots, as currently the plugin supports only the Classic Editor with a single\n // main root, but this code may help understand and use this feature in external integrations.\n for (const [rootName, domRootElement] of editingView.domRoots) {\n const data = formatSource(editor.data.get({ rootName }));\n const domSourceEditingElementTextarea = createElement(domRootElement.ownerDocument, 'textarea', {\n rows: '1',\n 'aria-label': 'Source code editing area'\n });\n const domSourceEditingElementWrapper = createElement(domRootElement.ownerDocument, 'div', {\n class: 'ck-source-editing-area',\n 'data-value': data\n }, [domSourceEditingElementTextarea]);\n domSourceEditingElementTextarea.value = data;\n // Setting a value to textarea moves the input cursor to the end. We want the selection at the beginning.\n domSourceEditingElementTextarea.setSelectionRange(0, 0);\n // Bind the textarea's value to the wrapper's `data-value` property. Each change of the textarea's value updates the\n // wrapper's `data-value` property.\n domSourceEditingElementTextarea.addEventListener('input', () => {\n domSourceEditingElementWrapper.dataset.value = domSourceEditingElementTextarea.value;\n editor.ui.update();\n });\n editingView.change(writer => {\n const viewRoot = editingView.document.getRoot(rootName);\n writer.addClass('ck-hidden', viewRoot);\n });\n // Register the element so it becomes available for Alt+F10 and Esc navigation.\n editor.ui.setEditableElement('sourceEditing:' + rootName, domSourceEditingElementTextarea);\n this._replacedRoots.set(rootName, domSourceEditingElementWrapper);\n this._elementReplacer.replace(domRootElement, domSourceEditingElementWrapper);\n this._dataFromRoots.set(rootName, data);\n }\n this._focusSourceEditing();\n }\n /**\n * Restores all hidden editing roots and sets the source data in them.\n */\n _hideSourceEditing() {\n const editor = this.editor;\n const editingView = editor.editing.view;\n this.updateEditorData();\n editingView.change(writer => {\n for (const [rootName] of this._replacedRoots) {\n writer.removeClass('ck-hidden', editingView.document.getRoot(rootName));\n }\n });\n this._elementReplacer.restore();\n this._replacedRoots.clear();\n this._dataFromRoots.clear();\n editingView.focus();\n }\n /**\n * Focuses the textarea containing document source from the first editing root.\n */\n _focusSourceEditing() {\n const editor = this.editor;\n const [domSourceEditingElementWrapper] = this._replacedRoots.values();\n const textarea = domSourceEditingElementWrapper.querySelector('textarea');\n // The FocusObserver was disabled by View.render() while the DOM root was getting hidden and the replacer\n // revealed the textarea. So it couldn't notice that the DOM root got blurred in the process.\n // Let's sync this state manually here because otherwise Renderer will attempt to render selection\n // in an invisible DOM root.\n editor.editing.view.document.isFocused = false;\n textarea.focus();\n }\n /**\n * Disables all commands.\n */\n _disableCommands() {\n const editor = this.editor;\n for (const command of editor.commands.commands()) {\n command.forceDisabled(COMMAND_FORCE_DISABLE_ID);\n }\n // Comments archive UI plugin will be disabled manually too.\n if (editor.plugins.has('CommentsArchiveUI')) {\n editor.plugins.get('CommentsArchiveUI').forceDisabled(COMMAND_FORCE_DISABLE_ID);\n }\n }\n /**\n * Clears forced disable for all commands, that was previously set through {@link #_disableCommands}.\n */\n _enableCommands() {\n const editor = this.editor;\n for (const command of editor.commands.commands()) {\n command.clearForceDisabled(COMMAND_FORCE_DISABLE_ID);\n }\n // Comments archive UI plugin will be enabled manually too.\n if (editor.plugins.has('CommentsArchiveUI')) {\n editor.plugins.get('CommentsArchiveUI').clearForceDisabled(COMMAND_FORCE_DISABLE_ID);\n }\n }\n /**\n * Adds or removes the `readonly` attribute from the textarea from all roots, if document source mode is active.\n *\n * @param isReadOnly Indicates whether all textarea elements should be read-only.\n */\n _handleReadOnlyMode(isReadOnly) {\n if (!this.isSourceEditingMode) {\n return;\n }\n for (const [, domSourceEditingElementWrapper] of this._replacedRoots) {\n domSourceEditingElementWrapper.querySelector('textarea').readOnly = isReadOnly;\n }\n }\n /**\n * Checks, if the plugin is allowed to handle the source editing mode by itself. Currently, the source editing mode is supported only\n * for the {@link module:editor-classic/classiceditor~ClassicEditor classic editor}.\n */\n _isAllowedToHandleSourceEditingMode() {\n const editor = this.editor;\n const editable = editor.ui.view.editable;\n // Checks, if the editor's editable belongs to the editor's DOM tree.\n return editable && !editable.hasExternalElement;\n }\n /**\n * If any {@link module:ui/dialog/dialogview~DialogView editor dialog} is currently visible, hide it.\n */\n _hideVisibleDialog() {\n if (this.editor.plugins.has('Dialog')) {\n const dialogPlugin = this.editor.plugins.get('Dialog');\n if (dialogPlugin.isOpen) {\n dialogPlugin.hide();\n }\n }\n }\n _createButton(ButtonClass) {\n const editor = this.editor;\n const buttonView = new ButtonClass(editor.locale);\n buttonView.set({\n withText: true,\n isToggleable: true\n });\n buttonView.bind('isOn').to(this, 'isSourceEditingMode');\n // The button should be disabled if one of the following conditions is met:\n buttonView.bind('isEnabled').to(this, 'isEnabled', editor, 'isReadOnly', editor.plugins.get(PendingActions), 'hasAny', (isEnabled, isEditorReadOnly, hasAnyPendingActions) => {\n // (1) The plugin itself is disabled.\n if (!isEnabled) {\n return false;\n }\n // (2) The editor is in read-only mode.\n if (isEditorReadOnly) {\n return false;\n }\n // (3) Any pending action is scheduled. It may change the model, so modifying the document source should be prevented\n // until the model is finally set.\n if (hasAnyPendingActions) {\n return false;\n }\n return true;\n });\n this.listenTo(buttonView, 'execute', () => {\n this.isSourceEditingMode = !this.isSourceEditingMode;\n });\n return buttonView;\n }\n}\n/**\n * Formats the content for a better readability.\n *\n * For a non-HTML source the unchanged input string is returned.\n *\n * @param input Input string to check.\n */\nfunction formatSource(input) {\n if (!isHtml(input)) {\n return input;\n }\n return formatHtml(input);\n}\n/**\n * Checks, if the document source is HTML. It is sufficient to just check the first character from the document data.\n *\n * @param input Input string to check.\n */\nfunction isHtml(input) {\n return input.startsWith('<');\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ckeditor/ckeditor5-source-editing",
3
- "version": "0.0.0-nightly-20241216.0",
3
+ "version": "0.0.0-nightly-20241218.0",
4
4
  "description": "Source editing feature for CKEditor 5.",
5
5
  "keywords": [
6
6
  "ckeditor",
@@ -13,11 +13,11 @@
13
13
  "type": "module",
14
14
  "main": "src/index.js",
15
15
  "dependencies": {
16
- "@ckeditor/ckeditor5-core": "0.0.0-nightly-20241216.0",
17
- "@ckeditor/ckeditor5-ui": "0.0.0-nightly-20241216.0",
18
- "@ckeditor/ckeditor5-utils": "0.0.0-nightly-20241216.0",
19
- "@ckeditor/ckeditor5-theme-lark": "0.0.0-nightly-20241216.0",
20
- "ckeditor5": "0.0.0-nightly-20241216.0"
16
+ "@ckeditor/ckeditor5-core": "0.0.0-nightly-20241218.0",
17
+ "@ckeditor/ckeditor5-ui": "0.0.0-nightly-20241218.0",
18
+ "@ckeditor/ckeditor5-utils": "0.0.0-nightly-20241218.0",
19
+ "@ckeditor/ckeditor5-theme-lark": "0.0.0-nightly-20241218.0",
20
+ "ckeditor5": "0.0.0-nightly-20241218.0"
21
21
  },
22
22
  "author": "CKSource (http://cksource.com/)",
23
23
  "license": "SEE LICENSE IN LICENSE.md",
@@ -38,5 +38,24 @@
38
38
  "ckeditor5-metadata.json",
39
39
  "CHANGELOG.md"
40
40
  ],
41
- "types": "src/index.d.ts"
41
+ "types": "src/index.d.ts",
42
+ "exports": {
43
+ ".": {
44
+ "types": "./src/index.d.ts",
45
+ "import": "./src/index.js"
46
+ },
47
+ "./dist/*": {
48
+ "types": "./src/index.d.ts",
49
+ "import": "./dist/*"
50
+ },
51
+ "./src/*": {
52
+ "types": "./src/index.d.ts",
53
+ "import": "./src/*"
54
+ },
55
+ "./build/*": "./build/*",
56
+ "./lang/*": "./lang/*",
57
+ "./theme/*": "./theme/*",
58
+ "./ckeditor5-metadata.json": "./ckeditor5-metadata.json",
59
+ "./package.json": "./package.json"
60
+ }
42
61
  }
@@ -1,22 +0,0 @@
1
- /**
2
- * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
3
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
4
- */
5
- /**
6
- * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
7
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
8
- */
9
- import type { SourceEditing, SourceEditingConfig } from './index.js';
10
- declare module '@ckeditor/ckeditor5-core' {
11
- interface EditorConfig {
12
- /**
13
- * The configuration of the source editing feature.
14
- *
15
- * Read more in {@link module:source-editing/sourceeditingconfig~SourceEditingConfig}.
16
- */
17
- sourceEditing?: SourceEditingConfig;
18
- }
19
- interface PluginsMap {
20
- [SourceEditing.pluginName]: SourceEditing;
21
- }
22
- }
package/dist/index.d.ts DELETED
@@ -1,14 +0,0 @@
1
- /**
2
- * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
3
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
4
- */
5
- /**
6
- * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
7
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
8
- */
9
- /**
10
- * @module source-editing
11
- */
12
- export { default as SourceEditing } from './sourceediting.js';
13
- export type { SourceEditingConfig } from './sourceeditingconfig.js';
14
- import './augmentation.js';
@@ -1,112 +0,0 @@
1
- /**
2
- * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
3
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
4
- */
5
- /**
6
- * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
7
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
8
- */
9
- /**
10
- * @module source-editing/sourceediting
11
- */
12
- import { type Editor, Plugin, PendingActions } from 'ckeditor5/src/core.js';
13
- import '../theme/sourceediting.css';
14
- /**
15
- * The source editing feature.
16
- *
17
- * It provides the possibility to view and edit the source of the document.
18
- *
19
- * For a detailed overview, check the {@glink features/source-editing source editing feature documentation} and the
20
- * {@glink api/source-editing package page}.
21
- */
22
- export default class SourceEditing extends Plugin {
23
- /**
24
- * @inheritDoc
25
- */
26
- static get pluginName(): "SourceEditing";
27
- /**
28
- * @inheritDoc
29
- */
30
- static get isOfficialPlugin(): true;
31
- /**
32
- * @inheritDoc
33
- */
34
- static get requires(): readonly [typeof PendingActions];
35
- /**
36
- * Flag indicating whether the document source mode is active.
37
- *
38
- * @observable
39
- */
40
- isSourceEditingMode: boolean;
41
- /**
42
- * The element replacer instance used to replace the editing roots with the wrapper elements containing the document source.
43
- */
44
- private _elementReplacer;
45
- /**
46
- * Maps all root names to wrapper elements containing the document source.
47
- */
48
- private _replacedRoots;
49
- /**
50
- * Maps all root names to their document data.
51
- */
52
- private _dataFromRoots;
53
- /**
54
- * @inheritDoc
55
- */
56
- constructor(editor: Editor);
57
- /**
58
- * @inheritDoc
59
- */
60
- init(): void;
61
- /**
62
- * Updates the source data in all hidden editing roots.
63
- */
64
- updateEditorData(): void;
65
- private _checkCompatibility;
66
- /**
67
- * Creates source editing wrappers that replace each editing root. Each wrapper contains the document source from the corresponding
68
- * root.
69
- *
70
- * The wrapper element contains a textarea and it solves the problem, that the textarea element cannot auto expand its height based on
71
- * the content it contains. The solution is to make the textarea more like a plain div element, which expands in height as much as it
72
- * needs to, in order to display the whole document source without scrolling. The wrapper element is a parent for the textarea and for
73
- * the pseudo-element `::after`, that replicates the look, content, and position of the textarea. The pseudo-element replica is hidden,
74
- * but it is styled to be an identical visual copy of the textarea with the same content. Then, the wrapper is a grid container and both
75
- * of its children (the textarea and the `::after` pseudo-element) are positioned within a CSS grid to occupy the same grid cell. The
76
- * content in the pseudo-element `::after` is set in CSS and it stretches the grid to the appropriate size based on the textarea value.
77
- * Since both children occupy the same grid cell, both have always the same height.
78
- */
79
- private _showSourceEditing;
80
- /**
81
- * Restores all hidden editing roots and sets the source data in them.
82
- */
83
- private _hideSourceEditing;
84
- /**
85
- * Focuses the textarea containing document source from the first editing root.
86
- */
87
- private _focusSourceEditing;
88
- /**
89
- * Disables all commands.
90
- */
91
- private _disableCommands;
92
- /**
93
- * Clears forced disable for all commands, that was previously set through {@link #_disableCommands}.
94
- */
95
- private _enableCommands;
96
- /**
97
- * Adds or removes the `readonly` attribute from the textarea from all roots, if document source mode is active.
98
- *
99
- * @param isReadOnly Indicates whether all textarea elements should be read-only.
100
- */
101
- private _handleReadOnlyMode;
102
- /**
103
- * Checks, if the plugin is allowed to handle the source editing mode by itself. Currently, the source editing mode is supported only
104
- * for the {@link module:editor-classic/classiceditor~ClassicEditor classic editor}.
105
- */
106
- private _isAllowedToHandleSourceEditingMode;
107
- /**
108
- * If any {@link module:ui/dialog/dialogview~DialogView editor dialog} is currently visible, hide it.
109
- */
110
- private _hideVisibleDialog;
111
- private _createButton;
112
- }
@@ -1,38 +0,0 @@
1
- /**
2
- * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
3
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
4
- */
5
- /**
6
- * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
7
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
8
- */
9
- /**
10
- * @module source-editing/sourceeditingconfig
11
- */
12
- /**
13
- * The configuration of the source editing feature.
14
- *
15
- * ```ts
16
- * ClassicEditor
17
- * .create( {
18
- * sourceEditing: {
19
- * allowCollaborationFeatures: true
20
- * }
21
- * } )
22
- * .then( ... )
23
- * .catch( ... );
24
- * ```
25
- *
26
- * See {@link module:core/editor/editorconfig~EditorConfig all editor options}.
27
- */
28
- export interface SourceEditingConfig {
29
- /**
30
- * Set to `true` to enable source editing feature for real-time collaboration.
31
- *
32
- * Please note that source editing feature is not fully compatible with real-time collaboration and using it may lead to data loss.
33
- * {@glink features/source-editing#limitations-and-incompatibilities Read more}.
34
- *
35
- * @default false
36
- */
37
- allowCollaborationFeatures?: boolean;
38
- }
@@ -1,23 +0,0 @@
1
- /**
2
- * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
3
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
4
- */
5
- /**
6
- * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
7
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
8
- */
9
- /**
10
- * @module source-editing/utils/formathtml
11
- */
12
- /**
13
- * A simple (and naive) HTML code formatter that returns a formatted HTML markup that can be easily
14
- * parsed by human eyes. It beautifies the HTML code by adding new lines between elements that behave like block elements
15
- * (https://developer.mozilla.org/en-US/docs/Web/HTML/Block-level_elements
16
- * and a few more like `tr`, `td`, and similar ones) and inserting indents for nested content.
17
- *
18
- * WARNING: This function works only on a text that does not contain any indentations or new lines.
19
- * Calling this function on the already formatted text will damage the formatting.
20
- *
21
- * @param input An HTML string to format.
22
- */
23
- export declare function formatHtml(input: string): string;