! function (t) {
    const e = t.en = t.en || {};
    e.dictionary = Object.assign(e.dictionary || {}, {
        "%0 of %1": "%0 of %1",
        Accept: "Accept",
        "Align cell text to the bottom": "Align cell text to the bottom",
        "Align cell text to the center": "Align cell text to the center",
        "Align cell text to the left": "Align cell text to the left",
        "Align cell text to the middle": "Align cell text to the middle",
        "Align cell text to the right": "Align cell text to the right",
        "Align cell text to the top": "Align cell text to the top",
        "Align table to the left": "Align table to the left",
        "Align table to the right": "Align table to the right",
        Alignment: "Alignment",
        Aquamarine: "Aquamarine",
        Background: "Background",
        Black: "Black",
        "Block quote": "Block quote",
        Blue: "Blue",
        Bold: "Bold",
        Border: "Border",
        "Break text": "Break text",
        "Bulleted List": "Bulleted List",
        "Bulleted list styles toolbar": "Bulleted list styles toolbar",
        Cancel: "Cancel",
        "Cannot access default workspace.": "Cannot access default workspace.",
        "Cannot determine a category for the uploaded file.": "Cannot determine a category for the uploaded file.",
        "Cannot upload file:": "Cannot upload file:",
        "Caption for image: %0": "Caption for image: %0",
        "Caption for the image": "Caption for the image",
        "Cell properties": "Cell properties",
        "Center table": "Center table",
        "Centered image": "Centered image",
        "Change image text alternative": "Change image text alternative",
        "Choose heading": "Choose heading",
        Circle: "Circle",
        Code: "Code",
        Color: "Color",
        "Color picker": "Color picker",
        Column: "Column",
        "Could not insert image at the current position.": "Could not insert image at the current position.",
        "Could not obtain resized image URL.": "Could not obtain resized image URL.",
        Dashed: "Dashed",
        Decimal: "Decimal",
        "Decimal with leading zero": "Decimal with leading zero",
        "Decrease indent": "Decrease indent",
        "Delete column": "Delete column",
        "Delete row": "Delete row",
        "Dim grey": "Dim grey",
        Dimensions: "Dimensions",
        Disc: "Disc",
        Dotted: "Dotted",
        Double: "Double",
        Downloadable: "Downloadable",
        "Dropdown toolbar": "Dropdown toolbar",
        "Edit block": "Edit block",
        "Edit link": "Edit link",
        "Editor block content toolbar": "Editor block content toolbar",
        "Editor contextual toolbar": "Editor contextual toolbar",
        "Editor editing area: %0": "Editor editing area: %0",
        "Editor toolbar": "Editor toolbar",
        "Enter image caption": "Enter image caption",
        "Enter table caption": "Enter table caption",
        "Full size image": "Full size image",
        Green: "Green",
        Grey: "Grey",
        Groove: "Groove",
        "Header column": "Header column",
        "Header row": "Header row",
        Heading: "Heading",
        "Heading 1": "Heading 1",
        "Heading 2": "Heading 2",
        "Heading 3": "Heading 3",
        "Heading 4": "Heading 4",
        "Heading 5": "Heading 5",
        "Heading 6": "Heading 6",
        Height: "Height",
        HEX: "HEX",
        "Horizontal text alignment toolbar": "Horizontal text alignment toolbar",
        "Image resize list": "Image resize list",
        "Image toolbar": "Image toolbar",
        "image widget": "image widget",
        "In line": "In line",
        "Increase indent": "Increase indent",
        Insert: "Insert",
        "Insert column left": "Insert column left",
        "Insert column right": "Insert column right",
        "Insert image": "Insert image",
        "Insert image or file": "Insert image or file",
        "Insert image via URL": "Insert image via URL",
        "Insert media": "Insert media",
        "Insert paragraph after block": "Insert paragraph after block",
        "Insert paragraph before block": "Insert paragraph before block",
        "Insert row above": "Insert row above",
        "Insert row below": "Insert row below",
        "Insert table": "Insert table",
        "Inserting image failed": "Inserting image failed",
        Inset: "Inset",
        Italic: "Italic",
        "Justify cell text": "Justify cell text",
        "Left aligned image": "Left aligned image",
        "Light blue": "Light blue",
        "Light green": "Light green",
        "Light grey": "Light grey",
        Link: "Link",
        "Link image": "Link image",
        "Link URL": "Link URL",
        "List properties": "List properties",
        "Lower-latin": "Lower-latin",
        "Lower–roman": "Lower–roman",
        "Media toolbar": "Media toolbar",
        "Media URL": "Media URL",
        "media widget": "media widget",
        "Merge cell down": "Merge cell down",
        "Merge cell left": "Merge cell left",
        "Merge cell right": "Merge cell right",
        "Merge cell up": "Merge cell up",
        "Merge cells": "Merge cells",
        Next: "Next",
        None: "None",
        "Numbered List": "Numbered List",
        "Numbered list styles toolbar": "Numbered list styles toolbar",
        "Open file manager": "Open file manager",
        "Open in a new tab": "Open in a new tab",
        "Open link in new tab": "Open link in new tab",
        "Open media in new tab": "Open media in new tab",
        Orange: "Orange",
        Original: "Original",
        Outset: "Outset",
        Padding: "Padding",
        Paragraph: "Paragraph",
        "Paste the media URL in the input.": "Paste the media URL in the input.",
        "Press Enter to type after or press Shift + Enter to type before the widget": "Press Enter to type after or press Shift + Enter to type before the widget",
        Previous: "Previous",
        Purple: "Purple",
        Red: "Red",
        Redo: "Redo",
        "Remove color": "Remove color",
        "Resize image": "Resize image",
        "Resize image to %0": "Resize image to %0",
        "Resize image to the original size": "Resize image to the original size",
        "Restore default": "Restore default",
        "Reversed order": "Reversed order",
        "Rich Text Editor": "Rich Text Editor",
        Ridge: "Ridge",
        "Right aligned image": "Right aligned image",
        Row: "Row",
        Save: "Save",
        "Select all": "Select all",
        "Select column": "Select column",
        "Select row": "Select row",
        "Selecting resized image failed": "Selecting resized image failed",
        "Show more items": "Show more items",
        "Side image": "Side image",
        Solid: "Solid",
        "Split cell horizontally": "Split cell horizontally",
        "Split cell vertically": "Split cell vertically",
        Square: "Square",
        "Start at": "Start at",
        "Start index must be greater than 0.": "Start index must be greater than 0.",
        Strikethrough: "Strikethrough",
        Style: "Style",
        Subscript: "Subscript",
        Superscript: "Superscript",
        "Table alignment toolbar": "Table alignment toolbar",
        "Table cell text alignment": "Table cell text alignment",
        "Table properties": "Table properties",
        "Table toolbar": "Table toolbar",
        "Text alternative": "Text alternative",
        'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".': 'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".',
        "The URL must not be empty.": "The URL must not be empty.",
        'The value is invalid. Try "10px" or "2em" or simply "2".': 'The value is invalid. Try "10px" or "2em" or simply "2".',
        "This link has no URL": "This link has no URL",
        "This media URL is not supported.": "This media URL is not supported.",
        "Tip: Paste the URL into the content to embed faster.": "Tip: Paste the URL into the content to embed faster.",
        "To-do List": "To-do List",
        "Toggle caption off": "Toggle caption off",
        "Toggle caption on": "Toggle caption on",
        "Toggle the circle list style": "Toggle the circle list style",
        "Toggle the decimal list style": "Toggle the decimal list style",
        "Toggle the decimal with leading zero list style": "Toggle the decimal with leading zero list style",
        "Toggle the disc list style": "Toggle the disc list style",
        "Toggle the lower–latin list style": "Toggle the lower–latin list style",
        "Toggle the lower–roman list style": "Toggle the lower–roman list style",
        "Toggle the square list style": "Toggle the square list style",
        "Toggle the upper–latin list style": "Toggle the upper–latin list style",
        "Toggle the upper–roman list style": "Toggle the upper–roman list style",
        Turquoise: "Turquoise",
        "Type or paste your content here.": "Type or paste your content here.",
        "Type your title": "Type your title",
        Underline: "Underline",
        Undo: "Undo",
        Unlink: "Unlink",
        Update: "Update",
        "Update image URL": "Update image URL",
        "Upload failed": "Upload failed",
        "Upload in progress": "Upload in progress",
        "Upper-latin": "Upper-latin",
        "Upper-roman": "Upper-roman",
        "Vertical text alignment toolbar": "Vertical text alignment toolbar",
        White: "White",
        "Widget toolbar": "Widget toolbar",
        Width: "Width",
        "Wrap text": "Wrap text",
        Yellow: "Yellow"
    })
}(window.CKEDITOR_TRANSLATIONS || (window.CKEDITOR_TRANSLATIONS = {})),
/*!
 * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
 * For licensing, see LICENSE.md.
 */
function (t, e) {
    "object" == typeof exports && "object" == typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define([], e) : "object" == typeof exports ? exports.ClassicEditor = e() : t.ClassicEditor = e()
}(self, (() => (() => {
    var t = {
            4959: (t, e, n) => {
                const o = n(1103),
                    i = {};
                for (const t of Object.keys(o)) i[o[t]] = t;
                const r = {
                    rgb: {
                        channels: 3,
                        labels: "rgb"
                    },
                    hsl: {
                        channels: 3,
                        labels: "hsl"
                    },
                    hsv: {
                        channels: 3,
                        labels: "hsv"
                    },
                    hwb: {
                        channels: 3,
                        labels: "hwb"
                    },
                    cmyk: {
                        channels: 4,
                        labels: "cmyk"
                    },
                    xyz: {
                        channels: 3,
                        labels: "xyz"
                    },
                    lab: {
                        channels: 3,
                        labels: "lab"
                    },
                    lch: {
                        channels: 3,
                        labels: "lch"
                    },
                    hex: {
                        channels: 1,
                        labels: ["hex"]
                    },
                    keyword: {
                        channels: 1,
                        labels: ["keyword"]
                    },
                    ansi16: {
                        channels: 1,
                        labels: ["ansi16"]
                    },
                    ansi256: {
                        channels: 1,
                        labels: ["ansi256"]
                    },
                    hcg: {
                        channels: 3,
                        labels: ["h", "c", "g"]
                    },
                    apple: {
                        channels: 3,
                        labels: ["r16", "g16", "b16"]
                    },
                    gray: {
                        channels: 1,
                        labels: ["gray"]
                    }
                };
                t.exports = r;
                for (const t of Object.keys(r)) {
                    if (!("channels" in r[t])) throw new Error("missing channels property: " + t);
                    if (!("labels" in r[t])) throw new Error("missing channel labels property: " + t);
                    if (r[t].labels.length !== r[t].channels) throw new Error("channel and label counts mismatch: " + t);
                    const {
                        channels: e,
                        labels: n
                    } = r[t];
                    delete r[t].channels, delete r[t].labels, Object.defineProperty(r[t], "channels", {
                        value: e
                    }), Object.defineProperty(r[t], "labels", {
                        value: n
                    })
                }
                r.rgb.hsl = function (t) {
                    const e = t[0] / 255,
                        n = t[1] / 255,
                        o = t[2] / 255,
                        i = Math.min(e, n, o),
                        r = Math.max(e, n, o),
                        s = r - i;
                    let a, c;
                    r === i ? a = 0 : e === r ? a = (n - o) / s : n === r ? a = 2 + (o - e) / s : o === r && (a = 4 + (e - n) / s), a = Math.min(60 * a, 360), a < 0 && (a += 360);
                    const l = (i + r) / 2;
                    return c = r === i ? 0 : l <= .5 ? s / (r + i) : s / (2 - r - i), [a, 100 * c, 100 * l]
                }, r.rgb.hsv = function (t) {
                    let e, n, o, i, r;
                    const s = t[0] / 255,
                        a = t[1] / 255,
                        c = t[2] / 255,
                        l = Math.max(s, a, c),
                        d = l - Math.min(s, a, c),
                        h = function (t) {
                            return (l - t) / 6 / d + .5
                        };
                    return 0 === d ? (i = 0, r = 0) : (r = d / l, e = h(s), n = h(a), o = h(c), s === l ? i = o - n : a === l ? i = 1 / 3 + e - o : c === l && (i = 2 / 3 + n - e), i < 0 ? i += 1 : i > 1 && (i -= 1)), [360 * i, 100 * r, 100 * l]
                }, r.rgb.hwb = function (t) {
                    const e = t[0],
                        n = t[1];
                    let o = t[2];
                    const i = r.rgb.hsl(t)[0],
                        s = 1 / 255 * Math.min(e, Math.min(n, o));
                    return o = 1 - 1 / 255 * Math.max(e, Math.max(n, o)), [i, 100 * s, 100 * o]
                }, r.rgb.cmyk = function (t) {
                    const e = t[0] / 255,
                        n = t[1] / 255,
                        o = t[2] / 255,
                        i = Math.min(1 - e, 1 - n, 1 - o);
                    return [100 * ((1 - e - i) / (1 - i) || 0), 100 * ((1 - n - i) / (1 - i) || 0), 100 * ((1 - o - i) / (1 - i) || 0), 100 * i]
                }, r.rgb.keyword = function (t) {
                    const e = i[t];
                    if (e) return e;
                    let n, r = 1 / 0;
                    for (const e of Object.keys(o)) {
                        const i = o[e],
                            c = (a = i, ((s = t)[0] - a[0]) ** 2 + (s[1] - a[1]) ** 2 + (s[2] - a[2]) ** 2);
                        c < r && (r = c, n = e)
                    }
                    var s, a;
                    return n
                }, r.keyword.rgb = function (t) {
                    return o[t]
                }, r.rgb.xyz = function (t) {
                    let e = t[0] / 255,
                        n = t[1] / 255,
                        o = t[2] / 255;
                    e = e > .04045 ? ((e + .055) / 1.055) ** 2.4 : e / 12.92, n = n > .04045 ? ((n + .055) / 1.055) ** 2.4 : n / 12.92, o = o > .04045 ? ((o + .055) / 1.055) ** 2.4 : o / 12.92;
                    return [100 * (.4124 * e + .3576 * n + .1805 * o), 100 * (.2126 * e + .7152 * n + .0722 * o), 100 * (.0193 * e + .1192 * n + .9505 * o)]
                }, r.rgb.lab = function (t) {
                    const e = r.rgb.xyz(t);
                    let n = e[0],
                        o = e[1],
                        i = e[2];
                    n /= 95.047, o /= 100, i /= 108.883, n = n > .008856 ? n ** (1 / 3) : 7.787 * n + 16 / 116, o = o > .008856 ? o ** (1 / 3) : 7.787 * o + 16 / 116, i = i > .008856 ? i ** (1 / 3) : 7.787 * i + 16 / 116;
                    return [116 * o - 16, 500 * (n - o), 200 * (o - i)]
                }, r.hsl.rgb = function (t) {
                    const e = t[0] / 360,
                        n = t[1] / 100,
                        o = t[2] / 100;
                    let i, r, s;
                    if (0 === n) return s = 255 * o, [s, s, s];
                    i = o < .5 ? o * (1 + n) : o + n - o * n;
                    const a = 2 * o - i,
                        c = [0, 0, 0];
                    for (let t = 0; t < 3; t++) r = e + 1 / 3 * -(t - 1), r < 0 && r++, r > 1 && r--, s = 6 * r < 1 ? a + 6 * (i - a) * r : 2 * r < 1 ? i : 3 * r < 2 ? a + (i - a) * (2 / 3 - r) * 6 : a, c[t] = 255 * s;
                    return c
                }, r.hsl.hsv = function (t) {
                    const e = t[0];
                    let n = t[1] / 100,
                        o = t[2] / 100,
                        i = n;
                    const r = Math.max(o, .01);
                    o *= 2, n *= o <= 1 ? o : 2 - o, i *= r <= 1 ? r : 2 - r;
                    return [e, 100 * (0 === o ? 2 * i / (r + i) : 2 * n / (o + n)), 100 * ((o + n) / 2)]
                }, r.hsv.rgb = function (t) {
                    const e = t[0] / 60,
                        n = t[1] / 100;
                    let o = t[2] / 100;
                    const i = Math.floor(e) % 6,
                        r = e - Math.floor(e),
                        s = 255 * o * (1 - n),
                        a = 255 * o * (1 - n * r),
                        c = 255 * o * (1 - n * (1 - r));
                    switch (o *= 255, i) {
                        case 0:
                            return [o, c, s];
                        case 1:
                            return [a, o, s];
                        case 2:
                            return [s, o, c];
                        case 3:
                            return [s, a, o];
                        case 4:
                            return [c, s, o];
                        case 5:
                            return [o, s, a]
                    }
                }, r.hsv.hsl = function (t) {
                    const e = t[0],
                        n = t[1] / 100,
                        o = t[2] / 100,
                        i = Math.max(o, .01);
                    let r, s;
                    s = (2 - n) * o;
                    const a = (2 - n) * i;
                    return r = n * i, r /= a <= 1 ? a : 2 - a, r = r || 0, s /= 2, [e, 100 * r, 100 * s]
                }, r.hwb.rgb = function (t) {
                    const e = t[0] / 360;
                    let n = t[1] / 100,
                        o = t[2] / 100;
                    const i = n + o;
                    let r;
                    i > 1 && (n /= i, o /= i);
                    const s = Math.floor(6 * e),
                        a = 1 - o;
                    r = 6 * e - s, 0 != (1 & s) && (r = 1 - r);
                    const c = n + r * (a - n);
                    let l, d, h;
                    switch (s) {
                        default:
                        case 6:
                        case 0:
                            l = a, d = c, h = n;
                            break;
                        case 1:
                            l = c, d = a, h = n;
                            break;
                        case 2:
                            l = n, d = a, h = c;
                            break;
                        case 3:
                            l = n, d = c, h = a;
                            break;
                        case 4:
                            l = c, d = n, h = a;
                            break;
                        case 5:
                            l = a, d = n, h = c
                    }
                    return [255 * l, 255 * d, 255 * h]
                }, r.cmyk.rgb = function (t) {
                    const e = t[0] / 100,
                        n = t[1] / 100,
                        o = t[2] / 100,
                        i = t[3] / 100;
                    return [255 * (1 - Math.min(1, e * (1 - i) + i)), 255 * (1 - Math.min(1, n * (1 - i) + i)), 255 * (1 - Math.min(1, o * (1 - i) + i))]
                }, r.xyz.rgb = function (t) {
                    const e = t[0] / 100,
                        n = t[1] / 100,
                        o = t[2] / 100;
                    let i, r, s;
                    return i = 3.2406 * e + -1.5372 * n + -.4986 * o, r = -.9689 * e + 1.8758 * n + .0415 * o, s = .0557 * e + -.204 * n + 1.057 * o, i = i > .0031308 ? 1.055 * i ** (1 / 2.4) - .055 : 12.92 * i, r = r > .0031308 ? 1.055 * r ** (1 / 2.4) - .055 : 12.92 * r, s = s > .0031308 ? 1.055 * s ** (1 / 2.4) - .055 : 12.92 * s, i = Math.min(Math.max(0, i), 1), r = Math.min(Math.max(0, r), 1), s = Math.min(Math.max(0, s), 1), [255 * i, 255 * r, 255 * s]
                }, r.xyz.lab = function (t) {
                    let e = t[0],
                        n = t[1],
                        o = t[2];
                    e /= 95.047, n /= 100, o /= 108.883, e = e > .008856 ? e ** (1 / 3) : 7.787 * e + 16 / 116, n = n > .008856 ? n ** (1 / 3) : 7.787 * n + 16 / 116, o = o > .008856 ? o ** (1 / 3) : 7.787 * o + 16 / 116;
                    return [116 * n - 16, 500 * (e - n), 200 * (n - o)]
                }, r.lab.xyz = function (t) {
                    let e, n, o;
                    n = (t[0] + 16) / 116, e = t[1] / 500 + n, o = n - t[2] / 200;
                    const i = n ** 3,
                        r = e ** 3,
                        s = o ** 3;
                    return n = i > .008856 ? i : (n - 16 / 116) / 7.787, e = r > .008856 ? r : (e - 16 / 116) / 7.787, o = s > .008856 ? s : (o - 16 / 116) / 7.787, e *= 95.047, n *= 100, o *= 108.883, [e, n, o]
                }, r.lab.lch = function (t) {
                    const e = t[0],
                        n = t[1],
                        o = t[2];
                    let i;
                    i = 360 * Math.atan2(o, n) / 2 / Math.PI, i < 0 && (i += 360);
                    return [e, Math.sqrt(n * n + o * o), i]
                }, r.lch.lab = function (t) {
                    const e = t[0],
                        n = t[1],
                        o = t[2] / 360 * 2 * Math.PI;
                    return [e, n * Math.cos(o), n * Math.sin(o)]
                }, r.rgb.ansi16 = function (t, e = null) {
                    const [n, o, i] = t;
                    let s = null === e ? r.rgb.hsv(t)[2] : e;
                    if (s = Math.round(s / 50), 0 === s) return 30;
                    let a = 30 + (Math.round(i / 255) << 2 | Math.round(o / 255) << 1 | Math.round(n / 255));
                    return 2 === s && (a += 60), a
                }, r.hsv.ansi16 = function (t) {
                    return r.rgb.ansi16(r.hsv.rgb(t), t[2])
                }, r.rgb.ansi256 = function (t) {
                    const e = t[0],
                        n = t[1],
                        o = t[2];
                    if (e === n && n === o) return e < 8 ? 16 : e > 248 ? 231 : Math.round((e - 8) / 247 * 24) + 232;
                    return 16 + 36 * Math.round(e / 255 * 5) + 6 * Math.round(n / 255 * 5) + Math.round(o / 255 * 5)
                }, r.ansi16.rgb = function (t) {
                    let e = t % 10;
                    if (0 === e || 7 === e) return t > 50 && (e += 3.5), e = e / 10.5 * 255, [e, e, e];
                    const n = .5 * (1 + ~~(t > 50));
                    return [(1 & e) * n * 255, (e >> 1 & 1) * n * 255, (e >> 2 & 1) * n * 255]
                }, r.ansi256.rgb = function (t) {
                    if (t >= 232) {
                        const e = 10 * (t - 232) + 8;
                        return [e, e, e]
                    }
                    let e;
                    t -= 16;
                    return [Math.floor(t / 36) / 5 * 255, Math.floor((e = t % 36) / 6) / 5 * 255, e % 6 / 5 * 255]
                }, r.rgb.hex = function (t) {
                    const e = (((255 & Math.round(t[0])) << 16) + ((255 & Math.round(t[1])) << 8) + (255 & Math.round(t[2]))).toString(16).toUpperCase();
                    return "000000".substring(e.length) + e
                }, r.hex.rgb = function (t) {
                    const e = t.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);
                    if (!e) return [0, 0, 0];
                    let n = e[0];
                    3 === e[0].length && (n = n.split("").map((t => t + t)).join(""));
                    const o = parseInt(n, 16);
                    return [o >> 16 & 255, o >> 8 & 255, 255 & o]
                }, r.rgb.hcg = function (t) {
                    const e = t[0] / 255,
                        n = t[1] / 255,
                        o = t[2] / 255,
                        i = Math.max(Math.max(e, n), o),
                        r = Math.min(Math.min(e, n), o),
                        s = i - r;
                    let a, c;
                    return a = s < 1 ? r / (1 - s) : 0, c = s <= 0 ? 0 : i === e ? (n - o) / s % 6 : i === n ? 2 + (o - e) / s : 4 + (e - n) / s, c /= 6, c %= 1, [360 * c, 100 * s, 100 * a]
                }, r.hsl.hcg = function (t) {
                    const e = t[1] / 100,
                        n = t[2] / 100,
                        o = n < .5 ? 2 * e * n : 2 * e * (1 - n);
                    let i = 0;
                    return o < 1 && (i = (n - .5 * o) / (1 - o)), [t[0], 100 * o, 100 * i]
                }, r.hsv.hcg = function (t) {
                    const e = t[1] / 100,
                        n = t[2] / 100,
                        o = e * n;
                    let i = 0;
                    return o < 1 && (i = (n - o) / (1 - o)), [t[0], 100 * o, 100 * i]
                }, r.hcg.rgb = function (t) {
                    const e = t[0] / 360,
                        n = t[1] / 100,
                        o = t[2] / 100;
                    if (0 === n) return [255 * o, 255 * o, 255 * o];
                    const i = [0, 0, 0],
                        r = e % 1 * 6,
                        s = r % 1,
                        a = 1 - s;
                    let c = 0;
                    switch (Math.floor(r)) {
                        case 0:
                            i[0] = 1, i[1] = s, i[2] = 0;
                            break;
                        case 1:
                            i[0] = a, i[1] = 1, i[2] = 0;
                            break;
                        case 2:
                            i[0] = 0, i[1] = 1, i[2] = s;
                            break;
                        case 3:
                            i[0] = 0, i[1] = a, i[2] = 1;
                            break;
                        case 4:
                            i[0] = s, i[1] = 0, i[2] = 1;
                            break;
                        default:
                            i[0] = 1, i[1] = 0, i[2] = a
                    }
                    return c = (1 - n) * o, [255 * (n * i[0] + c), 255 * (n * i[1] + c), 255 * (n * i[2] + c)]
                }, r.hcg.hsv = function (t) {
                    const e = t[1] / 100,
                        n = e + t[2] / 100 * (1 - e);
                    let o = 0;
                    return n > 0 && (o = e / n), [t[0], 100 * o, 100 * n]
                }, r.hcg.hsl = function (t) {
                    const e = t[1] / 100,
                        n = t[2] / 100 * (1 - e) + .5 * e;
                    let o = 0;
                    return n > 0 && n < .5 ? o = e / (2 * n) : n >= .5 && n < 1 && (o = e / (2 * (1 - n))), [t[0], 100 * o, 100 * n]
                }, r.hcg.hwb = function (t) {
                    const e = t[1] / 100,
                        n = e + t[2] / 100 * (1 - e);
                    return [t[0], 100 * (n - e), 100 * (1 - n)]
                }, r.hwb.hcg = function (t) {
                    const e = t[1] / 100,
                        n = 1 - t[2] / 100,
                        o = n - e;
                    let i = 0;
                    return o < 1 && (i = (n - o) / (1 - o)), [t[0], 100 * o, 100 * i]
                }, r.apple.rgb = function (t) {
                    return [t[0] / 65535 * 255, t[1] / 65535 * 255, t[2] / 65535 * 255]
                }, r.rgb.apple = function (t) {
                    return [t[0] / 255 * 65535, t[1] / 255 * 65535, t[2] / 255 * 65535]
                }, r.gray.rgb = function (t) {
                    return [t[0] / 100 * 255, t[0] / 100 * 255, t[0] / 100 * 255]
                }, r.gray.hsl = function (t) {
                    return [0, 0, t[0]]
                }, r.gray.hsv = r.gray.hsl, r.gray.hwb = function (t) {
                    return [0, 100, t[0]]
                }, r.gray.cmyk = function (t) {
                    return [0, 0, 0, t[0]]
                }, r.gray.lab = function (t) {
                    return [t[0], 0, 0]
                }, r.gray.hex = function (t) {
                    const e = 255 & Math.round(t[0] / 100 * 255),
                        n = ((e << 16) + (e << 8) + e).toString(16).toUpperCase();
                    return "000000".substring(n.length) + n
                }, r.rgb.gray = function (t) {
                    return [(t[0] + t[1] + t[2]) / 3 / 255 * 100]
                }
            },
            841: (t, e, n) => {
                const o = n(4959),
                    i = n(9325),
                    r = {};
                Object.keys(o).forEach((t => {
                    r[t] = {}, Object.defineProperty(r[t], "channels", {
                        value: o[t].channels
                    }), Object.defineProperty(r[t], "labels", {
                        value: o[t].labels
                    });
                    const e = i(t);
                    Object.keys(e).forEach((n => {
                        const o = e[n];
                        r[t][n] = function (t) {
                            const e = function (...e) {
                                const n = e[0];
                                if (null == n) return n;
                                n.length > 1 && (e = n);
                                const o = t(e);
                                if ("object" == typeof o)
                                    for (let t = o.length, e = 0; e < t; e++) o[e] = Math.round(o[e]);
                                return o
                            };
                            return "conversion" in t && (e.conversion = t.conversion), e
                        }(o), r[t][n].raw = function (t) {
                            const e = function (...e) {
                                const n = e[0];
                                return null == n ? n : (n.length > 1 && (e = n), t(e))
                            };
                            return "conversion" in t && (e.conversion = t.conversion), e
                        }(o)
                    }))
                })), t.exports = r
            },
            9325: (t, e, n) => {
                const o = n(4959);

                function i(t) {
                    const e = function () {
                            const t = {},
                                e = Object.keys(o);
                            for (let n = e.length, o = 0; o < n; o++) t[e[o]] = {
                                distance: -1,
                                parent: null
                            };
                            return t
                        }(),
                        n = [t];
                    for (e[t].distance = 0; n.length;) {
                        const t = n.pop(),
                            i = Object.keys(o[t]);
                        for (let o = i.length, r = 0; r < o; r++) {
                            const o = i[r],
                                s = e[o]; - 1 === s.distance && (s.distance = e[t].distance + 1, s.parent = t, n.unshift(o))
                        }
                    }
                    return e
                }

                function r(t, e) {
                    return function (n) {
                        return e(t(n))
                    }
                }

                function s(t, e) {
                    const n = [e[t].parent, t];
                    let i = o[e[t].parent][t],
                        s = e[t].parent;
                    for (; e[s].parent;) n.unshift(e[s].parent), i = r(o[e[s].parent][s], i), s = e[s].parent;
                    return i.conversion = n, i
                }
                t.exports = function (t) {
                    const e = i(t),
                        n = {},
                        o = Object.keys(e);
                    for (let t = o.length, i = 0; i < t; i++) {
                        const t = o[i];
                        null !== e[t].parent && (n[t] = s(t, e))
                    }
                    return n
                }
            },
            1103: t => {
                "use strict";
                t.exports = {
                    aliceblue: [240, 248, 255],
                    antiquewhite: [250, 235, 215],
                    aqua: [0, 255, 255],
                    aquamarine: [127, 255, 212],
                    azure: [240, 255, 255],
                    beige: [245, 245, 220],
                    bisque: [255, 228, 196],
                    black: [0, 0, 0],
                    blanchedalmond: [255, 235, 205],
                    blue: [0, 0, 255],
                    blueviolet: [138, 43, 226],
                    brown: [165, 42, 42],
                    burlywood: [222, 184, 135],
                    cadetblue: [95, 158, 160],
                    chartreuse: [127, 255, 0],
                    chocolate: [210, 105, 30],
                    coral: [255, 127, 80],
                    cornflowerblue: [100, 149, 237],
                    cornsilk: [255, 248, 220],
                    crimson: [220, 20, 60],
                    cyan: [0, 255, 255],
                    darkblue: [0, 0, 139],
                    darkcyan: [0, 139, 139],
                    darkgoldenrod: [184, 134, 11],
                    darkgray: [169, 169, 169],
                    darkgreen: [0, 100, 0],
                    darkgrey: [169, 169, 169],
                    darkkhaki: [189, 183, 107],
                    darkmagenta: [139, 0, 139],
                    darkolivegreen: [85, 107, 47],
                    darkorange: [255, 140, 0],
                    darkorchid: [153, 50, 204],
                    darkred: [139, 0, 0],
                    darksalmon: [233, 150, 122],
                    darkseagreen: [143, 188, 143],
                    darkslateblue: [72, 61, 139],
                    darkslategray: [47, 79, 79],
                    darkslategrey: [47, 79, 79],
                    darkturquoise: [0, 206, 209],
                    darkviolet: [148, 0, 211],
                    deeppink: [255, 20, 147],
                    deepskyblue: [0, 191, 255],
                    dimgray: [105, 105, 105],
                    dimgrey: [105, 105, 105],
                    dodgerblue: [30, 144, 255],
                    firebrick: [178, 34, 34],
                    floralwhite: [255, 250, 240],
                    forestgreen: [34, 139, 34],
                    fuchsia: [255, 0, 255],
                    gainsboro: [220, 220, 220],
                    ghostwhite: [248, 248, 255],
                    gold: [255, 215, 0],
                    goldenrod: [218, 165, 32],
                    gray: [128, 128, 128],
                    green: [0, 128, 0],
                    greenyellow: [173, 255, 47],
                    grey: [128, 128, 128],
                    honeydew: [240, 255, 240],
                    hotpink: [255, 105, 180],
                    indianred: [205, 92, 92],
                    indigo: [75, 0, 130],
                    ivory: [255, 255, 240],
                    khaki: [240, 230, 140],
                    lavender: [230, 230, 250],
                    lavenderblush: [255, 240, 245],
                    lawngreen: [124, 252, 0],
                    lemonchiffon: [255, 250, 205],
                    lightblue: [173, 216, 230],
                    lightcoral: [240, 128, 128],
                    lightcyan: [224, 255, 255],
                    lightgoldenrodyellow: [250, 250, 210],
                    lightgray: [211, 211, 211],
                    lightgreen: [144, 238, 144],
                    lightgrey: [211, 211, 211],
                    lightpink: [255, 182, 193],
                    lightsalmon: [255, 160, 122],
                    lightseagreen: [32, 178, 170],
                    lightskyblue: [135, 206, 250],
                    lightslategray: [119, 136, 153],
                    lightslategrey: [119, 136, 153],
                    lightsteelblue: [176, 196, 222],
                    lightyellow: [255, 255, 224],
                    lime: [0, 255, 0],
                    limegreen: [50, 205, 50],
                    linen: [250, 240, 230],
                    magenta: [255, 0, 255],
                    maroon: [128, 0, 0],
                    mediumaquamarine: [102, 205, 170],
                    mediumblue: [0, 0, 205],
                    mediumorchid: [186, 85, 211],
                    mediumpurple: [147, 112, 219],
                    mediumseagreen: [60, 179, 113],
                    mediumslateblue: [123, 104, 238],
                    mediumspringgreen: [0, 250, 154],
                    mediumturquoise: [72, 209, 204],
                    mediumvioletred: [199, 21, 133],
                    midnightblue: [25, 25, 112],
                    mintcream: [245, 255, 250],
                    mistyrose: [255, 228, 225],
                    moccasin: [255, 228, 181],
                    navajowhite: [255, 222, 173],
                    navy: [0, 0, 128],
                    oldlace: [253, 245, 230],
                    olive: [128, 128, 0],
                    olivedrab: [107, 142, 35],
                    orange: [255, 165, 0],
                    orangered: [255, 69, 0],
                    orchid: [218, 112, 214],
                    palegoldenrod: [238, 232, 170],
                    palegreen: [152, 251, 152],
                    paleturquoise: [175, 238, 238],
                    palevioletred: [219, 112, 147],
                    papayawhip: [255, 239, 213],
                    peachpuff: [255, 218, 185],
                    peru: [205, 133, 63],
                    pink: [255, 192, 203],
                    plum: [221, 160, 221],
                    powderblue: [176, 224, 230],
                    purple: [128, 0, 128],
                    rebeccapurple: [102, 51, 153],
                    red: [255, 0, 0],
                    rosybrown: [188, 143, 143],
                    royalblue: [65, 105, 225],
                    saddlebrown: [139, 69, 19],
                    salmon: [250, 128, 114],
                    sandybrown: [244, 164, 96],
                    seagreen: [46, 139, 87],
                    seashell: [255, 245, 238],
                    sienna: [160, 82, 45],
                    silver: [192, 192, 192],
                    skyblue: [135, 206, 235],
                    slateblue: [106, 90, 205],
                    slategray: [112, 128, 144],
                    slategrey: [112, 128, 144],
                    snow: [255, 250, 250],
                    springgreen: [0, 255, 127],
                    steelblue: [70, 130, 180],
                    tan: [210, 180, 140],
                    teal: [0, 128, 128],
                    thistle: [216, 191, 216],
                    tomato: [255, 99, 71],
                    turquoise: [64, 224, 208],
                    violet: [238, 130, 238],
                    wheat: [245, 222, 179],
                    white: [255, 255, 255],
                    whitesmoke: [245, 245, 245],
                    yellow: [255, 255, 0],
                    yellowgreen: [154, 205, 50]
                }
            },
            8603: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ".ck-content code{background-color:hsla(0,0%,78%,.3);border-radius:2px;padding:.15em}.ck.ck-editor__editable .ck-code_selected{background-color:hsla(0,0%,78%,.5)}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-basic-styles/theme/code.css"],
                    names: [],
                    mappings: "AAKA,iBACC,kCAAuC,CAEvC,iBAAkB,CADlB,aAED,CAEA,0CACC,kCACD",
                    sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck-content code {\n\tbackground-color: hsla(0, 0%, 78%, 0.3);\n\tpadding: .15em;\n\tborder-radius: 2px;\n}\n\n.ck.ck-editor__editable .ck-code_selected  {\n\tbackground-color: hsla(0, 0%, 78%, 0.5);\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            3062: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ".ck-content blockquote{border-left:5px solid #ccc;font-style:italic;margin-left:0;margin-right:0;overflow:hidden;padding-left:1.5em;padding-right:1.5em}.ck-content[dir=rtl] blockquote{border-left:0;border-right:5px solid #ccc}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-block-quote/theme/blockquote.css"],
                    names: [],
                    mappings: "AAKA,uBAWC,0BAAsC,CADtC,iBAAkB,CAFlB,aAAc,CACd,cAAe,CAPf,eAAgB,CAIhB,kBAAmB,CADnB,mBAOD,CAEA,gCACC,aAAc,CACd,2BACD",
                    sourcesContent: ['/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck-content blockquote {\n\t/* See #12 */\n\toverflow: hidden;\n\n\t/* https://github.com/ckeditor/ckeditor5-block-quote/issues/15 */\n\tpadding-right: 1.5em;\n\tpadding-left: 1.5em;\n\n\tmargin-left: 0;\n\tmargin-right: 0;\n\tfont-style: italic;\n\tborder-left: solid 5px hsl(0, 0%, 80%);\n}\n\n.ck-content[dir="rtl"] blockquote {\n\tborder-left: 0;\n\tborder-right: solid 5px hsl(0, 0%, 80%);\n}\n'],
                    sourceRoot: ""
                }]);
                const a = s
            },
            903: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, '.ck.ck-editor__editable .ck.ck-clipboard-drop-target-position{display:inline;pointer-events:none;position:relative}.ck.ck-editor__editable .ck.ck-clipboard-drop-target-position span{position:absolute;width:0}.ck.ck-editor__editable .ck-widget:-webkit-drag>.ck-widget__selection-handle,.ck.ck-editor__editable .ck-widget:-webkit-drag>.ck-widget__type-around{display:none}.ck.ck-clipboard-drop-target-line{pointer-events:none;position:absolute}:root{--ck-clipboard-drop-target-dot-width:12px;--ck-clipboard-drop-target-dot-height:8px;--ck-clipboard-drop-target-color:var(--ck-color-focus-border)}.ck.ck-editor__editable .ck.ck-clipboard-drop-target-position span{background:var(--ck-clipboard-drop-target-color);border:1px solid var(--ck-clipboard-drop-target-color);bottom:calc(var(--ck-clipboard-drop-target-dot-height)*-.5);margin-left:-1px;top:calc(var(--ck-clipboard-drop-target-dot-height)*-.5)}.ck.ck-editor__editable .ck.ck-clipboard-drop-target-position span:after{border-color:var(--ck-clipboard-drop-target-color) transparent transparent transparent;border-style:solid;border-width:calc(var(--ck-clipboard-drop-target-dot-height)) calc(var(--ck-clipboard-drop-target-dot-width)*.5) 0 calc(var(--ck-clipboard-drop-target-dot-width)*.5);content:"";display:block;height:0;left:50%;position:absolute;top:calc(var(--ck-clipboard-drop-target-dot-height)*-.5);transform:translateX(-50%);width:0}.ck.ck-editor__editable .ck-widget.ck-clipboard-drop-target-range{outline:var(--ck-widget-outline-thickness) solid var(--ck-clipboard-drop-target-color)!important}.ck.ck-editor__editable .ck-widget:-webkit-drag{zoom:.6;outline:none!important}.ck.ck-clipboard-drop-target-line{background:var(--ck-clipboard-drop-target-color);border:1px solid var(--ck-clipboard-drop-target-color);height:0;margin-top:-1px}', "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-clipboard/theme/clipboard.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-clipboard/clipboard.css"],
                    names: [],
                    mappings: "AASC,8DACC,cAAe,CAEf,mBAAoB,CADpB,iBAOD,CAJC,mEACC,iBAAkB,CAClB,OACD,CAWA,qJACC,YACD,CAIF,kCAEC,mBAAoB,CADpB,iBAED,CChCA,MACC,yCAA0C,CAC1C,yCAA0C,CAC1C,6DACD,CAOE,mEAIC,gDAAiD,CADjD,sDAAuD,CAFvD,2DAA8D,CAI9D,gBAAiB,CAHjB,wDAqBD,CAfC,yEAWC,sFAAuF,CAEvF,kBAAmB,CADnB,qKAA0K,CAX1K,UAAW,CAIX,aAAc,CAFd,QAAS,CAIT,QAAS,CADT,iBAAkB,CAElB,wDAA2D,CAE3D,0BAA2B,CAR3B,OAYD,CAOF,kEACC,gGACD,CAKA,gDACC,OAAS,CACT,sBACD,CAGD,kCAGC,gDAAiD,CADjD,sDAAuD,CADvD,QAAS,CAGT,eACD",
                    sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-editor__editable {\n\t/*\n\t * Vertical drop target (in text).\n\t */\n\t& .ck.ck-clipboard-drop-target-position {\n\t\tdisplay: inline;\n\t\tposition: relative;\n\t\tpointer-events: none;\n\n\t\t& span {\n\t\t\tposition: absolute;\n\t\t\twidth: 0;\n\t\t}\n\t}\n\n\t/*\n\t * Styles of the widget being dragged (its preview).\n\t */\n\t& .ck-widget:-webkit-drag {\n\t\t& > .ck-widget__selection-handle {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\t& > .ck-widget__type-around {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n\n.ck.ck-clipboard-drop-target-line {\n\tposition: absolute;\n\tpointer-events: none;\n}\n", '/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-clipboard-drop-target-dot-width: 12px;\n\t--ck-clipboard-drop-target-dot-height: 8px;\n\t--ck-clipboard-drop-target-color: var(--ck-color-focus-border)\n}\n\n.ck.ck-editor__editable {\n\t/*\n\t * Vertical drop target (in text).\n\t */\n\t& .ck.ck-clipboard-drop-target-position {\n\t\t& span {\n\t\t\tbottom: calc(-.5 * var(--ck-clipboard-drop-target-dot-height));\n\t\t\ttop: calc(-.5 * var(--ck-clipboard-drop-target-dot-height));\n\t\t\tborder: 1px solid var(--ck-clipboard-drop-target-color);\n\t\t\tbackground: var(--ck-clipboard-drop-target-color);\n\t\t\tmargin-left: -1px;\n\n\t\t\t/* The triangle above the marker */\n\t\t\t&::after {\n\t\t\t\tcontent: "";\n\t\t\t\twidth: 0;\n\t\t\t\theight: 0;\n\n\t\t\t\tdisplay: block;\n\t\t\t\tposition: absolute;\n\t\t\t\tleft: 50%;\n\t\t\t\ttop: calc(var(--ck-clipboard-drop-target-dot-height) * -.5);\n\n\t\t\t\ttransform: translateX(-50%);\n\t\t\t\tborder-color: var(--ck-clipboard-drop-target-color) transparent transparent transparent;\n\t\t\t\tborder-width: calc(var(--ck-clipboard-drop-target-dot-height)) calc(.5 * var(--ck-clipboard-drop-target-dot-width)) 0 calc(.5 * var(--ck-clipboard-drop-target-dot-width));\n\t\t\t\tborder-style: solid;\n\t\t\t}\n\t\t}\n\t}\n\n\t/*\n\t * Styles of the widget that it a drop target.\n\t */\n\t& .ck-widget.ck-clipboard-drop-target-range {\n\t\toutline: var(--ck-widget-outline-thickness) solid var(--ck-clipboard-drop-target-color) !important;\n\t}\n\n\t/*\n\t * Styles of the widget being dragged (its preview).\n\t */\n\t& .ck-widget:-webkit-drag {\n\t\tzoom: 0.6;\n\t\toutline: none !important;\n\t}\n}\n\n.ck.ck-clipboard-drop-target-line {\n\theight: 0;\n\tborder: 1px solid var(--ck-clipboard-drop-target-color);\n\tbackground: var(--ck-clipboard-drop-target-color);\n\tmargin-top: -1px;\n}\n'],
                    sourceRoot: ""
                }]);
                const a = s
            },
            3143: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ".ck.ck-editor{position:relative}.ck.ck-editor .ck-editor__top .ck-sticky-panel .ck-toolbar{z-index:var(--ck-z-modal)}.ck.ck-editor__top .ck-sticky-panel .ck-toolbar{border-radius:0}.ck-rounded-corners .ck.ck-editor__top .ck-sticky-panel .ck-toolbar,.ck.ck-editor__top .ck-sticky-panel .ck-toolbar.ck-rounded-corners{border-radius:var(--ck-border-radius);border-bottom-left-radius:0;border-bottom-right-radius:0}.ck.ck-editor__top .ck-sticky-panel .ck-toolbar{border-bottom-width:0}.ck.ck-editor__top .ck-sticky-panel .ck-sticky-panel__content_sticky .ck-toolbar{border-bottom-width:1px;border-radius:0}.ck-rounded-corners .ck.ck-editor__top .ck-sticky-panel .ck-sticky-panel__content_sticky .ck-toolbar,.ck.ck-editor__top .ck-sticky-panel .ck-sticky-panel__content_sticky .ck-toolbar.ck-rounded-corners{border-radius:var(--ck-border-radius);border-radius:0}.ck.ck-editor__main>.ck-editor__editable{background:var(--ck-color-base-background);border-radius:0}.ck-rounded-corners .ck.ck-editor__main>.ck-editor__editable,.ck.ck-editor__main>.ck-editor__editable.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0 !important;border-top-right-radius:0 !important}.ck.ck-editor__main>.ck-editor__editable:not(.ck-focused){border-color:var(--ck-color-base-border)}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-editor-classic/theme/classiceditor.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-editor-classic/classiceditor.css", "webpack://./../ckeditor5-theme-lark/theme/mixins/_rounded.css"],
                    names: [],
                    mappings: "AAKA,cAIC,iBAMD,CAJC,2DAEC,yBACD,CCLC,gDCED,eDKC,CAPA,uICMA,qCAAsC,CDJpC,2BAA4B,CAC5B,4BAIF,CAPA,gDAMC,qBACD,CAEA,iFACC,uBAAwB,CCR1B,eDaC,CANA,yMCHA,qCAAsC,CDOpC,eAEF,CAKF,yCAEC,0CAA2C,CCpB3C,eD8BD,CAZA,yHCdE,qCAAsC,CDmBtC,wBAAyB,CACzB,yBAMF,CAHC,0DACC,wCACD",
                    sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-editor {\n\t/* All the elements within `.ck-editor` are positioned relatively to it.\n\t If any element needs to be positioned with respect to the <body>, etc.,\n\t it must land outside of the `.ck-editor` in DOM. */\n\tposition: relative;\n\n\t& .ck-editor__top .ck-sticky-panel .ck-toolbar {\n\t\t/* https://github.com/ckeditor/ckeditor5-editor-classic/issues/62 */\n\t\tz-index: var(--ck-z-modal);\n\t}\n}\n", '/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../mixins/_rounded.css";\n\n.ck.ck-editor__top {\n\t& .ck-sticky-panel {\n\t\t& .ck-toolbar {\n\t\t\t@mixin ck-rounded-corners {\n\t\t\t\tborder-bottom-left-radius: 0;\n\t\t\t\tborder-bottom-right-radius: 0;\n\t\t\t}\n\n\t\t\tborder-bottom-width: 0;\n\t\t}\n\n\t\t& .ck-sticky-panel__content_sticky .ck-toolbar {\n\t\t\tborder-bottom-width: 1px;\n\n\t\t\t@mixin ck-rounded-corners {\n\t\t\t\tborder-radius: 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/* Note: Use ck-editor__main to make sure these styles don\'t apply to other editor types */\n.ck.ck-editor__main > .ck-editor__editable {\n\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/113 */\n\tbackground: var(--ck-color-base-background);\n\n\t@mixin ck-rounded-corners {\n\t\tborder-top-left-radius: 0 !important;\n\t\tborder-top-right-radius: 0 !important;\n\t}\n\n\t&:not(.ck-focused) {\n\t\tborder-color: var(--ck-color-base-border);\n\t}\n}\n', "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t@nest .ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            4717: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ".ck .ck-placeholder,.ck.ck-placeholder{position:relative}.ck .ck-placeholder:before,.ck.ck-placeholder:before{content:attr(data-placeholder);left:0;pointer-events:none;position:absolute;right:0}.ck.ck-read-only .ck-placeholder:before{display:none}.ck.ck-reset_all .ck-placeholder{position:relative}.ck .ck-placeholder:before,.ck.ck-placeholder:before{color:var(--ck-color-engine-placeholder-text);cursor:text}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-engine/theme/placeholder.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-engine/placeholder.css"],
                    names: [],
                    mappings: "AAMA,uCAEC,iBAWD,CATC,qDAIC,8BAA+B,CAF/B,MAAO,CAKP,mBAAoB,CANpB,iBAAkB,CAElB,OAKD,CAKA,wCACC,YACD,CAQD,iCACC,iBACD,CC5BC,qDAEC,6CAA8C,CAD9C,WAED",
                    sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/* See ckeditor/ckeditor5#936. */\n.ck.ck-placeholder,\n.ck .ck-placeholder {\n\tposition: relative;\n\n\t&::before {\n\t\tposition: absolute;\n\t\tleft: 0;\n\t\tright: 0;\n\t\tcontent: attr(data-placeholder);\n\n\t\t/* See ckeditor/ckeditor5#469. */\n\t\tpointer-events: none;\n\t}\n}\n\n/* See ckeditor/ckeditor5#1987. */\n.ck.ck-read-only .ck-placeholder {\n\t&::before {\n\t\tdisplay: none;\n\t}\n}\n\n/*\n * Rules for the `ck-placeholder` are loaded before the rules for `ck-reset_all` in the base CKEditor 5 DLL build.\n * This fix overwrites the incorrectly set `position: static` from `ck-reset_all`.\n * See https://github.com/ckeditor/ckeditor5/issues/11418.\n */\n.ck.ck-reset_all .ck-placeholder {\n\tposition: relative;\n}\n", "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/* See ckeditor/ckeditor5#936. */\n.ck.ck-placeholder, .ck .ck-placeholder {\n\t&::before {\n\t\tcursor: text;\n\t\tcolor: var(--ck-color-engine-placeholder-text);\n\t}\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            9315: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ".ck.ck-editor__editable span[data-ck-unsafe-element]{display:none}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-engine/theme/renderer.css"],
                    names: [],
                    mappings: "AAMA,qDACC,YACD",
                    sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/* Elements marked by the Renderer as hidden should be invisible in the editor. */\n.ck.ck-editor__editable span[data-ck-unsafe-element] {\n\tdisplay: none;\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            8733: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ".ck.ck-heading_heading1{font-size:20px}.ck.ck-heading_heading2{font-size:17px}.ck.ck-heading_heading3{font-size:14px}.ck[class*=ck-heading_heading]{font-weight:700}.ck.ck-dropdown.ck-heading-dropdown .ck-dropdown__button .ck-button__label{width:8em}.ck.ck-dropdown.ck-heading-dropdown .ck-dropdown__panel .ck-list__item{min-width:18em}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-heading/theme/heading.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-heading/heading.css"],
                    names: [],
                    mappings: "AAKA,wBACC,cACD,CAEA,wBACC,cACD,CAEA,wBACC,cACD,CAEA,+BACC,eACD,CCZC,2EACC,SACD,CAEA,uEACC,cACD",
                    sourcesContent: ['/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-heading_heading1 {\n\tfont-size: 20px;\n}\n\n.ck.ck-heading_heading2 {\n\tfont-size: 17px;\n}\n\n.ck.ck-heading_heading3 {\n\tfont-size: 14px;\n}\n\n.ck[class*="ck-heading_heading"] {\n\tfont-weight: bold;\n}\n', "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/* Resize dropdown's button label. */\n.ck.ck-dropdown.ck-heading-dropdown {\n\t& .ck-dropdown__button .ck-button__label {\n\t\twidth: 8em;\n\t}\n\n\t& .ck-dropdown__panel .ck-list__item {\n\t\tmin-width: 18em;\n\t}\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            3508: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ".ck-content .image{clear:both;display:table;margin:.9em auto;min-width:50px;text-align:center}.ck-content .image img{display:block;margin:0 auto;max-width:100%;min-width:100%}.ck-content .image-inline{align-items:flex-start;display:inline-flex;max-width:100%}.ck-content .image-inline picture{display:flex}.ck-content .image-inline img,.ck-content .image-inline picture{flex-grow:1;flex-shrink:1;max-width:100%}.ck.ck-editor__editable .image>figcaption.ck-placeholder:before{overflow:hidden;padding-left:inherit;padding-right:inherit;text-overflow:ellipsis;white-space:nowrap}.ck.ck-editor__editable .image-inline.ck-widget_selected,.ck.ck-editor__editable .image.ck-widget_selected{z-index:1}.ck.ck-editor__editable .image-inline.ck-widget_selected ::selection{display:none}.ck.ck-editor__editable td .image-inline img,.ck.ck-editor__editable th .image-inline img{max-width:none}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-image/theme/image.css"],
                    names: [],
                    mappings: "AAMC,mBAEC,UAAW,CADX,aAAc,CAOd,gBAAkB,CAGlB,cAAe,CARf,iBAuBD,CAbC,uBAEC,aAAc,CAGd,aAAc,CAGd,cAAe,CAGf,cACD,CAGD,0BAYC,sBAAuB,CANvB,mBAAoB,CAGpB,cAoBD,CAdC,kCACC,YACD,CAGA,gEAGC,WAAY,CACZ,aAAc,CAGd,cACD,CAUD,gEASC,eAAgB,CARhB,oBAAqB,CACrB,qBAAsB,CAQtB,sBAAuB,CAFvB,kBAGD,CAWA,2GACC,SAUD,CAHC,qEACC,YACD,CAOA,0FACC,cACD",
                    sourcesContent: ['/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck-content {\n\t& .image {\n\t\tdisplay: table;\n\t\tclear: both;\n\t\ttext-align: center;\n\n\t\t/* Make sure there is some space between the content and the image. Center image by default. */\n\t\t/* The first value should be equal to --ck-spacing-large variable if used in the editor context\n\t \tto avoid the content jumping (See https://github.com/ckeditor/ckeditor5/issues/9825). */\n\t\tmargin: 0.9em auto;\n\n\t\t/* Make sure the caption will be displayed properly (See: https://github.com/ckeditor/ckeditor5/issues/1870). */\n\t\tmin-width: 50px;\n\n\t\t& img {\n\t\t\t/* Prevent unnecessary margins caused by line-height (see #44). */\n\t\t\tdisplay: block;\n\n\t\t\t/* Center the image if its width is smaller than the content\'s width. */\n\t\t\tmargin: 0 auto;\n\n\t\t\t/* Make sure the image never exceeds the size of the parent container (ckeditor/ckeditor5-ui#67). */\n\t\t\tmax-width: 100%;\n\n\t\t\t/* Make sure the image is never smaller than the parent container (See: https://github.com/ckeditor/ckeditor5/issues/9300). */\n\t\t\tmin-width: 100%\n\t\t}\n\t}\n\n\t& .image-inline {\n\t\t/*\n\t\t * Normally, the .image-inline would have "display: inline-block" and "img { width: 100% }" (to follow the wrapper while resizing).\n\t\t * Unfortunately, together with "srcset", it gets automatically stretched up to the width of the editing root.\n\t\t * This strange behavior does not happen with inline-flex.\n\t\t */\n\t\tdisplay: inline-flex;\n\n\t\t/* While being resized, don\'t allow the image to exceed the width of the editing root. */\n\t\tmax-width: 100%;\n\n\t\t/* This is required by Safari to resize images in a sensible way. Without this, the browser breaks the ratio. */\n\t\talign-items: flex-start;\n\n\t\t/* When the picture is present it must act as a flex container to let the img resize properly */\n\t\t& picture {\n\t\t\tdisplay: flex;\n\t\t}\n\n\t\t/* When the picture is present, it must act like a resizable img. */\n\t\t& picture,\n\t\t& img {\n\t\t\t/* This is necessary for the img to span the entire .image-inline wrapper and to resize properly. */\n\t\t\tflex-grow: 1;\n\t\t\tflex-shrink: 1;\n\n\t\t\t/* Prevents overflowing the editing root boundaries when an inline image is very wide. */\n\t\t\tmax-width: 100%;\n\t\t}\n\t}\n}\n\n.ck.ck-editor__editable {\n\t/*\n\t * Inhertit the content styles padding of the <figcaption> in case the integration overrides `text-align: center`\n\t * of `.image` (e.g. to the left/right). This ensures the placeholder stays at the padding just like the native\n\t * caret does, and not at the edge of <figcaption>.\n\t */\n\t& .image > figcaption.ck-placeholder::before {\n\t\tpadding-left: inherit;\n\t\tpadding-right: inherit;\n\n\t\t/*\n\t\t * Make sure the image caption placeholder doesn\'t overflow the placeholder area.\n\t\t * See https://github.com/ckeditor/ckeditor5/issues/9162.\n\t\t */\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n\n\n\t/*\n\t * Make sure the selected inline image always stays on top of its siblings.\n\t * See https://github.com/ckeditor/ckeditor5/issues/9108.\n\t */\n\t& .image.ck-widget_selected {\n\t\tz-index: 1;\n\t}\n\n\t& .image-inline.ck-widget_selected {\n\t\tz-index: 1;\n\n\t\t/*\n\t\t * Make sure the native browser selection style is not displayed.\n\t\t * Inline image widgets have their own styles for the selected state and\n\t\t * leaving this up to the browser is asking for a visual collision.\n\t\t */\n\t\t& ::selection {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n\t/* The inline image nested in the table should have its original size if not resized.\n\tSee https://github.com/ckeditor/ckeditor5/issues/9117. */\n\t& td,\n\t& th {\n\t\t& .image-inline img {\n\t\t\tmax-width: none;\n\t\t}\n\t}\n}\n'],
                    sourceRoot: ""
                }]);
                const a = s
            },
            2640: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ":root{--ck-color-image-caption-background:#f7f7f7;--ck-color-image-caption-text:#333;--ck-color-image-caption-highligted-background:#fd0}.ck-content .image>figcaption{background-color:var(--ck-color-image-caption-background);caption-side:bottom;color:var(--ck-color-image-caption-text);display:table-caption;font-size:.75em;outline-offset:-1px;padding:.6em;word-break:break-word}.ck.ck-editor__editable .image>figcaption.image__caption_highlighted{animation:ck-image-caption-highlight .6s ease-out}@keyframes ck-image-caption-highlight{0%{background-color:var(--ck-color-image-caption-highligted-background)}to{background-color:var(--ck-color-image-caption-background)}}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-image/theme/imagecaption.css"],
                    names: [],
                    mappings: "AAKA,MACC,2CAAoD,CACpD,kCAA8C,CAC9C,mDACD,CAGA,8BAKC,yDAA0D,CAH1D,mBAAoB,CAEpB,wCAAyC,CAHzC,qBAAsB,CAMtB,eAAgB,CAChB,mBAAoB,CAFpB,YAAa,CAHb,qBAMD,CAGA,qEACC,iDACD,CAEA,sCACC,GACC,oEACD,CAEA,GACC,yDACD,CACD",
                    sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-color-image-caption-background: hsl(0, 0%, 97%);\n\t--ck-color-image-caption-text: hsl(0, 0%, 20%);\n\t--ck-color-image-caption-highligted-background: hsl(52deg 100% 50%);\n}\n\n/* Content styles */\n.ck-content .image > figcaption {\n\tdisplay: table-caption;\n\tcaption-side: bottom;\n\tword-break: break-word;\n\tcolor: var(--ck-color-image-caption-text);\n\tbackground-color: var(--ck-color-image-caption-background);\n\tpadding: .6em;\n\tfont-size: .75em;\n\toutline-offset: -1px;\n}\n\n/* Editing styles */\n.ck.ck-editor__editable .image > figcaption.image__caption_highlighted {\n\tanimation: ck-image-caption-highlight .6s ease-out;\n}\n\n@keyframes ck-image-caption-highlight {\n\t0% {\n\t\tbackground-color: var(--ck-color-image-caption-highligted-background);\n\t}\n\n\t100% {\n\t\tbackground-color: var(--ck-color-image-caption-background);\n\t}\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            3535: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ".ck.ck-image-insert__panel{padding:var(--ck-spacing-large)}.ck.ck-image-insert__ck-finder-button{border:1px solid #ccc;border-radius:var(--ck-border-radius);display:block;margin:var(--ck-spacing-standard) auto;width:100%}.ck.ck-splitbutton>.ck-file-dialog-button.ck-button{border:none;margin:0;padding:0}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-image/theme/imageinsert.css"],
                    names: [],
                    mappings: "AAKA,2BACC,+BACD,CAEA,sCAIC,qBAAiC,CACjC,qCAAsC,CAJtC,aAAc,CAEd,sCAAuC,CADvC,UAID,CAGA,oDAGC,WAAY,CADZ,QAAS,CADT,SAGD",
                    sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-image-insert__panel {\n\tpadding: var(--ck-spacing-large);\n}\n\n.ck.ck-image-insert__ck-finder-button {\n\tdisplay: block;\n\twidth: 100%;\n\tmargin: var(--ck-spacing-standard) auto;\n\tborder: 1px solid hsl(0, 0%, 80%);\n\tborder-radius: var(--ck-border-radius);\n}\n\n/* https://github.com/ckeditor/ckeditor5/issues/7986 */\n.ck.ck-splitbutton > .ck-file-dialog-button.ck-button {\n\tpadding: 0;\n\tmargin: 0;\n\tborder: none;\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            1568: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ".ck.ck-image-insert-form:focus{outline:none}.ck.ck-form__row{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between}.ck.ck-form__row>:not(.ck-label){flex-grow:1}.ck.ck-form__row.ck-image-insert-form__action-row{margin-top:var(--ck-spacing-standard)}.ck.ck-form__row.ck-image-insert-form__action-row .ck-button-cancel,.ck.ck-form__row.ck-image-insert-form__action-row .ck-button-save{justify-content:center}.ck.ck-form__row.ck-image-insert-form__action-row .ck-button .ck-button__label{color:var(--ck-color-text)}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-image/theme/imageinsertformrowview.css"],
                    names: [],
                    mappings: "AAMC,+BAEC,YACD,CAGD,iBACC,YAAa,CACb,kBAAmB,CACnB,gBAAiB,CACjB,6BAmBD,CAhBC,iCACC,WACD,CAEA,kDACC,qCAUD,CARC,sIAEC,sBACD,CAEA,+EACC,0BACD",
                    sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-image-insert-form {\n\t&:focus {\n\t\t/* See: https://github.com/ckeditor/ckeditor5/issues/4773 */\n\t\toutline: none;\n\t}\n}\n\n.ck.ck-form__row {\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: nowrap;\n\tjustify-content: space-between;\n\n\t/* Ignore labels that work as fieldset legends */\n\t& > *:not(.ck-label) {\n\t\tflex-grow: 1;\n\t}\n\n\t&.ck-image-insert-form__action-row {\n\t\tmargin-top: var(--ck-spacing-standard);\n\n\t\t& .ck-button-save,\n\t\t& .ck-button-cancel {\n\t\t\tjustify-content: center;\n\t\t}\n\n\t\t& .ck-button .ck-button__label {\n\t\t\tcolor: var(--ck-color-text);\n\t\t}\n\t}\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            6270: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ".ck-content .image.image_resized{box-sizing:border-box;display:block;max-width:100%}.ck-content .image.image_resized img{width:100%}.ck-content .image.image_resized>figcaption{display:block}.ck.ck-editor__editable td .image-inline.image_resized img,.ck.ck-editor__editable th .image-inline.image_resized img{max-width:100%}[dir=ltr] .ck.ck-button.ck-button_with-text.ck-resize-image-button .ck-button__icon{margin-right:var(--ck-spacing-standard)}[dir=rtl] .ck.ck-button.ck-button_with-text.ck-resize-image-button .ck-button__icon{margin-left:var(--ck-spacing-standard)}.ck.ck-dropdown .ck-button.ck-resize-image-button .ck-button__label{width:4em}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-image/theme/imageresize.css"],
                    names: [],
                    mappings: "AAKA,iCAQC,qBAAsB,CADtB,aAAc,CANd,cAkBD,CATC,qCAEC,UACD,CAEA,4CAEC,aACD,CAQC,sHACC,cACD,CAIF,oFACC,uCACD,CAEA,oFACC,sCACD,CAEA,oEACC,SACD",
                    sourcesContent: ['/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck-content .image.image_resized {\n\tmax-width: 100%;\n\t/*\n\tThe `<figure>` element for resized images must not use `display:table` as browsers do not support `max-width` for it well.\n\tSee https://stackoverflow.com/questions/4019604/chrome-safari-ignoring-max-width-in-table/14420691#14420691 for more.\n\tFortunately, since we control the width, there is no risk that the image will look bad.\n\t*/\n\tdisplay: block;\n\tbox-sizing: border-box;\n\n\t& img {\n\t\t/* For resized images it is the `<figure>` element that determines the image width. */\n\t\twidth: 100%;\n\t}\n\n\t& > figcaption {\n\t\t/* The `<figure>` element uses `display:block`, so `<figcaption>` also has to. */\n\t\tdisplay: block;\n\t}\n}\n\n.ck.ck-editor__editable {\n\t/* The resized inline image nested in the table should respect its parent size.\n\tSee https://github.com/ckeditor/ckeditor5/issues/9117. */\n\t& td,\n\t& th {\n\t\t& .image-inline.image_resized img {\n\t\t\tmax-width: 100%;\n\t\t}\n\t}\n}\n\n[dir="ltr"] .ck.ck-button.ck-button_with-text.ck-resize-image-button .ck-button__icon {\n\tmargin-right: var(--ck-spacing-standard);\n}\n\n[dir="rtl"] .ck.ck-button.ck-button_with-text.ck-resize-image-button .ck-button__icon {\n\tmargin-left: var(--ck-spacing-standard);\n}\n\n.ck.ck-dropdown .ck-button.ck-resize-image-button .ck-button__label {\n\twidth: 4em;\n}\n'],
                    sourceRoot: ""
                }]);
                const a = s
            },
            5083: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ":root{--ck-image-style-spacing:1.5em;--ck-inline-image-style-spacing:calc(var(--ck-image-style-spacing)/2)}.ck-content .image-style-block-align-left,.ck-content .image-style-block-align-right{max-width:calc(100% - var(--ck-image-style-spacing))}.ck-content .image-style-align-left,.ck-content .image-style-align-right{clear:none}.ck-content .image-style-side{float:right;margin-left:var(--ck-image-style-spacing);max-width:50%}.ck-content .image-style-align-left{float:left;margin-right:var(--ck-image-style-spacing)}.ck-content .image-style-align-center{margin-left:auto;margin-right:auto}.ck-content .image-style-align-right{float:right;margin-left:var(--ck-image-style-spacing)}.ck-content .image-style-block-align-right{margin-left:auto;margin-right:0}.ck-content .image-style-block-align-left{margin-left:0;margin-right:auto}.ck-content p+.image-style-align-left,.ck-content p+.image-style-align-right,.ck-content p+.image-style-side{margin-top:0}.ck-content .image-inline.image-style-align-left,.ck-content .image-inline.image-style-align-right{margin-bottom:var(--ck-inline-image-style-spacing);margin-top:var(--ck-inline-image-style-spacing)}.ck-content .image-inline.image-style-align-left{margin-right:var(--ck-inline-image-style-spacing)}.ck-content .image-inline.image-style-align-right{margin-left:var(--ck-inline-image-style-spacing)}.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__action:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):not(:hover),.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__action:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__arrow:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__arrow:not(.ck-disabled):not(:hover){background-color:var(--ck-color-button-on-background)}.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__action:not(.ck-disabled):after,.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):after,.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):not(:hover):after,.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__action:not(.ck-disabled):after,.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__arrow:not(.ck-disabled):after,.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__arrow:not(.ck-disabled):not(:hover):after{display:none}.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open:hover>.ck-splitbutton__action:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open:hover>.ck-splitbutton__arrow:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open:hover>.ck-splitbutton__arrow:not(.ck-disabled):not(:hover){background-color:var(--ck-color-button-on-hover-background)}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-image/theme/imagestyle.css"],
                    names: [],
                    mappings: "AAKA,MACC,8BAA+B,CAC/B,qEACD,CAMC,qFAEC,oDACD,CAIA,yEAEC,UACD,CAEA,8BACC,WAAY,CACZ,yCAA0C,CAC1C,aACD,CAEA,oCACC,UAAW,CACX,0CACD,CAEA,sCACC,gBAAiB,CACjB,iBACD,CAEA,qCACC,WAAY,CACZ,yCACD,CAEA,2CAEC,gBAAiB,CADjB,cAED,CAEA,0CACC,aAAc,CACd,iBACD,CAGA,6GAGC,YACD,CAGC,mGAGC,kDAAmD,CADnD,+CAED,CAEA,iDACC,iDACD,CAEA,kDACC,gDACD,CAUC,0lBAGC,qDAKD,CAHC,8nBACC,YACD,CAKD,oVAGC,2DACD",
                    sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-image-style-spacing: 1.5em;\n\t--ck-inline-image-style-spacing: calc(var(--ck-image-style-spacing) / 2);\n}\n\n.ck-content {\n\t/* Provides a minimal side margin for the left and right aligned images, so that the user has a visual feedback\n\tconfirming successful application of the style if image width exceeds the editor's size.\n\tSee https://github.com/ckeditor/ckeditor5/issues/9342 */\n\t& .image-style-block-align-left,\n\t& .image-style-block-align-right {\n\t\tmax-width: calc(100% - var(--ck-image-style-spacing));\n\t}\n\n\t/* Allows displaying multiple floating images in the same line.\n\tSee https://github.com/ckeditor/ckeditor5/issues/9183#issuecomment-804988132 */\n\t& .image-style-align-left,\n\t& .image-style-align-right {\n\t\tclear: none;\n\t}\n\n\t& .image-style-side {\n\t\tfloat: right;\n\t\tmargin-left: var(--ck-image-style-spacing);\n\t\tmax-width: 50%;\n\t}\n\n\t& .image-style-align-left {\n\t\tfloat: left;\n\t\tmargin-right: var(--ck-image-style-spacing);\n\t}\n\n\t& .image-style-align-center {\n\t\tmargin-left: auto;\n\t\tmargin-right: auto;\n\t}\n\n\t& .image-style-align-right {\n\t\tfloat: right;\n\t\tmargin-left: var(--ck-image-style-spacing);\n\t}\n\n\t& .image-style-block-align-right {\n\t\tmargin-right: 0;\n\t\tmargin-left: auto;\n\t}\n\n\t& .image-style-block-align-left {\n\t\tmargin-left: 0;\n\t\tmargin-right: auto;\n\t}\n\n\t/* Simulates margin collapsing with the preceding paragraph, which does not work for the floating elements. */\n\t& p + .image-style-align-left,\n\t& p + .image-style-align-right,\n\t& p + .image-style-side {\n\t\tmargin-top: 0;\n\t}\n\n\t& .image-inline {\n\t\t&.image-style-align-left,\n\t\t&.image-style-align-right {\n\t\t\tmargin-top: var(--ck-inline-image-style-spacing);\n\t\t\tmargin-bottom: var(--ck-inline-image-style-spacing);\n\t\t}\n\n\t\t&.image-style-align-left {\n\t\t\tmargin-right: var(--ck-inline-image-style-spacing);\n\t\t}\n\n\t\t&.image-style-align-right {\n\t\t\tmargin-left: var(--ck-inline-image-style-spacing);\n\t\t}\n\t}\n}\n\n.ck.ck-splitbutton {\n\t/* The button should display as a regular drop-down if the action button\n\tis forced to fire the same action as the arrow button. */\n\t&.ck-splitbutton_flatten {\n\t\t&:hover,\n\t\t&.ck-splitbutton_open {\n\t\t\t& > .ck-splitbutton__action:not(.ck-disabled),\n\t\t\t& > .ck-splitbutton__arrow:not(.ck-disabled),\n\t\t\t& > .ck-splitbutton__arrow:not(.ck-disabled):not(:hover) {\n\t\t\t\tbackground-color: var(--ck-color-button-on-background);\n\n\t\t\t\t&::after {\n\t\t\t\t\tdisplay: none;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&.ck-splitbutton_open:hover {\n\t\t\t& > .ck-splitbutton__action:not(.ck-disabled),\n\t\t\t& > .ck-splitbutton__arrow:not(.ck-disabled),\n\t\t\t& > .ck-splitbutton__arrow:not(.ck-disabled):not(:hover) {\n\t\t\t\tbackground-color: var(--ck-color-button-on-hover-background);\n\t\t\t}\n\t\t}\n\t}\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            4036: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, '.ck-image-upload-complete-icon{border-radius:50%;display:block;position:absolute;right:min(var(--ck-spacing-medium),6%);top:min(var(--ck-spacing-medium),6%);z-index:1}.ck-image-upload-complete-icon:after{content:"";position:absolute}:root{--ck-color-image-upload-icon:#fff;--ck-color-image-upload-icon-background:#008a00;--ck-image-upload-icon-size:20;--ck-image-upload-icon-width:2px;--ck-image-upload-icon-is-visible:clamp(0px,100% - 50px,1px)}.ck-image-upload-complete-icon{animation-delay:0ms,3s;animation-duration:.5s,.5s;animation-fill-mode:forwards,forwards;animation-name:ck-upload-complete-icon-show,ck-upload-complete-icon-hide;background:var(--ck-color-image-upload-icon-background);font-size:calc(1px*var(--ck-image-upload-icon-size));height:calc(var(--ck-image-upload-icon-is-visible)*var(--ck-image-upload-icon-size));opacity:0;overflow:hidden;width:calc(var(--ck-image-upload-icon-is-visible)*var(--ck-image-upload-icon-size))}.ck-image-upload-complete-icon:after{animation-delay:.5s;animation-duration:.5s;animation-fill-mode:forwards;animation-name:ck-upload-complete-icon-check;border-right:var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);border-top:var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);box-sizing:border-box;height:0;left:25%;opacity:0;top:50%;transform:scaleX(-1) rotate(135deg);transform-origin:left top;width:0}@keyframes ck-upload-complete-icon-show{0%{opacity:0}to{opacity:1}}@keyframes ck-upload-complete-icon-hide{0%{opacity:1}to{opacity:0}}@keyframes ck-upload-complete-icon-check{0%{height:0;opacity:1;width:0}33%{height:0;width:.3em}to{height:.45em;opacity:1;width:.3em}}', "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-image/theme/imageuploadicon.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-image/imageuploadicon.css"],
                    names: [],
                    mappings: "AAKA,+BAUC,iBAAkB,CATlB,aAAc,CACd,iBAAkB,CAOlB,sCAAwC,CADxC,oCAAsC,CAGtC,SAMD,CAJC,qCACC,UAAW,CACX,iBACD,CChBD,MACC,iCAA8C,CAC9C,+CAA4D,CAG5D,8BAA+B,CAC/B,gCAAiC,CACjC,4DACD,CAEA,+BAWC,sBAA4B,CAN5B,0BAAgC,CADhC,qCAAuC,CADvC,wEAA0E,CAD1E,uDAAwD,CAMxD,oDAAuD,CAWvD,oFAAuF,CAlBvF,SAAU,CAgBV,eAAgB,CAChB,mFA0BD,CAtBC,qCAgBC,mBAAsB,CADtB,sBAAyB,CAEzB,4BAA6B,CAH7B,4CAA6C,CAF7C,sFAAuF,CADvF,oFAAqF,CASrF,qBAAsB,CAdtB,QAAS,CAJT,QAAS,CAGT,SAAU,CADV,OAAQ,CAKR,mCAAoC,CACpC,yBAA0B,CAH1B,OAcD,CAGD,wCACC,GACC,SACD,CAEA,GACC,SACD,CACD,CAEA,wCACC,GACC,SACD,CAEA,GACC,SACD,CACD,CAEA,yCACC,GAGC,QAAS,CAFT,SAAU,CACV,OAED,CACA,IAEC,QAAS,CADT,UAED,CACA,GAGC,YAAc,CAFd,SAAU,CACV,UAED,CACD",
                    sourcesContent: ['/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck-image-upload-complete-icon {\n\tdisplay: block;\n\tposition: absolute;\n\n\t/*\n\t * Smaller images should have the icon closer to the border.\n\t * Match the icon position with the linked image indicator brought by the link image feature.\n\t */\n\ttop: min(var(--ck-spacing-medium), 6%);\n\tright: min(var(--ck-spacing-medium), 6%);\n\tborder-radius: 50%;\n\tz-index: 1;\n\n\t&::after {\n\t\tcontent: "";\n\t\tposition: absolute;\n\t}\n}\n', '/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-color-image-upload-icon: hsl(0, 0%, 100%);\n\t--ck-color-image-upload-icon-background: hsl(120, 100%, 27%);\n\n\t/* Match the icon size with the linked image indicator brought by the link image feature. */\n\t--ck-image-upload-icon-size: 20;\n\t--ck-image-upload-icon-width: 2px;\n\t--ck-image-upload-icon-is-visible: clamp(0px, 100% - 50px, 1px);\n}\n\n.ck-image-upload-complete-icon {\n\topacity: 0;\n\tbackground: var(--ck-color-image-upload-icon-background);\n\tanimation-name: ck-upload-complete-icon-show, ck-upload-complete-icon-hide;\n\tanimation-fill-mode: forwards, forwards;\n\tanimation-duration: 500ms, 500ms;\n\n\t/* To make animation scalable. */\n\tfont-size: calc(1px * var(--ck-image-upload-icon-size));\n\n\t/* Hide completed upload icon after 3 seconds. */\n\tanimation-delay: 0ms, 3000ms;\n\n\t/*\n\t * Use CSS math to simulate container queries.\n\t * https://css-tricks.com/the-raven-technique-one-step-closer-to-container-queries/#what-about-showing-and-hiding-things\n\t */\n\toverflow: hidden;\n\twidth: calc(var(--ck-image-upload-icon-is-visible) * var(--ck-image-upload-icon-size));\n\theight: calc(var(--ck-image-upload-icon-is-visible) * var(--ck-image-upload-icon-size));\n\n\t/* This is check icon element made from border-width mixed with animations. */\n\t&::after {\n\t\t/* Because of border transformation we need to "hard code" left position. */\n\t\tleft: 25%;\n\n\t\ttop: 50%;\n\t\topacity: 0;\n\t\theight: 0;\n\t\twidth: 0;\n\n\t\ttransform: scaleX(-1) rotate(135deg);\n\t\ttransform-origin: left top;\n\t\tborder-top: var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);\n\t\tborder-right: var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);\n\n\t\tanimation-name: ck-upload-complete-icon-check;\n\t\tanimation-duration: 500ms;\n\t\tanimation-delay: 500ms;\n\t\tanimation-fill-mode: forwards;\n\n\t\t/* #1095. While reset is not providing proper box-sizing for pseudoelements, we need to handle it. */\n\t\tbox-sizing: border-box;\n\t}\n}\n\n@keyframes ck-upload-complete-icon-show {\n\tfrom {\n\t\topacity: 0;\n\t}\n\n\tto {\n\t\topacity: 1;\n\t}\n}\n\n@keyframes ck-upload-complete-icon-hide {\n\tfrom {\n\t\topacity: 1;\n\t}\n\n\tto {\n\t\topacity: 0;\n\t}\n}\n\n@keyframes ck-upload-complete-icon-check {\n\t0% {\n\t\topacity: 1;\n\t\twidth: 0;\n\t\theight: 0;\n\t}\n\t33% {\n\t\twidth: 0.3em;\n\t\theight: 0;\n\t}\n\t100% {\n\t\topacity: 1;\n\t\twidth: 0.3em;\n\t\theight: 0.45em;\n\t}\n}\n'],
                    sourceRoot: ""
                }]);
                const a = s
            },
            3773: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, '.ck .ck-upload-placeholder-loader{align-items:center;display:flex;justify-content:center;left:0;position:absolute;top:0}.ck .ck-upload-placeholder-loader:before{content:"";position:relative}:root{--ck-color-upload-placeholder-loader:#b3b3b3;--ck-upload-placeholder-loader-size:32px;--ck-upload-placeholder-image-aspect-ratio:2.8}.ck .ck-image-upload-placeholder{margin:0;width:100%}.ck .ck-image-upload-placeholder.image-inline{width:calc(var(--ck-upload-placeholder-loader-size)*2*var(--ck-upload-placeholder-image-aspect-ratio))}.ck .ck-image-upload-placeholder img{aspect-ratio:var(--ck-upload-placeholder-image-aspect-ratio)}.ck .ck-upload-placeholder-loader{height:100%;width:100%}.ck .ck-upload-placeholder-loader:before{animation:ck-upload-placeholder-loader 1s linear infinite;border-radius:50%;border-right:2px solid transparent;border-top:3px solid var(--ck-color-upload-placeholder-loader);height:var(--ck-upload-placeholder-loader-size);width:var(--ck-upload-placeholder-loader-size)}@keyframes ck-upload-placeholder-loader{to{transform:rotate(1turn)}}', "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-image/theme/imageuploadloader.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-image/imageuploadloader.css"],
                    names: [],
                    mappings: "AAKA,kCAGC,kBAAmB,CADnB,YAAa,CAEb,sBAAuB,CAEvB,MAAO,CALP,iBAAkB,CAIlB,KAOD,CAJC,yCACC,UAAW,CACX,iBACD,CCXD,MACC,4CAAqD,CACrD,wCAAyC,CACzC,8CACD,CAEA,iCAGC,QAAS,CADT,UAgBD,CAbC,8CACC,sGACD,CAEA,qCAOC,4DACD,CAGD,kCAEC,WAAY,CADZ,UAWD,CARC,yCAMC,yDAA0D,CAH1D,iBAAkB,CAElB,kCAAmC,CADnC,8DAA+D,CAF/D,+CAAgD,CADhD,8CAMD,CAGD,wCACC,GACC,uBACD,CACD",
                    sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck .ck-upload-placeholder-loader {\n\tposition: absolute;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\ttop: 0;\n\tleft: 0;\n\n\t&::before {\n\t\tcontent: '';\n\t\tposition: relative;\n\t}\n}\n", "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-color-upload-placeholder-loader: hsl(0, 0%, 70%);\n\t--ck-upload-placeholder-loader-size: 32px;\n\t--ck-upload-placeholder-image-aspect-ratio: 2.8;\n}\n\n.ck .ck-image-upload-placeholder {\n\t/* We need to control the full width of the SVG gray background. */\n\twidth: 100%;\n\tmargin: 0;\n\n\t&.image-inline {\n\t\twidth: calc( 2 * var(--ck-upload-placeholder-loader-size) * var(--ck-upload-placeholder-image-aspect-ratio) );\n\t}\n\n\t& img {\n\t\t/*\n\t\t * This is an arbitrary aspect for a 1x1 px GIF to display to the user. Not too tall, not too short.\n\t\t * There's nothing special about this number except that it should make the image placeholder look like\n\t\t * a real image during this short period after the upload started and before the image was read from the\n\t\t * file system (and a rich preview was loaded).\n\t\t */\n\t\taspect-ratio: var(--ck-upload-placeholder-image-aspect-ratio);\n\t}\n}\n\n.ck .ck-upload-placeholder-loader {\n\twidth: 100%;\n\theight: 100%;\n\n\t&::before {\n\t\twidth: var(--ck-upload-placeholder-loader-size);\n\t\theight: var(--ck-upload-placeholder-loader-size);\n\t\tborder-radius: 50%;\n\t\tborder-top: 3px solid var(--ck-color-upload-placeholder-loader);\n\t\tborder-right: 2px solid transparent;\n\t\tanimation: ck-upload-placeholder-loader 1s linear infinite;\n\t}\n}\n\n@keyframes ck-upload-placeholder-loader {\n\tto {\n\t\ttransform: rotate( 360deg );\n\t}\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            3689: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ".ck.ck-editor__editable .image,.ck.ck-editor__editable .image-inline{position:relative}.ck.ck-editor__editable .image .ck-progress-bar,.ck.ck-editor__editable .image-inline .ck-progress-bar{left:0;position:absolute;top:0}.ck.ck-editor__editable .image-inline.ck-appear,.ck.ck-editor__editable .image.ck-appear{animation:fadeIn .7s}.ck.ck-editor__editable .image .ck-progress-bar,.ck.ck-editor__editable .image-inline .ck-progress-bar{background:var(--ck-color-upload-bar-background);height:2px;transition:width .1s;width:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-image/theme/imageuploadprogress.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-image/imageuploadprogress.css"],
                    names: [],
                    mappings: "AAMC,qEAEC,iBACD,CAGA,uGAIC,MAAO,CAFP,iBAAkB,CAClB,KAED,CCRC,yFACC,oBACD,CAID,uGAIC,gDAAiD,CAFjD,UAAW,CAGX,oBAAuB,CAFvB,OAGD,CAGD,kBACC,GAAO,SAAY,CACnB,GAAO,SAAY,CACpB",
                    sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-editor__editable {\n\t& .image,\n\t& .image-inline {\n\t\tposition: relative;\n\t}\n\n\t/* Upload progress bar. */\n\t& .image .ck-progress-bar,\n\t& .image-inline .ck-progress-bar {\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\t}\n}\n", "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-editor__editable {\n\t& .image,\n\t& .image-inline {\n\t\t/* Showing animation. */\n\t\t&.ck-appear {\n\t\t\tanimation: fadeIn 700ms;\n\t\t}\n\t}\n\n\t/* Upload progress bar. */\n\t& .image .ck-progress-bar,\n\t& .image-inline .ck-progress-bar {\n\t\theight: 2px;\n\t\twidth: 0;\n\t\tbackground: var(--ck-color-upload-bar-background);\n\t\ttransition: width 100ms;\n\t}\n}\n\n@keyframes fadeIn {\n\tfrom { opacity: 0; }\n\tto   { opacity: 1; }\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            1905: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ".ck.ck-text-alternative-form{display:flex;flex-direction:row;flex-wrap:nowrap}.ck.ck-text-alternative-form .ck-labeled-field-view{display:inline-block}.ck.ck-text-alternative-form .ck-label{display:none}@media screen and (max-width:600px){.ck.ck-text-alternative-form{flex-wrap:wrap}.ck.ck-text-alternative-form .ck-labeled-field-view{flex-basis:100%}.ck.ck-text-alternative-form .ck-button{flex-basis:50%}}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-image/theme/textalternativeform.css", "webpack://./../ckeditor5-ui/theme/mixins/_rwd.css"],
                    names: [],
                    mappings: "AAOA,6BACC,YAAa,CACb,kBAAmB,CACnB,gBAqBD,CAnBC,oDACC,oBACD,CAEA,uCACC,YACD,CCZA,oCDCD,6BAcE,cAUF,CARE,oDACC,eACD,CAEA,wCACC,cACD,CCrBD",
                    sourcesContent: ['/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\n\n.ck.ck-text-alternative-form {\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: nowrap;\n\n\t& .ck-labeled-field-view {\n\t\tdisplay: inline-block;\n\t}\n\n\t& .ck-label {\n\t\tdisplay: none;\n\t}\n\n\t@mixin ck-media-phone {\n\t\tflex-wrap: wrap;\n\n\t\t& .ck-labeled-field-view {\n\t\t\tflex-basis: 100%;\n\t\t}\n\n\t\t& .ck-button {\n\t\t\tflex-basis: 50%;\n\t\t}\n\t}\n}\n', "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@define-mixin ck-media-phone {\n\t@media screen and (max-width: 600px) {\n\t\t@mixin-content;\n\t}\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            9773: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ".ck .ck-link_selected{background:var(--ck-color-link-selected-background)}.ck .ck-link_selected span.image-inline{outline:var(--ck-widget-outline-thickness) solid var(--ck-color-link-selected-background)}.ck .ck-fake-link-selection{background:var(--ck-color-link-fake-selection)}.ck .ck-fake-link-selection_collapsed{border-right:1px solid var(--ck-color-base-text);height:100%;margin-right:-1px;outline:1px solid hsla(0,0%,100%,.5)}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-theme-lark/theme/ckeditor5-link/link.css"],
                    names: [],
                    mappings: "AAMA,sBACC,mDAMD,CAHC,wCACC,yFACD,CAOD,4BACC,8CACD,CAGA,sCAEC,gDAAiD,CADjD,WAAY,CAEZ,iBAAkB,CAClB,oCACD",
                    sourcesContent: ['/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/* Class added to span element surrounding currently selected link. */\n.ck .ck-link_selected {\n\tbackground: var(--ck-color-link-selected-background);\n\n\t/* Give linked inline images some outline to let the user know they are also part of the link. */\n\t& span.image-inline {\n\t\toutline: var(--ck-widget-outline-thickness) solid var(--ck-color-link-selected-background);\n\t}\n}\n\n/*\n * Classes used by the "fake visual selection" displayed in the content when an input\n * in the link UI has focus (the browser does not render the native selection in this state).\n */\n.ck .ck-fake-link-selection {\n\tbackground: var(--ck-color-link-fake-selection);\n}\n\n/* A collapsed fake visual selection. */\n.ck .ck-fake-link-selection_collapsed {\n\theight: 100%;\n\tborder-right: 1px solid var(--ck-color-base-text);\n\tmargin-right: -1px;\n\toutline: solid 1px hsla(0, 0%, 100%, .5);\n}\n'],
                    sourceRoot: ""
                }]);
                const a = s
            },
            2347: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ".ck.ck-link-actions{display:flex;flex-direction:row;flex-wrap:nowrap}.ck.ck-link-actions .ck-link-actions__preview{display:inline-block}.ck.ck-link-actions .ck-link-actions__preview .ck-button__label{overflow:hidden}@media screen and (max-width:600px){.ck.ck-link-actions{flex-wrap:wrap}.ck.ck-link-actions .ck-link-actions__preview{flex-basis:100%}.ck.ck-link-actions .ck-button:not(.ck-link-actions__preview){flex-basis:50%}}.ck.ck-link-actions .ck-button.ck-link-actions__preview{padding-left:0;padding-right:0}.ck.ck-link-actions .ck-button.ck-link-actions__preview .ck-button__label{color:var(--ck-color-link-default);cursor:pointer;max-width:var(--ck-input-width);min-width:3em;padding:0 var(--ck-spacing-medium);text-align:center;text-overflow:ellipsis}.ck.ck-link-actions .ck-button.ck-link-actions__preview .ck-button__label:hover{text-decoration:underline}.ck.ck-link-actions .ck-button.ck-link-actions__preview,.ck.ck-link-actions .ck-button.ck-link-actions__preview:active,.ck.ck-link-actions .ck-button.ck-link-actions__preview:focus,.ck.ck-link-actions .ck-button.ck-link-actions__preview:hover{background:none}.ck.ck-link-actions .ck-button.ck-link-actions__preview:active{box-shadow:none}.ck.ck-link-actions .ck-button.ck-link-actions__preview:focus .ck-button__label{text-decoration:underline}[dir=ltr] .ck.ck-link-actions .ck-button:not(:first-child),[dir=rtl] .ck.ck-link-actions .ck-button:not(:last-child){margin-left:var(--ck-spacing-standard)}@media screen and (max-width:600px){.ck.ck-link-actions .ck-button.ck-link-actions__preview{margin:var(--ck-spacing-standard) var(--ck-spacing-standard) 0}.ck.ck-link-actions .ck-button.ck-link-actions__preview .ck-button__label{max-width:100%;min-width:0}[dir=ltr] .ck.ck-link-actions .ck-button:not(.ck-link-actions__preview),[dir=rtl] .ck.ck-link-actions .ck-button:not(.ck-link-actions__preview){margin-left:0}}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-link/theme/linkactions.css", "webpack://./../ckeditor5-ui/theme/mixins/_rwd.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-link/linkactions.css"],
                    names: [],
                    mappings: "AAOA,oBACC,YAAa,CACb,kBAAmB,CACnB,gBAqBD,CAnBC,8CACC,oBAKD,CAHC,gEACC,eACD,CCXD,oCDCD,oBAcE,cAUF,CARE,8CACC,eACD,CAEA,8DACC,cACD,CCrBD,CCIA,wDACC,cAAe,CACf,eAmCD,CAjCC,0EAEC,kCAAmC,CAEnC,cAAe,CAIf,+BAAgC,CAChC,aAAc,CARd,kCAAmC,CASnC,iBAAkB,CAPlB,sBAYD,CAHC,gFACC,yBACD,CAGD,mPAIC,eACD,CAEA,+DACC,eACD,CAGC,gFACC,yBACD,CAWD,qHACC,sCACD,CDtDD,oCC0DC,wDACC,8DAMD,CAJC,0EAEC,cAAe,CADf,WAED,CAGD,gJAME,aAEF,CDzED",
                    sourcesContent: ['/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\n\n.ck.ck-link-actions {\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: nowrap;\n\n\t& .ck-link-actions__preview {\n\t\tdisplay: inline-block;\n\n\t\t& .ck-button__label {\n\t\t\toverflow: hidden;\n\t\t}\n\t}\n\n\t@mixin ck-media-phone {\n\t\tflex-wrap: wrap;\n\n\t\t& .ck-link-actions__preview {\n\t\t\tflex-basis: 100%;\n\t\t}\n\n\t\t& .ck-button:not(.ck-link-actions__preview) {\n\t\t\tflex-basis: 50%;\n\t\t}\n\t}\n}\n', "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@define-mixin ck-media-phone {\n\t@media screen and (max-width: 600px) {\n\t\t@mixin-content;\n\t}\n}\n", '/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_unselectable.css";\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n@import "../mixins/_focus.css";\n@import "../mixins/_shadow.css";\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\n\n.ck.ck-link-actions {\n\t& .ck-button.ck-link-actions__preview {\n\t\tpadding-left: 0;\n\t\tpadding-right: 0;\n\n\t\t& .ck-button__label {\n\t\t\tpadding: 0 var(--ck-spacing-medium);\n\t\t\tcolor: var(--ck-color-link-default);\n\t\t\ttext-overflow: ellipsis;\n\t\t\tcursor: pointer;\n\n\t\t\t/* Match the box model of the link editor form\'s input so the balloon\n\t\t\tdoes not change width when moving between actions and the form. */\n\t\t\tmax-width: var(--ck-input-width);\n\t\t\tmin-width: 3em;\n\t\t\ttext-align: center;\n\n\t\t\t&:hover {\n\t\t\t\ttext-decoration: underline;\n\t\t\t}\n\t\t}\n\n\t\t&,\n\t\t&:hover,\n\t\t&:focus,\n\t\t&:active {\n\t\t\tbackground: none;\n\t\t}\n\n\t\t&:active {\n\t\t\tbox-shadow: none;\n\t\t}\n\n\t\t&:focus {\n\t\t\t& .ck-button__label {\n\t\t\t\ttext-decoration: underline;\n\t\t\t}\n\t\t}\n\t}\n\n\t@mixin ck-dir ltr {\n\t\t& .ck-button:not(:first-child) {\n\t\t\tmargin-left: var(--ck-spacing-standard);\n\t\t}\n\t}\n\n\t@mixin ck-dir rtl {\n\t\t& .ck-button:not(:last-child) {\n\t\t\tmargin-left: var(--ck-spacing-standard);\n\t\t}\n\t}\n\n\t@mixin ck-media-phone {\n\t\t& .ck-button.ck-link-actions__preview {\n\t\t\tmargin: var(--ck-spacing-standard) var(--ck-spacing-standard) 0;\n\n\t\t\t& .ck-button__label {\n\t\t\t\tmin-width: 0;\n\t\t\t\tmax-width: 100%;\n\t\t\t}\n\t\t}\n\n\t\t& .ck-button:not(.ck-link-actions__preview) {\n\t\t\t@mixin ck-dir ltr {\n\t\t\t\tmargin-left: 0;\n\t\t\t}\n\n\t\t\t@mixin ck-dir rtl {\n\t\t\t\tmargin-left: 0;\n\t\t\t}\n\t\t}\n\t}\n}\n'],
                    sourceRoot: ""
                }]);
                const a = s
            },
            7754: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ".ck.ck-link-form{display:flex}.ck.ck-link-form .ck-label{display:none}@media screen and (max-width:600px){.ck.ck-link-form{flex-wrap:wrap}.ck.ck-link-form .ck-labeled-field-view{flex-basis:100%}.ck.ck-link-form .ck-button{flex-basis:50%}}.ck.ck-link-form_layout-vertical{display:block}.ck.ck-link-form_layout-vertical .ck-button.ck-button-cancel,.ck.ck-link-form_layout-vertical .ck-button.ck-button-save{margin-top:var(--ck-spacing-medium)}.ck.ck-link-form_layout-vertical{min-width:var(--ck-input-width);padding:0}.ck.ck-link-form_layout-vertical .ck-labeled-field-view{margin:var(--ck-spacing-large) var(--ck-spacing-large) var(--ck-spacing-small)}.ck.ck-link-form_layout-vertical .ck-labeled-field-view .ck-input-text{min-width:0;width:100%}.ck.ck-link-form_layout-vertical>.ck-button{border-radius:0;margin:0;padding:var(--ck-spacing-standard);width:50%}.ck.ck-link-form_layout-vertical>.ck-button:not(:focus){border-top:1px solid var(--ck-color-base-border)}[dir=ltr] .ck.ck-link-form_layout-vertical>.ck-button,[dir=rtl] .ck.ck-link-form_layout-vertical>.ck-button{margin-left:0}[dir=rtl] .ck.ck-link-form_layout-vertical>.ck-button:last-of-type{border-right:1px solid var(--ck-color-base-border)}.ck.ck-link-form_layout-vertical .ck.ck-list{margin:var(--ck-spacing-standard) var(--ck-spacing-large)}.ck.ck-link-form_layout-vertical .ck.ck-list .ck-button.ck-switchbutton{padding:0;width:100%}.ck.ck-link-form_layout-vertical .ck.ck-list .ck-button.ck-switchbutton:hover{background:none}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-link/theme/linkform.css", "webpack://./../ckeditor5-ui/theme/mixins/_rwd.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-link/linkform.css"],
                    names: [],
                    mappings: "AAOA,iBACC,YAiBD,CAfC,2BACC,YACD,CCNA,oCDCD,iBAQE,cAUF,CARE,wCACC,eACD,CAEA,4BACC,cACD,CCfD,CDuBD,iCACC,aAYD,CALE,wHAEC,mCACD,CE/BF,iCAEC,+BAAgC,CADhC,SAgDD,CA7CC,wDACC,8EAMD,CAJC,uEACC,WAAY,CACZ,UACD,CAGD,4CAIC,eAAgB,CAFhB,QAAS,CADT,kCAAmC,CAEnC,SAkBD,CAfC,wDACC,gDACD,CARD,4GAeE,aAMF,CAJE,mEACC,kDACD,CAKF,6CACC,yDAUD,CARC,wEACC,SAAU,CACV,UAKD,CAHC,8EACC,eACD",
                    sourcesContent: ['/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\n\n.ck.ck-link-form {\n\tdisplay: flex;\n\n\t& .ck-label {\n\t\tdisplay: none;\n\t}\n\n\t@mixin ck-media-phone {\n\t\tflex-wrap: wrap;\n\n\t\t& .ck-labeled-field-view {\n\t\t\tflex-basis: 100%;\n\t\t}\n\n\t\t& .ck-button {\n\t\t\tflex-basis: 50%;\n\t\t}\n\t}\n}\n\n/*\n * Style link form differently when manual decorators are available.\n * See: https://github.com/ckeditor/ckeditor5-link/issues/186.\n */\n.ck.ck-link-form_layout-vertical {\n\tdisplay: block;\n\n\t/*\n\t * Whether the form is in the responsive mode or not, if there are decorator buttons\n\t * keep the top margin of action buttons medium.\n\t */\n\t& .ck-button {\n\t\t&.ck-button-save,\n\t\t&.ck-button-cancel {\n\t\t\tmargin-top: var(--ck-spacing-medium);\n\t\t}\n\t}\n}\n', "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@define-mixin ck-media-phone {\n\t@media screen and (max-width: 600px) {\n\t\t@mixin-content;\n\t}\n}\n", '/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n/*\n * Style link form differently when manual decorators are available.\n * See: https://github.com/ckeditor/ckeditor5-link/issues/186.\n */\n.ck.ck-link-form_layout-vertical {\n\tpadding: 0;\n\tmin-width: var(--ck-input-width);\n\n\t& .ck-labeled-field-view {\n\t\tmargin: var(--ck-spacing-large) var(--ck-spacing-large) var(--ck-spacing-small);\n\n\t\t& .ck-input-text {\n\t\t\tmin-width: 0;\n\t\t\twidth: 100%;\n\t\t}\n\t}\n\n\t& > .ck-button {\n\t\tpadding: var(--ck-spacing-standard);\n\t\tmargin: 0;\n\t\twidth: 50%;\n\t\tborder-radius: 0;\n\n\t\t&:not(:focus) {\n\t\t\tborder-top: 1px solid var(--ck-color-base-border);\n\t\t}\n\n\t\t@mixin ck-dir ltr {\n\t\t\tmargin-left: 0;\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\tmargin-left: 0;\n\n\t\t\t&:last-of-type {\n\t\t\t\tborder-right: 1px solid var(--ck-color-base-border);\n\t\t\t}\n\t\t}\n\t}\n\n\t/* Using additional `.ck` class for stronger CSS specificity than `.ck.ck-link-form > :not(:first-child)`. */\n\t& .ck.ck-list {\n\t\tmargin: var(--ck-spacing-standard) var(--ck-spacing-large);\n\n\t\t& .ck-button.ck-switchbutton {\n\t\t\tpadding: 0;\n\t\t\twidth: 100%;\n\n\t\t\t&:hover {\n\t\t\t\tbackground: none;\n\t\t\t}\n\t\t}\n\t}\n}\n'],
                    sourceRoot: ""
                }]);
                const a = s
            },
            111: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, '.ck.ck-editor__editable a span.image-inline:after,.ck.ck-editor__editable figure.image>a:after{display:block;position:absolute}:root{--ck-link-image-indicator-icon-size:20;--ck-link-image-indicator-icon-is-visible:clamp(0px,100% - 50px,1px)}.ck.ck-editor__editable a span.image-inline:after,.ck.ck-editor__editable figure.image>a:after{background-color:rgba(0,0,0,.4);background-image:url("data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0iI2ZmZiIgZD0ibTExLjA3NyAxNSAuOTkxLTEuNDE2YS43NS43NSAwIDEgMSAxLjIyOS44NmwtMS4xNDggMS42NGEuNzQ4Ljc0OCAwIDAgMS0uMjE3LjIwNiA1LjI1MSA1LjI1MSAwIDAgMS04LjUwMy01Ljk1NS43NDEuNzQxIDAgMCAxIC4xMi0uMjc0bDEuMTQ3LTEuNjM5YS43NS43NSAwIDEgMSAxLjIyOC44Nkw0LjkzMyAxMC43bC4wMDYuMDAzYTMuNzUgMy43NSAwIDAgMCA2LjEzMiA0LjI5NGwuMDA2LjAwNHptNS40OTQtNS4zMzVhLjc0OC43NDggMCAwIDEtLjEyLjI3NGwtMS4xNDcgMS42MzlhLjc1Ljc1IDAgMSAxLTEuMjI4LS44NmwuODYtMS4yM2EzLjc1IDMuNzUgMCAwIDAtNi4xNDQtNC4zMDFsLS44NiAxLjIyOWEuNzUuNzUgMCAwIDEtMS4yMjktLjg2bDEuMTQ4LTEuNjRhLjc0OC43NDggMCAwIDEgLjIxNy0uMjA2IDUuMjUxIDUuMjUxIDAgMCAxIDguNTAzIDUuOTU1em0tNC41NjMtMi41MzJhLjc1Ljc1IDAgMCAxIC4xODQgMS4wNDVsLTMuMTU1IDQuNTA1YS43NS43NSAwIDEgMS0xLjIyOS0uODZsMy4xNTUtNC41MDZhLjc1Ljc1IDAgMCAxIDEuMDQ1LS4xODR6Ii8+PC9zdmc+");background-position:50%;background-repeat:no-repeat;background-size:14px;border-radius:100%;content:"";height:calc(var(--ck-link-image-indicator-icon-is-visible)*var(--ck-link-image-indicator-icon-size));overflow:hidden;right:min(var(--ck-spacing-medium),6%);top:min(var(--ck-spacing-medium),6%);width:calc(var(--ck-link-image-indicator-icon-is-visible)*var(--ck-link-image-indicator-icon-size))}', "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-link/theme/linkimage.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-link/linkimage.css"],
                    names: [],
                    mappings: "AASE,+FACC,aAAc,CACd,iBACD,CCPF,MAEC,sCAAuC,CACvC,oEACD,CAME,+FAUC,+BAAqC,CACrC,83BAA+3B,CAG/3B,uBAA2B,CAD3B,2BAA4B,CAD5B,oBAAqB,CAGrB,kBAAmB,CAdnB,UAAW,CAsBX,oGAAuG,CAFvG,eAAgB,CAbhB,sCAAwC,CADxC,oCAAsC,CAetC,mGAED",
                    sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-editor__editable {\n\t/* Linked image indicator */\n\t& figure.image > a,\n\t& a span.image-inline {\n\t\t&::after {\n\t\t\tdisplay: block;\n\t\t\tposition: absolute;\n\t\t}\n\t}\n}\n\n", '/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t/* Match the icon size with the upload indicator brought by the image upload feature. */\n\t--ck-link-image-indicator-icon-size: 20;\n\t--ck-link-image-indicator-icon-is-visible: clamp(0px, 100% - 50px, 1px);\n}\n\n.ck.ck-editor__editable {\n\t/* Linked image indicator */\n\t& figure.image > a,\n\t& a span.image-inline {\n\t\t&::after {\n\t\t\tcontent: "";\n\n\t\t\t/*\n\t\t\t * Smaller images should have the icon closer to the border.\n\t\t\t * Match the icon position with the upload indicator brought by the image upload feature.\n\t\t\t */\n\t\t\ttop: min(var(--ck-spacing-medium), 6%);\n\t\t\tright: min(var(--ck-spacing-medium), 6%);\n\n\t\t\tbackground-color: hsla(0, 0%, 0%, .4);\n\t\t\tbackground-image: url("data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0iI2ZmZiIgZD0ibTExLjA3NyAxNSAuOTkxLTEuNDE2YS43NS43NSAwIDEgMSAxLjIyOS44NmwtMS4xNDggMS42NGEuNzQ4Ljc0OCAwIDAgMS0uMjE3LjIwNiA1LjI1MSA1LjI1MSAwIDAgMS04LjUwMy01Ljk1NS43NDEuNzQxIDAgMCAxIC4xMi0uMjc0bDEuMTQ3LTEuNjM5YS43NS43NSAwIDEgMSAxLjIyOC44Nkw0LjkzMyAxMC43bC4wMDYuMDAzYTMuNzUgMy43NSAwIDAgMCA2LjEzMiA0LjI5NGwuMDA2LjAwNHptNS40OTQtNS4zMzVhLjc0OC43NDggMCAwIDEtLjEyLjI3NGwtMS4xNDcgMS42MzlhLjc1Ljc1IDAgMSAxLTEuMjI4LS44NmwuODYtMS4yM2EzLjc1IDMuNzUgMCAwIDAtNi4xNDQtNC4zMDFsLS44NiAxLjIyOWEuNzUuNzUgMCAwIDEtMS4yMjktLjg2bDEuMTQ4LTEuNjRhLjc0OC43NDggMCAwIDEgLjIxNy0uMjA2IDUuMjUxIDUuMjUxIDAgMCAxIDguNTAzIDUuOTU1em0tNC41NjMtMi41MzJhLjc1Ljc1IDAgMCAxIC4xODQgMS4wNDVsLTMuMTU1IDQuNTA1YS43NS43NSAwIDEgMS0xLjIyOS0uODZsMy4xNTUtNC41MDZhLjc1Ljc1IDAgMCAxIDEuMDQ1LS4xODR6Ii8+PC9zdmc+");\n\t\t\tbackground-size: 14px;\n\t\t\tbackground-repeat: no-repeat;\n\t\t\tbackground-position: center;\n\t\t\tborder-radius: 100%;\n\n\t\t\t/*\n\t\t\t* Use CSS math to simulate container queries.\n\t\t\t* https://css-tricks.com/the-raven-technique-one-step-closer-to-container-queries/#what-about-showing-and-hiding-things\n\t\t\t*/\n\t\t\toverflow: hidden;\n\t\t\twidth: calc(var(--ck-link-image-indicator-icon-is-visible) * var(--ck-link-image-indicator-icon-size));\n\t\t\theight: calc(var(--ck-link-image-indicator-icon-is-visible) * var(--ck-link-image-indicator-icon-size));\n\t\t}\n\t}\n}\n\n'],
                    sourceRoot: ""
                }]);
                const a = s
            },
            4721: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ".ck.ck-collapsible.ck-collapsible_collapsed>.ck-collapsible__children{display:none}:root{--ck-collapsible-arrow-size:calc(var(--ck-icon-size)*0.5)}.ck.ck-collapsible>.ck.ck-button{border-radius:0;color:inherit;font-weight:700;padding:var(--ck-spacing-medium) var(--ck-spacing-large);width:100%}.ck.ck-collapsible>.ck.ck-button:focus{background:transparent}.ck.ck-collapsible>.ck.ck-button:active,.ck.ck-collapsible>.ck.ck-button:hover:not(:focus),.ck.ck-collapsible>.ck.ck-button:not(:focus){background:transparent;border-color:transparent;box-shadow:none}.ck.ck-collapsible>.ck.ck-button>.ck-icon{margin-right:var(--ck-spacing-medium);width:var(--ck-collapsible-arrow-size)}.ck.ck-collapsible>.ck-collapsible__children{padding:0 var(--ck-spacing-large) var(--ck-spacing-large)}.ck.ck-collapsible.ck-collapsible_collapsed>.ck.ck-button .ck-icon{transform:rotate(-90deg)}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-list/theme/collapsible.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-list/collapsible.css"],
                    names: [],
                    mappings: "AAMC,sEACC,YACD,CCHD,MACC,yDACD,CAGC,iCAIC,eAAgB,CAChB,aAAc,CAHd,eAAiB,CACjB,wDAAyD,CAFzD,UAoBD,CAdC,uCACC,sBACD,CAEA,wIACC,sBAAuB,CACvB,wBAAyB,CACzB,eACD,CAEA,0CACC,qCAAsC,CACtC,sCACD,CAGD,6CACC,yDACD,CAGC,mEACC,wBACD",
                    sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-collapsible.ck-collapsible_collapsed {\n\t& > .ck-collapsible__children {\n\t\tdisplay: none;\n\t}\n}\n", "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-collapsible-arrow-size: calc(0.5 * var(--ck-icon-size));\n}\n\n.ck.ck-collapsible {\n\t& > .ck.ck-button {\n\t\twidth: 100%;\n\t\tfont-weight: bold;\n\t\tpadding: var(--ck-spacing-medium) var(--ck-spacing-large);\n\t\tborder-radius: 0;\n\t\tcolor: inherit;\n\n\t\t&:focus {\n\t\t\tbackground: transparent;\n\t\t}\n\n\t\t&:active, &:not(:focus), &:hover:not(:focus) {\n\t\t\tbackground: transparent;\n\t\t\tborder-color: transparent;\n\t\t\tbox-shadow: none;\n\t\t}\n\n\t\t& > .ck-icon {\n\t\t\tmargin-right: var(--ck-spacing-medium);\n\t\t\twidth: var(--ck-collapsible-arrow-size);\n\t\t}\n\t}\n\n\t& > .ck-collapsible__children {\n\t\tpadding: 0 var(--ck-spacing-large) var(--ck-spacing-large);\n\t}\n\n\t&.ck-collapsible_collapsed {\n\t\t& > .ck.ck-button .ck-icon {\n\t\t\ttransform: rotate(-90deg);\n\t\t}\n\t}\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            5730: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ".ck-editor__editable .ck-list-bogus-paragraph{display:block}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-list/theme/documentlist.css"],
                    names: [],
                    mappings: "AAKA,8CACC,aACD",
                    sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck-editor__editable .ck-list-bogus-paragraph {\n\tdisplay: block;\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            4564: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ".ck-content ol{list-style-type:decimal}.ck-content ol ol{list-style-type:lower-latin}.ck-content ol ol ol{list-style-type:lower-roman}.ck-content ol ol ol ol{list-style-type:upper-latin}.ck-content ol ol ol ol ol{list-style-type:upper-roman}.ck-content ul{list-style-type:disc}.ck-content ul ul{list-style-type:circle}.ck-content ul ul ul,.ck-content ul ul ul ul{list-style-type:square}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-list/theme/list.css"],
                    names: [],
                    mappings: "AAKA,eACC,uBAiBD,CAfC,kBACC,2BAaD,CAXC,qBACC,2BASD,CAPC,wBACC,2BAKD,CAHC,2BACC,2BACD,CAMJ,eACC,oBAaD,CAXC,kBACC,sBASD,CAJE,6CACC,sBACD",
                    sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck-content ol {\n\tlist-style-type: decimal;\n\n\t& ol {\n\t\tlist-style-type: lower-latin;\n\n\t\t& ol {\n\t\t\tlist-style-type: lower-roman;\n\n\t\t\t& ol {\n\t\t\t\tlist-style-type: upper-latin;\n\n\t\t\t\t& ol {\n\t\t\t\t\tlist-style-type: upper-roman;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n.ck-content ul {\n\tlist-style-type: disc;\n\n\t& ul {\n\t\tlist-style-type: circle;\n\n\t\t& ul {\n\t\t\tlist-style-type: square;\n\n\t\t\t& ul {\n\t\t\t\tlist-style-type: square;\n\t\t\t}\n\t\t}\n\t}\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            6082: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ".ck.ck-list-properties.ck-list-properties_without-styles{padding:var(--ck-spacing-large)}.ck.ck-list-properties.ck-list-properties_without-styles>*{min-width:14em}.ck.ck-list-properties.ck-list-properties_without-styles>*+*{margin-top:var(--ck-spacing-standard)}.ck.ck-list-properties.ck-list-properties_with-numbered-properties>.ck-list-styles-list{grid-template-columns:repeat(4,auto)}.ck.ck-list-properties.ck-list-properties_with-numbered-properties>.ck-collapsible{border-top:1px solid var(--ck-color-base-border)}.ck.ck-list-properties.ck-list-properties_with-numbered-properties>.ck-collapsible>.ck-collapsible__children>*{width:100%}.ck.ck-list-properties.ck-list-properties_with-numbered-properties>.ck-collapsible>.ck-collapsible__children>*+*{margin-top:var(--ck-spacing-standard)}.ck.ck-list-properties .ck.ck-numbered-list-properties__start-index .ck-input{min-width:auto;width:100%}.ck.ck-list-properties .ck.ck-numbered-list-properties__reversed-order{background:transparent;margin-bottom:calc(var(--ck-spacing-tiny)*-1);padding-left:0;padding-right:0}.ck.ck-list-properties .ck.ck-numbered-list-properties__reversed-order:active,.ck.ck-list-properties .ck.ck-numbered-list-properties__reversed-order:hover{background:none;border-color:transparent;box-shadow:none}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-theme-lark/theme/ckeditor5-list/listproperties.css"],
                    names: [],
                    mappings: "AAOC,yDACC,+BASD,CAPC,2DACC,cAKD,CAHC,6DACC,qCACD,CASD,wFACC,oCACD,CAGA,mFACC,gDAWD,CARE,+GACC,UAKD,CAHC,iHACC,qCACD,CAMJ,8EACC,cAAe,CACf,UACD,CAEA,uEACC,sBAAuB,CAGvB,6CAAgD,CAFhD,cAAe,CACf,eAQD,CALC,2JAGC,eAAgB,CADhB,wBAAyB,CADzB,eAGD",
                    sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-list-properties {\n\t/* When there are no list styles and there is no collapsible. */\n\t&.ck-list-properties_without-styles {\n\t\tpadding: var(--ck-spacing-large);\n\n\t\t& > * {\n\t\t\tmin-width: 14em;\n\n\t\t\t& + * {\n\t\t\t\tmargin-top: var(--ck-spacing-standard);\n\t\t\t}\n\t\t}\n\t}\n\n\t/*\n\t * When the numbered list property fields (start at, reversed) should be displayed,\n\t * more horizontal space is needed. Reconfigure the style grid to create that space.\n\t */\n\t&.ck-list-properties_with-numbered-properties {\n\t\t& > .ck-list-styles-list {\n\t\t\tgrid-template-columns: repeat( 4, auto );\n\t\t}\n\n\t\t/* When list styles are rendered and property fields are in a collapsible. */\n\t\t& > .ck-collapsible {\n\t\t\tborder-top: 1px solid var(--ck-color-base-border);\n\n\t\t\t& > .ck-collapsible__children {\n\t\t\t\t& > * {\n\t\t\t\t\twidth: 100%;\n\n\t\t\t\t\t& + * {\n\t\t\t\t\t\tmargin-top: var(--ck-spacing-standard);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t& .ck.ck-numbered-list-properties__start-index .ck-input {\n\t\tmin-width: auto;\n\t\twidth: 100%;\n\t}\n\n\t& .ck.ck-numbered-list-properties__reversed-order {\n\t\tbackground: transparent;\n\t\tpadding-left: 0;\n\t\tpadding-right: 0;\n\t\tmargin-bottom: calc(-1 * var(--ck-spacing-tiny));\n\n\t\t&:active, &:hover {\n\t\t\tbox-shadow: none;\n\t\t\tborder-color: transparent;\n\t\t\tbackground: none;\n\t\t}\n\t}\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            2417: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ".ck.ck-list-styles-list{display:grid}:root{--ck-list-style-button-size:44px}.ck.ck-list-styles-list{column-gap:var(--ck-spacing-medium);grid-template-columns:repeat(3,auto);padding:var(--ck-spacing-large);row-gap:var(--ck-spacing-medium)}.ck.ck-list-styles-list .ck-button{box-sizing:content-box;margin:0;padding:0}.ck.ck-list-styles-list .ck-button,.ck.ck-list-styles-list .ck-button .ck-icon{height:var(--ck-list-style-button-size);width:var(--ck-list-style-button-size)}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-list/theme/liststyles.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-list/liststyles.css"],
                    names: [],
                    mappings: "AAKA,wBACC,YACD,CCFA,MACC,gCACD,CAEA,wBAGC,mCAAoC,CAFpC,oCAAwC,CAGxC,+BAAgC,CAFhC,gCA4BD,CAxBC,mCAiBC,sBAAuB,CAPvB,QAAS,CANT,SAmBD,CAJC,+EAhBA,uCAAwC,CADxC,sCAoBA",
                    sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-list-styles-list {\n\tdisplay: grid;\n}\n", '/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-list-style-button-size: 44px;\n}\n\n.ck.ck-list-styles-list {\n\tgrid-template-columns: repeat( 3, auto );\n\trow-gap: var(--ck-spacing-medium);\n\tcolumn-gap: var(--ck-spacing-medium);\n\tpadding: var(--ck-spacing-large);\n\n\t& .ck-button {\n\t\t/* Make the button look like a thumbnail (the icon "takes it all"). */\n\t\twidth: var(--ck-list-style-button-size);\n\t\theight: var(--ck-list-style-button-size);\n\t\tpadding: 0;\n\n\t\t/*\n\t\t * Buttons are aligned by the grid so disable default button margins to not collide with the\n\t\t * gaps in the grid.\n\t\t */\n\t\tmargin: 0;\n\n\t\t/*\n\t\t * Make sure the button border (which is displayed on focus, BTW) does not steal pixels\n\t\t * from the button dimensions and, as a result, decrease the size of the icon\n\t\t * (which becomes blurry as it scales down).\n\t\t */\n\t\tbox-sizing: content-box;\n\n\t\t& .ck-icon {\n\t\t\twidth: var(--ck-list-style-button-size);\n\t\t\theight: var(--ck-list-style-button-size);\n\t\t}\n\t}\n}\n'],
                    sourceRoot: ""
                }]);
                const a = s
            },
            1199: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ':root{--ck-todo-list-checkmark-size:16px}.ck-content .todo-list{list-style:none}.ck-content .todo-list li{margin-bottom:5px}.ck-content .todo-list li .todo-list{margin-top:5px}.ck-content .todo-list .todo-list__label>input{-webkit-appearance:none;border:0;display:inline-block;height:var(--ck-todo-list-checkmark-size);left:-25px;margin-left:0;margin-right:-15px;position:relative;right:0;vertical-align:middle;width:var(--ck-todo-list-checkmark-size)}.ck-content .todo-list .todo-list__label>input:before{border:1px solid #333;border-radius:2px;box-sizing:border-box;content:"";display:block;height:100%;position:absolute;transition:box-shadow .25s ease-in-out,background .25s ease-in-out,border .25s ease-in-out;width:100%}.ck-content .todo-list .todo-list__label>input:after{border-color:transparent;border-style:solid;border-width:0 calc(var(--ck-todo-list-checkmark-size)/8) calc(var(--ck-todo-list-checkmark-size)/8) 0;box-sizing:content-box;content:"";display:block;height:calc(var(--ck-todo-list-checkmark-size)/2.6);left:calc(var(--ck-todo-list-checkmark-size)/3);pointer-events:none;position:absolute;top:calc(var(--ck-todo-list-checkmark-size)/5.3);transform:rotate(45deg);width:calc(var(--ck-todo-list-checkmark-size)/5.3)}.ck-content .todo-list .todo-list__label>input[checked]:before{background:#26ab33;border-color:#26ab33}.ck-content .todo-list .todo-list__label>input[checked]:after{border-color:#fff}.ck-content .todo-list .todo-list__label .todo-list__label__description{vertical-align:middle}[dir=rtl] .todo-list .todo-list__label>input{left:0;margin-left:-15px;margin-right:0;right:-25px}.ck-editor__editable .todo-list .todo-list__label>input{cursor:pointer}.ck-editor__editable .todo-list .todo-list__label>input:hover:before{box-shadow:0 0 0 5px rgba(0,0,0,.1)}', "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-list/theme/todolist.css"],
                    names: [],
                    mappings: "AAKA,MACC,kCACD,CAEA,uBACC,eA0ED,CAxEC,0BACC,iBAKD,CAHC,qCACC,cACD,CAIA,+CACC,uBAAwB,CAQxB,QAAS,CAPT,oBAAqB,CAGrB,yCAA0C,CAO1C,UAAW,CAGX,aAAc,CAFd,kBAAmB,CAVnB,iBAAkB,CAWlB,OAAQ,CARR,qBAAsB,CAFtB,wCAqDD,CAxCC,sDAOC,qBAAiC,CACjC,iBAAkB,CALlB,qBAAsB,CACtB,UAAW,CAHX,aAAc,CAKd,WAAY,CAJZ,iBAAkB,CAOlB,0FAAgG,CAJhG,UAKD,CAEA,qDAaC,wBAAyB,CADzB,kBAAmB,CAEnB,sGAA+G,CAX/G,sBAAuB,CAEvB,UAAW,CAJX,aAAc,CAUd,mDAAwD,CAHxD,+CAAoD,CAJpD,mBAAoB,CAFpB,iBAAkB,CAOlB,gDAAqD,CAMrD,uBAAwB,CALxB,kDAMD,CAGC,+DACC,kBAA8B,CAC9B,oBACD,CAEA,8DACC,iBACD,CAIF,wEACC,qBACD,CAKF,6CACC,MAAO,CAGP,iBAAkB,CAFlB,cAAe,CACf,WAED,CAMA,wDACC,cAKD,CAHC,qEACC,mCACD",
                    sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-todo-list-checkmark-size: 16px;\n}\n\n.ck-content .todo-list {\n\tlist-style: none;\n\n\t& li {\n\t\tmargin-bottom: 5px;\n\n\t\t& .todo-list {\n\t\t\tmargin-top: 5px;\n\t\t}\n\t}\n\n\t& .todo-list__label {\n\t\t& > input {\n\t\t\t-webkit-appearance: none;\n\t\t\tdisplay: inline-block;\n\t\t\tposition: relative;\n\t\t\twidth: var(--ck-todo-list-checkmark-size);\n\t\t\theight: var(--ck-todo-list-checkmark-size);\n\t\t\tvertical-align: middle;\n\n\t\t\t/* Needed on iOS */\n\t\t\tborder: 0;\n\n\t\t\t/* LTR styles */\n\t\t\tleft: -25px;\n\t\t\tmargin-right: -15px;\n\t\t\tright: 0;\n\t\t\tmargin-left: 0;\n\n\t\t\t&::before {\n\t\t\t\tdisplay: block;\n\t\t\t\tposition: absolute;\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\tcontent: '';\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 100%;\n\t\t\t\tborder: 1px solid hsl(0, 0%, 20%);\n\t\t\t\tborder-radius: 2px;\n\t\t\t\ttransition: 250ms ease-in-out box-shadow, 250ms ease-in-out background, 250ms ease-in-out border;\n\t\t\t}\n\n\t\t\t&::after {\n\t\t\t\tdisplay: block;\n\t\t\t\tposition: absolute;\n\t\t\t\tbox-sizing: content-box;\n\t\t\t\tpointer-events: none;\n\t\t\t\tcontent: '';\n\n\t\t\t\t/* Calculate tick position, size and border-width proportional to the checkmark size. */\n\t\t\t\tleft: calc( var(--ck-todo-list-checkmark-size) / 3 );\n\t\t\t\ttop: calc( var(--ck-todo-list-checkmark-size) / 5.3 );\n\t\t\t\twidth: calc( var(--ck-todo-list-checkmark-size) / 5.3 );\n\t\t\t\theight: calc( var(--ck-todo-list-checkmark-size) / 2.6 );\n\t\t\t\tborder-style: solid;\n\t\t\t\tborder-color: transparent;\n\t\t\t\tborder-width: 0 calc( var(--ck-todo-list-checkmark-size) / 8 ) calc( var(--ck-todo-list-checkmark-size) / 8 ) 0;\n\t\t\t\ttransform: rotate(45deg);\n\t\t\t}\n\n\t\t\t&[checked] {\n\t\t\t\t&::before {\n\t\t\t\t\tbackground: hsl(126, 64%, 41%);\n\t\t\t\t\tborder-color: hsl(126, 64%, 41%);\n\t\t\t\t}\n\n\t\t\t\t&::after {\n\t\t\t\t\tborder-color: hsl(0, 0%, 100%);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t& .todo-list__label__description {\n\t\t\tvertical-align: middle;\n\t\t}\n\t}\n}\n\n/* RTL styles */\n[dir=\"rtl\"] .todo-list .todo-list__label > input {\n\tleft: 0;\n\tmargin-right: 0;\n\tright: -25px;\n\tmargin-left: -15px;\n}\n\n/*\n * To-do list should be interactive only during the editing\n * (https://github.com/ckeditor/ckeditor5/issues/2090).\n */\n.ck-editor__editable .todo-list .todo-list__label > input {\n\tcursor: pointer;\n\n\t&:hover::before {\n\t\tbox-shadow: 0 0 0 5px hsla(0, 0%, 0%, 0.1);\n\t}\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            4652: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ".ck-content .media{clear:both;display:block;margin:.9em 0;min-width:15em}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-media-embed/theme/mediaembed.css"],
                    names: [],
                    mappings: "AAKA,mBAGC,UAAW,CASX,aAAc,CAJd,aAAe,CAQf,cACD",
                    sourcesContent: ['/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck-content .media {\n\t/* Don\'t allow floated content overlap the media.\n\thttps://github.com/ckeditor/ckeditor5-media-embed/issues/53 */\n\tclear: both;\n\n\t/* Make sure there is some space between the content and the media. */\n\t/* The first value should be equal to --ck-spacing-large variable if used in the editor context\n\tto avoid the content jumping (See https://github.com/ckeditor/ckeditor5/issues/9825). */\n\tmargin: 0.9em 0;\n\n\t/* Make sure media is not overriden with Bootstrap default `flex` value.\n\tSee: https://github.com/ckeditor/ckeditor5/issues/1373. */\n\tdisplay: block;\n\n\t/* Give the media some minimal width in the content to prevent them\n\tfrom being "squashed" in tight spaces, e.g. in table cells (#44) */\n\tmin-width: 15em;\n}\n'],
                    sourceRoot: ""
                }]);
                const a = s
            },
            7442: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, '.ck-media__wrapper .ck-media__placeholder{align-items:center;display:flex;flex-direction:column}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url{max-width:100%;position:relative}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url .ck-media__placeholder__url__text{display:block;overflow:hidden}.ck-media__wrapper[data-oembed-url*="facebook.com"] .ck-media__placeholder__icon *,.ck-media__wrapper[data-oembed-url*="goo.gl/maps"] .ck-media__placeholder__icon *,.ck-media__wrapper[data-oembed-url*="google.com/maps"] .ck-media__placeholder__icon *,.ck-media__wrapper[data-oembed-url*="instagram.com"] .ck-media__placeholder__icon *,.ck-media__wrapper[data-oembed-url*="maps.app.goo.gl"] .ck-media__placeholder__icon *,.ck-media__wrapper[data-oembed-url*="maps.google.com"] .ck-media__placeholder__icon *,.ck-media__wrapper[data-oembed-url*="twitter.com"] .ck-media__placeholder__icon *{display:none}.ck-editor__editable:not(.ck-read-only) .ck-media__wrapper>:not(.ck-media__placeholder),.ck-editor__editable:not(.ck-read-only) .ck-widget:not(.ck-widget_selected) .ck-media__placeholder{pointer-events:none}:root{--ck-media-embed-placeholder-icon-size:3em;--ck-color-media-embed-placeholder-url-text:#757575;--ck-color-media-embed-placeholder-url-text-hover:var(--ck-color-base-text)}.ck-media__wrapper{margin:0 auto}.ck-media__wrapper .ck-media__placeholder{background:var(--ck-color-base-foreground);padding:calc(var(--ck-spacing-standard)*3)}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__icon{background-position:50%;background-size:cover;height:var(--ck-media-embed-placeholder-icon-size);margin-bottom:var(--ck-spacing-large);min-width:var(--ck-media-embed-placeholder-icon-size)}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__icon .ck-icon{height:100%;width:100%}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url__text{color:var(--ck-color-media-embed-placeholder-url-text);font-style:italic;text-align:center;text-overflow:ellipsis;white-space:nowrap}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url__text:hover{color:var(--ck-color-media-embed-placeholder-url-text-hover);cursor:pointer;text-decoration:underline}.ck-media__wrapper[data-oembed-url*="open.spotify.com"]{max-height:380px;max-width:300px}.ck-media__wrapper[data-oembed-url*="goo.gl/maps"] .ck-media__placeholder__icon,.ck-media__wrapper[data-oembed-url*="google.com/maps"] .ck-media__placeholder__icon,.ck-media__wrapper[data-oembed-url*="maps.app.goo.gl"] .ck-media__placeholder__icon,.ck-media__wrapper[data-oembed-url*="maps.google.com"] .ck-media__placeholder__icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTAuMzc4IiBoZWlnaHQ9IjI1NC4xNjciIHZpZXdCb3g9IjAgMCA2Ni4yNDYgNjcuMjQ4Ij48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTcyLjUzMSAtMjE4LjQ1NSkgc2NhbGUoLjk4MDEyKSI+PHJlY3Qgcnk9IjUuMjM4IiByeD0iNS4yMzgiIHk9IjIzMS4zOTkiIHg9IjE3Ni4wMzEiIGhlaWdodD0iNjAuMDk5IiB3aWR0aD0iNjAuMDk5IiBmaWxsPSIjMzRhNjY4IiBwYWludC1vcmRlcj0ibWFya2VycyBzdHJva2UgZmlsbCIvPjxwYXRoIGQ9Im0yMDYuNDc3IDI2MC45LTI4Ljk4NyAyOC45ODdhNS4yMTggNS4yMTggMCAwIDAgMy43OCAxLjYxaDQ5LjYyMWMxLjY5NCAwIDMuMTktLjc5OCA0LjE0Ni0yLjAzN3oiIGZpbGw9IiM1Yzg4YzUiLz48cGF0aCBkPSJNMjI2Ljc0MiAyMjIuOTg4Yy05LjI2NiAwLTE2Ljc3NyA3LjE3LTE2Ljc3NyAxNi4wMTQuMDA3IDIuNzYyLjY2MyA1LjQ3NCAyLjA5MyA3Ljg3NS40My43MDMuODMgMS40MDggMS4xOSAyLjEwNy4zMzMuNTAyLjY1IDEuMDA1Ljk1IDEuNTA4LjM0My40NzcuNjczLjk1Ny45ODggMS40NCAxLjMxIDEuNzY5IDIuNSAzLjUwMiAzLjYzNyA1LjE2OC43OTMgMS4yNzUgMS42ODMgMi42NCAyLjQ2NiAzLjk5IDIuMzYzIDQuMDk0IDQuMDA3IDguMDkyIDQuNiAxMy45MTR2LjAxMmMuMTgyLjQxMi41MTYuNjY2Ljg3OS42NjcuNDAzLS4wMDEuNzY4LS4zMTQuOTMtLjc5OS42MDMtNS43NTYgMi4yMzgtOS43MjkgNC41ODUtMTMuNzk0Ljc4Mi0xLjM1IDEuNjczLTIuNzE1IDIuNDY1LTMuOTkgMS4xMzctMS42NjYgMi4zMjgtMy40IDMuNjM4LTUuMTY5LjMxNS0uNDgyLjY0NS0uOTYyLjk4OC0xLjQzOS4zLS41MDMuNjE3LTEuMDA2Ljk1LTEuNTA4LjM1OS0uNy43Ni0xLjQwNCAxLjE5LTIuMTA3IDEuNDI2LTIuNDAyIDItNS4xMTQgMi4wMDQtNy44NzUgMC04Ljg0NC03LjUxMS0xNi4wMTQtMTYuNzc2LTE2LjAxNHoiIGZpbGw9IiNkZDRiM2UiIHBhaW50LW9yZGVyPSJtYXJrZXJzIHN0cm9rZSBmaWxsIi8+PGVsbGlwc2Ugcnk9IjUuNTY0IiByeD0iNS44MjgiIGN5PSIyMzkuMDAyIiBjeD0iMjI2Ljc0MiIgZmlsbD0iIzgwMmQyNyIgcGFpbnQtb3JkZXI9Im1hcmtlcnMgc3Ryb2tlIGZpbGwiLz48cGF0aCBkPSJNMTkwLjMwMSAyMzcuMjgzYy00LjY3IDAtOC40NTcgMy44NTMtOC40NTcgOC42MDZzMy43ODYgOC42MDcgOC40NTcgOC42MDdjMy4wNDMgMCA0LjgwNi0uOTU4IDYuMzM3LTIuNTE2IDEuNTMtMS41NTcgMi4wODctMy45MTMgMi4wODctNi4yOSAwLS4zNjItLjAyMy0uNzIyLS4wNjQtMS4wNzloLTguMjU3djMuMDQzaDQuODVjLS4xOTcuNzU5LS41MzEgMS40NS0xLjA1OCAxLjk4Ni0uOTQyLjk1OC0yLjAyOCAxLjU0OC0zLjkwMSAxLjU0OC0yLjg3NiAwLTUuMjA4LTIuMzcyLTUuMjA4LTUuMjk5IDAtMi45MjYgMi4zMzItNS4yOTkgNS4yMDgtNS4yOTkgMS4zOTkgMCAyLjYxOC40MDcgMy41ODQgMS4yOTNsMi4zODEtMi4zOGMwLS4wMDItLjAwMy0uMDA0LS4wMDQtLjAwNS0xLjU4OC0xLjUyNC0zLjYyLTIuMjE1LTUuOTU1LTIuMjE1em00LjQzIDUuNjYuMDAzLjAwNnYtLjAwM3oiIGZpbGw9IiNmZmYiIHBhaW50LW9yZGVyPSJtYXJrZXJzIHN0cm9rZSBmaWxsIi8+PHBhdGggZD0ibTIxNS4xODQgMjUxLjkyOS03Ljk4IDcuOTc5IDI4LjQ3NyAyOC40NzVhNS4yMzMgNS4yMzMgMCAwIDAgLjQ0OS0yLjEyM3YtMzEuMTY1Yy0uNDY5LjY3NS0uOTM0IDEuMzQ5LTEuMzgyIDIuMDA1LS43OTIgMS4yNzUtMS42ODIgMi42NC0yLjQ2NSAzLjk5LTIuMzQ3IDQuMDY1LTMuOTgyIDguMDM4LTQuNTg1IDEzLjc5NC0uMTYyLjQ4NS0uNTI3Ljc5OC0uOTMuNzk5LS4zNjMtLjAwMS0uNjk3LS4yNTUtLjg3OS0uNjY3di0uMDEyYy0uNTkzLTUuODIyLTIuMjM3LTkuODItNC42LTEzLjkxNC0uNzgzLTEuMzUtMS42NzMtMi43MTUtMi40NjYtMy45OS0xLjEzNy0xLjY2Ni0yLjMyNy0zLjQtMy42MzctNS4xNjlsLS4wMDItLjAwM3oiIGZpbGw9IiNjM2MzYzMiLz48cGF0aCBkPSJtMjEyLjk4MyAyNDguNDk1LTM2Ljk1MiAzNi45NTN2LjgxMmE1LjIyNyA1LjIyNyAwIDAgMCA1LjIzOCA1LjIzOGgxLjAxNWwzNS42NjYtMzUuNjY2YTEzNi4yNzUgMTM2LjI3NSAwIDAgMC0yLjc2NC0zLjkgMzcuNTc1IDM3LjU3NSAwIDAgMC0uOTg5LTEuNDQgMzUuMTI3IDM1LjEyNyAwIDAgMC0uOTUtMS41MDhjLS4wODMtLjE2Mi0uMTc2LS4zMjYtLjI2NC0uNDg5eiIgZmlsbD0iI2ZkZGM0ZiIgcGFpbnQtb3JkZXI9Im1hcmtlcnMgc3Ryb2tlIGZpbGwiLz48cGF0aCBkPSJtMjExLjk5OCAyNjEuMDgzLTYuMTUyIDYuMTUxIDI0LjI2NCAyNC4yNjRoLjc4MWE1LjIyNyA1LjIyNyAwIDAgMCA1LjIzOS01LjIzOHYtMS4wNDV6IiBmaWxsPSIjZmZmIiBwYWludC1vcmRlcj0ibWFya2VycyBzdHJva2UgZmlsbCIvPjwvZz48L3N2Zz4=)}.ck-media__wrapper[data-oembed-url*="facebook.com"] .ck-media__placeholder{background:#4268b3}.ck-media__wrapper[data-oembed-url*="facebook.com"] .ck-media__placeholder .ck-media__placeholder__icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAyNCIgaGVpZ2h0PSIxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik05NjcuNDg0IDBINTYuNTE3QzI1LjMwNCAwIDAgMjUuMzA0IDAgNTYuNTE3djkxMC45NjZDMCA5OTguNjk0IDI1LjI5NyAxMDI0IDU2LjUyMiAxMDI0SDU0N1Y2MjhINDE0VjQ3M2gxMzNWMzU5LjAyOWMwLTEzMi4yNjIgODAuNzczLTIwNC4yODIgMTk4Ljc1Ni0yMDQuMjgyIDU2LjUxMyAwIDEwNS4wODYgNC4yMDggMTE5LjI0NCA2LjA4OVYyOTlsLTgxLjYxNi4wMzdjLTYzLjk5MyAwLTc2LjM4NCAzMC40OTItNzYuMzg0IDc1LjIzNlY0NzNoMTUzLjQ4N2wtMTkuOTg2IDE1NUg3MDd2Mzk2aDI2MC40ODRjMzEuMjEzIDAgNTYuNTE2LTI1LjMwMyA1Ni41MTYtNTYuNTE2VjU2LjUxNUMxMDI0IDI1LjMwMyA5OTguNjk3IDAgOTY3LjQ4NCAwIiBmaWxsPSIjRkZGRkZFIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4=)}.ck-media__wrapper[data-oembed-url*="facebook.com"] .ck-media__placeholder .ck-media__placeholder__url__text{color:#cdf}.ck-media__wrapper[data-oembed-url*="facebook.com"] .ck-media__placeholder .ck-media__placeholder__url__text:hover{color:#fff}.ck-media__wrapper[data-oembed-url*="instagram.com"] .ck-media__placeholder{background:linear-gradient(-135deg,#1400c7,#b800b1,#f50000)}.ck-media__wrapper[data-oembed-url*="instagram.com"] .ck-media__placeholder .ck-media__placeholder__icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTA0IiBoZWlnaHQ9IjUwNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+PGRlZnM+PHBhdGggaWQ9ImEiIGQ9Ik0wIC4xNTloNTAzLjg0MVY1MDMuOTRIMHoiLz48L2RlZnM+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48bWFzayBpZD0iYiIgZmlsbD0iI2ZmZiI+PHVzZSB4bGluazpocmVmPSIjYSIvPjwvbWFzaz48cGF0aCBkPSJNMjUxLjkyMS4xNTljLTY4LjQxOCAwLTc2Ljk5Ny4yOS0xMDMuODY3IDEuNTE2LTI2LjgxNCAxLjIyMy00NS4xMjcgNS40ODItNjEuMTUxIDExLjcxLTE2LjU2NiA2LjQzNy0zMC42MTUgMTUuMDUxLTQ0LjYyMSAyOS4wNTYtMTQuMDA1IDE0LjAwNi0yMi42MTkgMjguMDU1LTI5LjA1NiA0NC42MjEtNi4yMjggMTYuMDI0LTEwLjQ4NyAzNC4zMzctMTEuNzEgNjEuMTUxQy4yOSAxNzUuMDgzIDAgMTgzLjY2MiAwIDI1Mi4wOGMwIDY4LjQxNy4yOSA3Ni45OTYgMS41MTYgMTAzLjg2NiAxLjIyMyAyNi44MTQgNS40ODIgNDUuMTI3IDExLjcxIDYxLjE1MSA2LjQzNyAxNi41NjYgMTUuMDUxIDMwLjYxNSAyOS4wNTYgNDQuNjIxIDE0LjAwNiAxNC4wMDUgMjguMDU1IDIyLjYxOSA0NC42MjEgMjkuMDU3IDE2LjAyNCA2LjIyNyAzNC4zMzcgMTAuNDg2IDYxLjE1MSAxMS43MDkgMjYuODcgMS4yMjYgMzUuNDQ5IDEuNTE2IDEwMy44NjcgMS41MTYgNjguNDE3IDAgNzYuOTk2LS4yOSAxMDMuODY2LTEuNTE2IDI2LjgxNC0xLjIyMyA0NS4xMjctNS40ODIgNjEuMTUxLTExLjcwOSAxNi41NjYtNi40MzggMzAuNjE1LTE1LjA1MiA0NC42MjEtMjkuMDU3IDE0LjAwNS0xNC4wMDYgMjIuNjE5LTI4LjA1NSAyOS4wNTctNDQuNjIxIDYuMjI3LTE2LjAyNCAxMC40ODYtMzQuMzM3IDExLjcwOS02MS4xNTEgMS4yMjYtMjYuODcgMS41MTYtMzUuNDQ5IDEuNTE2LTEwMy44NjYgMC02OC40MTgtLjI5LTc2Ljk5Ny0xLjUxNi0xMDMuODY3LTEuMjIzLTI2LjgxNC01LjQ4Mi00NS4xMjctMTEuNzA5LTYxLjE1MS02LjQzOC0xNi41NjYtMTUuMDUyLTMwLjYxNS0yOS4wNTctNDQuNjIxLTE0LjAwNi0xNC4wMDUtMjguMDU1LTIyLjYxOS00NC42MjEtMjkuMDU2LTE2LjAyNC02LjIyOC0zNC4zMzctMTAuNDg3LTYxLjE1MS0xMS43MUMzMjguOTE3LjQ0OSAzMjAuMzM4LjE1OSAyNTEuOTIxLjE1OVptMCA0NS4zOTFjNjcuMjY1IDAgNzUuMjMzLjI1NyAxMDEuNzk3IDEuNDY5IDI0LjU2MiAxLjEyIDM3LjkwMSA1LjIyNCA0Ni43NzggOC42NzQgMTEuNzU5IDQuNTcgMjAuMTUxIDEwLjAyOSAyOC45NjYgMTguODQ1IDguODE2IDguODE1IDE0LjI3NSAxNy4yMDcgMTguODQ1IDI4Ljk2NiAzLjQ1IDguODc3IDcuNTU0IDIyLjIxNiA4LjY3NCA0Ni43NzggMS4yMTIgMjYuNTY0IDEuNDY5IDM0LjUzMiAxLjQ2OSAxMDEuNzk4IDAgNjcuMjY1LS4yNTcgNzUuMjMzLTEuNDY5IDEwMS43OTctMS4xMiAyNC41NjItNS4yMjQgMzcuOTAxLTguNjc0IDQ2Ljc3OC00LjU3IDExLjc1OS0xMC4wMjkgMjAuMTUxLTE4Ljg0NSAyOC45NjYtOC44MTUgOC44MTYtMTcuMjA3IDE0LjI3NS0yOC45NjYgMTguODQ1LTguODc3IDMuNDUtMjIuMjE2IDcuNTU0LTQ2Ljc3OCA4LjY3NC0yNi41NiAxLjIxMi0zNC41MjcgMS40NjktMTAxLjc5NyAxLjQ2OS02Ny4yNzEgMC03NS4yMzctLjI1Ny0xMDEuNzk4LTEuNDY5LTI0LjU2Mi0xLjEyLTM3LjkwMS01LjIyNC00Ni43NzgtOC42NzQtMTEuNzU5LTQuNTctMjAuMTUxLTEwLjAyOS0yOC45NjYtMTguODQ1LTguODE1LTguODE1LTE0LjI3NS0xNy4yMDctMTguODQ1LTI4Ljk2Ni0zLjQ1LTguODc3LTcuNTU0LTIyLjIxNi04LjY3NC00Ni43NzgtMS4yMTItMjYuNTY0LTEuNDY5LTM0LjUzMi0xLjQ2OS0xMDEuNzk3IDAtNjcuMjY2LjI1Ny03NS4yMzQgMS40NjktMTAxLjc5OCAxLjEyLTI0LjU2MiA1LjIyNC0zNy45MDEgOC42NzQtNDYuNzc4IDQuNTctMTEuNzU5IDEwLjAyOS0yMC4xNTEgMTguODQ1LTI4Ljk2NiA4LjgxNS04LjgxNiAxNy4yMDctMTQuMjc1IDI4Ljk2Ni0xOC44NDUgOC44NzctMy40NSAyMi4yMTYtNy41NTQgNDYuNzc4LTguNjc0IDI2LjU2NC0xLjIxMiAzNC41MzItMS40NjkgMTAxLjc5OC0xLjQ2OVoiIGZpbGw9IiNGRkYiIG1hc2s9InVybCgjYikiLz48cGF0aCBkPSJNMjUxLjkyMSAzMzYuMDUzYy00Ni4zNzggMC04My45NzQtMzcuNTk2LTgzLjk3NC04My45NzMgMC00Ni4zNzggMzcuNTk2LTgzLjk3NCA4My45NzQtODMuOTc0IDQ2LjM3NyAwIDgzLjk3MyAzNy41OTYgODMuOTczIDgzLjk3NCAwIDQ2LjM3Ny0zNy41OTYgODMuOTczLTgzLjk3MyA4My45NzNabTAtMjEzLjMzOGMtNzEuNDQ3IDAtMTI5LjM2NSA1Ny45MTgtMTI5LjM2NSAxMjkuMzY1IDAgNzEuNDQ2IDU3LjkxOCAxMjkuMzY0IDEyOS4zNjUgMTI5LjM2NCA3MS40NDYgMCAxMjkuMzY0LTU3LjkxOCAxMjkuMzY0LTEyOS4zNjQgMC03MS40NDctNTcuOTE4LTEyOS4zNjUtMTI5LjM2NC0xMjkuMzY1Wk00MTYuNjI3IDExNy42MDRjMCAxNi42OTYtMTMuNTM1IDMwLjIzLTMwLjIzMSAzMC4yMy0xNi42OTUgMC0zMC4yMy0xMy41MzQtMzAuMjMtMzAuMjMgMC0xNi42OTYgMTMuNTM1LTMwLjIzMSAzMC4yMy0zMC4yMzEgMTYuNjk2IDAgMzAuMjMxIDEzLjUzNSAzMC4yMzEgMzAuMjMxIiBmaWxsPSIjRkZGIi8+PC9nPjwvc3ZnPg==)}.ck-media__wrapper[data-oembed-url*="instagram.com"] .ck-media__placeholder .ck-media__placeholder__url__text{color:#ffe0fe}.ck-media__wrapper[data-oembed-url*="instagram.com"] .ck-media__placeholder .ck-media__placeholder__url__text:hover{color:#fff}.ck-media__wrapper[data-oembed-url*="twitter.com"] .ck.ck-media__placeholder{background:linear-gradient(90deg,#71c6f4,#0d70a5)}.ck-media__wrapper[data-oembed-url*="twitter.com"] .ck.ck-media__placeholder .ck-media__placeholder__icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgNDAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA0MDAgNDAwIiB4bWw6c3BhY2U9InByZXNlcnZlIj48cGF0aCBkPSJNNDAwIDIwMGMwIDExMC41LTg5LjUgMjAwLTIwMCAyMDBTMCAzMTAuNSAwIDIwMCA4OS41IDAgMjAwIDBzMjAwIDg5LjUgMjAwIDIwMHpNMTYzLjQgMzA1LjVjODguNyAwIDEzNy4yLTczLjUgMTM3LjItMTM3LjIgMC0yLjEgMC00LjItLjEtNi4yIDkuNC02LjggMTcuNi0xNS4zIDI0LjEtMjUtOC42IDMuOC0xNy45IDYuNC0yNy43IDcuNiAxMC02IDE3LjYtMTUuNCAyMS4yLTI2LjctOS4zIDUuNS0xOS42IDkuNS0zMC42IDExLjctOC44LTkuNC0yMS4zLTE1LjItMzUuMi0xNS4yLTI2LjYgMC00OC4yIDIxLjYtNDguMiA0OC4yIDAgMy44LjQgNy41IDEuMyAxMS00MC4xLTItNzUuNi0yMS4yLTk5LjQtNTAuNC00LjEgNy4xLTYuNSAxNS40LTYuNSAyNC4yIDAgMTYuNyA4LjUgMzEuNSAyMS41IDQwLjEtNy45LS4yLTE1LjMtMi40LTIxLjgtNnYuNmMwIDIzLjQgMTYuNiA0Mi44IDM4LjcgNDcuMy00IDEuMS04LjMgMS43LTEyLjcgMS43LTMuMSAwLTYuMS0uMy05LjEtLjkgNi4xIDE5LjIgMjMuOSAzMy4xIDQ1IDMzLjUtMTYuNSAxMi45LTM3LjMgMjAuNi01OS45IDIwLjYtMy45IDAtNy43LS4yLTExLjUtLjcgMjEuMSAxMy44IDQ2LjUgMjEuOCA3My43IDIxLjgiIHN0eWxlPSJmaWxsOiNmZmYiLz48L3N2Zz4=)}.ck-media__wrapper[data-oembed-url*="twitter.com"] .ck.ck-media__placeholder .ck-media__placeholder__url__text{color:#b8e6ff}.ck-media__wrapper[data-oembed-url*="twitter.com"] .ck.ck-media__placeholder .ck-media__placeholder__url__text:hover{color:#fff}', "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-media-embed/theme/mediaembedediting.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-media-embed/mediaembedediting.css"],
                    names: [],
                    mappings: "AAMC,0CAGC,kBAAmB,CAFnB,YAAa,CACb,qBAcD,CAXC,sEAEC,cAAe,CAEf,iBAMD,CAJC,wGAEC,aAAc,CADd,eAED,CAWD,6kBACC,YACD,CAYF,2LACC,mBACD,CC1CA,MACC,0CAA2C,CAE3C,mDAA4D,CAC5D,2EACD,CAEA,mBACC,aA+FD,CA7FC,0CAEC,0CAA2C,CAD3C,0CA6BD,CA1BC,uEAIC,uBAA2B,CAC3B,qBAAsB,CAHtB,kDAAmD,CACnD,qCAAsC,CAFtC,qDAUD,CAJC,gFAEC,WAAY,CADZ,UAED,CAGD,4EACC,sDAAuD,CAGvD,iBAAkB,CADlB,iBAAkB,CAElB,sBAAuB,CAHvB,kBAUD,CALC,kFACC,4DAA6D,CAC7D,cAAe,CACf,yBACD,CAIF,wDAEC,gBAAiB,CADjB,eAED,CAEA,4UAIC,wvGACD,CAEA,2EACC,kBAaD,CAXC,wGACC,orBACD,CAEA,6GACC,UAKD,CAHC,mHACC,UACD,CAIF,4EACC,2DAcD,CAZC,yGACC,4jHACD,CAGA,8GACC,aAKD,CAHC,oHACC,UACD,CAIF,6EAEC,iDAaD,CAXC,0GACC,wiCACD,CAEA,+GACC,aAKD,CAHC,qHACC,UACD",
                    sourcesContent: ['/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck-media__wrapper {\n\t& .ck-media__placeholder {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\n\t\t& .ck-media__placeholder__url {\n\t\t\t/* Otherwise the URL will overflow when the content is very narrow. */\n\t\t\tmax-width: 100%;\n\n\t\t\tposition: relative;\n\n\t\t\t& .ck-media__placeholder__url__text {\n\t\t\t\toverflow: hidden;\n\t\t\t\tdisplay: block;\n\t\t\t}\n\t\t}\n\t}\n\n\t&[data-oembed-url*="twitter.com"],\n\t&[data-oembed-url*="google.com/maps"],\n\t&[data-oembed-url*="goo.gl/maps"],\n\t&[data-oembed-url*="maps.google.com"],\n\t&[data-oembed-url*="maps.app.goo.gl"],\n\t&[data-oembed-url*="facebook.com"],\n\t&[data-oembed-url*="instagram.com"] {\n\t\t& .ck-media__placeholder__icon * {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n\n/* Disable all mouse interaction as long as the editor is not read–only.\n   https://github.com/ckeditor/ckeditor5-media-embed/issues/58 */\n.ck-editor__editable:not(.ck-read-only) .ck-media__wrapper > *:not(.ck-media__placeholder) {\n\tpointer-events: none;\n}\n\n/* Disable all mouse interaction when the widget is not selected (e.g. to avoid opening links by accident).\n   https://github.com/ckeditor/ckeditor5-media-embed/issues/18 */\n.ck-editor__editable:not(.ck-read-only) .ck-widget:not(.ck-widget_selected) .ck-media__placeholder {\n\tpointer-events: none;\n}\n', '/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-media-embed-placeholder-icon-size: 3em;\n\n\t--ck-color-media-embed-placeholder-url-text: hsl(0, 0%, 46%);\n\t--ck-color-media-embed-placeholder-url-text-hover: var(--ck-color-base-text);\n}\n\n.ck-media__wrapper {\n\tmargin: 0 auto;\n\n\t& .ck-media__placeholder {\n\t\tpadding: calc( 3 * var(--ck-spacing-standard) );\n\t\tbackground: var(--ck-color-base-foreground);\n\n\t\t& .ck-media__placeholder__icon {\n\t\t\tmin-width: var(--ck-media-embed-placeholder-icon-size);\n\t\t\theight: var(--ck-media-embed-placeholder-icon-size);\n\t\t\tmargin-bottom: var(--ck-spacing-large);\n\t\t\tbackground-position: center;\n\t\t\tbackground-size: cover;\n\n\t\t\t& .ck-icon {\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 100%;\n\t\t\t}\n\t\t}\n\n\t\t& .ck-media__placeholder__url__text {\n\t\t\tcolor: var(--ck-color-media-embed-placeholder-url-text);\n\t\t\twhite-space: nowrap;\n\t\t\ttext-align: center;\n\t\t\tfont-style: italic;\n\t\t\ttext-overflow: ellipsis;\n\n\t\t\t&:hover {\n\t\t\t\tcolor: var(--ck-color-media-embed-placeholder-url-text-hover);\n\t\t\t\tcursor: pointer;\n\t\t\t\ttext-decoration: underline;\n\t\t\t}\n\t\t}\n\t}\n\n\t&[data-oembed-url*="open.spotify.com"] {\n\t\tmax-width: 300px;\n\t\tmax-height: 380px;\n\t}\n\n\t&[data-oembed-url*="google.com/maps"] .ck-media__placeholder__icon,\n\t&[data-oembed-url*="goo.gl/maps"] .ck-media__placeholder__icon,\n\t&[data-oembed-url*="maps.google.com"] .ck-media__placeholder__icon,\n\t&[data-oembed-url*="maps.app.goo.gl"] .ck-media__placeholder__icon {\n\t\tbackground-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTAuMzc4IiBoZWlnaHQ9IjI1NC4xNjciIHZpZXdCb3g9IjAgMCA2Ni4yNDYgNjcuMjQ4Ij48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTcyLjUzMSAtMjE4LjQ1NSkgc2NhbGUoLjk4MDEyKSI+PHJlY3Qgcnk9IjUuMjM4IiByeD0iNS4yMzgiIHk9IjIzMS4zOTkiIHg9IjE3Ni4wMzEiIGhlaWdodD0iNjAuMDk5IiB3aWR0aD0iNjAuMDk5IiBmaWxsPSIjMzRhNjY4IiBwYWludC1vcmRlcj0ibWFya2VycyBzdHJva2UgZmlsbCIvPjxwYXRoIGQ9Ik0yMDYuNDc3IDI2MC45bC0yOC45ODcgMjguOTg3YTUuMjE4IDUuMjE4IDAgMCAwIDMuNzggMS42MWg0OS42MjFjMS42OTQgMCAzLjE5LS43OTggNC4xNDYtMi4wMzd6IiBmaWxsPSIjNWM4OGM1Ii8+PHBhdGggZD0iTTIyNi43NDIgMjIyLjk4OGMtOS4yNjYgMC0xNi43NzcgNy4xNy0xNi43NzcgMTYuMDE0LjAwNyAyLjc2Mi42NjMgNS40NzQgMi4wOTMgNy44NzUuNDMuNzAzLjgzIDEuNDA4IDEuMTkgMi4xMDcuMzMzLjUwMi42NSAxLjAwNS45NSAxLjUwOC4zNDMuNDc3LjY3My45NTcuOTg4IDEuNDQgMS4zMSAxLjc2OSAyLjUgMy41MDIgMy42MzcgNS4xNjguNzkzIDEuMjc1IDEuNjgzIDIuNjQgMi40NjYgMy45OSAyLjM2MyA0LjA5NCA0LjAwNyA4LjA5MiA0LjYgMTMuOTE0di4wMTJjLjE4Mi40MTIuNTE2LjY2Ni44NzkuNjY3LjQwMy0uMDAxLjc2OC0uMzE0LjkzLS43OTkuNjAzLTUuNzU2IDIuMjM4LTkuNzI5IDQuNTg1LTEzLjc5NC43ODItMS4zNSAxLjY3My0yLjcxNSAyLjQ2NS0zLjk5IDEuMTM3LTEuNjY2IDIuMzI4LTMuNCAzLjYzOC01LjE2OS4zMTUtLjQ4Mi42NDUtLjk2Mi45ODgtMS40MzkuMy0uNTAzLjYxNy0xLjAwNi45NS0xLjUwOC4zNTktLjcuNzYtMS40MDQgMS4xOS0yLjEwNyAxLjQyNi0yLjQwMiAyLTUuMTE0IDIuMDA0LTcuODc1IDAtOC44NDQtNy41MTEtMTYuMDE0LTE2Ljc3Ni0xNi4wMTR6IiBmaWxsPSIjZGQ0YjNlIiBwYWludC1vcmRlcj0ibWFya2VycyBzdHJva2UgZmlsbCIvPjxlbGxpcHNlIHJ5PSI1LjU2NCIgcng9IjUuODI4IiBjeT0iMjM5LjAwMiIgY3g9IjIyNi43NDIiIGZpbGw9IiM4MDJkMjciIHBhaW50LW9yZGVyPSJtYXJrZXJzIHN0cm9rZSBmaWxsIi8+PHBhdGggZD0iTTE5MC4zMDEgMjM3LjI4M2MtNC42NyAwLTguNDU3IDMuODUzLTguNDU3IDguNjA2czMuNzg2IDguNjA3IDguNDU3IDguNjA3YzMuMDQzIDAgNC44MDYtLjk1OCA2LjMzNy0yLjUxNiAxLjUzLTEuNTU3IDIuMDg3LTMuOTEzIDIuMDg3LTYuMjkgMC0uMzYyLS4wMjMtLjcyMi0uMDY0LTEuMDc5aC04LjI1N3YzLjA0M2g0Ljg1Yy0uMTk3Ljc1OS0uNTMxIDEuNDUtMS4wNTggMS45ODYtLjk0Mi45NTgtMi4wMjggMS41NDgtMy45MDEgMS41NDgtMi44NzYgMC01LjIwOC0yLjM3Mi01LjIwOC01LjI5OSAwLTIuOTI2IDIuMzMyLTUuMjk5IDUuMjA4LTUuMjk5IDEuMzk5IDAgMi42MTguNDA3IDMuNTg0IDEuMjkzbDIuMzgxLTIuMzhjMC0uMDAyLS4wMDMtLjAwNC0uMDA0LS4wMDUtMS41ODgtMS41MjQtMy42Mi0yLjIxNS01Ljk1NS0yLjIxNXptNC40MyA1LjY2bC4wMDMuMDA2di0uMDAzeiIgZmlsbD0iI2ZmZiIgcGFpbnQtb3JkZXI9Im1hcmtlcnMgc3Ryb2tlIGZpbGwiLz48cGF0aCBkPSJNMjE1LjE4NCAyNTEuOTI5bC03Ljk4IDcuOTc5IDI4LjQ3NyAyOC40NzVjLjI4Ny0uNjQ5LjQ0OS0xLjM2Ni40NDktMi4xMjN2LTMxLjE2NWMtLjQ2OS42NzUtLjkzNCAxLjM0OS0xLjM4MiAyLjAwNS0uNzkyIDEuMjc1LTEuNjgyIDIuNjQtMi40NjUgMy45OS0yLjM0NyA0LjA2NS0zLjk4MiA4LjAzOC00LjU4NSAxMy43OTQtLjE2Mi40ODUtLjUyNy43OTgtLjkzLjc5OS0uMzYzLS4wMDEtLjY5Ny0uMjU1LS44NzktLjY2N3YtLjAxMmMtLjU5My01LjgyMi0yLjIzNy05LjgyLTQuNi0xMy45MTQtLjc4My0xLjM1LTEuNjczLTIuNzE1LTIuNDY2LTMuOTktMS4xMzctMS42NjYtMi4zMjctMy40LTMuNjM3LTUuMTY5bC0uMDAyLS4wMDN6IiBmaWxsPSIjYzNjM2MzIi8+PHBhdGggZD0iTTIxMi45ODMgMjQ4LjQ5NWwtMzYuOTUyIDM2Ljk1M3YuODEyYTUuMjI3IDUuMjI3IDAgMCAwIDUuMjM4IDUuMjM4aDEuMDE1bDM1LjY2Ni0zNS42NjZhMTM2LjI3NSAxMzYuMjc1IDAgMCAwLTIuNzY0LTMuOSAzNy41NzUgMzcuNTc1IDAgMCAwLS45ODktMS40NGMtLjI5OS0uNTAzLS42MTYtMS4wMDYtLjk1LTEuNTA4LS4wODMtLjE2Mi0uMTc2LS4zMjYtLjI2NC0uNDg5eiIgZmlsbD0iI2ZkZGM0ZiIgcGFpbnQtb3JkZXI9Im1hcmtlcnMgc3Ryb2tlIGZpbGwiLz48cGF0aCBkPSJNMjExLjk5OCAyNjEuMDgzbC02LjE1MiA2LjE1MSAyNC4yNjQgMjQuMjY0aC43ODFhNS4yMjcgNS4yMjcgMCAwIDAgNS4yMzktNS4yMzh2LTEuMDQ1eiIgZmlsbD0iI2ZmZiIgcGFpbnQtb3JkZXI9Im1hcmtlcnMgc3Ryb2tlIGZpbGwiLz48L2c+PC9zdmc+);\n\t}\n\n\t&[data-oembed-url*="facebook.com"] .ck-media__placeholder {\n\t\tbackground: hsl(220, 46%, 48%);\n\n\t\t& .ck-media__placeholder__icon {\n\t\t\tbackground-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxMDI0cHgiIGhlaWdodD0iMTAyNHB4IiB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPiAgICAgICAgPHRpdGxlPkZpbGwgMTwvdGl0bGU+ICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPiAgICA8ZGVmcz48L2RlZnM+ICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImZMb2dvX1doaXRlIiBmaWxsPSIjRkZGRkZFIj4gICAgICAgICAgICA8cGF0aCBkPSJNOTY3LjQ4NCwwIEw1Ni41MTcsMCBDMjUuMzA0LDAgMCwyNS4zMDQgMCw1Ni41MTcgTDAsOTY3LjQ4MyBDMCw5OTguNjk0IDI1LjI5NywxMDI0IDU2LjUyMiwxMDI0IEw1NDcsMTAyNCBMNTQ3LDYyOCBMNDE0LDYyOCBMNDE0LDQ3MyBMNTQ3LDQ3MyBMNTQ3LDM1OS4wMjkgQzU0NywyMjYuNzY3IDYyNy43NzMsMTU0Ljc0NyA3NDUuNzU2LDE1NC43NDcgQzgwMi4yNjksMTU0Ljc0NyA4NTAuODQyLDE1OC45NTUgODY1LDE2MC44MzYgTDg2NSwyOTkgTDc4My4zODQsMjk5LjAzNyBDNzE5LjM5MSwyOTkuMDM3IDcwNywzMjkuNTI5IDcwNywzNzQuMjczIEw3MDcsNDczIEw4NjAuNDg3LDQ3MyBMODQwLjUwMSw2MjggTDcwNyw2MjggTDcwNywxMDI0IEw5NjcuNDg0LDEwMjQgQzk5OC42OTcsMTAyNCAxMDI0LDk5OC42OTcgMTAyNCw5NjcuNDg0IEwxMDI0LDU2LjUxNSBDMTAyNCwyNS4zMDMgOTk4LjY5NywwIDk2Ny40ODQsMCIgaWQ9IkZpbGwtMSI+PC9wYXRoPiAgICAgICAgPC9nPiAgICA8L2c+PC9zdmc+);\n\t\t}\n\n\t\t& .ck-media__placeholder__url__text {\n\t\t\tcolor: hsl(220, 100%, 90%);\n\n\t\t\t&:hover {\n\t\t\t\tcolor: hsl(0, 0%, 100%);\n\t\t\t}\n\t\t}\n\t}\n\n\t&[data-oembed-url*="instagram.com"] .ck-media__placeholder {\n\t\tbackground: linear-gradient(-135deg,hsl(246, 100%, 39%),hsl(302, 100%, 36%),hsl(0, 100%, 48%));\n\n\t\t& .ck-media__placeholder__icon {\n\t\t\tbackground-image: url(data:image/svg+xml;base64, );\n\t\t}\n\n\t\t/* stylelint-disable-next-line no-descending-specificity */\n\t\t& .ck-media__placeholder__url__text {\n\t\t\tcolor: hsl(302, 100%, 94%);\n\n\t\t\t&:hover {\n\t\t\t\tcolor: hsl(0, 0%, 100%);\n\t\t\t}\n\t\t}\n\t}\n\n\t&[data-oembed-url*="twitter.com"] .ck.ck-media__placeholder {\n\t\t/* Use gradient to contrast with focused widget (ckeditor/ckeditor5-media-embed#22). */\n\t\tbackground: linear-gradient( to right, hsl(201, 85%, 70%), hsl(201, 85%, 35%) );\n\n\t\t& .ck-media__placeholder__icon {\n\t\t\tbackground-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IldoaXRlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDQwMCA0MDAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDQwMCA0MDA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGUgdHlwZT0idGV4dC9jc3MiPi5zdDB7ZmlsbDojRkZGRkZGO308L3N0eWxlPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik00MDAsMjAwYzAsMTEwLjUtODkuNSwyMDAtMjAwLDIwMFMwLDMxMC41LDAsMjAwUzg5LjUsMCwyMDAsMFM0MDAsODkuNSw0MDAsMjAweiBNMTYzLjQsMzA1LjVjODguNywwLDEzNy4yLTczLjUsMTM3LjItMTM3LjJjMC0yLjEsMC00LjItMC4xLTYuMmM5LjQtNi44LDE3LjYtMTUuMywyNC4xLTI1Yy04LjYsMy44LTE3LjksNi40LTI3LjcsNy42YzEwLTYsMTcuNi0xNS40LDIxLjItMjYuN2MtOS4zLDUuNS0xOS42LDkuNS0zMC42LDExLjdjLTguOC05LjQtMjEuMy0xNS4yLTM1LjItMTUuMmMtMjYuNiwwLTQ4LjIsMjEuNi00OC4yLDQ4LjJjMCwzLjgsMC40LDcuNSwxLjMsMTFjLTQwLjEtMi03NS42LTIxLjItOTkuNC01MC40Yy00LjEsNy4xLTYuNSwxNS40LTYuNSwyNC4yYzAsMTYuNyw4LjUsMzEuNSwyMS41LDQwLjFjLTcuOS0wLjItMTUuMy0yLjQtMjEuOC02YzAsMC4yLDAsMC40LDAsMC42YzAsMjMuNCwxNi42LDQyLjgsMzguNyw0Ny4zYy00LDEuMS04LjMsMS43LTEyLjcsMS43Yy0zLjEsMC02LjEtMC4zLTkuMS0wLjljNi4xLDE5LjIsMjMuOSwzMy4xLDQ1LDMzLjVjLTE2LjUsMTIuOS0zNy4zLDIwLjYtNTkuOSwyMC42Yy0zLjksMC03LjctMC4yLTExLjUtMC43QzExMC44LDI5Ny41LDEzNi4yLDMwNS41LDE2My40LDMwNS41Ii8+PC9zdmc+);\n\t\t}\n\n\t\t& .ck-media__placeholder__url__text {\n\t\t\tcolor: hsl(201, 100%, 86%);\n\n\t\t\t&:hover {\n\t\t\t\tcolor: hsl(0, 0%, 100%);\n\t\t\t}\n\t\t}\n\t}\n}\n'],
                    sourceRoot: ""
                }]);
                const a = s
            },
            9292: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ".ck.ck-media-form{align-items:flex-start;display:flex;flex-direction:row;flex-wrap:nowrap}.ck.ck-media-form .ck-labeled-field-view{display:inline-block}.ck.ck-media-form .ck-label{display:none}@media screen and (max-width:600px){.ck.ck-media-form{flex-wrap:wrap}.ck.ck-media-form .ck-labeled-field-view{flex-basis:100%}.ck.ck-media-form .ck-button{flex-basis:50%}}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-media-embed/theme/mediaform.css", "webpack://./../ckeditor5-ui/theme/mixins/_rwd.css"],
                    names: [],
                    mappings: "AAOA,kBAEC,sBAAuB,CADvB,YAAa,CAEb,kBAAmB,CACnB,gBAqBD,CAnBC,yCACC,oBACD,CAEA,4BACC,YACD,CCbA,oCDCD,kBAeE,cAUF,CARE,yCACC,eACD,CAEA,6BACC,cACD,CCtBD",
                    sourcesContent: ['/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\n\n.ck.ck-media-form {\n\tdisplay: flex;\n\talign-items: flex-start;\n\tflex-direction: row;\n\tflex-wrap: nowrap;\n\n\t& .ck-labeled-field-view {\n\t\tdisplay: inline-block;\n\t}\n\n\t& .ck-label {\n\t\tdisplay: none;\n\t}\n\n\t@mixin ck-media-phone {\n\t\tflex-wrap: wrap;\n\n\t\t& .ck-labeled-field-view {\n\t\t\tflex-basis: 100%;\n\t\t}\n\n\t\t& .ck-button {\n\t\t\tflex-basis: 50%;\n\t\t}\n\t}\n}\n', "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@define-mixin ck-media-phone {\n\t@media screen and (max-width: 600px) {\n\t\t@mixin-content;\n\t}\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            7368: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ".ck.ck-input-color{display:flex;flex-direction:row-reverse;width:100%}.ck.ck-input-color>input.ck.ck-input-text{flex-grow:1;min-width:auto}.ck.ck-input-color>div.ck.ck-dropdown{min-width:auto}.ck.ck-input-color>div.ck.ck-dropdown>.ck-input-color__button .ck-dropdown__arrow{display:none}.ck.ck-input-color .ck.ck-input-color__button{display:flex}.ck.ck-input-color .ck.ck-input-color__button .ck.ck-input-color__button__preview{overflow:hidden;position:relative}.ck.ck-input-color .ck.ck-input-color__button .ck.ck-input-color__button__preview>.ck.ck-input-color__button__preview__no-color-indicator{display:block;position:absolute}[dir=ltr] .ck.ck-input-color>.ck.ck-input-text{border-bottom-right-radius:0;border-top-right-radius:0}[dir=rtl] .ck.ck-input-color>.ck.ck-input-text{border-bottom-left-radius:0;border-top-left-radius:0}.ck.ck-input-color>.ck.ck-input-text:focus{z-index:0}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button{padding:0}[dir=ltr] .ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button{border-bottom-left-radius:0;border-top-left-radius:0}[dir=ltr] .ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button:not(:focus){border-left:1px solid transparent}[dir=rtl] .ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button{border-bottom-right-radius:0;border-top-right-radius:0}[dir=rtl] .ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button:not(:focus){border-right:1px solid transparent}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button.ck-disabled{background:var(--ck-color-input-disabled-background)}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button>.ck.ck-input-color__button__preview{border-radius:0}.ck-rounded-corners .ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button>.ck.ck-input-color__button__preview,.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button>.ck.ck-input-color__button__preview.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button>.ck.ck-input-color__button__preview{border:1px solid var(--ck-color-input-border);height:20px;width:20px}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button>.ck.ck-input-color__button__preview>.ck.ck-input-color__button__preview__no-color-indicator{background:red;border-radius:2px;height:150%;left:50%;top:-30%;transform:rotate(45deg);transform-origin:50%;width:8%}.ck.ck-input-color .ck.ck-input-color__remove-color{border-bottom-left-radius:0;border-bottom-right-radius:0;padding:calc(var(--ck-spacing-standard)/2) var(--ck-spacing-standard);width:100%}.ck.ck-input-color .ck.ck-input-color__remove-color:not(:focus){border-bottom:1px solid var(--ck-color-input-border)}[dir=ltr] .ck.ck-input-color .ck.ck-input-color__remove-color{border-top-right-radius:0}[dir=rtl] .ck.ck-input-color .ck.ck-input-color__remove-color{border-top-left-radius:0}.ck.ck-input-color .ck.ck-input-color__remove-color .ck.ck-icon{margin-right:var(--ck-spacing-standard)}[dir=rtl] .ck.ck-input-color .ck.ck-input-color__remove-color .ck.ck-icon{margin-left:var(--ck-spacing-standard);margin-right:0}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-table/theme/colorinput.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-table/colorinput.css", "webpack://./../ckeditor5-theme-lark/theme/mixins/_rounded.css"],
                    names: [],
                    mappings: "AAKA,mBAEC,YAAa,CACb,0BAA2B,CAF3B,UAgCD,CA5BC,0CAEC,WAAY,CADZ,cAED,CAEA,sCACC,cAMD,CAHC,kFACC,YACD,CAGD,8CAEC,YAWD,CATC,kFAEC,eAAgB,CADhB,iBAOD,CAJC,0IAEC,aAAc,CADd,iBAED,CC1BF,+CAGE,4BAA6B,CAD7B,yBAcF,CAhBA,+CAQE,2BAA4B,CAD5B,wBASF,CAHC,2CACC,SACD,CAIA,wEACC,SA0CD,CA3CA,kFAKE,2BAA4B,CAD5B,wBAuCF,CApCE,8FACC,iCACD,CATF,kFAcE,4BAA6B,CAD7B,yBA8BF,CA3BE,8FACC,kCACD,CAGD,oFACC,oDACD,CAEA,4GC1CF,eD2DE,CAjBA,+PCtCD,qCDuDC,CAjBA,4GAKC,6CAA8C,CAD9C,WAAY,CADZ,UAcD,CAVC,oKAKC,cAA6B,CAC7B,iBAAkB,CAHlB,WAAY,CADZ,QAAS,CADT,QAAS,CAMT,uBAAwB,CACxB,oBAAqB,CAJrB,QAKD,CAKH,oDAIC,2BAA4B,CAC5B,4BAA6B,CAH7B,qEAAwE,CADxE,UA0BD,CApBC,gEACC,oDACD,CATD,8DAYE,yBAeF,CA3BA,8DAgBE,wBAWF,CARC,gEACC,uCAMD,CAPA,0EAKE,sCAAuC,CADvC,cAGF",
                    sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-input-color {\n\twidth: 100%;\n\tdisplay: flex;\n\tflex-direction: row-reverse;\n\n\t& > input.ck.ck-input-text {\n\t\tmin-width: auto;\n\t\tflex-grow: 1;\n\t}\n\n\t& > div.ck.ck-dropdown {\n\t\tmin-width: auto;\n\n\t\t/* This dropdown has no arrow but a color preview instead. */\n\t\t& > .ck-input-color__button .ck-dropdown__arrow {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n\t& .ck.ck-input-color__button {\n\t\t/* Resolving issue with misaligned buttons on Safari (see #10589) */\n\t\tdisplay: flex;\n\n\t\t& .ck.ck-input-color__button__preview {\n\t\t\tposition: relative;\n\t\t\toverflow: hidden;\n\n\t\t\t& > .ck.ck-input-color__button__preview__no-color-indicator {\n\t\t\t\tposition: absolute;\n\t\t\t\tdisplay: block;\n\t\t\t}\n\t\t}\n\t}\n}\n", '/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n@import "../mixins/_rounded.css";\n\n.ck.ck-input-color {\n\t& > .ck.ck-input-text {\n\t\t@mixin ck-dir ltr {\n\t\t\tborder-top-right-radius: 0;\n\t\t\tborder-bottom-right-radius: 0;\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\tborder-top-left-radius: 0;\n\t\t\tborder-bottom-left-radius: 0;\n\t\t}\n\n\t\t/* Make sure the focused input is always on top of the dropdown button so its\n\t\t   outline and border are never cropped (also when the input is read-only). */\n\t\t&:focus {\n\t\t\tz-index: 0;\n\t\t}\n\t}\n\n\t& > .ck.ck-dropdown {\n\t\t& > .ck.ck-button.ck-input-color__button {\n\t\t\tpadding: 0;\n\n\t\t\t@mixin ck-dir ltr {\n\t\t\t\tborder-top-left-radius: 0;\n\t\t\t\tborder-bottom-left-radius: 0;\n\n\t\t\t\t&:not(:focus) {\n\t\t\t\t\tborder-left: 1px solid transparent;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t@mixin ck-dir rtl {\n\t\t\t\tborder-top-right-radius: 0;\n\t\t\t\tborder-bottom-right-radius: 0;\n\n\t\t\t\t&:not(:focus) {\n\t\t\t\t\tborder-right: 1px solid transparent;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&.ck-disabled {\n\t\t\t\tbackground: var(--ck-color-input-disabled-background);\n\t\t\t}\n\n\t\t\t& > .ck.ck-input-color__button__preview {\n\t\t\t\t@mixin ck-rounded-corners;\n\n\t\t\t\twidth: 20px;\n\t\t\t\theight: 20px;\n\t\t\t\tborder: 1px solid var(--ck-color-input-border);\n\n\t\t\t\t& > .ck.ck-input-color__button__preview__no-color-indicator {\n\t\t\t\t\ttop: -30%;\n\t\t\t\t\tleft: 50%;\n\t\t\t\t\theight: 150%;\n\t\t\t\t\twidth: 8%;\n\t\t\t\t\tbackground: hsl(0, 100%, 50%);\n\t\t\t\t\tborder-radius: 2px;\n\t\t\t\t\ttransform: rotate(45deg);\n\t\t\t\t\ttransform-origin: 50%;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t& .ck.ck-input-color__remove-color {\n\t\twidth: 100%;\n\t\tpadding: calc(var(--ck-spacing-standard) / 2) var(--ck-spacing-standard);\n\n\t\tborder-bottom-left-radius: 0;\n\t\tborder-bottom-right-radius: 0;\n\n\t\t&:not(:focus) {\n\t\t\tborder-bottom: 1px solid var(--ck-color-input-border);\n\t\t}\n\n\t\t@mixin ck-dir ltr {\n\t\t\tborder-top-right-radius: 0;\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\tborder-top-left-radius: 0;\n\t\t}\n\n\t\t& .ck.ck-icon {\n\t\t\tmargin-right: var(--ck-spacing-standard);\n\n\t\t\t@mixin ck-dir rtl {\n\t\t\t\tmargin-right: 0;\n\t\t\t\tmargin-left: var(--ck-spacing-standard);\n\t\t\t}\n\t\t}\n\t}\n}\n', "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t@nest .ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            4070: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ".ck.ck-form{padding:0 0 var(--ck-spacing-large)}.ck.ck-form:focus{outline:none}.ck.ck-form .ck.ck-input-text{min-width:100%;width:0}.ck.ck-form .ck.ck-dropdown{min-width:100%}.ck.ck-form .ck.ck-dropdown .ck-dropdown__button:not(:focus){border:1px solid var(--ck-color-base-border)}.ck.ck-form .ck.ck-dropdown .ck-dropdown__button .ck-button__label{width:100%}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-theme-lark/theme/ckeditor5-table/form.css"],
                    names: [],
                    mappings: "AAKA,YACC,mCAyBD,CAvBC,kBAEC,YACD,CAEA,8BACC,cAAe,CACf,OACD,CAEA,4BACC,cAWD,CARE,6DACC,4CACD,CAEA,mEACC,UACD",
                    sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-form {\n\tpadding: 0 0 var(--ck-spacing-large);\n\n\t&:focus {\n\t\t/* See: https://github.com/ckeditor/ckeditor5/issues/4773 */\n\t\toutline: none;\n\t}\n\n\t& .ck.ck-input-text {\n\t\tmin-width: 100%;\n\t\twidth: 0;\n\t}\n\n\t& .ck.ck-dropdown {\n\t\tmin-width: 100%;\n\n\t\t& .ck-dropdown__button {\n\t\t\t&:not(:focus) {\n\t\t\t\tborder: 1px solid var(--ck-color-base-border);\n\t\t\t}\n\n\t\t\t& .ck-button__label {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\t\t}\n\t}\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            9247: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ".ck.ck-form__row{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between}.ck.ck-form__row>:not(.ck-label){flex-grow:1}.ck.ck-form__row.ck-table-form__action-row .ck-button-cancel,.ck.ck-form__row.ck-table-form__action-row .ck-button-save{justify-content:center}.ck.ck-form__row{padding:var(--ck-spacing-standard) var(--ck-spacing-large) 0}[dir=ltr] .ck.ck-form__row>:not(.ck-label)+*{margin-left:var(--ck-spacing-large)}[dir=rtl] .ck.ck-form__row>:not(.ck-label)+*{margin-right:var(--ck-spacing-large)}.ck.ck-form__row>.ck-label{min-width:100%;width:100%}.ck.ck-form__row.ck-table-form__action-row{margin-top:var(--ck-spacing-large)}.ck.ck-form__row.ck-table-form__action-row .ck-button .ck-button__label{color:var(--ck-color-text)}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-table/theme/formrow.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-table/formrow.css"],
                    names: [],
                    mappings: "AAKA,iBACC,YAAa,CACb,kBAAmB,CACnB,gBAAiB,CACjB,6BAaD,CAVC,iCACC,WACD,CAGC,wHAEC,sBACD,CCbF,iBACC,4DA2BD,CAvBE,6CAEE,mCAMF,CARA,6CAME,oCAEF,CAGD,2BAEC,cAAe,CADf,UAED,CAEA,2CACC,kCAKD,CAHC,wEACC,0BACD",
                    sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-form__row {\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: nowrap;\n\tjustify-content: space-between;\n\n\t/* Ignore labels that work as fieldset legends */\n\t& > *:not(.ck-label) {\n\t\tflex-grow: 1;\n\t}\n\n\t&.ck-table-form__action-row {\n\t\t& .ck-button-save,\n\t\t& .ck-button-cancel {\n\t\t\tjustify-content: center;\n\t\t}\n\t}\n}\n", '/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n.ck.ck-form__row {\n\tpadding: var(--ck-spacing-standard) var(--ck-spacing-large) 0;\n\n\t/* Ignore labels that work as fieldset legends */\n\t& > *:not(.ck-label) {\n\t\t& + * {\n\t\t\t@mixin ck-dir ltr {\n\t\t\t\tmargin-left: var(--ck-spacing-large);\n\t\t\t}\n\n\t\t\t@mixin ck-dir rtl {\n\t\t\t\tmargin-right: var(--ck-spacing-large);\n\t\t\t}\n\t\t}\n\t}\n\n\t& > .ck-label {\n\t\twidth: 100%;\n\t\tmin-width: 100%;\n\t}\n\n\t&.ck-table-form__action-row {\n\t\tmargin-top: var(--ck-spacing-large);\n\n\t\t& .ck-button .ck-button__label {\n\t\t\tcolor: var(--ck-color-text);\n\t\t}\n\t}\n}\n'],
                    sourceRoot: ""
                }]);
                const a = s
            },
            1613: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ".ck .ck-insert-table-dropdown__grid{display:flex;flex-direction:row;flex-wrap:wrap}:root{--ck-insert-table-dropdown-padding:10px;--ck-insert-table-dropdown-box-height:11px;--ck-insert-table-dropdown-box-width:12px;--ck-insert-table-dropdown-box-margin:1px}.ck .ck-insert-table-dropdown__grid{padding:var(--ck-insert-table-dropdown-padding) var(--ck-insert-table-dropdown-padding) 0;width:calc(var(--ck-insert-table-dropdown-box-width)*10 + var(--ck-insert-table-dropdown-box-margin)*20 + var(--ck-insert-table-dropdown-padding)*2)}.ck .ck-insert-table-dropdown__label,.ck[dir=rtl] .ck-insert-table-dropdown__label{text-align:center}.ck .ck-insert-table-dropdown-grid-box{border:1px solid var(--ck-color-base-border);border-radius:1px;margin:var(--ck-insert-table-dropdown-box-margin);min-height:var(--ck-insert-table-dropdown-box-height);min-width:var(--ck-insert-table-dropdown-box-width);outline:none;transition:none}.ck .ck-insert-table-dropdown-grid-box:focus{box-shadow:none}.ck .ck-insert-table-dropdown-grid-box.ck-on{background:var(--ck-color-focus-outer-shadow);border-color:var(--ck-color-focus-border)}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-table/theme/inserttable.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-table/inserttable.css"],
                    names: [],
                    mappings: "AAKA,oCACC,YAAa,CACb,kBAAmB,CACnB,cACD,CCJA,MACC,uCAAwC,CACxC,0CAA2C,CAC3C,yCAA0C,CAC1C,yCACD,CAEA,oCAGC,yFAA0F,CAD1F,oJAED,CAEA,mFAEC,iBACD,CAEA,uCAIC,4CAA6C,CAC7C,iBAAkB,CAFlB,iDAAkD,CADlD,qDAAsD,CADtD,mDAAoD,CAKpD,YAAa,CACb,eAUD,CARC,6CACC,eACD,CAEA,6CAEC,6CAA8C,CAD9C,yCAED",
                    sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck .ck-insert-table-dropdown__grid {\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: wrap;\n}\n", "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-insert-table-dropdown-padding: 10px;\n\t--ck-insert-table-dropdown-box-height: 11px;\n\t--ck-insert-table-dropdown-box-width: 12px;\n\t--ck-insert-table-dropdown-box-margin: 1px;\n}\n\n.ck .ck-insert-table-dropdown__grid {\n\t/* The width of a container should match 10 items in a row so there will be a 10x10 grid. */\n\twidth: calc(var(--ck-insert-table-dropdown-box-width) * 10 + var(--ck-insert-table-dropdown-box-margin) * 20 + var(--ck-insert-table-dropdown-padding) * 2);\n\tpadding: var(--ck-insert-table-dropdown-padding) var(--ck-insert-table-dropdown-padding) 0;\n}\n\n.ck .ck-insert-table-dropdown__label,\n.ck[dir=rtl] .ck-insert-table-dropdown__label {\n\ttext-align: center;\n}\n\n.ck .ck-insert-table-dropdown-grid-box {\n\tmin-width: var(--ck-insert-table-dropdown-box-width);\n\tmin-height: var(--ck-insert-table-dropdown-box-height);\n\tmargin: var(--ck-insert-table-dropdown-box-margin);\n\tborder: 1px solid var(--ck-color-base-border);\n\tborder-radius: 1px;\n\toutline: none;\n\ttransition: none;\n\n\t&:focus {\n\t\tbox-shadow: none;\n\t}\n\n\t&.ck-on {\n\t\tborder-color: var(--ck-color-focus-border);\n\t\tbackground: var(--ck-color-focus-outer-shadow);\n\t}\n}\n\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            6306: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ".ck-content .table{display:table;margin:.9em auto}.ck-content .table table{border:1px double #b3b3b3;border-collapse:collapse;border-spacing:0;height:100%;width:100%}.ck-content .table table td,.ck-content .table table th{border:1px solid #bfbfbf;min-width:2em;padding:.4em}.ck-content .table table th{background:rgba(0,0,0,.05);font-weight:700}.ck-content[dir=rtl] .table th{text-align:right}.ck-content[dir=ltr] .table th{text-align:left}.ck-editor__editable .ck-table-bogus-paragraph{display:inline-block;width:100%}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-table/theme/table.css"],
                    names: [],
                    mappings: "AAKA,mBAKC,aAAc,CADd,gBAiCD,CA9BC,yBAYC,yBAAkC,CAVlC,wBAAyB,CACzB,gBAAiB,CAKjB,WAAY,CADZ,UAsBD,CAfC,wDAQC,wBAAiC,CANjC,aAAc,CACd,YAMD,CAEA,4BAEC,0BAA+B,CAD/B,eAED,CAMF,+BACC,gBACD,CAEA,+BACC,eACD,CAEA,+CAKC,oBAAqB,CAMrB,UACD",
                    sourcesContent: ['/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck-content .table {\n\t/* Give the table widget some air and center it horizontally */\n\t/* The first value should be equal to --ck-spacing-large variable if used in the editor context\n\tto avoid the content jumping (See https://github.com/ckeditor/ckeditor5/issues/9825). */\n\tmargin: 0.9em auto;\n\tdisplay: table;\n\n\t& table {\n\t\t/* The table cells should have slight borders */\n\t\tborder-collapse: collapse;\n\t\tborder-spacing: 0;\n\n\t\t/* Table width and height are set on the parent <figure>. Make sure the table inside stretches\n\t\tto the full dimensions of the container (https://github.com/ckeditor/ckeditor5/issues/6186). */\n\t\twidth: 100%;\n\t\theight: 100%;\n\n\t\t/* The outer border of the table should be slightly darker than the inner lines.\n\t\tAlso see https://github.com/ckeditor/ckeditor5-table/issues/50. */\n\t\tborder: 1px double hsl(0, 0%, 70%);\n\n\t\t& td,\n\t\t& th {\n\t\t\tmin-width: 2em;\n\t\t\tpadding: .4em;\n\n\t\t\t/* The border is inherited from .ck-editor__nested-editable styles, so theoretically it\'s not necessary here.\n\t\t\tHowever, the border is a content style, so it should use .ck-content (so it works outside the editor).\n\t\t\tHence, the duplication. See https://github.com/ckeditor/ckeditor5/issues/6314 */\n\t\t\tborder: 1px solid hsl(0, 0%, 75%);\n\t\t}\n\n\t\t& th {\n\t\t\tfont-weight: bold;\n\t\t\tbackground: hsla(0, 0%, 0%, 5%);\n\t\t}\n\t}\n}\n\n/* Text alignment of the table header should match the editor settings and override the native browser styling,\nwhen content is available outside the editor. See https://github.com/ckeditor/ckeditor5/issues/6638 */\n.ck-content[dir="rtl"] .table th {\n\ttext-align: right;\n}\n\n.ck-content[dir="ltr"] .table th {\n\ttext-align: left;\n}\n\n.ck-editor__editable .ck-table-bogus-paragraph {\n\t/*\n\t * Use display:inline-block to force Chrome/Safari to limit text mutations to this element.\n\t * See https://github.com/ckeditor/ckeditor5/issues/6062.\n\t */\n\tdisplay: inline-block;\n\n\t/*\n\t * Inline HTML elements nested in the span should always be dimensioned in relation to the whole cell width.\n\t * See https://github.com/ckeditor/ckeditor5/issues/9117.\n\t */\n\twidth: 100%;\n}\n'],
                    sourceRoot: ""
                }]);
                const a = s
            },
            2128: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ":root{--ck-color-selector-caption-background:#f7f7f7;--ck-color-selector-caption-text:#333;--ck-color-selector-caption-highlighted-background:#fd0}.ck-content .table>figcaption{background-color:var(--ck-color-selector-caption-background);caption-side:top;color:var(--ck-color-selector-caption-text);display:table-caption;font-size:.75em;outline-offset:-1px;padding:.6em;text-align:center;word-break:break-word}.ck.ck-editor__editable .table>figcaption.table__caption_highlighted{animation:ck-table-caption-highlight .6s ease-out}.ck.ck-editor__editable .table>figcaption.ck-placeholder:before{overflow:hidden;padding-left:inherit;padding-right:inherit;text-overflow:ellipsis;white-space:nowrap}@keyframes ck-table-caption-highlight{0%{background-color:var(--ck-color-selector-caption-highlighted-background)}to{background-color:var(--ck-color-selector-caption-background)}}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-table/theme/tablecaption.css"],
                    names: [],
                    mappings: "AAKA,MACC,8CAAuD,CACvD,qCAAiD,CACjD,uDACD,CAGA,8BAMC,4DAA6D,CAJ7D,gBAAiB,CAGjB,2CAA4C,CAJ5C,qBAAsB,CAOtB,eAAgB,CAChB,mBAAoB,CAFpB,YAAa,CAHb,iBAAkB,CADlB,qBAOD,CAIC,qEACC,iDACD,CAEA,gEASC,eAAgB,CARhB,oBAAqB,CACrB,qBAAsB,CAQtB,sBAAuB,CAFvB,kBAGD,CAGD,sCACC,GACC,wEACD,CAEA,GACC,4DACD,CACD",
                    sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-color-selector-caption-background: hsl(0, 0%, 97%);\n\t--ck-color-selector-caption-text: hsl(0, 0%, 20%);\n\t--ck-color-selector-caption-highlighted-background: hsl(52deg 100% 50%);\n}\n\n/* Content styles */\n.ck-content .table > figcaption {\n\tdisplay: table-caption;\n\tcaption-side: top;\n\tword-break: break-word;\n\ttext-align: center;\n\tcolor: var(--ck-color-selector-caption-text);\n\tbackground-color: var(--ck-color-selector-caption-background);\n\tpadding: .6em;\n\tfont-size: .75em;\n\toutline-offset: -1px;\n}\n\n/* Editing styles */\n.ck.ck-editor__editable .table > figcaption {\n\t&.table__caption_highlighted {\n\t\tanimation: ck-table-caption-highlight .6s ease-out;\n\t}\n\n\t&.ck-placeholder::before {\n\t\tpadding-left: inherit;\n\t\tpadding-right: inherit;\n\n\t\t/*\n\t\t * Make sure the table caption placeholder doesn't overflow the placeholder area.\n\t\t * See https://github.com/ckeditor/ckeditor5/issues/9162.\n\t\t */\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n}\n\n@keyframes ck-table-caption-highlight {\n\t0% {\n\t\tbackground-color: var(--ck-color-selector-caption-highlighted-background);\n\t}\n\n\t100% {\n\t\tbackground-color: var(--ck-color-selector-caption-background);\n\t}\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            5087: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ".ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row{flex-wrap:wrap}.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row .ck.ck-toolbar:first-of-type{flex-grow:0.57}.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row .ck.ck-toolbar:last-of-type{flex-grow:0.43}.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row .ck.ck-toolbar .ck-button{flex-grow:1}.ck.ck-table-cell-properties-form{width:320px}.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__padding-row{align-self:flex-end;padding:0;width:25%}.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row .ck.ck-toolbar{background:none;margin-top:var(--ck-spacing-standard)}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-table/theme/tablecellproperties.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-table/tablecellproperties.css"],
                    names: [],
                    mappings: "AAOE,6FACC,cAiBD,CAdE,0HAEC,cACD,CAEA,yHAEC,cACD,CAEA,uHACC,WACD,CClBJ,kCACC,WAkBD,CAfE,2FACC,mBAAoB,CACpB,SAAU,CACV,SACD,CAGC,4GACC,eAAgB,CAGhB,qCACD",
                    sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-table-cell-properties-form {\n\t& .ck-form__row {\n\t\t&.ck-table-cell-properties-form__alignment-row {\n\t\t\tflex-wrap: wrap;\n\n\t\t\t& .ck.ck-toolbar {\n\t\t\t\t&:first-of-type {\n\t\t\t\t\t/* 4 buttons out of 7 (h-alignment + v-alignment) = 0.57 */\n\t\t\t\t\tflex-grow: 0.57;\n\t\t\t\t}\n\n\t\t\t\t&:last-of-type {\n\t\t\t\t\t/* 3 buttons out of 7 (h-alignment + v-alignment) = 0.43 */\n\t\t\t\t\tflex-grow: 0.43;\n\t\t\t\t}\n\n\t\t\t\t& .ck-button {\n\t\t\t\t\tflex-grow: 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n", "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-table-cell-properties-form {\n\twidth: 320px;\n\n\t& .ck-form__row {\n\t\t&.ck-table-cell-properties-form__padding-row {\n\t\t\talign-self: flex-end;\n\t\t\tpadding: 0;\n\t\t\twidth: 25%;\n\t\t}\n\n\t\t&.ck-table-cell-properties-form__alignment-row {\n\t\t\t& .ck.ck-toolbar {\n\t\t\t\tbackground: none;\n\n\t\t\t\t/* Compensate for missing input label that would push the margin (toolbar has no inputs). */\n\t\t\t\tmargin-top: var(--ck-spacing-standard);\n\t\t\t}\n\t\t}\n\t}\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            4101: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ":root{--ck-color-selector-column-resizer-hover:var(--ck-color-base-active);--ck-table-column-resizer-width:7px;--ck-table-column-resizer-position-offset:calc(var(--ck-table-column-resizer-width)*-0.5 - 0.5px)}.ck-content .table .ck-table-resized{table-layout:fixed}.ck-content .table table{overflow:hidden}.ck-content .table td,.ck-content .table th{overflow-wrap:break-word;position:relative}.ck.ck-editor__editable .table .ck-table-column-resizer{bottom:-999999px;cursor:col-resize;position:absolute;right:var(--ck-table-column-resizer-position-offset);top:-999999px;user-select:none;width:var(--ck-table-column-resizer-width);z-index:var(--ck-z-default)}.ck.ck-editor__editable .table[draggable] .ck-table-column-resizer,.ck.ck-editor__editable.ck-column-resize_disabled .table .ck-table-column-resizer{display:none}.ck.ck-editor__editable .table .ck-table-column-resizer:hover,.ck.ck-editor__editable .table .ck-table-column-resizer__active{background-color:var(--ck-color-selector-column-resizer-hover);opacity:.25}.ck.ck-editor__editable[dir=rtl] .table .ck-table-column-resizer{left:var(--ck-table-column-resizer-position-offset);right:unset}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-table/theme/tablecolumnresize.css"],
                    names: [],
                    mappings: "AAKA,MACC,oEAAqE,CACrE,mCAAoC,CAIpC,iGACD,CAEA,qCACC,kBACD,CAEA,yBACC,eACD,CAEA,4CAIC,wBAAyB,CACzB,iBACD,CAEA,wDAOC,gBAAiB,CAGjB,iBAAkB,CATlB,iBAAkB,CAOlB,oDAAqD,CAFrD,aAAc,CAKd,gBAAiB,CAFjB,0CAA2C,CAG3C,2BACD,CAQA,qJACC,YACD,CAEA,8HAEC,8DAA+D,CAC/D,WACD,CAEA,iEACC,mDAAoD,CACpD,WACD",
                    sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-color-selector-column-resizer-hover: var(--ck-color-base-active);\n\t--ck-table-column-resizer-width: 7px;\n\n\t/* The offset used for absolute positioning of the resizer element, so that it is placed exactly above the cell border.\n\t   The value is: minus half the width of the resizer decreased additionaly by the half the width of the border (0.5px). */\n\t--ck-table-column-resizer-position-offset: calc(var(--ck-table-column-resizer-width) * -0.5 - 0.5px);\n}\n\n.ck-content .table .ck-table-resized {\n\ttable-layout: fixed;\n}\n\n.ck-content .table table {\n\toverflow: hidden;\n}\n\n.ck-content .table td,\n.ck-content .table th {\n\t/* To prevent text overflowing beyond its cell when columns are resized by resize handler\n\t(https://github.com/ckeditor/ckeditor5/pull/14379#issuecomment-1589460978). */\n\toverflow-wrap: break-word;\n\tposition: relative;\n}\n\n.ck.ck-editor__editable .table .ck-table-column-resizer {\n\tposition: absolute;\n\t/* The resizer element resides in each cell so to occupy the entire height of the table, which is unknown from a CSS point of view,\n\t   it is extended to an extremely high height. Even for screens with a very high pixel density, the resizer will fulfill its role as\n\t   it should, i.e. for a screen of 476 ppi the total height of the resizer will take over 350 sheets of A4 format, which is totally\n\t   unrealistic height for a single table. */\n\ttop: -999999px;\n\tbottom: -999999px;\n\tright: var(--ck-table-column-resizer-position-offset);\n\twidth: var(--ck-table-column-resizer-width);\n\tcursor: col-resize;\n\tuser-select: none;\n\tz-index: var(--ck-z-default);\n}\n\n.ck.ck-editor__editable.ck-column-resize_disabled .table .ck-table-column-resizer {\n\tdisplay: none;\n}\n\n/* The resizer elements, which are extended to an extremely high height, break the drag & drop feature in Chrome. To make it work again,\n   all resizers must be hidden while the table is dragged. */\n.ck.ck-editor__editable .table[draggable] .ck-table-column-resizer {\n\tdisplay: none;\n}\n\n.ck.ck-editor__editable .table .ck-table-column-resizer:hover,\n.ck.ck-editor__editable .table .ck-table-column-resizer__active {\n\tbackground-color: var(--ck-color-selector-column-resizer-hover);\n\topacity: 0.25;\n}\n\n.ck.ck-editor__editable[dir=rtl] .table .ck-table-column-resizer {\n\tleft: var(--ck-table-column-resizer-position-offset);\n\tright: unset;\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            3881: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ":root{--ck-color-selector-focused-cell-background:rgba(158,201,250,.3)}.ck-widget.table td.ck-editor__nested-editable.ck-editor__nested-editable_focused,.ck-widget.table td.ck-editor__nested-editable:focus,.ck-widget.table th.ck-editor__nested-editable.ck-editor__nested-editable_focused,.ck-widget.table th.ck-editor__nested-editable:focus{background:var(--ck-color-selector-focused-cell-background);border-style:none;outline:1px solid var(--ck-color-focus-border);outline-offset:-1px}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-theme-lark/theme/ckeditor5-table/tableediting.css"],
                    names: [],
                    mappings: "AAKA,MACC,gEACD,CAKE,8QAGC,2DAA4D,CAK5D,iBAAkB,CAClB,8CAA+C,CAC/C,mBACD",
                    sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-color-selector-focused-cell-background: hsla(212, 90%, 80%, .3);\n}\n\n.ck-widget.table {\n\t& td,\n\t& th {\n\t\t&.ck-editor__nested-editable.ck-editor__nested-editable_focused,\n\t\t&.ck-editor__nested-editable:focus {\n\t\t\t/* A very slight background to highlight the focused cell */\n\t\t\tbackground: var(--ck-color-selector-focused-cell-background);\n\n\t\t\t/* Fixes the problem where surrounding cells cover the focused cell's border.\n\t\t\tIt does not fix the problem in all places but the UX is improved.\n\t\t\tSee https://github.com/ckeditor/ckeditor5-table/issues/29. */\n\t\t\tborder-style: none;\n\t\t\toutline: 1px solid var(--ck-color-focus-border);\n\t\t\toutline-offset: -1px; /* progressive enhancement - no IE support */\n\t\t}\n\t}\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            6237: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, '.ck.ck-table-form .ck-form__row.ck-table-form__background-row,.ck.ck-table-form .ck-form__row.ck-table-form__border-row{flex-wrap:wrap}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row{align-items:center;flex-wrap:wrap}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-labeled-field-view{align-items:center;display:flex;flex-direction:column-reverse}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-labeled-field-view .ck.ck-dropdown,.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-table-form__dimension-operator{flex-grow:0}.ck.ck-table-form .ck.ck-labeled-field-view{position:relative}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status{bottom:calc(var(--ck-table-properties-error-arrow-size)*-1);left:50%;position:absolute;transform:translate(-50%,100%);z-index:1}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status:after{content:"";left:50%;position:absolute;top:calc(var(--ck-table-properties-error-arrow-size)*-1);transform:translateX(-50%)}:root{--ck-table-properties-error-arrow-size:6px;--ck-table-properties-min-error-width:150px}.ck.ck-table-form .ck-form__row.ck-table-form__border-row .ck-labeled-field-view>.ck-label{font-size:var(--ck-font-size-tiny);text-align:center}.ck.ck-table-form .ck-form__row.ck-table-form__border-row .ck-table-form__border-style,.ck.ck-table-form .ck-form__row.ck-table-form__border-row .ck-table-form__border-width{max-width:80px;min-width:80px;width:80px}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row{padding:0}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-table-form__dimensions-row__height,.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-table-form__dimensions-row__width{margin:0}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-table-form__dimension-operator{align-self:flex-end;display:inline-block;height:var(--ck-ui-component-min-height);line-height:var(--ck-ui-component-min-height);margin:0 var(--ck-spacing-small)}.ck.ck-table-form .ck.ck-labeled-field-view{padding-top:var(--ck-spacing-standard)}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status{border-radius:0}.ck-rounded-corners .ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status,.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status{background:var(--ck-color-base-error);color:var(--ck-color-base-background);min-width:var(--ck-table-properties-min-error-width);padding:var(--ck-spacing-small) var(--ck-spacing-medium);text-align:center}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status:after{border-color:transparent transparent var(--ck-color-base-error) transparent;border-style:solid;border-width:0 var(--ck-table-properties-error-arrow-size) var(--ck-table-properties-error-arrow-size) var(--ck-table-properties-error-arrow-size)}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status{animation:ck-table-form-labeled-view-status-appear .15s ease both}.ck.ck-table-form .ck.ck-labeled-field-view .ck-input.ck-error:not(:focus)+.ck.ck-labeled-field-view__status{display:none}@keyframes ck-table-form-labeled-view-status-appear{0%{opacity:0}to{opacity:1}}', "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-table/theme/tableform.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-table/tableform.css", "webpack://./../ckeditor5-theme-lark/theme/mixins/_rounded.css"],
                    names: [],
                    mappings: "AAWE,wHACC,cACD,CAEA,8DAEC,kBAAmB,CADnB,cAgBD,CAbC,qFAGC,kBAAmB,CAFnB,YAAa,CACb,6BAMD,CAEA,sMACC,WACD,CAIF,4CAEC,iBAoBD,CAlBC,8EAGC,2DAAgE,CADhE,QAAS,CADT,iBAAkB,CAGlB,8BAA+B,CAG/B,SAUD,CAPC,oFACC,UAAW,CAGX,QAAS,CAFT,iBAAkB,CAClB,wDAA6D,CAE7D,0BACD,CChDH,MACC,0CAA2C,CAC3C,2CACD,CAMI,2FACC,kCAAmC,CACnC,iBACD,CAGD,8KAIC,cAAe,CADf,cAAe,CADf,UAGD,CAGD,8DACC,SAcD,CAZC,yMAEC,QACD,CAEA,iGACC,mBAAoB,CACpB,oBAAqB,CACrB,wCAAyC,CACzC,6CAA8C,CAC9C,gCACD,CAIF,4CACC,sCAyBD,CAvBC,8ECxCD,eDyDC,CAjBA,mMCpCA,qCDqDA,CAjBA,8EAGC,qCAAsC,CACtC,qCAAsC,CAEtC,oDAAqD,CADrD,wDAAyD,CAEzD,iBAUD,CAPC,oFACC,2EAA4E,CAE5E,kBAAmB,CADnB,kJAED,CAdD,8EAgBC,iEACD,CAGA,6GACC,YACD,CAIF,oDACC,GACC,SACD,CAEA,GACC,SACD,CACD",
                    sourcesContent: ['/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-table-form {\n\t& .ck-form__row {\n\t\t&.ck-table-form__border-row {\n\t\t\tflex-wrap: wrap;\n\t\t}\n\n\t\t&.ck-table-form__background-row {\n\t\t\tflex-wrap: wrap;\n\t\t}\n\n\t\t&.ck-table-form__dimensions-row {\n\t\t\tflex-wrap: wrap;\n\t\t\talign-items: center;\n\n\t\t\t& .ck-labeled-field-view {\n\t\t\t\tdisplay: flex;\n\t\t\t\tflex-direction: column-reverse;\n\t\t\t\talign-items: center;\n\n\t\t\t\t& .ck.ck-dropdown {\n\t\t\t\t\tflex-grow: 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t& .ck-table-form__dimension-operator {\n\t\t\t\tflex-grow: 0;\n\t\t\t}\n\t\t}\n\t}\n\n\t& .ck.ck-labeled-field-view {\n\t\t/* Allow absolute positioning of the status (error) balloons. */\n\t\tposition: relative;\n\n\t\t& .ck.ck-labeled-field-view__status {\n\t\t\tposition: absolute;\n\t\t\tleft: 50%;\n\t\t\tbottom: calc( -1 * var(--ck-table-properties-error-arrow-size) );\n\t\t\ttransform: translate(-50%,100%);\n\n\t\t\t/* Make sure the balloon status stays on top of other form elements. */\n\t\t\tz-index: 1;\n\n\t\t\t/* The arrow pointing towards the field. */\n\t\t\t&::after {\n\t\t\t\tcontent: "";\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: calc( -1 * var(--ck-table-properties-error-arrow-size) );\n\t\t\t\tleft: 50%;\n\t\t\t\ttransform: translateX( -50% );\n\t\t\t}\n\t\t}\n\t}\n}\n', '/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../mixins/_rounded.css";\n\n:root {\n\t--ck-table-properties-error-arrow-size: 6px;\n\t--ck-table-properties-min-error-width: 150px;\n}\n\n.ck.ck-table-form {\n\t& .ck-form__row {\n\t\t&.ck-table-form__border-row {\n\t\t\t& .ck-labeled-field-view {\n\t\t\t\t& > .ck-label {\n\t\t\t\t\tfont-size: var(--ck-font-size-tiny);\n\t\t\t\t\ttext-align: center;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t& .ck-table-form__border-style,\n\t\t\t& .ck-table-form__border-width {\n\t\t\t\twidth: 80px;\n\t\t\t\tmin-width: 80px;\n\t\t\t\tmax-width: 80px;\n\t\t\t}\n\t\t}\n\n\t\t&.ck-table-form__dimensions-row {\n\t\t\tpadding: 0;\n\n\t\t\t& .ck-table-form__dimensions-row__width,\n\t\t\t& .ck-table-form__dimensions-row__height {\n\t\t\t\tmargin: 0\n\t\t\t}\n\n\t\t\t& .ck-table-form__dimension-operator {\n\t\t\t\talign-self: flex-end;\n\t\t\t\tdisplay: inline-block;\n\t\t\t\theight: var(--ck-ui-component-min-height);\n\t\t\t\tline-height: var(--ck-ui-component-min-height);\n\t\t\t\tmargin: 0 var(--ck-spacing-small);\n\t\t\t}\n\t\t}\n\t}\n\n\t& .ck.ck-labeled-field-view {\n\t\tpadding-top: var(--ck-spacing-standard);\n\n\t\t& .ck.ck-labeled-field-view__status {\n\t\t\t@mixin ck-rounded-corners;\n\n\t\t\tbackground: var(--ck-color-base-error);\n\t\t\tcolor: var(--ck-color-base-background);\n\t\t\tpadding: var(--ck-spacing-small) var(--ck-spacing-medium);\n\t\t\tmin-width: var(--ck-table-properties-min-error-width);\n\t\t\ttext-align: center;\n\n\t\t\t/* The arrow pointing towards the field. */\n\t\t\t&::after {\n\t\t\t\tborder-color: transparent transparent var(--ck-color-base-error) transparent;\n\t\t\t\tborder-width: 0 var(--ck-table-properties-error-arrow-size) var(--ck-table-properties-error-arrow-size) var(--ck-table-properties-error-arrow-size);\n\t\t\t\tborder-style: solid;\n\t\t\t}\n\n\t\t\tanimation: ck-table-form-labeled-view-status-appear .15s ease both;\n\t\t}\n\n\t\t/* Hide the error balloon when the field is blurred. Makes the experience much more clear. */\n\t\t& .ck-input.ck-error:not(:focus) + .ck.ck-labeled-field-view__status {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n\n@keyframes ck-table-form-labeled-view-status-appear {\n\t0% {\n\t\topacity: 0;\n\t}\n\n\t100% {\n\t\topacity: 1;\n\t}\n}\n', "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t@nest .ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            7341: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ".ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row{align-content:baseline;flex-basis:0;flex-wrap:wrap}.ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row .ck.ck-toolbar .ck-toolbar__items{flex-wrap:nowrap}.ck.ck-table-properties-form{width:320px}.ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row{align-self:flex-end;padding:0}.ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row .ck.ck-toolbar{background:none;margin-top:var(--ck-spacing-standard)}.ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row .ck.ck-toolbar .ck-toolbar__items>*{width:40px}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-table/theme/tableproperties.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-table/tableproperties.css"],
                    names: [],
                    mappings: "AAOE,mFAGC,sBAAuB,CADvB,YAAa,CADb,cAOD,CAHC,qHACC,gBACD,CCTH,6BACC,WAmBD,CAhBE,mFACC,mBAAoB,CACpB,SAYD,CAVC,kGACC,eAAgB,CAGhB,qCAKD,CAHC,uHACC,UACD",
                    sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-table-properties-form {\n\t& .ck-form__row {\n\t\t&.ck-table-properties-form__alignment-row {\n\t\t\tflex-wrap: wrap;\n\t\t\tflex-basis: 0;\n\t\t\talign-content: baseline;\n\n\t\t\t& .ck.ck-toolbar .ck-toolbar__items {\n\t\t\t\tflex-wrap: nowrap;\n\t\t\t}\n\t\t}\n\t}\n}\n", "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-table-properties-form {\n\twidth: 320px;\n\n\t& .ck-form__row {\n\t\t&.ck-table-properties-form__alignment-row {\n\t\t\talign-self: flex-end;\n\t\t\tpadding: 0;\n\n\t\t\t& .ck.ck-toolbar {\n\t\t\t\tbackground: none;\n\n\t\t\t\t/* Compensate for missing input label that would push the margin (toolbar has no inputs). */\n\t\t\t\tmargin-top: var(--ck-spacing-standard);\n\n\t\t\t\t& .ck-toolbar__items > * {\n\t\t\t\t\twidth: 40px;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            6945: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ':root{--ck-table-selected-cell-background:rgba(158,207,250,.3)}.ck.ck-editor__editable .table table td.ck-editor__editable_selected,.ck.ck-editor__editable .table table th.ck-editor__editable_selected{box-shadow:unset;caret-color:transparent;outline:unset;position:relative}.ck.ck-editor__editable .table table td.ck-editor__editable_selected:after,.ck.ck-editor__editable .table table th.ck-editor__editable_selected:after{background-color:var(--ck-table-selected-cell-background);bottom:0;content:"";left:0;pointer-events:none;position:absolute;right:0;top:0}.ck.ck-editor__editable .table table td.ck-editor__editable_selected ::selection,.ck.ck-editor__editable .table table td.ck-editor__editable_selected:focus,.ck.ck-editor__editable .table table th.ck-editor__editable_selected ::selection,.ck.ck-editor__editable .table table th.ck-editor__editable_selected:focus{background-color:transparent}.ck.ck-editor__editable .table table td.ck-editor__editable_selected .ck-widget,.ck.ck-editor__editable .table table th.ck-editor__editable_selected .ck-widget{outline:unset}.ck.ck-editor__editable .table table td.ck-editor__editable_selected .ck-widget>.ck-widget__selection-handle,.ck.ck-editor__editable .table table th.ck-editor__editable_selected .ck-widget>.ck-widget__selection-handle{display:none}', "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-theme-lark/theme/ckeditor5-table/tableselection.css"],
                    names: [],
                    mappings: "AAKA,MACC,wDACD,CAGC,0IAKC,gBAAiB,CAFjB,uBAAwB,CACxB,aAAc,CAFd,iBAiCD,CA3BC,sJAGC,yDAA0D,CAK1D,QAAS,CAPT,UAAW,CAKX,MAAO,CAJP,mBAAoB,CAEpB,iBAAkB,CAGlB,OAAQ,CAFR,KAID,CAEA,wTAEC,4BACD,CAMA,gKACC,aAKD,CAHC,0NACC,YACD",
                    sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-table-selected-cell-background: hsla(208, 90%, 80%, .3);\n}\n\n.ck.ck-editor__editable .table table {\n\t& td.ck-editor__editable_selected,\n\t& th.ck-editor__editable_selected {\n\t\tposition: relative;\n\t\tcaret-color: transparent;\n\t\toutline: unset;\n\t\tbox-shadow: unset;\n\n\t\t/* https://github.com/ckeditor/ckeditor5/issues/6446 */\n\t\t&:after {\n\t\t\tcontent: '';\n\t\t\tpointer-events: none;\n\t\t\tbackground-color: var(--ck-table-selected-cell-background);\n\t\t\tposition: absolute;\n\t\t\ttop: 0;\n\t\t\tleft: 0;\n\t\t\tright: 0;\n\t\t\tbottom: 0;\n\t\t}\n\n\t\t& ::selection,\n\t\t&:focus {\n\t\t\tbackground-color: transparent;\n\t\t}\n\n\t\t/*\n\t\t * To reduce the amount of noise, all widgets in the table selection have no outline and no selection handle.\n\t\t * See https://github.com/ckeditor/ckeditor5/issues/9491.\n\t\t */\n\t\t& .ck-widget {\n\t\t\toutline: unset;\n\n\t\t\t& > .ck-widget__selection-handle {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t}\n\t}\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            4906: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ".ck.ck-button,a.ck.ck-button{align-items:center;display:inline-flex;justify-content:left;position:relative;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.ck.ck-button .ck-button__label,a.ck.ck-button .ck-button__label{display:none}.ck.ck-button.ck-button_with-text .ck-button__label,a.ck.ck-button.ck-button_with-text .ck-button__label{display:inline-block}.ck.ck-button:not(.ck-button_with-text),a.ck.ck-button:not(.ck-button_with-text){justify-content:center}.ck.ck-button,a.ck.ck-button{background:var(--ck-color-button-default-background)}.ck.ck-button:not(.ck-disabled):hover,a.ck.ck-button:not(.ck-disabled):hover{background:var(--ck-color-button-default-hover-background)}.ck.ck-button:not(.ck-disabled):active,a.ck.ck-button:not(.ck-disabled):active{background:var(--ck-color-button-default-active-background)}.ck.ck-button.ck-disabled,a.ck.ck-button.ck-disabled{background:var(--ck-color-button-default-disabled-background)}.ck.ck-button,a.ck.ck-button{border-radius:0}.ck-rounded-corners .ck.ck-button,.ck-rounded-corners a.ck.ck-button,.ck.ck-button.ck-rounded-corners,a.ck.ck-button.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-button,a.ck.ck-button{-webkit-appearance:none;border:1px solid transparent;cursor:default;font-size:inherit;line-height:1;min-height:var(--ck-ui-component-min-height);min-width:var(--ck-ui-component-min-height);padding:var(--ck-spacing-tiny);text-align:center;transition:box-shadow .2s ease-in-out,border .2s ease-in-out;vertical-align:middle;white-space:nowrap}.ck.ck-button:active,.ck.ck-button:focus,a.ck.ck-button:active,a.ck.ck-button:focus{border:var(--ck-focus-ring);box-shadow:var(--ck-focus-outer-shadow),0 0;outline:none}.ck.ck-button .ck-button__icon use,.ck.ck-button .ck-button__icon use *,a.ck.ck-button .ck-button__icon use,a.ck.ck-button .ck-button__icon use *{color:inherit}.ck.ck-button .ck-button__label,a.ck.ck-button .ck-button__label{color:inherit;cursor:inherit;font-size:inherit;font-weight:inherit;vertical-align:middle}[dir=ltr] .ck.ck-button .ck-button__label,[dir=ltr] a.ck.ck-button .ck-button__label{text-align:left}[dir=rtl] .ck.ck-button .ck-button__label,[dir=rtl] a.ck.ck-button .ck-button__label{text-align:right}.ck.ck-button .ck-button__keystroke,a.ck.ck-button .ck-button__keystroke{color:inherit}[dir=ltr] .ck.ck-button .ck-button__keystroke,[dir=ltr] a.ck.ck-button .ck-button__keystroke{margin-left:var(--ck-spacing-large)}[dir=rtl] .ck.ck-button .ck-button__keystroke,[dir=rtl] a.ck.ck-button .ck-button__keystroke{margin-right:var(--ck-spacing-large)}.ck.ck-button .ck-button__keystroke,a.ck.ck-button .ck-button__keystroke{font-weight:700;opacity:.7}.ck.ck-button.ck-disabled:active,.ck.ck-button.ck-disabled:focus,a.ck.ck-button.ck-disabled:active,a.ck.ck-button.ck-disabled:focus{box-shadow:var(--ck-focus-disabled-outer-shadow),0 0}.ck.ck-button.ck-disabled .ck-button__icon,.ck.ck-button.ck-disabled .ck-button__label,a.ck.ck-button.ck-disabled .ck-button__icon,a.ck.ck-button.ck-disabled .ck-button__label{opacity:var(--ck-disabled-opacity)}.ck.ck-button.ck-disabled .ck-button__keystroke,a.ck.ck-button.ck-disabled .ck-button__keystroke{opacity:.3}.ck.ck-button.ck-button_with-text,a.ck.ck-button.ck-button_with-text{padding:var(--ck-spacing-tiny) var(--ck-spacing-standard)}[dir=ltr] .ck.ck-button.ck-button_with-text .ck-button__icon,[dir=ltr] a.ck.ck-button.ck-button_with-text .ck-button__icon{margin-left:calc(var(--ck-spacing-small)*-1);margin-right:var(--ck-spacing-small)}[dir=rtl] .ck.ck-button.ck-button_with-text .ck-button__icon,[dir=rtl] a.ck.ck-button.ck-button_with-text .ck-button__icon{margin-left:var(--ck-spacing-small);margin-right:calc(var(--ck-spacing-small)*-1)}.ck.ck-button.ck-button_with-keystroke .ck-button__label,a.ck.ck-button.ck-button_with-keystroke .ck-button__label{flex-grow:1}.ck.ck-button.ck-on,a.ck.ck-button.ck-on{background:var(--ck-color-button-on-background)}.ck.ck-button.ck-on:not(.ck-disabled):hover,a.ck.ck-button.ck-on:not(.ck-disabled):hover{background:var(--ck-color-button-on-hover-background)}.ck.ck-button.ck-on:not(.ck-disabled):active,a.ck.ck-button.ck-on:not(.ck-disabled):active{background:var(--ck-color-button-on-active-background)}.ck.ck-button.ck-on.ck-disabled,a.ck.ck-button.ck-on.ck-disabled{background:var(--ck-color-button-on-disabled-background)}.ck.ck-button.ck-on,a.ck.ck-button.ck-on{color:var(--ck-color-button-on-color)}.ck.ck-button.ck-button-save,a.ck.ck-button.ck-button-save{color:var(--ck-color-button-save)}.ck.ck-button.ck-button-cancel,a.ck.ck-button.ck-button-cancel{color:var(--ck-color-button-cancel)}.ck.ck-button-action,a.ck.ck-button-action{background:var(--ck-color-button-action-background)}.ck.ck-button-action:not(.ck-disabled):hover,a.ck.ck-button-action:not(.ck-disabled):hover{background:var(--ck-color-button-action-hover-background)}.ck.ck-button-action:not(.ck-disabled):active,a.ck.ck-button-action:not(.ck-disabled):active{background:var(--ck-color-button-action-active-background)}.ck.ck-button-action.ck-disabled,a.ck.ck-button-action.ck-disabled{background:var(--ck-color-button-action-disabled-background)}.ck.ck-button-action,a.ck.ck-button-action{color:var(--ck-color-button-action-text)}.ck.ck-button-bold,a.ck.ck-button-bold{font-weight:700}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-ui/theme/components/button/button.css", "webpack://./../ckeditor5-ui/theme/mixins/_unselectable.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/button/button.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/mixins/_button.css", "webpack://./../ckeditor5-theme-lark/theme/mixins/_rounded.css", "webpack://./../ckeditor5-theme-lark/theme/mixins/_focus.css", "webpack://./../ckeditor5-theme-lark/theme/mixins/_shadow.css", "webpack://./../ckeditor5-theme-lark/theme/mixins/_disabled.css"],
                    names: [],
                    mappings: "AAOA,6BAMC,kBAAmB,CADnB,mBAAoB,CAEpB,oBAAqB,CAHrB,iBAAkB,CCFlB,qBAAsB,CACtB,wBAAyB,CACzB,oBAAqB,CACrB,gBDkBD,CAdC,iEACC,YACD,CAGC,yGACC,oBACD,CAID,iFACC,sBACD,CEjBD,6BCAC,oDD4ID,CCzIE,6EACC,0DACD,CAEA,+EACC,2DACD,CAID,qDACC,6DACD,CDfD,6BEDC,eF6ID,CA5IA,wIEGE,qCFyIF,CA5IA,6BA6BC,uBAAwB,CANxB,4BAA6B,CAjB7B,cAAe,CAcf,iBAAkB,CAHlB,aAAc,CAJd,4CAA6C,CAD7C,2CAA4C,CAJ5C,8BAA+B,CAC/B,iBAAkB,CAiBlB,4DAA8D,CAnB9D,qBAAsB,CAFtB,kBAuID,CA7GC,oFGhCA,2BAA2B,CCF3B,2CAA8B,CDC9B,YHqCA,CAIC,kJAEC,aACD,CAGD,iEAIC,aAAc,CACd,cAAe,CAHf,iBAAkB,CAClB,mBAAoB,CAMpB,qBASD,CAlBA,qFAYE,eAMF,CAlBA,qFAgBE,gBAEF,CAEA,yEACC,aAYD,CAbA,6FAIE,mCASF,CAbA,6FAQE,oCAKF,CAbA,yEAWC,eAAiB,CACjB,UACD,CAIC,oIIrFD,oDJyFC,CAOA,gLKhGD,kCLkGC,CAEA,iGACC,UACD,CAGD,qEACC,yDAcD,CAXC,2HAEE,4CAA+C,CAC/C,oCAOF,CAVA,2HAQE,mCAAoC,CADpC,6CAGF,CAKA,mHACC,WACD,CAID,yCC/HA,+CDmIA,CChIC,yFACC,qDACD,CAEA,2FACC,sDACD,CAID,iEACC,wDACD,CDgHA,yCAGC,qCACD,CAEA,2DACC,iCACD,CAEA,+DACC,mCACD,CAID,2CC/IC,mDDoJD,CCjJE,2FACC,yDACD,CAEA,6FACC,0DACD,CAID,mEACC,4DACD,CDgID,2CAIC,wCACD,CAEA,uCAEC,eACD",
                    sourcesContent: ['/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../mixins/_unselectable.css";\n\n.ck.ck-button,\na.ck.ck-button {\n\t@mixin ck-unselectable;\n\n\tposition: relative;\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: left;\n\n\t& .ck-button__label {\n\t\tdisplay: none;\n\t}\n\n\t&.ck-button_with-text {\n\t\t& .ck-button__label {\n\t\t\tdisplay: inline-block;\n\t\t}\n\t}\n\n\t/* Center the icon horizontally in a button without text. */\n\t&:not(.ck-button_with-text)  {\n\t\tjustify-content: center;\n\t}\n}\n', "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Makes element unselectable.\n */\n@define-mixin ck-unselectable {\n\t-moz-user-select: none;\n\t-webkit-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none\n}\n", '/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../../mixins/_focus.css";\n@import "../../../mixins/_shadow.css";\n@import "../../../mixins/_disabled.css";\n@import "../../../mixins/_rounded.css";\n@import "../../mixins/_button.css";\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n.ck.ck-button,\na.ck.ck-button {\n\t@mixin ck-button-colors --ck-color-button-default;\n\t@mixin ck-rounded-corners;\n\n\twhite-space: nowrap;\n\tcursor: default;\n\tvertical-align: middle;\n\tpadding: var(--ck-spacing-tiny);\n\ttext-align: center;\n\n\t/* A very important piece of styling. Go to variable declaration to learn more. */\n\tmin-width: var(--ck-ui-component-min-height);\n\tmin-height: var(--ck-ui-component-min-height);\n\n\t/* Normalize the height of the line. Removing this will break consistent height\n\tamong text and text-less buttons (with icons). */\n\tline-height: 1;\n\n\t/* Enable font size inheritance, which allows fluid UI scaling. */\n\tfont-size: inherit;\n\n\t/* Avoid flickering when the foucs border shows up. */\n\tborder: 1px solid transparent;\n\n\t/* Apply some smooth transition to the box-shadow and border. */\n\ttransition: box-shadow .2s ease-in-out, border .2s ease-in-out;\n\n\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/189 */\n\t-webkit-appearance: none;\n\n\t&:active,\n\t&:focus {\n\t\t@mixin ck-focus-ring;\n\t\t@mixin ck-box-shadow var(--ck-focus-outer-shadow);\n\t}\n\n\t/* Allow icon coloring using the text "color" property. */\n\t& .ck-button__icon {\n\t\t& use,\n\t\t& use * {\n\t\t\tcolor: inherit;\n\t\t}\n\t}\n\n\t& .ck-button__label {\n\t\t/* Enable font size inheritance, which allows fluid UI scaling. */\n\t\tfont-size: inherit;\n\t\tfont-weight: inherit;\n\t\tcolor: inherit;\n\t\tcursor: inherit;\n\n\t\t/* Must be consistent with .ck-icon\'s vertical align. Otherwise, buttons with and\n\t\twithout labels (but with icons) have different sizes in Chrome */\n\t\tvertical-align: middle;\n\n\t\t@mixin ck-dir ltr {\n\t\t\ttext-align: left;\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\ttext-align: right;\n\t\t}\n\t}\n\n\t& .ck-button__keystroke {\n\t\tcolor: inherit;\n\n\t\t@mixin ck-dir ltr {\n\t\t\tmargin-left: var(--ck-spacing-large);\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\tmargin-right: var(--ck-spacing-large);\n\t\t}\n\n\t\tfont-weight: bold;\n\t\topacity: .7;\n\t}\n\n\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/70 */\n\t&.ck-disabled {\n\t\t&:active,\n\t\t&:focus {\n\t\t\t/* The disabled button should have a slightly less visible shadow when focused. */\n\t\t\t@mixin ck-box-shadow var(--ck-focus-disabled-outer-shadow);\n\t\t}\n\n\t\t& .ck-button__icon {\n\t\t\t@mixin ck-disabled;\n\t\t}\n\n\t\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/98 */\n\t\t& .ck-button__label {\n\t\t\t@mixin ck-disabled;\n\t\t}\n\n\t\t& .ck-button__keystroke {\n\t\t\topacity: .3;\n\t\t}\n\t}\n\n\t&.ck-button_with-text {\n\t\tpadding: var(--ck-spacing-tiny) var(--ck-spacing-standard);\n\n\t\t/* stylelint-disable-next-line no-descending-specificity */\n\t\t& .ck-button__icon {\n\t\t\t@mixin ck-dir ltr {\n\t\t\t\tmargin-left: calc(-1 * var(--ck-spacing-small));\n\t\t\t\tmargin-right: var(--ck-spacing-small);\n\t\t\t}\n\n\t\t\t@mixin ck-dir rtl {\n\t\t\t\tmargin-right: calc(-1 * var(--ck-spacing-small));\n\t\t\t\tmargin-left: var(--ck-spacing-small);\n\t\t\t}\n\t\t}\n\t}\n\n\t&.ck-button_with-keystroke {\n\t\t/* stylelint-disable-next-line no-descending-specificity */\n\t\t& .ck-button__label {\n\t\t\tflex-grow: 1;\n\t\t}\n\t}\n\n\t/* A style of the button which is currently on, e.g. its feature is active. */\n\t&.ck-on {\n\t\t@mixin ck-button-colors --ck-color-button-on;\n\n\t\tcolor: var(--ck-color-button-on-color);\n\t}\n\n\t&.ck-button-save {\n\t\tcolor: var(--ck-color-button-save);\n\t}\n\n\t&.ck-button-cancel {\n\t\tcolor: var(--ck-color-button-cancel);\n\t}\n}\n\n/* A style of the button which handles the primary action. */\n.ck.ck-button-action,\na.ck.ck-button-action {\n\t@mixin ck-button-colors --ck-color-button-action;\n\n\tcolor: var(--ck-color-button-action-text);\n}\n\n.ck.ck-button-bold,\na.ck.ck-button-bold {\n\tfont-weight: bold;\n}\n', "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Implements a button of given background color.\n *\n * @param {String} $background - Background color of the button.\n * @param {String} $border - Border color of the button.\n */\n@define-mixin ck-button-colors $prefix {\n\tbackground: var($(prefix)-background);\n\n\t&:not(.ck-disabled) {\n\t\t&:hover {\n\t\t\tbackground: var($(prefix)-hover-background);\n\t\t}\n\n\t\t&:active {\n\t\t\tbackground: var($(prefix)-active-background);\n\t\t}\n\t}\n\n\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/98 */\n\t&.ck-disabled {\n\t\tbackground: var($(prefix)-disabled-background);\n\t}\n}\n", "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t@nest .ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n", "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A visual style of focused element's border.\n */\n@define-mixin ck-focus-ring {\n\t/* Disable native outline. */\n\toutline: none;\n\tborder: var(--ck-focus-ring)\n}\n", "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A helper to combine multiple shadows.\n */\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\n\tbox-shadow: $shadowA, $shadowB;\n}\n\n/**\n * Gives an element a drop shadow so it looks like a floating panel.\n */\n@define-mixin ck-drop-shadow {\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\n}\n", "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A class which indicates that an element holding it is disabled.\n */\n@define-mixin ck-disabled {\n\topacity: var(--ck-disabled-opacity);\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            5332: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ".ck.ck-button.ck-switchbutton .ck-button__toggle,.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner{display:block}:root{--ck-switch-button-toggle-width:2.6153846154em;--ck-switch-button-toggle-inner-size:calc(1.07692em + 1px);--ck-switch-button-translation:calc(var(--ck-switch-button-toggle-width) - var(--ck-switch-button-toggle-inner-size) - 2px);--ck-switch-button-inner-hover-shadow:0 0 0 5px var(--ck-color-switch-button-inner-shadow)}.ck.ck-button.ck-switchbutton,.ck.ck-button.ck-switchbutton.ck-on:active,.ck.ck-button.ck-switchbutton.ck-on:focus,.ck.ck-button.ck-switchbutton.ck-on:hover,.ck.ck-button.ck-switchbutton:active,.ck.ck-button.ck-switchbutton:focus,.ck.ck-button.ck-switchbutton:hover{background:transparent;color:inherit}[dir=ltr] .ck.ck-button.ck-switchbutton .ck-button__label{margin-right:calc(var(--ck-spacing-large)*2)}[dir=rtl] .ck.ck-button.ck-switchbutton .ck-button__label{margin-left:calc(var(--ck-spacing-large)*2)}.ck.ck-button.ck-switchbutton .ck-button__toggle{border-radius:0}.ck-rounded-corners .ck.ck-button.ck-switchbutton .ck-button__toggle,.ck.ck-button.ck-switchbutton .ck-button__toggle.ck-rounded-corners{border-radius:var(--ck-border-radius)}[dir=ltr] .ck.ck-button.ck-switchbutton .ck-button__toggle{margin-left:auto}[dir=rtl] .ck.ck-button.ck-switchbutton .ck-button__toggle{margin-right:auto}.ck.ck-button.ck-switchbutton .ck-button__toggle{background:var(--ck-color-switch-button-off-background);border:1px solid transparent;transition:background .4s ease,box-shadow .2s ease-in-out,outline .2s ease-in-out;width:var(--ck-switch-button-toggle-width)}.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner{border-radius:0}.ck-rounded-corners .ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner,.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner.ck-rounded-corners{border-radius:var(--ck-border-radius);border-radius:calc(var(--ck-border-radius)*.5)}.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner{background:var(--ck-color-switch-button-inner-background);height:var(--ck-switch-button-toggle-inner-size);transition:all .3s ease;width:var(--ck-switch-button-toggle-inner-size)}.ck.ck-button.ck-switchbutton .ck-button__toggle:hover{background:var(--ck-color-switch-button-off-hover-background)}.ck.ck-button.ck-switchbutton .ck-button__toggle:hover .ck-button__toggle__inner{box-shadow:var(--ck-switch-button-inner-hover-shadow)}.ck.ck-button.ck-switchbutton.ck-disabled .ck-button__toggle{opacity:var(--ck-disabled-opacity)}.ck.ck-button.ck-switchbutton:focus{border-color:transparent;box-shadow:none;outline:none}.ck.ck-button.ck-switchbutton:focus .ck-button__toggle{box-shadow:0 0 0 1px var(--ck-color-base-background),0 0 0 5px var(--ck-color-focus-outer-shadow);outline:var(--ck-focus-ring);outline-offset:1px}.ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle{background:var(--ck-color-switch-button-on-background)}.ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle:hover{background:var(--ck-color-switch-button-on-hover-background)}[dir=ltr] .ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle .ck-button__toggle__inner{transform:translateX(var( --ck-switch-button-translation ))}[dir=rtl] .ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle .ck-button__toggle__inner{transform:translateX(calc(var( --ck-switch-button-translation )*-1))}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-ui/theme/components/button/switchbutton.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/button/switchbutton.css", "webpack://./../ckeditor5-theme-lark/theme/mixins/_rounded.css", "webpack://./../ckeditor5-theme-lark/theme/mixins/_disabled.css"],
                    names: [],
                    mappings: "AASE,4HACC,aACD,CCCF,MAEC,8CAA+C,CAE/C,0DAAgE,CAChE,2HAIC,CACD,0FACD,CAOC,0QAEC,sBAAuB,CADvB,aAED,CAEA,0DAGE,4CAOF,CAVA,0DAQE,2CAEF,CAEA,iDCpCA,eD4EA,CAxCA,yIChCC,qCDwED,CAxCA,2DAKE,gBAmCF,CAxCA,2DAUE,iBA8BF,CAxCA,iDAkBC,uDAAwD,CAFxD,4BAA6B,CAD7B,iFAAsF,CAEtF,0CAuBD,CApBC,2ECxDD,eDmEC,CAXA,6LCpDA,qCAAsC,CDsDpC,8CASF,CAXA,2EAOC,yDAA0D,CAD1D,gDAAiD,CAIjD,uBAA0B,CAL1B,+CAMD,CAEA,uDACC,6DAKD,CAHC,iFACC,qDACD,CAIF,6DEhFA,kCFkFA,CAGA,oCACC,wBAAyB,CAEzB,eAAgB,CADhB,YAQD,CALC,uDACC,iGAAmG,CAEnG,4BAA6B,CAD7B,kBAED,CAKA,uDACC,sDAkBD,CAhBC,6DACC,4DACD,CAEA,2FAKE,2DAMF,CAXA,2FASE,oEAEF",
                    sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-button.ck-switchbutton {\n\t& .ck-button__toggle {\n\t\tdisplay: block;\n\n\t\t& .ck-button__toggle__inner {\n\t\t\tdisplay: block;\n\t\t}\n\t}\n}\n", '/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../../mixins/_rounded.css";\n@import "../../../mixins/_disabled.css";\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n/* Note: To avoid rendering issues (aliasing) but to preserve the responsive nature\nof the component, floating–point numbers have been used which, for the default font size\n(see: --ck-font-size-base), will generate simple integers. */\n:root {\n\t/* 34px at 13px font-size */\n\t--ck-switch-button-toggle-width: 2.6153846154em;\n\t/* 14px at 13px font-size */\n\t--ck-switch-button-toggle-inner-size: calc(1.0769230769em + 1px);\n\t--ck-switch-button-translation: calc(\n\t\tvar(--ck-switch-button-toggle-width) -\n\t\tvar(--ck-switch-button-toggle-inner-size) -\n\t\t2px /* Border */\n\t);\n\t--ck-switch-button-inner-hover-shadow: 0 0 0 5px var(--ck-color-switch-button-inner-shadow);\n}\n\n.ck.ck-button.ck-switchbutton {\n\t/* Unlike a regular button, the switch button text color and background should never change.\n\t * Changing toggle switch (background, outline) is enough to carry the information about the\n\t * state of the entire component (https://github.com/ckeditor/ckeditor5/issues/12519)\n\t */\n\t&, &:hover, &:focus, &:active, &.ck-on:hover, &.ck-on:focus, &.ck-on:active {\n\t\tcolor: inherit;\n\t\tbackground: transparent;\n\t}\n\n\t& .ck-button__label {\n\t\t@mixin ck-dir ltr {\n\t\t\t/* Separate the label from the switch */\n\t\t\tmargin-right: calc(2 * var(--ck-spacing-large));\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\t/* Separate the label from the switch */\n\t\t\tmargin-left: calc(2 * var(--ck-spacing-large));\n\t\t}\n\t}\n\n\t& .ck-button__toggle {\n\t\t@mixin ck-rounded-corners;\n\n\t\t@mixin ck-dir ltr {\n\t\t\t/* Make sure the toggle is always to the right as far as possible. */\n\t\t\tmargin-left: auto;\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\t/* Make sure the toggle is always to the left as far as possible. */\n\t\t\tmargin-right: auto;\n\t\t}\n\n\t\t/* Apply some smooth transition to the box-shadow and border. */\n\t\t/* Gently animate the background color of the toggle switch */\n\t\ttransition: background 400ms ease, box-shadow .2s ease-in-out, outline .2s ease-in-out;\n\t\tborder: 1px solid transparent;\n\t\twidth: var(--ck-switch-button-toggle-width);\n\t\tbackground: var(--ck-color-switch-button-off-background);\n\n\t\t& .ck-button__toggle__inner {\n\t\t\t@mixin ck-rounded-corners {\n\t\t\t\tborder-radius: calc(.5 * var(--ck-border-radius));\n\t\t\t}\n\n\t\t\twidth: var(--ck-switch-button-toggle-inner-size);\n\t\t\theight: var(--ck-switch-button-toggle-inner-size);\n\t\t\tbackground: var(--ck-color-switch-button-inner-background);\n\n\t\t\t/* Gently animate the inner part of the toggle switch */\n\t\t\ttransition: all 300ms ease;\n\t\t}\n\n\t\t&:hover {\n\t\t\tbackground: var(--ck-color-switch-button-off-hover-background);\n\n\t\t\t& .ck-button__toggle__inner {\n\t\t\t\tbox-shadow: var(--ck-switch-button-inner-hover-shadow);\n\t\t\t}\n\t\t}\n\t}\n\n\t&.ck-disabled .ck-button__toggle {\n\t\t@mixin ck-disabled;\n\t}\n\n\t/* Overriding default .ck-button:focus styles + an outline around the toogle */\n\t&:focus {\n\t\tborder-color: transparent;\n\t\toutline: none;\n\t\tbox-shadow: none;\n\n\t\t& .ck-button__toggle {\n\t\t\tbox-shadow: 0 0 0 1px var(--ck-color-base-background), 0 0 0 5px var(--ck-color-focus-outer-shadow);\n\t\t\toutline-offset: 1px;\n\t\t\toutline: var(--ck-focus-ring);\n\t\t}\n\t}\n\n\t/* stylelint-disable-next-line no-descending-specificity */\n\t&.ck-on {\n\t\t& .ck-button__toggle {\n\t\t\tbackground: var(--ck-color-switch-button-on-background);\n\n\t\t\t&:hover {\n\t\t\t\tbackground: var(--ck-color-switch-button-on-hover-background);\n\t\t\t}\n\n\t\t\t& .ck-button__toggle__inner {\n\t\t\t\t/*\n\t\t\t\t* Move the toggle switch to the right. It will be animated.\n\t\t\t\t*/\n\t\t\t\t@mixin ck-dir ltr {\n\t\t\t\t\ttransform: translateX( var( --ck-switch-button-translation ) );\n\t\t\t\t}\n\n\t\t\t\t@mixin ck-dir rtl {\n\t\t\t\t\ttransform: translateX( calc( -1 * var( --ck-switch-button-translation ) ) );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n', "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t@nest .ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n", "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A class which indicates that an element holding it is disabled.\n */\n@define-mixin ck-disabled {\n\topacity: var(--ck-disabled-opacity);\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            6781: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ".ck.ck-color-grid{display:grid}:root{--ck-color-grid-tile-size:24px;--ck-color-color-grid-check-icon:#166fd4}.ck.ck-color-grid{grid-gap:5px;padding:8px}.ck.ck-color-grid__tile{border:0;height:var(--ck-color-grid-tile-size);min-height:var(--ck-color-grid-tile-size);min-width:var(--ck-color-grid-tile-size);padding:0;transition:box-shadow .2s ease;width:var(--ck-color-grid-tile-size)}.ck.ck-color-grid__tile.ck-disabled{cursor:unset;transition:unset}.ck.ck-color-grid__tile.ck-color-selector__color-tile_bordered{box-shadow:0 0 0 1px var(--ck-color-base-border)}.ck.ck-color-grid__tile .ck.ck-icon{color:var(--ck-color-color-grid-check-icon);display:none}.ck.ck-color-grid__tile.ck-on{box-shadow:inset 0 0 0 1px var(--ck-color-base-background),0 0 0 2px var(--ck-color-base-text)}.ck.ck-color-grid__tile.ck-on .ck.ck-icon{display:block}.ck.ck-color-grid__tile.ck-on,.ck.ck-color-grid__tile:focus:not(.ck-disabled),.ck.ck-color-grid__tile:hover:not(.ck-disabled){border:0}.ck.ck-color-grid__tile:focus:not(.ck-disabled),.ck.ck-color-grid__tile:hover:not(.ck-disabled){box-shadow:inset 0 0 0 1px var(--ck-color-base-background),0 0 0 2px var(--ck-color-focus-border)}.ck.ck-color-grid__label{padding:0 var(--ck-spacing-standard)}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-ui/theme/components/colorgrid/colorgrid.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/colorgrid/colorgrid.css"],
                    names: [],
                    mappings: "AAKA,kBACC,YACD,CCAA,MACC,8BAA+B,CAK/B,wCACD,CAEA,kBACC,YAAa,CACb,WACD,CAEA,wBAOC,QAAS,CALT,qCAAsC,CAEtC,yCAA0C,CAD1C,wCAAyC,CAEzC,SAAU,CACV,8BAA+B,CAL/B,oCAyCD,CAjCC,oCACC,YAAa,CACb,gBACD,CAEA,+DACC,gDACD,CAEA,oCAEC,2CAA4C,CAD5C,YAED,CAEA,8BACC,8FAKD,CAHC,0CACC,aACD,CAGD,8HAIC,QACD,CAEA,gGAEC,iGACD,CAGD,yBACC,oCACD",
                    sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-color-grid {\n\tdisplay: grid;\n}\n", '/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../../mixins/_rounded.css";\n\n:root {\n\t--ck-color-grid-tile-size: 24px;\n\n\t/* Not using global colors here because these may change but some colors in a pallette\n\t * require special treatment. For instance, this ensures no matter what the UI text color is,\n\t * the check icon will look good on the black color tile. */\n\t--ck-color-color-grid-check-icon: hsl(212, 81%, 46%);\n}\n\n.ck.ck-color-grid {\n\tgrid-gap: 5px;\n\tpadding: 8px;\n}\n\n.ck.ck-color-grid__tile {\n\twidth: var(--ck-color-grid-tile-size);\n\theight: var(--ck-color-grid-tile-size);\n\tmin-width: var(--ck-color-grid-tile-size);\n\tmin-height: var(--ck-color-grid-tile-size);\n\tpadding: 0;\n\ttransition: .2s ease box-shadow;\n\tborder: 0;\n\n\t&.ck-disabled {\n\t\tcursor: unset;\n\t\ttransition: unset;\n\t}\n\n\t&.ck-color-selector__color-tile_bordered {\n\t\tbox-shadow: 0 0 0 1px var(--ck-color-base-border);\n\t}\n\n\t& .ck.ck-icon {\n\t\tdisplay: none;\n\t\tcolor: var(--ck-color-color-grid-check-icon);\n\t}\n\n\t&.ck-on {\n\t\tbox-shadow: inset 0 0 0 1px var(--ck-color-base-background), 0 0 0 2px var(--ck-color-base-text);\n\n\t\t& .ck.ck-icon {\n\t\t\tdisplay: block;\n\t\t}\n\t}\n\n\t&.ck-on,\n\t&:focus:not( .ck-disabled ),\n\t&:hover:not( .ck-disabled ) {\n\t\t/* Disable the default .ck-button\'s border ring. */\n\t\tborder: 0;\n\t}\n\n\t&:focus:not( .ck-disabled ),\n\t&:hover:not( .ck-disabled ) {\n\t\tbox-shadow: inset 0 0 0 1px var(--ck-color-base-background), 0 0 0 2px var(--ck-color-focus-border);\n\t}\n}\n\n.ck.ck-color-grid__label {\n\tpadding: 0 var(--ck-spacing-standard);\n}\n'],
                    sourceRoot: ""
                }]);
                const a = s
            },
            3398: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ".color-picker-hex-input{width:max-content}.color-picker-hex-input .ck.ck-input{min-width:unset}.ck.ck-color-picker__row{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between;margin:var(--ck-spacing-large) 0 0;width:unset}.ck.ck-color-picker__row .ck.ck-labeled-field-view{padding-top:unset}.ck.ck-color-picker__row .ck.ck-input-text{width:unset}.ck.ck-color-picker__row .ck-color-picker__hash-view{padding-right:var(--ck-spacing-medium);padding-top:var(--ck-spacing-tiny)}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-ui/theme/components/colorpicker/colorpicker.css"],
                    names: [],
                    mappings: "AAKA,wBACC,iBAKD,CAHC,qCACC,eACD,CAGD,yBACC,YAAa,CACb,kBAAmB,CACnB,gBAAiB,CACjB,6BAA8B,CAC9B,kCAAmC,CACnC,WAcD,CAZC,mDACC,iBACD,CAEA,2CACC,WACD,CAEA,qDAEC,sCAAuC,CADvC,kCAED",
                    sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.color-picker-hex-input {\n\twidth: max-content;\n\n\t& .ck.ck-input {\n\t\tmin-width: unset;\n\t}\n}\n\n.ck.ck-color-picker__row {\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: nowrap;\n\tjustify-content: space-between;\n\tmargin: var(--ck-spacing-large) 0 0;\n\twidth: unset;\n\n\t& .ck.ck-labeled-field-view {\n\t\tpadding-top: unset;\n\t}\n\n\t& .ck.ck-input-text {\n\t\twidth: unset;\n\t}\n\n\t& .ck-color-picker__hash-view {\n\t\tpadding-top: var(--ck-spacing-tiny);\n\t\tpadding-right: var(--ck-spacing-medium);\n\t}\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            4157: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ".ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__color-picker,.ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__remove-color{align-items:center;display:flex}[dir=rtl] .ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__color-picker,[dir=rtl] .ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__remove-color{justify-content:flex-start}.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-selector_action-bar{display:flex;flex-direction:row;justify-content:space-around}.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-selector_action-bar .ck-button-cancel,.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-selector_action-bar .ck-button-save{flex:1}.ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__color-picker,.ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__remove-color{width:100%}.ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__color-picker{border-bottom-left-radius:0;border-bottom-right-radius:0;padding:calc(var(--ck-spacing-standard)/2) var(--ck-spacing-standard)}.ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__color-picker:not(:focus){border-top:1px solid var(--ck-color-base-border)}[dir=ltr] .ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__color-picker .ck.ck-icon{margin-right:var(--ck-spacing-standard)}[dir=rtl] .ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__color-picker .ck.ck-icon{margin-left:var(--ck-spacing-standard)}.ck.ck-color-selector .ck-color-grids-fragment label.ck.ck-color-grid__label{font-weight:unset}.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-picker{padding:8px}.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-picker .hex-color-picker{height:100px;min-width:180px}.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-picker .hex-color-picker::part(saturation){border-radius:var(--ck-border-radius) var(--ck-border-radius) 0 0}.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-picker .hex-color-picker::part(hue){border-radius:0 0 var(--ck-border-radius) var(--ck-border-radius)}.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-picker .hex-color-picker::part(hue-pointer),.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-picker .hex-color-picker::part(saturation-pointer){height:15px;width:15px}.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-selector_action-bar{padding:0 8px 8px}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-ui/theme/components/colorselector/colorselector.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/colorselector/colorselector.css"],
                    names: [],
                    mappings: "AAUE,oLAGC,kBAAmB,CADnB,YAMD,CARA,wMAME,0BAEF,CAKA,iFACC,YAAa,CACb,kBAAmB,CACnB,4BAMD,CAJC,oMAEC,MACD,CCrBD,oLAEC,UACD,CAEA,0FAEC,2BAA4B,CAC5B,4BAA6B,CAF7B,qEAiBD,CAbC,sGACC,gDACD,CAEA,gHAEE,uCAMF,CARA,gHAME,sCAEF,CAGD,6EACC,iBACD,CAKA,oEACC,WAoBD,CAlBC,sFACC,YAAa,CACb,eAeD,CAbC,wGACC,iEACD,CAEA,iGACC,iEACD,CAEA,yNAGC,WAAY,CADZ,UAED,CAIF,iFACC,iBACD",
                    sourcesContent: ['/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n.ck.ck-color-selector {\n\t/* View fragment with color grids. */\n\t& .ck-color-grids-fragment {\n\t\t& .ck-button.ck-color-selector__remove-color,\n\t\t& .ck-button.ck-color-selector__color-picker {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\n\t\t\t@mixin ck-dir rtl {\n\t\t\t\tjustify-content: flex-start;\n\t\t\t}\n\t\t}\n\t}\n\n\t/* View fragment with a color picker. */\n\t& .ck-color-picker-fragment {\n\t\t& .ck.ck-color-selector_action-bar {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: row;\n\t\t\tjustify-content: space-around;\n\n\t\t\t& .ck-button-save,\n\t\t\t& .ck-button-cancel {\n\t\t\t\tflex: 1\n\t\t\t}\n\t\t}\n\t}\n}\n', '/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n.ck.ck-color-selector {\n\t/* View fragment with color grids. */\n\t& .ck-color-grids-fragment {\n\t\t& .ck-button.ck-color-selector__remove-color,\n\t\t& .ck-button.ck-color-selector__color-picker {\n\t\t\twidth: 100%;\n\t\t}\n\n\t\t& .ck-button.ck-color-selector__color-picker {\n\t\t\tpadding: calc(var(--ck-spacing-standard) / 2) var(--ck-spacing-standard);\n\t\t\tborder-bottom-left-radius: 0;\n\t\t\tborder-bottom-right-radius: 0;\n\n\t\t\t&:not(:focus) {\n\t\t\t\tborder-top: 1px solid var(--ck-color-base-border);\n\t\t\t}\n\n\t\t\t& .ck.ck-icon {\n\t\t\t\t@mixin ck-dir ltr {\n\t\t\t\t\tmargin-right: var(--ck-spacing-standard);\n\t\t\t\t}\n\n\t\t\t\t@mixin ck-dir rtl {\n\t\t\t\t\tmargin-left: var(--ck-spacing-standard);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t& label.ck.ck-color-grid__label {\n\t\t\tfont-weight: unset;\n\t\t}\n\t}\n\n\t/* View fragment with a color picker. */\n\t& .ck-color-picker-fragment {\n\t\t& .ck.ck-color-picker {\n\t\t\tpadding: 8px;\n\n\t\t\t& .hex-color-picker {\n\t\t\t\theight: 100px;\n\t\t\t\tmin-width: 180px;\n\n\t\t\t\t&::part(saturation) {\n\t\t\t\t\tborder-radius: var(--ck-border-radius) var(--ck-border-radius) 0 0;\n\t\t\t\t}\n\n\t\t\t\t&::part(hue) {\n\t\t\t\t\tborder-radius: 0 0 var(--ck-border-radius) var(--ck-border-radius);\n\t\t\t\t}\n\n\t\t\t\t&::part(saturation-pointer),\n\t\t\t\t&::part(hue-pointer) {\n\t\t\t\t\twidth: 15px;\n\t\t\t\t\theight: 15px;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t& .ck.ck-color-selector_action-bar {\n\t\t\tpadding: 0 8px 8px;\n\t\t}\n\t}\n}\n'],
                    sourceRoot: ""
                }]);
                const a = s
            },
            5485: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ":root{--ck-dropdown-max-width:75vw}.ck.ck-dropdown{display:inline-block;position:relative}.ck.ck-dropdown .ck-dropdown__arrow{pointer-events:none;z-index:var(--ck-z-default)}.ck.ck-dropdown .ck-button.ck-dropdown__button{width:100%}.ck.ck-dropdown .ck-dropdown__panel{display:none;max-width:var(--ck-dropdown-max-width);position:absolute;z-index:var(--ck-z-modal)}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel-visible{display:inline-block}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_n,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_ne,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nme,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nmw,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nw{bottom:100%}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_s,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_se,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sme,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_smw,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sw{bottom:auto;top:100%}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_ne,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_se{left:0}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nw,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sw{right:0}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_n,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_s{left:50%;transform:translateX(-50%)}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nmw,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_smw{left:75%;transform:translateX(-75%)}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nme,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sme{left:25%;transform:translateX(-25%)}.ck.ck-toolbar .ck-dropdown__panel{z-index:calc(var(--ck-z-modal) + 1)}:root{--ck-dropdown-arrow-size:calc(var(--ck-icon-size)*0.5)}.ck.ck-dropdown{font-size:inherit}.ck.ck-dropdown .ck-dropdown__arrow{width:var(--ck-dropdown-arrow-size)}[dir=ltr] .ck.ck-dropdown .ck-dropdown__arrow{margin-left:var(--ck-spacing-standard);right:var(--ck-spacing-standard)}[dir=rtl] .ck.ck-dropdown .ck-dropdown__arrow{left:var(--ck-spacing-standard);margin-right:var(--ck-spacing-small)}.ck.ck-dropdown.ck-disabled .ck-dropdown__arrow{opacity:var(--ck-disabled-opacity)}[dir=ltr] .ck.ck-dropdown .ck-button.ck-dropdown__button:not(.ck-button_with-text){padding-left:var(--ck-spacing-small)}[dir=rtl] .ck.ck-dropdown .ck-button.ck-dropdown__button:not(.ck-button_with-text){padding-right:var(--ck-spacing-small)}.ck.ck-dropdown .ck-button.ck-dropdown__button .ck-button__label{overflow:hidden;text-overflow:ellipsis;width:7em}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-disabled .ck-button__label{opacity:var(--ck-disabled-opacity)}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-on{border-bottom-left-radius:0;border-bottom-right-radius:0}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-dropdown__button_label-width_auto .ck-button__label{width:auto}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-off:active,.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-on:active{box-shadow:none}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-off:active:focus,.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-on:active:focus{box-shadow:var(--ck-focus-outer-shadow),0 0}.ck.ck-dropdown__panel{border-radius:0}.ck-rounded-corners .ck.ck-dropdown__panel,.ck.ck-dropdown__panel.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-dropdown__panel{background:var(--ck-color-dropdown-panel-background);border:1px solid var(--ck-color-dropdown-panel-border);bottom:0;box-shadow:var(--ck-drop-shadow),0 0;min-width:100%}.ck.ck-dropdown__panel.ck-dropdown__panel_se{border-top-left-radius:0}.ck.ck-dropdown__panel.ck-dropdown__panel_sw{border-top-right-radius:0}.ck.ck-dropdown__panel.ck-dropdown__panel_ne{border-bottom-left-radius:0}.ck.ck-dropdown__panel.ck-dropdown__panel_nw{border-bottom-right-radius:0}.ck.ck-dropdown__panel:focus{outline:none}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-ui/theme/components/dropdown/dropdown.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/dropdown/dropdown.css", "webpack://./../ckeditor5-theme-lark/theme/mixins/_disabled.css", "webpack://./../ckeditor5-theme-lark/theme/mixins/_shadow.css", "webpack://./../ckeditor5-theme-lark/theme/mixins/_rounded.css"],
                    names: [],
                    mappings: "AAKA,MACC,4BACD,CAEA,gBACC,oBAAqB,CACrB,iBA2ED,CAzEC,oCACC,mBAAoB,CACpB,2BACD,CAGA,+CACC,UACD,CAEA,oCACC,YAAa,CAEb,sCAAuC,CAEvC,iBAAkB,CAHlB,yBA4DD,CAvDC,+DACC,oBACD,CAEA,mSAKC,WACD,CAEA,mSAUC,WAAY,CADZ,QAED,CAEA,oHAEC,MACD,CAEA,oHAEC,OACD,CAEA,kHAGC,QAAS,CACT,0BACD,CAEA,sHAGC,QAAS,CACT,0BACD,CAEA,sHAGC,QAAS,CACT,0BACD,CAQF,mCACC,mCACD,CCpFA,MACC,sDACD,CAEA,gBAEC,iBA2ED,CAzEC,oCACC,mCACD,CAGC,8CAIC,sCAAuC,CAHvC,gCAID,CAIA,8CACC,+BAAgC,CAGhC,oCACD,CAGD,gDC/BA,kCDiCA,CAIE,mFAEC,oCACD,CAIA,mFAEC,qCACD,CAID,iEAEC,eAAgB,CAChB,sBAAuB,CAFvB,SAGD,CAGA,6EC1DD,kCD4DC,CAGA,qDACC,2BAA4B,CAC5B,4BACD,CAEA,sGACC,UACD,CAGA,yHAEC,eAKD,CAHC,qIE7EF,2CF+EE,CAKH,uBGlFC,eHkHD,CAhCA,qFG9EE,qCH8GF,CAhCA,uBAIC,oDAAqD,CACrD,sDAAuD,CACvD,QAAS,CE1FT,oCAA8B,CF6F9B,cAuBD,CAnBC,6CACC,wBACD,CAEA,6CACC,yBACD,CAEA,6CACC,2BACD,CAEA,6CACC,4BACD,CAEA,6BACC,YACD",
                    sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-dropdown-max-width: 75vw;\n}\n\n.ck.ck-dropdown {\n\tdisplay: inline-block;\n\tposition: relative;\n\n\t& .ck-dropdown__arrow {\n\t\tpointer-events: none;\n\t\tz-index: var(--ck-z-default);\n\t}\n\n\t/* Dropdown button should span horizontally, e.g. in vertical toolbars */\n\t& .ck-button.ck-dropdown__button {\n\t\twidth: 100%;\n\t}\n\n\t& .ck-dropdown__panel {\n\t\tdisplay: none;\n\t\tz-index: var(--ck-z-modal);\n\t\tmax-width: var(--ck-dropdown-max-width);\n\n\t\tposition: absolute;\n\n\t\t&.ck-dropdown__panel-visible {\n\t\t\tdisplay: inline-block;\n\t\t}\n\n\t\t&.ck-dropdown__panel_ne,\n\t\t&.ck-dropdown__panel_nw,\n\t\t&.ck-dropdown__panel_n,\n\t\t&.ck-dropdown__panel_nmw,\n\t\t&.ck-dropdown__panel_nme {\n\t\t\tbottom: 100%;\n\t\t}\n\n\t\t&.ck-dropdown__panel_se,\n\t\t&.ck-dropdown__panel_sw,\n\t\t&.ck-dropdown__panel_smw,\n\t\t&.ck-dropdown__panel_sme,\n\t\t&.ck-dropdown__panel_s {\n\t\t\t/*\n\t\t\t * Using transform: translate3d( 0, 100%, 0 ) causes blurry dropdown on Chrome 67-78+ on non-retina displays.\n\t\t\t * See https://github.com/ckeditor/ckeditor5/issues/1053.\n\t\t\t */\n\t\t\ttop: 100%;\n\t\t\tbottom: auto;\n\t\t}\n\n\t\t&.ck-dropdown__panel_ne,\n\t\t&.ck-dropdown__panel_se {\n\t\t\tleft: 0px;\n\t\t}\n\n\t\t&.ck-dropdown__panel_nw,\n\t\t&.ck-dropdown__panel_sw {\n\t\t\tright: 0px;\n\t\t}\n\n\t\t&.ck-dropdown__panel_s,\n\t\t&.ck-dropdown__panel_n {\n\t\t\t/* Positioning panels relative to the center of the button */\n\t\t\tleft: 50%;\n\t\t\ttransform: translateX(-50%);\n\t\t}\n\n\t\t&.ck-dropdown__panel_nmw,\n\t\t&.ck-dropdown__panel_smw {\n\t\t\t/* Positioning panels relative to the middle-west of the button */\n\t\t\tleft: 75%;\n\t\t\ttransform: translateX(-75%);\n\t\t}\n\n\t\t&.ck-dropdown__panel_nme,\n\t\t&.ck-dropdown__panel_sme {\n\t\t\t/* Positioning panels relative to the middle-east of the button */\n\t\t\tleft: 25%;\n\t\t\ttransform: translateX(-25%);\n\t\t}\n\t}\n}\n\n/*\n * Toolbar dropdown panels should be always above the UI (eg. other dropdown panels) from the editor's content.\n * See https://github.com/ckeditor/ckeditor5/issues/7874\n */\n.ck.ck-toolbar .ck-dropdown__panel {\n\tz-index: calc( var(--ck-z-modal) + 1 );\n}\n", '/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../../mixins/_rounded.css";\n@import "../../../mixins/_disabled.css";\n@import "../../../mixins/_shadow.css";\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n:root {\n\t--ck-dropdown-arrow-size: calc(0.5 * var(--ck-icon-size));\n}\n\n.ck.ck-dropdown {\n\t/* Enable font size inheritance, which allows fluid UI scaling. */\n\tfont-size: inherit;\n\n\t& .ck-dropdown__arrow {\n\t\twidth: var(--ck-dropdown-arrow-size);\n\t}\n\n\t@mixin ck-dir ltr {\n\t\t& .ck-dropdown__arrow {\n\t\t\tright: var(--ck-spacing-standard);\n\n\t\t\t/* A space to accommodate the triangle. */\n\t\t\tmargin-left: var(--ck-spacing-standard);\n\t\t}\n\t}\n\n\t@mixin ck-dir rtl {\n\t\t& .ck-dropdown__arrow {\n\t\t\tleft: var(--ck-spacing-standard);\n\n\t\t\t/* A space to accommodate the triangle. */\n\t\t\tmargin-right: var(--ck-spacing-small);\n\t\t}\n\t}\n\n\t&.ck-disabled .ck-dropdown__arrow {\n\t\t@mixin ck-disabled;\n\t}\n\n\t& .ck-button.ck-dropdown__button {\n\t\t@mixin ck-dir ltr {\n\t\t\t&:not(.ck-button_with-text) {\n\t\t\t\t/* Make sure dropdowns with just an icon have the right inner spacing */\n\t\t\t\tpadding-left: var(--ck-spacing-small);\n\t\t\t}\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\t&:not(.ck-button_with-text) {\n\t\t\t\t/* Make sure dropdowns with just an icon have the right inner spacing */\n\t\t\t\tpadding-right: var(--ck-spacing-small);\n\t\t\t}\n\t\t}\n\n\t\t/* #23 */\n\t\t& .ck-button__label {\n\t\t\twidth: 7em;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t}\n\n\t\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/70 */\n\t\t&.ck-disabled .ck-button__label {\n\t\t\t@mixin ck-disabled;\n\t\t}\n\n\t\t/* https://github.com/ckeditor/ckeditor5/issues/816 */\n\t\t&.ck-on {\n\t\t\tborder-bottom-left-radius: 0;\n\t\t\tborder-bottom-right-radius: 0;\n\t\t}\n\n\t\t&.ck-dropdown__button_label-width_auto .ck-button__label {\n\t\t\twidth: auto;\n\t\t}\n\n\t\t/* https://github.com/ckeditor/ckeditor5/issues/8699 */\n\t\t&.ck-off:active,\n\t\t&.ck-on:active {\n\t\t\tbox-shadow: none;\n\n\t\t\t&:focus {\n\t\t\t\t@mixin ck-box-shadow var(--ck-focus-outer-shadow);\n\t\t\t}\n\t\t}\n\t}\n}\n\n.ck.ck-dropdown__panel {\n\t@mixin ck-rounded-corners;\n\t@mixin ck-drop-shadow;\n\n\tbackground: var(--ck-color-dropdown-panel-background);\n\tborder: 1px solid var(--ck-color-dropdown-panel-border);\n\tbottom: 0;\n\n\t/* Make sure the panel is at least as wide as the drop-down\'s button. */\n\tmin-width: 100%;\n\n\t/* Disabled corner border radius to be consistent with the .dropdown__button\n\thttps://github.com/ckeditor/ckeditor5/issues/816 */\n\t&.ck-dropdown__panel_se {\n\t\tborder-top-left-radius: 0;\n\t}\n\n\t&.ck-dropdown__panel_sw {\n\t\tborder-top-right-radius: 0;\n\t}\n\n\t&.ck-dropdown__panel_ne {\n\t\tborder-bottom-left-radius: 0;\n\t}\n\n\t&.ck-dropdown__panel_nw {\n\t\tborder-bottom-right-radius: 0;\n\t}\n\n\t&:focus {\n\t\toutline: none;\n\t}\n}\n', "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A class which indicates that an element holding it is disabled.\n */\n@define-mixin ck-disabled {\n\topacity: var(--ck-disabled-opacity);\n}\n", "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A helper to combine multiple shadows.\n */\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\n\tbox-shadow: $shadowA, $shadowB;\n}\n\n/**\n * Gives an element a drop shadow so it looks like a floating panel.\n */\n@define-mixin ck-drop-shadow {\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\n}\n", "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t@nest .ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            3949: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ".ck.ck-dropdown .ck-dropdown__panel .ck-list{border-radius:0}.ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list,.ck.ck-dropdown .ck-dropdown__panel .ck-list.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0}.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:first-child .ck-button{border-radius:0}.ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:first-child .ck-button,.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:first-child .ck-button.ck-rounded-corners{border-radius:var(--ck-border-radius);border-bottom-left-radius:0;border-bottom-right-radius:0;border-top-left-radius:0}.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:last-child .ck-button{border-radius:0}.ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:last-child .ck-button,.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:last-child .ck-button.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0;border-top-right-radius:0}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/dropdown/listdropdown.css", "webpack://./../ckeditor5-theme-lark/theme/mixins/_rounded.css"],
                    names: [],
                    mappings: "AAOA,6CCIC,eDqBD,CAzBA,iICQE,qCAAsC,CDJtC,wBAqBF,CAfE,mFCND,eDYC,CANA,6MCFA,qCAAsC,CDKpC,2BAA4B,CAC5B,4BAA6B,CAF7B,wBAIF,CAEA,kFCdD,eDmBC,CALA,2MCVA,qCAAsC,CDYpC,wBAAyB,CACzB,yBAEF",
                    sourcesContent: ['/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../../mixins/_rounded.css";\n\n.ck.ck-dropdown .ck-dropdown__panel .ck-list {\n\t/* Disabled radius of top-left border to be consistent with .dropdown__button\n\thttps://github.com/ckeditor/ckeditor5/issues/816 */\n\t@mixin ck-rounded-corners {\n\t\tborder-top-left-radius: 0;\n\t}\n\n\t/* Make sure the button belonging to the first/last child of the list goes well with the\n\tborder radius of the entire panel. */\n\t& .ck-list__item {\n\t\t&:first-child .ck-button {\n\t\t\t@mixin ck-rounded-corners {\n\t\t\t\tborder-top-left-radius: 0;\n\t\t\t\tborder-bottom-left-radius: 0;\n\t\t\t\tborder-bottom-right-radius: 0;\n\t\t\t}\n\t\t}\n\n\t\t&:last-child .ck-button {\n\t\t\t@mixin ck-rounded-corners {\n\t\t\t\tborder-top-left-radius: 0;\n\t\t\t\tborder-top-right-radius: 0;\n\t\t\t}\n\t\t}\n\t}\n}\n', "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t@nest .ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            7686: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, '.ck.ck-splitbutton{font-size:inherit}.ck.ck-splitbutton .ck-splitbutton__action:focus{z-index:calc(var(--ck-z-default) + 1)}:root{--ck-color-split-button-hover-background:#ebebeb;--ck-color-split-button-hover-border:#b3b3b3}[dir=ltr] .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__action,[dir=ltr] .ck.ck-splitbutton:hover>.ck-splitbutton__action{border-bottom-right-radius:unset;border-top-right-radius:unset}[dir=rtl] .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__action,[dir=rtl] .ck.ck-splitbutton:hover>.ck-splitbutton__action{border-bottom-left-radius:unset;border-top-left-radius:unset}.ck.ck-splitbutton>.ck-splitbutton__arrow{min-width:unset}[dir=ltr] .ck.ck-splitbutton>.ck-splitbutton__arrow{border-bottom-left-radius:unset;border-top-left-radius:unset}[dir=rtl] .ck.ck-splitbutton>.ck-splitbutton__arrow{border-bottom-right-radius:unset;border-top-right-radius:unset}.ck.ck-splitbutton>.ck-splitbutton__arrow svg{width:var(--ck-dropdown-arrow-size)}.ck.ck-splitbutton>.ck-splitbutton__arrow:not(:focus){border-bottom-width:0;border-top-width:0}.ck.ck-splitbutton.ck-splitbutton_open>.ck-button:not(.ck-on):not(.ck-disabled):not(:hover),.ck.ck-splitbutton:hover>.ck-button:not(.ck-on):not(.ck-disabled):not(:hover){background:var(--ck-color-split-button-hover-background)}.ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):after,.ck.ck-splitbutton:hover>.ck-splitbutton__arrow:not(.ck-disabled):after{background-color:var(--ck-color-split-button-hover-border);content:"";height:100%;position:absolute;width:1px}.ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow:focus:after,.ck.ck-splitbutton:hover>.ck-splitbutton__arrow:focus:after{--ck-color-split-button-hover-border:var(--ck-color-focus-border)}[dir=ltr] .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):after,[dir=ltr] .ck.ck-splitbutton:hover>.ck-splitbutton__arrow:not(.ck-disabled):after{left:-1px}[dir=rtl] .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):after,[dir=rtl] .ck.ck-splitbutton:hover>.ck-splitbutton__arrow:not(.ck-disabled):after{right:-1px}.ck.ck-splitbutton.ck-splitbutton_open{border-radius:0}.ck-rounded-corners .ck.ck-splitbutton.ck-splitbutton_open,.ck.ck-splitbutton.ck-splitbutton_open.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck-rounded-corners .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__action,.ck.ck-splitbutton.ck-splitbutton_open.ck-rounded-corners>.ck-splitbutton__action{border-bottom-left-radius:0}.ck-rounded-corners .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow,.ck.ck-splitbutton.ck-splitbutton_open.ck-rounded-corners>.ck-splitbutton__arrow{border-bottom-right-radius:0}', "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-ui/theme/components/dropdown/splitbutton.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/dropdown/splitbutton.css", "webpack://./../ckeditor5-theme-lark/theme/mixins/_rounded.css"],
                    names: [],
                    mappings: "AAKA,mBAEC,iBAKD,CAHC,iDACC,qCACD,CCJD,MACC,gDAAyD,CACzD,4CACD,CAMC,oIAKE,gCAAiC,CADjC,6BASF,CAbA,oIAWE,+BAAgC,CADhC,4BAGF,CAEA,0CAGC,eAiBD,CApBA,oDAQE,+BAAgC,CADhC,4BAaF,CApBA,oDAcE,gCAAiC,CADjC,6BAOF,CAHC,8CACC,mCACD,CAKD,sDAEC,qBAAwB,CADxB,kBAED,CAQC,0KACC,wDACD,CAIA,8JAKC,0DAA2D,CAJ3D,UAAW,CAGX,WAAY,CAFZ,iBAAkB,CAClB,SAGD,CAGA,sIACC,iEACD,CAGC,kLACC,SACD,CAIA,kLACC,UACD,CAMF,uCCzFA,eDmGA,CAVA,qHCrFC,qCD+FD,CARE,qKACC,2BACD,CAEA,mKACC,4BACD",
                    sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-splitbutton {\n\t/* Enable font size inheritance, which allows fluid UI scaling. */\n\tfont-size: inherit;\n\n\t& .ck-splitbutton__action:focus {\n\t\tz-index: calc(var(--ck-z-default) + 1);\n\t}\n}\n\n", '/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../../mixins/_rounded.css";\n\n:root {\n\t--ck-color-split-button-hover-background: hsl(0, 0%, 92%);\n\t--ck-color-split-button-hover-border: hsl(0, 0%, 70%);\n}\n\n.ck.ck-splitbutton {\n\t/*\n\t * Note: ck-rounded and ck-dir mixins don\'t go together (because they both use @nest).\n\t */\n\t&:hover > .ck-splitbutton__action,\n\t&.ck-splitbutton_open > .ck-splitbutton__action {\n\t\t@nest [dir="ltr"] & {\n\t\t\t/* Don\'t round the action button on the right side */\n\t\t\tborder-top-right-radius: unset;\n\t\t\tborder-bottom-right-radius: unset;\n\t\t}\n\n\t\t@nest [dir="rtl"] & {\n\t\t\t/* Don\'t round the action button on the left side */\n\t\t\tborder-top-left-radius: unset;\n\t\t\tborder-bottom-left-radius: unset;\n\t\t}\n\t}\n\n\t& > .ck-splitbutton__arrow {\n\t\t/* It\'s a text-less button and since the icon is positioned absolutely in such situation,\n\t\tit must get some arbitrary min-width. */\n\t\tmin-width: unset;\n\n\t\t@nest [dir="ltr"] & {\n\t\t\t/* Don\'t round the arrow button on the left side */\n\t\t\tborder-top-left-radius: unset;\n\t\t\tborder-bottom-left-radius: unset;\n\t\t}\n\n\t\t@nest [dir="rtl"] & {\n\t\t\t/* Don\'t round the arrow button on the right side */\n\t\t\tborder-top-right-radius: unset;\n\t\t\tborder-bottom-right-radius: unset;\n\t\t}\n\n\t\t& svg {\n\t\t\twidth: var(--ck-dropdown-arrow-size);\n\t\t}\n\t}\n\n\t/* Make sure the divider stretches 100% height of the button\n\thttps://github.com/ckeditor/ckeditor5/issues/10936 */\n\t& > .ck-splitbutton__arrow:not(:focus) {\n\t\tborder-top-width: 0px;\n\t\tborder-bottom-width: 0px;\n\t}\n\n\t/* When the split button is "open" (the arrow is on) or being hovered, it should get some styling\n\tas a whole. The background of both buttons should stand out and there should be a visual\n\tseparation between both buttons. */\n\t&.ck-splitbutton_open,\n\t&:hover {\n\t\t/* When the split button hovered as a whole, not as individual buttons. */\n\t\t& > .ck-button:not(.ck-on):not(.ck-disabled):not(:hover) {\n\t\t\tbackground: var(--ck-color-split-button-hover-background);\n\t\t}\n\n\t\t/* Splitbutton separator needs to be set with the ::after pseudoselector\n\t\tto display properly the borders on focus */\n\t\t& > .ck-splitbutton__arrow:not(.ck-disabled)::after {\n\t\t\tcontent: \'\';\n\t\t\tposition: absolute;\n\t\t\twidth: 1px;\n\t\t\theight: 100%;\n\t\t\tbackground-color: var(--ck-color-split-button-hover-border);\n\t\t}\n\n\t\t/* Make sure the divider between the buttons looks fine when the button is focused */\n\t\t& > .ck-splitbutton__arrow:focus::after {\n\t\t\t--ck-color-split-button-hover-border: var(--ck-color-focus-border);\n\t\t}\n\n\t\t@nest [dir="ltr"] & {\n\t\t\t& > .ck-splitbutton__arrow:not(.ck-disabled)::after {\n\t\t\t\tleft: -1px;\n\t\t\t}\n\t\t}\n\n\t\t@nest [dir="rtl"] & {\n\t\t\t& > .ck-splitbutton__arrow:not(.ck-disabled)::after {\n\t\t\t\tright: -1px;\n\t\t\t}\n\t\t}\n\t}\n\n\t/* Don\'t round the bottom left and right corners of the buttons when "open"\n\thttps://github.com/ckeditor/ckeditor5/issues/816 */\n\t&.ck-splitbutton_open {\n\t\t@mixin ck-rounded-corners {\n\t\t\t& > .ck-splitbutton__action {\n\t\t\t\tborder-bottom-left-radius: 0;\n\t\t\t}\n\n\t\t\t& > .ck-splitbutton__arrow {\n\t\t\t\tborder-bottom-right-radius: 0;\n\t\t\t}\n\t\t}\n\t}\n}\n', "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t@nest .ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            7339: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ":root{--ck-toolbar-dropdown-max-width:60vw}.ck.ck-toolbar-dropdown>.ck-dropdown__panel{max-width:var(--ck-toolbar-dropdown-max-width);width:max-content}.ck.ck-toolbar-dropdown>.ck-dropdown__panel .ck-button:focus{z-index:calc(var(--ck-z-default) + 1)}.ck.ck-toolbar-dropdown .ck-toolbar{border:0}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-ui/theme/components/dropdown/toolbardropdown.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/dropdown/toolbardropdown.css"],
                    names: [],
                    mappings: "AAKA,MACC,oCACD,CAEA,4CAGC,8CAA+C,CAD/C,iBAQD,CAJE,6DACC,qCACD,CCZF,oCACC,QACD",
                    sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-toolbar-dropdown-max-width: 60vw;\n}\n\n.ck.ck-toolbar-dropdown > .ck-dropdown__panel {\n\t/* https://github.com/ckeditor/ckeditor5/issues/5586 */\n\twidth: max-content;\n\tmax-width: var(--ck-toolbar-dropdown-max-width);\n\n\t& .ck-button {\n\t\t&:focus {\n\t\t\tz-index: calc(var(--ck-z-default) + 1);\n\t\t}\n\t}\n}\n", "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-toolbar-dropdown .ck-toolbar {\n\tborder: 0;\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            9688: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ":root{--ck-color-editable-blur-selection:#d9d9d9}.ck.ck-editor__editable:not(.ck-editor__nested-editable){border-radius:0}.ck-rounded-corners .ck.ck-editor__editable:not(.ck-editor__nested-editable),.ck.ck-editor__editable.ck-rounded-corners:not(.ck-editor__nested-editable){border-radius:var(--ck-border-radius)}.ck.ck-editor__editable.ck-focused:not(.ck-editor__nested-editable){border:var(--ck-focus-ring);box-shadow:var(--ck-inner-shadow),0 0;outline:none}.ck.ck-editor__editable_inline{border:1px solid transparent;overflow:auto;padding:0 var(--ck-spacing-standard)}.ck.ck-editor__editable_inline[dir=ltr]{text-align:left}.ck.ck-editor__editable_inline[dir=rtl]{text-align:right}.ck.ck-editor__editable_inline>:first-child{margin-top:var(--ck-spacing-large)}.ck.ck-editor__editable_inline>:last-child{margin-bottom:var(--ck-spacing-large)}.ck.ck-editor__editable_inline.ck-blurred ::selection{background:var(--ck-color-editable-blur-selection)}.ck.ck-balloon-panel.ck-toolbar-container[class*=arrow_n]:after{border-bottom-color:var(--ck-color-panel-background)}.ck.ck-balloon-panel.ck-toolbar-container[class*=arrow_s]:after{border-top-color:var(--ck-color-panel-background)}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/editorui/editorui.css", "webpack://./../ckeditor5-theme-lark/theme/mixins/_rounded.css", "webpack://./../ckeditor5-theme-lark/theme/mixins/_focus.css", "webpack://./../ckeditor5-theme-lark/theme/mixins/_shadow.css"],
                    names: [],
                    mappings: "AAWA,MACC,0CACD,CAEA,yDCJC,eDWD,CAPA,yJCAE,qCDOF,CAJC,oEEPA,2BAA2B,CCF3B,qCAA8B,CDC9B,YFWA,CAGD,+BAGC,4BAA6B,CAF7B,aAAc,CACd,oCA6BD,CA1BC,wCACC,eACD,CAEA,wCACC,gBACD,CAGA,4CACC,kCACD,CAGA,2CAKC,qCACD,CAGA,sDACC,kDACD,CAKA,gEACC,oDACD,CAIA,gEACC,iDACD",
                    sourcesContent: ['/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../../mixins/_rounded.css";\n@import "../../../mixins/_disabled.css";\n@import "../../../mixins/_shadow.css";\n@import "../../../mixins/_focus.css";\n@import "../../mixins/_button.css";\n\n:root {\n\t--ck-color-editable-blur-selection: hsl(0, 0%, 85%);\n}\n\n.ck.ck-editor__editable:not(.ck-editor__nested-editable) {\n\t@mixin ck-rounded-corners;\n\n\t&.ck-focused {\n\t\t@mixin ck-focus-ring;\n\t\t@mixin ck-box-shadow var(--ck-inner-shadow);\n\t}\n}\n\n.ck.ck-editor__editable_inline {\n\toverflow: auto;\n\tpadding: 0 var(--ck-spacing-standard);\n\tborder: 1px solid transparent;\n\n\t&[dir="ltr"] {\n\t\ttext-align: left;\n\t}\n\n\t&[dir="rtl"] {\n\t\ttext-align: right;\n\t}\n\n\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/116 */\n\t& > *:first-child {\n\t\tmargin-top: var(--ck-spacing-large);\n\t}\n\n\t/* https://github.com/ckeditor/ckeditor5/issues/847 */\n\t& > *:last-child {\n\t\t/*\n\t\t * This value should match with the default margins of the block elements (like .media or .image)\n\t\t * to avoid a content jumping when the fake selection container shows up (See https://github.com/ckeditor/ckeditor5/issues/9825).\n\t\t */\n\t\tmargin-bottom: var(--ck-spacing-large);\n\t}\n\n\t/* https://github.com/ckeditor/ckeditor5/issues/6517 */\n\t&.ck-blurred ::selection {\n\t\tbackground: var(--ck-color-editable-blur-selection);\n\t}\n}\n\n/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/111 */\n.ck.ck-balloon-panel.ck-toolbar-container[class*="arrow_n"] {\n\t&::after {\n\t\tborder-bottom-color: var(--ck-color-panel-background);\n\t}\n}\n\n.ck.ck-balloon-panel.ck-toolbar-container[class*="arrow_s"] {\n\t&::after {\n\t\tborder-top-color: var(--ck-color-panel-background);\n\t}\n}\n', "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t@nest .ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n", "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A visual style of focused element's border.\n */\n@define-mixin ck-focus-ring {\n\t/* Disable native outline. */\n\toutline: none;\n\tborder: var(--ck-focus-ring)\n}\n", "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A helper to combine multiple shadows.\n */\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\n\tbox-shadow: $shadowA, $shadowB;\n}\n\n/**\n * Gives an element a drop shadow so it looks like a floating panel.\n */\n@define-mixin ck-drop-shadow {\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            8847: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ".ck.ck-form__header{align-items:center;display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between}:root{--ck-form-header-height:38px}.ck.ck-form__header{border-bottom:1px solid var(--ck-color-base-border);height:var(--ck-form-header-height);line-height:var(--ck-form-header-height);padding:var(--ck-spacing-small) var(--ck-spacing-large)}.ck.ck-form__header .ck-form__header__label{font-weight:700}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-ui/theme/components/formheader/formheader.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/formheader/formheader.css"],
                    names: [],
                    mappings: "AAKA,oBAIC,kBAAmB,CAHnB,YAAa,CACb,kBAAmB,CACnB,gBAAiB,CAEjB,6BACD,CCNA,MACC,4BACD,CAEA,oBAIC,mDAAoD,CAFpD,mCAAoC,CACpC,wCAAyC,CAFzC,uDAQD,CAHC,4CACC,eACD",
                    sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-form__header {\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: nowrap;\n\talign-items: center;\n\tjustify-content: space-between;\n}\n", "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-form-header-height: 38px;\n}\n\n.ck.ck-form__header {\n\tpadding: var(--ck-spacing-small) var(--ck-spacing-large);\n\theight: var(--ck-form-header-height);\n\tline-height: var(--ck-form-header-height);\n\tborder-bottom: 1px solid var(--ck-color-base-border);\n\n\t& .ck-form__header__label {\n\t\tfont-weight: bold;\n\t}\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            6574: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ".ck.ck-icon{vertical-align:middle}:root{--ck-icon-size:calc(var(--ck-line-height-base)*var(--ck-font-size-normal))}.ck.ck-icon{font-size:.8333350694em;height:var(--ck-icon-size);width:var(--ck-icon-size);will-change:transform}.ck.ck-icon,.ck.ck-icon *{cursor:inherit}.ck.ck-icon.ck-icon_inherit-color,.ck.ck-icon.ck-icon_inherit-color *{color:inherit}.ck.ck-icon.ck-icon_inherit-color :not([fill]){fill:currentColor}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-ui/theme/components/icon/icon.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/icon/icon.css"],
                    names: [],
                    mappings: "AAKA,YACC,qBACD,CCFA,MACC,0EACD,CAEA,YAKC,uBAAwB,CAHxB,0BAA2B,CAD3B,yBAA0B,CAU1B,qBAoBD,CAlBC,0BALA,cAQA,CAMC,sEACC,aAMD,CAJC,+CAEC,iBACD",
                    sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-icon {\n\tvertical-align: middle;\n}\n", '/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-icon-size: calc(var(--ck-line-height-base) * var(--ck-font-size-normal));\n}\n\n.ck.ck-icon {\n\twidth: var(--ck-icon-size);\n\theight: var(--ck-icon-size);\n\n\t/* Multiplied by the height of the line in "px" should give SVG "viewport" dimensions */\n\tfont-size: .8333350694em;\n\n\t/* Inherit cursor style (#5). */\n\tcursor: inherit;\n\n\t/* This will prevent blurry icons on Firefox. See #340. */\n\twill-change: transform;\n\n\t& * {\n\t\t/* Inherit cursor style (#5). */\n\t\tcursor: inherit;\n\t}\n\n\t/* Allows dynamic coloring of an icon by inheriting its color from the parent. */\n\t&.ck-icon_inherit-color {\n\t\tcolor: inherit;\n\n\t\t& * {\n\t\t\tcolor: inherit;\n\n\t\t\t&:not([fill]) {\n\t\t\t\t/* Needed by FF. */\n\t\t\t\tfill: currentColor;\n\t\t\t}\n\t\t}\n\t}\n}\n'],
                    sourceRoot: ""
                }]);
                const a = s
            },
            4879: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ":root{--ck-input-width:18em;--ck-input-text-width:var(--ck-input-width)}.ck.ck-input{border-radius:0}.ck-rounded-corners .ck.ck-input,.ck.ck-input.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-input{background:var(--ck-color-input-background);border:1px solid var(--ck-color-input-border);min-height:var(--ck-ui-component-min-height);min-width:var(--ck-input-width);padding:var(--ck-spacing-extra-tiny) var(--ck-spacing-medium);transition:box-shadow .1s ease-in-out,border .1s ease-in-out}.ck.ck-input:focus{border:var(--ck-focus-ring);box-shadow:var(--ck-focus-outer-shadow),0 0;outline:none}.ck.ck-input[readonly]{background:var(--ck-color-input-disabled-background);border:1px solid var(--ck-color-input-disabled-border);color:var(--ck-color-input-disabled-text)}.ck.ck-input[readonly]:focus{box-shadow:var(--ck-focus-disabled-outer-shadow),0 0}.ck.ck-input.ck-error{animation:ck-input-shake .3s ease both;border-color:var(--ck-color-input-error-border)}.ck.ck-input.ck-error:focus{box-shadow:var(--ck-focus-error-outer-shadow),0 0}@keyframes ck-input-shake{20%{transform:translateX(-2px)}40%{transform:translateX(2px)}60%{transform:translateX(-1px)}80%{transform:translateX(1px)}}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/input/input.css", "webpack://./../ckeditor5-theme-lark/theme/mixins/_rounded.css", "webpack://./../ckeditor5-theme-lark/theme/mixins/_focus.css", "webpack://./../ckeditor5-theme-lark/theme/mixins/_shadow.css"],
                    names: [],
                    mappings: "AASA,MACC,qBAAsB,CAGtB,2CACD,CAEA,aCLC,eD2CD,CAtCA,iECDE,qCDuCF,CAtCA,aAGC,2CAA4C,CAC5C,6CAA8C,CAK9C,4CAA6C,CAH7C,+BAAgC,CADhC,6DAA8D,CAO9D,4DA0BD,CAxBC,mBEnBA,2BAA2B,CCF3B,2CAA8B,CDC9B,YFuBA,CAEA,uBAEC,oDAAqD,CADrD,sDAAuD,CAEvD,yCAMD,CAJC,6BG/BD,oDHkCC,CAGD,sBAEC,sCAAuC,CADvC,+CAMD,CAHC,4BGzCD,iDH2CC,CAIF,0BACC,IACC,0BACD,CAEA,IACC,yBACD,CAEA,IACC,0BACD,CAEA,IACC,yBACD,CACD",
                    sourcesContent: ['/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../../mixins/_rounded.css";\n@import "../../../mixins/_focus.css";\n@import "../../../mixins/_shadow.css";\n\n:root {\n\t--ck-input-width: 18em;\n\n\t/* Backward compatibility. */\n\t--ck-input-text-width: var(--ck-input-width);\n}\n\n.ck.ck-input {\n\t@mixin ck-rounded-corners;\n\n\tbackground: var(--ck-color-input-background);\n\tborder: 1px solid var(--ck-color-input-border);\n\tpadding: var(--ck-spacing-extra-tiny) var(--ck-spacing-medium);\n\tmin-width: var(--ck-input-width);\n\n\t/* This is important to stay of the same height as surrounding buttons */\n\tmin-height: var(--ck-ui-component-min-height);\n\n\t/* Apply some smooth transition to the box-shadow and border. */\n\ttransition: box-shadow .1s ease-in-out, border .1s ease-in-out;\n\n\t&:focus {\n\t\t@mixin ck-focus-ring;\n\t\t@mixin ck-box-shadow var(--ck-focus-outer-shadow);\n\t}\n\n\t&[readonly] {\n\t\tborder: 1px solid var(--ck-color-input-disabled-border);\n\t\tbackground: var(--ck-color-input-disabled-background);\n\t\tcolor: var(--ck-color-input-disabled-text);\n\n\t\t&:focus {\n\t\t\t/* The read-only input should have a slightly less visible shadow when focused. */\n\t\t\t@mixin ck-box-shadow var(--ck-focus-disabled-outer-shadow);\n\t\t}\n\t}\n\n\t&.ck-error {\n\t\tborder-color: var(--ck-color-input-error-border);\n\t\tanimation: ck-input-shake .3s ease both;\n\n\t\t&:focus {\n\t\t\t@mixin ck-box-shadow var(--ck-focus-error-outer-shadow);\n\t\t}\n\t}\n}\n\n@keyframes ck-input-shake {\n\t20% {\n\t\ttransform: translateX(-2px);\n\t}\n\n\t40% {\n\t\ttransform: translateX(2px);\n\t}\n\n\t60% {\n\t\ttransform: translateX(-1px);\n\t}\n\n\t80% {\n\t\ttransform: translateX(1px);\n\t}\n}\n', "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t@nest .ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n", "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A visual style of focused element's border.\n */\n@define-mixin ck-focus-ring {\n\t/* Disable native outline. */\n\toutline: none;\n\tborder: var(--ck-focus-ring)\n}\n", "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A helper to combine multiple shadows.\n */\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\n\tbox-shadow: $shadowA, $shadowB;\n}\n\n/**\n * Gives an element a drop shadow so it looks like a floating panel.\n */\n@define-mixin ck-drop-shadow {\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            3662: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ".ck.ck-label{display:block}.ck.ck-voice-label{display:none}.ck.ck-label{font-weight:700}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-ui/theme/components/label/label.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/label/label.css"],
                    names: [],
                    mappings: "AAKA,aACC,aACD,CAEA,mBACC,YACD,CCNA,aACC,eACD",
                    sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-label {\n\tdisplay: block;\n}\n\n.ck.ck-voice-label {\n\tdisplay: none;\n}\n", "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-label {\n\tfont-weight: bold;\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            2577: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ".ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper{display:flex;position:relative}.ck.ck-labeled-field-view .ck.ck-label{display:block;position:absolute}:root{--ck-labeled-field-view-transition:.1s cubic-bezier(0,0,0.24,0.95);--ck-labeled-field-empty-unfocused-max-width:100% - 2 * var(--ck-spacing-medium);--ck-labeled-field-label-default-position-x:var(--ck-spacing-medium);--ck-labeled-field-label-default-position-y:calc(var(--ck-font-size-base)*0.6);--ck-color-labeled-field-label-background:var(--ck-color-base-background)}.ck.ck-labeled-field-view{border-radius:0}.ck-rounded-corners .ck.ck-labeled-field-view,.ck.ck-labeled-field-view.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper{width:100%}.ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{top:0}[dir=ltr] .ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{left:0}[dir=rtl] .ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{right:0}.ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{background:var(--ck-color-labeled-field-label-background);font-weight:400;line-height:normal;max-width:100%;overflow:hidden;padding:0 calc(var(--ck-font-size-tiny)*.5);pointer-events:none;text-overflow:ellipsis;transform:translate(var(--ck-spacing-medium),-6px) scale(.75);transform-origin:0 0;transition:transform var(--ck-labeled-field-view-transition),padding var(--ck-labeled-field-view-transition),background var(--ck-labeled-field-view-transition)}.ck.ck-labeled-field-view.ck-error .ck-input:not([readonly])+.ck.ck-label,.ck.ck-labeled-field-view.ck-error>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{color:var(--ck-color-base-error)}.ck.ck-labeled-field-view .ck-labeled-field-view__status{font-size:var(--ck-font-size-small);margin-top:var(--ck-spacing-small);white-space:normal}.ck.ck-labeled-field-view .ck-labeled-field-view__status.ck-labeled-field-view__status_error{color:var(--ck-color-base-error)}.ck.ck-labeled-field-view.ck-disabled>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label,.ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{color:var(--ck-color-input-disabled-text)}[dir=ltr] .ck.ck-labeled-field-view.ck-disabled.ck-labeled-field-view_empty>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label,[dir=ltr] .ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{transform:translate(var(--ck-labeled-field-label-default-position-x),var(--ck-labeled-field-label-default-position-y)) scale(1)}[dir=rtl] .ck.ck-labeled-field-view.ck-disabled.ck-labeled-field-view_empty>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label,[dir=rtl] .ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{transform:translate(calc(var(--ck-labeled-field-label-default-position-x)*-1),var(--ck-labeled-field-label-default-position-y)) scale(1)}.ck.ck-labeled-field-view.ck-disabled.ck-labeled-field-view_empty>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label,.ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{background:transparent;max-width:calc(var(--ck-labeled-field-empty-unfocused-max-width));padding:0}.ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck-dropdown>.ck.ck-button{background:transparent}.ck.ck-labeled-field-view.ck-labeled-field-view_empty>.ck.ck-labeled-field-view__input-wrapper>.ck-dropdown>.ck-button>.ck-button__label{opacity:0}.ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder)>.ck.ck-labeled-field-view__input-wrapper>.ck-dropdown+.ck-label{max-width:calc(var(--ck-labeled-field-empty-unfocused-max-width) - var(--ck-dropdown-arrow-size) - var(--ck-spacing-standard))}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-ui/theme/components/labeledfield/labeledfieldview.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/labeledfield/labeledfieldview.css", "webpack://./../ckeditor5-theme-lark/theme/mixins/_rounded.css"],
                    names: [],
                    mappings: "AAMC,mEACC,YAAa,CACb,iBACD,CAEA,uCACC,aAAc,CACd,iBACD,CCND,MACC,kEAAsE,CACtE,gFAAiF,CACjF,oEAAqE,CACrE,8EAAiF,CACjF,yEACD,CAEA,0BCLC,eD8GD,CAzGA,2FCDE,qCD0GF,CAtGC,mEACC,UAmCD,CAjCC,gFACC,KA+BD,CAhCA,0FAIE,MA4BF,CAhCA,0FAQE,OAwBF,CAhCA,gFAiBC,yDAA0D,CAG1D,eAAmB,CADnB,kBAAoB,CAOpB,cAAe,CAFf,eAAgB,CANhB,2CAA8C,CAP9C,mBAAoB,CAYpB,sBAAuB,CARvB,6DAA+D,CAH/D,oBAAqB,CAgBrB,+JAID,CAQA,mKACC,gCACD,CAGD,yDACC,mCAAoC,CACpC,kCAAmC,CAInC,kBAKD,CAHC,6FACC,gCACD,CAID,4OAEC,yCACD,CAIA,oUAGE,+HAYF,CAfA,oUAOE,wIAQF,CAfA,gTAaC,sBAAuB,CAFvB,iEAAkE,CAGlE,SACD,CAKA,8FACC,sBACD,CAGA,yIACC,SACD,CAGA,kMACC,8HACD",
                    sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-labeled-field-view {\n\t& > .ck.ck-labeled-field-view__input-wrapper {\n\t\tdisplay: flex;\n\t\tposition: relative;\n\t}\n\n\t& .ck.ck-label {\n\t\tdisplay: block;\n\t\tposition: absolute;\n\t}\n}\n", '/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n@import "../../../mixins/_rounded.css";\n\n:root {\n\t--ck-labeled-field-view-transition: .1s cubic-bezier(0, 0, 0.24, 0.95);\n\t--ck-labeled-field-empty-unfocused-max-width: 100% - 2 * var(--ck-spacing-medium);\n\t--ck-labeled-field-label-default-position-x: var(--ck-spacing-medium);\n\t--ck-labeled-field-label-default-position-y: calc(0.6 * var(--ck-font-size-base));\n\t--ck-color-labeled-field-label-background: var(--ck-color-base-background);\n}\n\n.ck.ck-labeled-field-view {\n\t@mixin ck-rounded-corners;\n\n\t& > .ck.ck-labeled-field-view__input-wrapper {\n\t\twidth: 100%;\n\n\t\t& > .ck.ck-label {\n\t\t\ttop: 0px;\n\n\t\t\t@mixin ck-dir ltr {\n\t\t\t\tleft: 0px;\n\t\t\t}\n\n\t\t\t@mixin ck-dir rtl {\n\t\t\t\tright: 0px;\n\t\t\t}\n\n\t\t\tpointer-events: none;\n\t\t\ttransform-origin: 0 0;\n\n\t\t\t/* By default, display the label scaled down above the field. */\n\t\t\ttransform: translate(var(--ck-spacing-medium), -6px) scale(.75);\n\n\t\t\tbackground: var(--ck-color-labeled-field-label-background);\n\t\t\tpadding: 0 calc(.5 * var(--ck-font-size-tiny));\n\t\t\tline-height: initial;\n\t\t\tfont-weight: normal;\n\n\t\t\t/* Prevent overflow when the label is longer than the input */\n\t\t\ttext-overflow: ellipsis;\n\t\t\toverflow: hidden;\n\n\t\t\tmax-width: 100%;\n\n\t\t\ttransition:\n\t\t\t\ttransform var(--ck-labeled-field-view-transition),\n\t\t\t\tpadding var(--ck-labeled-field-view-transition),\n\t\t\t\tbackground var(--ck-labeled-field-view-transition);\n\t\t}\n\t}\n\n\t&.ck-error {\n\t\t& > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label {\n\t\t\tcolor: var(--ck-color-base-error);\n\t\t}\n\n\t\t& .ck-input:not([readonly]) + .ck.ck-label {\n\t\t\tcolor: var(--ck-color-base-error);\n\t\t}\n\t}\n\n\t& .ck-labeled-field-view__status {\n\t\tfont-size: var(--ck-font-size-small);\n\t\tmargin-top: var(--ck-spacing-small);\n\n\t\t/* Let the info wrap to the next line to avoid stretching the layout horizontally.\n\t\tThe status could be very long. */\n\t\twhite-space: normal;\n\n\t\t&.ck-labeled-field-view__status_error {\n\t\t\tcolor: var(--ck-color-base-error);\n\t\t}\n\t}\n\n\t/* Disabled fields and fields that have no focus should fade out. */\n\t&.ck-disabled > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label,\n\t&.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused) > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label {\n\t\tcolor: var(--ck-color-input-disabled-text);\n\t}\n\n\t/* Fields that are disabled or not focused and without a placeholder should have full-sized labels. */\n\t/* stylelint-disable-next-line no-descending-specificity */\n\t&.ck-disabled.ck-labeled-field-view_empty > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label,\n\t&.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder) > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label {\n\t\t@mixin ck-dir ltr {\n\t\t\ttransform: translate(var(--ck-labeled-field-label-default-position-x), var(--ck-labeled-field-label-default-position-y)) scale(1);\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\ttransform: translate(calc(-1 * var(--ck-labeled-field-label-default-position-x)), var(--ck-labeled-field-label-default-position-y)) scale(1);\n\t\t}\n\n\t\t/* Compensate for the default translate position. */\n\t\tmax-width: calc(var(--ck-labeled-field-empty-unfocused-max-width));\n\n\t\tbackground: transparent;\n\t\tpadding: 0;\n\t}\n\n\t/*------ DropdownView integration ----------------------------------------------------------------------------------- */\n\n\t/* Make sure dropdown\' background color in any of dropdown\'s state does not collide with labeled field. */\n\t& > .ck.ck-labeled-field-view__input-wrapper > .ck-dropdown > .ck.ck-button {\n\t\tbackground: transparent;\n\t}\n\n\t/* When the dropdown is "empty", the labeled field label replaces its label. */\n\t&.ck-labeled-field-view_empty > .ck.ck-labeled-field-view__input-wrapper > .ck-dropdown > .ck-button > .ck-button__label {\n\t\topacity: 0;\n\t}\n\n\t/* Make sure the label of the empty, unfocused input does not cover the dropdown arrow. */\n\t&.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder) > .ck.ck-labeled-field-view__input-wrapper > .ck-dropdown + .ck-label {\n\t\tmax-width: calc(var(--ck-labeled-field-empty-unfocused-max-width) - var(--ck-dropdown-arrow-size) - var(--ck-spacing-standard));\n\t}\n}\n', "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t@nest .ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            1046: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ".ck.ck-list{display:flex;flex-direction:column;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.ck.ck-list .ck-list__item,.ck.ck-list .ck-list__separator{display:block}.ck.ck-list .ck-list__item>:focus{position:relative;z-index:var(--ck-z-default)}.ck.ck-list{border-radius:0}.ck-rounded-corners .ck.ck-list,.ck.ck-list.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-list{background:var(--ck-color-list-background);list-style-type:none}.ck.ck-list__item{cursor:default;min-width:12em}.ck.ck-list__item .ck-button{border-radius:0;min-height:unset;padding:calc(var(--ck-line-height-base)*.2*var(--ck-font-size-base)) calc(var(--ck-line-height-base)*.4*var(--ck-font-size-base));text-align:left;width:100%}.ck.ck-list__item .ck-button .ck-button__label{line-height:calc(var(--ck-line-height-base)*1.2*var(--ck-font-size-base))}.ck.ck-list__item .ck-button:active{box-shadow:none}.ck.ck-list__item .ck-button.ck-on{background:var(--ck-color-list-button-on-background);color:var(--ck-color-list-button-on-text)}.ck.ck-list__item .ck-button.ck-on:active{box-shadow:none}.ck.ck-list__item .ck-button.ck-on:hover:not(.ck-disabled){background:var(--ck-color-list-button-on-background-focus)}.ck.ck-list__item .ck-button.ck-on:focus:not(.ck-switchbutton):not(.ck-disabled){border-color:var(--ck-color-base-background)}.ck.ck-list__item .ck-button:hover:not(.ck-disabled){background:var(--ck-color-list-button-hover-background)}.ck.ck-list__item .ck-switchbutton.ck-on{background:var(--ck-color-list-background);color:inherit}.ck.ck-list__item .ck-switchbutton.ck-on:hover:not(.ck-disabled){background:var(--ck-color-list-button-hover-background);color:inherit}.ck.ck-list__separator{background:var(--ck-color-base-border);height:1px;width:100%}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-ui/theme/components/list/list.css", "webpack://./../ckeditor5-ui/theme/mixins/_unselectable.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/list/list.css", "webpack://./../ckeditor5-theme-lark/theme/mixins/_rounded.css"],
                    names: [],
                    mappings: "AAOA,YAGC,YAAa,CACb,qBAAsB,CCFtB,qBAAsB,CACtB,wBAAyB,CACzB,oBAAqB,CACrB,gBDaD,CAZC,2DAEC,aACD,CAKA,kCACC,iBAAkB,CAClB,2BACD,CEfD,YCEC,eDGD,CALA,+DCME,qCDDF,CALA,YAIC,0CAA2C,CAD3C,oBAED,CAEA,kBACC,cAAe,CACf,cA2DD,CAzDC,6BAIC,eAAgB,CAHhB,gBAAiB,CAQjB,iIAEiE,CARjE,eAAgB,CADhB,UAwCD,CA7BC,+CAEC,yEACD,CAEA,oCACC,eACD,CAEA,mCACC,oDAAqD,CACrD,yCAaD,CAXC,0CACC,eACD,CAEA,2DACC,0DACD,CAEA,iFACC,4CACD,CAGD,qDACC,uDACD,CAMA,yCACC,0CAA2C,CAC3C,aAMD,CAJC,iEACC,uDAAwD,CACxD,aACD,CAKH,uBAGC,sCAAuC,CAFvC,UAAW,CACX,UAED",
                    sourcesContent: ['/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../mixins/_unselectable.css";\n\n.ck.ck-list {\n\t@mixin ck-unselectable;\n\n\tdisplay: flex;\n\tflex-direction: column;\n\n\t& .ck-list__item,\n\t& .ck-list__separator {\n\t\tdisplay: block;\n\t}\n\n\t/* Make sure that whatever child of the list item gets focus, it remains on the\n\ttop. Thanks to that, styles like box-shadow, outline, etc. are not masked by\n\tadjacent list items. */\n\t& .ck-list__item > *:focus {\n\t\tposition: relative;\n\t\tz-index: var(--ck-z-default);\n\t}\n}\n', "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Makes element unselectable.\n */\n@define-mixin ck-unselectable {\n\t-moz-user-select: none;\n\t-webkit-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none\n}\n", '/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../../mixins/_disabled.css";\n@import "../../../mixins/_rounded.css";\n@import "../../../mixins/_shadow.css";\n\n.ck.ck-list {\n\t@mixin ck-rounded-corners;\n\n\tlist-style-type: none;\n\tbackground: var(--ck-color-list-background);\n}\n\n.ck.ck-list__item {\n\tcursor: default;\n\tmin-width: 12em;\n\n\t& .ck-button {\n\t\tmin-height: unset;\n\t\twidth: 100%;\n\t\ttext-align: left;\n\t\tborder-radius: 0;\n\n\t\t/* List items should have the same height. Use absolute units to make sure it is so\n\t\t   because e.g. different heading styles may have different height\n\t\t   https://github.com/ckeditor/ckeditor5-heading/issues/63 */\n\t\tpadding:\n\t\t\tcalc(.2 * var(--ck-line-height-base) * var(--ck-font-size-base))\n\t\t\tcalc(.4 * var(--ck-line-height-base) * var(--ck-font-size-base));\n\n\t\t& .ck-button__label {\n\t\t\t/* https://github.com/ckeditor/ckeditor5-heading/issues/63 */\n\t\t\tline-height: calc(1.2 * var(--ck-line-height-base) * var(--ck-font-size-base));\n\t\t}\n\n\t\t&:active {\n\t\t\tbox-shadow: none;\n\t\t}\n\n\t\t&.ck-on {\n\t\t\tbackground: var(--ck-color-list-button-on-background);\n\t\t\tcolor: var(--ck-color-list-button-on-text);\n\n\t\t\t&:active {\n\t\t\t\tbox-shadow: none;\n\t\t\t}\n\n\t\t\t&:hover:not(.ck-disabled) {\n\t\t\t\tbackground: var(--ck-color-list-button-on-background-focus);\n\t\t\t}\n\n\t\t\t&:focus:not(.ck-switchbutton):not(.ck-disabled) {\n\t\t\t\tborder-color: var(--ck-color-base-background);\n\t\t\t}\n\t\t}\n\n\t\t&:hover:not(.ck-disabled) {\n\t\t\tbackground: var(--ck-color-list-button-hover-background);\n\t\t}\n\t}\n\n\t/* It\'s unnecessary to change the background/text of a switch toggle; it has different ways\n\tof conveying its state (like the switcher) */\n\t& .ck-switchbutton {\n\t\t&.ck-on {\n\t\t\tbackground: var(--ck-color-list-background);\n\t\t\tcolor: inherit;\n\n\t\t\t&:hover:not(.ck-disabled) {\n\t\t\t\tbackground: var(--ck-color-list-button-hover-background);\n\t\t\t\tcolor: inherit;\n\t\t\t}\n\t\t}\n\t}\n}\n\n.ck.ck-list__separator {\n\theight: 1px;\n\twidth: 100%;\n\tbackground: var(--ck-color-base-border);\n}\n', "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t@nest .ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            8793: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ':root{--ck-balloon-panel-arrow-z-index:calc(var(--ck-z-default) - 3)}.ck.ck-balloon-panel{display:none;position:absolute;z-index:var(--ck-z-modal)}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:after,.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:before{content:"";position:absolute}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:before{z-index:var(--ck-balloon-panel-arrow-z-index)}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:after{z-index:calc(var(--ck-balloon-panel-arrow-z-index) + 1)}.ck.ck-balloon-panel[class*=arrow_n]:before{z-index:var(--ck-balloon-panel-arrow-z-index)}.ck.ck-balloon-panel[class*=arrow_n]:after{z-index:calc(var(--ck-balloon-panel-arrow-z-index) + 1)}.ck.ck-balloon-panel[class*=arrow_s]:before{z-index:var(--ck-balloon-panel-arrow-z-index)}.ck.ck-balloon-panel[class*=arrow_s]:after{z-index:calc(var(--ck-balloon-panel-arrow-z-index) + 1)}.ck.ck-balloon-panel.ck-balloon-panel_visible{display:block}:root{--ck-balloon-border-width:1px;--ck-balloon-arrow-offset:2px;--ck-balloon-arrow-height:10px;--ck-balloon-arrow-half-width:8px;--ck-balloon-arrow-drop-shadow:0 2px 2px var(--ck-color-shadow-drop)}.ck.ck-balloon-panel{border-radius:0}.ck-rounded-corners .ck.ck-balloon-panel,.ck.ck-balloon-panel.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-balloon-panel{background:var(--ck-color-panel-background);border:var(--ck-balloon-border-width) solid var(--ck-color-panel-border);box-shadow:var(--ck-drop-shadow),0 0;min-height:15px}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:after,.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:before{border-style:solid;height:0;width:0}.ck.ck-balloon-panel[class*=arrow_n]:after,.ck.ck-balloon-panel[class*=arrow_n]:before{border-width:0 var(--ck-balloon-arrow-half-width) var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width)}.ck.ck-balloon-panel[class*=arrow_n]:before{border-color:transparent transparent var(--ck-color-panel-border) transparent;margin-top:calc(var(--ck-balloon-border-width)*-1)}.ck.ck-balloon-panel[class*=arrow_n]:after{border-color:transparent transparent var(--ck-color-panel-background) transparent;margin-top:calc(var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width))}.ck.ck-balloon-panel[class*=arrow_s]:after,.ck.ck-balloon-panel[class*=arrow_s]:before{border-width:var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width) 0 var(--ck-balloon-arrow-half-width)}.ck.ck-balloon-panel[class*=arrow_s]:before{border-color:var(--ck-color-panel-border) transparent transparent;filter:drop-shadow(var(--ck-balloon-arrow-drop-shadow));margin-bottom:calc(var(--ck-balloon-border-width)*-1)}.ck.ck-balloon-panel[class*=arrow_s]:after{border-color:var(--ck-color-panel-background) transparent transparent transparent;margin-bottom:calc(var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width))}.ck.ck-balloon-panel[class*=arrow_e]:after,.ck.ck-balloon-panel[class*=arrow_e]:before{border-width:var(--ck-balloon-arrow-half-width) 0 var(--ck-balloon-arrow-half-width) var(--ck-balloon-arrow-height)}.ck.ck-balloon-panel[class*=arrow_e]:before{border-color:transparent transparent transparent var(--ck-color-panel-border);margin-right:calc(var(--ck-balloon-border-width)*-1)}.ck.ck-balloon-panel[class*=arrow_e]:after{border-color:transparent transparent transparent var(--ck-color-panel-background);margin-right:calc(var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width))}.ck.ck-balloon-panel[class*=arrow_w]:after,.ck.ck-balloon-panel[class*=arrow_w]:before{border-width:var(--ck-balloon-arrow-half-width) var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width) 0}.ck.ck-balloon-panel[class*=arrow_w]:before{border-color:transparent var(--ck-color-panel-border) transparent transparent;margin-left:calc(var(--ck-balloon-border-width)*-1)}.ck.ck-balloon-panel[class*=arrow_w]:after{border-color:transparent var(--ck-color-panel-background) transparent transparent;margin-left:calc(var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width))}.ck.ck-balloon-panel.ck-balloon-panel_arrow_n:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_n:before{left:50%;margin-left:calc(var(--ck-balloon-arrow-half-width)*-1);top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_nw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_nw:before{left:calc(var(--ck-balloon-arrow-half-width)*2);top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_ne:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_ne:before{right:calc(var(--ck-balloon-arrow-half-width)*2);top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_s:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_s:before{bottom:calc(var(--ck-balloon-arrow-height)*-1);left:50%;margin-left:calc(var(--ck-balloon-arrow-half-width)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_sw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_sw:before{bottom:calc(var(--ck-balloon-arrow-height)*-1);left:calc(var(--ck-balloon-arrow-half-width)*2)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_se:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_se:before{bottom:calc(var(--ck-balloon-arrow-height)*-1);right:calc(var(--ck-balloon-arrow-half-width)*2)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_sme:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_sme:before{bottom:calc(var(--ck-balloon-arrow-height)*-1);margin-right:calc(var(--ck-balloon-arrow-half-width)*2);right:25%}.ck.ck-balloon-panel.ck-balloon-panel_arrow_smw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_smw:before{bottom:calc(var(--ck-balloon-arrow-height)*-1);left:25%;margin-left:calc(var(--ck-balloon-arrow-half-width)*2)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_nme:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_nme:before{margin-right:calc(var(--ck-balloon-arrow-half-width)*2);right:25%;top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_nmw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_nmw:before{left:25%;margin-left:calc(var(--ck-balloon-arrow-half-width)*2);top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_e:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_e:before{margin-top:calc(var(--ck-balloon-arrow-half-width)*-1);right:calc(var(--ck-balloon-arrow-height)*-1);top:50%}.ck.ck-balloon-panel.ck-balloon-panel_arrow_w:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_w:before{left:calc(var(--ck-balloon-arrow-height)*-1);margin-top:calc(var(--ck-balloon-arrow-half-width)*-1);top:50%}', "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-ui/theme/components/panel/balloonpanel.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/panel/balloonpanel.css", "webpack://./../ckeditor5-theme-lark/theme/mixins/_rounded.css", "webpack://./../ckeditor5-theme-lark/theme/mixins/_shadow.css"],
                    names: [],
                    mappings: "AAKA,MAEC,8DACD,CAEA,qBACC,YAAa,CACb,iBAAkB,CAElB,yBAyCD,CAtCE,+GAEC,UAAW,CACX,iBACD,CAEA,wDACC,6CACD,CAEA,uDACC,uDACD,CAIA,4CACC,6CACD,CAEA,2CACC,uDACD,CAIA,4CACC,6CACD,CAEA,2CACC,uDACD,CAGD,8CACC,aACD,CC9CD,MACC,6BAA8B,CAC9B,6BAA8B,CAC9B,8BAA+B,CAC/B,iCAAkC,CAClC,oEACD,CAEA,qBCLC,eDmMD,CA9LA,iFCDE,qCD+LF,CA9LA,qBAMC,2CAA4C,CAC5C,wEAAyE,CEdzE,oCAA8B,CFW9B,eA0LD,CApLE,+GAIC,kBAAmB,CADnB,QAAS,CADT,OAGD,CAIA,uFAEC,mHACD,CAEA,4CACC,6EAA8E,CAC9E,kDACD,CAEA,2CACC,iFAAkF,CAClF,gFACD,CAIA,uFAEC,mHACD,CAEA,4CACC,iEAAkE,CAClE,uDAAwD,CACxD,qDACD,CAEA,2CACC,iFAAkF,CAClF,mFACD,CAIA,uFAEC,mHACD,CAEA,4CACC,6EAA8E,CAC9E,oDACD,CAEA,2CACC,iFAAkF,CAClF,kFACD,CAIA,uFAEC,mHACD,CAEA,4CACC,6EAA8E,CAC9E,mDACD,CAEA,2CACC,iFAAkF,CAClF,iFACD,CAIA,yGAEC,QAAS,CACT,uDAA0D,CAC1D,2CACD,CAIA,2GAEC,+CAAkD,CAClD,2CACD,CAIA,2GAEC,gDAAmD,CACnD,2CACD,CAIA,yGAIC,8CAAiD,CAFjD,QAAS,CACT,uDAED,CAIA,2GAGC,8CAAiD,CADjD,+CAED,CAIA,2GAGC,8CAAiD,CADjD,gDAED,CAIA,6GAIC,8CAAiD,CADjD,uDAA0D,CAD1D,SAGD,CAIA,6GAIC,8CAAiD,CAFjD,QAAS,CACT,sDAED,CAIA,6GAGC,uDAA0D,CAD1D,SAAU,CAEV,2CACD,CAIA,6GAEC,QAAS,CACT,sDAAyD,CACzD,2CACD,CAIA,yGAGC,sDAAyD,CADzD,6CAAgD,CAEhD,OACD,CAIA,yGAEC,4CAA+C,CAC/C,sDAAyD,CACzD,OACD",
                    sourcesContent: ['/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t/* Make sure the balloon arrow does not float over its children. */\n\t--ck-balloon-panel-arrow-z-index: calc(var(--ck-z-default) - 3);\n}\n\n.ck.ck-balloon-panel {\n\tdisplay: none;\n\tposition: absolute;\n\n\tz-index: var(--ck-z-modal);\n\n\t&.ck-balloon-panel_with-arrow {\n\t\t&::before,\n\t\t&::after {\n\t\t\tcontent: "";\n\t\t\tposition: absolute;\n\t\t}\n\n\t\t&::before {\n\t\t\tz-index: var(--ck-balloon-panel-arrow-z-index);\n\t\t}\n\n\t\t&::after {\n\t\t\tz-index: calc(var(--ck-balloon-panel-arrow-z-index) + 1);\n\t\t}\n\t}\n\n\t&[class*="arrow_n"] {\n\t\t&::before {\n\t\t\tz-index: var(--ck-balloon-panel-arrow-z-index);\n\t\t}\n\n\t\t&::after {\n\t\t\tz-index: calc(var(--ck-balloon-panel-arrow-z-index) + 1);\n\t\t}\n\t}\n\n\t&[class*="arrow_s"] {\n\t\t&::before {\n\t\t\tz-index: var(--ck-balloon-panel-arrow-z-index);\n\t\t}\n\n\t\t&::after {\n\t\t\tz-index: calc(var(--ck-balloon-panel-arrow-z-index) + 1);\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_visible {\n\t\tdisplay: block;\n\t}\n}\n', '/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../../mixins/_rounded.css";\n@import "../../../mixins/_shadow.css";\n\n:root {\n\t--ck-balloon-border-width: 1px;\n\t--ck-balloon-arrow-offset: 2px;\n\t--ck-balloon-arrow-height: 10px;\n\t--ck-balloon-arrow-half-width: 8px;\n\t--ck-balloon-arrow-drop-shadow: 0 2px 2px var(--ck-color-shadow-drop);\n}\n\n.ck.ck-balloon-panel {\n\t@mixin ck-rounded-corners;\n\t@mixin ck-drop-shadow;\n\n\tmin-height: 15px;\n\n\tbackground: var(--ck-color-panel-background);\n\tborder: var(--ck-balloon-border-width) solid var(--ck-color-panel-border);\n\n\t&.ck-balloon-panel_with-arrow {\n\t\t&::before,\n\t\t&::after {\n\t\t\twidth: 0;\n\t\t\theight: 0;\n\t\t\tborder-style: solid;\n\t\t}\n\t}\n\n\t&[class*="arrow_n"] {\n\t\t&::before,\n\t\t&::after {\n\t\t\tborder-width: 0 var(--ck-balloon-arrow-half-width) var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width);\n\t\t}\n\n\t\t&::before {\n\t\t\tborder-color: transparent transparent var(--ck-color-panel-border) transparent;\n\t\t\tmargin-top: calc( -1 * var(--ck-balloon-border-width) );\n\t\t}\n\n\t\t&::after {\n\t\t\tborder-color: transparent transparent var(--ck-color-panel-background) transparent;\n\t\t\tmargin-top: calc( var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width) );\n\t\t}\n\t}\n\n\t&[class*="arrow_s"] {\n\t\t&::before,\n\t\t&::after {\n\t\t\tborder-width: var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width) 0 var(--ck-balloon-arrow-half-width);\n\t\t}\n\n\t\t&::before {\n\t\t\tborder-color: var(--ck-color-panel-border) transparent transparent;\n\t\t\tfilter: drop-shadow(var(--ck-balloon-arrow-drop-shadow));\n\t\t\tmargin-bottom: calc( -1 * var(--ck-balloon-border-width) );\n\t\t}\n\n\t\t&::after {\n\t\t\tborder-color: var(--ck-color-panel-background) transparent transparent transparent;\n\t\t\tmargin-bottom: calc( var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width) );\n\t\t}\n\t}\n\n\t&[class*="arrow_e"] {\n\t\t&::before,\n\t\t&::after {\n\t\t\tborder-width: var(--ck-balloon-arrow-half-width) 0 var(--ck-balloon-arrow-half-width) var(--ck-balloon-arrow-height);\n\t\t}\n\n\t\t&::before {\n\t\t\tborder-color: transparent transparent transparent var(--ck-color-panel-border);\n\t\t\tmargin-right: calc( -1 * var(--ck-balloon-border-width) );\n\t\t}\n\n\t\t&::after {\n\t\t\tborder-color: transparent transparent transparent var(--ck-color-panel-background);\n\t\t\tmargin-right: calc( var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width) );\n\t\t}\n\t}\n\n\t&[class*="arrow_w"] {\n\t\t&::before,\n\t\t&::after {\n\t\t\tborder-width: var(--ck-balloon-arrow-half-width) var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width) 0;\n\t\t}\n\n\t\t&::before {\n\t\t\tborder-color: transparent var(--ck-color-panel-border) transparent transparent;\n\t\t\tmargin-left: calc( -1 * var(--ck-balloon-border-width) );\n\t\t}\n\n\t\t&::after {\n\t\t\tborder-color: transparent var(--ck-color-panel-background) transparent transparent;\n\t\t\tmargin-left: calc( var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width) );\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_arrow_n {\n\t\t&::before,\n\t\t&::after {\n\t\t\tleft: 50%;\n\t\t\tmargin-left: calc(-1 * var(--ck-balloon-arrow-half-width));\n\t\t\ttop: calc(-1 * var(--ck-balloon-arrow-height));\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_arrow_nw {\n\t\t&::before,\n\t\t&::after {\n\t\t\tleft: calc(2 * var(--ck-balloon-arrow-half-width));\n\t\t\ttop: calc(-1 * var(--ck-balloon-arrow-height));\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_arrow_ne {\n\t\t&::before,\n\t\t&::after {\n\t\t\tright: calc(2 * var(--ck-balloon-arrow-half-width));\n\t\t\ttop: calc(-1 * var(--ck-balloon-arrow-height));\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_arrow_s {\n\t\t&::before,\n\t\t&::after {\n\t\t\tleft: 50%;\n\t\t\tmargin-left: calc(-1 * var(--ck-balloon-arrow-half-width));\n\t\t\tbottom: calc(-1 * var(--ck-balloon-arrow-height));\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_arrow_sw {\n\t\t&::before,\n\t\t&::after {\n\t\t\tleft: calc(2 * var(--ck-balloon-arrow-half-width));\n\t\t\tbottom: calc(-1 * var(--ck-balloon-arrow-height));\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_arrow_se {\n\t\t&::before,\n\t\t&::after {\n\t\t\tright: calc(2 * var(--ck-balloon-arrow-half-width));\n\t\t\tbottom: calc(-1 * var(--ck-balloon-arrow-height));\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_arrow_sme {\n\t\t&::before,\n\t\t&::after {\n\t\t\tright: 25%;\n\t\t\tmargin-right: calc(2 * var(--ck-balloon-arrow-half-width));\n\t\t\tbottom: calc(-1 * var(--ck-balloon-arrow-height));\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_arrow_smw {\n\t\t&::before,\n\t\t&::after {\n\t\t\tleft: 25%;\n\t\t\tmargin-left: calc(2 * var(--ck-balloon-arrow-half-width));\n\t\t\tbottom: calc(-1 * var(--ck-balloon-arrow-height));\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_arrow_nme {\n\t\t&::before,\n\t\t&::after {\n\t\t\tright: 25%;\n\t\t\tmargin-right: calc(2 * var(--ck-balloon-arrow-half-width));\n\t\t\ttop: calc(-1 * var(--ck-balloon-arrow-height));\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_arrow_nmw {\n\t\t&::before,\n\t\t&::after {\n\t\t\tleft: 25%;\n\t\t\tmargin-left: calc(2 * var(--ck-balloon-arrow-half-width));\n\t\t\ttop: calc(-1 * var(--ck-balloon-arrow-height));\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_arrow_e {\n\t\t&::before,\n\t\t&::after {\n\t\t\tright: calc(-1 * var(--ck-balloon-arrow-height));\n\t\t\tmargin-top: calc(-1 * var(--ck-balloon-arrow-half-width));\n\t\t\ttop: 50%;\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_arrow_w {\n\t\t&::before,\n\t\t&::after {\n\t\t\tleft: calc(-1 * var(--ck-balloon-arrow-height));\n\t\t\tmargin-top: calc(-1 * var(--ck-balloon-arrow-half-width));\n\t\t\ttop: 50%;\n\t\t}\n\t}\n}\n', "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t@nest .ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n", "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A helper to combine multiple shadows.\n */\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\n\tbox-shadow: $shadowA, $shadowB;\n}\n\n/**\n * Gives an element a drop shadow so it looks like a floating panel.\n */\n@define-mixin ck-drop-shadow {\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            4650: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ".ck .ck-balloon-rotator__navigation{align-items:center;display:flex;justify-content:center}.ck .ck-balloon-rotator__content .ck-toolbar{justify-content:center}.ck .ck-balloon-rotator__navigation{background:var(--ck-color-toolbar-background);border-bottom:1px solid var(--ck-color-toolbar-border);padding:0 var(--ck-spacing-small)}.ck .ck-balloon-rotator__navigation>*{margin-bottom:var(--ck-spacing-small);margin-right:var(--ck-spacing-small);margin-top:var(--ck-spacing-small)}.ck .ck-balloon-rotator__navigation .ck-balloon-rotator__counter{margin-left:var(--ck-spacing-small);margin-right:var(--ck-spacing-standard)}.ck .ck-balloon-rotator__content .ck.ck-annotation-wrapper{box-shadow:none}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-ui/theme/components/panel/balloonrotator.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/panel/balloonrotator.css"],
                    names: [],
                    mappings: "AAKA,oCAEC,kBAAmB,CADnB,YAAa,CAEb,sBACD,CAKA,6CACC,sBACD,CCXA,oCACC,6CAA8C,CAC9C,sDAAuD,CACvD,iCAgBD,CAbC,sCAGC,qCAAsC,CAFtC,oCAAqC,CACrC,kCAED,CAGA,iEAIC,mCAAoC,CAHpC,uCAID,CAMA,2DACC,eACD",
                    sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck .ck-balloon-rotator__navigation {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n/* Buttons inside a toolbar should be centered when rotator bar is wider.\n * See: https://github.com/ckeditor/ckeditor5-ui/issues/495\n */\n.ck .ck-balloon-rotator__content .ck-toolbar {\n\tjustify-content: center;\n}\n", "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck .ck-balloon-rotator__navigation {\n\tbackground: var(--ck-color-toolbar-background);\n\tborder-bottom: 1px solid var(--ck-color-toolbar-border);\n\tpadding: 0 var(--ck-spacing-small);\n\n\t/* Let's keep similar appearance to `ck-toolbar`. */\n\t& > * {\n\t\tmargin-right: var(--ck-spacing-small);\n\t\tmargin-top: var(--ck-spacing-small);\n\t\tmargin-bottom: var(--ck-spacing-small);\n\t}\n\n\t/* Gives counter more breath than buttons. */\n\t& .ck-balloon-rotator__counter {\n\t\tmargin-right: var(--ck-spacing-standard);\n\n\t\t/* We need to use smaller margin because of previous button's right margin. */\n\t\tmargin-left: var(--ck-spacing-small);\n\t}\n}\n\n.ck .ck-balloon-rotator__content {\n\n\t/* Disable default annotation shadow inside rotator with fake panels. */\n\t& .ck.ck-annotation-wrapper {\n\t\tbox-shadow: none;\n\t}\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            7676: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ".ck .ck-fake-panel{position:absolute;z-index:calc(var(--ck-z-modal) - 1)}.ck .ck-fake-panel div{position:absolute}.ck .ck-fake-panel div:first-child{z-index:2}.ck .ck-fake-panel div:nth-child(2){z-index:1}:root{--ck-balloon-fake-panel-offset-horizontal:6px;--ck-balloon-fake-panel-offset-vertical:6px}.ck .ck-fake-panel div{background:var(--ck-color-panel-background);border:1px solid var(--ck-color-panel-border);border-radius:var(--ck-border-radius);box-shadow:var(--ck-drop-shadow),0 0;height:100%;min-height:15px;width:100%}.ck .ck-fake-panel div:first-child{margin-left:var(--ck-balloon-fake-panel-offset-horizontal);margin-top:var(--ck-balloon-fake-panel-offset-vertical)}.ck .ck-fake-panel div:nth-child(2){margin-left:calc(var(--ck-balloon-fake-panel-offset-horizontal)*2);margin-top:calc(var(--ck-balloon-fake-panel-offset-vertical)*2)}.ck .ck-fake-panel div:nth-child(3){margin-left:calc(var(--ck-balloon-fake-panel-offset-horizontal)*3);margin-top:calc(var(--ck-balloon-fake-panel-offset-vertical)*3)}.ck .ck-balloon-panel_arrow_s+.ck-fake-panel,.ck .ck-balloon-panel_arrow_se+.ck-fake-panel,.ck .ck-balloon-panel_arrow_sw+.ck-fake-panel{--ck-balloon-fake-panel-offset-vertical:-6px}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-ui/theme/components/panel/fakepanel.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/panel/fakepanel.css", "webpack://./../ckeditor5-theme-lark/theme/mixins/_shadow.css"],
                    names: [],
                    mappings: "AAKA,mBACC,iBAAkB,CAGlB,mCACD,CAEA,uBACC,iBACD,CAEA,mCACC,SACD,CAEA,oCACC,SACD,CCfA,MACC,6CAA8C,CAC9C,2CACD,CAGA,uBAKC,2CAA4C,CAC5C,6CAA8C,CAC9C,qCAAsC,CCXtC,oCAA8B,CDc9B,WAAY,CAPZ,eAAgB,CAMhB,UAED,CAEA,mCACC,0DAA2D,CAC3D,uDACD,CAEA,oCACC,kEAAqE,CACrE,+DACD,CACA,oCACC,kEAAqE,CACrE,+DACD,CAGA,yIAGC,4CACD",
                    sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck .ck-fake-panel {\n\tposition: absolute;\n\n\t/* Fake panels should be placed under main balloon content. */\n\tz-index: calc(var(--ck-z-modal) - 1);\n}\n\n.ck .ck-fake-panel div {\n\tposition: absolute;\n}\n\n.ck .ck-fake-panel div:nth-child( 1 ) {\n\tz-index: 2;\n}\n\n.ck .ck-fake-panel div:nth-child( 2 ) {\n\tz-index: 1;\n}\n", '/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../../mixins/_shadow.css";\n\n:root {\n\t--ck-balloon-fake-panel-offset-horizontal: 6px;\n\t--ck-balloon-fake-panel-offset-vertical: 6px;\n}\n\n/* Let\'s use `.ck-balloon-panel` appearance. See: balloonpanel.css. */\n.ck .ck-fake-panel div {\n\t@mixin ck-drop-shadow;\n\n\tmin-height: 15px;\n\n\tbackground: var(--ck-color-panel-background);\n\tborder: 1px solid var(--ck-color-panel-border);\n\tborder-radius: var(--ck-border-radius);\n\n\twidth: 100%;\n\theight: 100%;\n}\n\n.ck .ck-fake-panel div:nth-child( 1 ) {\n\tmargin-left: var(--ck-balloon-fake-panel-offset-horizontal);\n\tmargin-top: var(--ck-balloon-fake-panel-offset-vertical);\n}\n\n.ck .ck-fake-panel div:nth-child( 2 ) {\n\tmargin-left: calc(var(--ck-balloon-fake-panel-offset-horizontal) * 2);\n\tmargin-top: calc(var(--ck-balloon-fake-panel-offset-vertical) * 2);\n}\n.ck .ck-fake-panel div:nth-child( 3 ) {\n\tmargin-left: calc(var(--ck-balloon-fake-panel-offset-horizontal) * 3);\n\tmargin-top: calc(var(--ck-balloon-fake-panel-offset-vertical) * 3);\n}\n\n/* If balloon is positioned above element, we need to move fake panel to the top. */\n.ck .ck-balloon-panel_arrow_s + .ck-fake-panel,\n.ck .ck-balloon-panel_arrow_se + .ck-fake-panel,\n.ck .ck-balloon-panel_arrow_sw + .ck-fake-panel {\n\t--ck-balloon-fake-panel-offset-vertical: -6px;\n}\n', "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A helper to combine multiple shadows.\n */\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\n\tbox-shadow: $shadowA, $shadowB;\n}\n\n/**\n * Gives an element a drop shadow so it looks like a floating panel.\n */\n@define-mixin ck-drop-shadow {\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            5868: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ".ck.ck-sticky-panel .ck-sticky-panel__content_sticky{position:fixed;top:0;z-index:var(--ck-z-modal)}.ck.ck-sticky-panel .ck-sticky-panel__content_sticky_bottom-limit{position:absolute;top:auto}.ck.ck-sticky-panel .ck-sticky-panel__content_sticky{border-top-left-radius:0;border-top-right-radius:0;border-width:0 1px 1px;box-shadow:var(--ck-drop-shadow),0 0}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-ui/theme/components/panel/stickypanel.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/panel/stickypanel.css", "webpack://./../ckeditor5-theme-lark/theme/mixins/_shadow.css"],
                    names: [],
                    mappings: "AAMC,qDAEC,cAAe,CACf,KAAM,CAFN,yBAGD,CAEA,kEAEC,iBAAkB,CADlB,QAED,CCPA,qDAIC,wBAAyB,CACzB,yBAA0B,CAF1B,sBAAuB,CCFxB,oCDKA",
                    sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-sticky-panel {\n\t& .ck-sticky-panel__content_sticky {\n\t\tz-index: var(--ck-z-modal); /* #315 */\n\t\tposition: fixed;\n\t\ttop: 0;\n\t}\n\n\t& .ck-sticky-panel__content_sticky_bottom-limit {\n\t\ttop: auto;\n\t\tposition: absolute;\n\t}\n}\n", '/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../../mixins/_shadow.css";\n\n.ck.ck-sticky-panel {\n\t& .ck-sticky-panel__content_sticky {\n\t\t@mixin ck-drop-shadow;\n\n\t\tborder-width: 0 1px 1px;\n\t\tborder-top-left-radius: 0;\n\t\tborder-top-right-radius: 0;\n\t}\n}\n', "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A helper to combine multiple shadows.\n */\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\n\tbox-shadow: $shadowA, $shadowB;\n}\n\n/**\n * Gives an element a drop shadow so it looks like a floating panel.\n */\n@define-mixin ck-drop-shadow {\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            6764: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, '.ck-vertical-form .ck-button:after{bottom:-1px;content:"";position:absolute;right:-1px;top:-1px;width:0;z-index:1}.ck-vertical-form .ck-button:focus:after{display:none}@media screen and (max-width:600px){.ck.ck-responsive-form .ck-button:after{bottom:-1px;content:"";position:absolute;right:-1px;top:-1px;width:0;z-index:1}.ck.ck-responsive-form .ck-button:focus:after{display:none}}.ck-vertical-form>.ck-button:nth-last-child(2):after{border-right:1px solid var(--ck-color-base-border)}.ck.ck-responsive-form{padding:var(--ck-spacing-large)}.ck.ck-responsive-form:focus{outline:none}[dir=ltr] .ck.ck-responsive-form>:not(:first-child),[dir=rtl] .ck.ck-responsive-form>:not(:last-child){margin-left:var(--ck-spacing-standard)}@media screen and (max-width:600px){.ck.ck-responsive-form{padding:0;width:calc(var(--ck-input-width)*.8)}.ck.ck-responsive-form .ck-labeled-field-view{margin:var(--ck-spacing-large) var(--ck-spacing-large) 0}.ck.ck-responsive-form .ck-labeled-field-view .ck-input-text{min-width:0;width:100%}.ck.ck-responsive-form .ck-labeled-field-view .ck-labeled-field-view__error{white-space:normal}.ck.ck-responsive-form>.ck-button:nth-last-child(2):after{border-right:1px solid var(--ck-color-base-border)}.ck.ck-responsive-form>.ck-button:last-child,.ck.ck-responsive-form>.ck-button:nth-last-child(2){border-radius:0;margin-top:var(--ck-spacing-large);padding:var(--ck-spacing-standard)}.ck.ck-responsive-form>.ck-button:last-child:not(:focus),.ck.ck-responsive-form>.ck-button:nth-last-child(2):not(:focus){border-top:1px solid var(--ck-color-base-border)}[dir=ltr] .ck.ck-responsive-form>.ck-button:last-child,[dir=ltr] .ck.ck-responsive-form>.ck-button:nth-last-child(2),[dir=rtl] .ck.ck-responsive-form>.ck-button:last-child,[dir=rtl] .ck.ck-responsive-form>.ck-button:nth-last-child(2){margin-left:0}[dir=rtl] .ck.ck-responsive-form>.ck-button:last-child:last-of-type,[dir=rtl] .ck.ck-responsive-form>.ck-button:nth-last-child(2):last-of-type{border-right:1px solid var(--ck-color-base-border)}}', "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-ui/theme/components/responsive-form/responsiveform.css", "webpack://./../ckeditor5-ui/theme/mixins/_rwd.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/responsive-form/responsiveform.css"],
                    names: [],
                    mappings: "AAQC,mCAMC,WAAY,CALZ,UAAW,CAEX,iBAAkB,CAClB,UAAW,CACX,QAAS,CAHT,OAAQ,CAKR,SACD,CAEA,yCACC,YACD,CCdA,oCDoBE,wCAMC,WAAY,CALZ,UAAW,CAEX,iBAAkB,CAClB,UAAW,CACX,QAAS,CAHT,OAAQ,CAKR,SACD,CAEA,8CACC,YACD,CC9BF,CCAD,qDACC,kDACD,CAEA,uBACC,+BAmED,CAjEC,6BAEC,YACD,CASC,uGACC,sCACD,CDvBD,oCCMD,uBAqBE,SAAU,CACV,oCA8CF,CA5CE,8CACC,wDAWD,CATC,6DACC,WAAY,CACZ,UACD,CAGA,4EACC,kBACD,CAKA,0DACC,kDACD,CAGD,iGAIC,eAAgB,CADhB,kCAAmC,CADnC,kCAmBD,CAfC,yHACC,gDACD,CARD,0OAeE,aAMF,CAJE,+IACC,kDACD,CDpEH",
                    sourcesContent: ['/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\n\n.ck-vertical-form .ck-button {\n\t&::after {\n\t\tcontent: "";\n\t\twidth: 0;\n\t\tposition: absolute;\n\t\tright: -1px;\n\t\ttop: -1px;\n\t\tbottom: -1px;\n\t\tz-index: 1;\n\t}\n\n\t&:focus::after {\n\t\tdisplay: none;\n\t}\n}\n\n.ck.ck-responsive-form {\n\t@mixin ck-media-phone {\n\t\t& .ck-button {\n\t\t\t&::after {\n\t\t\t\tcontent: "";\n\t\t\t\twidth: 0;\n\t\t\t\tposition: absolute;\n\t\t\t\tright: -1px;\n\t\t\t\ttop: -1px;\n\t\t\t\tbottom: -1px;\n\t\t\t\tz-index: 1;\n\t\t\t}\n\n\t\t\t&:focus::after {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t}\n\t}\n}\n', "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@define-mixin ck-media-phone {\n\t@media screen and (max-width: 600px) {\n\t\t@mixin-content;\n\t}\n}\n", '/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n.ck-vertical-form > .ck-button:nth-last-child(2)::after {\n\tborder-right: 1px solid var(--ck-color-base-border);\n}\n\n.ck.ck-responsive-form {\n\tpadding: var(--ck-spacing-large);\n\n\t&:focus {\n\t\t/* See: https://github.com/ckeditor/ckeditor5/issues/4773 */\n\t\toutline: none;\n\t}\n\n\t@mixin ck-dir ltr {\n\t\t& > :not(:first-child) {\n\t\t\tmargin-left: var(--ck-spacing-standard);\n\t\t}\n\t}\n\n\t@mixin ck-dir rtl {\n\t\t& > :not(:last-child) {\n\t\t\tmargin-left: var(--ck-spacing-standard);\n\t\t}\n\t}\n\n\t@mixin ck-media-phone {\n\t\tpadding: 0;\n\t\twidth: calc(.8 * var(--ck-input-width));\n\n\t\t& .ck-labeled-field-view {\n\t\t\tmargin: var(--ck-spacing-large) var(--ck-spacing-large) 0;\n\n\t\t\t& .ck-input-text {\n\t\t\t\tmin-width: 0;\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\t/* Let the long error messages wrap in the narrow form. */\n\t\t\t& .ck-labeled-field-view__error {\n\t\t\t\twhite-space: normal;\n\t\t\t}\n\t\t}\n\n\t\t/* Styles for two last buttons in the form (save&cancel, edit&unlink, etc.). */\n\t\t& > .ck-button:nth-last-child(2) {\n\t\t\t&::after {\n\t\t\t\tborder-right: 1px solid var(--ck-color-base-border);\n\t\t\t}\n\t\t}\n\n\t\t& > .ck-button:nth-last-child(1),\n\t\t& > .ck-button:nth-last-child(2) {\n\t\t\tpadding: var(--ck-spacing-standard);\n\t\t\tmargin-top: var(--ck-spacing-large);\n\t\t\tborder-radius: 0;\n\n\t\t\t&:not(:focus) {\n\t\t\t\tborder-top: 1px solid var(--ck-color-base-border);\n\t\t\t}\n\n\t\t\t@mixin ck-dir ltr {\n\t\t\t\tmargin-left: 0;\n\t\t\t}\n\n\t\t\t@mixin ck-dir rtl {\n\t\t\t\tmargin-left: 0;\n\n\t\t\t\t&:last-of-type {\n\t\t\t\t\tborder-right: 1px solid var(--ck-color-base-border);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n'],
                    sourceRoot: ""
                }]);
                const a = s
            },
            9695: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ".ck.ck-block-toolbar-button{position:absolute;z-index:var(--ck-z-default)}:root{--ck-color-block-toolbar-button:var(--ck-color-text);--ck-block-toolbar-button-size:var(--ck-font-size-normal)}.ck.ck-block-toolbar-button{color:var(--ck-color-block-toolbar-button);font-size:var(--ck-block-toolbar-size)}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-ui/theme/components/toolbar/blocktoolbar.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/toolbar/blocktoolbar.css"],
                    names: [],
                    mappings: "AAKA,4BACC,iBAAkB,CAClB,2BACD,CCHA,MACC,oDAAqD,CACrD,yDACD,CAEA,4BACC,0CAA2C,CAC3C,sCACD",
                    sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-block-toolbar-button {\n\tposition: absolute;\n\tz-index: var(--ck-z-default);\n}\n", "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-color-block-toolbar-button: var(--ck-color-text);\n\t--ck-block-toolbar-button-size: var(--ck-font-size-normal);\n}\n\n.ck.ck-block-toolbar-button {\n\tcolor: var(--ck-color-block-toolbar-button);\n\tfont-size: var(--ck-block-toolbar-size);\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            5542: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ".ck.ck-toolbar{align-items:center;display:flex;flex-flow:row nowrap;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.ck.ck-toolbar>.ck-toolbar__items{align-items:center;display:flex;flex-flow:row wrap;flex-grow:1}.ck.ck-toolbar .ck.ck-toolbar__separator{display:inline-block}.ck.ck-toolbar .ck.ck-toolbar__separator:first-child,.ck.ck-toolbar .ck.ck-toolbar__separator:last-child{display:none}.ck.ck-toolbar .ck-toolbar__line-break{flex-basis:100%}.ck.ck-toolbar.ck-toolbar_grouping>.ck-toolbar__items{flex-wrap:nowrap}.ck.ck-toolbar.ck-toolbar_vertical>.ck-toolbar__items{flex-direction:column}.ck.ck-toolbar.ck-toolbar_floating>.ck-toolbar__items{flex-wrap:nowrap}.ck.ck-toolbar>.ck.ck-toolbar__grouped-dropdown>.ck-dropdown__button .ck-dropdown__arrow{display:none}.ck.ck-toolbar{border-radius:0}.ck-rounded-corners .ck.ck-toolbar,.ck.ck-toolbar.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-toolbar{background:var(--ck-color-toolbar-background);border:1px solid var(--ck-color-toolbar-border);padding:0 var(--ck-spacing-small)}.ck.ck-toolbar .ck.ck-toolbar__separator{align-self:stretch;background:var(--ck-color-toolbar-border);margin-bottom:var(--ck-spacing-small);margin-top:var(--ck-spacing-small);min-width:1px;width:1px}.ck.ck-toolbar .ck-toolbar__line-break{height:0}.ck.ck-toolbar>.ck-toolbar__items>:not(.ck-toolbar__line-break){margin-right:var(--ck-spacing-small)}.ck.ck-toolbar>.ck-toolbar__items:empty+.ck.ck-toolbar__separator{display:none}.ck.ck-toolbar>.ck-toolbar__items>:not(.ck-toolbar__line-break),.ck.ck-toolbar>.ck.ck-toolbar__grouped-dropdown{margin-bottom:var(--ck-spacing-small);margin-top:var(--ck-spacing-small)}.ck.ck-toolbar.ck-toolbar_vertical{padding:0}.ck.ck-toolbar.ck-toolbar_vertical>.ck-toolbar__items>.ck{border-radius:0;margin:0;width:100%}.ck.ck-toolbar.ck-toolbar_compact{padding:0}.ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>*{margin:0}.ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>:not(:first-child):not(:last-child){border-radius:0}.ck.ck-toolbar>.ck.ck-toolbar__grouped-dropdown>.ck.ck-button.ck-dropdown__button{padding-left:var(--ck-spacing-tiny)}.ck.ck-toolbar .ck-toolbar__nested-toolbar-dropdown>.ck-dropdown__panel{min-width:auto}.ck.ck-toolbar .ck-toolbar__nested-toolbar-dropdown>.ck-button>.ck-button__label{max-width:7em;width:auto}.ck.ck-toolbar:focus{outline:none}.ck-toolbar-container .ck.ck-toolbar{border:0}.ck.ck-toolbar[dir=rtl]>.ck-toolbar__items>.ck,[dir=rtl] .ck.ck-toolbar>.ck-toolbar__items>.ck{margin-right:0}.ck.ck-toolbar[dir=rtl]:not(.ck-toolbar_compact)>.ck-toolbar__items>.ck,[dir=rtl] .ck.ck-toolbar:not(.ck-toolbar_compact)>.ck-toolbar__items>.ck{margin-left:var(--ck-spacing-small)}.ck.ck-toolbar[dir=rtl]>.ck-toolbar__items>.ck:last-child,[dir=rtl] .ck.ck-toolbar>.ck-toolbar__items>.ck:last-child{margin-left:0}.ck.ck-toolbar.ck-toolbar_compact[dir=rtl]>.ck-toolbar__items>.ck:first-child,[dir=rtl] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.ck.ck-toolbar.ck-toolbar_compact[dir=rtl]>.ck-toolbar__items>.ck:last-child,[dir=rtl] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:last-child{border-bottom-right-radius:0;border-top-right-radius:0}.ck.ck-toolbar.ck-toolbar_grouping[dir=rtl]>.ck-toolbar__items:not(:empty):not(:only-child),.ck.ck-toolbar[dir=rtl]>.ck.ck-toolbar__separator,[dir=rtl] .ck.ck-toolbar.ck-toolbar_grouping>.ck-toolbar__items:not(:empty):not(:only-child),[dir=rtl] .ck.ck-toolbar>.ck.ck-toolbar__separator{margin-left:var(--ck-spacing-small)}.ck.ck-toolbar[dir=ltr]>.ck-toolbar__items>.ck:last-child,[dir=ltr] .ck.ck-toolbar>.ck-toolbar__items>.ck:last-child{margin-right:0}.ck.ck-toolbar.ck-toolbar_compact[dir=ltr]>.ck-toolbar__items>.ck:first-child,[dir=ltr] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:first-child{border-bottom-right-radius:0;border-top-right-radius:0}.ck.ck-toolbar.ck-toolbar_compact[dir=ltr]>.ck-toolbar__items>.ck:last-child,[dir=ltr] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:last-child{border-bottom-left-radius:0;border-top-left-radius:0}.ck.ck-toolbar.ck-toolbar_grouping[dir=ltr]>.ck-toolbar__items:not(:empty):not(:only-child),.ck.ck-toolbar[dir=ltr]>.ck.ck-toolbar__separator,[dir=ltr] .ck.ck-toolbar.ck-toolbar_grouping>.ck-toolbar__items:not(:empty):not(:only-child),[dir=ltr] .ck.ck-toolbar>.ck.ck-toolbar__separator{margin-right:var(--ck-spacing-small)}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-ui/theme/components/toolbar/toolbar.css", "webpack://./../ckeditor5-ui/theme/mixins/_unselectable.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/toolbar/toolbar.css", "webpack://./../ckeditor5-theme-lark/theme/mixins/_rounded.css"],
                    names: [],
                    mappings: "AAOA,eAKC,kBAAmB,CAFnB,YAAa,CACb,oBAAqB,CCFrB,qBAAsB,CACtB,wBAAyB,CACzB,oBAAqB,CACrB,gBD6CD,CA3CC,kCAGC,kBAAmB,CAFnB,YAAa,CACb,kBAAmB,CAEnB,WAED,CAEA,yCACC,oBAWD,CAJC,yGAEC,YACD,CAGD,uCACC,eACD,CAEA,sDACC,gBACD,CAEA,sDACC,qBACD,CAEA,sDACC,gBACD,CAGC,yFACC,YACD,CE/CF,eCGC,eDwGD,CA3GA,qECOE,qCDoGF,CA3GA,eAGC,6CAA8C,CAE9C,+CAAgD,CADhD,iCAuGD,CApGC,yCACC,kBAAmB,CAGnB,yCAA0C,CAO1C,qCAAsC,CADtC,kCAAmC,CAPnC,aAAc,CADd,SAUD,CAEA,uCACC,QACD,CAGC,gEAEC,oCACD,CAIA,kEACC,YACD,CAGD,gHAIC,qCAAsC,CADtC,kCAED,CAEA,mCAEC,SAaD,CAVC,0DAQC,eAAgB,CAHhB,QAAS,CAHT,UAOD,CAGD,kCAEC,SAWD,CATC,uDAEC,QAMD,CAHC,yFACC,eACD,CASD,kFACC,mCACD,CAMA,wEACC,cACD,CAEA,iFACC,aAAc,CACd,UACD,CAGD,qBACC,YACD,CAtGD,qCAyGE,QAEF,CAYC,+FACC,cACD,CAEA,iJAEC,mCACD,CAEA,qHACC,aACD,CAIC,6JAEC,2BAA4B,CAD5B,wBAED,CAGA,2JAEC,4BAA6B,CAD7B,yBAED,CASD,8RACC,mCACD,CAWA,qHACC,cACD,CAIC,6JAEC,4BAA6B,CAD7B,yBAED,CAGA,2JAEC,2BAA4B,CAD5B,wBAED,CASD,8RACC,oCACD",
                    sourcesContent: ['/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../mixins/_unselectable.css";\n\n.ck.ck-toolbar {\n\t@mixin ck-unselectable;\n\n\tdisplay: flex;\n\tflex-flow: row nowrap;\n\talign-items: center;\n\n\t& > .ck-toolbar__items {\n\t\tdisplay: flex;\n\t\tflex-flow: row wrap;\n\t\talign-items: center;\n\t\tflex-grow: 1;\n\n\t}\n\n\t& .ck.ck-toolbar__separator {\n\t\tdisplay: inline-block;\n\n\t\t/*\n\t\t * A leading or trailing separator makes no sense (separates from nothing on one side).\n\t\t * For instance, it can happen when toolbar items (also separators) are getting grouped one by one and\n\t\t * moved to another toolbar in the dropdown.\n\t\t */\n\t\t&:first-child,\n\t\t&:last-child {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n\t& .ck-toolbar__line-break {\n\t\tflex-basis: 100%;\n\t}\n\n\t&.ck-toolbar_grouping > .ck-toolbar__items {\n\t\tflex-wrap: nowrap;\n\t}\n\n\t&.ck-toolbar_vertical > .ck-toolbar__items {\n\t\tflex-direction: column;\n\t}\n\n\t&.ck-toolbar_floating > .ck-toolbar__items {\n\t\tflex-wrap: nowrap;\n\t}\n\n\t& > .ck.ck-toolbar__grouped-dropdown {\n\t\t& > .ck-dropdown__button .ck-dropdown__arrow {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n', "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Makes element unselectable.\n */\n@define-mixin ck-unselectable {\n\t-moz-user-select: none;\n\t-webkit-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none\n}\n", '/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../../mixins/_rounded.css";\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n.ck.ck-toolbar {\n\t@mixin ck-rounded-corners;\n\n\tbackground: var(--ck-color-toolbar-background);\n\tpadding: 0 var(--ck-spacing-small);\n\tborder: 1px solid var(--ck-color-toolbar-border);\n\n\t& .ck.ck-toolbar__separator {\n\t\talign-self: stretch;\n\t\twidth: 1px;\n\t\tmin-width: 1px;\n\t\tbackground: var(--ck-color-toolbar-border);\n\n\t\t/*\n\t\t * These margins make the separators look better in balloon toolbars (when aligned with the "tip").\n\t\t * See https://github.com/ckeditor/ckeditor5/issues/7493.\n\t\t */\n\t\tmargin-top: var(--ck-spacing-small);\n\t\tmargin-bottom: var(--ck-spacing-small);\n\t}\n\n\t& .ck-toolbar__line-break {\n\t\theight: 0;\n\t}\n\n\t& > .ck-toolbar__items {\n\t\t& > *:not(.ck-toolbar__line-break) {\n\t\t\t/* (#11) Separate toolbar items. */\n\t\t\tmargin-right: var(--ck-spacing-small);\n\t\t}\n\n\t\t/* Don\'t display a separator after an empty items container, for instance,\n\t\twhen all items were grouped */\n\t\t&:empty + .ck.ck-toolbar__separator {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n\t& > .ck-toolbar__items > *:not(.ck-toolbar__line-break),\n\t& > .ck.ck-toolbar__grouped-dropdown {\n\t\t/* Make sure items wrapped to the next line have v-spacing */\n\t\tmargin-top: var(--ck-spacing-small);\n\t\tmargin-bottom: var(--ck-spacing-small);\n\t}\n\n\t&.ck-toolbar_vertical {\n\t\t/* Items in a vertical toolbar span the entire width. */\n\t\tpadding: 0;\n\n\t\t/* Specificity matters here. See https://github.com/ckeditor/ckeditor5-theme-lark/issues/168. */\n\t\t& > .ck-toolbar__items > .ck {\n\t\t\t/* Items in a vertical toolbar should span the horizontal space. */\n\t\t\twidth: 100%;\n\n\t\t\t/* Items in a vertical toolbar should have no margin. */\n\t\t\tmargin: 0;\n\n\t\t\t/* Items in a vertical toolbar span the entire width so rounded corners are pointless. */\n\t\t\tborder-radius: 0;\n\t\t}\n\t}\n\n\t&.ck-toolbar_compact {\n\t\t/* No spacing around items. */\n\t\tpadding: 0;\n\n\t\t& > .ck-toolbar__items > * {\n\t\t\t/* Compact toolbar items have no spacing between them. */\n\t\t\tmargin: 0;\n\n\t\t\t/* "Middle" children should have no rounded corners. */\n\t\t\t&:not(:first-child):not(:last-child) {\n\t\t\t\tborder-radius: 0;\n\t\t\t}\n\t\t}\n\t}\n\n\t& > .ck.ck-toolbar__grouped-dropdown {\n\t\t/*\n\t\t * Dropdown button has asymmetric padding to fit the arrow.\n\t\t * This button has no arrow so let\'s revert that padding back to normal.\n\t\t */\n\t\t& > .ck.ck-button.ck-dropdown__button {\n\t\t\tpadding-left: var(--ck-spacing-tiny);\n\t\t}\n\t}\n\n\t/* A drop-down containing the nested toolbar with configured items. */\n\t& .ck-toolbar__nested-toolbar-dropdown {\n\t\t/* Prevent empty space in the panel when the dropdown label is visible and long but the toolbar has few items. */\n\t\t& > .ck-dropdown__panel {\n\t\t\tmin-width: auto;\n\t\t}\n\n\t\t& > .ck-button > .ck-button__label {\n\t\t\tmax-width: 7em;\n\t\t\twidth: auto;\n\t\t}\n\t}\n\n\t&:focus {\n\t\toutline: none;\n\t}\n\n\t@nest .ck-toolbar-container & {\n\t\tborder: 0;\n\t}\n}\n\n/* stylelint-disable */\n\n/*\n * Styles for RTL toolbars.\n *\n * Note: In some cases (e.g. a decoupled editor), the toolbar has its own "dir"\n * because its parent is not controlled by the editor framework.\n */\n[dir="rtl"] .ck.ck-toolbar,\n.ck.ck-toolbar[dir="rtl"] {\n\t& > .ck-toolbar__items > .ck {\n\t\tmargin-right: 0;\n\t}\n\n\t&:not(.ck-toolbar_compact) > .ck-toolbar__items > .ck {\n\t\t/* (#11) Separate toolbar items. */\n\t\tmargin-left: var(--ck-spacing-small);\n\t}\n\n\t& > .ck-toolbar__items > .ck:last-child {\n\t\tmargin-left: 0;\n\t}\n\n\t&.ck-toolbar_compact > .ck-toolbar__items > .ck {\n\t\t/* No rounded corners on the right side of the first child. */\n\t\t&:first-child {\n\t\t\tborder-top-left-radius: 0;\n\t\t\tborder-bottom-left-radius: 0;\n\t\t}\n\n\t\t/* No rounded corners on the left side of the last child. */\n\t\t&:last-child {\n\t\t\tborder-top-right-radius: 0;\n\t\t\tborder-bottom-right-radius: 0;\n\t\t}\n\t}\n\n\t/* Separate the the separator form the grouping dropdown when some items are grouped. */\n\t& > .ck.ck-toolbar__separator {\n\t\tmargin-left: var(--ck-spacing-small);\n\t}\n\n\t/* Some spacing between the items and the separator before the grouped items dropdown. */\n\t&.ck-toolbar_grouping > .ck-toolbar__items:not(:empty):not(:only-child) {\n\t\tmargin-left: var(--ck-spacing-small);\n\t}\n}\n\n/*\n * Styles for LTR toolbars.\n *\n * Note: In some cases (e.g. a decoupled editor), the toolbar has its own "dir"\n * because its parent is not controlled by the editor framework.\n */\n[dir="ltr"] .ck.ck-toolbar,\n.ck.ck-toolbar[dir="ltr"] {\n\t& > .ck-toolbar__items > .ck:last-child {\n\t\tmargin-right: 0;\n\t}\n\n\t&.ck-toolbar_compact > .ck-toolbar__items > .ck {\n\t\t/* No rounded corners on the right side of the first child. */\n\t\t&:first-child {\n\t\t\tborder-top-right-radius: 0;\n\t\t\tborder-bottom-right-radius: 0;\n\t\t}\n\n\t\t/* No rounded corners on the left side of the last child. */\n\t\t&:last-child {\n\t\t\tborder-top-left-radius: 0;\n\t\t\tborder-bottom-left-radius: 0;\n\t\t}\n\t}\n\n\t/* Separate the the separator form the grouping dropdown when some items are grouped. */\n\t& > .ck.ck-toolbar__separator {\n\t\tmargin-right: var(--ck-spacing-small);\n\t}\n\n\t/* Some spacing between the items and the separator before the grouped items dropdown. */\n\t&.ck-toolbar_grouping > .ck-toolbar__items:not(:empty):not(:only-child) {\n\t\tmargin-right: var(--ck-spacing-small);\n\t}\n}\n\n/* stylelint-enable */\n', "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t@nest .ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            3332: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ".ck.ck-balloon-panel.ck-tooltip{--ck-balloon-border-width:0px;--ck-balloon-arrow-offset:0px;--ck-balloon-arrow-half-width:4px;--ck-balloon-arrow-height:4px;--ck-color-panel-background:var(--ck-color-tooltip-background);padding:0 var(--ck-spacing-medium);pointer-events:none;z-index:calc(var(--ck-z-modal) + 100)}.ck.ck-balloon-panel.ck-tooltip .ck-tooltip__text{color:var(--ck-color-tooltip-text);font-size:.9em;line-height:1.5}.ck.ck-balloon-panel.ck-tooltip{box-shadow:none}.ck.ck-balloon-panel.ck-tooltip:before{display:none}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-ui/theme/components/tooltip/tooltip.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/tooltip/tooltip.css"],
                    names: [],
                    mappings: "AAKA,gCCGC,6BAA8B,CAC9B,6BAA8B,CAC9B,iCAAkC,CAClC,6BAA8B,CAC9B,8DAA+D,CAE/D,kCAAmC,CDPnC,mBAAoB,CAEpB,qCACD,CCMC,kDAGC,kCAAmC,CAFnC,cAAe,CACf,eAED,CAbD,gCAgBC,eAMD,CAHC,uCACC,YACD",
                    sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-balloon-panel.ck-tooltip {\n\t/* Keep tooltips transparent for any interactions. */\n\tpointer-events: none;\n\n\tz-index: calc( var(--ck-z-modal) + 100 );\n}\n", '/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../../../mixins/_rounded.css";\n\n.ck.ck-balloon-panel.ck-tooltip {\n\t--ck-balloon-border-width: 0px;\n\t--ck-balloon-arrow-offset: 0px;\n\t--ck-balloon-arrow-half-width: 4px;\n\t--ck-balloon-arrow-height: 4px;\n\t--ck-color-panel-background: var(--ck-color-tooltip-background);\n\n\tpadding: 0 var(--ck-spacing-medium);\n\n\t& .ck-tooltip__text {\n\t\tfont-size: .9em;\n\t\tline-height: 1.5;\n\t\tcolor: var(--ck-color-tooltip-text);\n\t}\n\n\t/* Reset balloon panel styles */\n\tbox-shadow: none;\n\n\t/* Hide the default shadow of the .ck-balloon-panel tip */\n\t&::before {\n\t\tdisplay: none;\n\t}\n}\n'],
                    sourceRoot: ""
                }]);
                const a = s
            },
            4793: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ".ck-hidden{display:none!important}.ck-reset_all :not(.ck-reset_all-excluded *),.ck.ck-reset,.ck.ck-reset_all{box-sizing:border-box;height:auto;position:static;width:auto}:root{--ck-z-default:1;--ck-z-modal:calc(var(--ck-z-default) + 999)}.ck-transitions-disabled,.ck-transitions-disabled *{transition:none!important}:root{--ck-powered-by-line-height:10px;--ck-powered-by-padding-vertical:2px;--ck-powered-by-padding-horizontal:4px;--ck-powered-by-text-color:#4f4f4f;--ck-powered-by-border-radius:var(--ck-border-radius);--ck-powered-by-background:#fff;--ck-powered-by-border-color:var(--ck-color-focus-border)}.ck.ck-balloon-panel.ck-powered-by-balloon{--ck-border-radius:var(--ck-powered-by-border-radius);background:var(--ck-powered-by-background);box-shadow:none;min-height:unset;z-index:calc(var(--ck-z-modal) - 1)}.ck.ck-balloon-panel.ck-powered-by-balloon .ck.ck-powered-by{line-height:var(--ck-powered-by-line-height)}.ck.ck-balloon-panel.ck-powered-by-balloon .ck.ck-powered-by a{align-items:center;cursor:pointer;display:flex;filter:grayscale(80%);line-height:var(--ck-powered-by-line-height);opacity:.66;padding:var(--ck-powered-by-padding-vertical) var(--ck-powered-by-padding-horizontal)}.ck.ck-balloon-panel.ck-powered-by-balloon .ck.ck-powered-by .ck-powered-by__label{color:var(--ck-powered-by-text-color);cursor:pointer;font-size:7.5px;font-weight:700;letter-spacing:-.2px;line-height:normal;margin-right:4px;padding-left:2px;text-transform:uppercase}.ck.ck-balloon-panel.ck-powered-by-balloon .ck.ck-powered-by .ck-icon{cursor:pointer;display:block}.ck.ck-balloon-panel.ck-powered-by-balloon .ck.ck-powered-by:hover a{filter:grayscale(0);opacity:1}.ck.ck-balloon-panel.ck-powered-by-balloon[class*=position_inside]{border-color:transparent}.ck.ck-balloon-panel.ck-powered-by-balloon[class*=position_border]{border:var(--ck-focus-ring);border-color:var(--ck-powered-by-border-color)}:root{--ck-color-base-foreground:#fafafa;--ck-color-base-background:#fff;--ck-color-base-border:#ccced1;--ck-color-base-action:#53a336;--ck-color-base-focus:#6cb5f9;--ck-color-base-text:#333;--ck-color-base-active:#2977ff;--ck-color-base-active-focus:#0d65ff;--ck-color-base-error:#db3700;--ck-color-focus-border-coordinates:218,81.8%,56.9%;--ck-color-focus-border:hsl(var(--ck-color-focus-border-coordinates));--ck-color-focus-outer-shadow:#cae1fc;--ck-color-focus-disabled-shadow:rgba(119,186,248,.3);--ck-color-focus-error-shadow:rgba(255,64,31,.3);--ck-color-text:var(--ck-color-base-text);--ck-color-shadow-drop:rgba(0,0,0,.15);--ck-color-shadow-drop-active:rgba(0,0,0,.2);--ck-color-shadow-inner:rgba(0,0,0,.1);--ck-color-button-default-background:transparent;--ck-color-button-default-hover-background:#f0f0f0;--ck-color-button-default-active-background:#f0f0f0;--ck-color-button-default-disabled-background:transparent;--ck-color-button-on-background:#f0f7ff;--ck-color-button-on-hover-background:#dbecff;--ck-color-button-on-active-background:#dbecff;--ck-color-button-on-disabled-background:#f0f2f4;--ck-color-button-on-color:#2977ff;--ck-color-button-action-background:var(--ck-color-base-action);--ck-color-button-action-hover-background:#4d9d30;--ck-color-button-action-active-background:#4d9d30;--ck-color-button-action-disabled-background:#7ec365;--ck-color-button-action-text:var(--ck-color-base-background);--ck-color-button-save:#008a00;--ck-color-button-cancel:#db3700;--ck-color-switch-button-off-background:#939393;--ck-color-switch-button-off-hover-background:#7d7d7d;--ck-color-switch-button-on-background:var(--ck-color-button-action-background);--ck-color-switch-button-on-hover-background:#4d9d30;--ck-color-switch-button-inner-background:var(--ck-color-base-background);--ck-color-switch-button-inner-shadow:rgba(0,0,0,.1);--ck-color-dropdown-panel-background:var(--ck-color-base-background);--ck-color-dropdown-panel-border:var(--ck-color-base-border);--ck-color-input-background:var(--ck-color-base-background);--ck-color-input-border:var(--ck-color-base-border);--ck-color-input-error-border:var(--ck-color-base-error);--ck-color-input-text:var(--ck-color-base-text);--ck-color-input-disabled-background:#f2f2f2;--ck-color-input-disabled-border:var(--ck-color-base-border);--ck-color-input-disabled-text:#757575;--ck-color-list-background:var(--ck-color-base-background);--ck-color-list-button-hover-background:var(--ck-color-button-default-hover-background);--ck-color-list-button-on-background:var(--ck-color-button-on-color);--ck-color-list-button-on-background-focus:var(--ck-color-button-on-color);--ck-color-list-button-on-text:var(--ck-color-base-background);--ck-color-panel-background:var(--ck-color-base-background);--ck-color-panel-border:var(--ck-color-base-border);--ck-color-toolbar-background:var(--ck-color-base-background);--ck-color-toolbar-border:var(--ck-color-base-border);--ck-color-tooltip-background:var(--ck-color-base-text);--ck-color-tooltip-text:var(--ck-color-base-background);--ck-color-engine-placeholder-text:#707070;--ck-color-upload-bar-background:#6cb5f9;--ck-color-link-default:#0000f0;--ck-color-link-selected-background:rgba(31,176,255,.1);--ck-color-link-fake-selection:rgba(31,176,255,.3);--ck-color-highlight-background:#ff0;--ck-disabled-opacity:.5;--ck-focus-outer-shadow-geometry:0 0 0 3px;--ck-focus-outer-shadow:var(--ck-focus-outer-shadow-geometry) var(--ck-color-focus-outer-shadow);--ck-focus-disabled-outer-shadow:var(--ck-focus-outer-shadow-geometry) var(--ck-color-focus-disabled-shadow);--ck-focus-error-outer-shadow:var(--ck-focus-outer-shadow-geometry) var(--ck-color-focus-error-shadow);--ck-focus-ring:1px solid var(--ck-color-focus-border);--ck-font-size-base:13px;--ck-line-height-base:1.84615;--ck-font-face:Helvetica,Arial,Tahoma,Verdana,Sans-Serif;--ck-font-size-tiny:0.7em;--ck-font-size-small:0.75em;--ck-font-size-normal:1em;--ck-font-size-big:1.4em;--ck-font-size-large:1.8em;--ck-ui-component-min-height:2.3em}.ck-reset_all :not(.ck-reset_all-excluded *),.ck.ck-reset,.ck.ck-reset_all{word-wrap:break-word;background:transparent;border:0;margin:0;padding:0;text-decoration:none;transition:none;vertical-align:middle}.ck-reset_all :not(.ck-reset_all-excluded *),.ck.ck-reset_all{border-collapse:collapse;color:var(--ck-color-text);cursor:auto;float:none;font:normal normal normal var(--ck-font-size-base)/var(--ck-line-height-base) var(--ck-font-face);text-align:left;white-space:nowrap}.ck-reset_all .ck-rtl :not(.ck-reset_all-excluded *){text-align:right}.ck-reset_all iframe:not(.ck-reset_all-excluded *){vertical-align:inherit}.ck-reset_all textarea:not(.ck-reset_all-excluded *){white-space:pre-wrap}.ck-reset_all input[type=password]:not(.ck-reset_all-excluded *),.ck-reset_all input[type=text]:not(.ck-reset_all-excluded *),.ck-reset_all textarea:not(.ck-reset_all-excluded *){cursor:text}.ck-reset_all input[type=password][disabled]:not(.ck-reset_all-excluded *),.ck-reset_all input[type=text][disabled]:not(.ck-reset_all-excluded *),.ck-reset_all textarea[disabled]:not(.ck-reset_all-excluded *){cursor:default}.ck-reset_all fieldset:not(.ck-reset_all-excluded *){border:2px groove #dfdee3;padding:10px}.ck-reset_all button:not(.ck-reset_all-excluded *)::-moz-focus-inner{border:0;padding:0}.ck[dir=rtl],.ck[dir=rtl] .ck{text-align:right}:root{--ck-border-radius:2px;--ck-inner-shadow:2px 2px 3px var(--ck-color-shadow-inner) inset;--ck-drop-shadow:0 1px 2px 1px var(--ck-color-shadow-drop);--ck-drop-shadow-active:0 3px 6px 1px var(--ck-color-shadow-drop-active);--ck-spacing-unit:0.6em;--ck-spacing-large:calc(var(--ck-spacing-unit)*1.5);--ck-spacing-standard:var(--ck-spacing-unit);--ck-spacing-medium:calc(var(--ck-spacing-unit)*0.8);--ck-spacing-small:calc(var(--ck-spacing-unit)*0.5);--ck-spacing-tiny:calc(var(--ck-spacing-unit)*0.3);--ck-spacing-extra-tiny:calc(var(--ck-spacing-unit)*0.16)}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-ui/theme/globals/_hidden.css", "webpack://./../ckeditor5-ui/theme/globals/_reset.css", "webpack://./../ckeditor5-ui/theme/globals/_zindex.css", "webpack://./../ckeditor5-ui/theme/globals/_transition.css", "webpack://./../ckeditor5-ui/theme/globals/_poweredby.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/globals/_colors.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/globals/_disabled.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/globals/_focus.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/globals/_fonts.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/globals/_reset.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/globals/_rounded.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/globals/_shadow.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/globals/_spacing.css"],
                    names: [],
                    mappings: "AAQA,WAGC,sBACD,CCPA,2EAGC,qBAAsB,CAEtB,WAAY,CACZ,eAAgB,CAFhB,UAGD,CCPA,MACC,gBAAiB,CACjB,4CACD,CCAA,oDAEC,yBACD,CCNA,MACC,gCAAiC,CACjC,oCAAqC,CACrC,sCAAuC,CACvC,kCAA2C,CAC3C,qDAAsD,CACtD,+BAA4C,CAC5C,yDACD,CAEA,2CACC,qDAAsD,CAGtD,0CAA2C,CAD3C,eAAgB,CAEhB,gBAAiB,CACjB,mCAiDD,CA/CC,6DACC,4CAoCD,CAlCC,+DAGC,kBAAmB,CAFnB,cAAe,CACf,YAAa,CAGb,qBAAsB,CACtB,4CAA6C,CAF7C,WAAY,CAGZ,qFACD,CAEA,mFASC,qCAAsC,CAFtC,cAAe,CANf,eAAgB,CAIhB,eAAiB,CAHjB,oBAAqB,CAMrB,kBAAmB,CAFnB,gBAAiB,CAHjB,gBAAiB,CACjB,wBAOD,CAEA,sEAEC,cAAe,CADf,aAED,CAGC,qEACC,mBAAqB,CACrB,SACD,CAIF,mEACC,wBACD,CAEA,mEACC,2BAA4B,CAC5B,8CACD,CChED,MACC,kCAAmD,CACnD,+BAAoD,CACpD,8BAAkD,CAClD,8BAAuD,CACvD,6BAAmD,CACnD,yBAA+C,CAC/C,8BAAsD,CACtD,oCAA4D,CAC5D,6BAAkD,CAIlD,mDAA4D,CAC5D,qEAA+E,CAC/E,qCAA4D,CAC5D,qDAA8D,CAC9D,gDAAyD,CACzD,yCAAqD,CACrD,sCAAsD,CACtD,4CAA0D,CAC1D,sCAAsD,CAItD,gDAAuD,CACvD,kDAAiE,CACjE,mDAAkE,CAClE,yDAA8D,CAE9D,uCAA6D,CAC7D,6CAAoE,CACpE,8CAAoE,CACpE,gDAAiE,CACjE,kCAAyD,CAGzD,+DAAsE,CACtE,iDAAsE,CACtE,kDAAsE,CACtE,oDAAoE,CACpE,6DAAsE,CAEtE,8BAAoD,CACpD,gCAAqD,CAErD,+CAA8D,CAC9D,qDAAiE,CACjE,+EAAqF,CACrF,oDAAuE,CACvE,yEAA8E,CAC9E,oDAAgE,CAIhE,oEAA2E,CAC3E,4DAAoE,CAIpE,2DAAoE,CACpE,mDAA6D,CAC7D,wDAAgE,CAChE,+CAA0D,CAC1D,4CAA2D,CAC3D,4DAAoE,CACpE,sCAAsD,CAItD,0DAAmE,CACnE,uFAA6F,CAC7F,oEAA2E,CAC3E,0EAA+E,CAC/E,8DAAsE,CAItE,2DAAoE,CACpE,mDAA6D,CAI7D,6DAAsE,CACtE,qDAA+D,CAI/D,uDAAgE,CAChE,uDAAiE,CAIjE,0CAAyD,CAIzD,wCAA2D,CAI3D,+BAAoD,CACpD,uDAAmE,CACnE,kDAAgE,CAIhE,oCAAwD,CCvGxD,wBAAyB,CCAzB,0CAA2C,CAK3C,gGAAiG,CAKjG,4GAA6G,CAK7G,sGAAuG,CAKvG,sDAAuD,CCvBvD,wBAAyB,CACzB,6BAA8B,CAC9B,wDAA6D,CAE7D,yBAA0B,CAC1B,2BAA4B,CAC5B,yBAA0B,CAC1B,wBAAyB,CACzB,0BAA2B,CCJ3B,kCJuGD,CIjGA,2EAaC,oBAAqB,CANrB,sBAAuB,CADvB,QAAS,CAFT,QAAS,CACT,SAAU,CAGV,oBAAqB,CAErB,eAAgB,CADhB,qBAKD,CAKA,8DAGC,wBAAyB,CAEzB,0BAA2B,CAG3B,WAAY,CACZ,UAAW,CALX,iGAAkG,CAElG,eAAgB,CAChB,kBAGD,CAGC,qDACC,gBACD,CAEA,mDAEC,sBACD,CAEA,qDACC,oBACD,CAEA,mLAGC,WACD,CAEA,iNAGC,cACD,CAEA,qDAEC,yBAAoC,CADpC,YAED,CAEA,qEAGC,QAAQ,CADR,SAED,CAMD,8BAEC,gBACD,CCnFA,MACC,sBAAuB,CCAvB,gEAAiE,CAKjE,0DAA2D,CAK3D,wEAAyE,CCbzE,uBAA8B,CAC9B,mDAA2D,CAC3D,4CAAkD,CAClD,oDAA4D,CAC5D,mDAA2D,CAC3D,kDAA2D,CAC3D,yDFFD",
                    sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A class which hides an element in DOM.\n */\n.ck-hidden {\n\t/* Override selector specificity. Otherwise, all elements with some display\n\tstyle defined will override this one, which is not a desired result. */\n\tdisplay: none !important;\n}\n", "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck.ck-reset,\n.ck.ck-reset_all,\n.ck-reset_all *:not(.ck-reset_all-excluded *) {\n\tbox-sizing: border-box;\n\twidth: auto;\n\theight: auto;\n\tposition: static;\n}\n", "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-z-default: 1;\n\t--ck-z-modal: calc( var(--ck-z-default) + 999 );\n}\n", "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A class that disables all transitions of the element and its children.\n */\n.ck-transitions-disabled,\n.ck-transitions-disabled * {\n\ttransition: none !important;\n}\n", '/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-powered-by-line-height: 10px;\n\t--ck-powered-by-padding-vertical: 2px;\n\t--ck-powered-by-padding-horizontal: 4px;\n\t--ck-powered-by-text-color: hsl(0, 0%, 31%);\n\t--ck-powered-by-border-radius: var(--ck-border-radius);\n\t--ck-powered-by-background: hsl(0, 0%, 100%);\n\t--ck-powered-by-border-color: var(--ck-color-focus-border);\n}\n\n.ck.ck-balloon-panel.ck-powered-by-balloon {\n\t--ck-border-radius: var(--ck-powered-by-border-radius);\n\n\tbox-shadow: none;\n\tbackground: var(--ck-powered-by-background);\n\tmin-height: unset;\n\tz-index: calc( var(--ck-z-modal) - 1 );\n\n\t& .ck.ck-powered-by {\n\t\tline-height: var(--ck-powered-by-line-height);\n\n\t\t& a {\n\t\t\tcursor: pointer;\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\topacity: .66;\n\t\t\tfilter: grayscale(80%);\n\t\t\tline-height: var(--ck-powered-by-line-height);\n\t\t\tpadding: var(--ck-powered-by-padding-vertical) var(--ck-powered-by-padding-horizontal);\n\t\t}\n\n\t\t& .ck-powered-by__label {\n\t\t\tfont-size: 7.5px;\n\t\t\tletter-spacing: -.2px;\n\t\t\tpadding-left: 2px;\n\t\t\ttext-transform: uppercase;\n\t\t\tfont-weight: bold;\n\t\t\tmargin-right: 4px;\n\t\t\tcursor: pointer;\n\t\t\tline-height: normal;\n\t\t\tcolor: var(--ck-powered-by-text-color);\n\n\t\t}\n\n\t\t& .ck-icon {\n\t\t\tdisplay: block;\n\t\t\tcursor: pointer;\n\t\t}\n\n\t\t&:hover {\n\t\t\t& a {\n\t\t\t\tfilter: grayscale(0%);\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\t}\n\n\t&[class*="position_inside"] {\n\t\tborder-color: transparent;\n\t}\n\n\t&[class*="position_border"] {\n\t\tborder: var(--ck-focus-ring);\n\t\tborder-color: var(--ck-powered-by-border-color);\n\t}\n}\n\n', "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-color-base-foreground: \t\t\t\t\t\t\t\thsl(0, 0%, 98%);\n\t--ck-color-base-background: \t\t\t\t\t\t\t\thsl(0, 0%, 100%);\n\t--ck-color-base-border: \t\t\t\t\t\t\t\t\thsl(220, 6%, 81%);\n\t--ck-color-base-action: \t\t\t\t\t\t\t\t\thsl(104, 50.2%, 42.5%);\n\t--ck-color-base-focus: \t\t\t\t\t\t\t\t\t\thsl(209, 92%, 70%);\n\t--ck-color-base-text: \t\t\t\t\t\t\t\t\t\thsl(0, 0%, 20%);\n\t--ck-color-base-active: \t\t\t\t\t\t\t\t\thsl(218.1, 100%, 58%);\n\t--ck-color-base-active-focus:\t\t\t\t\t\t\t\thsl(218.2, 100%, 52.5%);\n\t--ck-color-base-error:\t\t\t\t\t\t\t\t\t\thsl(15, 100%, 43%);\n\n\t/* -- Generic colors ------------------------------------------------------------------------ */\n\n\t--ck-color-focus-border-coordinates: \t\t\t\t\t\t218, 81.8%, 56.9%;\n\t--ck-color-focus-border: \t\t\t\t\t\t\t\t\thsl(var(--ck-color-focus-border-coordinates));\n\t--ck-color-focus-outer-shadow:\t\t\t\t\t\t\t\thsl(212.4, 89.3%, 89%);\n\t--ck-color-focus-disabled-shadow:\t\t\t\t\t\t\thsla(209, 90%, 72%,.3);\n\t--ck-color-focus-error-shadow:\t\t\t\t\t\t\t\thsla(9,100%,56%,.3);\n\t--ck-color-text: \t\t\t\t\t\t\t\t\t\t\tvar(--ck-color-base-text);\n\t--ck-color-shadow-drop: \t\t\t\t\t\t\t\t\thsla(0, 0%, 0%, 0.15);\n\t--ck-color-shadow-drop-active:\t\t\t\t\t\t\t\thsla(0, 0%, 0%, 0.2);\n\t--ck-color-shadow-inner: \t\t\t\t\t\t\t\t\thsla(0, 0%, 0%, 0.1);\n\n\t/* -- Buttons ------------------------------------------------------------------------------- */\n\n\t--ck-color-button-default-background: \t\t\t\t\t\ttransparent;\n\t--ck-color-button-default-hover-background: \t\t\t\thsl(0, 0%, 94.1%);\n\t--ck-color-button-default-active-background: \t\t\t\thsl(0, 0%, 94.1%);\n\t--ck-color-button-default-disabled-background: \t\t\t\ttransparent;\n\n\t--ck-color-button-on-background: \t\t\t\t\t\t\thsl(212, 100%, 97.1%);\n\t--ck-color-button-on-hover-background: \t\t\t\t\t\thsl(211.7, 100%, 92.9%);\n\t--ck-color-button-on-active-background: \t\t\t\t\thsl(211.7, 100%, 92.9%);\n\t--ck-color-button-on-disabled-background: \t\t\t\t\thsl(211, 15%, 95%);\n\t--ck-color-button-on-color:\t\t\t\t\t\t\t\t\thsl(218.1, 100%, 58%);\n\n\n\t--ck-color-button-action-background: \t\t\t\t\t\tvar(--ck-color-base-action);\n\t--ck-color-button-action-hover-background: \t\t\t\t\thsl(104, 53.2%, 40.2%);\n\t--ck-color-button-action-active-background: \t\t\t\thsl(104, 53.2%, 40.2%);\n\t--ck-color-button-action-disabled-background: \t\t\t\thsl(104, 44%, 58%);\n\t--ck-color-button-action-text: \t\t\t\t\t\t\t\tvar(--ck-color-base-background);\n\n\t--ck-color-button-save: \t\t\t\t\t\t\t\t\thsl(120, 100%, 27%);\n\t--ck-color-button-cancel: \t\t\t\t\t\t\t\t\thsl(15, 100%, 43%);\n\n\t--ck-color-switch-button-off-background:\t\t\t\t\thsl(0, 0%, 57.6%);\n\t--ck-color-switch-button-off-hover-background:\t\t\t\thsl(0, 0%, 49%);\n\t--ck-color-switch-button-on-background:\t\t\t\t\t\tvar(--ck-color-button-action-background);\n\t--ck-color-switch-button-on-hover-background:\t\t\t\thsl(104, 53.2%, 40.2%);\n\t--ck-color-switch-button-inner-background:\t\t\t\t\tvar(--ck-color-base-background);\n\t--ck-color-switch-button-inner-shadow:\t\t\t\t\t\thsla(0, 0%, 0%, 0.1);\n\n\t/* -- Dropdown ------------------------------------------------------------------------------ */\n\n\t--ck-color-dropdown-panel-background: \t\t\t\t\t\tvar(--ck-color-base-background);\n\t--ck-color-dropdown-panel-border: \t\t\t\t\t\t\tvar(--ck-color-base-border);\n\n\t/* -- Input --------------------------------------------------------------------------------- */\n\n\t--ck-color-input-background: \t\t\t\t\t\t\t\tvar(--ck-color-base-background);\n\t--ck-color-input-border: \t\t\t\t\t\t\t\t\tvar(--ck-color-base-border);\n\t--ck-color-input-error-border:\t\t\t\t\t\t\t\tvar(--ck-color-base-error);\n\t--ck-color-input-text: \t\t\t\t\t\t\t\t\t\tvar(--ck-color-base-text);\n\t--ck-color-input-disabled-background: \t\t\t\t\t\thsl(0, 0%, 95%);\n\t--ck-color-input-disabled-border: \t\t\t\t\t\t\tvar(--ck-color-base-border);\n\t--ck-color-input-disabled-text: \t\t\t\t\t\t\thsl(0, 0%, 46%);\n\n\t/* -- List ---------------------------------------------------------------------------------- */\n\n\t--ck-color-list-background: \t\t\t\t\t\t\t\tvar(--ck-color-base-background);\n\t--ck-color-list-button-hover-background: \t\t\t\t\tvar(--ck-color-button-default-hover-background);\n\t--ck-color-list-button-on-background: \t\t\t\t\t\tvar(--ck-color-button-on-color);\n\t--ck-color-list-button-on-background-focus: \t\t\t\tvar(--ck-color-button-on-color);\n\t--ck-color-list-button-on-text:\t\t\t\t\t\t\t\tvar(--ck-color-base-background);\n\n\t/* -- Panel --------------------------------------------------------------------------------- */\n\n\t--ck-color-panel-background: \t\t\t\t\t\t\t\tvar(--ck-color-base-background);\n\t--ck-color-panel-border: \t\t\t\t\t\t\t\t\tvar(--ck-color-base-border);\n\n\t/* -- Toolbar ------------------------------------------------------------------------------- */\n\n\t--ck-color-toolbar-background: \t\t\t\t\t\t\t\tvar(--ck-color-base-background);\n\t--ck-color-toolbar-border: \t\t\t\t\t\t\t\t\tvar(--ck-color-base-border);\n\n\t/* -- Tooltip ------------------------------------------------------------------------------- */\n\n\t--ck-color-tooltip-background: \t\t\t\t\t\t\t\tvar(--ck-color-base-text);\n\t--ck-color-tooltip-text: \t\t\t\t\t\t\t\t\tvar(--ck-color-base-background);\n\n\t/* -- Engine -------------------------------------------------------------------------------- */\n\n\t--ck-color-engine-placeholder-text: \t\t\t\t\t\thsl(0, 0%, 44%);\n\n\t/* -- Upload -------------------------------------------------------------------------------- */\n\n\t--ck-color-upload-bar-background:\t\t \t\t\t\t\thsl(209, 92%, 70%);\n\n\t/* -- Link -------------------------------------------------------------------------------- */\n\n\t--ck-color-link-default:\t\t\t\t\t\t\t\t\thsl(240, 100%, 47%);\n\t--ck-color-link-selected-background:\t\t\t\t\t\thsla(201, 100%, 56%, 0.1);\n\t--ck-color-link-fake-selection:\t\t\t\t\t\t\t\thsla(201, 100%, 56%, 0.3);\n\n\t/* -- Search result highlight ---------------------------------------------------------------- */\n\n\t--ck-color-highlight-background:\t\t\t\t\t\t\thsl(60, 100%, 50%)\n}\n", "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t/**\n\t * An opacity value of disabled UI item.\n\t */\n\t--ck-disabled-opacity: .5;\n}\n", "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t/**\n\t * The geometry of the of focused element's outer shadow.\n\t */\n\t--ck-focus-outer-shadow-geometry: 0 0 0 3px;\n\n\t/**\n\t * A visual style of focused element's outer shadow.\n\t */\n\t--ck-focus-outer-shadow: var(--ck-focus-outer-shadow-geometry) var(--ck-color-focus-outer-shadow);\n\n\t/**\n\t * A visual style of focused element's outer shadow (when disabled).\n\t */\n\t--ck-focus-disabled-outer-shadow: var(--ck-focus-outer-shadow-geometry) var(--ck-color-focus-disabled-shadow);\n\n\t/**\n\t * A visual style of focused element's outer shadow (when has errors).\n\t */\n\t--ck-focus-error-outer-shadow: var(--ck-focus-outer-shadow-geometry) var(--ck-color-focus-error-shadow);\n\n\t/**\n\t * A visual style of focused element's border or outline.\n\t */\n\t--ck-focus-ring: 1px solid var(--ck-color-focus-border);\n}\n", "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-font-size-base: 13px;\n\t--ck-line-height-base: 1.84615;\n\t--ck-font-face: Helvetica, Arial, Tahoma, Verdana, Sans-Serif;\n\n\t--ck-font-size-tiny: 0.7em;\n\t--ck-font-size-small: 0.75em;\n\t--ck-font-size-normal: 1em;\n\t--ck-font-size-big: 1.4em;\n\t--ck-font-size-large: 1.8em;\n}\n", '/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t/* This is super-important. This is **manually** adjusted so a button without an icon\n\tis never smaller than a button with icon, additionally making sure that text-less buttons\n\tare perfect squares. The value is also shared by other components which should stay "in-line"\n\twith buttons. */\n\t--ck-ui-component-min-height: 2.3em;\n}\n\n/**\n * Resets an element, ignoring its children.\n */\n.ck.ck-reset,\n.ck.ck-reset_all,\n.ck-reset_all *:not(.ck-reset_all-excluded *) {\n\t/* Do not include inheritable rules here. */\n\tmargin: 0;\n\tpadding: 0;\n\tborder: 0;\n\tbackground: transparent;\n\ttext-decoration: none;\n\tvertical-align: middle;\n\ttransition: none;\n\n\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/105 */\n\tword-wrap: break-word;\n}\n\n/**\n * Resets an element AND its children.\n */\n.ck.ck-reset_all,\n.ck-reset_all *:not(.ck-reset_all-excluded *) {\n\t/* These are rule inherited by all children elements. */\n\tborder-collapse: collapse;\n\tfont: normal normal normal var(--ck-font-size-base)/var(--ck-line-height-base) var(--ck-font-face);\n\tcolor: var(--ck-color-text);\n\ttext-align: left;\n\twhite-space: nowrap;\n\tcursor: auto;\n\tfloat: none;\n}\n\n.ck-reset_all {\n\t& .ck-rtl *:not(.ck-reset_all-excluded *) {\n\t\ttext-align: right;\n\t}\n\n\t& iframe:not(.ck-reset_all-excluded *) {\n\t\t/* For IE */\n\t\tvertical-align: inherit;\n\t}\n\n\t& textarea:not(.ck-reset_all-excluded *) {\n\t\twhite-space: pre-wrap;\n\t}\n\n\t& textarea:not(.ck-reset_all-excluded *),\n\t& input[type="text"]:not(.ck-reset_all-excluded *),\n\t& input[type="password"]:not(.ck-reset_all-excluded *) {\n\t\tcursor: text;\n\t}\n\n\t& textarea[disabled]:not(.ck-reset_all-excluded *),\n\t& input[type="text"][disabled]:not(.ck-reset_all-excluded *),\n\t& input[type="password"][disabled]:not(.ck-reset_all-excluded *) {\n\t\tcursor: default;\n\t}\n\n\t& fieldset:not(.ck-reset_all-excluded *) {\n\t\tpadding: 10px;\n\t\tborder: 2px groove hsl(255, 7%, 88%);\n\t}\n\n\t& button:not(.ck-reset_all-excluded *)::-moz-focus-inner {\n\t\t/* See http://stackoverflow.com/questions/5517744/remove-extra-button-spacing-padding-in-firefox */\n\t\tpadding: 0;\n\t\tborder: 0\n\t}\n}\n\n/**\n * Default UI rules for RTL languages.\n */\n.ck[dir="rtl"],\n.ck[dir="rtl"] .ck {\n\ttext-align: right;\n}\n', "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Default border-radius value.\n */\n:root{\n\t--ck-border-radius: 2px;\n}\n", "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t/**\n\t * A visual style of element's inner shadow (i.e. input).\n\t */\n\t--ck-inner-shadow: 2px 2px 3px var(--ck-color-shadow-inner) inset;\n\n\t/**\n\t * A visual style of element's drop shadow (i.e. panel).\n\t */\n\t--ck-drop-shadow: 0 1px 2px 1px var(--ck-color-shadow-drop);\n\n\t/**\n\t * A visual style of element's active shadow (i.e. comment or suggestion).\n\t */\n\t--ck-drop-shadow-active: 0 3px 6px 1px var(--ck-color-shadow-drop-active);\n}\n", "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-spacing-unit: \t\t\t\t\t\t0.6em;\n\t--ck-spacing-large: \t\t\t\t\tcalc(var(--ck-spacing-unit) * 1.5);\n\t--ck-spacing-standard: \t\t\t\t\tvar(--ck-spacing-unit);\n\t--ck-spacing-medium: \t\t\t\t\tcalc(var(--ck-spacing-unit) * 0.8);\n\t--ck-spacing-small: \t\t\t\t\tcalc(var(--ck-spacing-unit) * 0.5);\n\t--ck-spacing-tiny: \t\t\t\t\t\tcalc(var(--ck-spacing-unit) * 0.3);\n\t--ck-spacing-extra-tiny: \t\t\t\tcalc(var(--ck-spacing-unit) * 0.16);\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            3488: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ":root{--ck-color-resizer:var(--ck-color-focus-border);--ck-color-resizer-tooltip-background:#262626;--ck-color-resizer-tooltip-text:#f2f2f2;--ck-resizer-border-radius:var(--ck-border-radius);--ck-resizer-tooltip-offset:10px;--ck-resizer-tooltip-height:calc(var(--ck-spacing-small)*2 + 10px)}.ck .ck-widget,.ck .ck-widget.ck-widget_with-selection-handle{position:relative}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle{position:absolute}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon{display:block}.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_with-selection-handle:hover>.ck-widget__selection-handle{visibility:visible}.ck .ck-size-view{background:var(--ck-color-resizer-tooltip-background);border:1px solid var(--ck-color-resizer-tooltip-text);border-radius:var(--ck-resizer-border-radius);color:var(--ck-color-resizer-tooltip-text);display:block;font-size:var(--ck-font-size-tiny);height:var(--ck-resizer-tooltip-height);line-height:var(--ck-resizer-tooltip-height);padding:0 var(--ck-spacing-small)}.ck .ck-size-view.ck-orientation-above-center,.ck .ck-size-view.ck-orientation-bottom-left,.ck .ck-size-view.ck-orientation-bottom-right,.ck .ck-size-view.ck-orientation-top-left,.ck .ck-size-view.ck-orientation-top-right{position:absolute}.ck .ck-size-view.ck-orientation-top-left{left:var(--ck-resizer-tooltip-offset);top:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-top-right{right:var(--ck-resizer-tooltip-offset);top:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-bottom-right{bottom:var(--ck-resizer-tooltip-offset);right:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-bottom-left{bottom:var(--ck-resizer-tooltip-offset);left:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-above-center{left:50%;top:calc(var(--ck-resizer-tooltip-height)*-1);transform:translate(-50%)}:root{--ck-widget-outline-thickness:3px;--ck-widget-handler-icon-size:16px;--ck-widget-handler-animation-duration:200ms;--ck-widget-handler-animation-curve:ease;--ck-color-widget-blurred-border:#dedede;--ck-color-widget-hover-border:#ffc83d;--ck-color-widget-editable-focus-background:var(--ck-color-base-background);--ck-color-widget-drag-handler-icon-color:var(--ck-color-base-background)}.ck .ck-widget{outline-color:transparent;outline-style:solid;outline-width:var(--ck-widget-outline-thickness);transition:outline-color var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve)}.ck .ck-widget.ck-widget_selected,.ck .ck-widget.ck-widget_selected:hover{outline:var(--ck-widget-outline-thickness) solid var(--ck-color-focus-border)}.ck .ck-widget:hover{outline-color:var(--ck-color-widget-hover-border)}.ck .ck-editor__nested-editable{border:1px solid transparent}.ck .ck-editor__nested-editable.ck-editor__nested-editable_focused,.ck .ck-editor__nested-editable:focus{background-color:var(--ck-color-widget-editable-focus-background);border:var(--ck-focus-ring);box-shadow:var(--ck-inner-shadow),0 0;outline:none}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle{background-color:transparent;border-radius:var(--ck-border-radius) var(--ck-border-radius) 0 0;box-sizing:border-box;left:calc(0px - var(--ck-widget-outline-thickness));opacity:0;padding:4px;top:0;transform:translateY(-100%);transition:background-color var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),visibility var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),opacity var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve)}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon{color:var(--ck-color-widget-drag-handler-icon-color);height:var(--ck-widget-handler-icon-size);width:var(--ck-widget-handler-icon-size)}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator{opacity:0;transition:opacity .3s var(--ck-widget-handler-animation-curve)}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle:hover .ck-icon .ck-icon__selected-indicator{opacity:1}.ck .ck-widget.ck-widget_with-selection-handle:hover>.ck-widget__selection-handle{background-color:var(--ck-color-widget-hover-border);opacity:1}.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected:hover>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle{background-color:var(--ck-color-focus-border);opacity:1}.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected:hover>.ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator,.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator{opacity:1}.ck[dir=rtl] .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle{left:auto;right:calc(0px - var(--ck-widget-outline-thickness))}.ck.ck-editor__editable.ck-read-only .ck-widget{transition:none}.ck.ck-editor__editable.ck-read-only .ck-widget:not(.ck-widget_selected){--ck-widget-outline-thickness:0px}.ck.ck-editor__editable.ck-read-only .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle,.ck.ck-editor__editable.ck-read-only .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle:hover{background:var(--ck-color-widget-blurred-border)}.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected:hover{outline-color:var(--ck-color-widget-blurred-border)}.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected.ck-widget_with-selection-handle:hover>.ck-widget__selection-handle,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected.ck-widget_with-selection-handle:hover>.ck-widget__selection-handle:hover,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected.ck-widget_with-selection-handle>.ck-widget__selection-handle,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected.ck-widget_with-selection-handle>.ck-widget__selection-handle:hover{background:var(--ck-color-widget-blurred-border)}.ck.ck-editor__editable blockquote>.ck-widget.ck-widget_with-selection-handle:first-child,.ck.ck-editor__editable>.ck-widget.ck-widget_with-selection-handle:first-child{margin-top:calc(1em + var(--ck-widget-handler-icon-size))}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-widget/theme/widget.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-widget/widget.css", "webpack://./../ckeditor5-theme-lark/theme/mixins/_focus.css", "webpack://./../ckeditor5-theme-lark/theme/mixins/_shadow.css"],
                    names: [],
                    mappings: "AAKA,MACC,+CAAgD,CAChD,6CAAsD,CACtD,uCAAgD,CAEhD,kDAAmD,CACnD,gCAAiC,CACjC,kEACD,CAOA,8DAEC,iBAqBD,CAnBC,4EACC,iBAOD,CALC,qFAGC,aACD,CASD,iLACC,kBACD,CAGD,kBACC,qDAAsD,CAEtD,qDAAsD,CACtD,6CAA8C,CAF9C,0CAA2C,CAI3C,aAAc,CADd,kCAAmC,CAGnC,uCAAwC,CACxC,4CAA6C,CAF7C,iCAsCD,CAlCC,8NAKC,iBACD,CAEA,0CAEC,qCAAsC,CADtC,oCAED,CAEA,2CAEC,sCAAuC,CADvC,oCAED,CAEA,8CACC,uCAAwC,CACxC,sCACD,CAEA,6CACC,uCAAwC,CACxC,qCACD,CAGA,8CAEC,QAAS,CADT,6CAAgD,CAEhD,yBACD,CCjFD,MACC,iCAAkC,CAClC,kCAAmC,CACnC,4CAA6C,CAC7C,wCAAyC,CAEzC,wCAAiD,CACjD,sCAAkD,CAClD,2EAA4E,CAC5E,yEACD,CAEA,eAGC,yBAA0B,CAD1B,mBAAoB,CADpB,gDAAiD,CAGjD,6GAUD,CARC,0EAEC,6EACD,CAEA,qBACC,iDACD,CAGD,gCACC,4BAWD,CAPC,yGAKC,iEAAkE,CCnCnE,2BAA2B,CCF3B,qCAA8B,CDC9B,YDqCA,CAIA,4EAKC,4BAA6B,CAa7B,iEAAkE,CAhBlE,qBAAsB,CAoBtB,mDAAoD,CAhBpD,SAAU,CALV,WAAY,CAsBZ,KAAM,CAFN,2BAA4B,CAT5B,6SAgCD,CAnBC,qFAIC,oDAAqD,CADrD,yCAA0C,CAD1C,wCAWD,CANC,kHACC,SAAU,CAGV,+DACD,CAID,wHACC,SACD,CAID,kFAEC,oDAAqD,CADrD,SAED,CAKC,oMAEC,6CAA8C,CAD9C,SAOD,CAHC,gRACC,SACD,CAOH,qFACC,SAAU,CACV,oDACD,CAGA,gDAEC,eAkBD,CAhBC,yEAOC,iCACD,CAGC,gOAEC,gDACD,CAOD,wIAEC,mDAQD,CALE,ghBAEC,gDACD,CAKH,yKAOC,yDACD",
                    sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-color-resizer: var(--ck-color-focus-border);\n\t--ck-color-resizer-tooltip-background: hsl(0, 0%, 15%);\n\t--ck-color-resizer-tooltip-text: hsl(0, 0%, 95%);\n\n\t--ck-resizer-border-radius: var(--ck-border-radius);\n\t--ck-resizer-tooltip-offset: 10px;\n\t--ck-resizer-tooltip-height: calc(var(--ck-spacing-small) * 2 + 10px);\n}\n\n.ck .ck-widget {\n\t/* This is neccessary for type around UI to be positioned properly. */\n\tposition: relative;\n}\n\n.ck .ck-widget.ck-widget_with-selection-handle {\n\t/* Make the widget wrapper a relative positioning container for the drag handle. */\n\tposition: relative;\n\n\t& .ck-widget__selection-handle {\n\t\tposition: absolute;\n\n\t\t& .ck-icon {\n\t\t\t/* Make sure the icon in not a subject to font-size or line-height to avoid\n\t\t\tunnecessary spacing around it. */\n\t\t\tdisplay: block;\n\t\t}\n\t}\n\n\t/* Show the selection handle on mouse hover over the widget, but not for nested widgets. */\n\t&:hover > .ck-widget__selection-handle {\n\t\tvisibility: visible;\n\t}\n\n\t/* Show the selection handle when the widget is selected, but not for nested widgets. */\n\t&.ck-widget_selected > .ck-widget__selection-handle {\n\t\tvisibility: visible;\n\t}\n}\n\n.ck .ck-size-view {\n\tbackground: var(--ck-color-resizer-tooltip-background);\n\tcolor: var(--ck-color-resizer-tooltip-text);\n\tborder: 1px solid var(--ck-color-resizer-tooltip-text);\n\tborder-radius: var(--ck-resizer-border-radius);\n\tfont-size: var(--ck-font-size-tiny);\n\tdisplay: block;\n\tpadding: 0 var(--ck-spacing-small);\n\theight: var(--ck-resizer-tooltip-height);\n\tline-height: var(--ck-resizer-tooltip-height);\n\n\t&.ck-orientation-top-left,\n\t&.ck-orientation-top-right,\n\t&.ck-orientation-bottom-right,\n\t&.ck-orientation-bottom-left,\n\t&.ck-orientation-above-center {\n\t\tposition: absolute;\n\t}\n\n\t&.ck-orientation-top-left {\n\t\ttop: var(--ck-resizer-tooltip-offset);\n\t\tleft: var(--ck-resizer-tooltip-offset);\n\t}\n\n\t&.ck-orientation-top-right {\n\t\ttop: var(--ck-resizer-tooltip-offset);\n\t\tright: var(--ck-resizer-tooltip-offset);\n\t}\n\n\t&.ck-orientation-bottom-right {\n\t\tbottom: var(--ck-resizer-tooltip-offset);\n\t\tright: var(--ck-resizer-tooltip-offset);\n\t}\n\n\t&.ck-orientation-bottom-left {\n\t\tbottom: var(--ck-resizer-tooltip-offset);\n\t\tleft: var(--ck-resizer-tooltip-offset);\n\t}\n\n\t/* Class applied if the widget is too small to contain the size label */\n\t&.ck-orientation-above-center {\n\t\ttop: calc(var(--ck-resizer-tooltip-height) * -1);\n\t\tleft: 50%;\n\t\ttransform: translate(-50%);\n\t}\n}\n", '/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n@import "../mixins/_focus.css";\n@import "../mixins/_shadow.css";\n\n:root {\n\t--ck-widget-outline-thickness: 3px;\n\t--ck-widget-handler-icon-size: 16px;\n\t--ck-widget-handler-animation-duration: 200ms;\n\t--ck-widget-handler-animation-curve: ease;\n\n\t--ck-color-widget-blurred-border: hsl(0, 0%, 87%);\n\t--ck-color-widget-hover-border: hsl(43, 100%, 62%);\n\t--ck-color-widget-editable-focus-background: var(--ck-color-base-background);\n\t--ck-color-widget-drag-handler-icon-color: var(--ck-color-base-background);\n}\n\n.ck .ck-widget {\n\toutline-width: var(--ck-widget-outline-thickness);\n\toutline-style: solid;\n\toutline-color: transparent;\n\ttransition: outline-color var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve);\n\n\t&.ck-widget_selected,\n\t&.ck-widget_selected:hover {\n\t\toutline: var(--ck-widget-outline-thickness) solid var(--ck-color-focus-border);\n\t}\n\n\t&:hover {\n\t\toutline-color: var(--ck-color-widget-hover-border);\n\t}\n}\n\n.ck .ck-editor__nested-editable {\n\tborder: 1px solid transparent;\n\n\t/* The :focus style is applied before .ck-editor__nested-editable_focused class is rendered in the view.\n\tThese styles show a different border for a blink of an eye, so `:focus` need to have same styles applied. */\n\t&.ck-editor__nested-editable_focused,\n\t&:focus {\n\t\t@mixin ck-focus-ring;\n\t\t@mixin ck-box-shadow var(--ck-inner-shadow);\n\n\t\tbackground-color: var(--ck-color-widget-editable-focus-background);\n\t}\n}\n\n.ck .ck-widget.ck-widget_with-selection-handle {\n\t& .ck-widget__selection-handle {\n\t\tpadding: 4px;\n\t\tbox-sizing: border-box;\n\n\t\t/* Background and opacity will be animated as the handler shows up or the widget gets selected. */\n\t\tbackground-color: transparent;\n\t\topacity: 0;\n\n\t\t/* Transition:\n\t\t   * background-color for the .ck-widget_selected state change,\n\t\t   * visibility for hiding the handler,\n\t\t   * opacity for the proper look of the icon when the handler disappears. */\n\t\ttransition:\n\t\t\tbackground-color var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),\n\t\t\tvisibility var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),\n\t\t\topacity var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve);\n\n\t\t/* Make only top corners round. */\n\t\tborder-radius: var(--ck-border-radius) var(--ck-border-radius) 0 0;\n\n\t\t/* Place the drag handler outside the widget wrapper. */\n\t\ttransform: translateY(-100%);\n\t\tleft: calc(0px - var(--ck-widget-outline-thickness));\n\t\ttop: 0;\n\n\t\t& .ck-icon {\n\t\t\t/* Make sure the dimensions of the icon are independent of the fon-size of the content. */\n\t\t\twidth: var(--ck-widget-handler-icon-size);\n\t\t\theight: var(--ck-widget-handler-icon-size);\n\t\t\tcolor: var(--ck-color-widget-drag-handler-icon-color);\n\n\t\t\t/* The "selected" part of the icon is invisible by default */\n\t\t\t& .ck-icon__selected-indicator {\n\t\t\t\topacity: 0;\n\n\t\t\t\t/* Note: The animation is longer on purpose. Simply feels better. */\n\t\t\t\ttransition: opacity 300ms var(--ck-widget-handler-animation-curve);\n\t\t\t}\n\t\t}\n\n\t\t/* Advertise using the look of the icon that once clicked the handler, the widget will be selected. */\n\t\t&:hover .ck-icon .ck-icon__selected-indicator {\n\t\t\topacity: 1;\n\t\t}\n\t}\n\n\t/* Show the selection handler on mouse hover over the widget, but not for nested widgets. */\n\t&:hover > .ck-widget__selection-handle {\n\t\topacity: 1;\n\t\tbackground-color: var(--ck-color-widget-hover-border);\n\t}\n\n\t/* Show the selection handler when the widget is selected, but not for nested widgets. */\n\t&.ck-widget_selected,\n\t&.ck-widget_selected:hover {\n\t\t& > .ck-widget__selection-handle {\n\t\t\topacity: 1;\n\t\t\tbackground-color: var(--ck-color-focus-border);\n\n\t\t\t/* When the widget is selected, notify the user using the proper look of the icon. */\n\t\t\t& .ck-icon .ck-icon__selected-indicator {\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/* In a RTL environment, align the selection handler to the right side of the widget */\n/* stylelint-disable-next-line no-descending-specificity */\n.ck[dir="rtl"] .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle {\n\tleft: auto;\n\tright: calc(0px - var(--ck-widget-outline-thickness));\n}\n\n/* https://github.com/ckeditor/ckeditor5/issues/6415 */\n.ck.ck-editor__editable.ck-read-only .ck-widget {\n\t/* Prevent the :hover outline from showing up because of the used outline-color transition. */\n\ttransition: none;\n\n\t&:not(.ck-widget_selected) {\n\t\t/* Disable visual effects of hover/active widget when CKEditor is in readOnly mode.\n\t\t * See: https://github.com/ckeditor/ckeditor5/issues/1261\n\t\t *\n\t\t * Leave the unit because this custom property is used in calc() by other features.\n\t\t * See: https://github.com/ckeditor/ckeditor5/issues/6775\n\t\t */\n\t\t--ck-widget-outline-thickness: 0px;\n\t}\n\n\t&.ck-widget_with-selection-handle {\n\t\t& .ck-widget__selection-handle,\n\t\t& .ck-widget__selection-handle:hover {\n\t\t\tbackground: var(--ck-color-widget-blurred-border);\n\t\t}\n\t}\n}\n\n/* Style the widget when it\'s selected but the editable it belongs to lost focus. */\n/* stylelint-disable-next-line no-descending-specificity */\n.ck.ck-editor__editable.ck-blurred .ck-widget {\n\t&.ck-widget_selected,\n\t&.ck-widget_selected:hover {\n\t\toutline-color: var(--ck-color-widget-blurred-border);\n\n\t\t&.ck-widget_with-selection-handle {\n\t\t\t& > .ck-widget__selection-handle,\n\t\t\t& > .ck-widget__selection-handle:hover {\n\t\t\t\tbackground: var(--ck-color-widget-blurred-border);\n\t\t\t}\n\t\t}\n\t}\n}\n\n.ck.ck-editor__editable > .ck-widget.ck-widget_with-selection-handle:first-child,\n.ck.ck-editor__editable blockquote > .ck-widget.ck-widget_with-selection-handle:first-child {\n\t/* Do not crop selection handler if a widget is a first-child in the blockquote or in the root editable.\n\tIn fact, anything with overflow: hidden.\n\thttps://github.com/ckeditor/ckeditor5-block-quote/issues/28\n\thttps://github.com/ckeditor/ckeditor5-widget/issues/44\n\thttps://github.com/ckeditor/ckeditor5-widget/issues/66 */\n\tmargin-top: calc(1em + var(--ck-widget-handler-icon-size));\n}\n', "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A visual style of focused element's border.\n */\n@define-mixin ck-focus-ring {\n\t/* Disable native outline. */\n\toutline: none;\n\tborder: var(--ck-focus-ring)\n}\n", "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A helper to combine multiple shadows.\n */\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\n\tbox-shadow: $shadowA, $shadowB;\n}\n\n/**\n * Gives an element a drop shadow so it looks like a floating panel.\n */\n@define-mixin ck-drop-shadow {\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            8506: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, ".ck .ck-widget_with-resizer{position:relative}.ck .ck-widget__resizer{display:none;left:0;pointer-events:none;position:absolute;top:0}.ck-focused .ck-widget_with-resizer.ck-widget_selected>.ck-widget__resizer{display:block}.ck .ck-widget__resizer__handle{pointer-events:all;position:absolute}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-bottom-right,.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-top-left{cursor:nwse-resize}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-bottom-left,.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-top-right{cursor:nesw-resize}:root{--ck-resizer-size:10px;--ck-resizer-offset:calc(var(--ck-resizer-size)/-2 - 2px);--ck-resizer-border-width:1px}.ck .ck-widget__resizer{outline:1px solid var(--ck-color-resizer)}.ck .ck-widget__resizer__handle{background:var(--ck-color-focus-border);border:var(--ck-resizer-border-width) solid #fff;border-radius:var(--ck-resizer-border-radius);height:var(--ck-resizer-size);width:var(--ck-resizer-size)}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-top-left{left:var(--ck-resizer-offset);top:var(--ck-resizer-offset)}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-top-right{right:var(--ck-resizer-offset);top:var(--ck-resizer-offset)}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-bottom-right{bottom:var(--ck-resizer-offset);right:var(--ck-resizer-offset)}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-bottom-left{bottom:var(--ck-resizer-offset);left:var(--ck-resizer-offset)}", "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-widget/theme/widgetresize.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-widget/widgetresize.css"],
                    names: [],
                    mappings: "AAKA,4BAEC,iBACD,CAEA,wBACC,YAAa,CAMb,MAAO,CAFP,mBAAoB,CAHpB,iBAAkB,CAMlB,KACD,CAGC,2EACC,aACD,CAGD,gCAIC,kBAAmB,CAHnB,iBAcD,CATC,4IAEC,kBACD,CAEA,4IAEC,kBACD,CCpCD,MACC,sBAAuB,CAGvB,yDAAiE,CACjE,6BACD,CAEA,wBACC,yCACD,CAEA,gCAGC,uCAAwC,CACxC,gDAA6D,CAC7D,6CAA8C,CAH9C,6BAA8B,CAD9B,4BAyBD,CAnBC,oEAEC,6BAA8B,CAD9B,4BAED,CAEA,qEAEC,8BAA+B,CAD/B,4BAED,CAEA,wEACC,+BAAgC,CAChC,8BACD,CAEA,uEACC,+BAAgC,CAChC,6BACD",
                    sourcesContent: ["/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck .ck-widget_with-resizer {\n\t/* Make the widget wrapper a relative positioning container for the drag handle. */\n\tposition: relative;\n}\n\n.ck .ck-widget__resizer {\n\tdisplay: none;\n\tposition: absolute;\n\n\t/* The wrapper itself should not interfere with the pointer device, only the handles should. */\n\tpointer-events: none;\n\n\tleft: 0;\n\ttop: 0;\n}\n\n.ck-focused .ck-widget_with-resizer.ck-widget_selected {\n\t& > .ck-widget__resizer {\n\t\tdisplay: block;\n\t}\n}\n\n.ck .ck-widget__resizer__handle {\n\tposition: absolute;\n\n\t/* Resizers are the only UI elements that should interfere with a pointer device. */\n\tpointer-events: all;\n\n\t&.ck-widget__resizer__handle-top-left,\n\t&.ck-widget__resizer__handle-bottom-right {\n\t\tcursor: nwse-resize;\n\t}\n\n\t&.ck-widget__resizer__handle-top-right,\n\t&.ck-widget__resizer__handle-bottom-left {\n\t\tcursor: nesw-resize;\n\t}\n}\n", "/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-resizer-size: 10px;\n\n\t/* Set the resizer with a 50% offset. */\n\t--ck-resizer-offset: calc( ( var(--ck-resizer-size) / -2 ) - 2px);\n\t--ck-resizer-border-width: 1px;\n}\n\n.ck .ck-widget__resizer {\n\toutline: 1px solid var(--ck-color-resizer);\n}\n\n.ck .ck-widget__resizer__handle {\n\twidth: var(--ck-resizer-size);\n\theight: var(--ck-resizer-size);\n\tbackground: var(--ck-color-focus-border);\n\tborder: var(--ck-resizer-border-width) solid hsl(0, 0%, 100%);\n\tborder-radius: var(--ck-resizer-border-radius);\n\n\t&.ck-widget__resizer__handle-top-left {\n\t\ttop: var(--ck-resizer-offset);\n\t\tleft: var(--ck-resizer-offset);\n\t}\n\n\t&.ck-widget__resizer__handle-top-right {\n\t\ttop: var(--ck-resizer-offset);\n\t\tright: var(--ck-resizer-offset);\n\t}\n\n\t&.ck-widget__resizer__handle-bottom-right {\n\t\tbottom: var(--ck-resizer-offset);\n\t\tright: var(--ck-resizer-offset);\n\t}\n\n\t&.ck-widget__resizer__handle-bottom-left {\n\t\tbottom: var(--ck-resizer-offset);\n\t\tleft: var(--ck-resizer-offset);\n\t}\n}\n"],
                    sourceRoot: ""
                }]);
                const a = s
            },
            4921: (t, e, n) => {
                "use strict";
                n.d(e, {
                    Z: () => a
                });
                var o = n(1799),
                    i = n.n(o),
                    r = n(2609),
                    s = n.n(r)()(i());
                s.push([t.id, '.ck .ck-widget .ck-widget__type-around__button{display:block;overflow:hidden;position:absolute;z-index:var(--ck-z-default)}.ck .ck-widget .ck-widget__type-around__button svg{left:50%;position:absolute;top:50%;z-index:calc(var(--ck-z-default) + 2)}.ck .ck-widget .ck-widget__type-around__button.ck-widget__type-around__button_before{left:min(10%,30px);top:calc(var(--ck-widget-outline-thickness)*-.5);transform:translateY(-50%)}.ck .ck-widget .ck-widget__type-around__button.ck-widget__type-around__button_after{bottom:calc(var(--ck-widget-outline-thickness)*-.5);right:min(10%,30px);transform:translateY(50%)}.ck .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button:after,.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__button:hover:after{content:"";display:block;left:1px;position:absolute;top:1px;z-index:calc(var(--ck-z-default) + 1)}.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__fake-caret{display:none;left:0;position:absolute;right:0}.ck .ck-widget:hover>.ck-widget__type-around>.ck-widget__type-around__fake-caret{left:calc(var(--ck-widget-outline-thickness)*-1);right:calc(var(--ck-widget-outline-thickness)*-1)}.ck .ck-widget.ck-widget_type-around_show-fake-caret_before>.ck-widget__type-around>.ck-widget__type-around__fake-caret{display:block;top:calc(var(--ck-widget-outline-thickness)*-1 - 1px)}.ck .ck-widget.ck-widget_type-around_show-fake-caret_after>.ck-widget__type-around>.ck-widget__type-around__fake-caret{bottom:calc(var(--ck-widget-outline-thickness)*-1 - 1px);display:block}.ck.ck-editor__editable.ck-read-only .ck-widget__type-around,.ck.ck-editor__editable.ck-restricted-editing_mode_restricted .ck-widget__type-around,.ck.ck-editor__editable.ck-widget__type-around_disabled .ck-widget__type-around{display:none}:root{--ck-widget-type-around-button-size:20px;--ck-color-widget-type-around-button-active:var(--ck-color-focus-border);--ck-color-widget-type-around-button-hover:var(--ck-color-widget-hover-border);--ck-color-widget-type-around-button-blurred-editable:var(--ck-color-widget-blurred-border);--ck-color-widget-type-around-button-radar-start-alpha:0;--ck-color-widget-type-around-button-radar-end-alpha:.3;--ck-color-widget-type-around-button-icon:var(--ck-color-base-background)}.ck .ck-widget .ck-widget__type-around__button{background:var(--ck-color-widget-type-around-button);border-radius:100px;height:var(--ck-widget-type-around-button-size);opacity:0;pointer-events:none;transition:opacity var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),background var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve);width:var(--ck-widget-type-around-button-size)}.ck .ck-widget .ck-widget__type-around__button svg{height:8px;margin-top:1px;transform:translate(-50%,-50%);transition:transform .5s ease;width:10px}.ck .ck-widget .ck-widget__type-around__button svg *{stroke-dasharray:10;stroke-dashoffset:0;fill:none;stroke:var(--ck-color-widget-type-around-button-icon);stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round}.ck .ck-widget .ck-widget__type-around__button svg line{stroke-dasharray:7}.ck .ck-widget .ck-widget__type-around__button:hover{animation:ck-widget-type-around-button-sonar 1s ease infinite}.ck .ck-widget .ck-widget__type-around__button:hover svg polyline{animation:ck-widget-type-around-arrow-dash 2s linear}.ck .ck-widget .ck-widget__type-around__button:hover svg line{animation:ck-widget-type-around-arrow-tip-dash 2s linear}.ck .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button,.ck .ck-widget:hover>.ck-widget__type-around>.ck-widget__type-around__button{opacity:1;pointer-events:auto}.ck .ck-widget:not(.ck-widget_selected)>.ck-widget__type-around>.ck-widget__type-around__button{background:var(--ck-color-widget-type-around-button-hover)}.ck .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button,.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__button:hover{background:var(--ck-color-widget-type-around-button-active)}.ck .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button:after,.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__button:hover:after{background:linear-gradient(135deg,hsla(0,0%,100%,0),hsla(0,0%,100%,.3));border-radius:100px;height:calc(var(--ck-widget-type-around-button-size) - 2px);width:calc(var(--ck-widget-type-around-button-size) - 2px)}.ck .ck-widget.ck-widget_with-selection-handle>.ck-widget__type-around>.ck-widget__type-around__button_before{margin-left:20px}.ck .ck-widget .ck-widget__type-around__fake-caret{animation:ck-widget-type-around-fake-caret-pulse 1s linear infinite normal forwards;background:var(--ck-color-base-text);height:1px;outline:1px solid hsla(0,0%,100%,.5);pointer-events:none}.ck .ck-widget.ck-widget_selected.ck-widget_type-around_show-fake-caret_after,.ck .ck-widget.ck-widget_selected.ck-widget_type-around_show-fake-caret_before{outline-color:transparent}.ck .ck-widget.ck-widget_type-around_show-fake-caret_after.ck-widget_selected:hover,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before.ck-widget_selected:hover{outline-color:var(--ck-color-widget-hover-border)}.ck .ck-widget.ck-widget_type-around_show-fake-caret_after>.ck-widget__type-around>.ck-widget__type-around__button,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before>.ck-widget__type-around>.ck-widget__type-around__button{opacity:0;pointer-events:none}.ck .ck-widget.ck-widget_type-around_show-fake-caret_after.ck-widget_selected.ck-widget_with-resizer>.ck-widget__resizer,.ck .ck-widget.ck-widget_type-around_show-fake-caret_after.ck-widget_with-selection-handle.ck-widget_selected:hover>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_type-around_show-fake-caret_after.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before.ck-widget_selected.ck-widget_with-resizer>.ck-widget__resizer,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before.ck-widget_with-selection-handle.ck-widget_selected:hover>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle{opacity:0}.ck[dir=rtl] .ck-widget.ck-widget_with-selection-handle .ck-widget__type-around>.ck-widget__type-around__button_before{margin-left:0;margin-right:20px}.ck-editor__nested-editable.ck-editor__editable_selected .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button,.ck-editor__nested-editable.ck-editor__editable_selected .ck-widget:hover>.ck-widget__type-around>.ck-widget__type-around__button{opacity:0;pointer-events:none}.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button:not(:hover){background:var(--ck-color-widget-type-around-button-blurred-editable)}.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button:not(:hover) svg *{stroke:#999}@keyframes ck-widget-type-around-arrow-dash{0%{stroke-dashoffset:10}20%,to{stroke-dashoffset:0}}@keyframes ck-widget-type-around-arrow-tip-dash{0%,20%{stroke-dashoffset:7}40%,to{stroke-dashoffset:0}}@keyframes ck-widget-type-around-button-sonar{0%{box-shadow:0 0 0 0 hsla(var(--ck-color-focus-border-coordinates),var(--ck-color-widget-type-around-button-radar-start-alpha))}50%{box-shadow:0 0 0 5px hsla(var(--ck-color-focus-border-coordinates),var(--ck-color-widget-type-around-button-radar-end-alpha))}to{box-shadow:0 0 0 5px hsla(var(--ck-color-focus-border-coordinates),var(--ck-color-widget-type-around-button-radar-start-alpha))}}@keyframes ck-widget-type-around-fake-caret-pulse{0%{opacity:1}49%{opacity:1}50%{opacity:0}99%{opacity:0}to{opacity:1}}', "", {
                    version: 3,
                    sources: ["webpack://./../ckeditor5-widget/theme/widgettypearound.css", "webpack://./../ckeditor5-theme-lark/theme/ckeditor5-widget/widgettypearound.css"],
                    names: [],
                    mappings: "AASC,+CACC,aAAc,CAEd,eAAgB,CADhB,iBAAkB,CAElB,2BAwBD,CAtBC,mDAGC,QAAS,CAFT,iBAAkB,CAClB,OAAQ,CAER,qCACD,CAEA,qFAGC,kBAAoB,CADpB,gDAAoD,CAGpD,0BACD,CAEA,oFAEC,mDAAuD,CACvD,mBAAqB,CAErB,yBACD,CAUA,mLACC,UAAW,CACX,aAAc,CAGd,QAAS,CAFT,iBAAkB,CAClB,OAAQ,CAER,qCACD,CAMD,2EACC,YAAa,CAEb,MAAO,CADP,iBAAkB,CAElB,OACD,CAOA,iFACC,gDAAqD,CACrD,iDACD,CAKA,wHAEC,aAAc,CADd,qDAED,CAKA,uHACC,wDAA6D,CAC7D,aACD,CAoBD,mOACC,YACD,CC3GA,MACC,wCAAyC,CACzC,wEAAyE,CACzE,8EAA+E,CAC/E,2FAA4F,CAC5F,wDAAyD,CACzD,uDAAwD,CACxD,yEACD,CAgBC,+CAGC,oDAAqD,CACrD,mBAAoB,CAFpB,+CAAgD,CAVjD,SAAU,CACV,mBAAoB,CAYnB,uMAAyM,CAJzM,8CAkDD,CA1CC,mDAEC,UAAW,CAGX,cAAe,CAFf,8BAA+B,CAC/B,6BAA8B,CAH9B,UAoBD,CAdC,qDACC,mBAAoB,CACpB,mBAAoB,CAEpB,SAAU,CACV,qDAAsD,CACtD,kBAAmB,CACnB,oBAAqB,CACrB,qBACD,CAEA,wDACC,kBACD,CAGD,qDAIC,6DAcD,CARE,kEACC,oDACD,CAEA,8DACC,wDACD,CAUF,uKAvED,SAAU,CACV,mBAwEC,CAOD,gGACC,0DACD,CAOA,uKAEC,2DAQD,CANC,mLAIC,uEAAkF,CADlF,mBAAoB,CADpB,2DAA4D,CAD5D,0DAID,CAOD,8GACC,gBACD,CAKA,mDAGC,mFAAoF,CAOpF,oCAAqC,CARrC,UAAW,CAOX,oCAAwC,CARxC,mBAUD,CAOC,6JAEC,yBACD,CAUA,yKACC,iDACD,CAMA,uOAlJD,SAAU,CACV,mBAmJC,CAoBA,6yBACC,SACD,CASF,uHACC,aAAc,CACd,iBACD,CAYG,iRAlMF,SAAU,CACV,mBAmME,CAQH,kIACC,qEAKD,CAHC,wIACC,WACD,CAGD,4CACC,GACC,oBACD,CACA,OACC,mBACD,CACD,CAEA,gDACC,OACC,mBACD,CACA,OACC,mBACD,CACD,CAEA,8CACC,GACC,6HACD,CACA,IACC,6HACD,CACA,GACC,+HACD,CACD,CAEA,kDACC,GACC,SACD,CACA,IACC,SACD,CACA,IACC,SACD,CACA,IACC,SACD,CACA,GACC,SACD,CACD",
                    sourcesContent: ['/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck .ck-widget {\n\t/*\n\t * Styles of the type around buttons\n\t */\n\t& .ck-widget__type-around__button {\n\t\tdisplay: block;\n\t\tposition: absolute;\n\t\toverflow: hidden;\n\t\tz-index: var(--ck-z-default);\n\n\t\t& svg {\n\t\t\tposition: absolute;\n\t\t\ttop: 50%;\n\t\t\tleft: 50%;\n\t\t\tz-index: calc(var(--ck-z-default) + 2);\n\t\t}\n\n\t\t&.ck-widget__type-around__button_before {\n\t\t\t/* Place it in the middle of the outline */\n\t\t\ttop: calc(-0.5 * var(--ck-widget-outline-thickness));\n\t\t\tleft: min(10%, 30px);\n\n\t\t\ttransform: translateY(-50%);\n\t\t}\n\n\t\t&.ck-widget__type-around__button_after {\n\t\t\t/* Place it in the middle of the outline */\n\t\t\tbottom: calc(-0.5 * var(--ck-widget-outline-thickness));\n\t\t\tright: min(10%, 30px);\n\n\t\t\ttransform: translateY(50%);\n\t\t}\n\t}\n\n\t/*\n\t * Styles for the buttons when:\n\t * - the widget is selected,\n\t * - or the button is being hovered (regardless of the widget state).\n\t */\n\t&.ck-widget_selected > .ck-widget__type-around > .ck-widget__type-around__button,\n\t& > .ck-widget__type-around > .ck-widget__type-around__button:hover {\n\t\t&::after {\n\t\t\tcontent: "";\n\t\t\tdisplay: block;\n\t\t\tposition: absolute;\n\t\t\ttop: 1px;\n\t\t\tleft: 1px;\n\t\t\tz-index: calc(var(--ck-z-default) + 1);\n\t\t}\n\t}\n\n\t/*\n\t * Styles for the horizontal "fake caret" which is displayed when the user navigates using the keyboard.\n\t */\n\t& > .ck-widget__type-around > .ck-widget__type-around__fake-caret {\n\t\tdisplay: none;\n\t\tposition: absolute;\n\t\tleft: 0;\n\t\tright: 0;\n\t}\n\n\t/*\n\t * When the widget is hovered the "fake caret" would normally be narrower than the\n\t * extra outline displayed around the widget. Let\'s extend the "fake caret" to match\n\t * the full width of the widget.\n\t */\n\t&:hover > .ck-widget__type-around > .ck-widget__type-around__fake-caret {\n\t\tleft: calc( -1 * var(--ck-widget-outline-thickness) );\n\t\tright: calc( -1 * var(--ck-widget-outline-thickness) );\n\t}\n\n\t/*\n\t * Styles for the horizontal "fake caret" when it should be displayed before the widget (backward keyboard navigation).\n\t */\n\t&.ck-widget_type-around_show-fake-caret_before > .ck-widget__type-around > .ck-widget__type-around__fake-caret {\n\t\ttop: calc( -1 * var(--ck-widget-outline-thickness) - 1px );\n\t\tdisplay: block;\n\t}\n\n\t/*\n\t * Styles for the horizontal "fake caret" when it should be displayed after the widget (forward keyboard navigation).\n\t */\n\t&.ck-widget_type-around_show-fake-caret_after > .ck-widget__type-around > .ck-widget__type-around__fake-caret {\n\t\tbottom: calc( -1 * var(--ck-widget-outline-thickness) - 1px );\n\t\tdisplay: block;\n\t}\n}\n\n/*\n * Integration with the read-only mode of the editor.\n */\n.ck.ck-editor__editable.ck-read-only .ck-widget__type-around {\n\tdisplay: none;\n}\n\n/*\n * Integration with the restricted editing mode (feature) of the editor.\n */\n.ck.ck-editor__editable.ck-restricted-editing_mode_restricted .ck-widget__type-around {\n\tdisplay: none;\n}\n\n/*\n * Integration with the #isEnabled property of the WidgetTypeAround plugin.\n */\n.ck.ck-editor__editable.ck-widget__type-around_disabled .ck-widget__type-around {\n\tdisplay: none;\n}\n', '/*\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n:root {\n\t--ck-widget-type-around-button-size: 20px;\n\t--ck-color-widget-type-around-button-active: var(--ck-color-focus-border);\n\t--ck-color-widget-type-around-button-hover: var(--ck-color-widget-hover-border);\n\t--ck-color-widget-type-around-button-blurred-editable: var(--ck-color-widget-blurred-border);\n\t--ck-color-widget-type-around-button-radar-start-alpha: 0;\n\t--ck-color-widget-type-around-button-radar-end-alpha: .3;\n\t--ck-color-widget-type-around-button-icon: var(--ck-color-base-background);\n}\n\n@define-mixin ck-widget-type-around-button-visible {\n\topacity: 1;\n\tpointer-events: auto;\n}\n\n@define-mixin ck-widget-type-around-button-hidden {\n\topacity: 0;\n\tpointer-events: none;\n}\n\n.ck .ck-widget {\n\t/*\n\t * Styles of the type around buttons\n\t */\n\t& .ck-widget__type-around__button {\n\t\twidth: var(--ck-widget-type-around-button-size);\n\t\theight: var(--ck-widget-type-around-button-size);\n\t\tbackground: var(--ck-color-widget-type-around-button);\n\t\tborder-radius: 100px;\n\t\ttransition: opacity var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve), background var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve);\n\n\t\t@mixin ck-widget-type-around-button-hidden;\n\n\t\t& svg {\n\t\t\twidth: 10px;\n\t\t\theight: 8px;\n\t\t\ttransform: translate(-50%,-50%);\n\t\t\ttransition: transform .5s ease;\n\t\t\tmargin-top: 1px;\n\n\t\t\t& * {\n\t\t\t\tstroke-dasharray: 10;\n\t\t\t\tstroke-dashoffset: 0;\n\n\t\t\t\tfill: none;\n\t\t\t\tstroke: var(--ck-color-widget-type-around-button-icon);\n\t\t\t\tstroke-width: 1.5px;\n\t\t\t\tstroke-linecap: round;\n\t\t\t\tstroke-linejoin: round;\n\t\t\t}\n\n\t\t\t& line {\n\t\t\t\tstroke-dasharray: 7;\n\t\t\t}\n\t\t}\n\n\t\t&:hover {\n\t\t\t/*\n\t\t\t * Display the "sonar" around the button when hovered.\n\t\t\t */\n\t\t\tanimation: ck-widget-type-around-button-sonar 1s ease infinite;\n\n\t\t\t/*\n\t\t\t * Animate active button\'s icon.\n\t\t\t */\n\t\t\t& svg {\n\t\t\t\t& polyline {\n\t\t\t\t\tanimation: ck-widget-type-around-arrow-dash 2s linear;\n\t\t\t\t}\n\n\t\t\t\t& line {\n\t\t\t\t\tanimation: ck-widget-type-around-arrow-tip-dash 2s linear;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/*\n\t * Show type around buttons when the widget gets selected or being hovered.\n\t */\n\t&.ck-widget_selected,\n\t&:hover {\n\t\t& > .ck-widget__type-around > .ck-widget__type-around__button {\n\t\t\t@mixin ck-widget-type-around-button-visible;\n\t\t}\n\t}\n\n\t/*\n\t * Styles for the buttons when the widget is NOT selected (but the buttons are visible\n\t * and still can be hovered).\n\t */\n\t&:not(.ck-widget_selected) > .ck-widget__type-around > .ck-widget__type-around__button {\n\t\tbackground: var(--ck-color-widget-type-around-button-hover);\n\t}\n\n\t/*\n\t * Styles for the buttons when:\n\t * - the widget is selected,\n\t * - or the button is being hovered (regardless of the widget state).\n\t */\n\t&.ck-widget_selected > .ck-widget__type-around > .ck-widget__type-around__button,\n\t& > .ck-widget__type-around > .ck-widget__type-around__button:hover {\n\t\tbackground: var(--ck-color-widget-type-around-button-active);\n\n\t\t&::after {\n\t\t\twidth: calc(var(--ck-widget-type-around-button-size) - 2px);\n\t\t\theight: calc(var(--ck-widget-type-around-button-size) - 2px);\n\t\t\tborder-radius: 100px;\n\t\t\tbackground: linear-gradient(135deg, hsla(0,0%,100%,0) 0%, hsla(0,0%,100%,.3) 100%);\n\t\t}\n\t}\n\n\t/*\n\t * Styles for the "before" button when the widget has a selection handle. Because some space\n\t * is consumed by the handle, the button must be moved slightly to the right to let it breathe.\n\t */\n\t&.ck-widget_with-selection-handle > .ck-widget__type-around > .ck-widget__type-around__button_before {\n\t\tmargin-left: 20px;\n\t}\n\n\t/*\n\t * Styles for the horizontal "fake caret" which is displayed when the user navigates using the keyboard.\n\t */\n\t& .ck-widget__type-around__fake-caret {\n\t\tpointer-events: none;\n\t\theight: 1px;\n\t\tanimation: ck-widget-type-around-fake-caret-pulse linear 1s infinite normal forwards;\n\n\t\t/*\n\t\t * The semi-transparent-outline+background combo improves the contrast\n\t\t * when the background underneath the fake caret is dark.\n\t\t */\n\t\toutline: solid 1px hsla(0, 0%, 100%, .5);\n\t\tbackground: var(--ck-color-base-text);\n\t}\n\n\t/*\n\t * Styles of the widget when the "fake caret" is blinking (e.g. upon keyboard navigation).\n\t * Despite the widget being physically selected in the model, its outline should disappear.\n\t */\n\t&.ck-widget_selected {\n\t\t&.ck-widget_type-around_show-fake-caret_before,\n\t\t&.ck-widget_type-around_show-fake-caret_after {\n\t\t\toutline-color: transparent;\n\t\t}\n\t}\n\n\t&.ck-widget_type-around_show-fake-caret_before,\n\t&.ck-widget_type-around_show-fake-caret_after {\n\t\t/*\n\t\t * When the "fake caret" is visible we simulate that the widget is not selected\n\t\t * (despite being physically selected), so the outline color should be for the\n\t\t * unselected widget.\n\t\t */\n\t\t&.ck-widget_selected:hover {\n\t\t\toutline-color: var(--ck-color-widget-hover-border);\n\t\t}\n\n\t\t/*\n\t\t * Styles of the type around buttons when the "fake caret" is blinking (e.g. upon keyboard navigation).\n\t\t * In this state, the type around buttons would collide with the fake carets so they should disappear.\n\t\t */\n\t\t& > .ck-widget__type-around > .ck-widget__type-around__button {\n\t\t\t@mixin ck-widget-type-around-button-hidden;\n\t\t}\n\n\t\t/*\n\t\t * Fake horizontal caret integration with the selection handle. When the caret is visible, simply\n\t\t * hide the handle because it intersects with the caret (and does not make much sense anyway).\n\t\t */\n\t\t&.ck-widget_with-selection-handle {\n\t\t\t&.ck-widget_selected,\n\t\t\t&.ck-widget_selected:hover {\n\t\t\t\t& > .ck-widget__selection-handle {\n\t\t\t\t\topacity: 0\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/*\n\t\t * Fake horizontal caret integration with the resize UI. When the caret is visible, simply\n\t\t * hide the resize UI because it creates too much noise. It can be visible when the user\n\t\t * hovers the widget, though.\n\t\t */\n\t\t&.ck-widget_selected.ck-widget_with-resizer > .ck-widget__resizer {\n\t\t\topacity: 0\n\t\t}\n\t}\n}\n\n/*\n * Styles for the "before" button when the widget has a selection handle in an RTL environment.\n * The selection handler is aligned to the right side of the widget so there is no need to create\n * additional space for it next to the "before" button.\n */\n.ck[dir="rtl"] .ck-widget.ck-widget_with-selection-handle .ck-widget__type-around > .ck-widget__type-around__button_before {\n\tmargin-left: 0;\n\tmargin-right: 20px;\n}\n\n/*\n * Hide type around buttons when the widget is selected as a child of a selected\n * nested editable (e.g. mulit-cell table selection).\n *\n * See https://github.com/ckeditor/ckeditor5/issues/7263.\n */\n.ck-editor__nested-editable.ck-editor__editable_selected {\n\t& .ck-widget {\n\t\t&.ck-widget_selected,\n\t\t&:hover {\n\t\t\t& > .ck-widget__type-around > .ck-widget__type-around__button {\n\t\t\t\t@mixin ck-widget-type-around-button-hidden;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/*\n * Styles for the buttons when the widget is selected but the user clicked outside of the editor (blurred the editor).\n */\n.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected > .ck-widget__type-around > .ck-widget__type-around__button:not(:hover) {\n\tbackground: var(--ck-color-widget-type-around-button-blurred-editable);\n\n\t& svg * {\n\t\tstroke: hsl(0,0%,60%);\n\t}\n}\n\n@keyframes ck-widget-type-around-arrow-dash {\n\t0% {\n\t\tstroke-dashoffset: 10;\n\t}\n\t20%, 100% {\n\t\tstroke-dashoffset: 0;\n\t}\n}\n\n@keyframes ck-widget-type-around-arrow-tip-dash {\n\t0%, 20% {\n\t\tstroke-dashoffset: 7;\n\t}\n\t40%, 100% {\n\t\tstroke-dashoffset: 0;\n\t}\n}\n\n@keyframes ck-widget-type-around-button-sonar {\n\t0% {\n\t\tbox-shadow: 0 0 0 0 hsla(var(--ck-color-focus-border-coordinates), var(--ck-color-widget-type-around-button-radar-start-alpha));\n\t}\n\t50% {\n\t\tbox-shadow: 0 0 0 5px hsla(var(--ck-color-focus-border-coordinates), var(--ck-color-widget-type-around-button-radar-end-alpha));\n\t}\n\t100% {\n\t\tbox-shadow: 0 0 0 5px hsla(var(--ck-color-focus-border-coordinates), var(--ck-color-widget-type-around-button-radar-start-alpha));\n\t}\n}\n\n@keyframes ck-widget-type-around-fake-caret-pulse {\n\t0% {\n\t\topacity: 1;\n\t}\n\t49% {\n\t\topacity: 1;\n\t}\n\t50% {\n\t\topacity: 0;\n\t}\n\t99% {\n\t\topacity: 0;\n\t}\n\t100% {\n\t\topacity: 1;\n\t}\n}\n'],
                    sourceRoot: ""
                }]);
                const a = s
            },
            2609: t => {
                "use strict";
                t.exports = function (t) {
                    var e = [];
                    return e.toString = function () {
                        return this.map((function (e) {
                            var n = t(e);
                            return e[2] ? "@media ".concat(e[2], " {").concat(n, "}") : n
                        })).join("")
                    }, e.i = function (t, n, o) {
                        "string" == typeof t && (t = [
                            [null, t, ""]
                        ]);
                        var i = {};
                        if (o)
                            for (var r = 0; r < this.length; r++) {
                                var s = this[r][0];
                                null != s && (i[s] = !0)
                            }
                        for (var a = 0; a < t.length; a++) {
                            var c = [].concat(t[a]);
                            o && i[c[0]] || (n && (c[2] ? c[2] = "".concat(n, " and ").concat(c[2]) : c[2] = n), e.push(c))
                        }
                    }, e
                }
            },
            1799: t => {
                "use strict";

                function e(t, e) {
                    return function (t) {
                        if (Array.isArray(t)) return t
                    }(t) || function (t, e) {
                        var n = t && ("undefined" != typeof Symbol && t[Symbol.iterator] || t["@@iterator"]);
                        if (null == n) return;
                        var o, i, r = [],
                            s = !0,
                            a = !1;
                        try {
                            for (n = n.call(t); !(s = (o = n.next()).done) && (r.push(o.value), !e || r.length !== e); s = !0);
                        } catch (t) {
                            a = !0, i = t
                        } finally {
                            try {
                                s || null == n.return || n.return()
                            } finally {
                                if (a) throw i
                            }
                        }
                        return r
                    }(t, e) || function (t, e) {
                        if (!t) return;
                        if ("string" == typeof t) return n(t, e);
                        var o = Object.prototype.toString.call(t).slice(8, -1);
                        "Object" === o && t.constructor && (o = t.constructor.name);
                        if ("Map" === o || "Set" === o) return Array.from(t);
                        if ("Arguments" === o || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)) return n(t, e)
                    }(t, e) || function () {
                        throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
                    }()
                }

                function n(t, e) {
                    (null == e || e > t.length) && (e = t.length);
                    for (var n = 0, o = new Array(e); n < e; n++) o[n] = t[n];
                    return o
                }
                t.exports = function (t) {
                    var n = e(t, 4),
                        o = n[1],
                        i = n[3];
                    if (!i) return o;
                    if ("function" == typeof btoa) {
                        var r = btoa(unescape(encodeURIComponent(JSON.stringify(i)))),
                            s = "sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(r),
                            a = "/*# ".concat(s, " */"),
                            c = i.sources.map((function (t) {
                                return "/*# sourceURL=".concat(i.sourceRoot || "").concat(t, " */")
                            }));
                        return [o].concat(c).concat([a]).join("\n")
                    }
                    return [o].join("\n")
                }
            },
            6062: (t, e, n) => {
                "use strict";
                var o, i = function () {
                        return void 0 === o && (o = Boolean(window && document && document.all && !window.atob)), o
                    },
                    r = function () {
                        var t = {};
                        return function (e) {
                            if (void 0 === t[e]) {
                                var n = document.querySelector(e);
                                if (window.HTMLIFrameElement && n instanceof window.HTMLIFrameElement) try {
                                    n = n.contentDocument.head
                                } catch (t) {
                                    n = null
                                }
                                t[e] = n
                            }
                            return t[e]
                        }
                    }(),
                    s = [];

                function a(t) {
                    for (var e = -1, n = 0; n < s.length; n++)
                        if (s[n].identifier === t) {
                            e = n;
                            break
                        } return e
                }

                function c(t, e) {
                    for (var n = {}, o = [], i = 0; i < t.length; i++) {
                        var r = t[i],
                            c = e.base ? r[0] + e.base : r[0],
                            l = n[c] || 0,
                            d = "".concat(c, " ").concat(l);
                        n[c] = l + 1;
                        var h = a(d),
                            u = {
                                css: r[1],
                                media: r[2],
                                sourceMap: r[3]
                            }; - 1 !== h ? (s[h].references++, s[h].updater(u)) : s.push({
                            identifier: d,
                            updater: f(u, e),
                            references: 1
                        }), o.push(d)
                    }
                    return o
                }

                function l(t) {
                    var e = document.createElement("style"),
                        o = t.attributes || {};
                    if (void 0 === o.nonce) {
                        var i = n.nc;
                        i && (o.nonce = i)
                    }
                    if (Object.keys(o).forEach((function (t) {
                            e.setAttribute(t, o[t])
                        })), "function" == typeof t.insert) t.insert(e);
                    else {
                        var s = r(t.insert || "head");
                        if (!s) throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");
                        s.appendChild(e)
                    }
                    return e
                }
                var d, h = (d = [], function (t, e) {
                    return d[t] = e, d.filter(Boolean).join("\n")
                });

                function u(t, e, n, o) {
                    var i = n ? "" : o.media ? "@media ".concat(o.media, " {").concat(o.css, "}") : o.css;
                    if (t.styleSheet) t.styleSheet.cssText = h(e, i);
                    else {
                        var r = document.createTextNode(i),
                            s = t.childNodes;
                        s[e] && t.removeChild(s[e]), s.length ? t.insertBefore(r, s[e]) : t.appendChild(r)
                    }
                }

                function g(t, e, n) {
                    var o = n.css,
                        i = n.media,
                        r = n.sourceMap;
                    if (i ? t.setAttribute("media", i) : t.removeAttribute("media"), r && "undefined" != typeof btoa && (o += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(r)))), " */")), t.styleSheet) t.styleSheet.cssText = o;
                    else {
                        for (; t.firstChild;) t.removeChild(t.firstChild);
                        t.appendChild(document.createTextNode(o))
                    }
                }
                var p = null,
                    m = 0;

                function f(t, e) {
                    var n, o, i;
                    if (e.singleton) {
                        var r = m++;
                        n = p || (p = l(e)), o = u.bind(null, n, r, !1), i = u.bind(null, n, r, !0)
                    } else n = l(e), o = g.bind(null, n, e), i = function () {
                        ! function (t) {
                            if (null === t.parentNode) return !1;
                            t.parentNode.removeChild(t)
                        }(n)
                    };
                    return o(t),
                        function (e) {
                            if (e) {
                                if (e.css === t.css && e.media === t.media && e.sourceMap === t.sourceMap) return;
                                o(t = e)
                            } else i()
                        }
                }
                t.exports = function (t, e) {
                    (e = e || {}).singleton || "boolean" == typeof e.singleton || (e.singleton = i());
                    var n = c(t = t || [], e);
                    return function (t) {
                        if (t = t || [], "[object Array]" === Object.prototype.toString.call(t)) {
                            for (var o = 0; o < n.length; o++) {
                                var i = a(n[o]);
                                s[i].references--
                            }
                            for (var r = c(t, e), l = 0; l < n.length; l++) {
                                var d = a(n[l]);
                                0 === s[d].references && (s[d].updater(), s.splice(d, 1))
                            }
                            n = r
                        }
                    }
                }
            }
        },
        e = {};

    function n(o) {
        var i = e[o];
        if (void 0 !== i) return i.exports;
        var r = e[o] = {
            id: o,
            exports: {}
        };
        return t[o](r, r.exports, n), r.exports
    }
    n.n = t => {
        var e = t && t.__esModule ? () => t.default : () => t;
        return n.d(e, {
            a: e
        }), e
    }, n.d = (t, e) => {
        for (var o in e) n.o(e, o) && !n.o(t, o) && Object.defineProperty(t, o, {
            enumerable: !0,
            get: e[o]
        })
    }, n.g = function () {
        if ("object" == typeof globalThis) return globalThis;
        try {
            return this || new Function("return this")()
        } catch (t) {
            if ("object" == typeof window) return window
        }
    }(), n.o = (t, e) => Object.prototype.hasOwnProperty.call(t, e), n.nc = void 0;
    var o = {};
    return (() => {
        "use strict";

        function t({
            emitter: t,
            activator: e,
            callback: n,
            contextElements: o
        }) {
            t.listenTo(document, "mousedown", ((t, i) => {
                if (!e()) return;
                const r = "function" == typeof i.composedPath ? i.composedPath() : [],
                    s = "function" == typeof o ? o() : o;
                for (const t of s)
                    if (t.contains(i.target) || r.includes(t)) return;
                n()
            }))
        }

        function e(t) {
            return class extends t {
                disableCssTransitions() {
                    this._isCssTransitionsDisabled = !0
                }
                enableCssTransitions() {
                    this._isCssTransitionsDisabled = !1
                }
                constructor(...t) {
                    super(...t), this.set("_isCssTransitionsDisabled", !1), this.initializeCssTransitionDisablerMixin()
                }
                initializeCssTransitionDisablerMixin() {
                    this.extendTemplate({
                        attributes: {
                            class: [this.bindTemplate.if("_isCssTransitionsDisabled", "ck-transitions-disabled")]
                        }
                    })
                }
            }
        }

        function i({
            view: t
        }) {
            t.listenTo(t.element, "submit", ((e, n) => {
                n.preventDefault(), t.fire("submit")
            }), {
                useCapture: !0
            })
        }
        n.d(o, {
            default: () => CE
        });
        const r = function () {
            try {
                return navigator.userAgent.toLowerCase()
            } catch (t) {
                return ""
            }
        }();
        var s;
        const a = {
            isMac: c(r),
            isWindows: (s = r, s.indexOf("windows") > -1),
            isGecko: function (t) {
                return !!t.match(/gecko\/\d+/)
            }(r),
            isSafari: function (t) {
                return t.indexOf(" applewebkit/") > -1 && -1 === t.indexOf("chrome")
            }(r),
            isiOS: function (t) {
                return !!t.match(/iphone|ipad/i) || c(t) && navigator.maxTouchPoints > 0
            }(r),
            isAndroid: function (t) {
                return t.indexOf("android") > -1
            }(r),
            isBlink: function (t) {
                return t.indexOf("chrome/") > -1 && t.indexOf("edge/") < 0
            }(r),
            features: {
                isRegExpUnicodePropertySupported: function () {
                    let t = !1;
                    try {
                        t = 0 === "ć".search(new RegExp("[\\p{L}]", "u"))
                    } catch (t) {}
                    return t
                }()
            }
        };

        function c(t) {
            return t.indexOf("macintosh") > -1
        }

        function l(t, e, n, o) {
            n = n || function (t, e) {
                return t === e
            };
            const i = Array.isArray(t) ? t : Array.prototype.slice.call(t),
                r = Array.isArray(e) ? e : Array.prototype.slice.call(e),
                s = function (t, e, n) {
                    const o = d(t, e, n);
                    if (-1 === o) return {
                        firstIndex: -1,
                        lastIndexOld: -1,
                        lastIndexNew: -1
                    };
                    const i = h(t, o),
                        r = h(e, o),
                        s = d(i, r, n),
                        a = t.length - s,
                        c = e.length - s;
                    return {
                        firstIndex: o,
                        lastIndexOld: a,
                        lastIndexNew: c
                    }
                }(i, r, n),
                a = o ? function (t, e) {
                    const {
                        firstIndex: n,
                        lastIndexOld: o,
                        lastIndexNew: i
                    } = t;
                    if (-1 === n) return Array(e).fill("equal");
                    let r = [];
                    n > 0 && (r = r.concat(Array(n).fill("equal")));
                    i - n > 0 && (r = r.concat(Array(i - n).fill("insert")));
                    o - n > 0 && (r = r.concat(Array(o - n).fill("delete")));
                    i < e && (r = r.concat(Array(e - i).fill("equal")));
                    return r
                }(s, r.length) : function (t, e) {
                    const n = [],
                        {
                            firstIndex: o,
                            lastIndexOld: i,
                            lastIndexNew: r
                        } = e;
                    r - o > 0 && n.push({
                        index: o,
                        type: "insert",
                        values: t.slice(o, r)
                    });
                    i - o > 0 && n.push({
                        index: o + (r - o),
                        type: "delete",
                        howMany: i - o
                    });
                    return n
                }(r, s);
            return a
        }

        function d(t, e, n) {
            for (let o = 0; o < Math.max(t.length, e.length); o++)
                if (void 0 === t[o] || void 0 === e[o] || !n(t[o], e[o])) return o;
            return -1
        }

        function h(t, e) {
            return t.slice(e).reverse()
        }

        function u(t, e, n) {
            n = n || function (t, e) {
                return t === e
            };
            const o = t.length,
                i = e.length;
            if (o > 200 || i > 200 || o + i > 300) return u.fastDiff(t, e, n, !0);
            let r, s;
            if (i < o) {
                const n = t;
                t = e, e = n, r = "delete", s = "insert"
            } else r = "insert", s = "delete";
            const a = t.length,
                c = e.length,
                l = c - a,
                d = {},
                h = {};

            function g(o) {
                const i = (void 0 !== h[o - 1] ? h[o - 1] : -1) + 1,
                    l = void 0 !== h[o + 1] ? h[o + 1] : -1,
                    u = i > l ? -1 : 1;
                d[o + u] && (d[o] = d[o + u].slice(0)), d[o] || (d[o] = []), d[o].push(i > l ? r : s);
                let g = Math.max(i, l),
                    p = g - o;
                for (; p < a && g < c && n(t[p], e[g]);) p++, g++, d[o].push("equal");
                return g
            }
            let p, m = 0;
            do {
                for (p = -m; p < l; p++) h[p] = g(p);
                for (p = l + m; p > l; p--) h[p] = g(p);
                h[l] = g(l), m++
            } while (h[l] !== c);
            return d[l].slice(1)
        }
        u.fastDiff = l;
        const g = function () {
            return function t() {
                t.called = !0
            }
        };
        class p {
            constructor(t, e) {
                this.source = t, this.name = e, this.path = [], this.stop = g(), this.off = g()
            }
        }
        const m = new Array(256).fill("").map(((t, e) => ("0" + e.toString(16)).slice(-2)));

        function f() {
            const t = 4294967296 * Math.random() >>> 0,
                e = 4294967296 * Math.random() >>> 0,
                n = 4294967296 * Math.random() >>> 0,
                o = 4294967296 * Math.random() >>> 0;
            return "e" + m[t >> 0 & 255] + m[t >> 8 & 255] + m[t >> 16 & 255] + m[t >> 24 & 255] + m[e >> 0 & 255] + m[e >> 8 & 255] + m[e >> 16 & 255] + m[e >> 24 & 255] + m[n >> 0 & 255] + m[n >> 8 & 255] + m[n >> 16 & 255] + m[n >> 24 & 255] + m[o >> 0 & 255] + m[o >> 8 & 255] + m[o >> 16 & 255] + m[o >> 24 & 255]
        }
        const k = {
            get(t = "normal") {
                return "number" != typeof t ? this[t] || this.normal : t
            },
            highest: 1e5,
            high: 1e3,
            normal: 0,
            low: -1e3,
            lowest: -1e5
        };

        function b(t, e) {
            const n = k.get(e.priority);
            for (let o = 0; o < t.length; o++)
                if (k.get(t[o].priority) < n) return void t.splice(o, 0, e);
            t.push(e)
        }
        const w = "https://ckeditor.com/docs/ckeditor5/latest/support/error-codes.html";
        class A extends Error {
            constructor(t, e, n) {
                super(function (t, e) {
                    const n = new WeakSet,
                        o = (t, e) => {
                            if ("object" == typeof e && null !== e) {
                                if (n.has(e)) return `[object ${e.constructor.name}]`;
                                n.add(e)
                            }
                            return e
                        },
                        i = e ? ` ${JSON.stringify(e,o)}` : "",
                        r = v(t);
                    return t + i + r
                }(t, n)), this.name = "CKEditorError", this.context = e, this.data = n
            }
            is(t) {
                return "CKEditorError" === t
            }
            static rethrowUnexpectedError(t, e) {
                if (t.is && t.is("CKEditorError")) throw t;
                const n = new A(t.message, e);
                throw n.stack = t.stack, n
            }
        }

        function C(t, e) {
            console.warn(...y(t, e))
        }

        function _(t, e) {
            console.error(...y(t, e))
        }

        function v(t) {
            return `\nRead more: ${w}#error-${t}`
        }

        function y(t, e) {
            const n = v(t);
            return e ? [t, e, n] : [t, n]
        }
        const x = "39.0.1",
            E = new Date(2023, 7, 10),
            D = "object" == typeof window ? window : n.g;
        if (D.CKEDITOR_VERSION) throw new A("ckeditor-duplicated-modules", null);
        D.CKEDITOR_VERSION = x;
        const S = Symbol("listeningTo"),
            I = Symbol("emitterId"),
            M = Symbol("delegations"),
            T = B(Object);

        function B(t) {
            if (!t) return T;
            return class extends t {
                on(t, e, n) {
                    this.listenTo(this, t, e, n)
                }
                once(t, e, n) {
                    let o = !1;
                    this.listenTo(this, t, ((t, ...n) => {
                        o || (o = !0, t.off(), e.call(this, t, ...n))
                    }), n)
                }
                off(t, e) {
                    this.stopListening(this, t, e)
                }
                listenTo(t, e, n, o = {}) {
                    let i, r;
                    this[S] || (this[S] = {});
                    const s = this[S];
                    P(t) || N(t);
                    const a = P(t);
                    (i = s[a]) || (i = s[a] = {
                        emitter: t,
                        callbacks: {}
                    }), (r = i.callbacks[e]) || (r = i.callbacks[e] = []), r.push(n),
                        function (t, e, n, o, i) {
                            e._addEventListener ? e._addEventListener(n, o, i) : t._addEventListener.call(e, n, o, i)
                        }(this, t, e, n, o)
                }
                stopListening(t, e, n) {
                    const o = this[S];
                    let i = t && P(t);
                    const r = o && i ? o[i] : void 0,
                        s = r && e ? r.callbacks[e] : void 0;
                    if (!(!o || t && !r || e && !s))
                        if (n) {
                            R(this, t, e, n); - 1 !== s.indexOf(n) && (1 === s.length ? delete r.callbacks[e] : R(this, t, e, n))
                        } else if (s) {
                        for (; n = s.pop();) R(this, t, e, n);
                        delete r.callbacks[e]
                    } else if (r) {
                        for (e in r.callbacks) this.stopListening(t, e);
                        delete o[i]
                    } else {
                        for (i in o) this.stopListening(o[i].emitter);
                        delete this[S]
                    }
                }
                fire(t, ...e) {
                    try {
                        const n = t instanceof p ? t : new p(this, t),
                            o = n.name;
                        let i = L(this, o);
                        if (n.path.push(this), i) {
                            const t = [n, ...e];
                            i = Array.from(i);
                            for (let e = 0; e < i.length && (i[e].callback.apply(this, t), n.off.called && (delete n.off.called, this._removeEventListener(o, i[e].callback)), !n.stop.called); e++);
                        }
                        const r = this[M];
                        if (r) {
                            const t = r.get(o),
                                i = r.get("*");
                            t && j(t, n, e), i && j(i, n, e)
                        }
                        return n.return
                    } catch (t) {
                        A.rethrowUnexpectedError(t, this)
                    }
                }
                delegate(...t) {
                    return {
                        to: (e, n) => {
                            this[M] || (this[M] = new Map), t.forEach((t => {
                                const o = this[M].get(t);
                                o ? o.set(e, n) : this[M].set(t, new Map([
                                    [e, n]
                                ]))
                            }))
                        }
                    }
                }
                stopDelegating(t, e) {
                    if (this[M])
                        if (t)
                            if (e) {
                                const n = this[M].get(t);
                                n && n.delete(e)
                            } else this[M].delete(t);
                    else this[M].clear()
                }
                _addEventListener(t, e, n) {
                    ! function (t, e) {
                        const n = z(t);
                        if (n[e]) return;
                        let o = e,
                            i = null;
                        const r = [];
                        for (;
                            "" !== o && !n[o];) n[o] = {
                            callbacks: [],
                            childEvents: []
                        }, r.push(n[o]), i && n[o].childEvents.push(i), i = o, o = o.substr(0, o.lastIndexOf(":"));
                        if ("" !== o) {
                            for (const t of r) t.callbacks = n[o].callbacks.slice();
                            n[o].childEvents.push(i)
                        }
                    }(this, t);
                    const o = O(this, t),
                        i = {
                            callback: e,
                            priority: k.get(n.priority)
                        };
                    for (const t of o) b(t, i)
                }
                _removeEventListener(t, e) {
                    const n = O(this, t);
                    for (const t of n)
                        for (let n = 0; n < t.length; n++) t[n].callback == e && (t.splice(n, 1), n--)
                }
            }
        }

        function N(t, e) {
            t[I] || (t[I] = e || f())
        }

        function P(t) {
            return t[I]
        }

        function z(t) {
            return t._events || Object.defineProperty(t, "_events", {
                value: {}
            }), t._events
        }

        function O(t, e) {
            const n = z(t)[e];
            if (!n) return [];
            let o = [n.callbacks];
            for (let e = 0; e < n.childEvents.length; e++) {
                const i = O(t, n.childEvents[e]);
                o = o.concat(i)
            }
            return o
        }

        function L(t, e) {
            let n;
            return t._events && (n = t._events[e]) && n.callbacks.length ? n.callbacks : e.indexOf(":") > -1 ? L(t, e.substr(0, e.lastIndexOf(":"))) : null
        }

        function j(t, e, n) {
            for (let [o, i] of t) {
                i ? "function" == typeof i && (i = i(e.name)) : i = e.name;
                const t = new p(e.source, i);
                t.path = [...e.path], o.fire(t, ...n)
            }
        }

        function R(t, e, n, o) {
            e._removeEventListener ? e._removeEventListener(n, o) : t._removeEventListener.call(e, n, o)
        } ["on", "once", "off", "listenTo", "stopListening", "fire", "delegate", "stopDelegating", "_addEventListener", "_removeEventListener"].forEach((t => {
            B[t] = T.prototype[t]
        }));
        const F = function (t) {
                var e = typeof t;
                return null != t && ("object" == e || "function" == e)
            },
            V = Symbol("observableProperties"),
            U = Symbol("boundObservables"),
            H = Symbol("boundProperties"),
            G = Symbol("decoratedMethods"),
            q = Symbol("decoratedOriginal"),
            W = K(B());

        function K(t) {
            if (!t) return W;
            return class extends t {
                set(t, e) {
                    if (F(t)) return void Object.keys(t).forEach((e => {
                        this.set(e, t[e])
                    }), this);
                    Y(this);
                    const n = this[V];
                    if (t in this && !n.has(t)) throw new A("observable-set-cannot-override", this);
                    Object.defineProperty(this, t, {
                        enumerable: !0,
                        configurable: !0,
                        get: () => n.get(t),
                        set(e) {
                            const o = n.get(t);
                            let i = this.fire(`set:${t}`, t, e, o);
                            void 0 === i && (i = e), o === i && n.has(t) || (n.set(t, i), this.fire(`change:${t}`, t, i, o))
                        }
                    }), this[t] = e
                }
                bind(...t) {
                    if (!t.length || !Q(t)) throw new A("observable-bind-wrong-properties", this);
                    if (new Set(t).size !== t.length) throw new A("observable-bind-duplicate-properties", this);
                    Y(this);
                    const e = this[H];
                    t.forEach((t => {
                        if (e.has(t)) throw new A("observable-bind-rebind", this)
                    }));
                    const n = new Map;
                    return t.forEach((t => {
                        const o = {
                            property: t,
                            to: []
                        };
                        e.set(t, o), n.set(t, o)
                    })), {
                        to: $,
                        toMany: Z,
                        _observable: this,
                        _bindProperties: t,
                        _to: [],
                        _bindings: n
                    }
                }
                unbind(...t) {
                    if (!this[V]) return;
                    const e = this[H],
                        n = this[U];
                    if (t.length) {
                        if (!Q(t)) throw new A("observable-unbind-wrong-properties", this);
                        t.forEach((t => {
                            const o = e.get(t);
                            o && (o.to.forEach((([t, e]) => {
                                const i = n.get(t),
                                    r = i[e];
                                r.delete(o), r.size || delete i[e], Object.keys(i).length || (n.delete(t), this.stopListening(t, "change"))
                            })), e.delete(t))
                        }))
                    } else n.forEach(((t, e) => {
                        this.stopListening(e, "change")
                    })), n.clear(), e.clear()
                }
                decorate(t) {
                    Y(this);
                    const e = this[t];
                    if (!e) throw new A("observablemixin-cannot-decorate-undefined", this, {
                        object: this,
                        methodName: t
                    });
                    this.on(t, ((t, n) => {
                        t.return = e.apply(this, n)
                    })), this[t] = function (...e) {
                        return this.fire(t, e)
                    }, this[t][q] = e, this[G] || (this[G] = []), this[G].push(t)
                }
                stopListening(t, e, n) {
                    if (!t && this[G]) {
                        for (const t of this[G]) this[t] = this[t][q];
                        delete this[G]
                    }
                    super.stopListening(t, e, n)
                }
            }
        }

        function Y(t) {
            t[V] || (Object.defineProperty(t, V, {
                value: new Map
            }), Object.defineProperty(t, U, {
                value: new Map
            }), Object.defineProperty(t, H, {
                value: new Map
            }))
        }

        function $(...t) {
            const e = function (...t) {
                    if (!t.length) throw new A("observable-bind-to-parse-error", null);
                    const e = {
                        to: []
                    };
                    let n;
                    "function" == typeof t[t.length - 1] && (e.callback = t.pop());
                    return t.forEach((t => {
                        if ("string" == typeof t) n.properties.push(t);
                        else {
                            if ("object" != typeof t) throw new A("observable-bind-to-parse-error", null);
                            n = {
                                observable: t,
                                properties: []
                            }, e.to.push(n)
                        }
                    })), e
                }(...t),
                n = Array.from(this._bindings.keys()),
                o = n.length;
            if (!e.callback && e.to.length > 1) throw new A("observable-bind-to-no-callback", this);
            if (o > 1 && e.callback) throw new A("observable-bind-to-extra-callback", this);
            var i;
            e.to.forEach((t => {
                    if (t.properties.length && t.properties.length !== o) throw new A("observable-bind-to-properties-length", this);
                    t.properties.length || (t.properties = this._bindProperties)
                })), this._to = e.to, e.callback && (this._bindings.get(n[0]).callback = e.callback), i = this._observable, this._to.forEach((t => {
                    const e = i[U];
                    let n;
                    e.get(t.observable) || i.listenTo(t.observable, "change", ((o, r) => {
                        n = e.get(t.observable)[r], n && n.forEach((t => {
                            J(i, t.property)
                        }))
                    }))
                })),
                function (t) {
                    let e;
                    t._bindings.forEach(((n, o) => {
                        t._to.forEach((i => {
                            e = i.properties[n.callback ? 0 : t._bindProperties.indexOf(o)], n.to.push([i.observable, e]),
                                function (t, e, n, o) {
                                    const i = t[U],
                                        r = i.get(n),
                                        s = r || {};
                                    s[o] || (s[o] = new Set);
                                    s[o].add(e), r || i.set(n, s)
                                }(t._observable, n, i.observable, e)
                        }))
                    }))
                }(this), this._bindProperties.forEach((t => {
                    J(this._observable, t)
                }))
        }

        function Z(t, e, n) {
            if (this._bindings.size > 1) throw new A("observable-bind-to-many-not-one-binding", this);
            this.to(... function (t, e) {
                const n = t.map((t => [t, e]));
                return Array.prototype.concat.apply([], n)
            }(t, e), n)
        }

        function Q(t) {
            return t.every((t => "string" == typeof t))
        }

        function J(t, e) {
            const n = t[H].get(e);
            let o;
            n.callback ? o = n.callback.apply(t, n.to.map((t => t[0][t[1]]))) : (o = n.to[0], o = o[0][o[1]]), Object.prototype.hasOwnProperty.call(t, e) ? t[e] = o : t.set(e, o)
        } ["set", "bind", "unbind", "decorate", "on", "once", "off", "listenTo", "stopListening", "fire", "delegate", "stopDelegating", "_addEventListener", "_removeEventListener"].forEach((t => {
            K[t] = W.prototype[t]
        }));
        class X {
            constructor() {
                this._replacedElements = []
            }
            replace(t, e) {
                this._replacedElements.push({
                    element: t,
                    newElement: e
                }), t.style.display = "none", e && t.parentNode.insertBefore(e, t.nextSibling)
            }
            restore() {
                this._replacedElements.forEach((({
                    element: t,
                    newElement: e
                }) => {
                    t.style.display = "", e && e.remove()
                })), this._replacedElements = []
            }
        }

        function tt(t) {
            let e = 0;
            for (const n of t) e++;
            return e
        }

        function et(t, e) {
            const n = Math.min(t.length, e.length);
            for (let o = 0; o < n; o++)
                if (t[o] != e[o]) return o;
            return t.length == e.length ? "same" : t.length < e.length ? "prefix" : "extension"
        }

        function nt(t) {
            return !(!t || !t[Symbol.iterator])
        }
        const ot = "object" == typeof global && global && global.Object === Object && global;
        var it = "object" == typeof self && self && self.Object === Object && self;
        const rt = ot || it || Function("return this")();
        const st = rt.Symbol;
        var at = Object.prototype,
            ct = at.hasOwnProperty,
            lt = at.toString,
            dt = st ? st.toStringTag : void 0;
        const ht = function (t) {
            var e = ct.call(t, dt),
                n = t[dt];
            try {
                t[dt] = void 0;
                var o = !0
            } catch (t) {}
            var i = lt.call(t);
            return o && (e ? t[dt] = n : delete t[dt]), i
        };
        var ut = Object.prototype.toString;
        const gt = function (t) {
            return ut.call(t)
        };
        var pt = st ? st.toStringTag : void 0;
        const mt = function (t) {
            return null == t ? void 0 === t ? "[object Undefined]" : "[object Null]" : pt && pt in Object(t) ? ht(t) : gt(t)
        };
        const ft = Array.isArray;
        const kt = function (t) {
            return null != t && "object" == typeof t
        };
        const bt = function (t) {
            return "string" == typeof t || !ft(t) && kt(t) && "[object String]" == mt(t)
        };

        function wt(t, e, n = {}, o = []) {
            const i = n && n.xmlns,
                r = i ? t.createElementNS(i, e) : t.createElement(e);
            for (const t in n) r.setAttribute(t, n[t]);
            !bt(o) && nt(o) || (o = [o]);
            for (let e of o) bt(e) && (e = t.createTextNode(e)), r.appendChild(e);
            return r
        }
        const At = function (t, e) {
            return function (n) {
                return t(e(n))
            }
        };
        const Ct = At(Object.getPrototypeOf, Object);
        var _t = Function.prototype,
            vt = Object.prototype,
            yt = _t.toString,
            xt = vt.hasOwnProperty,
            Et = yt.call(Object);
        const Dt = function (t) {
            if (!kt(t) || "[object Object]" != mt(t)) return !1;
            var e = Ct(t);
            if (null === e) return !0;
            var n = xt.call(e, "constructor") && e.constructor;
            return "function" == typeof n && n instanceof n && yt.call(n) == Et
        };
        const St = function () {
            this.__data__ = [], this.size = 0
        };
        const It = function (t, e) {
            return t === e || t != t && e != e
        };
        const Mt = function (t, e) {
            for (var n = t.length; n--;)
                if (It(t[n][0], e)) return n;
            return -1
        };
        var Tt = Array.prototype.splice;
        const Bt = function (t) {
            var e = this.__data__,
                n = Mt(e, t);
            return !(n < 0) && (n == e.length - 1 ? e.pop() : Tt.call(e, n, 1), --this.size, !0)
        };
        const Nt = function (t) {
            var e = this.__data__,
                n = Mt(e, t);
            return n < 0 ? void 0 : e[n][1]
        };
        const Pt = function (t) {
            return Mt(this.__data__, t) > -1
        };
        const zt = function (t, e) {
            var n = this.__data__,
                o = Mt(n, t);
            return o < 0 ? (++this.size, n.push([t, e])) : n[o][1] = e, this
        };

        function Ot(t) {
            var e = -1,
                n = null == t ? 0 : t.length;
            for (this.clear(); ++e < n;) {
                var o = t[e];
                this.set(o[0], o[1])
            }
        }
        Ot.prototype.clear = St, Ot.prototype.delete = Bt, Ot.prototype.get = Nt, Ot.prototype.has = Pt, Ot.prototype.set = zt;
        const Lt = Ot;
        const jt = function () {
            this.__data__ = new Lt, this.size = 0
        };
        const Rt = function (t) {
            var e = this.__data__,
                n = e.delete(t);
            return this.size = e.size, n
        };
        const Ft = function (t) {
            return this.__data__.get(t)
        };
        const Vt = function (t) {
            return this.__data__.has(t)
        };
        const Ut = function (t) {
            if (!F(t)) return !1;
            var e = mt(t);
            return "[object Function]" == e || "[object GeneratorFunction]" == e || "[object AsyncFunction]" == e || "[object Proxy]" == e
        };
        const Ht = rt["__core-js_shared__"];
        var Gt = function () {
            var t = /[^.]+$/.exec(Ht && Ht.keys && Ht.keys.IE_PROTO || "");
            return t ? "Symbol(src)_1." + t : ""
        }();
        const qt = function (t) {
            return !!Gt && Gt in t
        };
        var Wt = Function.prototype.toString;
        const Kt = function (t) {
            if (null != t) {
                try {
                    return Wt.call(t)
                } catch (t) {}
                try {
                    return t + ""
                } catch (t) {}
            }
            return ""
        };
        var Yt = /^\[object .+?Constructor\]$/,
            $t = Function.prototype,
            Zt = Object.prototype,
            Qt = $t.toString,
            Jt = Zt.hasOwnProperty,
            Xt = RegExp("^" + Qt.call(Jt).replace(/[\\^$.*+?()[\]{}|]/g, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$");
        const te = function (t) {
            return !(!F(t) || qt(t)) && (Ut(t) ? Xt : Yt).test(Kt(t))
        };
        const ee = function (t, e) {
            return null == t ? void 0 : t[e]
        };
        const ne = function (t, e) {
            var n = ee(t, e);
            return te(n) ? n : void 0
        };
        const oe = ne(rt, "Map");
        const ie = ne(Object, "create");
        const re = function () {
            this.__data__ = ie ? ie(null) : {}, this.size = 0
        };
        const se = function (t) {
            var e = this.has(t) && delete this.__data__[t];
            return this.size -= e ? 1 : 0, e
        };
        var ae = Object.prototype.hasOwnProperty;
        const ce = function (t) {
            var e = this.__data__;
            if (ie) {
                var n = e[t];
                return "__lodash_hash_undefined__" === n ? void 0 : n
            }
            return ae.call(e, t) ? e[t] : void 0
        };
        var le = Object.prototype.hasOwnProperty;
        const de = function (t) {
            var e = this.__data__;
            return ie ? void 0 !== e[t] : le.call(e, t)
        };
        const he = function (t, e) {
            var n = this.__data__;
            return this.size += this.has(t) ? 0 : 1, n[t] = ie && void 0 === e ? "__lodash_hash_undefined__" : e, this
        };

        function ue(t) {
            var e = -1,
                n = null == t ? 0 : t.length;
            for (this.clear(); ++e < n;) {
                var o = t[e];
                this.set(o[0], o[1])
            }
        }
        ue.prototype.clear = re, ue.prototype.delete = se, ue.prototype.get = ce, ue.prototype.has = de, ue.prototype.set = he;
        const ge = ue;
        const pe = function () {
            this.size = 0, this.__data__ = {
                hash: new ge,
                map: new(oe || Lt),
                string: new ge
            }
        };
        const me = function (t) {
            var e = typeof t;
            return "string" == e || "number" == e || "symbol" == e || "boolean" == e ? "__proto__" !== t : null === t
        };
        const fe = function (t, e) {
            var n = t.__data__;
            return me(e) ? n["string" == typeof e ? "string" : "hash"] : n.map
        };
        const ke = function (t) {
            var e = fe(this, t).delete(t);
            return this.size -= e ? 1 : 0, e
        };
        const be = function (t) {
            return fe(this, t).get(t)
        };
        const we = function (t) {
            return fe(this, t).has(t)
        };
        const Ae = function (t, e) {
            var n = fe(this, t),
                o = n.size;
            return n.set(t, e), this.size += n.size == o ? 0 : 1, this
        };

        function Ce(t) {
            var e = -1,
                n = null == t ? 0 : t.length;
            for (this.clear(); ++e < n;) {
                var o = t[e];
                this.set(o[0], o[1])
            }
        }
        Ce.prototype.clear = pe, Ce.prototype.delete = ke, Ce.prototype.get = be, Ce.prototype.has = we, Ce.prototype.set = Ae;
        const _e = Ce;
        const ve = function (t, e) {
            var n = this.__data__;
            if (n instanceof Lt) {
                var o = n.__data__;
                if (!oe || o.length < 199) return o.push([t, e]), this.size = ++n.size, this;
                n = this.__data__ = new _e(o)
            }
            return n.set(t, e), this.size = n.size, this
        };

        function ye(t) {
            var e = this.__data__ = new Lt(t);
            this.size = e.size
        }
        ye.prototype.clear = jt, ye.prototype.delete = Rt, ye.prototype.get = Ft, ye.prototype.has = Vt, ye.prototype.set = ve;
        const xe = ye;
        const Ee = function (t, e) {
            for (var n = -1, o = null == t ? 0 : t.length; ++n < o && !1 !== e(t[n], n, t););
            return t
        };
        const De = function () {
            try {
                var t = ne(Object, "defineProperty");
                return t({}, "", {}), t
            } catch (t) {}
        }();
        const Se = function (t, e, n) {
            "__proto__" == e && De ? De(t, e, {
                configurable: !0,
                enumerable: !0,
                value: n,
                writable: !0
            }) : t[e] = n
        };
        var Ie = Object.prototype.hasOwnProperty;
        const Me = function (t, e, n) {
            var o = t[e];
            Ie.call(t, e) && It(o, n) && (void 0 !== n || e in t) || Se(t, e, n)
        };
        const Te = function (t, e, n, o) {
            var i = !n;
            n || (n = {});
            for (var r = -1, s = e.length; ++r < s;) {
                var a = e[r],
                    c = o ? o(n[a], t[a], a, n, t) : void 0;
                void 0 === c && (c = t[a]), i ? Se(n, a, c) : Me(n, a, c)
            }
            return n
        };
        const Be = function (t, e) {
            for (var n = -1, o = Array(t); ++n < t;) o[n] = e(n);
            return o
        };
        const Ne = function (t) {
            return kt(t) && "[object Arguments]" == mt(t)
        };
        var Pe = Object.prototype,
            ze = Pe.hasOwnProperty,
            Oe = Pe.propertyIsEnumerable;
        const Le = Ne(function () {
            return arguments
        }()) ? Ne : function (t) {
            return kt(t) && ze.call(t, "callee") && !Oe.call(t, "callee")
        };
        const je = function () {
            return !1
        };
        var Re = "object" == typeof exports && exports && !exports.nodeType && exports,
            Fe = Re && "object" == typeof module && module && !module.nodeType && module,
            Ve = Fe && Fe.exports === Re ? rt.Buffer : void 0;
        const Ue = (Ve ? Ve.isBuffer : void 0) || je;
        var He = /^(?:0|[1-9]\d*)$/;
        const Ge = function (t, e) {
            var n = typeof t;
            return !!(e = null == e ? 9007199254740991 : e) && ("number" == n || "symbol" != n && He.test(t)) && t > -1 && t % 1 == 0 && t < e
        };
        const qe = function (t) {
            return "number" == typeof t && t > -1 && t % 1 == 0 && t <= 9007199254740991
        };
        var We = {};
        We["[object Float32Array]"] = We["[object Float64Array]"] = We["[object Int8Array]"] = We["[object Int16Array]"] = We["[object Int32Array]"] = We["[object Uint8Array]"] = We["[object Uint8ClampedArray]"] = We["[object Uint16Array]"] = We["[object Uint32Array]"] = !0, We["[object Arguments]"] = We["[object Array]"] = We["[object ArrayBuffer]"] = We["[object Boolean]"] = We["[object DataView]"] = We["[object Date]"] = We["[object Error]"] = We["[object Function]"] = We["[object Map]"] = We["[object Number]"] = We["[object Object]"] = We["[object RegExp]"] = We["[object Set]"] = We["[object String]"] = We["[object WeakMap]"] = !1;
        const Ke = function (t) {
            return kt(t) && qe(t.length) && !!We[mt(t)]
        };
        const Ye = function (t) {
            return function (e) {
                return t(e)
            }
        };
        var $e = "object" == typeof exports && exports && !exports.nodeType && exports,
            Ze = $e && "object" == typeof module && module && !module.nodeType && module,
            Qe = Ze && Ze.exports === $e && ot.process;
        const Je = function () {
            try {
                var t = Ze && Ze.require && Ze.require("util").types;
                return t || Qe && Qe.binding && Qe.binding("util")
            } catch (t) {}
        }();
        var Xe = Je && Je.isTypedArray;
        const tn = Xe ? Ye(Xe) : Ke;
        var en = Object.prototype.hasOwnProperty;
        const nn = function (t, e) {
            var n = ft(t),
                o = !n && Le(t),
                i = !n && !o && Ue(t),
                r = !n && !o && !i && tn(t),
                s = n || o || i || r,
                a = s ? Be(t.length, String) : [],
                c = a.length;
            for (var l in t) !e && !en.call(t, l) || s && ("length" == l || i && ("offset" == l || "parent" == l) || r && ("buffer" == l || "byteLength" == l || "byteOffset" == l) || Ge(l, c)) || a.push(l);
            return a
        };
        var on = Object.prototype;
        const rn = function (t) {
            var e = t && t.constructor;
            return t === ("function" == typeof e && e.prototype || on)
        };
        const sn = At(Object.keys, Object);
        var an = Object.prototype.hasOwnProperty;
        const cn = function (t) {
            if (!rn(t)) return sn(t);
            var e = [];
            for (var n in Object(t)) an.call(t, n) && "constructor" != n && e.push(n);
            return e
        };
        const ln = function (t) {
            return null != t && qe(t.length) && !Ut(t)
        };
        const dn = function (t) {
            return ln(t) ? nn(t) : cn(t)
        };
        const hn = function (t, e) {
            return t && Te(e, dn(e), t)
        };
        const un = function (t) {
            var e = [];
            if (null != t)
                for (var n in Object(t)) e.push(n);
            return e
        };
        var gn = Object.prototype.hasOwnProperty;
        const pn = function (t) {
            if (!F(t)) return un(t);
            var e = rn(t),
                n = [];
            for (var o in t)("constructor" != o || !e && gn.call(t, o)) && n.push(o);
            return n
        };
        const mn = function (t) {
            return ln(t) ? nn(t, !0) : pn(t)
        };
        const fn = function (t, e) {
            return t && Te(e, mn(e), t)
        };
        var kn = "object" == typeof exports && exports && !exports.nodeType && exports,
            bn = kn && "object" == typeof module && module && !module.nodeType && module,
            wn = bn && bn.exports === kn ? rt.Buffer : void 0,
            An = wn ? wn.allocUnsafe : void 0;
        const Cn = function (t, e) {
            if (e) return t.slice();
            var n = t.length,
                o = An ? An(n) : new t.constructor(n);
            return t.copy(o), o
        };
        const _n = function (t, e) {
            var n = -1,
                o = t.length;
            for (e || (e = Array(o)); ++n < o;) e[n] = t[n];
            return e
        };
        const vn = function (t, e) {
            for (var n = -1, o = null == t ? 0 : t.length, i = 0, r = []; ++n < o;) {
                var s = t[n];
                e(s, n, t) && (r[i++] = s)
            }
            return r
        };
        const yn = function () {
            return []
        };
        var xn = Object.prototype.propertyIsEnumerable,
            En = Object.getOwnPropertySymbols;
        const Dn = En ? function (t) {
            return null == t ? [] : (t = Object(t), vn(En(t), (function (e) {
                return xn.call(t, e)
            })))
        } : yn;
        const Sn = function (t, e) {
            return Te(t, Dn(t), e)
        };
        const In = function (t, e) {
            for (var n = -1, o = e.length, i = t.length; ++n < o;) t[i + n] = e[n];
            return t
        };
        const Mn = Object.getOwnPropertySymbols ? function (t) {
            for (var e = []; t;) In(e, Dn(t)), t = Ct(t);
            return e
        } : yn;
        const Tn = function (t, e) {
            return Te(t, Mn(t), e)
        };
        const Bn = function (t, e, n) {
            var o = e(t);
            return ft(t) ? o : In(o, n(t))
        };
        const Nn = function (t) {
            return Bn(t, dn, Dn)
        };
        const Pn = function (t) {
            return Bn(t, mn, Mn)
        };
        const zn = ne(rt, "DataView");
        const On = ne(rt, "Promise");
        const Ln = ne(rt, "Set");
        const jn = ne(rt, "WeakMap");
        var Rn = "[object Map]",
            Fn = "[object Promise]",
            Vn = "[object Set]",
            Un = "[object WeakMap]",
            Hn = "[object DataView]",
            Gn = Kt(zn),
            qn = Kt(oe),
            Wn = Kt(On),
            Kn = Kt(Ln),
            Yn = Kt(jn),
            $n = mt;
        (zn && $n(new zn(new ArrayBuffer(1))) != Hn || oe && $n(new oe) != Rn || On && $n(On.resolve()) != Fn || Ln && $n(new Ln) != Vn || jn && $n(new jn) != Un) && ($n = function (t) {
            var e = mt(t),
                n = "[object Object]" == e ? t.constructor : void 0,
                o = n ? Kt(n) : "";
            if (o) switch (o) {
                case Gn:
                    return Hn;
                case qn:
                    return Rn;
                case Wn:
                    return Fn;
                case Kn:
                    return Vn;
                case Yn:
                    return Un
            }
            return e
        });
        const Zn = $n;
        var Qn = Object.prototype.hasOwnProperty;
        const Jn = function (t) {
            var e = t.length,
                n = new t.constructor(e);
            return e && "string" == typeof t[0] && Qn.call(t, "index") && (n.index = t.index, n.input = t.input), n
        };
        const Xn = rt.Uint8Array;
        const to = function (t) {
            var e = new t.constructor(t.byteLength);
            return new Xn(e).set(new Xn(t)), e
        };
        const eo = function (t, e) {
            var n = e ? to(t.buffer) : t.buffer;
            return new t.constructor(n, t.byteOffset, t.byteLength)
        };
        var no = /\w*$/;
        const oo = function (t) {
            var e = new t.constructor(t.source, no.exec(t));
            return e.lastIndex = t.lastIndex, e
        };
        var io = st ? st.prototype : void 0,
            ro = io ? io.valueOf : void 0;
        const so = function (t) {
            return ro ? Object(ro.call(t)) : {}
        };
        const ao = function (t, e) {
            var n = e ? to(t.buffer) : t.buffer;
            return new t.constructor(n, t.byteOffset, t.length)
        };
        const co = function (t, e, n) {
            var o = t.constructor;
            switch (e) {
                case "[object ArrayBuffer]":
                    return to(t);
                case "[object Boolean]":
                case "[object Date]":
                    return new o(+t);
                case "[object DataView]":
                    return eo(t, n);
                case "[object Float32Array]":
                case "[object Float64Array]":
                case "[object Int8Array]":
                case "[object Int16Array]":
                case "[object Int32Array]":
                case "[object Uint8Array]":
                case "[object Uint8ClampedArray]":
                case "[object Uint16Array]":
                case "[object Uint32Array]":
                    return ao(t, n);
                case "[object Map]":
                case "[object Set]":
                    return new o;
                case "[object Number]":
                case "[object String]":
                    return new o(t);
                case "[object RegExp]":
                    return oo(t);
                case "[object Symbol]":
                    return so(t)
            }
        };
        var lo = Object.create;
        const ho = function () {
            function t() {}
            return function (e) {
                if (!F(e)) return {};
                if (lo) return lo(e);
                t.prototype = e;
                var n = new t;
                return t.prototype = void 0, n
            }
        }();
        const uo = function (t) {
            return "function" != typeof t.constructor || rn(t) ? {} : ho(Ct(t))
        };
        const go = function (t) {
            return kt(t) && "[object Map]" == Zn(t)
        };
        var po = Je && Je.isMap;
        const mo = po ? Ye(po) : go;
        const fo = function (t) {
            return kt(t) && "[object Set]" == Zn(t)
        };
        var ko = Je && Je.isSet;
        const bo = ko ? Ye(ko) : fo;
        var wo = "[object Arguments]",
            Ao = "[object Function]",
            Co = "[object Object]",
            _o = {};
        _o[wo] = _o["[object Array]"] = _o["[object ArrayBuffer]"] = _o["[object DataView]"] = _o["[object Boolean]"] = _o["[object Date]"] = _o["[object Float32Array]"] = _o["[object Float64Array]"] = _o["[object Int8Array]"] = _o["[object Int16Array]"] = _o["[object Int32Array]"] = _o["[object Map]"] = _o["[object Number]"] = _o[Co] = _o["[object RegExp]"] = _o["[object Set]"] = _o["[object String]"] = _o["[object Symbol]"] = _o["[object Uint8Array]"] = _o["[object Uint8ClampedArray]"] = _o["[object Uint16Array]"] = _o["[object Uint32Array]"] = !0, _o["[object Error]"] = _o[Ao] = _o["[object WeakMap]"] = !1;
        const vo = function t(e, n, o, i, r, s) {
            var a, c = 1 & n,
                l = 2 & n,
                d = 4 & n;
            if (o && (a = r ? o(e, i, r, s) : o(e)), void 0 !== a) return a;
            if (!F(e)) return e;
            var h = ft(e);
            if (h) {
                if (a = Jn(e), !c) return _n(e, a)
            } else {
                var u = Zn(e),
                    g = u == Ao || "[object GeneratorFunction]" == u;
                if (Ue(e)) return Cn(e, c);
                if (u == Co || u == wo || g && !r) {
                    if (a = l || g ? {} : uo(e), !c) return l ? Tn(e, fn(a, e)) : Sn(e, hn(a, e))
                } else {
                    if (!_o[u]) return r ? e : {};
                    a = co(e, u, c)
                }
            }
            s || (s = new xe);
            var p = s.get(e);
            if (p) return p;
            s.set(e, a), bo(e) ? e.forEach((function (i) {
                a.add(t(i, n, o, i, e, s))
            })) : mo(e) && e.forEach((function (i, r) {
                a.set(r, t(i, n, o, r, e, s))
            }));
            var m = h ? void 0 : (d ? l ? Pn : Nn : l ? mn : dn)(e);
            return Ee(m || e, (function (i, r) {
                m && (i = e[r = i]), Me(a, r, t(i, n, o, r, e, s))
            })), a
        };
        const yo = function (t, e) {
            return vo(t, 5, e = "function" == typeof e ? e : void 0)
        };
        const xo = function (t) {
            return kt(t) && 1 === t.nodeType && !Dt(t)
        };
        class Eo {
            constructor(t, e) {
                this._config = {}, e && this.define(Do(e)), t && this._setObjectToTarget(this._config, t)
            }
            set(t, e) {
                this._setToTarget(this._config, t, e)
            }
            define(t, e) {
                this._setToTarget(this._config, t, e, !0)
            }
            get(t) {
                return this._getFromSource(this._config, t)
            }* names() {
                for (const t of Object.keys(this._config)) yield t
            }
            _setToTarget(t, e, n, o = !1) {
                if (Dt(e)) return void this._setObjectToTarget(t, e, o);
                const i = e.split(".");
                e = i.pop();
                for (const e of i) Dt(t[e]) || (t[e] = {}), t = t[e];
                if (Dt(n)) return Dt(t[e]) || (t[e] = {}), t = t[e], void this._setObjectToTarget(t, n, o);
                o && void 0 !== t[e] || (t[e] = n)
            }
            _getFromSource(t, e) {
                const n = e.split(".");
                e = n.pop();
                for (const e of n) {
                    if (!Dt(t[e])) {
                        t = null;
                        break
                    }
                    t = t[e]
                }
                return t ? Do(t[e]) : void 0
            }
            _setObjectToTarget(t, e, n) {
                Object.keys(e).forEach((o => {
                    this._setToTarget(t, o, e[o], n)
                }))
            }
        }

        function Do(t) {
            return yo(t, So)
        }

        function So(t) {
            return xo(t) ? t : void 0
        }

        function Io(t) {
            if (t) {
                if (t.defaultView) return t instanceof t.defaultView.Document;
                if (t.ownerDocument && t.ownerDocument.defaultView) return t instanceof t.ownerDocument.defaultView.Node
            }
            return !1
        }

        function Mo(t) {
            const e = Object.prototype.toString.apply(t);
            return "[object Window]" == e || "[object global]" == e
        }
        const To = Bo(B());

        function Bo(t) {
            if (!t) return To;
            return class extends t {
                listenTo(t, e, n, o = {}) {
                    if (Io(t) || Mo(t)) {
                        const i = {
                                capture: !!o.useCapture,
                                passive: !!o.usePassive
                            },
                            r = this._getProxyEmitter(t, i) || new No(t, i);
                        this.listenTo(r, e, n, o)
                    } else super.listenTo(t, e, n, o)
                }
                stopListening(t, e, n) {
                    if (Io(t) || Mo(t)) {
                        const o = this._getAllProxyEmitters(t);
                        for (const t of o) this.stopListening(t, e, n)
                    } else super.stopListening(t, e, n)
                }
                _getProxyEmitter(t, e) {
                    return function (t, e) {
                        const n = t[S];
                        return n && n[e] ? n[e].emitter : null
                    }(this, Po(t, e))
                }
                _getAllProxyEmitters(t) {
                    return [{
                        capture: !1,
                        passive: !1
                    }, {
                        capture: !1,
                        passive: !0
                    }, {
                        capture: !0,
                        passive: !1
                    }, {
                        capture: !0,
                        passive: !0
                    }].map((e => this._getProxyEmitter(t, e))).filter((t => !!t))
                }
            }
        } ["_getProxyEmitter", "_getAllProxyEmitters", "on", "once", "off", "listenTo", "stopListening", "fire", "delegate", "stopDelegating", "_addEventListener", "_removeEventListener"].forEach((t => {
            Bo[t] = To.prototype[t]
        }));
        class No extends(B()) {
            constructor(t, e) {
                super(), N(this, Po(t, e)), this._domNode = t, this._options = e
            }
            attach(t) {
                if (this._domListeners && this._domListeners[t]) return;
                const e = this._createDomListener(t);
                this._domNode.addEventListener(t, e, this._options), this._domListeners || (this._domListeners = {}), this._domListeners[t] = e
            }
            detach(t) {
                let e;
                !this._domListeners[t] || (e = this._events[t]) && e.callbacks.length || this._domListeners[t].removeListener()
            }
            _addEventListener(t, e, n) {
                this.attach(t), B().prototype._addEventListener.call(this, t, e, n)
            }
            _removeEventListener(t, e) {
                B().prototype._removeEventListener.call(this, t, e), this.detach(t)
            }
            _createDomListener(t) {
                const e = e => {
                    this.fire(t, e)
                };
                return e.removeListener = () => {
                    this._domNode.removeEventListener(t, e, this._options), delete this._domListeners[t]
                }, e
            }
        }

        function Po(t, e) {
            let n = function (t) {
                return t["data-ck-expando"] || (t["data-ck-expando"] = f())
            }(t);
            for (const t of Object.keys(e).sort()) e[t] && (n += "-" + t);
            return n
        }
        let zo;
        try {
            zo = {
                window,
                document
            }
        } catch (t) {
            zo = {
                window: {},
                document: {}
            }
        }
        const Oo = zo;

        function Lo(t) {
            let e = t.parentElement;
            if (!e) return null;
            for (;
                "BODY" != e.tagName;) {
                const t = e.style.overflowY || Oo.window.getComputedStyle(e).overflowY;
                if ("auto" === t || "scroll" === t) break;
                if (e = e.parentElement, !e) return null
            }
            return e
        }

        function jo(t) {
            return "[object Range]" == Object.prototype.toString.apply(t)
        }

        function Ro(t) {
            const e = t.ownerDocument.defaultView.getComputedStyle(t);
            return {
                top: parseInt(e.borderTopWidth, 10),
                right: parseInt(e.borderRightWidth, 10),
                bottom: parseInt(e.borderBottomWidth, 10),
                left: parseInt(e.borderLeftWidth, 10)
            }
        }

        function Fo(t) {
            return "[object Text]" == Object.prototype.toString.call(t)
        }
        const Vo = ["top", "right", "bottom", "left", "width", "height"];
        class Uo {
            constructor(t) {
                const e = jo(t);
                if (Object.defineProperty(this, "_source", {
                        value: t._source || t,
                        writable: !0,
                        enumerable: !1
                    }), qo(t) || e)
                    if (e) {
                        const e = Uo.getDomRangeRects(t);
                        Ho(this, Uo.getBoundingRect(e))
                    } else Ho(this, t.getBoundingClientRect());
                else if (Mo(t)) {
                    const {
                        innerWidth: e,
                        innerHeight: n
                    } = t;
                    Ho(this, {
                        top: 0,
                        right: e,
                        bottom: n,
                        left: 0,
                        width: e,
                        height: n
                    })
                } else Ho(this, t)
            }
            clone() {
                return new Uo(this)
            }
            moveTo(t, e) {
                return this.top = e, this.right = t + this.width, this.bottom = e + this.height, this.left = t, this
            }
            moveBy(t, e) {
                return this.top += e, this.right += t, this.left += t, this.bottom += e, this
            }
            getIntersection(t) {
                const e = {
                    top: Math.max(this.top, t.top),
                    right: Math.min(this.right, t.right),
                    bottom: Math.min(this.bottom, t.bottom),
                    left: Math.max(this.left, t.left),
                    width: 0,
                    height: 0
                };
                return e.width = e.right - e.left, e.height = e.bottom - e.top, e.width < 0 || e.height < 0 ? null : new Uo(e)
            }
            getIntersectionArea(t) {
                const e = this.getIntersection(t);
                return e ? e.getArea() : 0
            }
            getArea() {
                return this.width * this.height
            }
            getVisible() {
                const t = this._source;
                let e = this.clone();
                if (Go(t)) return e;
                let n, o = t,
                    i = t.parentNode || t.commonAncestorContainer;
                for (; i && !Go(i);) {
                    if (o instanceof HTMLElement && "absolute" === Wo(o) && (n = o), n && ("relative" !== Wo(i) || "visible" === (r = i).ownerDocument.defaultView.getComputedStyle(r).overflow)) {
                        o = i, i = i.parentNode;
                        continue
                    }
                    const t = new Uo(i),
                        s = e.getIntersection(t);
                    if (!s) return null;
                    s.getArea() < e.getArea() && (e = s), o = i, i = i.parentNode
                }
                var r;
                return e
            }
            isEqual(t) {
                for (const e of Vo)
                    if (this[e] !== t[e]) return !1;
                return !0
            }
            contains(t) {
                const e = this.getIntersection(t);
                return !(!e || !e.isEqual(t))
            }
            excludeScrollbarsAndBorders() {
                const t = this._source;
                let e, n, o;
                if (Mo(t)) e = t.innerWidth - t.document.documentElement.clientWidth, n = t.innerHeight - t.document.documentElement.clientHeight, o = t.getComputedStyle(t.document.documentElement).direction;
                else {
                    const i = Ro(t);
                    e = t.offsetWidth - t.clientWidth - i.left - i.right, n = t.offsetHeight - t.clientHeight - i.top - i.bottom, o = t.ownerDocument.defaultView.getComputedStyle(t).direction, this.left += i.left, this.top += i.top, this.right -= i.right, this.bottom -= i.bottom, this.width = this.right - this.left, this.height = this.bottom - this.top
                }
                return this.width -= e, "ltr" === o ? this.right -= e : this.left += e, this.height -= n, this.bottom -= n, this
            }
            static getDomRangeRects(t) {
                const e = [],
                    n = Array.from(t.getClientRects());
                if (n.length)
                    for (const t of n) e.push(new Uo(t));
                else {
                    let n = t.startContainer;
                    Fo(n) && (n = n.parentNode);
                    const o = new Uo(n.getBoundingClientRect());
                    o.right = o.left, o.width = 0, e.push(o)
                }
                return e
            }
            static getBoundingRect(t) {
                const e = {
                    left: Number.POSITIVE_INFINITY,
                    top: Number.POSITIVE_INFINITY,
                    right: Number.NEGATIVE_INFINITY,
                    bottom: Number.NEGATIVE_INFINITY,
                    width: 0,
                    height: 0
                };
                let n = 0;
                for (const o of t) n++, e.left = Math.min(e.left, o.left), e.top = Math.min(e.top, o.top), e.right = Math.max(e.right, o.right), e.bottom = Math.max(e.bottom, o.bottom);
                return 0 == n ? null : (e.width = e.right - e.left, e.height = e.bottom - e.top, new Uo(e))
            }
        }

        function Ho(t, e) {
            for (const n of Vo) t[n] = e[n]
        }

        function Go(t) {
            return !!qo(t) && t === t.ownerDocument.body
        }

        function qo(t) {
            return null !== t && "object" == typeof t && 1 === t.nodeType && "function" == typeof t.getBoundingClientRect
        }

        function Wo(t) {
            return t.ownerDocument.defaultView.getComputedStyle(t).position
        }
        const Ko = class {
            constructor(t, e) {
                Ko._observerInstance || Ko._createObserver(), this._element = t, this._callback = e, Ko._addElementCallback(t, e), Ko._observerInstance.observe(t)
            }
            get element() {
                return this._element
            }
            destroy() {
                Ko._deleteElementCallback(this._element, this._callback)
            }
            static _addElementCallback(t, e) {
                Ko._elementCallbacks || (Ko._elementCallbacks = new Map);
                let n = Ko._elementCallbacks.get(t);
                n || (n = new Set, Ko._elementCallbacks.set(t, n)), n.add(e)
            }
            static _deleteElementCallback(t, e) {
                const n = Ko._getElementCallbacks(t);
                n && (n.delete(e), n.size || (Ko._elementCallbacks.delete(t), Ko._observerInstance.unobserve(t))), Ko._elementCallbacks && !Ko._elementCallbacks.size && (Ko._observerInstance = null, Ko._elementCallbacks = null)
            }
            static _getElementCallbacks(t) {
                return Ko._elementCallbacks ? Ko._elementCallbacks.get(t) : null
            }
            static _createObserver() {
                Ko._observerInstance = new Oo.window.ResizeObserver((t => {
                    for (const e of t) {
                        const t = Ko._getElementCallbacks(e.target);
                        if (t)
                            for (const n of t) n(e)
                    }
                }))
            }
        };
        let Yo = Ko;

        function $o(t, e) {
            t instanceof HTMLTextAreaElement && (t.value = e), t.innerHTML = e
        }

        function Zo(t) {
            return e => e + t
        }

        function Qo(t) {
            let e = 0;
            for (; t.previousSibling;) t = t.previousSibling, e++;
            return e
        }

        function Jo(t, e, n) {
            t.insertBefore(n, t.childNodes[e] || null)
        }

        function Xo(t) {
            return t && t.nodeType === Node.COMMENT_NODE
        }

        function ti(t) {
            return !!(t && t.getClientRects && t.getClientRects().length)
        }
        Yo._observerInstance = null, Yo._elementCallbacks = null;
        var ei = Math.pow;

        function ni({
            element: t,
            target: e,
            positions: n,
            limiter: o,
            fitInViewport: i,
            viewportOffsetConfig: r
        }) {
            Ut(e) && (e = e()), Ut(o) && (o = o());
            const s = function (t) {
                    return t && t.parentNode ? t.offsetParent === Oo.document.body ? null : t.offsetParent : null
                }(t),
                a = new Uo(t),
                c = new Uo(e);
            let l;
            const d = i && function (t) {
                    t = Object.assign({
                        top: 0,
                        bottom: 0,
                        left: 0,
                        right: 0
                    }, t);
                    const e = new Uo(Oo.window);
                    return e.top += t.top, e.height -= t.top, e.bottom -= t.bottom, e.height -= t.bottom, e
                }(r) || null,
                h = {
                    targetRect: c,
                    elementRect: a,
                    positionedElementAncestor: s,
                    viewportRect: d
                };
            if (o || i) {
                const t = o && new Uo(o).getVisible();
                Object.assign(h, {
                    limiterRect: t,
                    viewportRect: d
                }), l = function (t, e) {
                    const {
                        elementRect: n
                    } = e, o = n.getArea(), i = t.map((t => new ii(t, e))).filter((t => !!t.name));
                    let r = 0,
                        s = null;
                    for (const t of i) {
                        const {
                            limiterIntersectionArea: e,
                            viewportIntersectionArea: n
                        } = t;
                        if (e === o) return t;
                        const i = ei(n, 2) + ei(e, 2);
                        i > r && (r = i, s = t)
                    }
                    return s
                }(n, h) || new ii(n[0], h)
            } else l = new ii(n[0], h);
            return l
        }

        function oi(t) {
            const {
                scrollX: e,
                scrollY: n
            } = Oo.window;
            return t.clone().moveBy(e, n)
        }
        class ii {
            constructor(t, e) {
                const n = t(e.targetRect, e.elementRect, e.viewportRect);
                if (!n) return;
                const {
                    left: o,
                    top: i,
                    name: r,
                    config: s
                } = n;
                this.name = r, this.config = s, this._positioningFunctionCorrdinates = {
                    left: o,
                    top: i
                }, this._options = e
            }
            get left() {
                return this._absoluteRect.left
            }
            get top() {
                return this._absoluteRect.top
            }
            get limiterIntersectionArea() {
                const t = this._options.limiterRect;
                if (t) {
                    const e = this._options.viewportRect;
                    if (!e) return t.getIntersectionArea(this._rect); {
                        const n = t.getIntersection(e);
                        if (n) return n.getIntersectionArea(this._rect)
                    }
                }
                return 0
            }
            get viewportIntersectionArea() {
                const t = this._options.viewportRect;
                return t ? t.getIntersectionArea(this._rect) : 0
            }
            get _rect() {
                return this._cachedRect || (this._cachedRect = this._options.elementRect.clone().moveTo(this._positioningFunctionCorrdinates.left, this._positioningFunctionCorrdinates.top)), this._cachedRect
            }
            get _absoluteRect() {
                return this._cachedAbsoluteRect || (this._cachedAbsoluteRect = oi(this._rect), this._options.positionedElementAncestor && function (t, e) {
                    const n = oi(new Uo(e)),
                        o = Ro(e);
                    let i = 0,
                        r = 0;
                    i -= n.left, r -= n.top, i += e.scrollLeft, r += e.scrollTop, i -= o.left, r -= o.top, t.moveBy(i, r)
                }(this._cachedAbsoluteRect, this._options.positionedElementAncestor)), this._cachedAbsoluteRect
            }
        }

        function ri(t) {
            const e = t.parentNode;
            e && e.removeChild(t)
        }

        function si({
            window: t,
            rect: e,
            alignToTop: n,
            forceScroll: o,
            viewportOffset: i
        }) {
            const r = e.clone().moveBy(0, i.bottom),
                s = e.clone().moveBy(0, -i.top),
                a = new Uo(t).excludeScrollbarsAndBorders(),
                c = n && o,
                l = [s, r].every((t => a.contains(t)));
            let {
                scrollX: d,
                scrollY: h
            } = t;
            const u = d,
                g = h;
            c ? h -= a.top - e.top + i.top : l || (li(s, a) ? h -= a.top - e.top + i.top : ci(r, a) && (h += n ? e.top - a.top - i.top : e.bottom - a.bottom + i.bottom)), l || (di(e, a) ? d -= a.left - e.left + i.left : hi(e, a) && (d += e.right - a.right + i.right)), d == u && h === g || t.scrollTo(d, h)
        }

        function ai({
            parent: t,
            getRect: e,
            alignToTop: n,
            forceScroll: o,
            ancestorOffset: i = 0,
            limiterElement: r
        }) {
            const s = ui(t),
                a = n && o;
            let c, l, d;
            const h = r || s.document.body;
            for (; t != h;) l = e(), c = new Uo(t).excludeScrollbarsAndBorders(), d = c.contains(l), a ? t.scrollTop -= c.top - l.top + i : d || (li(l, c) ? t.scrollTop -= c.top - l.top + i : ci(l, c) && (t.scrollTop += n ? l.top - c.top - i : l.bottom - c.bottom + i)), d || (di(l, c) ? t.scrollLeft -= c.left - l.left + i : hi(l, c) && (t.scrollLeft += l.right - c.right + i)), t = t.parentNode
        }

        function ci(t, e) {
            return t.bottom > e.bottom
        }

        function li(t, e) {
            return t.top < e.top
        }

        function di(t, e) {
            return t.left < e.left
        }

        function hi(t, e) {
            return t.right > e.right
        }

        function ui(t) {
            return jo(t) ? t.startContainer.ownerDocument.defaultView : t.ownerDocument.defaultView
        }

        function gi(t) {
            if (jo(t)) {
                let e = t.commonAncestorContainer;
                return Fo(e) && (e = e.parentNode), e
            }
            return t.parentNode
        }

        function pi(t, e) {
            const n = ui(t),
                o = new Uo(t);
            if (n === e) return o; {
                let t = n;
                for (; t != e;) {
                    const e = t.frameElement,
                        n = new Uo(e).excludeScrollbarsAndBorders();
                    o.moveBy(n.left, n.top), t = t.parent
                }
            }
            return o
        }
        const mi = {
                ctrl: "⌃",
                cmd: "⌘",
                alt: "⌥",
                shift: "⇧"
            },
            fi = {
                ctrl: "Ctrl+",
                alt: "Alt+",
                shift: "Shift+"
            },
            ki = function () {
                const t = {
                    arrowleft: 37,
                    arrowup: 38,
                    arrowright: 39,
                    arrowdown: 40,
                    backspace: 8,
                    delete: 46,
                    enter: 13,
                    space: 32,
                    esc: 27,
                    tab: 9,
                    ctrl: 1114112,
                    shift: 2228224,
                    alt: 4456448,
                    cmd: 8912896
                };
                for (let e = 65; e <= 90; e++) {
                    t[String.fromCharCode(e).toLowerCase()] = e
                }
                for (let e = 48; e <= 57; e++) t[e - 48] = e;
                for (let e = 112; e <= 123; e++) t["f" + (e - 111)] = e;
                for (const e of "`-=[];',./\\") t[e] = e.charCodeAt(0);
                return t
            }(),
            bi = Object.fromEntries(Object.entries(ki).map((([t, e]) => [e, t.charAt(0).toUpperCase() + t.slice(1)])));

        function wi(t) {
            let e;
            if ("string" == typeof t) {
                if (e = ki[t.toLowerCase()], !e) throw new A("keyboard-unknown-key", null, {
                    key: t
                })
            } else e = t.keyCode + (t.altKey ? ki.alt : 0) + (t.ctrlKey ? ki.ctrl : 0) + (t.shiftKey ? ki.shift : 0) + (t.metaKey ? ki.cmd : 0);
            return e
        }

        function Ai(t) {
            return "string" == typeof t && (t = function (t) {
                return t.split("+").map((t => t.trim()))
            }(t)), t.map((t => "string" == typeof t ? function (t) {
                if (t.endsWith("!")) return wi(t.slice(0, -1));
                const e = wi(t);
                return a.isMac && e == ki.ctrl ? ki.cmd : e
            }(t) : t)).reduce(((t, e) => e + t), 0)
        }

        function Ci(t) {
            let e = Ai(t);
            return Object.entries(a.isMac ? mi : fi).reduce(((t, [n, o]) => (0 != (e & ki[n]) && (e &= ~ki[n], t += o), t)), "") + (e ? bi[e] : "")
        }

        function _i(t, e) {
            const n = "ltr" === e;
            switch (t) {
                case ki.arrowleft:
                    return n ? "left" : "right";
                case ki.arrowright:
                    return n ? "right" : "left";
                case ki.arrowup:
                    return "up";
                case ki.arrowdown:
                    return "down"
            }
        }

        function vi(t) {
            return Array.isArray(t) ? t : [t]
        }

        function yi(t, e, n = 1) {
            if ("number" != typeof n) throw new A("translation-service-quantity-not-a-number", null, {
                quantity: n
            });
            const o = Object.keys(Oo.window.CKEDITOR_TRANSLATIONS).length;
            1 === o && (t = Object.keys(Oo.window.CKEDITOR_TRANSLATIONS)[0]);
            const i = e.id || e.string;
            if (0 === o || ! function (t, e) {
                    return !!Oo.window.CKEDITOR_TRANSLATIONS[t] && !!Oo.window.CKEDITOR_TRANSLATIONS[t].dictionary[e]
                }(t, i)) return 1 !== n ? e.plural : e.string;
            const r = Oo.window.CKEDITOR_TRANSLATIONS[t].dictionary,
                s = Oo.window.CKEDITOR_TRANSLATIONS[t].getPluralForm || (t => 1 === t ? 0 : 1),
                a = r[i];
            if ("string" == typeof a) return a;
            return a[Number(s(n))]
        }
        Oo.window.CKEDITOR_TRANSLATIONS || (Oo.window.CKEDITOR_TRANSLATIONS = {});
        const xi = ["ar", "ara", "fa", "per", "fas", "he", "heb", "ku", "kur", "ug", "uig"];

        function Ei(t) {
            return xi.includes(t) ? "rtl" : "ltr"
        }
        class Di {
            constructor({
                uiLanguage: t = "en",
                contentLanguage: e
            } = {}) {
                this.uiLanguage = t, this.contentLanguage = e || this.uiLanguage, this.uiLanguageDirection = Ei(this.uiLanguage), this.contentLanguageDirection = Ei(this.contentLanguage), this.t = (t, e) => this._t(t, e)
            }
            get language() {
                return console.warn("locale-deprecated-language-property: The Locale#language property has been deprecated and will be removed in the near future. Please use #uiLanguage and #contentLanguage properties instead."), this.uiLanguage
            }
            _t(t, e = []) {
                e = vi(e), "string" == typeof t && (t = {
                    string: t
                });
                const n = !!t.plural ? e[0] : 1;
                return function (t, e) {
                    return t.replace(/%(\d+)/g, ((t, n) => n < e.length ? e[n] : t))
                }(yi(this.uiLanguage, t, n), e)
            }
        }
        class Si extends(B()) {
            constructor(t = {}, e = {}) {
                super();
                const n = nt(t);
                if (n || (e = t), this._items = [], this._itemMap = new Map, this._idProperty = e.idProperty || "id", this._bindToExternalToInternalMap = new WeakMap, this._bindToInternalToExternalMap = new WeakMap, this._skippedIndexesFromExternal = [], n)
                    for (const e of t) this._items.push(e), this._itemMap.set(this._getItemIdBeforeAdding(e), e)
            }
            get length() {
                return this._items.length
            }
            get first() {
                return this._items[0] || null
            }
            get last() {
                return this._items[this.length - 1] || null
            }
            add(t, e) {
                return this.addMany([t], e)
            }
            addMany(t, e) {
                if (void 0 === e) e = this._items.length;
                else if (e > this._items.length || e < 0) throw new A("collection-add-item-invalid-index", this);
                let n = 0;
                for (const o of t) {
                    const t = this._getItemIdBeforeAdding(o),
                        i = e + n;
                    this._items.splice(i, 0, o), this._itemMap.set(t, o), this.fire("add", o, i), n++
                }
                return this.fire("change", {
                    added: t,
                    removed: [],
                    index: e
                }), this
            }
            get(t) {
                let e;
                if ("string" == typeof t) e = this._itemMap.get(t);
                else {
                    if ("number" != typeof t) throw new A("collection-get-invalid-arg", this);
                    e = this._items[t]
                }
                return e || null
            }
            has(t) {
                if ("string" == typeof t) return this._itemMap.has(t); {
                    const e = t[this._idProperty];
                    return e && this._itemMap.has(e)
                }
            }
            getIndex(t) {
                let e;
                return e = "string" == typeof t ? this._itemMap.get(t) : t, e ? this._items.indexOf(e) : -1
            }
            remove(t) {
                const [e, n] = this._remove(t);
                return this.fire("change", {
                    added: [],
                    removed: [e],
                    index: n
                }), e
            }
            map(t, e) {
                return this._items.map(t, e)
            }
            find(t, e) {
                return this._items.find(t, e)
            }
            filter(t, e) {
                return this._items.filter(t, e)
            }
            clear() {
                this._bindToCollection && (this.stopListening(this._bindToCollection), this._bindToCollection = null);
                const t = Array.from(this._items);
                for (; this.length;) this._remove(0);
                this.fire("change", {
                    added: [],
                    removed: t,
                    index: 0
                })
            }
            bindTo(t) {
                if (this._bindToCollection) throw new A("collection-bind-to-rebind", this);
                return this._bindToCollection = t, {
                    as: t => {
                        this._setUpBindToBinding((e => new t(e)))
                    },
                    using: t => {
                        "function" == typeof t ? this._setUpBindToBinding(t) : this._setUpBindToBinding((e => e[t]))
                    }
                }
            }
            _setUpBindToBinding(t) {
                const e = this._bindToCollection,
                    n = (n, o, i) => {
                        const r = e._bindToCollection == this,
                            s = e._bindToInternalToExternalMap.get(o);
                        if (r && s) this._bindToExternalToInternalMap.set(o, s), this._bindToInternalToExternalMap.set(s, o);
                        else {
                            const n = t(o);
                            if (!n) return void this._skippedIndexesFromExternal.push(i);
                            let r = i;
                            for (const t of this._skippedIndexesFromExternal) i > t && r--;
                            for (const t of e._skippedIndexesFromExternal) r >= t && r++;
                            this._bindToExternalToInternalMap.set(o, n), this._bindToInternalToExternalMap.set(n, o), this.add(n, r);
                            for (let t = 0; t < e._skippedIndexesFromExternal.length; t++) r <= e._skippedIndexesFromExternal[t] && e._skippedIndexesFromExternal[t]++
                        }
                    };
                for (const t of e) n(0, t, e.getIndex(t));
                this.listenTo(e, "add", n), this.listenTo(e, "remove", ((t, e, n) => {
                    const o = this._bindToExternalToInternalMap.get(e);
                    o && this.remove(o), this._skippedIndexesFromExternal = this._skippedIndexesFromExternal.reduce(((t, e) => (n < e && t.push(e - 1), n > e && t.push(e), t)), [])
                }))
            }
            _getItemIdBeforeAdding(t) {
                const e = this._idProperty;
                let n;
                if (e in t) {
                    if (n = t[e], "string" != typeof n) throw new A("collection-add-invalid-id", this);
                    if (this.get(n)) throw new A("collection-add-item-already-exists", this)
                } else t[e] = n = f();
                return n
            }
            _remove(t) {
                let e, n, o, i = !1;
                const r = this._idProperty;
                if ("string" == typeof t ? (n = t, o = this._itemMap.get(n), i = !o, o && (e = this._items.indexOf(o))) : "number" == typeof t ? (e = t, o = this._items[e], i = !o, o && (n = o[r])) : (o = t, n = o[r], e = this._items.indexOf(o), i = -1 == e || !this._itemMap.get(n)), i) throw new A("collection-remove-404", this);
                this._items.splice(e, 1), this._itemMap.delete(n);
                const s = this._bindToInternalToExternalMap.get(o);
                return this._bindToInternalToExternalMap.delete(o), this._bindToExternalToInternalMap.delete(s), this.fire("remove", o, e), [o, e]
            } [Symbol.iterator]() {
                return this._items[Symbol.iterator]()
            }
        }

        function Ii(t) {
            const e = t.next();
            return e.done ? null : e.value
        }
        class Mi extends(Bo(K())) {
            constructor() {
                super(), this._elements = new Set, this._nextEventLoopTimeout = null, this.set("isFocused", !1), this.set("focusedElement", null)
            }
            add(t) {
                if (this._elements.has(t)) throw new A("focustracker-add-element-already-exist", this);
                this.listenTo(t, "focus", (() => this._focus(t)), {
                    useCapture: !0
                }), this.listenTo(t, "blur", (() => this._blur()), {
                    useCapture: !0
                }), this._elements.add(t)
            }
            remove(t) {
                t === this.focusedElement && this._blur(), this._elements.has(t) && (this.stopListening(t), this._elements.delete(t))
            }
            destroy() {
                this.stopListening()
            }
            _focus(t) {
                clearTimeout(this._nextEventLoopTimeout), this.focusedElement = t, this.isFocused = !0
            }
            _blur() {
                clearTimeout(this._nextEventLoopTimeout), this._nextEventLoopTimeout = setTimeout((() => {
                    this.focusedElement = null, this.isFocused = !1
                }), 0)
            }
        }
        class Ti {
            constructor() {
                this._listener = new(Bo())
            }
            listenTo(t) {
                this._listener.listenTo(t, "keydown", ((t, e) => {
                    this._listener.fire("_keydown:" + wi(e), e)
                }))
            }
            set(t, e, n = {}) {
                const o = Ai(t),
                    i = n.priority;
                this._listener.listenTo(this._listener, "_keydown:" + o, ((t, n) => {
                    e(n, (() => {
                        n.preventDefault(), n.stopPropagation(), t.stop()
                    })), t.return = !0
                }), {
                    priority: i
                })
            }
            press(t) {
                return !!this._listener.fire("_keydown:" + wi(t), t)
            }
            stopListening(t) {
                this._listener.stopListening(t)
            }
            destroy() {
                this.stopListening()
            }
        }

        function Bi(t) {
            return nt(t) ? new Map(t) : function (t) {
                const e = new Map;
                for (const n in t) e.set(n, t[n]);
                return e
            }(t)
        }

        function Ni(t, e) {
            let n;

            function o(...i) {
                o.cancel(), n = setTimeout((() => t(...i)), e)
            }
            return o.cancel = () => {
                clearTimeout(n)
            }, o
        }

        function Pi(t, e) {
            return !!(n = t.charAt(e - 1)) && 1 == n.length && /[\ud800-\udbff]/.test(n) && function (t) {
                return !!t && 1 == t.length && /[\udc00-\udfff]/.test(t)
            }(t.charAt(e));
            var n
        }

        function zi(t, e) {
            return !!(n = t.charAt(e)) && 1 == n.length && /[\u0300-\u036f\u1ab0-\u1aff\u1dc0-\u1dff\u20d0-\u20ff\ufe20-\ufe2f]/.test(n);
            var n
        }
        const Oi = function () {
            const t = [new RegExp("\\p{Emoji}[\\u{E0020}-\\u{E007E}]+\\u{E007F}", "u"), new RegExp("\\p{Emoji}\\u{FE0F}?\\u{20E3}", "u"), new RegExp("\\p{Emoji}\\u{FE0F}", "u"), new RegExp("(?=\\p{General_Category=Other_Symbol})\\p{Emoji}\\p{Emoji_Modifier}*", "u")],
                e = new RegExp("\\p{Regional_Indicator}{2}", "u").source,
                n = "(?:" + t.map((t => t.source)).join("|") + ")";
            return new RegExp(`${e}|${n}(?:‍${n})*`, "ug")
        }();

        function Li(t, e) {
            const n = String(t).matchAll(Oi);
            return Array.from(n).some((t => t.index < e && e < t.index + t[0].length))
        }
        class ji extends Si {
            constructor(t = []) {
                super(t, {
                    idProperty: "viewUid"
                }), this.on("add", ((t, e, n) => {
                    this._renderViewIntoCollectionParent(e, n)
                })), this.on("remove", ((t, e) => {
                    e.element && this._parentElement && e.element.remove()
                })), this._parentElement = null
            }
            destroy() {
                this.map((t => t.destroy()))
            }
            setParent(t) {
                this._parentElement = t;
                for (const t of this) this._renderViewIntoCollectionParent(t)
            }
            delegate(...t) {
                if (!t.length || !t.every((t => "string" == typeof t))) throw new A("ui-viewcollection-delegate-wrong-events", this);
                return {
                    to: e => {
                        for (const n of this)
                            for (const o of t) n.delegate(o).to(e);
                        this.on("add", ((n, o) => {
                            for (const n of t) o.delegate(n).to(e)
                        })), this.on("remove", ((n, o) => {
                            for (const n of t) o.stopDelegating(n, e)
                        }))
                    }
                }
            }
            _renderViewIntoCollectionParent(t, e) {
                t.isRendered || t.render(), t.element && this._parentElement && this._parentElement.insertBefore(t.element, this._parentElement.children[e])
            }
            remove(t) {
                return super.remove(t)
            }
        }
        var Ri = n(6062),
            Fi = n.n(Ri),
            Vi = n(4793),
            Ui = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(Vi.Z, Ui);
        Vi.Z.locals;
        class Hi extends(Bo(K())) {
            constructor(t) {
                super(), this.element = null, this.isRendered = !1, this.locale = t, this.t = t && t.t, this._viewCollections = new Si, this._unboundChildren = this.createCollection(), this._viewCollections.on("add", ((e, n) => {
                    n.locale = t, n.t = t && t.t
                })), this.decorate("render")
            }
            get bindTemplate() {
                return this._bindTemplate ? this._bindTemplate : this._bindTemplate = Gi.bind(this, this)
            }
            createCollection(t) {
                const e = new ji(t);
                return this._viewCollections.add(e), e
            }
            registerChild(t) {
                nt(t) || (t = [t]);
                for (const e of t) this._unboundChildren.add(e)
            }
            deregisterChild(t) {
                nt(t) || (t = [t]);
                for (const e of t) this._unboundChildren.remove(e)
            }
            setTemplate(t) {
                this.template = new Gi(t)
            }
            extendTemplate(t) {
                Gi.extend(this.template, t)
            }
            render() {
                if (this.isRendered) throw new A("ui-view-render-already-rendered", this);
                this.template && (this.element = this.template.render(), this.registerChild(this.template.getViews())), this.isRendered = !0
            }
            destroy() {
                this.stopListening(), this._viewCollections.map((t => t.destroy())), this.template && this.template._revertData && this.template.revert(this.element)
            }
        }
        class Gi extends(B()) {
            constructor(t) {
                super(), Object.assign(this, tr(Xi(t))), this._isRendered = !1, this._revertData = null
            }
            render() {
                const t = this._renderNode({
                    intoFragment: !0
                });
                return this._isRendered = !0, t
            }
            apply(t) {
                return this._revertData = {
                    children: [],
                    bindings: [],
                    attributes: {}
                }, this._renderNode({
                    node: t,
                    intoFragment: !1,
                    isApplying: !0,
                    revertData: this._revertData
                }), t
            }
            revert(t) {
                if (!this._revertData) throw new A("ui-template-revert-not-applied", [this, t]);
                this._revertTemplateFromNode(t, this._revertData)
            }* getViews() {
                yield* function* t(e) {
                    if (e.children)
                        for (const n of e.children) sr(n) ? yield n: ar(n) && (yield* t(n))
                }(this)
            }
            static bind(t, e) {
                return {
                    to: (n, o) => new Wi({
                        eventNameOrFunction: n,
                        attribute: n,
                        observable: t,
                        emitter: e,
                        callback: o
                    }),
                    if: (n, o, i) => new Ki({
                        observable: t,
                        emitter: e,
                        attribute: n,
                        valueIfTrue: o,
                        callback: i
                    })
                }
            }
            static extend(t, e) {
                if (t._isRendered) throw new A("template-extend-render", [this, t]);
                ir(t, tr(Xi(e)))
            }
            _renderNode(t) {
                let e;
                if (e = t.node ? this.tag && this.text : this.tag ? this.text : !this.text, e) throw new A("ui-template-wrong-syntax", this);
                return this.text ? this._renderText(t) : this._renderElement(t)
            }
            _renderElement(t) {
                let e = t.node;
                return e || (e = t.node = document.createElementNS(this.ns || "http://www.w3.org/1999/xhtml", this.tag)), this._renderAttributes(t), this._renderElementChildren(t), this._setUpListeners(t), e
            }
            _renderText(t) {
                let e = t.node;
                return e ? t.revertData.text = e.textContent : e = t.node = document.createTextNode(""), Yi(this.text) ? this._bindToObservable({
                    schema: this.text,
                    updater: Zi(e),
                    data: t
                }) : e.textContent = this.text.join(""), e
            }
            _renderAttributes(t) {
                if (!this.attributes) return;
                const e = t.node,
                    n = t.revertData;
                for (const o in this.attributes) {
                    const i = e.getAttribute(o),
                        r = this.attributes[o];
                    n && (n.attributes[o] = i);
                    const s = lr(r) ? r[0].ns : null;
                    if (Yi(r)) {
                        const a = lr(r) ? r[0].value : r;
                        n && dr(o) && a.unshift(i), this._bindToObservable({
                            schema: a,
                            updater: Qi(e, o, s),
                            data: t
                        })
                    } else if ("style" == o && "string" != typeof r[0]) this._renderStyleAttribute(r[0], t);
                    else {
                        n && i && dr(o) && r.unshift(i);
                        const t = r.map((t => t && t.value || t)).reduce(((t, e) => t.concat(e)), []).reduce(nr, "");
                        rr(t) || e.setAttributeNS(s, o, t)
                    }
                }
            }
            _renderStyleAttribute(t, e) {
                const n = e.node;
                for (const o in t) {
                    const i = t[o];
                    Yi(i) ? this._bindToObservable({
                        schema: [i],
                        updater: Ji(n, o),
                        data: e
                    }) : n.style[o] = i
                }
            }
            _renderElementChildren(t) {
                const e = t.node,
                    n = t.intoFragment ? document.createDocumentFragment() : e,
                    o = t.isApplying;
                let i = 0;
                for (const r of this.children)
                    if (cr(r)) {
                        if (!o) {
                            r.setParent(e);
                            for (const t of r) n.appendChild(t.element)
                        }
                    } else if (sr(r)) o || (r.isRendered || r.render(), n.appendChild(r.element));
                else if (Io(r)) n.appendChild(r);
                else if (o) {
                    const e = {
                        children: [],
                        bindings: [],
                        attributes: {}
                    };
                    t.revertData.children.push(e), r._renderNode({
                        intoFragment: !1,
                        node: n.childNodes[i++],
                        isApplying: !0,
                        revertData: e
                    })
                } else n.appendChild(r.render());
                t.intoFragment && e.appendChild(n)
            }
            _setUpListeners(t) {
                if (this.eventListeners)
                    for (const e in this.eventListeners) {
                        const n = this.eventListeners[e].map((n => {
                            const [o, i] = e.split("@");
                            return n.activateDomEventListener(o, i, t)
                        }));
                        t.revertData && t.revertData.bindings.push(n)
                    }
            }
            _bindToObservable({
                schema: t,
                updater: e,
                data: n
            }) {
                const o = n.revertData;
                $i(t, e, n);
                const i = t.filter((t => !rr(t))).filter((t => t.observable)).map((o => o.activateAttributeListener(t, e, n)));
                o && o.bindings.push(i)
            }
            _revertTemplateFromNode(t, e) {
                for (const t of e.bindings)
                    for (const e of t) e();
                if (e.text) return void(t.textContent = e.text);
                const n = t;
                for (const t in e.attributes) {
                    const o = e.attributes[t];
                    null === o ? n.removeAttribute(t) : n.setAttribute(t, o)
                }
                for (let t = 0; t < e.children.length; ++t) this._revertTemplateFromNode(n.childNodes[t], e.children[t])
            }
        }
        class qi {
            constructor(t) {
                this.attribute = t.attribute, this.observable = t.observable, this.emitter = t.emitter, this.callback = t.callback
            }
            getValue(t) {
                const e = this.observable[this.attribute];
                return this.callback ? this.callback(e, t) : e
            }
            activateAttributeListener(t, e, n) {
                const o = () => $i(t, e, n);
                return this.emitter.listenTo(this.observable, `change:${this.attribute}`, o), () => {
                    this.emitter.stopListening(this.observable, `change:${this.attribute}`, o)
                }
            }
        }
        class Wi extends qi {
            constructor(t) {
                super(t), this.eventNameOrFunction = t.eventNameOrFunction
            }
            activateDomEventListener(t, e, n) {
                const o = (t, n) => {
                    e && !n.target.matches(e) || ("function" == typeof this.eventNameOrFunction ? this.eventNameOrFunction(n) : this.observable.fire(this.eventNameOrFunction, n))
                };
                return this.emitter.listenTo(n.node, t, o), () => {
                    this.emitter.stopListening(n.node, t, o)
                }
            }
        }
        class Ki extends qi {
            constructor(t) {
                super(t), this.valueIfTrue = t.valueIfTrue
            }
            getValue(t) {
                return !rr(super.getValue(t)) && (this.valueIfTrue || !0)
            }
        }

        function Yi(t) {
            return !!t && (t.value && (t = t.value), Array.isArray(t) ? t.some(Yi) : t instanceof qi)
        }

        function $i(t, e, {
            node: n
        }) {
            const o = function (t, e) {
                return t.map((t => t instanceof qi ? t.getValue(e) : t))
            }(t, n);
            let i;
            i = 1 == t.length && t[0] instanceof Ki ? o[0] : o.reduce(nr, ""), rr(i) ? e.remove() : e.set(i)
        }

        function Zi(t) {
            return {
                set(e) {
                    t.textContent = e
                },
                remove() {
                    t.textContent = ""
                }
            }
        }

        function Qi(t, e, n) {
            return {
                set(o) {
                    t.setAttributeNS(n, e, o)
                },
                remove() {
                    t.removeAttributeNS(n, e)
                }
            }
        }

        function Ji(t, e) {
            return {
                set(n) {
                    t.style[e] = n
                },
                remove() {
                    t.style[e] = null
                }
            }
        }

        function Xi(t) {
            return yo(t, (t => {
                if (t && (t instanceof qi || ar(t) || sr(t) || cr(t))) return t
            }))
        }

        function tr(t) {
            if ("string" == typeof t ? t = function (t) {
                    return {
                        text: [t]
                    }
                }(t) : t.text && function (t) {
                    t.text = vi(t.text)
                }(t), t.on && (t.eventListeners = function (t) {
                    for (const e in t) er(t, e);
                    return t
                }(t.on), delete t.on), !t.text) {
                t.attributes && function (t) {
                    for (const e in t) t[e].value && (t[e].value = vi(t[e].value)), er(t, e)
                }(t.attributes);
                const e = [];
                if (t.children)
                    if (cr(t.children)) e.push(t.children);
                    else
                        for (const n of t.children) ar(n) || sr(n) || Io(n) ? e.push(n) : e.push(new Gi(n));
                t.children = e
            }
            return t
        }

        function er(t, e) {
            t[e] = vi(t[e])
        }

        function nr(t, e) {
            return rr(e) ? t : rr(t) ? e : `${t} ${e}`
        }

        function or(t, e) {
            for (const n in e) t[n] ? t[n].push(...e[n]) : t[n] = e[n]
        }

        function ir(t, e) {
            if (e.attributes && (t.attributes || (t.attributes = {}), or(t.attributes, e.attributes)), e.eventListeners && (t.eventListeners || (t.eventListeners = {}), or(t.eventListeners, e.eventListeners)), e.text && t.text.push(...e.text), e.children && e.children.length) {
                if (t.children.length != e.children.length) throw new A("ui-template-extend-children-mismatch", t);
                let n = 0;
                for (const o of e.children) ir(t.children[n++], o)
            }
        }

        function rr(t) {
            return !t && 0 !== t
        }

        function sr(t) {
            return t instanceof Hi
        }

        function ar(t) {
            return t instanceof Gi
        }

        function cr(t) {
            return t instanceof ji
        }

        function lr(t) {
            return F(t[0]) && t[0].ns
        }

        function dr(t) {
            return "class" == t || "style" == t
        }
        class hr extends ji {
            constructor(t, e = []) {
                super(e), this.locale = t
            }
            get bodyCollectionContainer() {
                return this._bodyCollectionContainer
            }
            attachToDom() {
                this._bodyCollectionContainer = new Gi({
                    tag: "div",
                    attributes: {
                        class: ["ck", "ck-reset_all", "ck-body", "ck-rounded-corners"],
                        dir: this.locale.uiLanguageDirection
                    },
                    children: this
                }).render();
                let t = document.querySelector(".ck-body-wrapper");
                t || (t = wt(document, "div", {
                    class: "ck-body-wrapper"
                }), document.body.appendChild(t)), t.appendChild(this._bodyCollectionContainer)
            }
            detachFromDom() {
                super.destroy(), this._bodyCollectionContainer && this._bodyCollectionContainer.remove();
                const t = document.querySelector(".ck-body-wrapper");
                t && 0 == t.childElementCount && t.remove()
            }
        }
        var ur = n(6574),
            gr = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(ur.Z, gr);
        ur.Z.locals;
        const pr = class extends Hi {
            constructor() {
                super();
                const t = this.bindTemplate;
                this.set("content", ""), this.set("viewBox", "0 0 20 20"), this.set("fillColor", ""), this.set("isColorInherited", !0), this.setTemplate({
                    tag: "svg",
                    ns: "http://www.w3.org/2000/svg",
                    attributes: {
                        class: ["ck", "ck-icon", "ck-reset_all-excluded", t.if("isColorInherited", "ck-icon_inherit-color")],
                        viewBox: t.to("viewBox")
                    }
                })
            }
            render() {
                super.render(), this._updateXMLContent(), this._colorFillPaths(), this.on("change:content", (() => {
                    this._updateXMLContent(), this._colorFillPaths()
                })), this.on("change:fillColor", (() => {
                    this._colorFillPaths()
                }))
            }
            _updateXMLContent() {
                if (this.content) {
                    const t = (new DOMParser).parseFromString(this.content.trim(), "image/svg+xml").querySelector("svg"),
                        e = t.getAttribute("viewBox");
                    e && (this.viewBox = e);
                    for (const {
                            name: e,
                            value: n
                        } of Array.from(t.attributes)) pr.presentationalAttributeNames.includes(e) && this.element.setAttribute(e, n);
                    for (; this.element.firstChild;) this.element.removeChild(this.element.firstChild);
                    for (; t.childNodes.length > 0;) this.element.appendChild(t.childNodes[0])
                }
            }
            _colorFillPaths() {
                this.fillColor && this.element.querySelectorAll(".ck-icon__fill").forEach((t => {
                    t.style.fill = this.fillColor
                }))
            }
        };
        let mr = pr;
        mr.presentationalAttributeNames = ["alignment-baseline", "baseline-shift", "clip-path", "clip-rule", "color", "color-interpolation", "color-interpolation-filters", "color-rendering", "cursor", "direction", "display", "dominant-baseline", "fill", "fill-opacity", "fill-rule", "filter", "flood-color", "flood-opacity", "font-family", "font-size", "font-size-adjust", "font-stretch", "font-style", "font-variant", "font-weight", "image-rendering", "letter-spacing", "lighting-color", "marker-end", "marker-mid", "marker-start", "mask", "opacity", "overflow", "paint-order", "pointer-events", "shape-rendering", "stop-color", "stop-opacity", "stroke", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width", "text-anchor", "text-decoration", "text-overflow", "text-rendering", "transform", "unicode-bidi", "vector-effect", "visibility", "white-space", "word-spacing", "writing-mode"];
        var fr = n(4906),
            kr = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(fr.Z, kr);
        fr.Z.locals;
        class br extends Hi {
            constructor(t) {
                super(t), this._focusDelayed = null;
                const e = this.bindTemplate,
                    n = f();
                this.set("ariaChecked", void 0), this.set("ariaLabel", void 0), this.set("ariaLabelledBy", `ck-editor__aria-label_${n}`), this.set("class", void 0), this.set("labelStyle", void 0), this.set("icon", void 0), this.set("isEnabled", !0), this.set("isOn", !1), this.set("isVisible", !0), this.set("isToggleable", !1), this.set("keystroke", void 0), this.set("label", void 0), this.set("role", void 0), this.set("tabindex", -1), this.set("tooltip", !1), this.set("tooltipPosition", "s"), this.set("type", "button"), this.set("withText", !1), this.set("withKeystroke", !1), this.children = this.createCollection(), this.labelView = this._createLabelView(), this.iconView = new mr, this.iconView.extendTemplate({
                    attributes: {
                        class: "ck-button__icon"
                    }
                }), this.keystrokeView = this._createKeystrokeView(), this.bind("_tooltipString").to(this, "tooltip", this, "label", this, "keystroke", this._getTooltipString.bind(this));
                const o = {
                    tag: "button",
                    attributes: {
                        class: ["ck", "ck-button", e.to("class"), e.if("isEnabled", "ck-disabled", (t => !t)), e.if("isVisible", "ck-hidden", (t => !t)), e.to("isOn", (t => t ? "ck-on" : "ck-off")), e.if("withText", "ck-button_with-text"), e.if("withKeystroke", "ck-button_with-keystroke")],
                        role: e.to("role"),
                        type: e.to("type", (t => t || "button")),
                        tabindex: e.to("tabindex"),
                        "aria-label": e.to("ariaLabel"),
                        "aria-labelledby": e.to("ariaLabelledBy"),
                        "aria-disabled": e.if("isEnabled", !0, (t => !t)),
                        "aria-checked": e.to("isOn"),
                        "aria-pressed": e.to("isOn", (t => !!this.isToggleable && String(!!t))),
                        "data-cke-tooltip-text": e.to("_tooltipString"),
                        "data-cke-tooltip-position": e.to("tooltipPosition")
                    },
                    children: this.children,
                    on: {
                        click: e.to((t => {
                            this.isEnabled ? this.fire("execute") : t.preventDefault()
                        }))
                    }
                };
                a.isSafari && (this._focusDelayed || (this._focusDelayed = Ni((() => this.focus()), 0)), o.on.mousedown = e.to((() => {
                    this._focusDelayed()
                })), o.on.mouseup = e.to((() => {
                    this._focusDelayed.cancel()
                }))), this.setTemplate(o)
            }
            render() {
                super.render(), this.icon && (this.iconView.bind("content").to(this, "icon"), this.children.add(this.iconView)), this.children.add(this.labelView), this.withKeystroke && this.keystroke && this.children.add(this.keystrokeView)
            }
            focus() {
                this.element.focus()
            }
            destroy() {
                this._focusDelayed && this._focusDelayed.cancel(), super.destroy()
            }
            _createLabelView() {
                const t = new Hi,
                    e = this.bindTemplate;
                return t.setTemplate({
                    tag: "span",
                    attributes: {
                        class: ["ck", "ck-button__label"],
                        style: e.to("labelStyle"),
                        id: this.ariaLabelledBy
                    },
                    children: [{
                        text: e.to("label")
                    }]
                }), t
            }
            _createKeystrokeView() {
                const t = new Hi;
                return t.setTemplate({
                    tag: "span",
                    attributes: {
                        class: ["ck", "ck-button__keystroke"]
                    },
                    children: [{
                        text: this.bindTemplate.to("keystroke", (t => Ci(t)))
                    }]
                }), t
            }
            _getTooltipString(t, e, n) {
                return t ? "string" == typeof t ? t : (n && (n = Ci(n)), t instanceof Function ? t(e, n) : `${e}${n?` (${n})`:""}`) : ""
            }
        }
        var wr = n(5332),
            Ar = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(wr.Z, Ar);
        wr.Z.locals;
        class Cr extends br {
            constructor(t) {
                super(t), this.isToggleable = !0, this.toggleSwitchView = this._createToggleView(), this.extendTemplate({
                    attributes: {
                        class: "ck-switchbutton"
                    }
                })
            }
            render() {
                super.render(), this.children.add(this.toggleSwitchView)
            }
            _createToggleView() {
                const t = new Hi;
                return t.setTemplate({
                    tag: "span",
                    attributes: {
                        class: ["ck", "ck-button__toggle"]
                    },
                    children: [{
                        tag: "span",
                        attributes: {
                            class: ["ck", "ck-button__toggle__inner"]
                        }
                    }]
                }), t
            }
        }
        var _r = n(6781),
            vr = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(_r.Z, vr);
        _r.Z.locals;
        n(1103);
        n(841);
        var yr = n(3662),
            xr = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(yr.Z, xr);
        yr.Z.locals;
        class Er extends Hi {
            constructor(t) {
                super(t), this.set("text", void 0), this.set("for", void 0), this.id = `ck-editor__label_${f()}`;
                const e = this.bindTemplate;
                this.setTemplate({
                    tag: "label",
                    attributes: {
                        class: ["ck", "ck-label"],
                        id: this.id,
                        for: e.to("for")
                    },
                    children: [{
                        text: e.to("text")
                    }]
                })
            }
        }
        var Dr = n(2577),
            Sr = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(Dr.Z, Sr);
        Dr.Z.locals;
        class Ir extends Hi {
            constructor(t, e) {
                super(t);
                const n = `ck-labeled-field-view-${f()}`,
                    o = `ck-labeled-field-view-status-${f()}`;
                this.fieldView = e(this, n, o), this.set("label", void 0), this.set("isEnabled", !0), this.set("isEmpty", !0), this.set("isFocused", !1), this.set("errorText", null), this.set("infoText", null), this.set("class", void 0), this.set("placeholder", void 0), this.labelView = this._createLabelView(n), this.statusView = this._createStatusView(o), this.fieldWrapperChildren = this.createCollection([this.fieldView, this.labelView]), this.bind("_statusText").to(this, "errorText", this, "infoText", ((t, e) => t || e));
                const i = this.bindTemplate;
                this.setTemplate({
                    tag: "div",
                    attributes: {
                        class: ["ck", "ck-labeled-field-view", i.to("class"), i.if("isEnabled", "ck-disabled", (t => !t)), i.if("isEmpty", "ck-labeled-field-view_empty"), i.if("isFocused", "ck-labeled-field-view_focused"), i.if("placeholder", "ck-labeled-field-view_placeholder"), i.if("errorText", "ck-error")]
                    },
                    children: [{
                        tag: "div",
                        attributes: {
                            class: ["ck", "ck-labeled-field-view__input-wrapper"]
                        },
                        children: this.fieldWrapperChildren
                    }, this.statusView]
                })
            }
            _createLabelView(t) {
                const e = new Er(this.locale);
                return e.for = t, e.bind("text").to(this, "label"), e
            }
            _createStatusView(t) {
                const e = new Hi(this.locale),
                    n = this.bindTemplate;
                return e.setTemplate({
                    tag: "div",
                    attributes: {
                        class: ["ck", "ck-labeled-field-view__status", n.if("errorText", "ck-labeled-field-view__status_error"), n.if("_statusText", "ck-hidden", (t => !t))],
                        id: t,
                        role: n.if("errorText", "alert")
                    },
                    children: [{
                        text: n.to("_statusText")
                    }]
                }), e
            }
            focus() {
                this.fieldView.focus()
            }
        }
        var Mr = n(4879),
            Tr = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(Mr.Z, Tr);
        Mr.Z.locals;
        class Br extends Hi {
            constructor(t) {
                super(t), this.set("value", void 0), this.set("id", void 0), this.set("placeholder", void 0), this.set("isReadOnly", !1), this.set("hasError", !1), this.set("ariaDescribedById", void 0), this.focusTracker = new Mi, this.bind("isFocused").to(this.focusTracker), this.set("isEmpty", !0), this.set("inputMode", "text");
                const e = this.bindTemplate;
                this.setTemplate({
                    tag: "input",
                    attributes: {
                        class: ["ck", "ck-input", e.if("isFocused", "ck-input_focused"), e.if("isEmpty", "ck-input-text_empty"), e.if("hasError", "ck-error")],
                        id: e.to("id"),
                        placeholder: e.to("placeholder"),
                        readonly: e.to("isReadOnly"),
                        inputmode: e.to("inputMode"),
                        "aria-invalid": e.if("hasError", !0),
                        "aria-describedby": e.to("ariaDescribedById")
                    },
                    on: {
                        input: e.to(((...t) => {
                            this.fire("input", ...t), this._updateIsEmpty()
                        })),
                        change: e.to(this._updateIsEmpty.bind(this))
                    }
                })
            }
            render() {
                super.render(), this.focusTracker.add(this.element), this._setDomElementValue(this.value), this._updateIsEmpty(), this.on("change:value", ((t, e, n) => {
                    this._setDomElementValue(n), this._updateIsEmpty()
                }))
            }
            destroy() {
                super.destroy(), this.focusTracker.destroy()
            }
            select() {
                this.element.select()
            }
            focus() {
                this.element.focus()
            }
            _updateIsEmpty() {
                this.isEmpty = !this.element.value
            }
            _setDomElementValue(t) {
                this.element.value = t || 0 === t ? t : ""
            }
        }
        class Nr extends Br {
            constructor(t) {
                super(t), this.extendTemplate({
                    attributes: {
                        type: "text",
                        class: ["ck-input-text"]
                    }
                })
            }
        }
        class Pr extends Hi {
            constructor(t) {
                super(t);
                const e = this.bindTemplate;
                this.set("isVisible", !1), this.set("position", "se"), this.children = this.createCollection(), this.setTemplate({
                    tag: "div",
                    attributes: {
                        class: ["ck", "ck-reset", "ck-dropdown__panel", e.to("position", (t => `ck-dropdown__panel_${t}`)), e.if("isVisible", "ck-dropdown__panel-visible")],
                        tabindex: "-1"
                    },
                    children: this.children,
                    on: {
                        selectstart: e.to((t => {
                            "input" !== t.target.tagName.toLocaleLowerCase() && t.preventDefault()
                        }))
                    }
                })
            }
            focus() {
                if (this.children.length) {
                    const t = this.children.first;
                    "function" == typeof t.focus ? t.focus() : C("ui-dropdown-panel-focus-child-missing-focus", {
                        childView: this.children.first,
                        dropdownPanel: this
                    })
                }
            }
            focusLast() {
                if (this.children.length) {
                    const t = this.children.last;
                    "function" == typeof t.focusLast ? t.focusLast() : t.focus()
                }
            }
        }
        var zr = n(5485),
            Or = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(zr.Z, Or);
        zr.Z.locals;
        const Lr = class extends Hi {
            constructor(t, e, n) {
                super(t);
                const o = this.bindTemplate;
                this.buttonView = e, this.panelView = n, this.set("isOpen", !1), this.set("isEnabled", !0), this.set("class", void 0), this.set("id", void 0), this.set("panelPosition", "auto"), this.keystrokes = new Ti, this.focusTracker = new Mi, this.setTemplate({
                    tag: "div",
                    attributes: {
                        class: ["ck", "ck-dropdown", o.to("class"), o.if("isEnabled", "ck-disabled", (t => !t))],
                        id: o.to("id"),
                        "aria-describedby": o.to("ariaDescribedById")
                    },
                    children: [e, n]
                }), e.extendTemplate({
                    attributes: {
                        class: ["ck-dropdown__button"],
                        "data-cke-tooltip-disabled": o.to("isOpen")
                    }
                })
            }
            render() {
                super.render(), this.focusTracker.add(this.buttonView.element), this.focusTracker.add(this.panelView.element), this.listenTo(this.buttonView, "open", (() => {
                    this.isOpen = !this.isOpen
                })), this.panelView.bind("isVisible").to(this, "isOpen"), this.on("change:isOpen", ((t, e, n) => {
                    n && ("auto" === this.panelPosition ? this.panelView.position = Lr._getOptimalPosition({
                        element: this.panelView.element,
                        target: this.buttonView.element,
                        fitInViewport: !0,
                        positions: this._panelPositions
                    }).name : this.panelView.position = this.panelPosition)
                })), this.keystrokes.listenTo(this.element);
                const t = (t, e) => {
                    this.isOpen && (this.isOpen = !1, e())
                };
                this.keystrokes.set("arrowdown", ((t, e) => {
                    this.buttonView.isEnabled && !this.isOpen && (this.isOpen = !0, e())
                })), this.keystrokes.set("arrowright", ((t, e) => {
                    this.isOpen && e()
                })), this.keystrokes.set("arrowleft", t), this.keystrokes.set("esc", t)
            }
            focus() {
                this.buttonView.focus()
            }
            get _panelPositions() {
                const {
                    south: t,
                    north: e,
                    southEast: n,
                    southWest: o,
                    northEast: i,
                    northWest: r,
                    southMiddleEast: s,
                    southMiddleWest: a,
                    northMiddleEast: c,
                    northMiddleWest: l
                } = Lr.defaultPanelPositions;
                return "rtl" !== this.locale.uiLanguageDirection ? [n, o, s, a, t, i, r, c, l, e] : [o, n, a, s, t, r, i, l, c, e]
            }
        };
        let jr = Lr;
        jr.defaultPanelPositions = {
            south: (t, e) => ({
                top: t.bottom,
                left: t.left - (e.width - t.width) / 2,
                name: "s"
            }),
            southEast: t => ({
                top: t.bottom,
                left: t.left,
                name: "se"
            }),
            southWest: (t, e) => ({
                top: t.bottom,
                left: t.left - e.width + t.width,
                name: "sw"
            }),
            southMiddleEast: (t, e) => ({
                top: t.bottom,
                left: t.left - (e.width - t.width) / 4,
                name: "sme"
            }),
            southMiddleWest: (t, e) => ({
                top: t.bottom,
                left: t.left - 3 * (e.width - t.width) / 4,
                name: "smw"
            }),
            north: (t, e) => ({
                top: t.top - e.height,
                left: t.left - (e.width - t.width) / 2,
                name: "n"
            }),
            northEast: (t, e) => ({
                top: t.top - e.height,
                left: t.left,
                name: "ne"
            }),
            northWest: (t, e) => ({
                top: t.top - e.height,
                left: t.left - e.width + t.width,
                name: "nw"
            }),
            northMiddleEast: (t, e) => ({
                top: t.top - e.height,
                left: t.left - (e.width - t.width) / 4,
                name: "nme"
            }),
            northMiddleWest: (t, e) => ({
                top: t.top - e.height,
                left: t.left - 3 * (e.width - t.width) / 4,
                name: "nmw"
            })
        }, jr._getOptimalPosition = ni;
        const Rr = '<svg viewBox="0 0 10 10" xmlns="http://www.w3.org/2000/svg"><path d="M.941 4.523a.75.75 0 1 1 1.06-1.06l3.006 3.005 3.005-3.005a.75.75 0 1 1 1.06 1.06l-3.549 3.55a.75.75 0 0 1-1.168-.136L.941 4.523z"/></svg>';
        class Fr extends br {
            constructor(t) {
                super(t), this.arrowView = this._createArrowView(), this.extendTemplate({
                    attributes: {
                        "aria-haspopup": !0,
                        "aria-expanded": this.bindTemplate.to("isOn", (t => String(t)))
                    }
                }), this.delegate("execute").to(this, "open")
            }
            render() {
                super.render(), this.children.add(this.arrowView)
            }
            _createArrowView() {
                const t = new mr;
                return t.content = Rr, t.extendTemplate({
                    attributes: {
                        class: "ck-dropdown__arrow"
                    }
                }), t
            }
        }
        class Vr {
            constructor(t) {
                if (this.focusables = t.focusables, this.focusTracker = t.focusTracker, this.keystrokeHandler = t.keystrokeHandler, this.actions = t.actions, t.actions && t.keystrokeHandler)
                    for (const e in t.actions) {
                        let n = t.actions[e];
                        "string" == typeof n && (n = [n]);
                        for (const o of n) t.keystrokeHandler.set(o, ((t, n) => {
                            this[e](), n()
                        }))
                    }
            }
            get first() {
                return this.focusables.find(Ur) || null
            }
            get last() {
                return this.focusables.filter(Ur).slice(-1)[0] || null
            }
            get next() {
                return this._getFocusableItem(1)
            }
            get previous() {
                return this._getFocusableItem(-1)
            }
            get current() {
                let t = null;
                return null === this.focusTracker.focusedElement ? null : (this.focusables.find(((e, n) => {
                    const o = e.element === this.focusTracker.focusedElement;
                    return o && (t = n), o
                })), t)
            }
            focusFirst() {
                this._focus(this.first)
            }
            focusLast() {
                this._focus(this.last)
            }
            focusNext() {
                this._focus(this.next)
            }
            focusPrevious() {
                this._focus(this.previous)
            }
            _focus(t) {
                t && t.focus()
            }
            _getFocusableItem(t) {
                const e = this.current,
                    n = this.focusables.length;
                if (!n) return null;
                if (null === e) return this[1 === t ? "first" : "last"];
                let o = (e + n + t) % n;
                do {
                    const e = this.focusables.get(o);
                    if (Ur(e)) return e;
                    o = (o + n + t) % n
                } while (o !== e);
                return null
            }
        }

        function Ur(t) {
            return !(!t.focus || !ti(t.element))
        }
        class Hr extends Hi {
            constructor(t) {
                super(t), this.setTemplate({
                    tag: "span",
                    attributes: {
                        class: ["ck", "ck-toolbar__separator"]
                    }
                })
            }
        }
        class Gr extends Hi {
            constructor(t) {
                super(t), this.setTemplate({
                    tag: "span",
                    attributes: {
                        class: ["ck", "ck-toolbar__line-break"]
                    }
                })
            }
        }

        function qr(t) {
            return Array.isArray(t) ? {
                items: t,
                removeItems: []
            } : t ? Object.assign({
                items: [],
                removeItems: []
            }, t) : {
                items: [],
                removeItems: []
            }
        }
        class Wr extends(K()) {
            constructor(t) {
                super(), this._disableStack = new Set, this.editor = t, this.set("isEnabled", !0)
            }
            forceDisabled(t) {
                this._disableStack.add(t), 1 == this._disableStack.size && (this.on("set:isEnabled", Kr, {
                    priority: "highest"
                }), this.isEnabled = !1)
            }
            clearForceDisabled(t) {
                this._disableStack.delete(t), 0 == this._disableStack.size && (this.off("set:isEnabled", Kr), this.isEnabled = !0)
            }
            destroy() {
                this.stopListening()
            }
            static get isContextPlugin() {
                return !1
            }
        }

        function Kr(t) {
            t.return = !1, t.stop()
        }
        class Yr extends(K()) {
            constructor(t) {
                super(), this.editor = t, this.set("value", void 0), this.set("isEnabled", !1), this._affectsData = !0, this._isEnabledBasedOnSelection = !0, this._disableStack = new Set, this.decorate("execute"), this.listenTo(this.editor.model.document, "change", (() => {
                    this.refresh()
                })), this.listenTo(t, "change:isReadOnly", (() => {
                    this.refresh()
                })), this.on("set:isEnabled", (e => {
                    if (!this.affectsData) return;
                    const n = t.model.document.selection,
                        o = !("$graveyard" == n.getFirstPosition().root.rootName) && t.model.canEditAt(n);
                    (t.isReadOnly || this._isEnabledBasedOnSelection && !o) && (e.return = !1, e.stop())
                }), {
                    priority: "highest"
                }), this.on("execute", (t => {
                    this.isEnabled || t.stop()
                }), {
                    priority: "high"
                })
            }
            get affectsData() {
                return this._affectsData
            }
            set affectsData(t) {
                this._affectsData = t
            }
            refresh() {
                this.isEnabled = !0
            }
            forceDisabled(t) {
                this._disableStack.add(t), 1 == this._disableStack.size && (this.on("set:isEnabled", $r, {
                    priority: "highest"
                }), this.isEnabled = !1)
            }
            clearForceDisabled(t) {
                this._disableStack.delete(t), 0 == this._disableStack.size && (this.off("set:isEnabled", $r), this.refresh())
            }
            execute(...t) {}
            destroy() {
                this.stopListening()
            }
        }

        function $r(t) {
            t.return = !1, t.stop()
        }
        class Zr extends Yr {
            constructor() {
                super(...arguments), this._childCommandsDefinitions = []
            }
            refresh() {}
            execute(...t) {
                const e = this._getFirstEnabledCommand();
                return !!e && e.execute(t)
            }
            registerChildCommand(t, e = {}) {
                b(this._childCommandsDefinitions, {
                    command: t,
                    priority: e.priority || "normal"
                }), t.on("change:isEnabled", (() => this._checkEnabled())), this._checkEnabled()
            }
            _checkEnabled() {
                this.isEnabled = !!this._getFirstEnabledCommand()
            }
            _getFirstEnabledCommand() {
                const t = this._childCommandsDefinitions.find((({
                    command: t
                }) => t.isEnabled));
                return t && t.command
            }
        }
        class Qr extends(B()) {
            constructor(t, e = [], n = []) {
                super(), this._plugins = new Map, this._context = t, this._availablePlugins = new Map;
                for (const t of e) t.pluginName && this._availablePlugins.set(t.pluginName, t);
                this._contextPlugins = new Map;
                for (const [t, e] of n) this._contextPlugins.set(t, e), this._contextPlugins.set(e, t), t.pluginName && this._availablePlugins.set(t.pluginName, t)
            }*[Symbol.iterator]() {
                for (const t of this._plugins) "function" == typeof t[0] && (yield t)
            }
            get(t) {
                const e = this._plugins.get(t);
                if (!e) {
                    let e = t;
                    throw "function" == typeof t && (e = t.pluginName || t.name), new A("plugincollection-plugin-not-loaded", this._context, {
                        plugin: e
                    })
                }
                return e
            }
            has(t) {
                return this._plugins.has(t)
            }
            init(t, e = [], n = []) {
                const o = this,
                    i = this._context;
                ! function t(e, n = new Set) {
                    e.forEach((e => {
                        a(e) && (n.has(e) || (n.add(e), e.pluginName && !o._availablePlugins.has(e.pluginName) && o._availablePlugins.set(e.pluginName, e), e.requires && t(e.requires, n)))
                    }))
                }(t), h(t);
                const r = [... function t(e, n = new Set) {
                    return e.map((t => a(t) ? t : o._availablePlugins.get(t))).reduce(((e, o) => n.has(o) ? e : (n.add(o), o.requires && (h(o.requires, o), t(o.requires, n).forEach((t => e.add(t)))), e.add(o))), new Set)
                }(t.filter((t => !l(t, e))))];
                ! function (t, e) {
                    for (const n of e) {
                        if ("function" != typeof n) throw new A("plugincollection-replace-plugin-invalid-type", null, {
                            pluginItem: n
                        });
                        const e = n.pluginName;
                        if (!e) throw new A("plugincollection-replace-plugin-missing-name", null, {
                            pluginItem: n
                        });
                        if (n.requires && n.requires.length) throw new A("plugincollection-plugin-for-replacing-cannot-have-dependencies", null, {
                            pluginName: e
                        });
                        const i = o._availablePlugins.get(e);
                        if (!i) throw new A("plugincollection-plugin-for-replacing-not-exist", null, {
                            pluginName: e
                        });
                        const r = t.indexOf(i);
                        if (-1 === r) {
                            if (o._contextPlugins.has(i)) return;
                            throw new A("plugincollection-plugin-for-replacing-not-loaded", null, {
                                pluginName: e
                            })
                        }
                        if (i.requires && i.requires.length) throw new A("plugincollection-replaced-plugin-cannot-have-dependencies", null, {
                            pluginName: e
                        });
                        t.splice(r, 1, n), o._availablePlugins.set(e, n)
                    }
                }(r, n);
                const s = r.map((t => {
                    let e = o._contextPlugins.get(t);
                    return e = e || new t(i), o._add(t, e), e
                }));
                return u(s, "init").then((() => u(s, "afterInit"))).then((() => s));

                function a(t) {
                    return "function" == typeof t
                }

                function c(t) {
                    return a(t) && !!t.isContextPlugin
                }

                function l(t, e) {
                    return e.some((e => e === t || (d(t) === e || d(e) === t)))
                }

                function d(t) {
                    return a(t) ? t.pluginName || t.name : t
                }

                function h(t, n = null) {
                    t.map((t => a(t) ? t : o._availablePlugins.get(t) || t)).forEach((t => {
                        ! function (t, e) {
                            if (a(t)) return;
                            if (e) throw new A("plugincollection-soft-required", i, {
                                missingPlugin: t,
                                requiredBy: d(e)
                            });
                            throw new A("plugincollection-plugin-not-found", i, {
                                plugin: t
                            })
                        }(t, n),
                        function (t, e) {
                            if (!c(e)) return;
                            if (c(t)) return;
                            throw new A("plugincollection-context-required", i, {
                                plugin: d(t),
                                requiredBy: d(e)
                            })
                        }(t, n),
                        function (t, n) {
                            if (!n) return;
                            if (!l(t, e)) return;
                            throw new A("plugincollection-required", i, {
                                plugin: d(t),
                                requiredBy: d(n)
                            })
                        }(t, n)
                    }))
                }

                function u(t, e) {
                    return t.reduce(((t, n) => n[e] ? o._contextPlugins.has(n) ? t : t.then(n[e].bind(n)) : t), Promise.resolve())
                }
            }
            destroy() {
                const t = [];
                for (const [, e] of this) "function" != typeof e.destroy || this._contextPlugins.has(e) || t.push(e.destroy());
                return Promise.all(t)
            }
            _add(t, e) {
                this._plugins.set(t, e);
                const n = t.pluginName;
                if (n) {
                    if (this._plugins.has(n)) throw new A("plugincollection-plugin-name-conflict", null, {
                        pluginName: n,
                        plugin1: this._plugins.get(n).constructor,
                        plugin2: t
                    });
                    this._plugins.set(n, e)
                }
            }
        }
        class Jr {
            constructor(t) {
                this._contextOwner = null, this.config = new Eo(t, this.constructor.defaultConfig);
                const e = this.constructor.builtinPlugins;
                this.config.define("plugins", e), this.plugins = new Qr(this, e);
                const n = this.config.get("language") || {};
                this.locale = new Di({
                    uiLanguage: "string" == typeof n ? n : n.ui,
                    contentLanguage: this.config.get("language.content")
                }), this.t = this.locale.t, this.editors = new Si
            }
            initPlugins() {
                const t = this.config.get("plugins") || [],
                    e = this.config.get("substitutePlugins") || [];
                for (const n of t.concat(e)) {
                    if ("function" != typeof n) throw new A("context-initplugins-constructor-only", null, {
                        Plugin: n
                    });
                    if (!0 !== n.isContextPlugin) throw new A("context-initplugins-invalid-plugin", null, {
                        Plugin: n
                    })
                }
                return this.plugins.init(t, [], e)
            }
            destroy() {
                return Promise.all(Array.from(this.editors, (t => t.destroy()))).then((() => this.plugins.destroy()))
            }
            _addEditor(t, e) {
                if (this._contextOwner) throw new A("context-addeditor-private-context");
                this.editors.add(t), e && (this._contextOwner = t)
            }
            _removeEditor(t) {
                return this.editors.has(t) && this.editors.remove(t), this._contextOwner === t ? this.destroy() : Promise.resolve()
            }
            _getEditorConfig() {
                const t = {};
                for (const e of this.config.names())["plugins", "removePlugins", "extraPlugins"].includes(e) || (t[e] = this.config.get(e));
                return t
            }
            static create(t) {
                return new Promise((e => {
                    const n = new this(t);
                    e(n.initPlugins().then((() => n)))
                }))
            }
        }
        class Xr extends(K()) {
            constructor(t) {
                super(), this.context = t
            }
            destroy() {
                this.stopListening()
            }
            static get isContextPlugin() {
                return !0
            }
        }
        class ts extends Ti {
            constructor(t) {
                super(), this.editor = t
            }
            set(t, e, n = {}) {
                if ("string" == typeof e) {
                    const t = e;
                    e = (e, n) => {
                        this.editor.execute(t), n()
                    }
                }
                super.set(t, e, n)
            }
        }
        var es = n(4717),
            ns = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(es.Z, ns);
        es.Z.locals;
        const os = new WeakMap;
        let is = !1;

        function rs({
            view: t,
            element: e,
            text: n,
            isDirectHost: o = !0,
            keepOnFocus: i = !1
        }) {
            const r = t.document;

            function s(n) {
                os.get(r).set(e, {
                    text: n,
                    isDirectHost: o,
                    keepOnFocus: i,
                    hostElement: o ? e : null
                }), t.change((t => as(r, t)))
            }
            os.has(r) || (os.set(r, new Map), r.registerPostFixer((t => as(r, t))), r.on("change:isComposing", (() => {
                t.change((t => as(r, t)))
            }), {
                priority: "high"
            })), e.is("editableElement") && e.on("change:placeholder", ((t, e, n) => {
                s(n)
            })), e.placeholder ? s(e.placeholder) : n && s(n), n && function () {
                is || C("enableplaceholder-deprecated-text-option");
                is = !0
            }()
        }

        function ss(t, e) {
            return !!e.hasClass("ck-placeholder") && (t.removeClass("ck-placeholder", e), !0)
        }

        function as(t, e) {
            const n = os.get(t),
                o = [];
            let i = !1;
            for (const [t, r] of n) r.isDirectHost && (o.push(t), cs(e, t, r) && (i = !0));
            for (const [t, r] of n) {
                if (r.isDirectHost) continue;
                const n = ls(t);
                n && (o.includes(n) || (r.hostElement = n, cs(e, t, r) && (i = !0)))
            }
            return i
        }

        function cs(t, e, n) {
            const {
                text: o,
                isDirectHost: i,
                hostElement: r
            } = n;
            let s = !1;
            r.getAttribute("data-placeholder") !== o && (t.setAttribute("data-placeholder", o, r), s = !0);
            return (i || 1 == e.childCount) && function (t, e) {
                if (!t.isAttached()) return !1;
                if (Array.from(t.getChildren()).some((t => !t.is("uiElement")))) return !1;
                const n = t.document,
                    o = n.selection.anchor;
                return !(n.isComposing && o && o.parent === t || !e && n.isFocused && (!o || o.parent === t))
            }(r, n.keepOnFocus) ? function (t, e) {
                return !e.hasClass("ck-placeholder") && (t.addClass("ck-placeholder", e), !0)
            }(t, r) && (s = !0) : ss(t, r) && (s = !0), s
        }

        function ls(t) {
            if (t.childCount) {
                const e = t.getChild(0);
                if (e.is("element") && !e.is("uiElement") && !e.is("attributeElement")) return e
            }
            return null
        }
        class ds {
            is() {
                throw new Error("is() method is abstract")
            }
        }
        const hs = function (t) {
            return vo(t, 4)
        };
        class us extends(B(ds)) {
            constructor(t) {
                super(), this.document = t, this.parent = null
            }
            get index() {
                let t;
                if (!this.parent) return null;
                if (-1 == (t = this.parent.getChildIndex(this))) throw new A("view-node-not-found-in-parent", this);
                return t
            }
            get nextSibling() {
                const t = this.index;
                return null !== t && this.parent.getChild(t + 1) || null
            }
            get previousSibling() {
                const t = this.index;
                return null !== t && this.parent.getChild(t - 1) || null
            }
            get root() {
                let t = this;
                for (; t.parent;) t = t.parent;
                return t
            }
            isAttached() {
                return this.root.is("rootElement")
            }
            getPath() {
                const t = [];
                let e = this;
                for (; e.parent;) t.unshift(e.index), e = e.parent;
                return t
            }
            getAncestors(t = {}) {
                const e = [];
                let n = t.includeSelf ? this : this.parent;
                for (; n;) e[t.parentFirst ? "push" : "unshift"](n), n = n.parent;
                return e
            }
            getCommonAncestor(t, e = {}) {
                const n = this.getAncestors(e),
                    o = t.getAncestors(e);
                let i = 0;
                for (; n[i] == o[i] && n[i];) i++;
                return 0 === i ? null : n[i - 1]
            }
            isBefore(t) {
                if (this == t) return !1;
                if (this.root !== t.root) return !1;
                const e = this.getPath(),
                    n = t.getPath(),
                    o = et(e, n);
                switch (o) {
                    case "prefix":
                        return !0;
                    case "extension":
                        return !1;
                    default:
                        return e[o] < n[o]
                }
            }
            isAfter(t) {
                return this != t && (this.root === t.root && !this.isBefore(t))
            }
            _remove() {
                this.parent._removeChildren(this.index)
            }
            _fireChange(t, e) {
                this.fire(`change:${t}`, e), this.parent && this.parent._fireChange(t, e)
            }
            toJSON() {
                const t = hs(this);
                return delete t.parent, t
            }
        }
        us.prototype.is = function (t) {
            return "node" === t || "view:node" === t
        };
        class gs extends us {
            constructor(t, e) {
                super(t), this._textData = e
            }
            get data() {
                return this._textData
            }
            get _data() {
                return this.data
            }
            set _data(t) {
                this._fireChange("text", this), this._textData = t
            }
            isSimilar(t) {
                return t instanceof gs && (this === t || this.data === t.data)
            }
            _clone() {
                return new gs(this.document, this.data)
            }
        }
        gs.prototype.is = function (t) {
            return "$text" === t || "view:$text" === t || "text" === t || "view:text" === t || "node" === t || "view:node" === t
        };
        class ps extends ds {
            constructor(t, e, n) {
                if (super(), this.textNode = t, e < 0 || e > t.data.length) throw new A("view-textproxy-wrong-offsetintext", this);
                if (n < 0 || e + n > t.data.length) throw new A("view-textproxy-wrong-length", this);
                this.data = t.data.substring(e, e + n), this.offsetInText = e
            }
            get offsetSize() {
                return this.data.length
            }
            get isPartial() {
                return this.data.length !== this.textNode.data.length
            }
            get parent() {
                return this.textNode.parent
            }
            get root() {
                return this.textNode.root
            }
            get document() {
                return this.textNode.document
            }
            getAncestors(t = {}) {
                const e = [];
                let n = t.includeSelf ? this.textNode : this.parent;
                for (; null !== n;) e[t.parentFirst ? "push" : "unshift"](n), n = n.parent;
                return e
            }
        }
        ps.prototype.is = function (t) {
            return "$textProxy" === t || "view:$textProxy" === t || "textProxy" === t || "view:textProxy" === t
        };
        class ms {
            constructor(...t) {
                this._patterns = [], this.add(...t)
            }
            add(...t) {
                for (let e of t)("string" == typeof e || e instanceof RegExp) && (e = {
                    name: e
                }), this._patterns.push(e)
            }
            match(...t) {
                for (const e of t)
                    for (const t of this._patterns) {
                        const n = fs(e, t);
                        if (n) return {
                            element: e,
                            pattern: t,
                            match: n
                        }
                    }
                return null
            }
            matchAll(...t) {
                const e = [];
                for (const n of t)
                    for (const t of this._patterns) {
                        const o = fs(n, t);
                        o && e.push({
                            element: n,
                            pattern: t,
                            match: o
                        })
                    }
                return e.length > 0 ? e : null
            }
            getElementName() {
                if (1 !== this._patterns.length) return null;
                const t = this._patterns[0],
                    e = t.name;
                return "function" == typeof t || !e || e instanceof RegExp ? null : e
            }
        }

        function fs(t, e) {
            if ("function" == typeof e) return e(t);
            const n = {};
            return e.name && (n.name = function (t, e) {
                if (t instanceof RegExp) return !!e.match(t);
                return t === e
            }(e.name, t.name), !n.name) || e.attributes && (n.attributes = function (t, e) {
                const n = new Set(e.getAttributeKeys());
                Dt(t) ? (void 0 !== t.style && C("matcher-pattern-deprecated-attributes-style-key", t), void 0 !== t.class && C("matcher-pattern-deprecated-attributes-class-key", t)) : (n.delete("style"), n.delete("class"));
                return ks(t, n, (t => e.getAttribute(t)))
            }(e.attributes, t), !n.attributes) || e.classes && (n.classes = function (t, e) {
                return ks(t, e.getClassNames(), (() => {}))
            }(e.classes, t), !n.classes) || e.styles && (n.styles = function (t, e) {
                return ks(t, e.getStyleNames(!0), (t => e.getStyle(t)))
            }(e.styles, t), !n.styles) ? null : n
        }

        function ks(t, e, n) {
            const o = function (t) {
                    if (Array.isArray(t)) return t.map((t => Dt(t) ? (void 0 !== t.key && void 0 !== t.value || C("matcher-pattern-missing-key-or-value", t), [t.key, t.value]) : [t, !0]));
                    if (Dt(t)) return Object.entries(t);
                    return [
                        [t, !0]
                    ]
                }(t),
                i = Array.from(e),
                r = [];
            if (o.forEach((([t, e]) => {
                    i.forEach((o => {
                        (function (t, e) {
                            return !0 === t || t === e || t instanceof RegExp && e.match(t)
                        })(t, o) && function (t, e, n) {
                            if (!0 === t) return !0;
                            const o = n(e);
                            return t === o || t instanceof RegExp && !!String(o).match(t)
                        }(e, o, n) && r.push(o)
                    }))
                })), o.length && !(r.length < o.length)) return r
        }
        const bs = function (t) {
            return "symbol" == typeof t || kt(t) && "[object Symbol]" == mt(t)
        };
        var ws = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
            As = /^\w*$/;
        const Cs = function (t, e) {
            if (ft(t)) return !1;
            var n = typeof t;
            return !("number" != n && "symbol" != n && "boolean" != n && null != t && !bs(t)) || (As.test(t) || !ws.test(t) || null != e && t in Object(e))
        };

        function _s(t, e) {
            if ("function" != typeof t || null != e && "function" != typeof e) throw new TypeError("Expected a function");
            var n = function () {
                var o = arguments,
                    i = e ? e.apply(this, o) : o[0],
                    r = n.cache;
                if (r.has(i)) return r.get(i);
                var s = t.apply(this, o);
                return n.cache = r.set(i, s) || r, s
            };
            return n.cache = new(_s.Cache || _e), n
        }
        _s.Cache = _e;
        const vs = _s;
        const ys = function (t) {
            var e = vs(t, (function (t) {
                    return 500 === n.size && n.clear(), t
                })),
                n = e.cache;
            return e
        };
        var xs = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,
            Es = /\\(\\)?/g,
            Ds = ys((function (t) {
                var e = [];
                return 46 === t.charCodeAt(0) && e.push(""), t.replace(xs, (function (t, n, o, i) {
                    e.push(o ? i.replace(Es, "$1") : n || t)
                })), e
            }));
        const Ss = Ds;
        const Is = function (t, e) {
            for (var n = -1, o = null == t ? 0 : t.length, i = Array(o); ++n < o;) i[n] = e(t[n], n, t);
            return i
        };
        var Ms = st ? st.prototype : void 0,
            Ts = Ms ? Ms.toString : void 0;
        const Bs = function t(e) {
            if ("string" == typeof e) return e;
            if (ft(e)) return Is(e, t) + "";
            if (bs(e)) return Ts ? Ts.call(e) : "";
            var n = e + "";
            return "0" == n && 1 / e == -Infinity ? "-0" : n
        };
        const Ns = function (t) {
            return null == t ? "" : Bs(t)
        };
        const Ps = function (t, e) {
            return ft(t) ? t : Cs(t, e) ? [t] : Ss(Ns(t))
        };
        const zs = function (t) {
            var e = null == t ? 0 : t.length;
            return e ? t[e - 1] : void 0
        };
        const Os = function (t) {
            if ("string" == typeof t || bs(t)) return t;
            var e = t + "";
            return "0" == e && 1 / t == -Infinity ? "-0" : e
        };
        const Ls = function (t, e) {
            for (var n = 0, o = (e = Ps(e, t)).length; null != t && n < o;) t = t[Os(e[n++])];
            return n && n == o ? t : void 0
        };
        const js = function (t, e, n) {
            var o = -1,
                i = t.length;
            e < 0 && (e = -e > i ? 0 : i + e), (n = n > i ? i : n) < 0 && (n += i), i = e > n ? 0 : n - e >>> 0, e >>>= 0;
            for (var r = Array(i); ++o < i;) r[o] = t[o + e];
            return r
        };
        const Rs = function (t, e) {
            return e.length < 2 ? t : Ls(t, js(e, 0, -1))
        };
        const Fs = function (t, e) {
            return e = Ps(e, t), null == (t = Rs(t, e)) || delete t[Os(zs(e))]
        };
        const Vs = function (t, e) {
            return null == t || Fs(t, e)
        };
        const Us = function (t, e, n) {
            var o = null == t ? void 0 : Ls(t, e);
            return void 0 === o ? n : o
        };
        const Hs = function (t, e, n) {
            (void 0 !== n && !It(t[e], n) || void 0 === n && !(e in t)) && Se(t, e, n)
        };
        const Gs = function (t) {
            return function (e, n, o) {
                for (var i = -1, r = Object(e), s = o(e), a = s.length; a--;) {
                    var c = s[t ? a : ++i];
                    if (!1 === n(r[c], c, r)) break
                }
                return e
            }
        }();
        const qs = function (t) {
            return kt(t) && ln(t)
        };
        const Ws = function (t, e) {
            if (("constructor" !== e || "function" != typeof t[e]) && "__proto__" != e) return t[e]
        };
        const Ks = function (t) {
            return Te(t, mn(t))
        };
        const Ys = function (t, e, n, o, i, r, s) {
            var a = Ws(t, n),
                c = Ws(e, n),
                l = s.get(c);
            if (l) Hs(t, n, l);
            else {
                var d = r ? r(a, c, n + "", t, e, s) : void 0,
                    h = void 0 === d;
                if (h) {
                    var u = ft(c),
                        g = !u && Ue(c),
                        p = !u && !g && tn(c);
                    d = c, u || g || p ? ft(a) ? d = a : qs(a) ? d = _n(a) : g ? (h = !1, d = Cn(c, !0)) : p ? (h = !1, d = ao(c, !0)) : d = [] : Dt(c) || Le(c) ? (d = a, Le(a) ? d = Ks(a) : F(a) && !Ut(a) || (d = uo(c))) : h = !1
                }
                h && (s.set(c, d), i(d, c, o, r, s), s.delete(c)), Hs(t, n, d)
            }
        };
        const $s = function t(e, n, o, i, r) {
            e !== n && Gs(n, (function (s, a) {
                if (r || (r = new xe), F(s)) Ys(e, n, a, o, t, i, r);
                else {
                    var c = i ? i(Ws(e, a), s, a + "", e, n, r) : void 0;
                    void 0 === c && (c = s), Hs(e, a, c)
                }
            }), mn)
        };
        const Zs = function (t) {
            return t
        };
        const Qs = function (t, e, n) {
            switch (n.length) {
                case 0:
                    return t.call(e);
                case 1:
                    return t.call(e, n[0]);
                case 2:
                    return t.call(e, n[0], n[1]);
                case 3:
                    return t.call(e, n[0], n[1], n[2])
            }
            return t.apply(e, n)
        };
        var Js = Math.max;
        const Xs = function (t, e, n) {
            return e = Js(void 0 === e ? t.length - 1 : e, 0),
                function () {
                    for (var o = arguments, i = -1, r = Js(o.length - e, 0), s = Array(r); ++i < r;) s[i] = o[e + i];
                    i = -1;
                    for (var a = Array(e + 1); ++i < e;) a[i] = o[i];
                    return a[e] = n(s), Qs(t, this, a)
                }
        };
        const ta = function (t) {
            return function () {
                return t
            }
        };
        const ea = De ? function (t, e) {
            return De(t, "toString", {
                configurable: !0,
                enumerable: !1,
                value: ta(e),
                writable: !0
            })
        } : Zs;
        var na = Date.now;
        const oa = function (t) {
            var e = 0,
                n = 0;
            return function () {
                var o = na(),
                    i = 16 - (o - n);
                if (n = o, i > 0) {
                    if (++e >= 800) return arguments[0]
                } else e = 0;
                return t.apply(void 0, arguments)
            }
        };
        const ia = oa(ea);
        const ra = function (t, e) {
            return ia(Xs(t, e, Zs), t + "")
        };
        const sa = function (t, e, n) {
            if (!F(n)) return !1;
            var o = typeof e;
            return !!("number" == o ? ln(n) && Ge(e, n.length) : "string" == o && e in n) && It(n[e], t)
        };
        const aa = function (t) {
            return ra((function (e, n) {
                var o = -1,
                    i = n.length,
                    r = i > 1 ? n[i - 1] : void 0,
                    s = i > 2 ? n[2] : void 0;
                for (r = t.length > 3 && "function" == typeof r ? (i--, r) : void 0, s && sa(n[0], n[1], s) && (r = i < 3 ? void 0 : r, i = 1), e = Object(e); ++o < i;) {
                    var a = n[o];
                    a && t(e, a, o, r)
                }
                return e
            }))
        };
        const ca = aa((function (t, e, n) {
            $s(t, e, n)
        }));
        const la = function (t, e, n, o) {
            if (!F(t)) return t;
            for (var i = -1, r = (e = Ps(e, t)).length, s = r - 1, a = t; null != a && ++i < r;) {
                var c = Os(e[i]),
                    l = n;
                if ("__proto__" === c || "constructor" === c || "prototype" === c) return t;
                if (i != s) {
                    var d = a[c];
                    void 0 === (l = o ? o(d, c, a) : void 0) && (l = F(d) ? d : Ge(e[i + 1]) ? [] : {})
                }
                Me(a, c, l), a = a[c]
            }
            return t
        };
        const da = function (t, e, n) {
            return null == t ? t : la(t, e, n)
        };
        class ha {
            constructor(t) {
                this._styles = {}, this._styleProcessor = t
            }
            get isEmpty() {
                const t = Object.entries(this._styles);
                return !Array.from(t).length
            }
            get size() {
                return this.isEmpty ? 0 : this.getStyleNames().length
            }
            setTo(t) {
                this.clear();
                const e = Array.from(function (t) {
                    let e = null,
                        n = 0,
                        o = 0,
                        i = null;
                    const r = new Map;
                    if ("" === t) return r;
                    ";" != t.charAt(t.length - 1) && (t += ";");
                    for (let s = 0; s < t.length; s++) {
                        const a = t.charAt(s);
                        if (null === e) switch (a) {
                            case ":":
                                i || (i = t.substr(n, s - n), o = s + 1);
                                break;
                            case '"':
                            case "'":
                                e = a;
                                break;
                            case ";": {
                                const e = t.substr(o, s - o);
                                i && r.set(i.trim(), e.trim()), i = null, n = s + 1;
                                break
                            }
                        } else a === e && (e = null)
                    }
                    return r
                }(t).entries());
                for (const [t, n] of e) this._styleProcessor.toNormalizedForm(t, n, this._styles)
            }
            has(t) {
                if (this.isEmpty) return !1;
                const e = this._styleProcessor.getReducedForm(t, this._styles).find((([e]) => e === t));
                return Array.isArray(e)
            }
            set(t, e) {
                if (F(t))
                    for (const [e, n] of Object.entries(t)) this._styleProcessor.toNormalizedForm(e, n, this._styles);
                else this._styleProcessor.toNormalizedForm(t, e, this._styles)
            }
            remove(t) {
                const e = ga(t);
                Vs(this._styles, e), delete this._styles[t], this._cleanEmptyObjectsOnPath(e)
            }
            getNormalized(t) {
                return this._styleProcessor.getNormalized(t, this._styles)
            }
            toString() {
                return this.isEmpty ? "" : this._getStylesEntries().map((t => t.join(":"))).sort().join(";") + ";"
            }
            getAsString(t) {
                if (this.isEmpty) return;
                if (this._styles[t] && !F(this._styles[t])) return this._styles[t];
                const e = this._styleProcessor.getReducedForm(t, this._styles).find((([e]) => e === t));
                return Array.isArray(e) ? e[1] : void 0
            }
            getStyleNames(t = !1) {
                if (this.isEmpty) return [];
                if (t) return this._styleProcessor.getStyleNames(this._styles);
                return this._getStylesEntries().map((([t]) => t))
            }
            clear() {
                this._styles = {}
            }
            _getStylesEntries() {
                const t = [],
                    e = Object.keys(this._styles);
                for (const n of e) t.push(...this._styleProcessor.getReducedForm(n, this._styles));
                return t
            }
            _cleanEmptyObjectsOnPath(t) {
                const e = t.split(".");
                if (!(e.length > 1)) return;
                const n = e.splice(0, e.length - 1).join("."),
                    o = Us(this._styles, n);
                if (!o) return;
                !Array.from(Object.keys(o)).length && this.remove(n)
            }
        }
        class ua {
            constructor() {
                this._normalizers = new Map, this._extractors = new Map, this._reducers = new Map, this._consumables = new Map
            }
            toNormalizedForm(t, e, n) {
                if (F(e)) pa(n, ga(t), e);
                else if (this._normalizers.has(t)) {
                    const o = this._normalizers.get(t),
                        {
                            path: i,
                            value: r
                        } = o(e);
                    pa(n, i, r)
                } else pa(n, t, e)
            }
            getNormalized(t, e) {
                if (!t) return ca({}, e);
                if (void 0 !== e[t]) return e[t];
                if (this._extractors.has(t)) {
                    const n = this._extractors.get(t);
                    if ("string" == typeof n) return Us(e, n);
                    const o = n(t, e);
                    if (o) return o
                }
                return Us(e, ga(t))
            }
            getReducedForm(t, e) {
                const n = this.getNormalized(t, e);
                if (void 0 === n) return [];
                if (this._reducers.has(t)) {
                    return this._reducers.get(t)(n)
                }
                return [
                    [t, n]
                ]
            }
            getStyleNames(t) {
                const e = Array.from(this._consumables.keys()).filter((e => {
                        const n = this.getNormalized(e, t);
                        return n && "object" == typeof n ? Object.keys(n).length : n
                    })),
                    n = new Set([...e, ...Object.keys(t)]);
                return Array.from(n.values())
            }
            getRelatedStyles(t) {
                return this._consumables.get(t) || []
            }
            setNormalizer(t, e) {
                this._normalizers.set(t, e)
            }
            setExtractor(t, e) {
                this._extractors.set(t, e)
            }
            setReducer(t, e) {
                this._reducers.set(t, e)
            }
            setStyleRelation(t, e) {
                this._mapStyleNames(t, e);
                for (const n of e) this._mapStyleNames(n, [t])
            }
            _mapStyleNames(t, e) {
                this._consumables.has(t) || this._consumables.set(t, []), this._consumables.get(t).push(...e)
            }
        }

        function ga(t) {
            return t.replace("-", ".")
        }

        function pa(t, e, n) {
            let o = n;
            F(n) && (o = ca({}, Us(t, e), n)), da(t, e, o)
        }
        class ma extends us {
            constructor(t, e, n, o) {
                if (super(t), this._unsafeAttributesToRender = [], this._customProperties = new Map, this.name = e, this._attrs = function (t) {
                        const e = Bi(t);
                        for (const [t, n] of e) null === n ? e.delete(t) : "string" != typeof n && e.set(t, String(n));
                        return e
                    }(n), this._children = [], o && this._insertChild(0, o), this._classes = new Set, this._attrs.has("class")) {
                    const t = this._attrs.get("class");
                    fa(this._classes, t), this._attrs.delete("class")
                }
                this._styles = new ha(this.document.stylesProcessor), this._attrs.has("style") && (this._styles.setTo(this._attrs.get("style")), this._attrs.delete("style"))
            }
            get childCount() {
                return this._children.length
            }
            get isEmpty() {
                return 0 === this._children.length
            }
            getChild(t) {
                return this._children[t]
            }
            getChildIndex(t) {
                return this._children.indexOf(t)
            }
            getChildren() {
                return this._children[Symbol.iterator]()
            }* getAttributeKeys() {
                this._classes.size > 0 && (yield "class"), this._styles.isEmpty || (yield "style"), yield* this._attrs.keys()
            }* getAttributes() {
                yield* this._attrs.entries(), this._classes.size > 0 && (yield ["class", this.getAttribute("class")]), this._styles.isEmpty || (yield ["style", this.getAttribute("style")])
            }
            getAttribute(t) {
                if ("class" == t) return this._classes.size > 0 ? [...this._classes].join(" ") : void 0;
                if ("style" == t) {
                    const t = this._styles.toString();
                    return "" == t ? void 0 : t
                }
                return this._attrs.get(t)
            }
            hasAttribute(t) {
                return "class" == t ? this._classes.size > 0 : "style" == t ? !this._styles.isEmpty : this._attrs.has(t)
            }
            isSimilar(t) {
                if (!(t instanceof ma)) return !1;
                if (this === t) return !0;
                if (this.name != t.name) return !1;
                if (this._attrs.size !== t._attrs.size || this._classes.size !== t._classes.size || this._styles.size !== t._styles.size) return !1;
                for (const [e, n] of this._attrs)
                    if (!t._attrs.has(e) || t._attrs.get(e) !== n) return !1;
                for (const e of this._classes)
                    if (!t._classes.has(e)) return !1;
                for (const e of this._styles.getStyleNames())
                    if (!t._styles.has(e) || t._styles.getAsString(e) !== this._styles.getAsString(e)) return !1;
                return !0
            }
            hasClass(...t) {
                for (const e of t)
                    if (!this._classes.has(e)) return !1;
                return !0
            }
            getClassNames() {
                return this._classes.keys()
            }
            getStyle(t) {
                return this._styles.getAsString(t)
            }
            getNormalizedStyle(t) {
                return this._styles.getNormalized(t)
            }
            getStyleNames(t) {
                return this._styles.getStyleNames(t)
            }
            hasStyle(...t) {
                for (const e of t)
                    if (!this._styles.has(e)) return !1;
                return !0
            }
            findAncestor(...t) {
                const e = new ms(...t);
                let n = this.parent;
                for (; n && !n.is("documentFragment");) {
                    if (e.match(n)) return n;
                    n = n.parent
                }
                return null
            }
            getCustomProperty(t) {
                return this._customProperties.get(t)
            }* getCustomProperties() {
                yield* this._customProperties.entries()
            }
            getIdentity() {
                const t = Array.from(this._classes).sort().join(","),
                    e = this._styles.toString(),
                    n = Array.from(this._attrs).map((t => `${t[0]}="${t[1]}"`)).sort().join(" ");
                return this.name + ("" == t ? "" : ` class="${t}"`) + (e ? ` style="${e}"` : "") + ("" == n ? "" : ` ${n}`)
            }
            shouldRenderUnsafeAttribute(t) {
                return this._unsafeAttributesToRender.includes(t)
            }
            _clone(t = !1) {
                const e = [];
                if (t)
                    for (const n of this.getChildren()) e.push(n._clone(t));
                const n = new this.constructor(this.document, this.name, this._attrs, e);
                return n._classes = new Set(this._classes), n._styles.set(this._styles.getNormalized()), n._customProperties = new Map(this._customProperties), n.getFillerOffset = this.getFillerOffset, n._unsafeAttributesToRender = this._unsafeAttributesToRender, n
            }
            _appendChild(t) {
                return this._insertChild(this.childCount, t)
            }
            _insertChild(t, e) {
                this._fireChange("children", this);
                let n = 0;
                const o = function (t, e) {
                    if ("string" == typeof e) return [new gs(t, e)];
                    nt(e) || (e = [e]);
                    return Array.from(e).map((e => "string" == typeof e ? new gs(t, e) : e instanceof ps ? new gs(t, e.data) : e))
                }(this.document, e);
                for (const e of o) null !== e.parent && e._remove(), e.parent = this, e.document = this.document, this._children.splice(t, 0, e), t++, n++;
                return n
            }
            _removeChildren(t, e = 1) {
                this._fireChange("children", this);
                for (let n = t; n < t + e; n++) this._children[n].parent = null;
                return this._children.splice(t, e)
            }
            _setAttribute(t, e) {
                const n = String(e);
                this._fireChange("attributes", this), "class" == t ? fa(this._classes, n) : "style" == t ? this._styles.setTo(n) : this._attrs.set(t, n)
            }
            _removeAttribute(t) {
                return this._fireChange("attributes", this), "class" == t ? this._classes.size > 0 && (this._classes.clear(), !0) : "style" == t ? !this._styles.isEmpty && (this._styles.clear(), !0) : this._attrs.delete(t)
            }
            _addClass(t) {
                this._fireChange("attributes", this);
                for (const e of vi(t)) this._classes.add(e)
            }
            _removeClass(t) {
                this._fireChange("attributes", this);
                for (const e of vi(t)) this._classes.delete(e)
            }
            _setStyle(t, e) {
                this._fireChange("attributes", this), "string" != typeof t ? this._styles.set(t) : this._styles.set(t, e)
            }
            _removeStyle(t) {
                this._fireChange("attributes", this);
                for (const e of vi(t)) this._styles.remove(e)
            }
            _setCustomProperty(t, e) {
                this._customProperties.set(t, e)
            }
            _removeCustomProperty(t) {
                return this._customProperties.delete(t)
            }
        }

        function fa(t, e) {
            const n = e.split(/\s+/);
            t.clear(), n.forEach((e => t.add(e)))
        }
        ma.prototype.is = function (t, e) {
            return e ? e === this.name && ("element" === t || "view:element" === t) : "element" === t || "view:element" === t || "node" === t || "view:node" === t
        };
        class ka extends ma {
            constructor(t, e, n, o) {
                super(t, e, n, o), this.getFillerOffset = ba
            }
        }

        function ba() {
            const t = [...this.getChildren()],
                e = t[this.childCount - 1];
            if (e && e.is("element", "br")) return this.childCount;
            for (const e of t)
                if (!e.is("uiElement")) return null;
            return this.childCount
        }
        ka.prototype.is = function (t, e) {
            return e ? e === this.name && ("containerElement" === t || "view:containerElement" === t || "element" === t || "view:element" === t) : "containerElement" === t || "view:containerElement" === t || "element" === t || "view:element" === t || "node" === t || "view:node" === t
        };
        class wa extends(K(ka)) {
            constructor(t, e, n, o) {
                super(t, e, n, o), this.set("isReadOnly", !1), this.set("isFocused", !1), this.set("placeholder", void 0), this.bind("isReadOnly").to(t), this.bind("isFocused").to(t, "isFocused", (e => e && t.selection.editableElement == this)), this.listenTo(t.selection, "change", (() => {
                    this.isFocused = t.isFocused && t.selection.editableElement == this
                }))
            }
            destroy() {
                this.stopListening()
            }
        }
        wa.prototype.is = function (t, e) {
            return e ? e === this.name && ("editableElement" === t || "view:editableElement" === t || "containerElement" === t || "view:containerElement" === t || "element" === t || "view:element" === t) : "editableElement" === t || "view:editableElement" === t || "containerElement" === t || "view:containerElement" === t || "element" === t || "view:element" === t || "node" === t || "view:node" === t
        };
        const Aa = Symbol("rootName");
        class Ca extends wa {
            constructor(t, e) {
                super(t, e), this.rootName = "main"
            }
            get rootName() {
                return this.getCustomProperty(Aa)
            }
            set rootName(t) {
                this._setCustomProperty(Aa, t)
            }
            set _name(t) {
                this.name = t
            }
        }
        Ca.prototype.is = function (t, e) {
            return e ? e === this.name && ("rootElement" === t || "view:rootElement" === t || "editableElement" === t || "view:editableElement" === t || "containerElement" === t || "view:containerElement" === t || "element" === t || "view:element" === t) : "rootElement" === t || "view:rootElement" === t || "editableElement" === t || "view:editableElement" === t || "containerElement" === t || "view:containerElement" === t || "element" === t || "view:element" === t || "node" === t || "view:node" === t
        };
        class _a {
            constructor(t = {}) {
                if (!t.boundaries && !t.startPosition) throw new A("view-tree-walker-no-start-position", null);
                if (t.direction && "forward" != t.direction && "backward" != t.direction) throw new A("view-tree-walker-unknown-direction", t.startPosition, {
                    direction: t.direction
                });
                this.boundaries = t.boundaries || null, t.startPosition ? this._position = va._createAt(t.startPosition) : this._position = va._createAt(t.boundaries["backward" == t.direction ? "end" : "start"]), this.direction = t.direction || "forward", this.singleCharacters = !!t.singleCharacters, this.shallow = !!t.shallow, this.ignoreElementEnd = !!t.ignoreElementEnd, this._boundaryStartParent = this.boundaries ? this.boundaries.start.parent : null, this._boundaryEndParent = this.boundaries ? this.boundaries.end.parent : null
            } [Symbol.iterator]() {
                return this
            }
            get position() {
                return this._position
            }
            skip(t) {
                let e, n;
                do {
                    n = this.position, e = this.next()
                } while (!e.done && t(e.value));
                e.done || (this._position = n)
            }
            next() {
                return "forward" == this.direction ? this._next() : this._previous()
            }
            _next() {
                let t = this.position.clone();
                const e = this.position,
                    n = t.parent;
                if (null === n.parent && t.offset === n.childCount) return {
                    done: !0,
                    value: void 0
                };
                if (n === this._boundaryEndParent && t.offset == this.boundaries.end.offset) return {
                    done: !0,
                    value: void 0
                };
                let o;
                if (n instanceof gs) {
                    if (t.isAtEnd) return this._position = va._createAfter(n), this._next();
                    o = n.data[t.offset]
                } else o = n.getChild(t.offset);
                if (o instanceof ma) {
                    if (this.shallow) {
                        if (this.boundaries && this.boundaries.end.isBefore(t)) return {
                            done: !0,
                            value: void 0
                        };
                        t.offset++
                    } else t = new va(o, 0);
                    return this._position = t, this._formatReturnValue("elementStart", o, e, t, 1)
                }
                if (o instanceof gs) {
                    if (this.singleCharacters) return t = new va(o, 0), this._position = t, this._next();
                    let n, i = o.data.length;
                    return o == this._boundaryEndParent ? (i = this.boundaries.end.offset, n = new ps(o, 0, i), t = va._createAfter(n)) : (n = new ps(o, 0, o.data.length), t.offset++), this._position = t, this._formatReturnValue("text", n, e, t, i)
                }
                if ("string" == typeof o) {
                    let o;
                    if (this.singleCharacters) o = 1;
                    else {
                        o = (n === this._boundaryEndParent ? this.boundaries.end.offset : n.data.length) - t.offset
                    }
                    const i = new ps(n, t.offset, o);
                    return t.offset += o, this._position = t, this._formatReturnValue("text", i, e, t, o)
                }
                return t = va._createAfter(n), this._position = t, this.ignoreElementEnd ? this._next() : this._formatReturnValue("elementEnd", n, e, t)
            }
            _previous() {
                let t = this.position.clone();
                const e = this.position,
                    n = t.parent;
                if (null === n.parent && 0 === t.offset) return {
                    done: !0,
                    value: void 0
                };
                if (n == this._boundaryStartParent && t.offset == this.boundaries.start.offset) return {
                    done: !0,
                    value: void 0
                };
                let o;
                if (n instanceof gs) {
                    if (t.isAtStart) return this._position = va._createBefore(n), this._previous();
                    o = n.data[t.offset - 1]
                } else o = n.getChild(t.offset - 1);
                if (o instanceof ma) return this.shallow ? (t.offset--, this._position = t, this._formatReturnValue("elementStart", o, e, t, 1)) : (t = new va(o, o.childCount), this._position = t, this.ignoreElementEnd ? this._previous() : this._formatReturnValue("elementEnd", o, e, t));
                if (o instanceof gs) {
                    if (this.singleCharacters) return t = new va(o, o.data.length), this._position = t, this._previous();
                    let n, i = o.data.length;
                    if (o == this._boundaryStartParent) {
                        const e = this.boundaries.start.offset;
                        n = new ps(o, e, o.data.length - e), i = n.data.length, t = va._createBefore(n)
                    } else n = new ps(o, 0, o.data.length), t.offset--;
                    return this._position = t, this._formatReturnValue("text", n, e, t, i)
                }
                if ("string" == typeof o) {
                    let o;
                    if (this.singleCharacters) o = 1;
                    else {
                        const e = n === this._boundaryStartParent ? this.boundaries.start.offset : 0;
                        o = t.offset - e
                    }
                    t.offset -= o;
                    const i = new ps(n, t.offset, o);
                    return this._position = t, this._formatReturnValue("text", i, e, t, o)
                }
                return t = va._createBefore(n), this._position = t, this._formatReturnValue("elementStart", n, e, t, 1)
            }
            _formatReturnValue(t, e, n, o, i) {
                return e instanceof ps && (e.offsetInText + e.data.length == e.textNode.data.length && ("forward" != this.direction || this.boundaries && this.boundaries.end.isEqual(this.position) ? n = va._createAfter(e.textNode) : (o = va._createAfter(e.textNode), this._position = o)), 0 === e.offsetInText && ("backward" != this.direction || this.boundaries && this.boundaries.start.isEqual(this.position) ? n = va._createBefore(e.textNode) : (o = va._createBefore(e.textNode), this._position = o))), {
                    done: !1,
                    value: {
                        type: t,
                        item: e,
                        previousPosition: n,
                        nextPosition: o,
                        length: i
                    }
                }
            }
        }
        class va extends ds {
            constructor(t, e) {
                super(), this.parent = t, this.offset = e
            }
            get nodeAfter() {
                return this.parent.is("$text") ? null : this.parent.getChild(this.offset) || null
            }
            get nodeBefore() {
                return this.parent.is("$text") ? null : this.parent.getChild(this.offset - 1) || null
            }
            get isAtStart() {
                return 0 === this.offset
            }
            get isAtEnd() {
                const t = this.parent.is("$text") ? this.parent.data.length : this.parent.childCount;
                return this.offset === t
            }
            get root() {
                return this.parent.root
            }
            get editableElement() {
                let t = this.parent;
                for (; !(t instanceof wa);) {
                    if (!t.parent) return null;
                    t = t.parent
                }
                return t
            }
            getShiftedBy(t) {
                const e = va._createAt(this),
                    n = e.offset + t;
                return e.offset = n < 0 ? 0 : n, e
            }
            getLastMatchingPosition(t, e = {}) {
                e.startPosition = this;
                const n = new _a(e);
                return n.skip(t), n.position
            }
            getAncestors() {
                return this.parent.is("documentFragment") ? [this.parent] : this.parent.getAncestors({
                    includeSelf: !0
                })
            }
            getCommonAncestor(t) {
                const e = this.getAncestors(),
                    n = t.getAncestors();
                let o = 0;
                for (; e[o] == n[o] && e[o];) o++;
                return 0 === o ? null : e[o - 1]
            }
            isEqual(t) {
                return this.parent == t.parent && this.offset == t.offset
            }
            isBefore(t) {
                return "before" == this.compareWith(t)
            }
            isAfter(t) {
                return "after" == this.compareWith(t)
            }
            compareWith(t) {
                if (this.root !== t.root) return "different";
                if (this.isEqual(t)) return "same";
                const e = this.parent.is("node") ? this.parent.getPath() : [],
                    n = t.parent.is("node") ? t.parent.getPath() : [];
                e.push(this.offset), n.push(t.offset);
                const o = et(e, n);
                switch (o) {
                    case "prefix":
                        return "before";
                    case "extension":
                        return "after";
                    default:
                        return e[o] < n[o] ? "before" : "after"
                }
            }
            getWalker(t = {}) {
                return t.startPosition = this, new _a(t)
            }
            clone() {
                return new va(this.parent, this.offset)
            }
            static _createAt(t, e) {
                if (t instanceof va) return new this(t.parent, t.offset); {
                    const n = t;
                    if ("end" == e) e = n.is("$text") ? n.data.length : n.childCount;
                    else {
                        if ("before" == e) return this._createBefore(n);
                        if ("after" == e) return this._createAfter(n);
                        if (0 !== e && !e) throw new A("view-createpositionat-offset-required", n)
                    }
                    return new va(n, e)
                }
            }
            static _createAfter(t) {
                if (t.is("$textProxy")) return new va(t.textNode, t.offsetInText + t.data.length);
                if (!t.parent) throw new A("view-position-after-root", t, {
                    root: t
                });
                return new va(t.parent, t.index + 1)
            }
            static _createBefore(t) {
                if (t.is("$textProxy")) return new va(t.textNode, t.offsetInText);
                if (!t.parent) throw new A("view-position-before-root", t, {
                    root: t
                });
                return new va(t.parent, t.index)
            }
        }
        va.prototype.is = function (t) {
            return "position" === t || "view:position" === t
        };
        class ya extends ds {
            constructor(t, e = null) {
                super(), this.start = t.clone(), this.end = e ? e.clone() : t.clone()
            }*[Symbol.iterator]() {
                yield* new _a({
                    boundaries: this,
                    ignoreElementEnd: !0
                })
            }
            get isCollapsed() {
                return this.start.isEqual(this.end)
            }
            get isFlat() {
                return this.start.parent === this.end.parent
            }
            get root() {
                return this.start.root
            }
            getEnlarged() {
                let t = this.start.getLastMatchingPosition(xa, {
                        direction: "backward"
                    }),
                    e = this.end.getLastMatchingPosition(xa);
                return t.parent.is("$text") && t.isAtStart && (t = va._createBefore(t.parent)), e.parent.is("$text") && e.isAtEnd && (e = va._createAfter(e.parent)), new ya(t, e)
            }
            getTrimmed() {
                let t = this.start.getLastMatchingPosition(xa);
                if (t.isAfter(this.end) || t.isEqual(this.end)) return new ya(t, t);
                let e = this.end.getLastMatchingPosition(xa, {
                    direction: "backward"
                });
                const n = t.nodeAfter,
                    o = e.nodeBefore;
                return n && n.is("$text") && (t = new va(n, 0)), o && o.is("$text") && (e = new va(o, o.data.length)), new ya(t, e)
            }
            isEqual(t) {
                return this == t || this.start.isEqual(t.start) && this.end.isEqual(t.end)
            }
            containsPosition(t) {
                return t.isAfter(this.start) && t.isBefore(this.end)
            }
            containsRange(t, e = !1) {
                t.isCollapsed && (e = !1);
                const n = this.containsPosition(t.start) || e && this.start.isEqual(t.start),
                    o = this.containsPosition(t.end) || e && this.end.isEqual(t.end);
                return n && o
            }
            getDifference(t) {
                const e = [];
                return this.isIntersecting(t) ? (this.containsPosition(t.start) && e.push(new ya(this.start, t.start)), this.containsPosition(t.end) && e.push(new ya(t.end, this.end))) : e.push(this.clone()), e
            }
            getIntersection(t) {
                if (this.isIntersecting(t)) {
                    let e = this.start,
                        n = this.end;
                    return this.containsPosition(t.start) && (e = t.start), this.containsPosition(t.end) && (n = t.end), new ya(e, n)
                }
                return null
            }
            getWalker(t = {}) {
                return t.boundaries = this, new _a(t)
            }
            getCommonAncestor() {
                return this.start.getCommonAncestor(this.end)
            }
            getContainedElement() {
                if (this.isCollapsed) return null;
                let t = this.start.nodeAfter,
                    e = this.end.nodeBefore;
                return this.start.parent.is("$text") && this.start.isAtEnd && this.start.parent.nextSibling && (t = this.start.parent.nextSibling), this.end.parent.is("$text") && this.end.isAtStart && this.end.parent.previousSibling && (e = this.end.parent.previousSibling), t && t.is("element") && t === e ? t : null
            }
            clone() {
                return new ya(this.start, this.end)
            }* getItems(t = {}) {
                t.boundaries = this, t.ignoreElementEnd = !0;
                const e = new _a(t);
                for (const t of e) yield t.item
            }* getPositions(t = {}) {
                t.boundaries = this;
                const e = new _a(t);
                yield e.position;
                for (const t of e) yield t.nextPosition
            }
            isIntersecting(t) {
                return this.start.isBefore(t.end) && this.end.isAfter(t.start)
            }
            static _createFromParentsAndOffsets(t, e, n, o) {
                return new this(new va(t, e), new va(n, o))
            }
            static _createFromPositionAndShift(t, e) {
                const n = t,
                    o = t.getShiftedBy(e);
                return e > 0 ? new this(n, o) : new this(o, n)
            }
            static _createIn(t) {
                return this._createFromParentsAndOffsets(t, 0, t, t.childCount)
            }
            static _createOn(t) {
                const e = t.is("$textProxy") ? t.offsetSize : 1;
                return this._createFromPositionAndShift(va._createBefore(t), e)
            }
        }

        function xa(t) {
            return !(!t.item.is("attributeElement") && !t.item.is("uiElement"))
        }
        ya.prototype.is = function (t) {
            return "range" === t || "view:range" === t
        };
        class Ea extends(B(ds)) {
            constructor(...t) {
                super(), this._ranges = [], this._lastRangeBackward = !1, this._isFake = !1, this._fakeSelectionLabel = "", t.length && this.setTo(...t)
            }
            get isFake() {
                return this._isFake
            }
            get fakeSelectionLabel() {
                return this._fakeSelectionLabel
            }
            get anchor() {
                if (!this._ranges.length) return null;
                const t = this._ranges[this._ranges.length - 1];
                return (this._lastRangeBackward ? t.end : t.start).clone()
            }
            get focus() {
                if (!this._ranges.length) return null;
                const t = this._ranges[this._ranges.length - 1];
                return (this._lastRangeBackward ? t.start : t.end).clone()
            }
            get isCollapsed() {
                return 1 === this.rangeCount && this._ranges[0].isCollapsed
            }
            get rangeCount() {
                return this._ranges.length
            }
            get isBackward() {
                return !this.isCollapsed && this._lastRangeBackward
            }
            get editableElement() {
                return this.anchor ? this.anchor.editableElement : null
            }* getRanges() {
                for (const t of this._ranges) yield t.clone()
            }
            getFirstRange() {
                let t = null;
                for (const e of this._ranges) t && !e.start.isBefore(t.start) || (t = e);
                return t ? t.clone() : null
            }
            getLastRange() {
                let t = null;
                for (const e of this._ranges) t && !e.end.isAfter(t.end) || (t = e);
                return t ? t.clone() : null
            }
            getFirstPosition() {
                const t = this.getFirstRange();
                return t ? t.start.clone() : null
            }
            getLastPosition() {
                const t = this.getLastRange();
                return t ? t.end.clone() : null
            }
            isEqual(t) {
                if (this.isFake != t.isFake) return !1;
                if (this.isFake && this.fakeSelectionLabel != t.fakeSelectionLabel) return !1;
                if (this.rangeCount != t.rangeCount) return !1;
                if (0 === this.rangeCount) return !0;
                if (!this.anchor.isEqual(t.anchor) || !this.focus.isEqual(t.focus)) return !1;
                for (const e of this._ranges) {
                    let n = !1;
                    for (const o of t._ranges)
                        if (e.isEqual(o)) {
                            n = !0;
                            break
                        } if (!n) return !1
                }
                return !0
            }
            isSimilar(t) {
                if (this.isBackward != t.isBackward) return !1;
                const e = tt(this.getRanges());
                if (e != tt(t.getRanges())) return !1;
                if (0 == e) return !0;
                for (let e of this.getRanges()) {
                    e = e.getTrimmed();
                    let n = !1;
                    for (let o of t.getRanges())
                        if (o = o.getTrimmed(), e.start.isEqual(o.start) && e.end.isEqual(o.end)) {
                            n = !0;
                            break
                        } if (!n) return !1
                }
                return !0
            }
            getSelectedElement() {
                return 1 !== this.rangeCount ? null : this.getFirstRange().getContainedElement()
            }
            setTo(...t) {
                let [e, n, o] = t;
                if ("object" == typeof n && (o = n, n = void 0), null === e) this._setRanges([]), this._setFakeOptions(o);
                else if (e instanceof Ea || e instanceof Da) this._setRanges(e.getRanges(), e.isBackward), this._setFakeOptions({
                    fake: e.isFake,
                    label: e.fakeSelectionLabel
                });
                else if (e instanceof ya) this._setRanges([e], o && o.backward), this._setFakeOptions(o);
                else if (e instanceof va) this._setRanges([new ya(e)]), this._setFakeOptions(o);
                else if (e instanceof us) {
                    const t = !!o && !!o.backward;
                    let i;
                    if (void 0 === n) throw new A("view-selection-setto-required-second-parameter", this);
                    i = "in" == n ? ya._createIn(e) : "on" == n ? ya._createOn(e) : new ya(va._createAt(e, n)), this._setRanges([i], t), this._setFakeOptions(o)
                } else {
                    if (!nt(e)) throw new A("view-selection-setto-not-selectable", this);
                    this._setRanges(e, o && o.backward), this._setFakeOptions(o)
                }
                this.fire("change")
            }
            setFocus(t, e) {
                if (null === this.anchor) throw new A("view-selection-setfocus-no-ranges", this);
                const n = va._createAt(t, e);
                if ("same" == n.compareWith(this.focus)) return;
                const o = this.anchor;
                this._ranges.pop(), "before" == n.compareWith(o) ? this._addRange(new ya(n, o), !0) : this._addRange(new ya(o, n)), this.fire("change")
            }
            _setRanges(t, e = !1) {
                t = Array.from(t), this._ranges = [];
                for (const e of t) this._addRange(e);
                this._lastRangeBackward = !!e
            }
            _setFakeOptions(t = {}) {
                this._isFake = !!t.fake, this._fakeSelectionLabel = t.fake && t.label || ""
            }
            _addRange(t, e = !1) {
                if (!(t instanceof ya)) throw new A("view-selection-add-range-not-range", this);
                this._pushRange(t), this._lastRangeBackward = !!e
            }
            _pushRange(t) {
                for (const e of this._ranges)
                    if (t.isIntersecting(e)) throw new A("view-selection-range-intersects", this, {
                        addedRange: t,
                        intersectingRange: e
                    });
                this._ranges.push(new ya(t.start, t.end))
            }
        }
        Ea.prototype.is = function (t) {
            return "selection" === t || "view:selection" === t
        };
        class Da extends(B(ds)) {
            constructor(...t) {
                super(), this._selection = new Ea, this._selection.delegate("change").to(this), t.length && this._selection.setTo(...t)
            }
            get isFake() {
                return this._selection.isFake
            }
            get fakeSelectionLabel() {
                return this._selection.fakeSelectionLabel
            }
            get anchor() {
                return this._selection.anchor
            }
            get focus() {
                return this._selection.focus
            }
            get isCollapsed() {
                return this._selection.isCollapsed
            }
            get rangeCount() {
                return this._selection.rangeCount
            }
            get isBackward() {
                return this._selection.isBackward
            }
            get editableElement() {
                return this._selection.editableElement
            }
            get _ranges() {
                return this._selection._ranges
            }* getRanges() {
                yield* this._selection.getRanges()
            }
            getFirstRange() {
                return this._selection.getFirstRange()
            }
            getLastRange() {
                return this._selection.getLastRange()
            }
            getFirstPosition() {
                return this._selection.getFirstPosition()
            }
            getLastPosition() {
                return this._selection.getLastPosition()
            }
            getSelectedElement() {
                return this._selection.getSelectedElement()
            }
            isEqual(t) {
                return this._selection.isEqual(t)
            }
            isSimilar(t) {
                return this._selection.isSimilar(t)
            }
            _setTo(...t) {
                this._selection.setTo(...t)
            }
            _setFocus(t, e) {
                this._selection.setFocus(t, e)
            }
        }
        Da.prototype.is = function (t) {
            return "selection" === t || "documentSelection" == t || "view:selection" == t || "view:documentSelection" == t
        };
        class Sa extends p {
            constructor(t, e, n) {
                super(t, e), this.startRange = n, this._eventPhase = "none", this._currentTarget = null
            }
            get eventPhase() {
                return this._eventPhase
            }
            get currentTarget() {
                return this._currentTarget
            }
        }
        const Ia = Symbol("bubbling contexts");

        function Ma(t) {
            return class extends t {
                fire(t, ...e) {
                    try {
                        const n = t instanceof p ? t : new p(this, t),
                            o = Pa(this);
                        if (!o.size) return;
                        if (Ta(n, "capturing", this), Ba(o, "$capture", n, ...e)) return n.return;
                        const i = n.startRange || this.selection.getFirstRange(),
                            r = i ? i.getContainedElement() : null,
                            s = !!r && Boolean(Na(o, r));
                        let a = r || function (t) {
                            if (!t) return null;
                            const e = t.start.parent,
                                n = t.end.parent,
                                o = e.getPath(),
                                i = n.getPath();
                            return o.length > i.length ? e : n
                        }(i);
                        if (Ta(n, "atTarget", a), !s) {
                            if (Ba(o, "$text", n, ...e)) return n.return;
                            Ta(n, "bubbling", a)
                        }
                        for (; a;) {
                            if (a.is("rootElement")) {
                                if (Ba(o, "$root", n, ...e)) return n.return
                            } else if (a.is("element") && Ba(o, a.name, n, ...e)) return n.return;
                            if (Ba(o, a, n, ...e)) return n.return;
                            a = a.parent, Ta(n, "bubbling", a)
                        }
                        return Ta(n, "bubbling", this), Ba(o, "$document", n, ...e), n.return
                    } catch (t) {
                        A.rethrowUnexpectedError(t, this)
                    }
                }
                _addEventListener(t, e, n) {
                    const o = vi(n.context || "$document"),
                        i = Pa(this);
                    for (const r of o) {
                        let o = i.get(r);
                        o || (o = new(B()), i.set(r, o)), this.listenTo(o, t, e, n)
                    }
                }
                _removeEventListener(t, e) {
                    const n = Pa(this);
                    for (const o of n.values()) this.stopListening(o, t, e)
                }
            }
        } {
            const t = Ma(Object);
            ["fire", "_addEventListener", "_removeEventListener"].forEach((e => {
                Ma[e] = t.prototype[e]
            }))
        }

        function Ta(t, e, n) {
            t instanceof Sa && (t._eventPhase = e, t._currentTarget = n)
        }

        function Ba(t, e, n, ...o) {
            const i = "string" == typeof e ? t.get(e) : Na(t, e);
            return !!i && (i.fire(n, ...o), n.stop.called)
        }

        function Na(t, e) {
            for (const [n, o] of t)
                if ("function" == typeof n && n(e)) return o;
            return null
        }

        function Pa(t) {
            return t[Ia] || (t[Ia] = new Map), t[Ia]
        }
        class za extends(Ma(K())) {
            constructor(t) {
                super(), this._postFixers = new Set, this.selection = new Da, this.roots = new Si({
                    idProperty: "rootName"
                }), this.stylesProcessor = t, this.set("isReadOnly", !1), this.set("isFocused", !1), this.set("isSelecting", !1), this.set("isComposing", !1)
            }
            getRoot(t = "main") {
                return this.roots.get(t)
            }
            registerPostFixer(t) {
                this._postFixers.add(t)
            }
            destroy() {
                this.roots.map((t => t.destroy())), this.stopListening()
            }
            _callPostFixers(t) {
                let e = !1;
                do {
                    for (const n of this._postFixers)
                        if (e = n(t), e) break
                } while (e)
            }
        }
        class Oa extends ma {
            constructor(t, e, n, o) {
                super(t, e, n, o), this._priority = 10, this._id = null, this._clonesGroup = null, this.getFillerOffset = La
            }
            get priority() {
                return this._priority
            }
            get id() {
                return this._id
            }
            getElementsWithSameId() {
                if (null === this.id) throw new A("attribute-element-get-elements-with-same-id-no-id", this);
                return new Set(this._clonesGroup)
            }
            isSimilar(t) {
                return null !== this.id || null !== t.id ? this.id === t.id : super.isSimilar(t) && this.priority == t.priority
            }
            _clone(t = !1) {
                const e = super._clone(t);
                return e._priority = this._priority, e._id = this._id, e
            }
        }

        function La() {
            if (ja(this)) return null;
            let t = this.parent;
            for (; t && t.is("attributeElement");) {
                if (ja(t) > 1) return null;
                t = t.parent
            }
            return !t || ja(t) > 1 ? null : this.childCount
        }

        function ja(t) {
            return Array.from(t.getChildren()).filter((t => !t.is("uiElement"))).length
        }
        Oa.DEFAULT_PRIORITY = 10, Oa.prototype.is = function (t, e) {
            return e ? e === this.name && ("attributeElement" === t || "view:attributeElement" === t || "element" === t || "view:element" === t) : "attributeElement" === t || "view:attributeElement" === t || "element" === t || "view:element" === t || "node" === t || "view:node" === t
        };
        class Ra extends ma {
            constructor(t, e, n, o) {
                super(t, e, n, o), this.getFillerOffset = Fa
            }
            _insertChild(t, e) {
                if (e && (e instanceof us || Array.from(e).length > 0)) throw new A("view-emptyelement-cannot-add", [this, e]);
                return 0
            }
        }

        function Fa() {
            return null
        }
        Ra.prototype.is = function (t, e) {
            return e ? e === this.name && ("emptyElement" === t || "view:emptyElement" === t || "element" === t || "view:element" === t) : "emptyElement" === t || "view:emptyElement" === t || "element" === t || "view:element" === t || "node" === t || "view:node" === t
        };
        class Va extends ma {
            constructor(t, e, n, o) {
                super(t, e, n, o), this.getFillerOffset = Ha
            }
            _insertChild(t, e) {
                if (e && (e instanceof us || Array.from(e).length > 0)) throw new A("view-uielement-cannot-add", [this, e]);
                return 0
            }
            render(t, e) {
                return this.toDomElement(t)
            }
            toDomElement(t) {
                const e = t.createElement(this.name);
                for (const t of this.getAttributeKeys()) e.setAttribute(t, this.getAttribute(t));
                return e
            }
        }

        function Ua(t) {
            t.document.on("arrowKey", ((e, n) => function (t, e, n) {
                if (e.keyCode == ki.arrowright) {
                    const t = e.domTarget.ownerDocument.defaultView.getSelection(),
                        o = 1 == t.rangeCount && t.getRangeAt(0).collapsed;
                    if (o || e.shiftKey) {
                        const e = t.focusNode,
                            i = t.focusOffset,
                            r = n.domPositionToView(e, i);
                        if (null === r) return;
                        let s = !1;
                        const a = r.getLastMatchingPosition((t => (t.item.is("uiElement") && (s = !0), !(!t.item.is("uiElement") && !t.item.is("attributeElement")))));
                        if (s) {
                            const e = n.viewPositionToDom(a);
                            o ? t.collapse(e.parent, e.offset) : t.extend(e.parent, e.offset)
                        }
                    }
                }
            }(0, n, t.domConverter)), {
                priority: "low"
            })
        }

        function Ha() {
            return null
        }
        Va.prototype.is = function (t, e) {
            return e ? e === this.name && ("uiElement" === t || "view:uiElement" === t || "element" === t || "view:element" === t) : "uiElement" === t || "view:uiElement" === t || "element" === t || "view:element" === t || "node" === t || "view:node" === t
        };
        class Ga extends ma {
            constructor(t, e, n, o) {
                super(t, e, n, o), this.getFillerOffset = qa
            }
            _insertChild(t, e) {
                if (e && (e instanceof us || Array.from(e).length > 0)) throw new A("view-rawelement-cannot-add", [this, e]);
                return 0
            }
            render(t, e) {}
        }

        function qa() {
            return null
        }
        Ga.prototype.is = function (t, e) {
            return e ? e === this.name && ("rawElement" === t || "view:rawElement" === t || "element" === t || "view:element" === t) : "rawElement" === t || "view:rawElement" === t || t === this.name || t === "view:" + this.name || "element" === t || "view:element" === t || "node" === t || "view:node" === t
        };
        class Wa extends(B(ds)) {
            constructor(t, e) {
                super(), this._children = [], this._customProperties = new Map, this.document = t, e && this._insertChild(0, e)
            } [Symbol.iterator]() {
                return this._children[Symbol.iterator]()
            }
            get childCount() {
                return this._children.length
            }
            get isEmpty() {
                return 0 === this.childCount
            }
            get root() {
                return this
            }
            get parent() {
                return null
            }
            get name() {}
            getCustomProperty(t) {
                return this._customProperties.get(t)
            }* getCustomProperties() {
                yield* this._customProperties.entries()
            }
            _appendChild(t) {
                return this._insertChild(this.childCount, t)
            }
            getChild(t) {
                return this._children[t]
            }
            getChildIndex(t) {
                return this._children.indexOf(t)
            }
            getChildren() {
                return this._children[Symbol.iterator]()
            }
            _insertChild(t, e) {
                this._fireChange("children", this);
                let n = 0;
                const o = function (t, e) {
                    if ("string" == typeof e) return [new gs(t, e)];
                    nt(e) || (e = [e]);
                    return Array.from(e).map((e => "string" == typeof e ? new gs(t, e) : e instanceof ps ? new gs(t, e.data) : e))
                }(this.document, e);
                for (const e of o) null !== e.parent && e._remove(), e.parent = this, this._children.splice(t, 0, e), t++, n++;
                return n
            }
            _removeChildren(t, e = 1) {
                this._fireChange("children", this);
                for (let n = t; n < t + e; n++) this._children[n].parent = null;
                return this._children.splice(t, e)
            }
            _fireChange(t, e) {
                this.fire("change:" + t, e)
            }
            _setCustomProperty(t, e) {
                this._customProperties.set(t, e)
            }
            _removeCustomProperty(t) {
                return this._customProperties.delete(t)
            }
        }
        Wa.prototype.is = function (t) {
            return "documentFragment" === t || "view:documentFragment" === t
        };
        class Ka {
            constructor(t) {
                this._cloneGroups = new Map, this._slotFactory = null, this.document = t
            }
            setSelection(...t) {
                this.document.selection._setTo(...t)
            }
            setSelectionFocus(t, e) {
                this.document.selection._setFocus(t, e)
            }
            createDocumentFragment(t) {
                return new Wa(this.document, t)
            }
            createText(t) {
                return new gs(this.document, t)
            }
            createAttributeElement(t, e, n = {}) {
                const o = new Oa(this.document, t, e);
                return "number" == typeof n.priority && (o._priority = n.priority), n.id && (o._id = n.id), n.renderUnsafeAttributes && o._unsafeAttributesToRender.push(...n.renderUnsafeAttributes), o
            }
            createContainerElement(t, e, n = {}, o = {}) {
                let i = null;
                Dt(n) ? o = n : i = n;
                const r = new ka(this.document, t, e, i);
                return o.renderUnsafeAttributes && r._unsafeAttributesToRender.push(...o.renderUnsafeAttributes), r
            }
            createEditableElement(t, e, n = {}) {
                const o = new wa(this.document, t, e);
                return n.renderUnsafeAttributes && o._unsafeAttributesToRender.push(...n.renderUnsafeAttributes), o
            }
            createEmptyElement(t, e, n = {}) {
                const o = new Ra(this.document, t, e);
                return n.renderUnsafeAttributes && o._unsafeAttributesToRender.push(...n.renderUnsafeAttributes), o
            }
            createUIElement(t, e, n) {
                const o = new Va(this.document, t, e);
                return n && (o.render = n), o
            }
            createRawElement(t, e, n, o = {}) {
                const i = new Ga(this.document, t, e);
                return n && (i.render = n), o.renderUnsafeAttributes && i._unsafeAttributesToRender.push(...o.renderUnsafeAttributes), i
            }
            setAttribute(t, e, n) {
                n._setAttribute(t, e)
            }
            removeAttribute(t, e) {
                e._removeAttribute(t)
            }
            addClass(t, e) {
                e._addClass(t)
            }
            removeClass(t, e) {
                e._removeClass(t)
            }
            setStyle(t, e, n) {
                Dt(t) && void 0 === n ? e._setStyle(t) : n._setStyle(t, e)
            }
            removeStyle(t, e) {
                e._removeStyle(t)
            }
            setCustomProperty(t, e, n) {
                n._setCustomProperty(t, e)
            }
            removeCustomProperty(t, e) {
                return e._removeCustomProperty(t)
            }
            breakAttributes(t) {
                return t instanceof va ? this._breakAttributes(t) : this._breakAttributesRange(t)
            }
            breakContainer(t) {
                const e = t.parent;
                if (!e.is("containerElement")) throw new A("view-writer-break-non-container-element", this.document);
                if (!e.parent) throw new A("view-writer-break-root", this.document);
                if (t.isAtStart) return va._createBefore(e);
                if (!t.isAtEnd) {
                    const n = e._clone(!1);
                    this.insert(va._createAfter(e), n);
                    const o = new ya(t, va._createAt(e, "end")),
                        i = new va(n, 0);
                    this.move(o, i)
                }
                return va._createAfter(e)
            }
            mergeAttributes(t) {
                const e = t.offset,
                    n = t.parent;
                if (n.is("$text")) return t;
                if (n.is("attributeElement") && 0 === n.childCount) {
                    const t = n.parent,
                        e = n.index;
                    return n._remove(), this._removeFromClonedElementsGroup(n), this.mergeAttributes(new va(t, e))
                }
                const o = n.getChild(e - 1),
                    i = n.getChild(e);
                if (!o || !i) return t;
                if (o.is("$text") && i.is("$text")) return Ja(o, i);
                if (o.is("attributeElement") && i.is("attributeElement") && o.isSimilar(i)) {
                    const t = o.childCount;
                    return o._appendChild(i.getChildren()), i._remove(), this._removeFromClonedElementsGroup(i), this.mergeAttributes(new va(o, t))
                }
                return t
            }
            mergeContainers(t) {
                const e = t.nodeBefore,
                    n = t.nodeAfter;
                if (!(e && n && e.is("containerElement") && n.is("containerElement"))) throw new A("view-writer-merge-containers-invalid-position", this.document);
                const o = e.getChild(e.childCount - 1),
                    i = o instanceof gs ? va._createAt(o, "end") : va._createAt(e, "end");
                return this.move(ya._createIn(n), va._createAt(e, "end")), this.remove(ya._createOn(n)), i
            }
            insert(t, e) {
                tc(e = nt(e) ? [...e] : [e], this.document);
                const n = e.reduce(((t, e) => {
                    const n = t[t.length - 1],
                        o = !e.is("uiElement");
                    return n && n.breakAttributes == o ? n.nodes.push(e) : t.push({
                        breakAttributes: o,
                        nodes: [e]
                    }), t
                }), []);
                let o = null,
                    i = t;
                for (const {
                        nodes: t,
                        breakAttributes: e
                    } of n) {
                    const n = this._insertNodes(i, t, e);
                    o || (o = n.start), i = n.end
                }
                return o ? new ya(o, i) : new ya(t)
            }
            remove(t) {
                const e = t instanceof ya ? t : ya._createOn(t);
                if (nc(e, this.document), e.isCollapsed) return new Wa(this.document);
                const {
                    start: n,
                    end: o
                } = this._breakAttributesRange(e, !0), i = n.parent, r = o.offset - n.offset, s = i._removeChildren(n.offset, r);
                for (const t of s) this._removeFromClonedElementsGroup(t);
                const a = this.mergeAttributes(n);
                return e.start = a, e.end = a.clone(), new Wa(this.document, s)
            }
            clear(t, e) {
                nc(t, this.document);
                const n = t.getWalker({
                    direction: "backward",
                    ignoreElementEnd: !0
                });
                for (const o of n) {
                    const n = o.item;
                    let i;
                    if (n.is("element") && e.isSimilar(n)) i = ya._createOn(n);
                    else if (!o.nextPosition.isAfter(t.start) && n.is("$textProxy")) {
                        const t = n.getAncestors().find((t => t.is("element") && e.isSimilar(t)));
                        t && (i = ya._createIn(t))
                    }
                    i && (i.end.isAfter(t.end) && (i.end = t.end), i.start.isBefore(t.start) && (i.start = t.start), this.remove(i))
                }
            }
            move(t, e) {
                let n;
                if (e.isAfter(t.end)) {
                    const o = (e = this._breakAttributes(e, !0)).parent,
                        i = o.childCount;
                    t = this._breakAttributesRange(t, !0), n = this.remove(t), e.offset += o.childCount - i
                } else n = this.remove(t);
                return this.insert(e, n)
            }
            wrap(t, e) {
                if (!(e instanceof Oa)) throw new A("view-writer-wrap-invalid-attribute", this.document);
                if (nc(t, this.document), t.isCollapsed) {
                    let o = t.start;
                    o.parent.is("element") && (n = o.parent, !Array.from(n.getChildren()).some((t => !t.is("uiElement")))) && (o = o.getLastMatchingPosition((t => t.item.is("uiElement")))), o = this._wrapPosition(o, e);
                    const i = this.document.selection;
                    return i.isCollapsed && i.getFirstPosition().isEqual(t.start) && this.setSelection(o), new ya(o)
                }
                return this._wrapRange(t, e);
                var n
            }
            unwrap(t, e) {
                if (!(e instanceof Oa)) throw new A("view-writer-unwrap-invalid-attribute", this.document);
                if (nc(t, this.document), t.isCollapsed) return t;
                const {
                    start: n,
                    end: o
                } = this._breakAttributesRange(t, !0), i = n.parent, r = this._unwrapChildren(i, n.offset, o.offset, e), s = this.mergeAttributes(r.start);
                s.isEqual(r.start) || r.end.offset--;
                const a = this.mergeAttributes(r.end);
                return new ya(s, a)
            }
            rename(t, e) {
                const n = new ka(this.document, t, e.getAttributes());
                return this.insert(va._createAfter(e), n), this.move(ya._createIn(e), va._createAt(n, 0)), this.remove(ya._createOn(e)), n
            }
            clearClonedElementsGroup(t) {
                this._cloneGroups.delete(t)
            }
            createPositionAt(t, e) {
                return va._createAt(t, e)
            }
            createPositionAfter(t) {
                return va._createAfter(t)
            }
            createPositionBefore(t) {
                return va._createBefore(t)
            }
            createRange(t, e) {
                return new ya(t, e)
            }
            createRangeOn(t) {
                return ya._createOn(t)
            }
            createRangeIn(t) {
                return ya._createIn(t)
            }
            createSelection(...t) {
                return new Ea(...t)
            }
            createSlot(t = "children") {
                if (!this._slotFactory) throw new A("view-writer-invalid-create-slot-context", this.document);
                return this._slotFactory(this, t)
            }
            _registerSlotFactory(t) {
                this._slotFactory = t
            }
            _clearSlotFactory() {
                this._slotFactory = null
            }
            _insertNodes(t, e, n) {
                let o, i;
                if (o = n ? Ya(t) : t.parent.is("$text") ? t.parent.parent : t.parent, !o) throw new A("view-writer-invalid-position-container", this.document);
                i = n ? this._breakAttributes(t, !0) : t.parent.is("$text") ? Qa(t) : t;
                const r = o._insertChild(i.offset, e);
                for (const t of e) this._addToClonedElementsGroup(t);
                const s = i.getShiftedBy(r),
                    a = this.mergeAttributes(i);
                a.isEqual(i) || s.offset--;
                const c = this.mergeAttributes(s);
                return new ya(a, c)
            }
            _wrapChildren(t, e, n, o) {
                let i = e;
                const r = [];
                for (; i < n;) {
                    const e = t.getChild(i),
                        n = e.is("$text"),
                        s = e.is("attributeElement");
                    if (s && this._wrapAttributeElement(o, e)) r.push(new va(t, i));
                    else if (n || !s || $a(o, e)) {
                        const n = o._clone();
                        e._remove(), n._appendChild(e), t._insertChild(i, n), this._addToClonedElementsGroup(n), r.push(new va(t, i))
                    } else this._wrapChildren(e, 0, e.childCount, o);
                    i++
                }
                let s = 0;
                for (const t of r) {
                    if (t.offset -= s, t.offset == e) continue;
                    this.mergeAttributes(t).isEqual(t) || (s++, n--)
                }
                return ya._createFromParentsAndOffsets(t, e, t, n)
            }
            _unwrapChildren(t, e, n, o) {
                let i = e;
                const r = [];
                for (; i < n;) {
                    const e = t.getChild(i);
                    if (e.is("attributeElement"))
                        if (e.isSimilar(o)) {
                            const o = e.getChildren(),
                                s = e.childCount;
                            e._remove(), t._insertChild(i, o), this._removeFromClonedElementsGroup(e), r.push(new va(t, i), new va(t, i + s)), i += s, n += s - 1
                        } else this._unwrapAttributeElement(o, e) ? (r.push(new va(t, i), new va(t, i + 1)), i++) : (this._unwrapChildren(e, 0, e.childCount, o), i++);
                    else i++
                }
                let s = 0;
                for (const t of r) {
                    if (t.offset -= s, t.offset == e || t.offset == n) continue;
                    this.mergeAttributes(t).isEqual(t) || (s++, n--)
                }
                return ya._createFromParentsAndOffsets(t, e, t, n)
            }
            _wrapRange(t, e) {
                const {
                    start: n,
                    end: o
                } = this._breakAttributesRange(t, !0), i = n.parent, r = this._wrapChildren(i, n.offset, o.offset, e), s = this.mergeAttributes(r.start);
                s.isEqual(r.start) || r.end.offset--;
                const a = this.mergeAttributes(r.end);
                return new ya(s, a)
            }
            _wrapPosition(t, e) {
                if (e.isSimilar(t.parent)) return Za(t.clone());
                t.parent.is("$text") && (t = Qa(t));
                const n = this.createAttributeElement("_wrapPosition-fake-element");
                n._priority = Number.POSITIVE_INFINITY, n.isSimilar = () => !1, t.parent._insertChild(t.offset, n);
                const o = new ya(t, t.getShiftedBy(1));
                this.wrap(o, e);
                const i = new va(n.parent, n.index);
                n._remove();
                const r = i.nodeBefore,
                    s = i.nodeAfter;
                return r instanceof gs && s instanceof gs ? Ja(r, s) : Za(i)
            }
            _wrapAttributeElement(t, e) {
                if (!oc(t, e)) return !1;
                if (t.name !== e.name || t.priority !== e.priority) return !1;
                for (const n of t.getAttributeKeys())
                    if ("class" !== n && "style" !== n && e.hasAttribute(n) && e.getAttribute(n) !== t.getAttribute(n)) return !1;
                for (const n of t.getStyleNames())
                    if (e.hasStyle(n) && e.getStyle(n) !== t.getStyle(n)) return !1;
                for (const n of t.getAttributeKeys()) "class" !== n && "style" !== n && (e.hasAttribute(n) || this.setAttribute(n, t.getAttribute(n), e));
                for (const n of t.getStyleNames()) e.hasStyle(n) || this.setStyle(n, t.getStyle(n), e);
                for (const n of t.getClassNames()) e.hasClass(n) || this.addClass(n, e);
                return !0
            }
            _unwrapAttributeElement(t, e) {
                if (!oc(t, e)) return !1;
                if (t.name !== e.name || t.priority !== e.priority) return !1;
                for (const n of t.getAttributeKeys())
                    if ("class" !== n && "style" !== n && (!e.hasAttribute(n) || e.getAttribute(n) !== t.getAttribute(n))) return !1;
                if (!e.hasClass(...t.getClassNames())) return !1;
                for (const n of t.getStyleNames())
                    if (!e.hasStyle(n) || e.getStyle(n) !== t.getStyle(n)) return !1;
                for (const n of t.getAttributeKeys()) "class" !== n && "style" !== n && this.removeAttribute(n, e);
                return this.removeClass(Array.from(t.getClassNames()), e), this.removeStyle(Array.from(t.getStyleNames()), e), !0
            }
            _breakAttributesRange(t, e = !1) {
                const n = t.start,
                    o = t.end;
                if (nc(t, this.document), t.isCollapsed) {
                    const n = this._breakAttributes(t.start, e);
                    return new ya(n, n)
                }
                const i = this._breakAttributes(o, e),
                    r = i.parent.childCount,
                    s = this._breakAttributes(n, e);
                return i.offset += i.parent.childCount - r, new ya(s, i)
            }
            _breakAttributes(t, e = !1) {
                const n = t.offset,
                    o = t.parent;
                if (t.parent.is("emptyElement")) throw new A("view-writer-cannot-break-empty-element", this.document);
                if (t.parent.is("uiElement")) throw new A("view-writer-cannot-break-ui-element", this.document);
                if (t.parent.is("rawElement")) throw new A("view-writer-cannot-break-raw-element", this.document);
                if (!e && o.is("$text") && ec(o.parent)) return t.clone();
                if (ec(o)) return t.clone();
                if (o.is("$text")) return this._breakAttributes(Qa(t), e);
                if (n == o.childCount) {
                    const t = new va(o.parent, o.index + 1);
                    return this._breakAttributes(t, e)
                }
                if (0 === n) {
                    const t = new va(o.parent, o.index);
                    return this._breakAttributes(t, e)
                } {
                    const t = o.index + 1,
                        i = o._clone();
                    o.parent._insertChild(t, i), this._addToClonedElementsGroup(i);
                    const r = o.childCount - n,
                        s = o._removeChildren(n, r);
                    i._appendChild(s);
                    const a = new va(o.parent, t);
                    return this._breakAttributes(a, e)
                }
            }
            _addToClonedElementsGroup(t) {
                if (!t.root.is("rootElement")) return;
                if (t.is("element"))
                    for (const e of t.getChildren()) this._addToClonedElementsGroup(e);
                const e = t.id;
                if (!e) return;
                let n = this._cloneGroups.get(e);
                n || (n = new Set, this._cloneGroups.set(e, n)), n.add(t), t._clonesGroup = n
            }
            _removeFromClonedElementsGroup(t) {
                if (t.is("element"))
                    for (const e of t.getChildren()) this._removeFromClonedElementsGroup(e);
                const e = t.id;
                if (!e) return;
                const n = this._cloneGroups.get(e);
                n && n.delete(t)
            }
        }

        function Ya(t) {
            let e = t.parent;
            for (; !ec(e);) {
                if (!e) return;
                e = e.parent
            }
            return e
        }

        function $a(t, e) {
            return t.priority < e.priority || !(t.priority > e.priority) && t.getIdentity() < e.getIdentity()
        }

        function Za(t) {
            const e = t.nodeBefore;
            if (e && e.is("$text")) return new va(e, e.data.length);
            const n = t.nodeAfter;
            return n && n.is("$text") ? new va(n, 0) : t
        }

        function Qa(t) {
            if (t.offset == t.parent.data.length) return new va(t.parent.parent, t.parent.index + 1);
            if (0 === t.offset) return new va(t.parent.parent, t.parent.index);
            const e = t.parent.data.slice(t.offset);
            return t.parent._data = t.parent.data.slice(0, t.offset), t.parent.parent._insertChild(t.parent.index + 1, new gs(t.root.document, e)), new va(t.parent.parent, t.parent.index + 1)
        }

        function Ja(t, e) {
            const n = t.data.length;
            return t._data += e.data, e._remove(), new va(t, n)
        }
        const Xa = [gs, Oa, ka, Ra, Ga, Va];

        function tc(t, e) {
            for (const n of t) {
                if (!Xa.some((t => n instanceof t))) throw new A("view-writer-insert-invalid-node-type", e);
                n.is("$text") || tc(n.getChildren(), e)
            }
        }

        function ec(t) {
            return t && (t.is("containerElement") || t.is("documentFragment"))
        }

        function nc(t, e) {
            const n = Ya(t.start),
                o = Ya(t.end);
            if (!n || !o || n !== o) throw new A("view-writer-invalid-range-container", e)
        }

        function oc(t, e) {
            return null === t.id && null === e.id
        }
        const ic = t => t.createTextNode(" "),
            rc = t => {
                const e = t.createElement("span");
                return e.dataset.ckeFiller = "true", e.innerText = " ", e
            },
            sc = t => {
                const e = t.createElement("br");
                return e.dataset.ckeFiller = "true", e
            },
            ac = 7,
            cc = "⁠".repeat(ac);

        function lc(t) {
            return "string" == typeof t ? t.substr(0, ac) === cc : Fo(t) && t.data.substr(0, ac) === cc
        }

        function dc(t) {
            return t.data.length == ac && lc(t)
        }

        function hc(t) {
            const e = "string" == typeof t ? t : t.data;
            return lc(t) ? e.slice(ac) : e
        }

        function uc(t, e) {
            if (e.keyCode == ki.arrowleft) {
                const t = e.domTarget.ownerDocument.defaultView.getSelection();
                if (1 == t.rangeCount && t.getRangeAt(0).collapsed) {
                    const e = t.getRangeAt(0).startContainer,
                        n = t.getRangeAt(0).startOffset;
                    lc(e) && n <= ac && t.collapse(e, 0)
                }
            }
        }
        var gc = n(9315),
            pc = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(gc.Z, pc);
        gc.Z.locals;
        class mc extends(K()) {
            constructor(t, e) {
                super(), this.domDocuments = new Set, this.markedAttributes = new Set, this.markedChildren = new Set, this.markedTexts = new Set, this._inlineFiller = null, this._fakeSelectionContainer = null, this.domConverter = t, this.selection = e, this.set("isFocused", !1), this.set("isSelecting", !1), a.isBlink && !a.isAndroid && this.on("change:isSelecting", (() => {
                    this.isSelecting || this.render()
                })), this.set("isComposing", !1), this.on("change:isComposing", (() => {
                    this.isComposing || this.render()
                }))
            }
            markToSync(t, e) {
                if ("text" === t) this.domConverter.mapViewToDom(e.parent) && this.markedTexts.add(e);
                else {
                    if (!this.domConverter.mapViewToDom(e)) return;
                    if ("attributes" === t) this.markedAttributes.add(e);
                    else {
                        if ("children" !== t) {
                            throw new A("view-renderer-unknown-type", this)
                        }
                        this.markedChildren.add(e)
                    }
                }
            }
            render() {
                if (this.isComposing && !a.isAndroid) return;
                let t = null;
                const e = !(a.isBlink && !a.isAndroid) || !this.isSelecting;
                for (const t of this.markedChildren) this._updateChildrenMappings(t);
                e ? (this._inlineFiller && !this._isSelectionInInlineFiller() && this._removeInlineFiller(), this._inlineFiller ? t = this._getInlineFillerPosition() : this._needsInlineFillerAtSelection() && (t = this.selection.getFirstPosition(), this.markedChildren.add(t.parent))) : this._inlineFiller && this._inlineFiller.parentNode && (t = this.domConverter.domPositionToView(this._inlineFiller), t && t.parent.is("$text") && (t = va._createBefore(t.parent)));
                for (const t of this.markedAttributes) this._updateAttrs(t);
                for (const e of this.markedChildren) this._updateChildren(e, {
                    inlineFillerPosition: t
                });
                for (const e of this.markedTexts) !this.markedChildren.has(e.parent) && this.domConverter.mapViewToDom(e.parent) && this._updateText(e, {
                    inlineFillerPosition: t
                });
                if (e)
                    if (t) {
                        const e = this.domConverter.viewPositionToDom(t),
                            n = e.parent.ownerDocument;
                        lc(e.parent) ? this._inlineFiller = e.parent : this._inlineFiller = fc(n, e.parent, e.offset)
                    } else this._inlineFiller = null;
                this._updateFocus(), this._updateSelection(), this.markedTexts.clear(), this.markedAttributes.clear(), this.markedChildren.clear()
            }
            _updateChildrenMappings(t) {
                if (!this.domConverter.mapViewToDom(t)) return;
                const e = Array.from(this.domConverter.mapViewToDom(t).childNodes),
                    n = Array.from(this.domConverter.viewChildrenToDom(t, {
                        withChildren: !1
                    })),
                    o = this._diffNodeLists(e, n),
                    i = this._findUpdateActions(o, e, n, kc);
                if (-1 !== i.indexOf("update")) {
                    const o = {
                        equal: 0,
                        insert: 0,
                        delete: 0
                    };
                    for (const r of i)
                        if ("update" === r) {
                            const i = o.equal + o.insert,
                                r = o.equal + o.delete,
                                s = t.getChild(i);
                            !s || s.is("uiElement") || s.is("rawElement") || this._updateElementMappings(s, e[r]), ri(n[i]), o.equal++
                        } else o[r]++
                }
            }
            _updateElementMappings(t, e) {
                this.domConverter.unbindDomElement(e), this.domConverter.bindElements(e, t), this.markedChildren.add(t), this.markedAttributes.add(t)
            }
            _getInlineFillerPosition() {
                const t = this.selection.getFirstPosition();
                return t.parent.is("$text") ? va._createBefore(t.parent) : t
            }
            _isSelectionInInlineFiller() {
                if (1 != this.selection.rangeCount || !this.selection.isCollapsed) return !1;
                const t = this.selection.getFirstPosition(),
                    e = this.domConverter.viewPositionToDom(t);
                return !!(e && Fo(e.parent) && lc(e.parent))
            }
            _removeInlineFiller() {
                const t = this._inlineFiller;
                if (!lc(t)) throw new A("view-renderer-filler-was-lost", this);
                dc(t) ? t.remove() : t.data = t.data.substr(ac), this._inlineFiller = null
            }
            _needsInlineFillerAtSelection() {
                if (1 != this.selection.rangeCount || !this.selection.isCollapsed) return !1;
                const t = this.selection.getFirstPosition(),
                    e = t.parent,
                    n = t.offset;
                if (!this.domConverter.mapViewToDom(e.root)) return !1;
                if (!e.is("element")) return !1;
                if (! function (t) {
                        if ("false" == t.getAttribute("contenteditable")) return !1;
                        const e = t.findAncestor((t => t.hasAttribute("contenteditable")));
                        return !e || "true" == e.getAttribute("contenteditable")
                    }(e)) return !1;
                if (n === e.getFillerOffset()) return !1;
                const o = t.nodeBefore,
                    i = t.nodeAfter;
                return !(o instanceof gs || i instanceof gs) && (!a.isAndroid || !o && !i)
            }
            _updateText(t, e) {
                const n = this.domConverter.findCorrespondingDomText(t);
                let o = this.domConverter.viewToDom(t).data;
                const i = e.inlineFillerPosition;
                i && i.parent == t.parent && i.offset == t.index && (o = cc + o), Ac(n, o)
            }
            _updateAttrs(t) {
                const e = this.domConverter.mapViewToDom(t);
                if (!e) return;
                const n = Array.from(e.attributes).map((t => t.name)),
                    o = t.getAttributeKeys();
                for (const n of o) this.domConverter.setDomElementAttribute(e, n, t.getAttribute(n), t);
                for (const o of n) t.hasAttribute(o) || this.domConverter.removeDomElementAttribute(e, o)
            }
            _updateChildren(t, e) {
                const n = this.domConverter.mapViewToDom(t);
                if (!n) return;
                if (a.isAndroid) {
                    let t = null;
                    for (const e of Array.from(n.childNodes)) {
                        if (t && Fo(t) && Fo(e)) {
                            n.normalize();
                            break
                        }
                        t = e
                    }
                }
                const o = e.inlineFillerPosition,
                    i = n.childNodes,
                    r = Array.from(this.domConverter.viewChildrenToDom(t, {
                        bind: !0
                    }));
                o && o.parent === t && fc(n.ownerDocument, r, o.offset);
                const s = this._diffNodeLists(i, r),
                    c = this._findUpdateActions(s, i, r, bc);
                let l = 0;
                const d = new Set;
                for (const t of c) "delete" === t ? (d.add(i[l]), ri(i[l])) : "equal" !== t && "update" !== t || l++;
                l = 0;
                for (const t of c) "insert" === t ? (Jo(n, l, r[l]), l++) : "update" === t ? (Ac(i[l], r[l].data), l++) : "equal" === t && (this._markDescendantTextToSync(this.domConverter.domToView(r[l])), l++);
                for (const t of d) t.parentNode || this.domConverter.unbindDomElement(t)
            }
            _diffNodeLists(t, e) {
                return t = function (t, e) {
                    const n = Array.from(t);
                    if (0 == n.length || !e) return n;
                    const o = n[n.length - 1];
                    o == e && n.pop();
                    return n
                }(t, this._fakeSelectionContainer), u(t, e, wc.bind(null, this.domConverter))
            }
            _findUpdateActions(t, e, n, o) {
                if (-1 === t.indexOf("insert") || -1 === t.indexOf("delete")) return t;
                let i = [],
                    r = [],
                    s = [];
                const a = {
                    equal: 0,
                    insert: 0,
                    delete: 0
                };
                for (const c of t) "insert" === c ? s.push(n[a.equal + a.insert]) : "delete" === c ? r.push(e[a.equal + a.delete]) : (i = i.concat(u(r, s, o).map((t => "equal" === t ? "update" : t))), i.push("equal"), r = [], s = []), a[c]++;
                return i.concat(u(r, s, o).map((t => "equal" === t ? "update" : t)))
            }
            _markDescendantTextToSync(t) {
                if (t)
                    if (t.is("$text")) this.markedTexts.add(t);
                    else if (t.is("element"))
                    for (const e of t.getChildren()) this._markDescendantTextToSync(e)
            }
            _updateSelection() {
                if (a.isBlink && !a.isAndroid && this.isSelecting && !this.markedChildren.size) return;
                if (0 === this.selection.rangeCount) return this._removeDomSelection(), void this._removeFakeSelection();
                const t = this.domConverter.mapViewToDom(this.selection.editableElement);
                this.isFocused && t && (this.selection.isFake ? this._updateFakeSelection(t) : this._fakeSelectionContainer && this._fakeSelectionContainer.isConnected ? (this._removeFakeSelection(), this._updateDomSelection(t)) : this.isComposing && a.isAndroid || this._updateDomSelection(t))
            }
            _updateFakeSelection(t) {
                const e = t.ownerDocument;
                this._fakeSelectionContainer || (this._fakeSelectionContainer = function (t) {
                    const e = t.createElement("div");
                    return e.className = "ck-fake-selection-container", Object.assign(e.style, {
                        position: "fixed",
                        top: 0,
                        left: "-9999px",
                        width: "42px"
                    }), e.textContent = " ", e
                }(e));
                const n = this._fakeSelectionContainer;
                if (this.domConverter.bindFakeSelection(n, this.selection), !this._fakeSelectionNeedsUpdate(t)) return;
                n.parentElement && n.parentElement == t || t.appendChild(n), n.textContent = this.selection.fakeSelectionLabel || " ";
                const o = e.getSelection(),
                    i = e.createRange();
                o.removeAllRanges(), i.selectNodeContents(n), o.addRange(i)
            }
            _updateDomSelection(t) {
                const e = t.ownerDocument.defaultView.getSelection();
                if (!this._domSelectionNeedsUpdate(e)) return;
                const n = this.domConverter.viewPositionToDom(this.selection.anchor),
                    o = this.domConverter.viewPositionToDom(this.selection.focus);
                e.setBaseAndExtent(n.parent, n.offset, o.parent, o.offset), a.isGecko && function (t, e) {
                    const n = t.parent;
                    if (n.nodeType != Node.ELEMENT_NODE || t.offset != n.childNodes.length - 1) return;
                    const o = n.childNodes[t.offset];
                    o && "BR" == o.tagName && e.addRange(e.getRangeAt(0))
                }(o, e)
            }
            _domSelectionNeedsUpdate(t) {
                if (!this.domConverter.isDomSelectionCorrect(t)) return !0;
                const e = t && this.domConverter.domSelectionToView(t);
                return (!e || !this.selection.isEqual(e)) && !(!this.selection.isCollapsed && this.selection.isSimilar(e))
            }
            _fakeSelectionNeedsUpdate(t) {
                const e = this._fakeSelectionContainer,
                    n = t.ownerDocument.getSelection();
                return !e || e.parentElement !== t || (n.anchorNode !== e && !e.contains(n.anchorNode) || e.textContent !== this.selection.fakeSelectionLabel)
            }
            _removeDomSelection() {
                for (const t of this.domDocuments) {
                    const e = t.getSelection();
                    if (e.rangeCount) {
                        const n = t.activeElement,
                            o = this.domConverter.mapDomToView(n);
                        n && o && e.removeAllRanges()
                    }
                }
            }
            _removeFakeSelection() {
                const t = this._fakeSelectionContainer;
                t && t.remove()
            }
            _updateFocus() {
                if (this.isFocused) {
                    const t = this.selection.editableElement;
                    t && this.domConverter.focus(t)
                }
            }
        }

        function fc(t, e, n) {
            const o = e instanceof Array ? e : e.childNodes,
                i = o[n];
            if (Fo(i)) return i.data = cc + i.data, i; {
                const i = t.createTextNode(cc);
                return Array.isArray(e) ? o.splice(n, 0, i) : Jo(e, n, i), i
            }
        }

        function kc(t, e) {
            return Io(t) && Io(e) && !Fo(t) && !Fo(e) && !Xo(t) && !Xo(e) && t.tagName.toLowerCase() === e.tagName.toLowerCase()
        }

        function bc(t, e) {
            return Io(t) && Io(e) && Fo(t) && Fo(e)
        }

        function wc(t, e, n) {
            return e === n || (Fo(e) && Fo(n) ? e.data === n.data : !(!t.isBlockFiller(e) || !t.isBlockFiller(n)))
        }

        function Ac(t, e) {
            const n = t.data;
            if (n == e) return;
            const o = l(n, e);
            for (const e of o) "insert" === e.type ? t.insertData(e.index, e.values.join("")) : t.deleteData(e.index, e.howMany)
        }
        const Cc = sc(Oo.document),
            _c = ic(Oo.document),
            vc = rc(Oo.document),
            yc = "data-ck-unsafe-attribute-",
            xc = "data-ck-unsafe-element";
        class Ec {
            constructor(t, {
                blockFillerMode: e,
                renderingMode: n = "editing"
            } = {}) {
                this._domToViewMapping = new WeakMap, this._viewToDomMapping = new WeakMap, this._fakeSelectionMapping = new WeakMap, this._rawContentElementMatcher = new ms, this._inlineObjectElementMatcher = new ms, this.document = t, this.renderingMode = n, this.blockFillerMode = e || ("editing" === n ? "br" : "nbsp"), this.preElements = ["pre"], this.blockElements = ["address", "article", "aside", "blockquote", "caption", "center", "dd", "details", "dir", "div", "dl", "dt", "fieldset", "figcaption", "figure", "footer", "form", "h1", "h2", "h3", "h4", "h5", "h6", "header", "hgroup", "legend", "li", "main", "menu", "nav", "ol", "p", "pre", "section", "summary", "table", "tbody", "td", "tfoot", "th", "thead", "tr", "ul"], this.inlineObjectElements = ["object", "iframe", "input", "button", "textarea", "select", "option", "video", "embed", "audio", "img", "canvas"], this.unsafeElements = ["script", "style"], this._domDocument = "editing" === this.renderingMode ? Oo.document : Oo.document.implementation.createHTMLDocument("")
            }
            bindFakeSelection(t, e) {
                this._fakeSelectionMapping.set(t, new Ea(e))
            }
            fakeSelectionToView(t) {
                return this._fakeSelectionMapping.get(t)
            }
            bindElements(t, e) {
                this._domToViewMapping.set(t, e), this._viewToDomMapping.set(e, t)
            }
            unbindDomElement(t) {
                const e = this._domToViewMapping.get(t);
                if (e) {
                    this._domToViewMapping.delete(t), this._viewToDomMapping.delete(e);
                    for (const e of Array.from(t.children)) this.unbindDomElement(e)
                }
            }
            bindDocumentFragments(t, e) {
                this._domToViewMapping.set(t, e), this._viewToDomMapping.set(e, t)
            }
            shouldRenderAttribute(t, e, n) {
                return "data" === this.renderingMode || !(t = t.toLowerCase()).startsWith("on") && (("srcdoc" !== t || !e.match(/\bon\S+\s*=|javascript:|<\s*\/*script/i)) && ("img" === n && ("src" === t || "srcset" === t) || ("source" === n && "srcset" === t || !e.match(/^\s*(javascript:|data:(image\/svg|text\/x?html))/i))))
            }
            setContentOf(t, e) {
                if ("data" === this.renderingMode) return void(t.innerHTML = e);
                const n = (new DOMParser).parseFromString(e, "text/html"),
                    o = n.createDocumentFragment(),
                    i = n.body.childNodes;
                for (; i.length > 0;) o.appendChild(i[0]);
                const r = n.createTreeWalker(o, NodeFilter.SHOW_ELEMENT),
                    s = [];
                let a;
                for (; a = r.nextNode();) s.push(a);
                for (const t of s) {
                    for (const e of t.getAttributeNames()) this.setDomElementAttribute(t, e, t.getAttribute(e));
                    const e = t.tagName.toLowerCase();
                    this._shouldRenameElement(e) && (Mc(e), t.replaceWith(this._createReplacementDomElement(e, t)))
                }
                for (; t.firstChild;) t.firstChild.remove();
                t.append(o)
            }
            viewToDom(t, e = {}) {
                if (t.is("$text")) {
                    const e = this._processDataFromViewText(t);
                    return this._domDocument.createTextNode(e)
                } {
                    if (this.mapViewToDom(t)) return this.mapViewToDom(t);
                    let n;
                    if (t.is("documentFragment")) n = this._domDocument.createDocumentFragment(), e.bind && this.bindDocumentFragments(n, t);
                    else {
                        if (t.is("uiElement")) return n = "$comment" === t.name ? this._domDocument.createComment(t.getCustomProperty("$rawContent")) : t.render(this._domDocument, this), e.bind && this.bindElements(n, t), n;
                        this._shouldRenameElement(t.name) ? (Mc(t.name), n = this._createReplacementDomElement(t.name)) : n = t.hasAttribute("xmlns") ? this._domDocument.createElementNS(t.getAttribute("xmlns"), t.name) : this._domDocument.createElement(t.name), t.is("rawElement") && t.render(n, this), e.bind && this.bindElements(n, t);
                        for (const e of t.getAttributeKeys()) this.setDomElementAttribute(n, e, t.getAttribute(e), t)
                    }
                    if (!1 !== e.withChildren)
                        for (const o of this.viewChildrenToDom(t, e)) n.appendChild(o);
                    return n
                }
            }
            setDomElementAttribute(t, e, n, o) {
                const i = this.shouldRenderAttribute(e, n, t.tagName.toLowerCase()) || o && o.shouldRenderUnsafeAttribute(e);
                i || C("domconverter-unsafe-attribute-detected", {
                        domElement: t,
                        key: e,
                        value: n
                    }),
                    function (t) {
                        try {
                            Oo.document.createAttribute(t)
                        } catch (t) {
                            return !1
                        }
                        return !0
                    }(e) ? (t.hasAttribute(e) && !i ? t.removeAttribute(e) : t.hasAttribute(yc + e) && i && t.removeAttribute(yc + e), t.setAttribute(i ? e : yc + e, n)) : C("domconverter-invalid-attribute-detected", {
                        domElement: t,
                        key: e,
                        value: n
                    })
            }
            removeDomElementAttribute(t, e) {
                e != xc && (t.removeAttribute(e), t.removeAttribute(yc + e))
            }* viewChildrenToDom(t, e = {}) {
                const n = t.getFillerOffset && t.getFillerOffset();
                let o = 0;
                for (const i of t.getChildren()) {
                    n === o && (yield this._getBlockFiller());
                    const t = i.is("element") && !!i.getCustomProperty("dataPipeline:transparentRendering") && !Ii(i.getAttributes());
                    t && "data" == this.renderingMode ? yield* this.viewChildrenToDom(i, e): (t && C("domconverter-transparent-rendering-unsupported-in-editing-pipeline", {
                        viewElement: i
                    }), yield this.viewToDom(i, e)), o++
                }
                n === o && (yield this._getBlockFiller())
            }
            viewRangeToDom(t) {
                const e = this.viewPositionToDom(t.start),
                    n = this.viewPositionToDom(t.end),
                    o = this._domDocument.createRange();
                return o.setStart(e.parent, e.offset), o.setEnd(n.parent, n.offset), o
            }
            viewPositionToDom(t) {
                const e = t.parent;
                if (e.is("$text")) {
                    const n = this.findCorrespondingDomText(e);
                    if (!n) return null;
                    let o = t.offset;
                    return lc(n) && (o += ac), {
                        parent: n,
                        offset: o
                    }
                } {
                    let n, o, i;
                    if (0 === t.offset) {
                        if (n = this.mapViewToDom(e), !n) return null;
                        i = n.childNodes[0]
                    } else {
                        const e = t.nodeBefore;
                        if (o = e.is("$text") ? this.findCorrespondingDomText(e) : this.mapViewToDom(e), !o) return null;
                        n = o.parentNode, i = o.nextSibling
                    }
                    if (Fo(i) && lc(i)) return {
                        parent: i,
                        offset: ac
                    };
                    return {
                        parent: n,
                        offset: o ? Qo(o) + 1 : 0
                    }
                }
            }
            domToView(t, e = {}) {
                const n = [],
                    o = this._domToView(t, e, n),
                    i = o.next().value;
                return i ? (o.next(), this._processDomInlineNodes(null, n, e), i.is("$text") && 0 == i.data.length ? null : i) : null
            }* domChildrenToView(t, e = {}, n = []) {
                for (let o = 0; o < t.childNodes.length; o++) {
                    const i = t.childNodes[o],
                        r = this._domToView(i, e, n),
                        s = r.next().value;
                    null !== s && (this._isBlockViewElement(s) && this._processDomInlineNodes(t, n, e), yield s, r.next())
                }
                this._processDomInlineNodes(t, n, e)
            }
            domSelectionToView(t) {
                if (1 === t.rangeCount) {
                    let e = t.getRangeAt(0).startContainer;
                    Fo(e) && (e = e.parentNode);
                    const n = this.fakeSelectionToView(e);
                    if (n) return n
                }
                const e = this.isDomSelectionBackward(t),
                    n = [];
                for (let e = 0; e < t.rangeCount; e++) {
                    const o = t.getRangeAt(e),
                        i = this.domRangeToView(o);
                    i && n.push(i)
                }
                return new Ea(n, {
                    backward: e
                })
            }
            domRangeToView(t) {
                const e = this.domPositionToView(t.startContainer, t.startOffset),
                    n = this.domPositionToView(t.endContainer, t.endOffset);
                return e && n ? new ya(e, n) : null
            }
            domPositionToView(t, e = 0) {
                if (this.isBlockFiller(t)) return this.domPositionToView(t.parentNode, Qo(t));
                const n = this.mapDomToView(t);
                if (n && (n.is("uiElement") || n.is("rawElement"))) return va._createBefore(n);
                if (Fo(t)) {
                    if (dc(t)) return this.domPositionToView(t.parentNode, Qo(t));
                    const n = this.findCorrespondingViewText(t);
                    let o = e;
                    return n ? (lc(t) && (o -= ac, o = o < 0 ? 0 : o), new va(n, o)) : null
                }
                if (0 === e) {
                    const e = this.mapDomToView(t);
                    if (e) return new va(e, 0)
                } else {
                    const n = t.childNodes[e - 1];
                    if (Fo(n) && dc(n) || n && this.isBlockFiller(n)) return this.domPositionToView(n.parentNode, Qo(n));
                    const o = Fo(n) ? this.findCorrespondingViewText(n) : this.mapDomToView(n);
                    if (o && o.parent) return new va(o.parent, o.index + 1)
                }
                return null
            }
            mapDomToView(t) {
                return this.getHostViewElement(t) || this._domToViewMapping.get(t)
            }
            findCorrespondingViewText(t) {
                if (dc(t)) return null;
                const e = this.getHostViewElement(t);
                if (e) return e;
                const n = t.previousSibling;
                if (n) {
                    if (!this.isElement(n)) return null;
                    const t = this.mapDomToView(n);
                    if (t) {
                        const e = t.nextSibling;
                        return e instanceof gs ? e : null
                    }
                } else {
                    const e = this.mapDomToView(t.parentNode);
                    if (e) {
                        const t = e.getChild(0);
                        return t instanceof gs ? t : null
                    }
                }
                return null
            }
            mapViewToDom(t) {
                return this._viewToDomMapping.get(t)
            }
            findCorrespondingDomText(t) {
                const e = t.previousSibling;
                return e && this.mapViewToDom(e) ? this.mapViewToDom(e).nextSibling : !e && t.parent && this.mapViewToDom(t.parent) ? this.mapViewToDom(t.parent).childNodes[0] : null
            }
            focus(t) {
                const e = this.mapViewToDom(t);
                if (e && e.ownerDocument.activeElement !== e) {
                    const {
                        scrollX: t,
                        scrollY: n
                    } = Oo.window, o = [];
                    Sc(e, (t => {
                        const {
                            scrollLeft: e,
                            scrollTop: n
                        } = t;
                        o.push([e, n])
                    })), e.focus(), Sc(e, (t => {
                        const [e, n] = o.shift();
                        t.scrollLeft = e, t.scrollTop = n
                    })), Oo.window.scrollTo(t, n)
                }
            }
            _clearDomSelection() {
                const t = this.mapViewToDom(this.document.selection.editableElement);
                if (!t) return;
                const e = t.ownerDocument.defaultView.getSelection(),
                    n = this.domSelectionToView(e);
                n && n.rangeCount > 0 && e.removeAllRanges()
            }
            isElement(t) {
                return t && t.nodeType == Node.ELEMENT_NODE
            }
            isDocumentFragment(t) {
                return t && t.nodeType == Node.DOCUMENT_FRAGMENT_NODE
            }
            isBlockFiller(t) {
                return "br" == this.blockFillerMode ? t.isEqualNode(Cc) : !("BR" !== t.tagName || !Ic(t, this.blockElements) || 1 !== t.parentNode.childNodes.length) || (t.isEqualNode(vc) || function (t, e) {
                    const n = t.isEqualNode(_c);
                    return n && Ic(t, e) && 1 === t.parentNode.childNodes.length
                }(t, this.blockElements))
            }
            isDomSelectionBackward(t) {
                if (t.isCollapsed) return !1;
                const e = this._domDocument.createRange();
                try {
                    e.setStart(t.anchorNode, t.anchorOffset), e.setEnd(t.focusNode, t.focusOffset)
                } catch (t) {
                    return !1
                }
                const n = e.collapsed;
                return e.detach(), n
            }
            getHostViewElement(t) {
                const e = function (t) {
                    const e = [];
                    let n = t;
                    for (; n && n.nodeType != Node.DOCUMENT_NODE;) e.unshift(n), n = n.parentNode;
                    return e
                }(t);
                for (e.pop(); e.length;) {
                    const t = e.pop(),
                        n = this._domToViewMapping.get(t);
                    if (n && (n.is("uiElement") || n.is("rawElement"))) return n
                }
                return null
            }
            isDomSelectionCorrect(t) {
                return this._isDomSelectionPositionCorrect(t.anchorNode, t.anchorOffset) && this._isDomSelectionPositionCorrect(t.focusNode, t.focusOffset)
            }
            registerRawContentMatcher(t) {
                this._rawContentElementMatcher.add(t)
            }
            registerInlineObjectMatcher(t) {
                this._inlineObjectElementMatcher.add(t)
            }
            _getBlockFiller() {
                switch (this.blockFillerMode) {
                    case "nbsp":
                        return ic(this._domDocument);
                    case "markedNbsp":
                        return rc(this._domDocument);
                    case "br":
                        return sc(this._domDocument)
                }
            }
            _isDomSelectionPositionCorrect(t, e) {
                if (Fo(t) && lc(t) && e < ac) return !1;
                if (this.isElement(t) && lc(t.childNodes[e])) return !1;
                const n = this.mapDomToView(t);
                return !n || !n.is("uiElement") && !n.is("rawElement")
            }* _domToView(t, e, n) {
                if (this.isBlockFiller(t)) return null;
                const o = this.getHostViewElement(t);
                if (o) return o;
                if (Xo(t) && e.skipComments) return null;
                if (Fo(t)) {
                    if (dc(t)) return null; {
                        const e = t.data;
                        if ("" === e) return null;
                        const o = new gs(this.document, e);
                        return n.push(o), o
                    }
                } {
                    let o = this.mapDomToView(t);
                    if (o) return this._isInlineObjectElement(o) && n.push(o), o;
                    if (this.isDocumentFragment(t)) o = new Wa(this.document), e.bind && this.bindDocumentFragments(t, o);
                    else {
                        o = this._createViewElement(t, e), e.bind && this.bindElements(t, o);
                        const i = t.attributes;
                        if (i)
                            for (let t = i.length, e = 0; e < t; e++) o._setAttribute(i[e].name, i[e].value);
                        if (this._isViewElementWithRawContent(o, e)) return o._setCustomProperty("$rawContent", t.innerHTML), this._isBlockViewElement(o) || n.push(o), o;
                        if (Xo(t)) return o._setCustomProperty("$rawContent", t.data), o
                    }
                    yield o;
                    const i = [];
                    if (!1 !== e.withChildren)
                        for (const n of this.domChildrenToView(t, e, i)) o._appendChild(n);
                    if (this._isInlineObjectElement(o)) n.push(o);
                    else
                        for (const t of i) n.push(t)
                }
            }
            _processDomInlineNodes(t, e, n) {
                if (!e.length) return;
                if (t && !this.isDocumentFragment(t) && !this._isBlockDomElement(t)) return;
                let o = !1;
                for (let t = 0; t < e.length; t++) {
                    const i = e[t];
                    if (!i.is("$text")) {
                        o = !1;
                        continue
                    }
                    let r, s = !1;
                    if (Dc(i, this.preElements)) r = hc(i.data);
                    else {
                        r = i.data.replace(/[ \n\t\r]{1,}/g, " "), s = /[^\S\u00A0]/.test(r.charAt(r.length - 1));
                        const a = t > 0 ? e[t - 1] : null,
                            c = t + 1 < e.length ? e[t + 1] : null,
                            l = !a || a.is("element") && "br" == a.name || o,
                            d = !c && !lc(i.data);
                        !1 !== n.withChildren && (l && (r = r.replace(/^ /, "")), d && (r = r.replace(/ $/, ""))), r = hc(r), r = r.replace(/ \u00A0/g, "  ");
                        const h = c && c.is("element") && "br" != c.name,
                            u = c && c.is("$text") && " " == c.data.charAt(0);
                        (/[ \u00A0]\u00A0$/.test(r) || !c || h || u) && (r = r.replace(/\u00A0$/, " ")), (l || a && a.is("element") && "br" != a.name) && (r = r.replace(/^\u00A0/, " "))
                    }
                    0 == r.length && i.parent ? (i._remove(), e.splice(t, 1), t--) : (i._data = r, o = s)
                }
                e.length = 0
            }
            _processDataFromViewText(t) {
                let e = t.data;
                if (t.getAncestors().some((t => this.preElements.includes(t.name)))) return e;
                if (" " == e.charAt(0)) {
                    const n = this._getTouchingInlineViewNode(t, !1);
                    !(n && n.is("$textProxy") && this._nodeEndsWithSpace(n)) && n || (e = " " + e.substr(1))
                }
                if (" " == e.charAt(e.length - 1)) {
                    const n = this._getTouchingInlineViewNode(t, !0),
                        o = n && n.is("$textProxy") && " " == n.data.charAt(0);
                    " " != e.charAt(e.length - 2) && n && !o || (e = e.substr(0, e.length - 1) + " ")
                }
                return e.replace(/ {2}/g, "  ")
            }
            _nodeEndsWithSpace(t) {
                if (t.getAncestors().some((t => this.preElements.includes(t.name)))) return !1;
                const e = this._processDataFromViewText(t);
                return " " == e.charAt(e.length - 1)
            }
            _getTouchingInlineViewNode(t, e) {
                const n = new _a({
                    startPosition: e ? va._createAfter(t) : va._createBefore(t),
                    direction: e ? "forward" : "backward"
                });
                for (const t of n) {
                    if (t.item.is("element", "br")) return null;
                    if (this._isInlineObjectElement(t.item)) return t.item;
                    if (t.item.is("containerElement")) return null;
                    if (t.item.is("$textProxy")) return t.item
                }
                return null
            }
            _isBlockDomElement(t) {
                return this.isElement(t) && this.blockElements.includes(t.tagName.toLowerCase())
            }
            _isBlockViewElement(t) {
                return t.is("element") && this.blockElements.includes(t.name)
            }
            _isInlineObjectElement(t) {
                return !!t.is("element") && ("br" == t.name || this.inlineObjectElements.includes(t.name) || !!this._inlineObjectElementMatcher.match(t))
            }
            _createViewElement(t, e) {
                if (Xo(t)) return new Va(this.document, "$comment");
                const n = e.keepOriginalCase ? t.tagName : t.tagName.toLowerCase();
                return new ma(this.document, n)
            }
            _isViewElementWithRawContent(t, e) {
                return !1 !== e.withChildren && t.is("element") && !!this._rawContentElementMatcher.match(t)
            }
            _shouldRenameElement(t) {
                const e = t.toLowerCase();
                return "editing" === this.renderingMode && this.unsafeElements.includes(e)
            }
            _createReplacementDomElement(t, e) {
                const n = this._domDocument.createElement("span");
                if (n.setAttribute(xc, t), e) {
                    for (; e.firstChild;) n.appendChild(e.firstChild);
                    for (const t of e.getAttributeNames()) n.setAttribute(t, e.getAttribute(t))
                }
                return n
            }
        }

        function Dc(t, e) {
            return t.getAncestors().some((t => t.is("element") && e.includes(t.name)))
        }

        function Sc(t, e) {
            let n = t;
            for (; n;) e(n), n = n.parentElement
        }

        function Ic(t, e) {
            const n = t.parentNode;
            return !!n && !!n.tagName && e.includes(n.tagName.toLowerCase())
        }

        function Mc(t) {
            "script" === t && C("domconverter-unsafe-script-element-detected"), "style" === t && C("domconverter-unsafe-style-element-detected")
        }
        class Tc extends(Bo()) {
            constructor(t) {
                super(), this._isEnabled = !1, this.view = t, this.document = t.document
            }
            get isEnabled() {
                return this._isEnabled
            }
            enable() {
                this._isEnabled = !0
            }
            disable() {
                this._isEnabled = !1
            }
            destroy() {
                this.disable(), this.stopListening()
            }
            checkShouldIgnoreEventFromTarget(t) {
                return t && 3 === t.nodeType && (t = t.parentNode), !(!t || 1 !== t.nodeType) && t.matches("[data-cke-ignore-events], [data-cke-ignore-events] *")
            }
        }
        const Bc = aa((function (t, e) {
            Te(e, mn(e), t)
        }));
        class Nc {
            constructor(t, e, n) {
                this.view = t, this.document = t.document, this.domEvent = e, this.domTarget = e.target, Bc(this, n)
            }
            get target() {
                return this.view.domConverter.mapDomToView(this.domTarget)
            }
            preventDefault() {
                this.domEvent.preventDefault()
            }
            stopPropagation() {
                this.domEvent.stopPropagation()
            }
        }
        class Pc extends Tc {
            constructor() {
                super(...arguments), this.useCapture = !1
            }
            observe(t) {
                ("string" == typeof this.domEventType ? [this.domEventType] : this.domEventType).forEach((e => {
                    this.listenTo(t, e, ((t, e) => {
                        this.isEnabled && !this.checkShouldIgnoreEventFromTarget(e.target) && this.onDomEvent(e)
                    }), {
                        useCapture: this.useCapture
                    })
                }))
            }
            stopObserving(t) {
                this.stopListening(t)
            }
            fire(t, e, n) {
                this.isEnabled && this.document.fire(t, new Nc(this.view, e, n))
            }
        }
        class zc extends Pc {
            constructor() {
                super(...arguments), this.domEventType = ["keydown", "keyup"]
            }
            onDomEvent(t) {
                const e = {
                    keyCode: t.keyCode,
                    altKey: t.altKey,
                    ctrlKey: t.ctrlKey,
                    shiftKey: t.shiftKey,
                    metaKey: t.metaKey,
                    get keystroke() {
                        return wi(this)
                    }
                };
                this.fire(t.type, t, e)
            }
        }
        const Oc = function () {
            return rt.Date.now()
        };
        var Lc = /\s/;
        const jc = function (t) {
            for (var e = t.length; e-- && Lc.test(t.charAt(e)););
            return e
        };
        var Rc = /^\s+/;
        const Fc = function (t) {
            return t ? t.slice(0, jc(t) + 1).replace(Rc, "") : t
        };
        var Vc = /^[-+]0x[0-9a-f]+$/i,
            Uc = /^0b[01]+$/i,
            Hc = /^0o[0-7]+$/i,
            Gc = parseInt;
        const qc = function (t) {
            if ("number" == typeof t) return t;
            if (bs(t)) return NaN;
            if (F(t)) {
                var e = "function" == typeof t.valueOf ? t.valueOf() : t;
                t = F(e) ? e + "" : e
            }
            if ("string" != typeof t) return 0 === t ? t : +t;
            t = Fc(t);
            var n = Uc.test(t);
            return n || Hc.test(t) ? Gc(t.slice(2), n ? 2 : 8) : Vc.test(t) ? NaN : +t
        };
        var Wc = Math.max,
            Kc = Math.min;
        const Yc = function (t, e, n) {
            var o, i, r, s, a, c, l = 0,
                d = !1,
                h = !1,
                u = !0;
            if ("function" != typeof t) throw new TypeError("Expected a function");

            function g(e) {
                var n = o,
                    r = i;
                return o = i = void 0, l = e, s = t.apply(r, n)
            }

            function p(t) {
                var n = t - c;
                return void 0 === c || n >= e || n < 0 || h && t - l >= r
            }

            function m() {
                var t = Oc();
                if (p(t)) return f(t);
                a = setTimeout(m, function (t) {
                    var n = e - (t - c);
                    return h ? Kc(n, r - (t - l)) : n
                }(t))
            }

            function f(t) {
                return a = void 0, u && o ? g(t) : (o = i = void 0, s)
            }

            function k() {
                var t = Oc(),
                    n = p(t);
                if (o = arguments, i = this, c = t, n) {
                    if (void 0 === a) return function (t) {
                        return l = t, a = setTimeout(m, e), d ? g(t) : s
                    }(c);
                    if (h) return clearTimeout(a), a = setTimeout(m, e), g(c)
                }
                return void 0 === a && (a = setTimeout(m, e)), s
            }
            return e = qc(e) || 0, F(n) && (d = !!n.leading, r = (h = "maxWait" in n) ? Wc(qc(n.maxWait) || 0, e) : r, u = "trailing" in n ? !!n.trailing : u), k.cancel = function () {
                void 0 !== a && clearTimeout(a), l = 0, o = c = i = a = void 0
            }, k.flush = function () {
                return void 0 === a ? s : f(Oc())
            }, k
        };
        class $c extends Tc {
            constructor(t) {
                super(t), this._fireSelectionChangeDoneDebounced = Yc((t => {
                    this.document.fire("selectionChangeDone", t)
                }), 200)
            }
            observe() {
                const t = this.document;
                t.on("arrowKey", ((e, n) => {
                    t.selection.isFake && this.isEnabled && n.preventDefault()
                }), {
                    context: "$capture"
                }), t.on("arrowKey", ((e, n) => {
                    t.selection.isFake && this.isEnabled && this._handleSelectionMove(n.keyCode)
                }), {
                    priority: "lowest"
                })
            }
            stopObserving() {}
            destroy() {
                super.destroy(), this._fireSelectionChangeDoneDebounced.cancel()
            }
            _handleSelectionMove(t) {
                const e = this.document.selection,
                    n = new Ea(e.getRanges(), {
                        backward: e.isBackward,
                        fake: !1
                    });
                t != ki.arrowleft && t != ki.arrowup || n.setTo(n.getFirstPosition()), t != ki.arrowright && t != ki.arrowdown || n.setTo(n.getLastPosition());
                const o = {
                    oldSelection: e,
                    newSelection: n,
                    domSelection: null
                };
                this.document.fire("selectionChange", o), this._fireSelectionChangeDoneDebounced(o)
            }
        }
        const Zc = function (t) {
            return this.__data__.set(t, "__lodash_hash_undefined__"), this
        };
        const Qc = function (t) {
            return this.__data__.has(t)
        };

        function Jc(t) {
            var e = -1,
                n = null == t ? 0 : t.length;
            for (this.__data__ = new _e; ++e < n;) this.add(t[e])
        }
        Jc.prototype.add = Jc.prototype.push = Zc, Jc.prototype.has = Qc;
        const Xc = Jc;
        const tl = function (t, e) {
            for (var n = -1, o = null == t ? 0 : t.length; ++n < o;)
                if (e(t[n], n, t)) return !0;
            return !1
        };
        const el = function (t, e) {
            return t.has(e)
        };
        const nl = function (t, e, n, o, i, r) {
            var s = 1 & n,
                a = t.length,
                c = e.length;
            if (a != c && !(s && c > a)) return !1;
            var l = r.get(t),
                d = r.get(e);
            if (l && d) return l == e && d == t;
            var h = -1,
                u = !0,
                g = 2 & n ? new Xc : void 0;
            for (r.set(t, e), r.set(e, t); ++h < a;) {
                var p = t[h],
                    m = e[h];
                if (o) var f = s ? o(m, p, h, e, t, r) : o(p, m, h, t, e, r);
                if (void 0 !== f) {
                    if (f) continue;
                    u = !1;
                    break
                }
                if (g) {
                    if (!tl(e, (function (t, e) {
                            if (!el(g, e) && (p === t || i(p, t, n, o, r))) return g.push(e)
                        }))) {
                        u = !1;
                        break
                    }
                } else if (p !== m && !i(p, m, n, o, r)) {
                    u = !1;
                    break
                }
            }
            return r.delete(t), r.delete(e), u
        };
        const ol = function (t) {
            var e = -1,
                n = Array(t.size);
            return t.forEach((function (t, o) {
                n[++e] = [o, t]
            })), n
        };
        const il = function (t) {
            var e = -1,
                n = Array(t.size);
            return t.forEach((function (t) {
                n[++e] = t
            })), n
        };
        var rl = st ? st.prototype : void 0,
            sl = rl ? rl.valueOf : void 0;
        const al = function (t, e, n, o, i, r, s) {
            switch (n) {
                case "[object DataView]":
                    if (t.byteLength != e.byteLength || t.byteOffset != e.byteOffset) return !1;
                    t = t.buffer, e = e.buffer;
                case "[object ArrayBuffer]":
                    return !(t.byteLength != e.byteLength || !r(new Xn(t), new Xn(e)));
                case "[object Boolean]":
                case "[object Date]":
                case "[object Number]":
                    return It(+t, +e);
                case "[object Error]":
                    return t.name == e.name && t.message == e.message;
                case "[object RegExp]":
                case "[object String]":
                    return t == e + "";
                case "[object Map]":
                    var a = ol;
                case "[object Set]":
                    var c = 1 & o;
                    if (a || (a = il), t.size != e.size && !c) return !1;
                    var l = s.get(t);
                    if (l) return l == e;
                    o |= 2, s.set(t, e);
                    var d = nl(a(t), a(e), o, i, r, s);
                    return s.delete(t), d;
                case "[object Symbol]":
                    if (sl) return sl.call(t) == sl.call(e)
            }
            return !1
        };
        var cl = Object.prototype.hasOwnProperty;
        const ll = function (t, e, n, o, i, r) {
            var s = 1 & n,
                a = Nn(t),
                c = a.length;
            if (c != Nn(e).length && !s) return !1;
            for (var l = c; l--;) {
                var d = a[l];
                if (!(s ? d in e : cl.call(e, d))) return !1
            }
            var h = r.get(t),
                u = r.get(e);
            if (h && u) return h == e && u == t;
            var g = !0;
            r.set(t, e), r.set(e, t);
            for (var p = s; ++l < c;) {
                var m = t[d = a[l]],
                    f = e[d];
                if (o) var k = s ? o(f, m, d, e, t, r) : o(m, f, d, t, e, r);
                if (!(void 0 === k ? m === f || i(m, f, n, o, r) : k)) {
                    g = !1;
                    break
                }
                p || (p = "constructor" == d)
            }
            if (g && !p) {
                var b = t.constructor,
                    w = e.constructor;
                b == w || !("constructor" in t) || !("constructor" in e) || "function" == typeof b && b instanceof b && "function" == typeof w && w instanceof w || (g = !1)
            }
            return r.delete(t), r.delete(e), g
        };
        var dl = "[object Arguments]",
            hl = "[object Array]",
            ul = "[object Object]",
            gl = Object.prototype.hasOwnProperty;
        const pl = function (t, e, n, o, i, r) {
            var s = ft(t),
                a = ft(e),
                c = s ? hl : Zn(t),
                l = a ? hl : Zn(e),
                d = (c = c == dl ? ul : c) == ul,
                h = (l = l == dl ? ul : l) == ul,
                u = c == l;
            if (u && Ue(t)) {
                if (!Ue(e)) return !1;
                s = !0, d = !1
            }
            if (u && !d) return r || (r = new xe), s || tn(t) ? nl(t, e, n, o, i, r) : al(t, e, c, n, o, i, r);
            if (!(1 & n)) {
                var g = d && gl.call(t, "__wrapped__"),
                    p = h && gl.call(e, "__wrapped__");
                if (g || p) {
                    var m = g ? t.value() : t,
                        f = p ? e.value() : e;
                    return r || (r = new xe), i(m, f, n, o, r)
                }
            }
            return !!u && (r || (r = new xe), ll(t, e, n, o, i, r))
        };
        const ml = function t(e, n, o, i, r) {
            return e === n || (null == e || null == n || !kt(e) && !kt(n) ? e != e && n != n : pl(e, n, o, i, t, r))
        };
        const fl = function (t, e, n) {
            var o = (n = "function" == typeof n ? n : void 0) ? n(t, e) : void 0;
            return void 0 === o ? ml(t, e, void 0, n) : !!o
        };
        class kl extends Tc {
            constructor(t) {
                super(t), this._config = {
                    childList: !0,
                    characterData: !0,
                    subtree: !0
                }, this.domConverter = t.domConverter, this.renderer = t._renderer, this._domElements = new Set, this._mutationObserver = new window.MutationObserver(this._onMutations.bind(this))
            }
            flush() {
                this._onMutations(this._mutationObserver.takeRecords())
            }
            observe(t) {
                this._domElements.add(t), this.isEnabled && this._mutationObserver.observe(t, this._config)
            }
            stopObserving(t) {
                if (this._domElements.delete(t), this.isEnabled) {
                    this._mutationObserver.disconnect();
                    for (const t of this._domElements) this._mutationObserver.observe(t, this._config)
                }
            }
            enable() {
                super.enable();
                for (const t of this._domElements) this._mutationObserver.observe(t, this._config)
            }
            disable() {
                super.disable(), this._mutationObserver.disconnect()
            }
            destroy() {
                super.destroy(), this._mutationObserver.disconnect()
            }
            _onMutations(t) {
                if (0 === t.length) return;
                const e = this.domConverter,
                    n = new Set,
                    o = new Set;
                for (const n of t) {
                    const t = e.mapDomToView(n.target);
                    t && (t.is("uiElement") || t.is("rawElement") || "childList" !== n.type || this._isBogusBrMutation(n) || o.add(t))
                }
                for (const i of t) {
                    const t = e.mapDomToView(i.target);
                    if ((!t || !t.is("uiElement") && !t.is("rawElement")) && "characterData" === i.type) {
                        const t = e.findCorrespondingViewText(i.target);
                        t && !o.has(t.parent) ? n.add(t) : !t && lc(i.target) && o.add(e.mapDomToView(i.target.parentNode))
                    }
                }
                let i = !1;
                for (const t of n) i = !0, this.renderer.markToSync("text", t);
                for (const t of o) {
                    const n = e.mapViewToDom(t),
                        o = Array.from(t.getChildren()),
                        r = Array.from(e.domChildrenToView(n, {
                            withChildren: !1
                        }));
                    fl(o, r, bl) || (i = !0, this.renderer.markToSync("children", t))
                }
                i && this.view.forceRender()
            }
            _isBogusBrMutation(t) {
                let e = null;
                return null === t.nextSibling && 0 === t.removedNodes.length && 1 == t.addedNodes.length && (e = this.domConverter.domToView(t.addedNodes[0], {
                    withChildren: !1
                })), e && e.is("element", "br")
            }
        }

        function bl(t, e) {
            if (!Array.isArray(t)) return t === e || !(!t.is("$text") || !e.is("$text")) && t.data === e.data
        }
        class wl extends Pc {
            constructor(t) {
                super(t), this._isFocusChanging = !1, this.domEventType = ["focus", "blur"], this.useCapture = !0;
                const e = this.document;
                e.on("focus", (() => {
                    this._isFocusChanging = !0, this._renderTimeoutId = setTimeout((() => {
                        this.flush(), t.change((() => {}))
                    }), 50)
                })), e.on("blur", ((n, o) => {
                    const i = e.selection.editableElement;
                    null !== i && i !== o.target || (e.isFocused = !1, this._isFocusChanging = !1, t.change((() => {})))
                }))
            }
            flush() {
                this._isFocusChanging && (this._isFocusChanging = !1, this.document.isFocused = !0)
            }
            onDomEvent(t) {
                this.fire(t.type, t)
            }
            destroy() {
                this._renderTimeoutId && clearTimeout(this._renderTimeoutId), super.destroy()
            }
        }
        class Al extends Tc {
            constructor(t) {
                super(t), this.mutationObserver = t.getObserver(kl), this.focusObserver = t.getObserver(wl), this.selection = this.document.selection, this.domConverter = t.domConverter, this._documents = new WeakSet, this._fireSelectionChangeDoneDebounced = Yc((t => {
                    this.document.fire("selectionChangeDone", t)
                }), 200), this._clearInfiniteLoopInterval = setInterval((() => this._clearInfiniteLoop()), 1e3), this._documentIsSelectingInactivityTimeoutDebounced = Yc((() => this.document.isSelecting = !1), 5e3), this._loopbackCounter = 0
            }
            observe(t) {
                const e = t.ownerDocument,
                    n = () => {
                        this.document.isSelecting && (this._handleSelectionChange(null, e), this.document.isSelecting = !1, this._documentIsSelectingInactivityTimeoutDebounced.cancel())
                    };
                this.listenTo(t, "selectstart", (() => {
                    this.document.isSelecting = !0, this._documentIsSelectingInactivityTimeoutDebounced()
                }), {
                    priority: "highest"
                }), this.listenTo(t, "keydown", n, {
                    priority: "highest",
                    useCapture: !0
                }), this.listenTo(t, "keyup", n, {
                    priority: "highest",
                    useCapture: !0
                }), this._documents.has(e) || (this.listenTo(e, "mouseup", n, {
                    priority: "highest",
                    useCapture: !0
                }), this.listenTo(e, "selectionchange", ((t, n) => {
                    this.document.isComposing && !a.isAndroid || (this._handleSelectionChange(n, e), this._documentIsSelectingInactivityTimeoutDebounced())
                })), this._documents.add(e))
            }
            stopObserving(t) {
                this.stopListening(t)
            }
            destroy() {
                super.destroy(), clearInterval(this._clearInfiniteLoopInterval), this._fireSelectionChangeDoneDebounced.cancel(), this._documentIsSelectingInactivityTimeoutDebounced.cancel()
            }
            _reportInfiniteLoop() {}
            _handleSelectionChange(t, e) {
                if (!this.isEnabled) return;
                const n = e.defaultView.getSelection();
                if (this.checkShouldIgnoreEventFromTarget(n.anchorNode)) return;
                this.mutationObserver.flush();
                const o = this.domConverter.domSelectionToView(n);
                if (0 != o.rangeCount) {
                    if (this.view.hasDomSelection = !0, this.focusObserver.flush(), !this.selection.isEqual(o) || !this.domConverter.isDomSelectionCorrect(n))
                        if (++this._loopbackCounter > 60) this._reportInfiniteLoop();
                        else if (this.selection.isSimilar(o)) this.view.forceRender();
                    else {
                        const t = {
                            oldSelection: this.selection,
                            newSelection: o,
                            domSelection: n
                        };
                        this.document.fire("selectionChange", t), this._fireSelectionChangeDoneDebounced(t)
                    }
                } else this.view.hasDomSelection = !1
            }
            _clearInfiniteLoop() {
                this._loopbackCounter = 0
            }
        }
        class Cl extends Pc {
            constructor(t) {
                super(t), this.domEventType = ["compositionstart", "compositionupdate", "compositionend"];
                const e = this.document;
                e.on("compositionstart", (() => {
                    e.isComposing = !0
                }), {
                    priority: "low"
                }), e.on("compositionend", (() => {
                    e.isComposing = !1
                }), {
                    priority: "low"
                })
            }
            onDomEvent(t) {
                this.fire(t.type, t, {
                    data: t.data
                })
            }
        }
        class _l {
            constructor(t, e = {}) {
                this._files = e.cacheFiles ? vl(t) : null, this._native = t
            }
            get files() {
                return this._files || (this._files = vl(this._native)), this._files
            }
            get types() {
                return this._native.types
            }
            getData(t) {
                return this._native.getData(t)
            }
            setData(t, e) {
                this._native.setData(t, e)
            }
            set effectAllowed(t) {
                this._native.effectAllowed = t
            }
            get effectAllowed() {
                return this._native.effectAllowed
            }
            set dropEffect(t) {
                this._native.dropEffect = t
            }
            get dropEffect() {
                return this._native.dropEffect
            }
            setDragImage(t, e, n) {
                this._native.setDragImage(t, e, n)
            }
            get isCanceled() {
                return "none" == this._native.dropEffect || !!this._native.mozUserCancelled
            }
        }

        function vl(t) {
            const e = Array.from(t.files || []),
                n = Array.from(t.items || []);
            return e.length ? e : n.filter((t => "file" === t.kind)).map((t => t.getAsFile()))
        }
        class yl extends Pc {
            constructor() {
                super(...arguments), this.domEventType = "beforeinput"
            }
            onDomEvent(t) {
                const e = t.getTargetRanges(),
                    n = this.view,
                    o = n.document;
                let i = null,
                    r = null,
                    s = [];
                if (t.dataTransfer && (i = new _l(t.dataTransfer)), null !== t.data ? r = t.data : i && (r = i.getData("text/plain")), o.selection.isFake) s = Array.from(o.selection.getRanges());
                else if (e.length) s = e.map((t => {
                    const e = n.domConverter.domPositionToView(t.startContainer, t.startOffset),
                        o = n.domConverter.domPositionToView(t.endContainer, t.endOffset);
                    return e ? n.createRange(e, o) : o ? n.createRange(o) : void 0
                })).filter((t => !!t));
                else if (a.isAndroid) {
                    const e = t.target.ownerDocument.defaultView.getSelection();
                    s = Array.from(n.domConverter.domSelectionToView(e).getRanges())
                }
                if (a.isAndroid && "insertCompositionText" == t.inputType && r && r.endsWith("\n")) this.fire(t.type, t, {
                    inputType: "insertParagraph",
                    targetRanges: [n.createRange(s[0].end)]
                });
                else if ("insertText" == t.inputType && r && r.includes("\n")) {
                    const e = r.split(/\n{1,2}/g);
                    let n = s;
                    for (let r = 0; r < e.length; r++) {
                        const s = e[r];
                        "" != s && (this.fire(t.type, t, {
                            data: s,
                            dataTransfer: i,
                            targetRanges: n,
                            inputType: t.inputType,
                            isComposing: t.isComposing
                        }), n = [o.selection.getFirstRange()]), r + 1 < e.length && (this.fire(t.type, t, {
                            inputType: "insertParagraph",
                            targetRanges: n
                        }), n = [o.selection.getFirstRange()])
                    }
                } else this.fire(t.type, t, {
                    data: r,
                    dataTransfer: i,
                    targetRanges: s,
                    inputType: t.inputType,
                    isComposing: t.isComposing
                })
            }
        }
        class xl extends Tc {
            constructor(t) {
                super(t), this.document.on("keydown", ((t, e) => {
                    if (this.isEnabled && ((n = e.keyCode) == ki.arrowright || n == ki.arrowleft || n == ki.arrowup || n == ki.arrowdown)) {
                        const n = new Sa(this.document, "arrowKey", this.document.selection.getFirstRange());
                        this.document.fire(n, e), n.stop.called && t.stop()
                    }
                    var n
                }))
            }
            observe() {}
            stopObserving() {}
        }
        class El extends Tc {
            constructor(t) {
                super(t);
                const e = this.document;
                e.on("keydown", ((t, n) => {
                    if (!this.isEnabled || n.keyCode != ki.tab || n.ctrlKey) return;
                    const o = new Sa(e, "tab", e.selection.getFirstRange());
                    e.fire(o, n), o.stop.called && t.stop()
                }))
            }
            observe() {}
            stopObserving() {}
        }
        const Dl = function (t) {
            return vo(t, 5)
        };
        class Sl extends(K()) {
            constructor(t) {
                super(), this.domRoots = new Map, this._initialDomRootAttributes = new WeakMap, this._observers = new Map, this._ongoingChange = !1, this._postFixersInProgress = !1, this._renderingDisabled = !1, this._hasChangedSinceTheLastRendering = !1, this.document = new za(t), this.domConverter = new Ec(this.document), this.set("isRenderingInProgress", !1), this.set("hasDomSelection", !1), this._renderer = new mc(this.domConverter, this.document.selection), this._renderer.bind("isFocused", "isSelecting", "isComposing").to(this.document, "isFocused", "isSelecting", "isComposing"), this._writer = new Ka(this.document), this.addObserver(kl), this.addObserver(wl), this.addObserver(Al), this.addObserver(zc), this.addObserver($c), this.addObserver(Cl), this.addObserver(xl), this.addObserver(yl), this.addObserver(El), this.document.on("arrowKey", uc, {
                    priority: "low"
                }), Ua(this), this.on("render", (() => {
                    this._render(), this.document.fire("layoutChanged"), this._hasChangedSinceTheLastRendering = !1
                })), this.listenTo(this.document.selection, "change", (() => {
                    this._hasChangedSinceTheLastRendering = !0
                })), this.listenTo(this.document, "change:isFocused", (() => {
                    this._hasChangedSinceTheLastRendering = !0
                })), a.isiOS && this.listenTo(this.document, "blur", ((t, e) => {
                    this.domConverter.mapDomToView(e.domEvent.relatedTarget) || this.domConverter._clearDomSelection()
                }))
            }
            attachDomRoot(t, e = "main") {
                const n = this.document.getRoot(e);
                n._name = t.tagName.toLowerCase();
                const o = {};
                for (const {
                        name: e,
                        value: i
                    } of Array.from(t.attributes)) o[e] = i, "class" === e ? this._writer.addClass(i.split(" "), n) : this._writer.setAttribute(e, i, n);
                this._initialDomRootAttributes.set(t, o);
                const i = () => {
                    this._writer.setAttribute("contenteditable", (!n.isReadOnly).toString(), n), n.isReadOnly ? this._writer.addClass("ck-read-only", n) : this._writer.removeClass("ck-read-only", n)
                };
                i(), this.domRoots.set(e, t), this.domConverter.bindElements(t, n), this._renderer.markToSync("children", n), this._renderer.markToSync("attributes", n), this._renderer.domDocuments.add(t.ownerDocument), n.on("change:children", ((t, e) => this._renderer.markToSync("children", e))), n.on("change:attributes", ((t, e) => this._renderer.markToSync("attributes", e))), n.on("change:text", ((t, e) => this._renderer.markToSync("text", e))), n.on("change:isReadOnly", (() => this.change(i))), n.on("change", (() => {
                    this._hasChangedSinceTheLastRendering = !0
                }));
                for (const n of this._observers.values()) n.observe(t, e)
            }
            detachDomRoot(t) {
                const e = this.domRoots.get(t);
                Array.from(e.attributes).forEach((({
                    name: t
                }) => e.removeAttribute(t)));
                const n = this._initialDomRootAttributes.get(e);
                for (const t in n) e.setAttribute(t, n[t]);
                this.domRoots.delete(t), this.domConverter.unbindDomElement(e);
                for (const t of this._observers.values()) t.stopObserving(e)
            }
            getDomRoot(t = "main") {
                return this.domRoots.get(t)
            }
            addObserver(t) {
                let e = this._observers.get(t);
                if (e) return e;
                e = new t(this), this._observers.set(t, e);
                for (const [t, n] of this.domRoots) e.observe(n, t);
                return e.enable(), e
            }
            getObserver(t) {
                return this._observers.get(t)
            }
            disableObservers() {
                for (const t of this._observers.values()) t.disable()
            }
            enableObservers() {
                for (const t of this._observers.values()) t.enable()
            }
            scrollToTheSelection({
                alignToTop: t,
                forceScroll: e,
                viewportOffset: n = 20,
                ancestorOffset: o = 20
            } = {}) {
                const i = this.document.selection.getFirstRange();
                if (!i) return;
                const r = Dl({
                    alignToTop: t,
                    forceScroll: e,
                    viewportOffset: n,
                    ancestorOffset: o
                });
                "number" == typeof n && (n = {
                    top: n,
                    bottom: n,
                    left: n,
                    right: n
                });
                const s = {
                    target: this.domConverter.viewRangeToDom(i),
                    viewportOffset: n,
                    ancestorOffset: o,
                    alignToTop: t,
                    forceScroll: e
                };
                this.fire("scrollToTheSelection", s, r),
                    function ({
                        target: t,
                        viewportOffset: e = 0,
                        ancestorOffset: n = 0,
                        alignToTop: o,
                        forceScroll: i
                    }) {
                        const r = ui(t);
                        let s = r,
                            a = null;
                        for (e = function (t) {
                                return "number" == typeof t ? {
                                    top: t,
                                    bottom: t,
                                    left: t,
                                    right: t
                                } : t
                            }(e); s;) {
                            let c;
                            c = gi(s == r ? t : a), ai({
                                parent: c,
                                getRect: () => pi(t, s),
                                alignToTop: o,
                                ancestorOffset: n,
                                forceScroll: i
                            });
                            const l = pi(t, s);
                            if (si({
                                    window: s,
                                    rect: l,
                                    viewportOffset: e,
                                    alignToTop: o,
                                    forceScroll: i
                                }), s.parent != s) {
                                if (a = s.frameElement, s = s.parent, !a) return
                            } else s = null
                        }
                    }(s)
            }
            focus() {
                if (!this.document.isFocused) {
                    const t = this.document.selection.editableElement;
                    t && (this.domConverter.focus(t), this.forceRender())
                }
            }
            change(t) {
                if (this.isRenderingInProgress || this._postFixersInProgress) throw new A("cannot-change-view-tree", this);
                try {
                    if (this._ongoingChange) return t(this._writer);
                    this._ongoingChange = !0;
                    const e = t(this._writer);
                    return this._ongoingChange = !1, !this._renderingDisabled && this._hasChangedSinceTheLastRendering && (this._postFixersInProgress = !0, this.document._callPostFixers(this._writer), this._postFixersInProgress = !1, this.fire("render")), e
                } catch (t) {
                    A.rethrowUnexpectedError(t, this)
                }
            }
            forceRender() {
                this._hasChangedSinceTheLastRendering = !0, this.getObserver(wl).flush(), this.change((() => {}))
            }
            destroy() {
                for (const t of this._observers.values()) t.destroy();
                this.document.destroy(), this.stopListening()
            }
            createPositionAt(t, e) {
                return va._createAt(t, e)
            }
            createPositionAfter(t) {
                return va._createAfter(t)
            }
            createPositionBefore(t) {
                return va._createBefore(t)
            }
            createRange(t, e) {
                return new ya(t, e)
            }
            createRangeOn(t) {
                return ya._createOn(t)
            }
            createRangeIn(t) {
                return ya._createIn(t)
            }
            createSelection(...t) {
                return new Ea(...t)
            }
            _disableRendering(t) {
                this._renderingDisabled = t, 0 == t && this.change((() => {}))
            }
            _render() {
                this.isRenderingInProgress = !0, this.disableObservers(), this._renderer.render(), this.enableObservers(), this.isRenderingInProgress = !1
            }
        }
        class Il {
            is() {
                throw new Error("is() method is abstract")
            }
        }
        class Ml extends Il {
            constructor(t) {
                super(), this.parent = null, this._attrs = Bi(t)
            }
            get document() {
                return null
            }
            get index() {
                let t;
                if (!this.parent) return null;
                if (null === (t = this.parent.getChildIndex(this))) throw new A("model-node-not-found-in-parent", this);
                return t
            }
            get startOffset() {
                let t;
                if (!this.parent) return null;
                if (null === (t = this.parent.getChildStartOffset(this))) throw new A("model-node-not-found-in-parent", this);
                return t
            }
            get offsetSize() {
                return 1
            }
            get endOffset() {
                return this.parent ? this.startOffset + this.offsetSize : null
            }
            get nextSibling() {
                const t = this.index;
                return null !== t && this.parent.getChild(t + 1) || null
            }
            get previousSibling() {
                const t = this.index;
                return null !== t && this.parent.getChild(t - 1) || null
            }
            get root() {
                let t = this;
                for (; t.parent;) t = t.parent;
                return t
            }
            isAttached() {
                return null !== this.parent && this.root.isAttached()
            }
            getPath() {
                const t = [];
                let e = this;
                for (; e.parent;) t.unshift(e.startOffset), e = e.parent;
                return t
            }
            getAncestors(t = {}) {
                const e = [];
                let n = t.includeSelf ? this : this.parent;
                for (; n;) e[t.parentFirst ? "push" : "unshift"](n), n = n.parent;
                return e
            }
            getCommonAncestor(t, e = {}) {
                const n = this.getAncestors(e),
                    o = t.getAncestors(e);
                let i = 0;
                for (; n[i] == o[i] && n[i];) i++;
                return 0 === i ? null : n[i - 1]
            }
            isBefore(t) {
                if (this == t) return !1;
                if (this.root !== t.root) return !1;
                const e = this.getPath(),
                    n = t.getPath(),
                    o = et(e, n);
                switch (o) {
                    case "prefix":
                        return !0;
                    case "extension":
                        return !1;
                    default:
                        return e[o] < n[o]
                }
            }
            isAfter(t) {
                return this != t && (this.root === t.root && !this.isBefore(t))
            }
            hasAttribute(t) {
                return this._attrs.has(t)
            }
            getAttribute(t) {
                return this._attrs.get(t)
            }
            getAttributes() {
                return this._attrs.entries()
            }
            getAttributeKeys() {
                return this._attrs.keys()
            }
            toJSON() {
                const t = {};
                return this._attrs.size && (t.attributes = Array.from(this._attrs).reduce(((t, e) => (t[e[0]] = e[1], t)), {})), t
            }
            _clone(t) {
                return new this.constructor(this._attrs)
            }
            _remove() {
                this.parent._removeChildren(this.index)
            }
            _setAttribute(t, e) {
                this._attrs.set(t, e)
            }
            _setAttributesTo(t) {
                this._attrs = Bi(t)
            }
            _removeAttribute(t) {
                return this._attrs.delete(t)
            }
            _clearAttributes() {
                this._attrs.clear()
            }
        }
        Ml.prototype.is = function (t) {
            return "node" === t || "model:node" === t
        };
        class Tl {
            constructor(t) {
                this._nodes = [], t && this._insertNodes(0, t)
            } [Symbol.iterator]() {
                return this._nodes[Symbol.iterator]()
            }
            get length() {
                return this._nodes.length
            }
            get maxOffset() {
                return this._nodes.reduce(((t, e) => t + e.offsetSize), 0)
            }
            getNode(t) {
                return this._nodes[t] || null
            }
            getNodeIndex(t) {
                const e = this._nodes.indexOf(t);
                return -1 == e ? null : e
            }
            getNodeStartOffset(t) {
                const e = this.getNodeIndex(t);
                return null === e ? null : this._nodes.slice(0, e).reduce(((t, e) => t + e.offsetSize), 0)
            }
            indexToOffset(t) {
                if (t == this._nodes.length) return this.maxOffset;
                const e = this._nodes[t];
                if (!e) throw new A("model-nodelist-index-out-of-bounds", this);
                return this.getNodeStartOffset(e)
            }
            offsetToIndex(t) {
                let e = 0;
                for (const n of this._nodes) {
                    if (t >= e && t < e + n.offsetSize) return this.getNodeIndex(n);
                    e += n.offsetSize
                }
                if (e != t) throw new A("model-nodelist-offset-out-of-bounds", this, {
                    offset: t,
                    nodeList: this
                });
                return this.length
            }
            _insertNodes(t, e) {
                for (const t of e)
                    if (!(t instanceof Ml)) throw new A("model-nodelist-insertnodes-not-node", this);
                this._nodes = function (t, e, n, o) {
                    if (Math.max(e.length, t.length) > 1e4) return t.slice(0, n).concat(e).concat(t.slice(n + o, t.length)); {
                        const i = Array.from(t);
                        return i.splice(n, o, ...e), i
                    }
                }(this._nodes, Array.from(e), t, 0)
            }
            _removeNodes(t, e = 1) {
                return this._nodes.splice(t, e)
            }
            toJSON() {
                return this._nodes.map((t => t.toJSON()))
            }
        }
        class Bl extends Ml {
            constructor(t, e) {
                super(e), this._data = t || ""
            }
            get offsetSize() {
                return this.data.length
            }
            get data() {
                return this._data
            }
            toJSON() {
                const t = super.toJSON();
                return t.data = this.data, t
            }
            _clone() {
                return new Bl(this.data, this.getAttributes())
            }
            static fromJSON(t) {
                return new Bl(t.data, t.attributes)
            }
        }
        Bl.prototype.is = function (t) {
            return "$text" === t || "model:$text" === t || "text" === t || "model:text" === t || "node" === t || "model:node" === t
        };
        class Nl extends Il {
            constructor(t, e, n) {
                if (super(), this.textNode = t, e < 0 || e > t.offsetSize) throw new A("model-textproxy-wrong-offsetintext", this);
                if (n < 0 || e + n > t.offsetSize) throw new A("model-textproxy-wrong-length", this);
                this.data = t.data.substring(e, e + n), this.offsetInText = e
            }
            get startOffset() {
                return null !== this.textNode.startOffset ? this.textNode.startOffset + this.offsetInText : null
            }
            get offsetSize() {
                return this.data.length
            }
            get endOffset() {
                return null !== this.startOffset ? this.startOffset + this.offsetSize : null
            }
            get isPartial() {
                return this.offsetSize !== this.textNode.offsetSize
            }
            get parent() {
                return this.textNode.parent
            }
            get root() {
                return this.textNode.root
            }
            getPath() {
                const t = this.textNode.getPath();
                return t.length > 0 && (t[t.length - 1] += this.offsetInText), t
            }
            getAncestors(t = {}) {
                const e = [];
                let n = t.includeSelf ? this : this.parent;
                for (; n;) e[t.parentFirst ? "push" : "unshift"](n), n = n.parent;
                return e
            }
            hasAttribute(t) {
                return this.textNode.hasAttribute(t)
            }
            getAttribute(t) {
                return this.textNode.getAttribute(t)
            }
            getAttributes() {
                return this.textNode.getAttributes()
            }
            getAttributeKeys() {
                return this.textNode.getAttributeKeys()
            }
        }
        Nl.prototype.is = function (t) {
            return "$textProxy" === t || "model:$textProxy" === t || "textProxy" === t || "model:textProxy" === t
        };
        class Pl extends Ml {
            constructor(t, e, n) {
                super(e), this._children = new Tl, this.name = t, n && this._insertChild(0, n)
            }
            get childCount() {
                return this._children.length
            }
            get maxOffset() {
                return this._children.maxOffset
            }
            get isEmpty() {
                return 0 === this.childCount
            }
            getChild(t) {
                return this._children.getNode(t)
            }
            getChildren() {
                return this._children[Symbol.iterator]()
            }
            getChildIndex(t) {
                return this._children.getNodeIndex(t)
            }
            getChildStartOffset(t) {
                return this._children.getNodeStartOffset(t)
            }
            offsetToIndex(t) {
                return this._children.offsetToIndex(t)
            }
            getNodeByPath(t) {
                let e = this;
                for (const n of t) e = e.getChild(e.offsetToIndex(n));
                return e
            }
            findAncestor(t, e = {}) {
                let n = e.includeSelf ? this : this.parent;
                for (; n;) {
                    if (n.name === t) return n;
                    n = n.parent
                }
                return null
            }
            toJSON() {
                const t = super.toJSON();
                if (t.name = this.name, this._children.length > 0) {
                    t.children = [];
                    for (const e of this._children) t.children.push(e.toJSON())
                }
                return t
            }
            _clone(t = !1) {
                const e = t ? Array.from(this._children).map((t => t._clone(!0))) : void 0;
                return new Pl(this.name, this.getAttributes(), e)
            }
            _appendChild(t) {
                this._insertChild(this.childCount, t)
            }
            _insertChild(t, e) {
                const n = function (t) {
                    if ("string" == typeof t) return [new Bl(t)];
                    nt(t) || (t = [t]);
                    return Array.from(t).map((t => "string" == typeof t ? new Bl(t) : t instanceof Nl ? new Bl(t.data, t.getAttributes()) : t))
                }(e);
                for (const t of n) null !== t.parent && t._remove(), t.parent = this;
                this._children._insertNodes(t, n)
            }
            _removeChildren(t, e = 1) {
                const n = this._children._removeNodes(t, e);
                for (const t of n) t.parent = null;
                return n
            }
            static fromJSON(t) {
                let e;
                if (t.children) {
                    e = [];
                    for (const n of t.children) n.name ? e.push(Pl.fromJSON(n)) : e.push(Bl.fromJSON(n))
                }
                return new Pl(t.name, t.attributes, e)
            }
        }
        Pl.prototype.is = function (t, e) {
            return e ? e === this.name && ("element" === t || "model:element" === t) : "element" === t || "model:element" === t || "node" === t || "model:node" === t
        };
        class zl {
            constructor(t) {
                if (!t || !t.boundaries && !t.startPosition) throw new A("model-tree-walker-no-start-position", null);
                const e = t.direction || "forward";
                if ("forward" != e && "backward" != e) throw new A("model-tree-walker-unknown-direction", t, {
                    direction: e
                });
                this.direction = e, this.boundaries = t.boundaries || null, t.startPosition ? this._position = t.startPosition.clone() : this._position = Ll._createAt(this.boundaries["backward" == this.direction ? "end" : "start"]), this.position.stickiness = "toNone", this.singleCharacters = !!t.singleCharacters, this.shallow = !!t.shallow, this.ignoreElementEnd = !!t.ignoreElementEnd, this._boundaryStartParent = this.boundaries ? this.boundaries.start.parent : null, this._boundaryEndParent = this.boundaries ? this.boundaries.end.parent : null, this._visitedParent = this.position.parent
            } [Symbol.iterator]() {
                return this
            }
            get position() {
                return this._position
            }
            skip(t) {
                let e, n, o, i;
                do {
                    o = this.position, i = this._visitedParent, ({
                        done: e,
                        value: n
                    } = this.next())
                } while (!e && t(n));
                e || (this._position = o, this._visitedParent = i)
            }
            next() {
                return "forward" == this.direction ? this._next() : this._previous()
            }
            _next() {
                const t = this.position,
                    e = this.position.clone(),
                    n = this._visitedParent;
                if (null === n.parent && e.offset === n.maxOffset) return {
                    done: !0,
                    value: void 0
                };
                if (n === this._boundaryEndParent && e.offset == this.boundaries.end.offset) return {
                    done: !0,
                    value: void 0
                };
                const o = jl(e, n),
                    i = o || Rl(e, n, o);
                if (i instanceof Pl) {
                    if (this.shallow) {
                        if (this.boundaries && this.boundaries.end.isBefore(e)) return {
                            done: !0,
                            value: void 0
                        };
                        e.offset++
                    } else e.path.push(0), this._visitedParent = i;
                    return this._position = e, Ol("elementStart", i, t, e, 1)
                }
                if (i instanceof Bl) {
                    let o;
                    if (this.singleCharacters) o = 1;
                    else {
                        let t = i.endOffset;
                        this._boundaryEndParent == n && this.boundaries.end.offset < t && (t = this.boundaries.end.offset), o = t - e.offset
                    }
                    const r = e.offset - i.startOffset,
                        s = new Nl(i, r, o);
                    return e.offset += o, this._position = e, Ol("text", s, t, e, o)
                }
                return e.path.pop(), e.offset++, this._position = e, this._visitedParent = n.parent, this.ignoreElementEnd ? this._next() : Ol("elementEnd", n, t, e)
            }
            _previous() {
                const t = this.position,
                    e = this.position.clone(),
                    n = this._visitedParent;
                if (null === n.parent && 0 === e.offset) return {
                    done: !0,
                    value: void 0
                };
                if (n == this._boundaryStartParent && e.offset == this.boundaries.start.offset) return {
                    done: !0,
                    value: void 0
                };
                const o = e.parent,
                    i = jl(e, o),
                    r = i || Fl(e, o, i);
                if (r instanceof Pl) return e.offset--, this.shallow ? (this._position = e, Ol("elementStart", r, t, e, 1)) : (e.path.push(r.maxOffset), this._position = e, this._visitedParent = r, this.ignoreElementEnd ? this._previous() : Ol("elementEnd", r, t, e));
                if (r instanceof Bl) {
                    let o;
                    if (this.singleCharacters) o = 1;
                    else {
                        let t = r.startOffset;
                        this._boundaryStartParent == n && this.boundaries.start.offset > t && (t = this.boundaries.start.offset), o = e.offset - t
                    }
                    const i = e.offset - r.startOffset,
                        s = new Nl(r, i - o, o);
                    return e.offset -= o, this._position = e, Ol("text", s, t, e, o)
                }
                return e.path.pop(), this._position = e, this._visitedParent = n.parent, Ol("elementStart", n, t, e, 1)
            }
        }

        function Ol(t, e, n, o, i) {
            return {
                done: !1,
                value: {
                    type: t,
                    item: e,
                    previousPosition: n,
                    nextPosition: o,
                    length: i
                }
            }
        }
        class Ll extends Il {
            constructor(t, e, n = "toNone") {
                if (super(), !t.is("element") && !t.is("documentFragment")) throw new A("model-position-root-invalid", t);
                if (!(e instanceof Array) || 0 === e.length) throw new A("model-position-path-incorrect-format", t, {
                    path: e
                });
                t.is("rootElement") ? e = e.slice() : (e = [...t.getPath(), ...e], t = t.root), this.root = t, this.path = e, this.stickiness = n
            }
            get offset() {
                return this.path[this.path.length - 1]
            }
            set offset(t) {
                this.path[this.path.length - 1] = t
            }
            get parent() {
                let t = this.root;
                for (let e = 0; e < this.path.length - 1; e++)
                    if (t = t.getChild(t.offsetToIndex(this.path[e])), !t) throw new A("model-position-path-incorrect", this, {
                        position: this
                    });
                if (t.is("$text")) throw new A("model-position-path-incorrect", this, {
                    position: this
                });
                return t
            }
            get index() {
                return this.parent.offsetToIndex(this.offset)
            }
            get textNode() {
                return jl(this, this.parent)
            }
            get nodeAfter() {
                const t = this.parent;
                return Rl(this, t, jl(this, t))
            }
            get nodeBefore() {
                const t = this.parent;
                return Fl(this, t, jl(this, t))
            }
            get isAtStart() {
                return 0 === this.offset
            }
            get isAtEnd() {
                return this.offset == this.parent.maxOffset
            }
            compareWith(t) {
                if (this.root != t.root) return "different";
                const e = et(this.path, t.path);
                switch (e) {
                    case "same":
                        return "same";
                    case "prefix":
                        return "before";
                    case "extension":
                        return "after";
                    default:
                        return this.path[e] < t.path[e] ? "before" : "after"
                }
            }
            getLastMatchingPosition(t, e = {}) {
                e.startPosition = this;
                const n = new zl(e);
                return n.skip(t), n.position
            }
            getParentPath() {
                return this.path.slice(0, -1)
            }
            getAncestors() {
                const t = this.parent;
                return t.is("documentFragment") ? [t] : t.getAncestors({
                    includeSelf: !0
                })
            }
            findAncestor(t) {
                const e = this.parent;
                return e.is("element") ? e.findAncestor(t, {
                    includeSelf: !0
                }) : null
            }
            getCommonPath(t) {
                if (this.root != t.root) return [];
                const e = et(this.path, t.path),
                    n = "string" == typeof e ? Math.min(this.path.length, t.path.length) : e;
                return this.path.slice(0, n)
            }
            getCommonAncestor(t) {
                const e = this.getAncestors(),
                    n = t.getAncestors();
                let o = 0;
                for (; e[o] == n[o] && e[o];) o++;
                return 0 === o ? null : e[o - 1]
            }
            getShiftedBy(t) {
                const e = this.clone(),
                    n = e.offset + t;
                return e.offset = n < 0 ? 0 : n, e
            }
            isAfter(t) {
                return "after" == this.compareWith(t)
            }
            isBefore(t) {
                return "before" == this.compareWith(t)
            }
            isEqual(t) {
                return "same" == this.compareWith(t)
            }
            isTouching(t) {
                if (this.root !== t.root) return !1;
                const e = Math.min(this.path.length, t.path.length);
                for (let n = 0; n < e; n++) {
                    const e = this.path[n] - t.path[n];
                    if (e < -1 || e > 1) return !1;
                    if (1 === e) return Vl(t, this, n);
                    if (-1 === e) return Vl(this, t, n)
                }
                return this.path.length === t.path.length || (this.path.length > t.path.length ? Ul(this.path, e) : Ul(t.path, e))
            }
            hasSameParentAs(t) {
                if (this.root !== t.root) return !1;
                return "same" == et(this.getParentPath(), t.getParentPath())
            }
            getTransformedByOperation(t) {
                let e;
                switch (t.type) {
                    case "insert":
                        e = this._getTransformedByInsertOperation(t);
                        break;
                    case "move":
                    case "remove":
                    case "reinsert":
                        e = this._getTransformedByMoveOperation(t);
                        break;
                    case "split":
                        e = this._getTransformedBySplitOperation(t);
                        break;
                    case "merge":
                        e = this._getTransformedByMergeOperation(t);
                        break;
                    default:
                        e = Ll._createAt(this)
                }
                return e
            }
            _getTransformedByInsertOperation(t) {
                return this._getTransformedByInsertion(t.position, t.howMany)
            }
            _getTransformedByMoveOperation(t) {
                return this._getTransformedByMove(t.sourcePosition, t.targetPosition, t.howMany)
            }
            _getTransformedBySplitOperation(t) {
                const e = t.movedRange;
                return e.containsPosition(this) || e.start.isEqual(this) && "toNext" == this.stickiness ? this._getCombined(t.splitPosition, t.moveTargetPosition) : t.graveyardPosition ? this._getTransformedByMove(t.graveyardPosition, t.insertionPosition, 1) : this._getTransformedByInsertion(t.insertionPosition, 1)
            }
            _getTransformedByMergeOperation(t) {
                const e = t.movedRange;
                let n;
                return e.containsPosition(this) || e.start.isEqual(this) ? (n = this._getCombined(t.sourcePosition, t.targetPosition), t.sourcePosition.isBefore(t.targetPosition) && (n = n._getTransformedByDeletion(t.deletionPosition, 1))) : n = this.isEqual(t.deletionPosition) ? Ll._createAt(t.deletionPosition) : this._getTransformedByMove(t.deletionPosition, t.graveyardPosition, 1), n
            }
            _getTransformedByDeletion(t, e) {
                const n = Ll._createAt(this);
                if (this.root != t.root) return n;
                if ("same" == et(t.getParentPath(), this.getParentPath())) {
                    if (t.offset < this.offset) {
                        if (t.offset + e > this.offset) return null;
                        n.offset -= e
                    }
                } else if ("prefix" == et(t.getParentPath(), this.getParentPath())) {
                    const o = t.path.length - 1;
                    if (t.offset <= this.path[o]) {
                        if (t.offset + e > this.path[o]) return null;
                        n.path[o] -= e
                    }
                }
                return n
            }
            _getTransformedByInsertion(t, e) {
                const n = Ll._createAt(this);
                if (this.root != t.root) return n;
                if ("same" == et(t.getParentPath(), this.getParentPath()))(t.offset < this.offset || t.offset == this.offset && "toPrevious" != this.stickiness) && (n.offset += e);
                else if ("prefix" == et(t.getParentPath(), this.getParentPath())) {
                    const o = t.path.length - 1;
                    t.offset <= this.path[o] && (n.path[o] += e)
                }
                return n
            }
            _getTransformedByMove(t, e, n) {
                if (e = e._getTransformedByDeletion(t, n), t.isEqual(e)) return Ll._createAt(this);
                const o = this._getTransformedByDeletion(t, n);
                return null === o || t.isEqual(this) && "toNext" == this.stickiness || t.getShiftedBy(n).isEqual(this) && "toPrevious" == this.stickiness ? this._getCombined(t, e) : o._getTransformedByInsertion(e, n)
            }
            _getCombined(t, e) {
                const n = t.path.length - 1,
                    o = Ll._createAt(e);
                return o.stickiness = this.stickiness, o.offset = o.offset + this.path[n] - t.offset, o.path = [...o.path, ...this.path.slice(n + 1)], o
            }
            toJSON() {
                return {
                    root: this.root.toJSON(),
                    path: Array.from(this.path),
                    stickiness: this.stickiness
                }
            }
            clone() {
                return new this.constructor(this.root, this.path, this.stickiness)
            }
            static _createAt(t, e, n = "toNone") {
                if (t instanceof Ll) return new Ll(t.root, t.path, t.stickiness); {
                    const o = t;
                    if ("end" == e) e = o.maxOffset;
                    else {
                        if ("before" == e) return this._createBefore(o, n);
                        if ("after" == e) return this._createAfter(o, n);
                        if (0 !== e && !e) throw new A("model-createpositionat-offset-required", [this, t])
                    }
                    if (!o.is("element") && !o.is("documentFragment")) throw new A("model-position-parent-incorrect", [this, t]);
                    const i = o.getPath();
                    return i.push(e), new this(o.root, i, n)
                }
            }
            static _createAfter(t, e) {
                if (!t.parent) throw new A("model-position-after-root", [this, t], {
                    root: t
                });
                return this._createAt(t.parent, t.endOffset, e)
            }
            static _createBefore(t, e) {
                if (!t.parent) throw new A("model-position-before-root", t, {
                    root: t
                });
                return this._createAt(t.parent, t.startOffset, e)
            }
            static fromJSON(t, e) {
                if ("$graveyard" === t.root) {
                    const n = new Ll(e.graveyard, t.path);
                    return n.stickiness = t.stickiness, n
                }
                if (!e.getRoot(t.root)) throw new A("model-position-fromjson-no-root", e, {
                    rootName: t.root
                });
                return new Ll(e.getRoot(t.root), t.path, t.stickiness)
            }
        }

        function jl(t, e) {
            const n = e.getChild(e.offsetToIndex(t.offset));
            return n && n.is("$text") && n.startOffset < t.offset ? n : null
        }

        function Rl(t, e, n) {
            return null !== n ? null : e.getChild(e.offsetToIndex(t.offset))
        }

        function Fl(t, e, n) {
            return null !== n ? null : e.getChild(e.offsetToIndex(t.offset) - 1)
        }

        function Vl(t, e, n) {
            return n + 1 !== t.path.length && (!!Ul(e.path, n + 1) && !! function (t, e) {
                let n = t.parent,
                    o = t.path.length - 1,
                    i = 0;
                for (; o >= e;) {
                    if (t.path[o] + i !== n.maxOffset) return !1;
                    i = 1, o--, n = n.parent
                }
                return !0
            }(t, n + 1))
        }

        function Ul(t, e) {
            for (; e < t.length;) {
                if (0 !== t[e]) return !1;
                e++
            }
            return !0
        }
        Ll.prototype.is = function (t) {
            return "position" === t || "model:position" === t
        };
        class Hl extends Il {
            constructor(t, e) {
                super(), this.start = Ll._createAt(t), this.end = e ? Ll._createAt(e) : Ll._createAt(t), this.start.stickiness = this.isCollapsed ? "toNone" : "toNext", this.end.stickiness = this.isCollapsed ? "toNone" : "toPrevious"
            }*[Symbol.iterator]() {
                yield* new zl({
                    boundaries: this,
                    ignoreElementEnd: !0
                })
            }
            get isCollapsed() {
                return this.start.isEqual(this.end)
            }
            get isFlat() {
                return "same" == et(this.start.getParentPath(), this.end.getParentPath())
            }
            get root() {
                return this.start.root
            }
            containsPosition(t) {
                return t.isAfter(this.start) && t.isBefore(this.end)
            }
            containsRange(t, e = !1) {
                t.isCollapsed && (e = !1);
                const n = this.containsPosition(t.start) || e && this.start.isEqual(t.start),
                    o = this.containsPosition(t.end) || e && this.end.isEqual(t.end);
                return n && o
            }
            containsItem(t) {
                const e = Ll._createBefore(t);
                return this.containsPosition(e) || this.start.isEqual(e)
            }
            isEqual(t) {
                return this.start.isEqual(t.start) && this.end.isEqual(t.end)
            }
            isIntersecting(t) {
                return this.start.isBefore(t.end) && this.end.isAfter(t.start)
            }
            getDifference(t) {
                const e = [];
                return this.isIntersecting(t) ? (this.containsPosition(t.start) && e.push(new Hl(this.start, t.start)), this.containsPosition(t.end) && e.push(new Hl(t.end, this.end))) : e.push(new Hl(this.start, this.end)), e
            }
            getIntersection(t) {
                if (this.isIntersecting(t)) {
                    let e = this.start,
                        n = this.end;
                    return this.containsPosition(t.start) && (e = t.start), this.containsPosition(t.end) && (n = t.end), new Hl(e, n)
                }
                return null
            }
            getJoined(t, e = !1) {
                let n = this.isIntersecting(t);
                if (n || (n = this.start.isBefore(t.start) ? e ? this.end.isTouching(t.start) : this.end.isEqual(t.start) : e ? t.end.isTouching(this.start) : t.end.isEqual(this.start)), !n) return null;
                let o = this.start,
                    i = this.end;
                return t.start.isBefore(o) && (o = t.start), t.end.isAfter(i) && (i = t.end), new Hl(o, i)
            }
            getMinimalFlatRanges() {
                const t = [],
                    e = this.start.getCommonPath(this.end).length,
                    n = Ll._createAt(this.start);
                let o = n.parent;
                for (; n.path.length > e + 1;) {
                    const e = o.maxOffset - n.offset;
                    0 !== e && t.push(new Hl(n, n.getShiftedBy(e))), n.path = n.path.slice(0, -1), n.offset++, o = o.parent
                }
                for (; n.path.length <= this.end.path.length;) {
                    const e = this.end.path[n.path.length - 1],
                        o = e - n.offset;
                    0 !== o && t.push(new Hl(n, n.getShiftedBy(o))), n.offset = e, n.path.push(0)
                }
                return t
            }
            getWalker(t = {}) {
                return t.boundaries = this, new zl(t)
            }* getItems(t = {}) {
                t.boundaries = this, t.ignoreElementEnd = !0;
                const e = new zl(t);
                for (const t of e) yield t.item
            }* getPositions(t = {}) {
                t.boundaries = this;
                const e = new zl(t);
                yield e.position;
                for (const t of e) yield t.nextPosition
            }
            getTransformedByOperation(t) {
                switch (t.type) {
                    case "insert":
                        return this._getTransformedByInsertOperation(t);
                    case "move":
                    case "remove":
                    case "reinsert":
                        return this._getTransformedByMoveOperation(t);
                    case "split":
                        return [this._getTransformedBySplitOperation(t)];
                    case "merge":
                        return [this._getTransformedByMergeOperation(t)]
                }
                return [new Hl(this.start, this.end)]
            }
            getTransformedByOperations(t) {
                const e = [new Hl(this.start, this.end)];
                for (const n of t)
                    for (let t = 0; t < e.length; t++) {
                        const o = e[t].getTransformedByOperation(n);
                        e.splice(t, 1, ...o), t += o.length - 1
                    }
                for (let t = 0; t < e.length; t++) {
                    const n = e[t];
                    for (let o = t + 1; o < e.length; o++) {
                        const t = e[o];
                        (n.containsRange(t) || t.containsRange(n) || n.isEqual(t)) && e.splice(o, 1)
                    }
                }
                return e
            }
            getCommonAncestor() {
                return this.start.getCommonAncestor(this.end)
            }
            getContainedElement() {
                if (this.isCollapsed) return null;
                const t = this.start.nodeAfter,
                    e = this.end.nodeBefore;
                return t && t.is("element") && t === e ? t : null
            }
            toJSON() {
                return {
                    start: this.start.toJSON(),
                    end: this.end.toJSON()
                }
            }
            clone() {
                return new this.constructor(this.start, this.end)
            }
            _getTransformedByInsertOperation(t, e = !1) {
                return this._getTransformedByInsertion(t.position, t.howMany, e)
            }
            _getTransformedByMoveOperation(t, e = !1) {
                const n = t.sourcePosition,
                    o = t.howMany,
                    i = t.targetPosition;
                return this._getTransformedByMove(n, i, o, e)
            }
            _getTransformedBySplitOperation(t) {
                const e = this.start._getTransformedBySplitOperation(t);
                let n = this.end._getTransformedBySplitOperation(t);
                return this.end.isEqual(t.insertionPosition) && (n = this.end.getShiftedBy(1)), e.root != n.root && (n = this.end.getShiftedBy(-1)), new Hl(e, n)
            }
            _getTransformedByMergeOperation(t) {
                if (this.start.isEqual(t.targetPosition) && this.end.isEqual(t.deletionPosition)) return new Hl(this.start);
                let e = this.start._getTransformedByMergeOperation(t),
                    n = this.end._getTransformedByMergeOperation(t);
                return e.root != n.root && (n = this.end.getShiftedBy(-1)), e.isAfter(n) ? (t.sourcePosition.isBefore(t.targetPosition) ? (e = Ll._createAt(n), e.offset = 0) : (t.deletionPosition.isEqual(e) || (n = t.deletionPosition), e = t.targetPosition), new Hl(e, n)) : new Hl(e, n)
            }
            _getTransformedByInsertion(t, e, n = !1) {
                if (n && this.containsPosition(t)) return [new Hl(this.start, t), new Hl(t.getShiftedBy(e), this.end._getTransformedByInsertion(t, e))]; {
                    const n = new Hl(this.start, this.end);
                    return n.start = n.start._getTransformedByInsertion(t, e), n.end = n.end._getTransformedByInsertion(t, e), [n]
                }
            }
            _getTransformedByMove(t, e, n, o = !1) {
                if (this.isCollapsed) {
                    const o = this.start._getTransformedByMove(t, e, n);
                    return [new Hl(o)]
                }
                const i = Hl._createFromPositionAndShift(t, n),
                    r = e._getTransformedByDeletion(t, n);
                if (this.containsPosition(e) && !o && (i.containsPosition(this.start) || i.containsPosition(this.end))) {
                    const o = this.start._getTransformedByMove(t, e, n),
                        i = this.end._getTransformedByMove(t, e, n);
                    return [new Hl(o, i)]
                }
                let s;
                const a = this.getDifference(i);
                let c = null;
                const l = this.getIntersection(i);
                if (1 == a.length ? c = new Hl(a[0].start._getTransformedByDeletion(t, n), a[0].end._getTransformedByDeletion(t, n)) : 2 == a.length && (c = new Hl(this.start, this.end._getTransformedByDeletion(t, n))), s = c ? c._getTransformedByInsertion(r, n, null !== l || o) : [], l) {
                    const t = new Hl(l.start._getCombined(i.start, r), l.end._getCombined(i.start, r));
                    2 == s.length ? s.splice(1, 0, t) : s.push(t)
                }
                return s
            }
            _getTransformedByDeletion(t, e) {
                let n = this.start._getTransformedByDeletion(t, e),
                    o = this.end._getTransformedByDeletion(t, e);
                return null == n && null == o ? null : (null == n && (n = t), null == o && (o = t), new Hl(n, o))
            }
            static _createFromPositionAndShift(t, e) {
                const n = t,
                    o = t.getShiftedBy(e);
                return e > 0 ? new this(n, o) : new this(o, n)
            }
            static _createIn(t) {
                return new this(Ll._createAt(t, 0), Ll._createAt(t, t.maxOffset))
            }
            static _createOn(t) {
                return this._createFromPositionAndShift(Ll._createBefore(t), t.offsetSize)
            }
            static _createFromRanges(t) {
                if (0 === t.length) throw new A("range-create-from-ranges-empty-array", null);
                if (1 == t.length) return t[0].clone();
                const e = t[0];
                t.sort(((t, e) => t.start.isAfter(e.start) ? 1 : -1));
                const n = t.indexOf(e),
                    o = new this(e.start, e.end);
                if (n > 0)
                    for (let e = n - 1; t[e].end.isEqual(o.start); e++) o.start = Ll._createAt(t[e].start);
                for (let e = n + 1; e < t.length && t[e].start.isEqual(o.end); e++) o.end = Ll._createAt(t[e].end);
                return o
            }
            static fromJSON(t, e) {
                return new this(Ll.fromJSON(t.start, e), Ll.fromJSON(t.end, e))
            }
        }
        Hl.prototype.is = function (t) {
            return "range" === t || "model:range" === t
        };
        class Gl extends(B()) {
            constructor() {
                super(), this._modelToViewMapping = new WeakMap, this._viewToModelMapping = new WeakMap, this._viewToModelLengthCallbacks = new Map, this._markerNameToElements = new Map, this._elementToMarkerNames = new Map, this._deferredBindingRemovals = new Map, this._unboundMarkerNames = new Set, this.on("modelToViewPosition", ((t, e) => {
                    if (e.viewPosition) return;
                    const n = this._modelToViewMapping.get(e.modelPosition.parent);
                    if (!n) throw new A("mapping-model-position-view-parent-not-found", this, {
                        modelPosition: e.modelPosition
                    });
                    e.viewPosition = this.findPositionIn(n, e.modelPosition.offset)
                }), {
                    priority: "low"
                }), this.on("viewToModelPosition", ((t, e) => {
                    if (e.modelPosition) return;
                    const n = this.findMappedViewAncestor(e.viewPosition),
                        o = this._viewToModelMapping.get(n),
                        i = this._toModelOffset(e.viewPosition.parent, e.viewPosition.offset, n);
                    e.modelPosition = Ll._createAt(o, i)
                }), {
                    priority: "low"
                })
            }
            bindElements(t, e) {
                this._modelToViewMapping.set(t, e), this._viewToModelMapping.set(e, t)
            }
            unbindViewElement(t, e = {}) {
                const n = this.toModelElement(t);
                if (this._elementToMarkerNames.has(t))
                    for (const e of this._elementToMarkerNames.get(t)) this._unboundMarkerNames.add(e);
                e.defer ? this._deferredBindingRemovals.set(t, t.root) : (this._viewToModelMapping.delete(t), this._modelToViewMapping.get(n) == t && this._modelToViewMapping.delete(n))
            }
            unbindModelElement(t) {
                const e = this.toViewElement(t);
                this._modelToViewMapping.delete(t), this._viewToModelMapping.get(e) == t && this._viewToModelMapping.delete(e)
            }
            bindElementToMarker(t, e) {
                const n = this._markerNameToElements.get(e) || new Set;
                n.add(t);
                const o = this._elementToMarkerNames.get(t) || new Set;
                o.add(e), this._markerNameToElements.set(e, n), this._elementToMarkerNames.set(t, o)
            }
            unbindElementFromMarkerName(t, e) {
                const n = this._markerNameToElements.get(e);
                n && (n.delete(t), 0 == n.size && this._markerNameToElements.delete(e));
                const o = this._elementToMarkerNames.get(t);
                o && (o.delete(e), 0 == o.size && this._elementToMarkerNames.delete(t))
            }
            flushUnboundMarkerNames() {
                const t = Array.from(this._unboundMarkerNames);
                return this._unboundMarkerNames.clear(), t
            }
            flushDeferredBindings() {
                for (const [t, e] of this._deferredBindingRemovals) t.root == e && this.unbindViewElement(t);
                this._deferredBindingRemovals = new Map
            }
            clearBindings() {
                this._modelToViewMapping = new WeakMap, this._viewToModelMapping = new WeakMap, this._markerNameToElements = new Map, this._elementToMarkerNames = new Map, this._unboundMarkerNames = new Set, this._deferredBindingRemovals = new Map
            }
            toModelElement(t) {
                return this._viewToModelMapping.get(t)
            }
            toViewElement(t) {
                return this._modelToViewMapping.get(t)
            }
            toModelRange(t) {
                return new Hl(this.toModelPosition(t.start), this.toModelPosition(t.end))
            }
            toViewRange(t) {
                return new ya(this.toViewPosition(t.start), this.toViewPosition(t.end))
            }
            toModelPosition(t) {
                const e = {
                    viewPosition: t,
                    mapper: this
                };
                return this.fire("viewToModelPosition", e), e.modelPosition
            }
            toViewPosition(t, e = {}) {
                const n = {
                    modelPosition: t,
                    mapper: this,
                    isPhantom: e.isPhantom
                };
                return this.fire("modelToViewPosition", n), n.viewPosition
            }
            markerNameToElements(t) {
                const e = this._markerNameToElements.get(t);
                if (!e) return null;
                const n = new Set;
                for (const t of e)
                    if (t.is("attributeElement"))
                        for (const e of t.getElementsWithSameId()) n.add(e);
                    else n.add(t);
                return n
            }
            registerViewToModelLength(t, e) {
                this._viewToModelLengthCallbacks.set(t, e)
            }
            findMappedViewAncestor(t) {
                let e = t.parent;
                for (; !this._viewToModelMapping.has(e);) e = e.parent;
                return e
            }
            _toModelOffset(t, e, n) {
                if (n != t) {
                    return this._toModelOffset(t.parent, t.index, n) + this._toModelOffset(t, e, t)
                }
                if (t.is("$text")) return e;
                let o = 0;
                for (let n = 0; n < e; n++) o += this.getModelLength(t.getChild(n));
                return o
            }
            getModelLength(t) {
                if (this._viewToModelLengthCallbacks.get(t.name)) {
                    return this._viewToModelLengthCallbacks.get(t.name)(t)
                }
                if (this._viewToModelMapping.has(t)) return 1;
                if (t.is("$text")) return t.data.length;
                if (t.is("uiElement")) return 0; {
                    let e = 0;
                    for (const n of t.getChildren()) e += this.getModelLength(n);
                    return e
                }
            }
            findPositionIn(t, e) {
                let n, o = 0,
                    i = 0,
                    r = 0;
                if (t.is("$text")) return new va(t, e);
                for (; i < e;) n = t.getChild(r), o = this.getModelLength(n), i += o, r++;
                return i == e ? this._moveViewPositionToTextNode(new va(t, r)) : this.findPositionIn(n, e - (i - o))
            }
            _moveViewPositionToTextNode(t) {
                const e = t.nodeBefore,
                    n = t.nodeAfter;
                return e instanceof gs ? new va(e, e.data.length) : n instanceof gs ? new va(n, 0) : t
            }
        }
        class ql {
            constructor() {
                this._consumable = new Map, this._textProxyRegistry = new Map
            }
            add(t, e) {
                e = Wl(e), t instanceof Nl && (t = this._getSymbolForTextProxy(t)), this._consumable.has(t) || this._consumable.set(t, new Map), this._consumable.get(t).set(e, !0)
            }
            consume(t, e) {
                return e = Wl(e), t instanceof Nl && (t = this._getSymbolForTextProxy(t)), !!this.test(t, e) && (this._consumable.get(t).set(e, !1), !0)
            }
            test(t, e) {
                e = Wl(e), t instanceof Nl && (t = this._getSymbolForTextProxy(t));
                const n = this._consumable.get(t);
                if (void 0 === n) return null;
                const o = n.get(e);
                return void 0 === o ? null : o
            }
            revert(t, e) {
                e = Wl(e), t instanceof Nl && (t = this._getSymbolForTextProxy(t));
                const n = this.test(t, e);
                return !1 === n ? (this._consumable.get(t).set(e, !0), !0) : !0 !== n && null
            }
            verifyAllConsumed(t) {
                const e = [];
                for (const [n, o] of this._consumable)
                    for (const [i, r] of o) {
                        const o = i.split(":")[0];
                        r && t == o && e.push({
                            event: i,
                            item: n.name || n.description
                        })
                    }
                if (e.length) throw new A("conversion-model-consumable-not-consumed", null, {
                    items: e
                })
            }
            _getSymbolForTextProxy(t) {
                let e = null;
                const n = this._textProxyRegistry.get(t.startOffset);
                if (n) {
                    const o = n.get(t.endOffset);
                    o && (e = o.get(t.parent))
                }
                return e || (e = this._addSymbolForTextProxy(t)), e
            }
            _addSymbolForTextProxy(t) {
                const e = t.startOffset,
                    n = t.endOffset,
                    o = t.parent,
                    i = Symbol("$textProxy:" + t.data);
                let r, s;
                return r = this._textProxyRegistry.get(e), r || (r = new Map, this._textProxyRegistry.set(e, r)), s = r.get(n), s || (s = new Map, r.set(n, s)), s.set(o, i), i
            }
        }

        function Wl(t) {
            const e = t.split(":");
            return "insert" == e[0] ? e[0] : "addMarker" == e[0] || "removeMarker" == e[0] ? t : e.length > 1 ? e[0] + ":" + e[1] : e[0]
        }
        var Kl = Object.defineProperty,
            Yl = Object.defineProperties,
            $l = Object.getOwnPropertyDescriptors,
            Zl = Object.getOwnPropertySymbols,
            Ql = Object.prototype.hasOwnProperty,
            Jl = Object.prototype.propertyIsEnumerable,
            Xl = (t, e, n) => e in t ? Kl(t, e, {
                enumerable: !0,
                configurable: !0,
                writable: !0,
                value: n
            }) : t[e] = n,
            td = (t, e) => {
                for (var n in e || (e = {})) Ql.call(e, n) && Xl(t, n, e[n]);
                if (Zl)
                    for (var n of Zl(e)) Jl.call(e, n) && Xl(t, n, e[n]);
                return t
            },
            ed = (t, e) => Yl(t, $l(e));
        class nd extends(B()) {
            constructor(t) {
                super(), this._conversionApi = td({
                    dispatcher: this
                }, t), this._firedEventsMap = new WeakMap
            }
            convertChanges(t, e, n) {
                const o = this._createConversionApi(n, t.getRefreshedItems());
                for (const e of t.getMarkersToRemove()) this._convertMarkerRemove(e.name, e.range, o);
                const i = this._reduceChanges(t.getChanges());
                for (const t of i) "insert" === t.type ? this._convertInsert(Hl._createFromPositionAndShift(t.position, t.length), o) : "reinsert" === t.type ? this._convertReinsert(Hl._createFromPositionAndShift(t.position, t.length), o) : "remove" === t.type ? this._convertRemove(t.position, t.length, t.name, o) : this._convertAttribute(t.range, t.attributeKey, t.attributeOldValue, t.attributeNewValue, o);
                for (const t of o.mapper.flushUnboundMarkerNames()) {
                    const n = e.get(t).getRange();
                    this._convertMarkerRemove(t, n, o), this._convertMarkerAdd(t, n, o)
                }
                for (const e of t.getMarkersToAdd()) this._convertMarkerAdd(e.name, e.range, o);
                o.mapper.flushDeferredBindings(), o.consumable.verifyAllConsumed("insert")
            }
            convert(t, e, n, o = {}) {
                const i = this._createConversionApi(n, void 0, o);
                this._convertInsert(t, i);
                for (const [t, n] of e) this._convertMarkerAdd(t, n, i);
                i.consumable.verifyAllConsumed("insert")
            }
            convertSelection(t, e, n) {
                const o = this._createConversionApi(n);
                this.fire("cleanSelection", {
                    selection: t
                }, o);
                const i = t.getFirstPosition().root;
                if (!o.mapper.toViewElement(i)) return;
                const r = Array.from(e.getMarkersAtPosition(t.getFirstPosition()));
                if (this._addConsumablesForSelection(o.consumable, t, r), this.fire("selection", {
                        selection: t
                    }, o), t.isCollapsed) {
                    for (const e of r)
                        if (o.consumable.test(t, "addMarker:" + e.name)) {
                            const n = e.getRange();
                            if (!od(t.getFirstPosition(), e, o.mapper)) continue;
                            const i = {
                                item: t,
                                markerName: e.name,
                                markerRange: n
                            };
                            this.fire(`addMarker:${e.name}`, i, o)
                        } for (const e of t.getAttributeKeys())
                        if (o.consumable.test(t, "attribute:" + e)) {
                            const n = {
                                item: t,
                                range: t.getFirstRange(),
                                attributeKey: e,
                                attributeOldValue: null,
                                attributeNewValue: t.getAttribute(e)
                            };
                            this.fire(`attribute:${e}:$text`, n, o)
                        }
                }
            }
            _convertInsert(t, e, n = {}) {
                n.doNotAddConsumables || this._addConsumablesForInsert(e.consumable, Array.from(t));
                for (const n of Array.from(t.getWalker({
                        shallow: !0
                    })).map(id)) this._testAndFire("insert", n, e)
            }
            _convertRemove(t, e, n, o) {
                this.fire(`remove:${n}`, {
                    position: t,
                    length: e
                }, o)
            }
            _convertAttribute(t, e, n, o, i) {
                this._addConsumablesForRange(i.consumable, t, `attribute:${e}`);
                for (const r of t) {
                    const t = {
                        item: r.item,
                        range: Hl._createFromPositionAndShift(r.previousPosition, r.length),
                        attributeKey: e,
                        attributeOldValue: n,
                        attributeNewValue: o
                    };
                    this._testAndFire(`attribute:${e}`, t, i)
                }
            }
            _convertReinsert(t, e) {
                const n = Array.from(t.getWalker({
                    shallow: !0
                }));
                this._addConsumablesForInsert(e.consumable, n);
                for (const t of n.map(id)) this._testAndFire("insert", ed(td({}, t), {
                    reconversion: !0
                }), e)
            }
            _convertMarkerAdd(t, e, n) {
                if ("$graveyard" == e.root.rootName) return;
                const o = `addMarker:${t}`;
                if (n.consumable.add(e, o), this.fire(o, {
                        markerName: t,
                        markerRange: e
                    }, n), n.consumable.consume(e, o)) {
                    this._addConsumablesForRange(n.consumable, e, o);
                    for (const i of e.getItems()) {
                        if (!n.consumable.test(i, o)) continue;
                        const r = {
                            item: i,
                            range: Hl._createOn(i),
                            markerName: t,
                            markerRange: e
                        };
                        this.fire(o, r, n)
                    }
                }
            }
            _convertMarkerRemove(t, e, n) {
                "$graveyard" != e.root.rootName && this.fire(`removeMarker:${t}`, {
                    markerName: t,
                    markerRange: e
                }, n)
            }
            _reduceChanges(t) {
                const e = {
                    changes: t
                };
                return this.fire("reduceChanges", e), e.changes
            }
            _addConsumablesForInsert(t, e) {
                for (const n of e) {
                    const e = n.item;
                    if (null === t.test(e, "insert")) {
                        t.add(e, "insert");
                        for (const n of e.getAttributeKeys()) t.add(e, "attribute:" + n)
                    }
                }
                return t
            }
            _addConsumablesForRange(t, e, n) {
                for (const o of e.getItems()) t.add(o, n);
                return t
            }
            _addConsumablesForSelection(t, e, n) {
                t.add(e, "selection");
                for (const o of n) t.add(e, "addMarker:" + o.name);
                for (const n of e.getAttributeKeys()) t.add(e, "attribute:" + n);
                return t
            }
            _testAndFire(t, e, n) {
                const o = function (t, e) {
                        const n = e.item.is("element") ? e.item.name : "$text";
                        return `${t}:${n}`
                    }(t, e),
                    i = e.item.is("$textProxy") ? n.consumable._getSymbolForTextProxy(e.item) : e.item,
                    r = this._firedEventsMap.get(n),
                    s = r.get(i);
                if (s) {
                    if (s.has(o)) return;
                    s.add(o)
                } else r.set(i, new Set([o]));
                this.fire(o, e, n)
            }
            _testAndFireAddAttributes(t, e) {
                const n = {
                    item: t,
                    range: Hl._createOn(t)
                };
                for (const t of n.item.getAttributeKeys()) n.attributeKey = t, n.attributeOldValue = null, n.attributeNewValue = n.item.getAttribute(t), this._testAndFire(`attribute:${t}`, n, e)
            }
            _createConversionApi(t, e = new Set, n = {}) {
                const o = ed(td({}, this._conversionApi), {
                    consumable: new ql,
                    writer: t,
                    options: n,
                    convertItem: t => this._convertInsert(Hl._createOn(t), o),
                    convertChildren: t => this._convertInsert(Hl._createIn(t), o, {
                        doNotAddConsumables: !0
                    }),
                    convertAttributes: t => this._testAndFireAddAttributes(t, o),
                    canReuseView: t => !e.has(o.mapper.toModelElement(t))
                });
                return this._firedEventsMap.set(o, new Map), o
            }
        }

        function od(t, e, n) {
            const o = e.getRange(),
                i = Array.from(t.getAncestors());
            i.shift(), i.reverse();
            return !i.some((t => {
                if (o.containsItem(t)) {
                    return !!n.toViewElement(t).getCustomProperty("addHighlight")
                }
            }))
        }

        function id(t) {
            return {
                item: t.item,
                range: Hl._createFromPositionAndShift(t.previousPosition, t.length)
            }
        }
        class rd extends(B(Il)) {
            constructor(...t) {
                super(), this._lastRangeBackward = !1, this._attrs = new Map, this._ranges = [], t.length && this.setTo(...t)
            }
            get anchor() {
                if (this._ranges.length > 0) {
                    const t = this._ranges[this._ranges.length - 1];
                    return this._lastRangeBackward ? t.end : t.start
                }
                return null
            }
            get focus() {
                if (this._ranges.length > 0) {
                    const t = this._ranges[this._ranges.length - 1];
                    return this._lastRangeBackward ? t.start : t.end
                }
                return null
            }
            get isCollapsed() {
                return 1 === this._ranges.length && this._ranges[0].isCollapsed
            }
            get rangeCount() {
                return this._ranges.length
            }
            get isBackward() {
                return !this.isCollapsed && this._lastRangeBackward
            }
            isEqual(t) {
                if (this.rangeCount != t.rangeCount) return !1;
                if (0 === this.rangeCount) return !0;
                if (!this.anchor.isEqual(t.anchor) || !this.focus.isEqual(t.focus)) return !1;
                for (const e of this._ranges) {
                    let n = !1;
                    for (const o of t._ranges)
                        if (e.isEqual(o)) {
                            n = !0;
                            break
                        } if (!n) return !1
                }
                return !0
            }* getRanges() {
                for (const t of this._ranges) yield new Hl(t.start, t.end)
            }
            getFirstRange() {
                let t = null;
                for (const e of this._ranges) t && !e.start.isBefore(t.start) || (t = e);
                return t ? new Hl(t.start, t.end) : null
            }
            getLastRange() {
                let t = null;
                for (const e of this._ranges) t && !e.end.isAfter(t.end) || (t = e);
                return t ? new Hl(t.start, t.end) : null
            }
            getFirstPosition() {
                const t = this.getFirstRange();
                return t ? t.start.clone() : null
            }
            getLastPosition() {
                const t = this.getLastRange();
                return t ? t.end.clone() : null
            }
            setTo(...t) {
                let [e, n, o] = t;
                if ("object" == typeof n && (o = n, n = void 0), null === e) this._setRanges([]);
                else if (e instanceof rd) this._setRanges(e.getRanges(), e.isBackward);
                else if (e && "function" == typeof e.getRanges) this._setRanges(e.getRanges(), e.isBackward);
                else if (e instanceof Hl) this._setRanges([e], !!o && !!o.backward);
                else if (e instanceof Ll) this._setRanges([new Hl(e)]);
                else if (e instanceof Ml) {
                    const t = !!o && !!o.backward;
                    let i;
                    if ("in" == n) i = Hl._createIn(e);
                    else if ("on" == n) i = Hl._createOn(e);
                    else {
                        if (void 0 === n) throw new A("model-selection-setto-required-second-parameter", [this, e]);
                        i = new Hl(Ll._createAt(e, n))
                    }
                    this._setRanges([i], t)
                } else {
                    if (!nt(e)) throw new A("model-selection-setto-not-selectable", [this, e]);
                    this._setRanges(e, o && !!o.backward)
                }
            }
            _setRanges(t, e = !1) {
                const n = Array.from(t),
                    o = n.some((e => {
                        if (!(e instanceof Hl)) throw new A("model-selection-set-ranges-not-range", [this, t]);
                        return this._ranges.every((t => !t.isEqual(e)))
                    }));
                (n.length !== this._ranges.length || o) && (this._replaceAllRanges(n), this._lastRangeBackward = !!e, this.fire("change:range", {
                    directChange: !0
                }))
            }
            setFocus(t, e) {
                if (null === this.anchor) throw new A("model-selection-setfocus-no-ranges", [this, t]);
                const n = Ll._createAt(t, e);
                if ("same" == n.compareWith(this.focus)) return;
                const o = this.anchor;
                this._ranges.length && this._popRange(), "before" == n.compareWith(o) ? (this._pushRange(new Hl(n, o)), this._lastRangeBackward = !0) : (this._pushRange(new Hl(o, n)), this._lastRangeBackward = !1), this.fire("change:range", {
                    directChange: !0
                })
            }
            getAttribute(t) {
                return this._attrs.get(t)
            }
            getAttributes() {
                return this._attrs.entries()
            }
            getAttributeKeys() {
                return this._attrs.keys()
            }
            hasAttribute(t) {
                return this._attrs.has(t)
            }
            removeAttribute(t) {
                this.hasAttribute(t) && (this._attrs.delete(t), this.fire("change:attribute", {
                    attributeKeys: [t],
                    directChange: !0
                }))
            }
            setAttribute(t, e) {
                this.getAttribute(t) !== e && (this._attrs.set(t, e), this.fire("change:attribute", {
                    attributeKeys: [t],
                    directChange: !0
                }))
            }
            getSelectedElement() {
                return 1 !== this.rangeCount ? null : this.getFirstRange().getContainedElement()
            }* getSelectedBlocks() {
                const t = new WeakSet;
                for (const e of this.getRanges()) {
                    const n = cd(e.start, t);
                    dd(n, e) && (yield n);
                    for (const n of e.getWalker()) {
                        const o = n.item;
                        "elementEnd" == n.type && ad(o, t, e) && (yield o)
                    }
                    const o = cd(e.end, t);
                    hd(o, e) && (yield o)
                }
            }
            containsEntireContent(t = this.anchor.root) {
                const e = Ll._createAt(t, 0),
                    n = Ll._createAt(t, "end");
                return e.isTouching(this.getFirstPosition()) && n.isTouching(this.getLastPosition())
            }
            _pushRange(t) {
                this._checkRange(t), this._ranges.push(new Hl(t.start, t.end))
            }
            _checkRange(t) {
                for (let e = 0; e < this._ranges.length; e++)
                    if (t.isIntersecting(this._ranges[e])) throw new A("model-selection-range-intersects", [this, t], {
                        addedRange: t,
                        intersectingRange: this._ranges[e]
                    })
            }
            _replaceAllRanges(t) {
                this._removeAllRanges();
                for (const e of t) this._pushRange(e)
            }
            _removeAllRanges() {
                for (; this._ranges.length > 0;) this._popRange()
            }
            _popRange() {
                this._ranges.pop()
            }
        }

        function sd(t, e) {
            return !e.has(t) && (e.add(t), t.root.document.model.schema.isBlock(t) && !!t.parent)
        }

        function ad(t, e, n) {
            return sd(t, e) && ld(t, n)
        }

        function cd(t, e) {
            const n = t.parent.root.document.model.schema,
                o = t.parent.getAncestors({
                    parentFirst: !0,
                    includeSelf: !0
                });
            let i = !1;
            const r = o.find((t => !i && (i = n.isLimit(t), !i && sd(t, e))));
            return o.forEach((t => e.add(t))), r
        }

        function ld(t, e) {
            const n = function (t) {
                const e = t.root.document.model.schema;
                let n = t.parent;
                for (; n;) {
                    if (e.isBlock(n)) return n;
                    n = n.parent
                }
            }(t);
            if (!n) return !0;
            return !e.containsRange(Hl._createOn(n), !0)
        }

        function dd(t, e) {
            return !!t && (!(!e.isCollapsed && !t.isEmpty) || !e.start.isTouching(Ll._createAt(t, t.maxOffset)) && ld(t, e))
        }

        function hd(t, e) {
            return !!t && (!(!e.isCollapsed && !t.isEmpty) || !e.end.isTouching(Ll._createAt(t, 0)) && ld(t, e))
        }
        rd.prototype.is = function (t) {
            return "selection" === t || "model:selection" === t
        };
        class ud extends(B(Hl)) {
            constructor(t, e) {
                super(t, e), gd.call(this)
            }
            detach() {
                this.stopListening()
            }
            toRange() {
                return new Hl(this.start, this.end)
            }
            static fromRange(t) {
                return new ud(t.start, t.end)
            }
        }

        function gd() {
            this.listenTo(this.root.document.model, "applyOperation", ((t, e) => {
                const n = e[0];
                n.isDocumentOperation && pd.call(this, n)
            }), {
                priority: "low"
            })
        }

        function pd(t) {
            const e = this.getTransformedByOperation(t),
                n = Hl._createFromRanges(e),
                o = !n.isEqual(this),
                i = function (t, e) {
                    switch (e.type) {
                        case "insert":
                            return t.containsPosition(e.position);
                        case "move":
                        case "remove":
                        case "reinsert":
                        case "merge":
                            return t.containsPosition(e.sourcePosition) || t.start.isEqual(e.sourcePosition) || t.containsPosition(e.targetPosition);
                        case "split":
                            return t.containsPosition(e.splitPosition) || t.containsPosition(e.insertionPosition)
                    }
                    return !1
                }(this, t);
            let r = null;
            if (o) {
                "$graveyard" == n.root.rootName && (r = "remove" == t.type ? t.sourcePosition : t.deletionPosition);
                const e = this.toRange();
                this.start = n.start, this.end = n.end, this.fire("change:range", e, {
                    deletionPosition: r
                })
            } else i && this.fire("change:content", this.toRange(), {
                deletionPosition: r
            })
        }
        ud.prototype.is = function (t) {
            return "liveRange" === t || "model:liveRange" === t || "range" == t || "model:range" === t
        };
        const md = "selection:";
        class fd extends(B(Il)) {
            constructor(t) {
                super(), this._selection = new kd(t), this._selection.delegate("change:range").to(this), this._selection.delegate("change:attribute").to(this), this._selection.delegate("change:marker").to(this)
            }
            get isCollapsed() {
                return this._selection.isCollapsed
            }
            get anchor() {
                return this._selection.anchor
            }
            get focus() {
                return this._selection.focus
            }
            get rangeCount() {
                return this._selection.rangeCount
            }
            get hasOwnRange() {
                return this._selection.hasOwnRange
            }
            get isBackward() {
                return this._selection.isBackward
            }
            get isGravityOverridden() {
                return this._selection.isGravityOverridden
            }
            get markers() {
                return this._selection.markers
            }
            get _ranges() {
                return this._selection._ranges
            }
            getRanges() {
                return this._selection.getRanges()
            }
            getFirstPosition() {
                return this._selection.getFirstPosition()
            }
            getLastPosition() {
                return this._selection.getLastPosition()
            }
            getFirstRange() {
                return this._selection.getFirstRange()
            }
            getLastRange() {
                return this._selection.getLastRange()
            }
            getSelectedBlocks() {
                return this._selection.getSelectedBlocks()
            }
            getSelectedElement() {
                return this._selection.getSelectedElement()
            }
            containsEntireContent(t) {
                return this._selection.containsEntireContent(t)
            }
            destroy() {
                this._selection.destroy()
            }
            getAttributeKeys() {
                return this._selection.getAttributeKeys()
            }
            getAttributes() {
                return this._selection.getAttributes()
            }
            getAttribute(t) {
                return this._selection.getAttribute(t)
            }
            hasAttribute(t) {
                return this._selection.hasAttribute(t)
            }
            refresh() {
                this._selection.updateMarkers(), this._selection._updateAttributes(!1)
            }
            observeMarkers(t) {
                this._selection.observeMarkers(t)
            }
            _setFocus(t, e) {
                this._selection.setFocus(t, e)
            }
            _setTo(...t) {
                this._selection.setTo(...t)
            }
            _setAttribute(t, e) {
                this._selection.setAttribute(t, e)
            }
            _removeAttribute(t) {
                this._selection.removeAttribute(t)
            }
            _getStoredAttributes() {
                return this._selection.getStoredAttributes()
            }
            _overrideGravity() {
                return this._selection.overrideGravity()
            }
            _restoreGravity(t) {
                this._selection.restoreGravity(t)
            }
            static _getStoreAttributeKey(t) {
                return md + t
            }
            static _isStoreAttributeKey(t) {
                return t.startsWith(md)
            }
        }
        fd.prototype.is = function (t) {
            return "selection" === t || "model:selection" == t || "documentSelection" == t || "model:documentSelection" == t
        };
        class kd extends rd {
            constructor(t) {
                super(), this.markers = new Si({
                    idProperty: "name"
                }), this._attributePriority = new Map, this._selectionRestorePosition = null, this._hasChangedRange = !1, this._overriddenGravityRegister = new Set, this._observedMarkers = new Set, this._model = t.model, this._document = t, this.listenTo(this._model, "applyOperation", ((t, e) => {
                    const n = e[0];
                    n.isDocumentOperation && "marker" != n.type && "rename" != n.type && "noop" != n.type && (0 == this._ranges.length && this._selectionRestorePosition && this._fixGraveyardSelection(this._selectionRestorePosition), this._selectionRestorePosition = null, this._hasChangedRange && (this._hasChangedRange = !1, this.fire("change:range", {
                        directChange: !1
                    })))
                }), {
                    priority: "lowest"
                }), this.on("change:range", (() => {
                    this._validateSelectionRanges(this.getRanges())
                })), this.listenTo(this._model.markers, "update", ((t, e, n, o) => {
                    this._updateMarker(e, o)
                })), this.listenTo(this._document, "change", ((t, e) => {
                    ! function (t, e) {
                        const n = t.document.differ;
                        for (const o of n.getChanges()) {
                            if ("insert" != o.type) continue;
                            const n = o.position.parent;
                            o.length === n.maxOffset && t.enqueueChange(e, (t => {
                                const e = Array.from(n.getAttributeKeys()).filter((t => t.startsWith(md)));
                                for (const o of e) t.removeAttribute(o, n)
                            }))
                        }
                    }(this._model, e)
                }))
            }
            get isCollapsed() {
                return 0 === this._ranges.length ? this._document._getDefaultRange().isCollapsed : super.isCollapsed
            }
            get anchor() {
                return super.anchor || this._document._getDefaultRange().start
            }
            get focus() {
                return super.focus || this._document._getDefaultRange().end
            }
            get rangeCount() {
                return this._ranges.length ? this._ranges.length : 1
            }
            get hasOwnRange() {
                return this._ranges.length > 0
            }
            get isGravityOverridden() {
                return !!this._overriddenGravityRegister.size
            }
            destroy() {
                for (let t = 0; t < this._ranges.length; t++) this._ranges[t].detach();
                this.stopListening()
            }* getRanges() {
                this._ranges.length ? yield* super.getRanges(): yield this._document._getDefaultRange()
            }
            getFirstRange() {
                return super.getFirstRange() || this._document._getDefaultRange()
            }
            getLastRange() {
                return super.getLastRange() || this._document._getDefaultRange()
            }
            setTo(...t) {
                super.setTo(...t), this._updateAttributes(!0), this.updateMarkers()
            }
            setFocus(t, e) {
                super.setFocus(t, e), this._updateAttributes(!0), this.updateMarkers()
            }
            setAttribute(t, e) {
                if (this._setAttribute(t, e)) {
                    const e = [t];
                    this.fire("change:attribute", {
                        attributeKeys: e,
                        directChange: !0
                    })
                }
            }
            removeAttribute(t) {
                if (this._removeAttribute(t)) {
                    const e = [t];
                    this.fire("change:attribute", {
                        attributeKeys: e,
                        directChange: !0
                    })
                }
            }
            overrideGravity() {
                const t = f();
                return this._overriddenGravityRegister.add(t), 1 === this._overriddenGravityRegister.size && this._updateAttributes(!0), t
            }
            restoreGravity(t) {
                if (!this._overriddenGravityRegister.has(t)) throw new A("document-selection-gravity-wrong-restore", this, {
                    uid: t
                });
                this._overriddenGravityRegister.delete(t), this.isGravityOverridden || this._updateAttributes(!0)
            }
            observeMarkers(t) {
                this._observedMarkers.add(t), this.updateMarkers()
            }
            _replaceAllRanges(t) {
                this._validateSelectionRanges(t), super._replaceAllRanges(t)
            }
            _popRange() {
                this._ranges.pop().detach()
            }
            _pushRange(t) {
                const e = this._prepareRange(t);
                e && this._ranges.push(e)
            }
            _validateSelectionRanges(t) {
                for (const e of t)
                    if (!this._document._validateSelectionRange(e)) throw new A("document-selection-wrong-position", this, {
                        range: e
                    })
            }
            _prepareRange(t) {
                if (this._checkRange(t), t.root == this._document.graveyard) return;
                const e = ud.fromRange(t);
                return e.on("change:range", ((t, n, o) => {
                    if (this._hasChangedRange = !0, e.root == this._document.graveyard) {
                        this._selectionRestorePosition = o.deletionPosition;
                        const t = this._ranges.indexOf(e);
                        this._ranges.splice(t, 1), e.detach()
                    }
                })), e
            }
            updateMarkers() {
                if (!this._observedMarkers.size) return;
                const t = [];
                let e = !1;
                for (const e of this._model.markers) {
                    const n = e.name.split(":", 1)[0];
                    if (!this._observedMarkers.has(n)) continue;
                    const o = e.getRange();
                    for (const n of this.getRanges()) o.containsRange(n, !n.isCollapsed) && t.push(e)
                }
                const n = Array.from(this.markers);
                for (const n of t) this.markers.has(n) || (this.markers.add(n), e = !0);
                for (const n of Array.from(this.markers)) t.includes(n) || (this.markers.remove(n), e = !0);
                e && this.fire("change:marker", {
                    oldMarkers: n,
                    directChange: !1
                })
            }
            _updateMarker(t, e) {
                const n = t.name.split(":", 1)[0];
                if (!this._observedMarkers.has(n)) return;
                let o = !1;
                const i = Array.from(this.markers),
                    r = this.markers.has(t);
                if (e) {
                    let n = !1;
                    for (const t of this.getRanges())
                        if (e.containsRange(t, !t.isCollapsed)) {
                            n = !0;
                            break
                        } n && !r ? (this.markers.add(t), o = !0) : !n && r && (this.markers.remove(t), o = !0)
                } else r && (this.markers.remove(t), o = !0);
                o && this.fire("change:marker", {
                    oldMarkers: i,
                    directChange: !1
                })
            }
            _updateAttributes(t) {
                const e = Bi(this._getSurroundingAttributes()),
                    n = Bi(this.getAttributes());
                if (t) this._attributePriority = new Map, this._attrs = new Map;
                else
                    for (const [t, e] of this._attributePriority) "low" == e && (this._attrs.delete(t), this._attributePriority.delete(t));
                this._setAttributesTo(e);
                const o = [];
                for (const [t, e] of this.getAttributes()) n.has(t) && n.get(t) === e || o.push(t);
                for (const [t] of n) this.hasAttribute(t) || o.push(t);
                o.length > 0 && this.fire("change:attribute", {
                    attributeKeys: o,
                    directChange: !1
                })
            }
            _setAttribute(t, e, n = !0) {
                const o = n ? "normal" : "low";
                if ("low" == o && "normal" == this._attributePriority.get(t)) return !1;
                return super.getAttribute(t) !== e && (this._attrs.set(t, e), this._attributePriority.set(t, o), !0)
            }
            _removeAttribute(t, e = !0) {
                const n = e ? "normal" : "low";
                return ("low" != n || "normal" != this._attributePriority.get(t)) && (this._attributePriority.set(t, n), !!super.hasAttribute(t) && (this._attrs.delete(t), !0))
            }
            _setAttributesTo(t) {
                const e = new Set;
                for (const [e, n] of this.getAttributes()) t.get(e) !== n && this._removeAttribute(e, !1);
                for (const [n, o] of t) {
                    this._setAttribute(n, o, !1) && e.add(n)
                }
                return e
            }* getStoredAttributes() {
                const t = this.getFirstPosition().parent;
                if (this.isCollapsed && t.isEmpty)
                    for (const e of t.getAttributeKeys())
                        if (e.startsWith(md)) {
                            const n = e.substr(10);
                            yield [n, t.getAttribute(e)]
                        }
            }
            _getSurroundingAttributes() {
                const t = this.getFirstPosition(),
                    e = this._model.schema;
                if ("$graveyard" == t.root.rootName) return null;
                let n = null;
                if (this.isCollapsed) {
                    const o = t.textNode ? t.textNode : t.nodeBefore,
                        i = t.textNode ? t.textNode : t.nodeAfter;
                    if (this.isGravityOverridden || (n = bd(o, e)), n || (n = bd(i, e)), !this.isGravityOverridden && !n) {
                        let t = o;
                        for (; t && !n;) t = t.previousSibling, n = bd(t, e)
                    }
                    if (!n) {
                        let t = i;
                        for (; t && !n;) t = t.nextSibling, n = bd(t, e)
                    }
                    n || (n = this.getStoredAttributes())
                } else {
                    const t = this.getFirstRange();
                    for (const o of t) {
                        if (o.item.is("element") && e.isObject(o.item)) {
                            n = bd(o.item, e);
                            break
                        }
                        if ("text" == o.type) {
                            n = o.item.getAttributes();
                            break
                        }
                    }
                }
                return n
            }
            _fixGraveyardSelection(t) {
                const e = this._model.schema.getNearestSelectionRange(t);
                e && this._pushRange(e)
            }
        }

        function bd(t, e) {
            if (!t) return null;
            if (t instanceof Nl || t instanceof Bl) return t.getAttributes();
            if (!e.isInline(t)) return null;
            if (!e.isObject(t)) return [];
            const n = [];
            for (const [o, i] of t.getAttributes()) e.checkAttribute("$text", o) && !1 !== e.getAttributeProperties(o).copyFromObject && n.push([o, i]);
            return n
        }
        class wd {
            constructor(t) {
                this._dispatchers = t
            }
            add(t) {
                for (const e of this._dispatchers) t(e);
                return this
            }
        }
        class Ad extends wd {
            elementToElement(t) {
                return this.add(function (t) {
                    const e = vd(t.model),
                        n = yd(t.view, "container");
                    e.attributes.length && (e.children = !0);
                    return o => {
                        o.on(`insert:${e.name}`, function (t, e = Bd) {
                            return (n, o, i) => {
                                if (!e(o.item, i.consumable, {
                                        preflight: !0
                                    })) return;
                                const r = t(o.item, i, o);
                                if (!r) return;
                                e(o.item, i.consumable);
                                const s = i.mapper.toViewPosition(o.range.start);
                                i.mapper.bindElements(o.item, r), i.writer.insert(s, r), i.convertAttributes(o.item), Md(r, o.item.getChildren(), i, {
                                    reconversion: o.reconversion
                                })
                            }
                        }(n, Id(e)), {
                            priority: t.converterPriority || "normal"
                        }), (e.children || e.attributes.length) && o.on("reduceChanges", Sd(e), {
                            priority: "low"
                        })
                    }
                }(t))
            }
            elementToStructure(t) {
                return this.add(function (t) {
                    const e = vd(t.model),
                        n = yd(t.view, "container");
                    return e.children = !0, o => {
                        if (o._conversionApi.schema.checkChild(e.name, "$text")) throw new A("conversion-element-to-structure-disallowed-text", o, {
                            elementName: e.name
                        });
                        var i, r;
                        o.on(`insert:${e.name}`, (i = n, r = Id(e), (t, e, n) => {
                            if (!r(e.item, n.consumable, {
                                    preflight: !0
                                })) return;
                            const o = new Map;
                            n.writer._registerSlotFactory(function (t, e, n) {
                                return (o, i) => {
                                    const r = o.createContainerElement("$slot");
                                    let s = null;
                                    if ("children" === i) s = Array.from(t.getChildren());
                                    else {
                                        if ("function" != typeof i) throw new A("conversion-slot-mode-unknown", n.dispatcher, {
                                            modeOrFilter: i
                                        });
                                        s = Array.from(t.getChildren()).filter((t => i(t)))
                                    }
                                    return e.set(r, s), r
                                }
                            }(e.item, o, n));
                            const s = i(e.item, n, e);
                            if (n.writer._clearSlotFactory(), !s) return;
                            ! function (t, e, n) {
                                const o = Array.from(e.values()).flat(),
                                    i = new Set(o);
                                if (i.size != o.length) throw new A("conversion-slot-filter-overlap", n.dispatcher, {
                                    element: t
                                });
                                if (i.size != t.childCount) throw new A("conversion-slot-filter-incomplete", n.dispatcher, {
                                    element: t
                                })
                            }(e.item, o, n), r(e.item, n.consumable);
                            const a = n.mapper.toViewPosition(e.range.start);
                            n.mapper.bindElements(e.item, s), n.writer.insert(a, s), n.convertAttributes(e.item),
                                function (t, e, n, o) {
                                    n.mapper.on("modelToViewPosition", s, {
                                        priority: "highest"
                                    });
                                    let i = null,
                                        r = null;
                                    for ([i, r] of e) Md(t, r, n, o), n.writer.move(n.writer.createRangeIn(i), n.writer.createPositionBefore(i)), n.writer.remove(i);

                                    function s(t, e) {
                                        const n = e.modelPosition.nodeAfter,
                                            o = r.indexOf(n);
                                        o < 0 || (e.viewPosition = e.mapper.findPositionIn(i, o))
                                    }
                                    n.mapper.off("modelToViewPosition", s)
                                }(s, o, n, {
                                    reconversion: e.reconversion
                                })
                        }), {
                            priority: t.converterPriority || "normal"
                        }), o.on("reduceChanges", Sd(e), {
                            priority: "low"
                        })
                    }
                }(t))
            }
            attributeToElement(t) {
                return this.add(function (t) {
                    t = Dl(t);
                    let e = t.model;
                    "string" == typeof e && (e = {
                        key: e
                    });
                    let n = `attribute:${e.key}`;
                    e.name && (n += ":" + e.name);
                    if (e.values)
                        for (const n of e.values) t.view[n] = yd(t.view[n], "attribute");
                    else t.view = yd(t.view, "attribute");
                    const o = xd(t);
                    return e => {
                        e.on(n, function (t) {
                            return (e, n, o) => {
                                if (!o.consumable.test(n.item, e.name)) return;
                                const i = t(n.attributeOldValue, o, n),
                                    r = t(n.attributeNewValue, o, n);
                                if (!i && !r) return;
                                o.consumable.consume(n.item, e.name);
                                const s = o.writer,
                                    a = s.document.selection;
                                if (n.item instanceof rd || n.item instanceof fd) s.wrap(a.getFirstRange(), r);
                                else {
                                    let t = o.mapper.toViewRange(n.range);
                                    null !== n.attributeOldValue && i && (t = s.unwrap(t, i)), null !== n.attributeNewValue && r && s.wrap(t, r)
                                }
                            }
                        }(o), {
                            priority: t.converterPriority || "normal"
                        })
                    }
                }(t))
            }
            attributeToAttribute(t) {
                return this.add(function (t) {
                    t = Dl(t);
                    let e = t.model;
                    "string" == typeof e && (e = {
                        key: e
                    });
                    let n = `attribute:${e.key}`;
                    e.name && (n += ":" + e.name);
                    if (e.values)
                        for (const n of e.values) t.view[n] = Ed(t.view[n]);
                    else t.view = Ed(t.view);
                    const o = xd(t);
                    return e => {
                        var i;
                        e.on(n, (i = o, (t, e, n) => {
                            if (!n.consumable.test(e.item, t.name)) return;
                            const o = i(e.attributeOldValue, n, e),
                                r = i(e.attributeNewValue, n, e);
                            if (!o && !r) return;
                            n.consumable.consume(e.item, t.name);
                            const s = n.mapper.toViewElement(e.item),
                                a = n.writer;
                            if (!s) throw new A("conversion-attribute-to-attribute-on-text", n.dispatcher, e);
                            if (null !== e.attributeOldValue && o)
                                if ("class" == o.key) {
                                    const t = vi(o.value);
                                    for (const e of t) a.removeClass(e, s)
                                } else if ("style" == o.key) {
                                const t = Object.keys(o.value);
                                for (const e of t) a.removeStyle(e, s)
                            } else a.removeAttribute(o.key, s);
                            if (null !== e.attributeNewValue && r)
                                if ("class" == r.key) {
                                    const t = vi(r.value);
                                    for (const e of t) a.addClass(e, s)
                                } else if ("style" == r.key) {
                                const t = Object.keys(r.value);
                                for (const e of t) a.setStyle(e, r.value[e], s)
                            } else a.setAttribute(r.key, r.value, s)
                        }), {
                            priority: t.converterPriority || "normal"
                        })
                    }
                }(t))
            }
            markerToElement(t) {
                return this.add(function (t) {
                    const e = yd(t.view, "ui");
                    return n => {
                        var o;
                        n.on(`addMarker:${t.model}`, (o = e, (t, e, n) => {
                            e.isOpening = !0;
                            const i = o(e, n);
                            e.isOpening = !1;
                            const r = o(e, n);
                            if (!i || !r) return;
                            const s = e.markerRange;
                            if (s.isCollapsed && !n.consumable.consume(s, t.name)) return;
                            for (const e of s)
                                if (!n.consumable.consume(e.item, t.name)) return;
                            const a = n.mapper,
                                c = n.writer;
                            c.insert(a.toViewPosition(s.start), i), n.mapper.bindElementToMarker(i, e.markerName), s.isCollapsed || (c.insert(a.toViewPosition(s.end), r), n.mapper.bindElementToMarker(r, e.markerName)), t.stop()
                        }), {
                            priority: t.converterPriority || "normal"
                        }), n.on(`removeMarker:${t.model}`, ((t, e, n) => {
                            const o = n.mapper.markerNameToElements(e.markerName);
                            if (o) {
                                for (const t of o) n.mapper.unbindElementFromMarkerName(t, e.markerName), n.writer.clear(n.writer.createRangeOn(t), t);
                                n.writer.clearClonedElementsGroup(e.markerName), t.stop()
                            }
                        }), {
                            priority: t.converterPriority || "normal"
                        })
                    }
                }(t))
            }
            markerToHighlight(t) {
                return this.add(function (t) {
                    return e => {
                        var n;
                        e.on(`addMarker:${t.model}`, (n = t.view, (t, e, o) => {
                            if (!e.item) return;
                            if (!(e.item instanceof rd || e.item instanceof fd || e.item.is("$textProxy"))) return;
                            const i = Dd(n, e, o);
                            if (!i) return;
                            if (!o.consumable.consume(e.item, t.name)) return;
                            const r = o.writer,
                                s = Cd(r, i),
                                a = r.document.selection;
                            if (e.item instanceof rd || e.item instanceof fd) r.wrap(a.getFirstRange(), s);
                            else {
                                const t = o.mapper.toViewRange(e.range),
                                    n = r.wrap(t, s);
                                for (const t of n.getItems())
                                    if (t.is("attributeElement") && t.isSimilar(s)) {
                                        o.mapper.bindElementToMarker(t, e.markerName);
                                        break
                                    }
                            }
                        }), {
                            priority: t.converterPriority || "normal"
                        }), e.on(`addMarker:${t.model}`, function (t) {
                            return (e, n, o) => {
                                if (!n.item) return;
                                if (!(n.item instanceof Pl)) return;
                                const i = Dd(t, n, o);
                                if (!i) return;
                                if (!o.consumable.test(n.item, e.name)) return;
                                const r = o.mapper.toViewElement(n.item);
                                if (r && r.getCustomProperty("addHighlight")) {
                                    o.consumable.consume(n.item, e.name);
                                    for (const t of Hl._createIn(n.item)) o.consumable.consume(t.item, e.name);
                                    r.getCustomProperty("addHighlight")(r, i, o.writer), o.mapper.bindElementToMarker(r, n.markerName)
                                }
                            }
                        }(t.view), {
                            priority: t.converterPriority || "normal"
                        }), e.on(`removeMarker:${t.model}`, function (t) {
                            return (e, n, o) => {
                                if (n.markerRange.isCollapsed) return;
                                const i = Dd(t, n, o);
                                if (!i) return;
                                const r = Cd(o.writer, i),
                                    s = o.mapper.markerNameToElements(n.markerName);
                                if (s) {
                                    for (const t of s)
                                        if (o.mapper.unbindElementFromMarkerName(t, n.markerName), t.is("attributeElement")) o.writer.unwrap(o.writer.createRangeOn(t), r);
                                        else {
                                            t.getCustomProperty("removeHighlight")(t, i.id, o.writer)
                                        } o.writer.clearClonedElementsGroup(n.markerName), e.stop()
                                }
                            }
                        }(t.view), {
                            priority: t.converterPriority || "normal"
                        })
                    }
                }(t))
            }
            markerToData(t) {
                return this.add(function (t) {
                    t = Dl(t);
                    const e = t.model;
                    let n = t.view;
                    n || (n = n => ({
                        group: e,
                        name: n.substr(t.model.length + 1)
                    }));
                    return o => {
                        var i;
                        o.on(`addMarker:${e}`, (i = n, (t, e, n) => {
                            const o = i(e.markerName, n);
                            if (!o) return;
                            const r = e.markerRange;
                            n.consumable.consume(r, t.name) && (_d(r, !1, n, e, o), _d(r, !0, n, e, o), t.stop())
                        }), {
                            priority: t.converterPriority || "normal"
                        }), o.on(`removeMarker:${e}`, function (t) {
                            return (e, n, o) => {
                                const i = t(n.markerName, o);
                                if (!i) return;
                                const r = o.mapper.markerNameToElements(n.markerName);
                                if (r) {
                                    for (const t of r) o.mapper.unbindElementFromMarkerName(t, n.markerName), t.is("containerElement") ? (s(`data-${i.group}-start-before`, t), s(`data-${i.group}-start-after`, t), s(`data-${i.group}-end-before`, t), s(`data-${i.group}-end-after`, t)) : o.writer.clear(o.writer.createRangeOn(t), t);
                                    o.writer.clearClonedElementsGroup(n.markerName), e.stop()
                                }

                                function s(t, e) {
                                    if (e.hasAttribute(t)) {
                                        const n = new Set(e.getAttribute(t).split(","));
                                        n.delete(i.name), 0 == n.size ? o.writer.removeAttribute(t, e) : o.writer.setAttribute(t, Array.from(n).join(","), e)
                                    }
                                }
                            }
                        }(n), {
                            priority: t.converterPriority || "normal"
                        })
                    }
                }(t))
            }
        }

        function Cd(t, e) {
            const n = t.createAttributeElement("span", e.attributes);
            return e.classes && n._addClass(e.classes), "number" == typeof e.priority && (n._priority = e.priority), n._id = e.id, n
        }

        function _d(t, e, n, o, i) {
            const r = e ? t.start : t.end,
                s = r.nodeAfter && r.nodeAfter.is("element") ? r.nodeAfter : null,
                a = r.nodeBefore && r.nodeBefore.is("element") ? r.nodeBefore : null;
            if (s || a) {
                let t, r;
                e && s || !e && !a ? (t = s, r = !0) : (t = a, r = !1);
                const c = n.mapper.toViewElement(t);
                if (c) return void

                function (t, e, n, o, i, r) {
                    const s = `data-${r.group}-${e?"start":"end"}-${n?"before":"after"}`,
                        a = t.hasAttribute(s) ? t.getAttribute(s).split(",") : [];
                    a.unshift(r.name), o.writer.setAttribute(s, a.join(","), t), o.mapper.bindElementToMarker(t, i.markerName)
                }(c, e, r, n, o, i)
            }! function (t, e, n, o, i) {
                const r = `${i.group}-${e?"start":"end"}`,
                    s = i.name ? {
                        name: i.name
                    } : null,
                    a = n.writer.createUIElement(r, s);
                n.writer.insert(t, a), n.mapper.bindElementToMarker(a, o.markerName)
            }(n.mapper.toViewPosition(r), e, n, o, i)
        }

        function vd(t) {
            return "string" == typeof t && (t = {
                name: t
            }), t.attributes ? Array.isArray(t.attributes) || (t.attributes = [t.attributes]) : t.attributes = [], t.children = !!t.children, t
        }

        function yd(t, e) {
            return "function" == typeof t ? t : (n, o) => function (t, e, n) {
                "string" == typeof t && (t = {
                    name: t
                });
                let o;
                const i = e.writer,
                    r = Object.assign({}, t.attributes);
                if ("container" == n) o = i.createContainerElement(t.name, r);
                else if ("attribute" == n) {
                    const e = {
                        priority: t.priority || Oa.DEFAULT_PRIORITY
                    };
                    o = i.createAttributeElement(t.name, r, e)
                } else o = i.createUIElement(t.name, r);
                if (t.styles) {
                    const e = Object.keys(t.styles);
                    for (const n of e) i.setStyle(n, t.styles[n], o)
                }
                if (t.classes) {
                    const e = t.classes;
                    if ("string" == typeof e) i.addClass(e, o);
                    else
                        for (const t of e) i.addClass(t, o)
                }
                return o
            }(t, o, e)
        }

        function xd(t) {
            return t.model.values ? (e, n, o) => {
                const i = t.view[e];
                return i ? i(e, n, o) : null
            } : t.view
        }

        function Ed(t) {
            return "string" == typeof t ? e => ({
                key: t,
                value: e
            }) : "object" == typeof t ? t.value ? () => t : e => ({
                key: t.key,
                value: e
            }) : t
        }

        function Dd(t, e, n) {
            const o = "function" == typeof t ? t(e, n) : t;
            return o ? (o.priority || (o.priority = 10), o.id || (o.id = e.markerName), o) : null
        }

        function Sd(t) {
            const e = function (t) {
                return (e, n) => {
                    if (!e.is("element", t.name)) return !1;
                    if ("attribute" == n.type) {
                        if (t.attributes.includes(n.attributeKey)) return !0
                    } else if (t.children) return !0;
                    return !1
                }
            }(t);
            return (t, n) => {
                const o = [];
                n.reconvertedElements || (n.reconvertedElements = new Set);
                for (const t of n.changes) {
                    const i = "attribute" == t.type ? t.range.start.nodeAfter : t.position.parent;
                    if (i && e(i, t)) {
                        if (!n.reconvertedElements.has(i)) {
                            n.reconvertedElements.add(i);
                            const t = Ll._createBefore(i);
                            let e = o.length;
                            for (let n = o.length - 1; n >= 0; n--) {
                                const i = o[n],
                                    r = ("attribute" == i.type ? i.range.start : i.position).compareWith(t);
                                if ("before" == r || "remove" == i.type && "same" == r) break;
                                e = n
                            }
                            o.splice(e, 0, {
                                type: "remove",
                                name: i.name,
                                position: t,
                                length: 1
                            }, {
                                type: "reinsert",
                                name: i.name,
                                position: t,
                                length: 1
                            })
                        }
                    } else o.push(t)
                }
                n.changes = o
            }
        }

        function Id(t) {
            return (e, n, o = {}) => {
                const i = ["insert"];
                for (const n of t.attributes) e.hasAttribute(n) && i.push(`attribute:${n}`);
                return !!i.every((t => n.test(e, t))) && (o.preflight || i.forEach((t => n.consume(e, t))), !0)
            }
        }

        function Md(t, e, n, o) {
            for (const i of e) Td(t.root, i, n, o) || n.convertItem(i)
        }

        function Td(t, e, n, o) {
            const {
                writer: i,
                mapper: r
            } = n;
            if (!o.reconversion) return !1;
            const s = r.toViewElement(e);
            return !(!s || s.root == t) && (!!n.canReuseView(s) && (i.move(i.createRangeOn(s), r.toViewPosition(Ll._createBefore(e))), !0))
        }

        function Bd(t, e, {
            preflight: n
        } = {}) {
            return n ? e.test(t, "insert") : e.consume(t, "insert")
        }

        function Nd(t) {
            const {
                schema: e,
                document: n
            } = t.model;
            for (const o of n.getRoots())
                if (o.isEmpty && !e.checkChild(o, "$text") && e.checkChild(o, "paragraph")) return t.insertElement("paragraph", o), !0;
            return !1
        }

        function Pd(t, e, n) {
            const o = n.createContext(t);
            return !!n.checkChild(o, "paragraph") && !!n.checkChild(o.push("paragraph"), e)
        }

        function zd(t, e) {
            const n = e.createElement("paragraph");
            return e.insert(n, t), e.createPositionAt(n, 0)
        }
        var Od = Object.defineProperty,
            Ld = Object.defineProperties,
            jd = Object.getOwnPropertyDescriptors,
            Rd = Object.getOwnPropertySymbols,
            Fd = Object.prototype.hasOwnProperty,
            Vd = Object.prototype.propertyIsEnumerable,
            Ud = (t, e, n) => e in t ? Od(t, e, {
                enumerable: !0,
                configurable: !0,
                writable: !0,
                value: n
            }) : t[e] = n;
        class Hd extends wd {
            elementToElement(t) {
                return this.add(Gd(t))
            }
            elementToAttribute(t) {
                return this.add(function (t) {
                    t = Dl(t), Kd(t);
                    const e = Yd(t, !1),
                        n = qd(t.view),
                        o = n ? `element:${n}` : "element";
                    return n => {
                        n.on(o, e, {
                            priority: t.converterPriority || "low"
                        })
                    }
                }(t))
            }
            attributeToAttribute(t) {
                return this.add(function (t) {
                    t = Dl(t);
                    let e = null;
                    ("string" == typeof t.view || t.view.key) && (e = function (t) {
                        "string" == typeof t.view && (t.view = {
                            key: t.view
                        });
                        const e = t.view.key;
                        let n;
                        if ("class" == e || "style" == e) {
                            n = {
                                ["class" == e ? "classes" : "styles"]: t.view.value
                            }
                        } else {
                            n = {
                                attributes: {
                                    [e]: void 0 === t.view.value ? /[\s\S]*/ : t.view.value
                                }
                            }
                        }
                        t.view.name && (n.name = t.view.name);
                        return t.view = n, e
                    }(t));
                    Kd(t, e);
                    const n = Yd(t, !0);
                    return e => {
                        e.on("element", n, {
                            priority: t.converterPriority || "low"
                        })
                    }
                }(t))
            }
            elementToMarker(t) {
                return this.add(function (t) {
                    const e = function (t) {
                        return (e, n) => {
                            const o = "string" == typeof t ? t : t(e, n);
                            return n.writer.createElement("$marker", {
                                "data-name": o
                            })
                        }
                    }(t.model);
                    return Gd((n = ((t, e) => {
                        for (var n in e || (e = {})) Fd.call(e, n) && Ud(t, n, e[n]);
                        if (Rd)
                            for (var n of Rd(e)) Vd.call(e, n) && Ud(t, n, e[n]);
                        return t
                    })({}, t), o = {
                        model: e
                    }, Ld(n, jd(o))));
                    var n, o
                }(t))
            }
            dataToMarker(t) {
                return this.add(function (t) {
                    t = Dl(t), t.model || (t.model = e => e ? t.view + ":" + e : t.view);
                    const e = {
                            view: t.view,
                            model: t.model
                        },
                        n = Wd($d(e, "start")),
                        o = Wd($d(e, "end"));
                    return i => {
                        i.on(`element:${t.view}-start`, n, {
                            priority: t.converterPriority || "normal"
                        }), i.on(`element:${t.view}-end`, o, {
                            priority: t.converterPriority || "normal"
                        });
                        const r = k.low,
                            s = k.highest,
                            a = k.get(t.converterPriority) / s;
                        i.on("element", function (t) {
                            return (e, n, o) => {
                                const i = `data-${t.view}`;

                                function r(e, i) {
                                    for (const r of i) {
                                        const i = t.model(r, o),
                                            s = o.writer.createElement("$marker", {
                                                "data-name": i
                                            });
                                        o.writer.insert(s, e), n.modelCursor.isEqual(e) ? n.modelCursor = n.modelCursor.getShiftedBy(1) : n.modelCursor = n.modelCursor._getTransformedByInsertion(e, 1), n.modelRange = n.modelRange._getTransformedByInsertion(e, 1)[0]
                                    }
                                }(o.consumable.test(n.viewItem, {
                                    attributes: i + "-end-after"
                                }) || o.consumable.test(n.viewItem, {
                                    attributes: i + "-start-after"
                                }) || o.consumable.test(n.viewItem, {
                                    attributes: i + "-end-before"
                                }) || o.consumable.test(n.viewItem, {
                                    attributes: i + "-start-before"
                                })) && (n.modelRange || Object.assign(n, o.convertChildren(n.viewItem, n.modelCursor)), o.consumable.consume(n.viewItem, {
                                    attributes: i + "-end-after"
                                }) && r(n.modelRange.end, n.viewItem.getAttribute(i + "-end-after").split(",")), o.consumable.consume(n.viewItem, {
                                    attributes: i + "-start-after"
                                }) && r(n.modelRange.end, n.viewItem.getAttribute(i + "-start-after").split(",")), o.consumable.consume(n.viewItem, {
                                    attributes: i + "-end-before"
                                }) && r(n.modelRange.start, n.viewItem.getAttribute(i + "-end-before").split(",")), o.consumable.consume(n.viewItem, {
                                    attributes: i + "-start-before"
                                }) && r(n.modelRange.start, n.viewItem.getAttribute(i + "-start-before").split(",")))
                            }
                        }(e), {
                            priority: r + a
                        })
                    }
                }(t))
            }
        }

        function Gd(t) {
            const e = Wd(t = Dl(t)),
                n = qd(t.view),
                o = n ? `element:${n}` : "element";
            return n => {
                n.on(o, e, {
                    priority: t.converterPriority || "normal"
                })
            }
        }

        function qd(t) {
            return "string" == typeof t ? t : "object" == typeof t && "string" == typeof t.name ? t.name : null
        }

        function Wd(t) {
            const e = new ms(t.view);
            return (n, o, i) => {
                const r = e.match(o.viewItem);
                if (!r) return;
                const s = r.match;
                if (s.name = !0, !i.consumable.test(o.viewItem, s)) return;
                const a = function (t, e, n) {
                    return t instanceof Function ? t(e, n) : n.writer.createElement(t)
                }(t.model, o.viewItem, i);
                a && i.safeInsert(a, o.modelCursor) && (i.consumable.consume(o.viewItem, s), i.convertChildren(o.viewItem, a), i.updateConversionResult(a, o))
            }
        }

        function Kd(t, e = null) {
            const n = null === e || (t => t.getAttribute(e)),
                o = "object" != typeof t.model ? t.model : t.model.key,
                i = "object" != typeof t.model || void 0 === t.model.value ? n : t.model.value;
            t.model = {
                key: o,
                value: i
            }
        }

        function Yd(t, e) {
            const n = new ms(t.view);
            return (o, i, r) => {
                if (!i.modelRange && e) return;
                const s = n.match(i.viewItem);
                if (!s) return;
                if (! function (t, e) {
                        const n = "function" == typeof t ? t(e) : t;
                        if ("object" == typeof n && !qd(n)) return !1;
                        return !n.classes && !n.attributes && !n.styles
                    }(t.view, i.viewItem) ? delete s.match.name : s.match.name = !0, !r.consumable.test(i.viewItem, s.match)) return;
                const a = t.model.key,
                    c = "function" == typeof t.model.value ? t.model.value(i.viewItem, r) : t.model.value;
                if (null === c) return;
                i.modelRange || Object.assign(i, r.convertChildren(i.viewItem, i.modelCursor));
                const l = function (t, e, n, o) {
                    let i = !1;
                    for (const r of Array.from(t.getItems({
                            shallow: n
                        }))) o.schema.checkAttribute(r, e.key) && (i = !0, r.hasAttribute(e.key) || o.writer.setAttribute(e.key, e.value, r));
                    return i
                }(i.modelRange, {
                    key: a,
                    value: c
                }, e, r);
                l && (r.consumable.test(i.viewItem, {
                    name: !0
                }) && (s.match.name = !0), r.consumable.consume(i.viewItem, s.match))
            }
        }

        function $d(t, e) {
            return {
                view: `${t.view}-${e}`,
                model: (e, n) => {
                    const o = e.getAttribute("name"),
                        i = t.model(o, n);
                    return n.writer.createElement("$marker", {
                        "data-name": i
                    })
                }
            }
        }

        function Zd(t) {
            t.document.registerPostFixer((e => function (t, e) {
                const n = e.document.selection,
                    o = e.schema,
                    i = [];
                let r = !1;
                for (const t of n.getRanges()) {
                    const e = Qd(t, o);
                    e && !e.isEqual(t) ? (i.push(e), r = !0) : i.push(t)
                }
                r && t.setSelection(function (t) {
                    const e = [...t],
                        n = new Set;
                    let o = 1;
                    for (; o < e.length;) {
                        const t = e[o],
                            i = e.slice(0, o);
                        for (const [r, s] of i.entries())
                            if (!n.has(r))
                                if (t.isEqual(s)) n.add(r);
                                else if (t.isIntersecting(s)) {
                            n.add(r), n.add(o);
                            const i = t.getJoined(s);
                            e.push(i)
                        }
                        o++
                    }
                    return e.filter(((t, e) => !n.has(e)))
                }(i), {
                    backward: n.isBackward
                });
                return !1
            }(e, t)))
        }

        function Qd(t, e) {
            return t.isCollapsed ? function (t, e) {
                const n = t.start,
                    o = e.getNearestSelectionRange(n);
                if (!o) {
                    const t = n.getAncestors().reverse().find((t => e.isObject(t)));
                    return t ? Hl._createOn(t) : null
                }
                if (!o.isCollapsed) return o;
                const i = o.start;
                if (n.isEqual(i)) return null;
                return new Hl(i)
            }(t, e) : function (t, e) {
                const {
                    start: n,
                    end: o
                } = t, i = e.checkChild(n, "$text"), r = e.checkChild(o, "$text"), s = e.getLimitElement(n), a = e.getLimitElement(o);
                if (s === a) {
                    if (i && r) return null;
                    if (function (t, e, n) {
                            const o = t.nodeAfter && !n.isLimit(t.nodeAfter) || n.checkChild(t, "$text"),
                                i = e.nodeBefore && !n.isLimit(e.nodeBefore) || n.checkChild(e, "$text");
                            return o || i
                        }(n, o, e)) {
                        const t = n.nodeAfter && e.isSelectable(n.nodeAfter) ? null : e.getNearestSelectionRange(n, "forward"),
                            i = o.nodeBefore && e.isSelectable(o.nodeBefore) ? null : e.getNearestSelectionRange(o, "backward"),
                            r = t ? t.start : n,
                            s = i ? i.end : o;
                        return new Hl(r, s)
                    }
                }
                const c = s && !s.is("rootElement"),
                    l = a && !a.is("rootElement");
                if (c || l) {
                    const t = n.nodeAfter && o.nodeBefore && n.nodeAfter.parent === o.nodeBefore.parent,
                        i = c && (!t || !Xd(n.nodeAfter, e)),
                        r = l && (!t || !Xd(o.nodeBefore, e));
                    let d = n,
                        h = o;
                    return i && (d = Ll._createBefore(Jd(s, e))), r && (h = Ll._createAfter(Jd(a, e))), new Hl(d, h)
                }
                return null
            }(t, e)
        }

        function Jd(t, e) {
            let n = t,
                o = n;
            for (; e.isLimit(o) && o.parent;) n = o, o = o.parent;
            return n
        }

        function Xd(t, e) {
            return t && e.isSelectable(t)
        }
        class th extends(K()) {
            constructor(t, e) {
                super(), this.model = t, this.view = new Sl(e), this.mapper = new Gl, this.downcastDispatcher = new nd({
                    mapper: this.mapper,
                    schema: t.schema
                });
                const n = this.model.document,
                    o = n.selection,
                    i = this.model.markers;
                var r, s, c;
                this.listenTo(this.model, "_beforeChanges", (() => {
                    this.view._disableRendering(!0)
                }), {
                    priority: "highest"
                }), this.listenTo(this.model, "_afterChanges", (() => {
                    this.view._disableRendering(!1)
                }), {
                    priority: "lowest"
                }), this.listenTo(n, "change", (() => {
                    this.view.change((t => {
                        this.downcastDispatcher.convertChanges(n.differ, i, t), this.downcastDispatcher.convertSelection(o, i, t)
                    }))
                }), {
                    priority: "low"
                }), this.listenTo(this.view.document, "selectionChange", function (t, e) {
                    return (n, o) => {
                        const i = o.newSelection,
                            r = [];
                        for (const t of i.getRanges()) r.push(e.toModelRange(t));
                        const s = t.createSelection(r, {
                            backward: i.isBackward
                        });
                        s.isEqual(t.document.selection) || t.change((t => {
                            t.setSelection(s)
                        }))
                    }
                }(this.model, this.mapper)), this.listenTo(this.view.document, "beforeinput", (r = this.mapper, s = this.model.schema, c = this.view, (t, e) => {
                    if (!c.document.isComposing || a.isAndroid)
                        for (let t = 0; t < e.targetRanges.length; t++) {
                            const n = e.targetRanges[t],
                                o = r.toModelRange(n),
                                i = Qd(o, s);
                            i && !i.isEqual(o) && (e.targetRanges[t] = r.toViewRange(i))
                        }
                }), {
                    priority: "high"
                }), this.downcastDispatcher.on("insert:$text", ((t, e, n) => {
                    if (!n.consumable.consume(e.item, t.name)) return;
                    const o = n.writer,
                        i = n.mapper.toViewPosition(e.range.start),
                        r = o.createText(e.item.data);
                    o.insert(i, r)
                }), {
                    priority: "lowest"
                }), this.downcastDispatcher.on("insert", ((t, e, n) => {
                    n.convertAttributes(e.item), e.reconversion || !e.item.is("element") || e.item.isEmpty || n.convertChildren(e.item)
                }), {
                    priority: "lowest"
                }), this.downcastDispatcher.on("remove", ((t, e, n) => {
                    const o = n.mapper.toViewPosition(e.position),
                        i = e.position.getShiftedBy(e.length),
                        r = n.mapper.toViewPosition(i, {
                            isPhantom: !0
                        }),
                        s = n.writer.createRange(o, r),
                        a = n.writer.remove(s.getTrimmed());
                    for (const t of n.writer.createRangeIn(a).getItems()) n.mapper.unbindViewElement(t, {
                        defer: !0
                    })
                }), {
                    priority: "low"
                }), this.downcastDispatcher.on("cleanSelection", ((t, e, n) => {
                    const o = n.writer,
                        i = o.document.selection;
                    for (const t of i.getRanges()) t.isCollapsed && t.end.parent.isAttached() && n.writer.mergeAttributes(t.start);
                    o.setSelection(null)
                })), this.downcastDispatcher.on("selection", ((t, e, n) => {
                    const o = e.selection;
                    if (o.isCollapsed) return;
                    if (!n.consumable.consume(o, "selection")) return;
                    const i = [];
                    for (const t of o.getRanges()) i.push(n.mapper.toViewRange(t));
                    n.writer.setSelection(i, {
                        backward: o.isBackward
                    })
                }), {
                    priority: "low"
                }), this.downcastDispatcher.on("selection", ((t, e, n) => {
                    const o = e.selection;
                    if (!o.isCollapsed) return;
                    if (!n.consumable.consume(o, "selection")) return;
                    const i = n.writer,
                        r = o.getFirstPosition(),
                        s = n.mapper.toViewPosition(r),
                        a = i.breakAttributes(s);
                    i.setSelection(a)
                }), {
                    priority: "low"
                }), this.view.document.roots.bindTo(this.model.document.roots).using((t => {
                    if ("$graveyard" == t.rootName) return null;
                    const e = new Ca(this.view.document, t.name);
                    return e.rootName = t.rootName, this.mapper.bindElements(t, e), e
                }))
            }
            destroy() {
                this.view.destroy(), this.stopListening()
            }
            reconvertMarker(t) {
                const e = "string" == typeof t ? t : t.name,
                    n = this.model.markers.get(e);
                if (!n) throw new A("editingcontroller-reconvertmarker-marker-not-exist", this, {
                    markerName: e
                });
                this.model.change((() => {
                    this.model.markers._refresh(n)
                }))
            }
            reconvertItem(t) {
                this.model.change((() => {
                    this.model.document.differ._refreshItem(t)
                }))
            }
        }
        class eh {
            constructor() {
                this._consumables = new Map
            }
            add(t, e) {
                let n;
                t.is("$text") || t.is("documentFragment") ? this._consumables.set(t, !0) : (this._consumables.has(t) ? n = this._consumables.get(t) : (n = new oh(t), this._consumables.set(t, n)), n.add(e))
            }
            test(t, e) {
                const n = this._consumables.get(t);
                return void 0 === n ? null : t.is("$text") || t.is("documentFragment") ? n : n.test(e)
            }
            consume(t, e) {
                return !!this.test(t, e) && (t.is("$text") || t.is("documentFragment") ? this._consumables.set(t, !1) : this._consumables.get(t).consume(e), !0)
            }
            revert(t, e) {
                const n = this._consumables.get(t);
                void 0 !== n && (t.is("$text") || t.is("documentFragment") ? this._consumables.set(t, !0) : n.revert(e))
            }
            static consumablesFromElement(t) {
                const e = {
                        element: t,
                        name: !0,
                        attributes: [],
                        classes: [],
                        styles: []
                    },
                    n = t.getAttributeKeys();
                for (const t of n) "style" != t && "class" != t && e.attributes.push(t);
                const o = t.getClassNames();
                for (const t of o) e.classes.push(t);
                const i = t.getStyleNames();
                for (const t of i) e.styles.push(t);
                return e
            }
            static createFrom(t, e) {
                if (e || (e = new eh), t.is("$text")) return e.add(t), e;
                t.is("element") && e.add(t, eh.consumablesFromElement(t)), t.is("documentFragment") && e.add(t);
                for (const n of t.getChildren()) e = eh.createFrom(n, e);
                return e
            }
        }
        const nh = ["attributes", "classes", "styles"];
        class oh {
            constructor(t) {
                this.element = t, this._canConsumeName = null, this._consumables = {
                    attributes: new Map,
                    styles: new Map,
                    classes: new Map
                }
            }
            add(t) {
                t.name && (this._canConsumeName = !0);
                for (const e of nh) e in t && this._add(e, t[e])
            }
            test(t) {
                if (t.name && !this._canConsumeName) return this._canConsumeName;
                for (const e of nh)
                    if (e in t) {
                        const n = this._test(e, t[e]);
                        if (!0 !== n) return n
                    } return !0
            }
            consume(t) {
                t.name && (this._canConsumeName = !1);
                for (const e of nh) e in t && this._consume(e, t[e])
            }
            revert(t) {
                t.name && (this._canConsumeName = !0);
                for (const e of nh) e in t && this._revert(e, t[e])
            }
            _add(t, e) {
                const n = ft(e) ? e : [e],
                    o = this._consumables[t];
                for (const e of n) {
                    if ("attributes" === t && ("class" === e || "style" === e)) throw new A("viewconsumable-invalid-attribute", this);
                    if (o.set(e, !0), "styles" === t)
                        for (const t of this.element.document.stylesProcessor.getRelatedStyles(e)) o.set(t, !0)
                }
            }
            _test(t, e) {
                const n = ft(e) ? e : [e],
                    o = this._consumables[t];
                for (const e of n)
                    if ("attributes" !== t || "class" !== e && "style" !== e) {
                        const t = o.get(e);
                        if (void 0 === t) return null;
                        if (!t) return !1
                    } else {
                        const t = "class" == e ? "classes" : "styles",
                            n = this._test(t, [...this._consumables[t].keys()]);
                        if (!0 !== n) return n
                    } return !0
            }
            _consume(t, e) {
                const n = ft(e) ? e : [e],
                    o = this._consumables[t];
                for (const e of n)
                    if ("attributes" !== t || "class" !== e && "style" !== e) {
                        if (o.set(e, !1), "styles" == t)
                            for (const t of this.element.document.stylesProcessor.getRelatedStyles(e)) o.set(t, !1)
                    } else {
                        const t = "class" == e ? "classes" : "styles";
                        this._consume(t, [...this._consumables[t].keys()])
                    }
            }
            _revert(t, e) {
                const n = ft(e) ? e : [e],
                    o = this._consumables[t];
                for (const e of n)
                    if ("attributes" !== t || "class" !== e && "style" !== e) {
                        !1 === o.get(e) && o.set(e, !0)
                    } else {
                        const t = "class" == e ? "classes" : "styles";
                        this._revert(t, [...this._consumables[t].keys()])
                    }
            }
        }
        class ih extends(K()) {
            constructor() {
                super(), this._sourceDefinitions = {}, this._attributeProperties = {}, this.decorate("checkChild"), this.decorate("checkAttribute"), this.on("checkAttribute", ((t, e) => {
                    e[0] = new rh(e[0])
                }), {
                    priority: "highest"
                }), this.on("checkChild", ((t, e) => {
                    e[0] = new rh(e[0]), e[1] = this.getDefinition(e[1])
                }), {
                    priority: "highest"
                })
            }
            register(t, e) {
                if (this._sourceDefinitions[t]) throw new A("schema-cannot-register-item-twice", this, {
                    itemName: t
                });
                this._sourceDefinitions[t] = [Object.assign({}, e)], this._clearCache()
            }
            extend(t, e) {
                if (!this._sourceDefinitions[t]) throw new A("schema-cannot-extend-missing-item", this, {
                    itemName: t
                });
                this._sourceDefinitions[t].push(Object.assign({}, e)), this._clearCache()
            }
            getDefinitions() {
                return this._compiledDefinitions || this._compile(), this._compiledDefinitions
            }
            getDefinition(t) {
                let e;
                return e = "string" == typeof t ? t : "is" in t && (t.is("$text") || t.is("$textProxy")) ? "$text" : t.name, this.getDefinitions()[e]
            }
            isRegistered(t) {
                return !!this.getDefinition(t)
            }
            isBlock(t) {
                const e = this.getDefinition(t);
                return !(!e || !e.isBlock)
            }
            isLimit(t) {
                const e = this.getDefinition(t);
                return !!e && !(!e.isLimit && !e.isObject)
            }
            isObject(t) {
                const e = this.getDefinition(t);
                return !!e && !!(e.isObject || e.isLimit && e.isSelectable && e.isContent)
            }
            isInline(t) {
                const e = this.getDefinition(t);
                return !(!e || !e.isInline)
            }
            isSelectable(t) {
                const e = this.getDefinition(t);
                return !!e && !(!e.isSelectable && !e.isObject)
            }
            isContent(t) {
                const e = this.getDefinition(t);
                return !!e && !(!e.isContent && !e.isObject)
            }
            checkChild(t, e) {
                return !!e && this._checkContextMatch(e, t)
            }
            checkAttribute(t, e) {
                const n = this.getDefinition(t.last);
                return !!n && n.allowAttributes.includes(e)
            }
            checkMerge(t, e) {
                if (t instanceof Ll) {
                    const e = t.nodeBefore,
                        n = t.nodeAfter;
                    if (!(e instanceof Pl)) throw new A("schema-check-merge-no-element-before", this);
                    if (!(n instanceof Pl)) throw new A("schema-check-merge-no-element-after", this);
                    return this.checkMerge(e, n)
                }
                for (const n of e.getChildren())
                    if (!this.checkChild(t, n)) return !1;
                return !0
            }
            addChildCheck(t) {
                this.on("checkChild", ((e, [n, o]) => {
                    if (!o) return;
                    const i = t(n, o);
                    "boolean" == typeof i && (e.stop(), e.return = i)
                }), {
                    priority: "high"
                })
            }
            addAttributeCheck(t) {
                this.on("checkAttribute", ((e, [n, o]) => {
                    const i = t(n, o);
                    "boolean" == typeof i && (e.stop(), e.return = i)
                }), {
                    priority: "high"
                })
            }
            setAttributeProperties(t, e) {
                this._attributeProperties[t] = Object.assign(this.getAttributeProperties(t), e)
            }
            getAttributeProperties(t) {
                return this._attributeProperties[t] || {}
            }
            getLimitElement(t) {
                let e;
                if (t instanceof Ll) e = t.parent;
                else {
                    e = (t instanceof Hl ? [t] : Array.from(t.getRanges())).reduce(((t, e) => {
                        const n = e.getCommonAncestor();
                        return t ? t.getCommonAncestor(n, {
                            includeSelf: !0
                        }) : n
                    }), null)
                }
                for (; !this.isLimit(e) && e.parent;) e = e.parent;
                return e
            }
            checkAttributeInSelection(t, e) {
                if (t.isCollapsed) {
                    const n = [...t.getFirstPosition().getAncestors(), new Bl("", t.getAttributes())];
                    return this.checkAttribute(n, e)
                } {
                    const n = t.getRanges();
                    for (const t of n)
                        for (const n of t)
                            if (this.checkAttribute(n.item, e)) return !0
                }
                return !1
            }* getValidRanges(t, e) {
                t = function* (t) {
                    for (const e of t) yield* e.getMinimalFlatRanges()
                }(t);
                for (const n of t) yield* this._getValidRangesForRange(n, e)
            }
            getNearestSelectionRange(t, e = "both") {
                if ("$graveyard" == t.root.rootName) return null;
                if (this.checkChild(t, "$text")) return new Hl(t);
                let n, o;
                const i = t.getAncestors().reverse().find((t => this.isLimit(t))) || t.root;
                "both" != e && "backward" != e || (n = new zl({
                    boundaries: Hl._createIn(i),
                    startPosition: t,
                    direction: "backward"
                })), "both" != e && "forward" != e || (o = new zl({
                    boundaries: Hl._createIn(i),
                    startPosition: t
                }));
                for (const t of function* (t, e) {
                        let n = !1;
                        for (; !n;) {
                            if (n = !0, t) {
                                const e = t.next();
                                e.done || (n = !1, yield {
                                    walker: t,
                                    value: e.value
                                })
                            }
                            if (e) {
                                const t = e.next();
                                t.done || (n = !1, yield {
                                    walker: e,
                                    value: t.value
                                })
                            }
                        }
                    }(n, o)) {
                    const e = t.walker == n ? "elementEnd" : "elementStart",
                        o = t.value;
                    if (o.type == e && this.isObject(o.item)) return Hl._createOn(o.item);
                    if (this.checkChild(o.nextPosition, "$text")) return new Hl(o.nextPosition)
                }
                return null
            }
            findAllowedParent(t, e) {
                let n = t.parent;
                for (; n;) {
                    if (this.checkChild(n, e)) return n;
                    if (this.isLimit(n)) return null;
                    n = n.parent
                }
                return null
            }
            setAllowedAttributes(t, e, n) {
                const o = n.model;
                for (const [i, r] of Object.entries(e)) o.schema.checkAttribute(t, i) && n.setAttribute(i, r, t)
            }
            removeDisallowedAttributes(t, e) {
                for (const n of t)
                    if (n.is("$text")) bh(this, n, e);
                    else {
                        const t = Hl._createIn(n).getPositions();
                        for (const n of t) {
                            bh(this, n.nodeBefore || n.parent, e)
                        }
                    }
            }
            getAttributesWithProperty(t, e, n) {
                const o = {};
                for (const [i, r] of t.getAttributes()) {
                    const t = this.getAttributeProperties(i);
                    void 0 !== t[e] && (void 0 !== n && n !== t[e] || (o[i] = r))
                }
                return o
            }
            createContext(t) {
                return new rh(t)
            }
            _clearCache() {
                this._compiledDefinitions = null
            }
            _compile() {
                const t = {},
                    e = this._sourceDefinitions,
                    n = Object.keys(e);
                for (const o of n) t[o] = sh(e[o], o);
                for (const e of n) ah(t, e);
                for (const e of n) ch(t, e);
                for (const e of n) lh(t, e);
                for (const e of n) dh(t, e), hh(t, e);
                for (const e of n) uh(t, e), gh(t, e), ph(t, e);
                this._compiledDefinitions = t
            }
            _checkContextMatch(t, e, n = e.length - 1) {
                const o = e.getItem(n);
                if (t.allowIn.includes(o.name)) {
                    if (0 == n) return !0; {
                        const t = this.getDefinition(o);
                        return this._checkContextMatch(t, e, n - 1)
                    }
                }
                return !1
            }* _getValidRangesForRange(t, e) {
                let n = t.start,
                    o = t.start;
                for (const i of t.getItems({
                        shallow: !0
                    })) i.is("element") && (yield* this._getValidRangesForRange(Hl._createIn(i), e)), this.checkAttribute(i, e) || (n.isEqual(o) || (yield new Hl(n, o)), n = Ll._createAfter(i)), o = Ll._createAfter(i);
                n.isEqual(o) || (yield new Hl(n, o))
            }
        }
        class rh {
            constructor(t) {
                if (t instanceof rh) return t;
                let e;
                e = "string" == typeof t ? [t] : Array.isArray(t) ? t : t.getAncestors({
                    includeSelf: !0
                }), this._items = e.map(kh)
            }
            get length() {
                return this._items.length
            }
            get last() {
                return this._items[this._items.length - 1]
            } [Symbol.iterator]() {
                return this._items[Symbol.iterator]()
            }
            push(t) {
                const e = new rh([t]);
                return e._items = [...this._items, ...e._items], e
            }
            getItem(t) {
                return this._items[t]
            }* getNames() {
                yield* this._items.map((t => t.name))
            }
            endsWith(t) {
                return Array.from(this.getNames()).join(" ").endsWith(t)
            }
            startsWith(t) {
                return Array.from(this.getNames()).join(" ").startsWith(t)
            }
        }

        function sh(t, e) {
            const n = {
                name: e,
                allowIn: [],
                allowContentOf: [],
                allowWhere: [],
                allowAttributes: [],
                allowAttributesOf: [],
                allowChildren: [],
                inheritTypesFrom: []
            };
            return function (t, e) {
                    for (const n of t) {
                        const t = Object.keys(n).filter((t => t.startsWith("is")));
                        for (const o of t) e[o] = !!n[o]
                    }
                }(t, n), mh(t, n, "allowIn"), mh(t, n, "allowContentOf"), mh(t, n, "allowWhere"), mh(t, n, "allowAttributes"), mh(t, n, "allowAttributesOf"), mh(t, n, "allowChildren"), mh(t, n, "inheritTypesFrom"),
                function (t, e) {
                    for (const n of t) {
                        const t = n.inheritAllFrom;
                        t && (e.allowContentOf.push(t), e.allowWhere.push(t), e.allowAttributesOf.push(t), e.inheritTypesFrom.push(t))
                    }
                }(t, n), n
        }

        function ah(t, e) {
            const n = t[e];
            for (const o of n.allowChildren) {
                const n = t[o];
                n && n.allowIn.push(e)
            }
            n.allowChildren.length = 0
        }

        function ch(t, e) {
            for (const n of t[e].allowContentOf)
                if (t[n]) {
                    fh(t, n).forEach((t => {
                        t.allowIn.push(e)
                    }))
                } delete t[e].allowContentOf
        }

        function lh(t, e) {
            for (const n of t[e].allowWhere) {
                const o = t[n];
                if (o) {
                    const n = o.allowIn;
                    t[e].allowIn.push(...n)
                }
            }
            delete t[e].allowWhere
        }

        function dh(t, e) {
            for (const n of t[e].allowAttributesOf) {
                const o = t[n];
                if (o) {
                    const n = o.allowAttributes;
                    t[e].allowAttributes.push(...n)
                }
            }
            delete t[e].allowAttributesOf
        }

        function hh(t, e) {
            const n = t[e];
            for (const e of n.inheritTypesFrom) {
                const o = t[e];
                if (o) {
                    const t = Object.keys(o).filter((t => t.startsWith("is")));
                    for (const e of t) e in n || (n[e] = o[e])
                }
            }
            delete n.inheritTypesFrom
        }

        function uh(t, e) {
            const n = t[e],
                o = n.allowIn.filter((e => t[e]));
            n.allowIn = Array.from(new Set(o))
        }

        function gh(t, e) {
            const n = t[e];
            for (const o of n.allowIn) {
                t[o].allowChildren.push(e)
            }
        }

        function ph(t, e) {
            const n = t[e];
            n.allowAttributes = Array.from(new Set(n.allowAttributes))
        }

        function mh(t, e, n) {
            for (const o of t) {
                const t = o[n];
                "string" == typeof t ? e[n].push(t) : Array.isArray(t) && e[n].push(...t)
            }
        }

        function fh(t, e) {
            const n = t[e];
            return (o = t, Object.keys(o).map((t => o[t]))).filter((t => t.allowIn.includes(n.name)));
            var o
        }

        function kh(t) {
            return "string" == typeof t || t.is("documentFragment") ? {
                name: "string" == typeof t ? t : "$documentFragment",
                * getAttributeKeys() {},
                getAttribute() {}
            } : {
                name: t.is("element") ? t.name : "$text",
                * getAttributeKeys() {
                    yield* t.getAttributeKeys()
                },
                getAttribute: e => t.getAttribute(e)
            }
        }

        function bh(t, e, n) {
            for (const o of e.getAttributeKeys()) t.checkAttribute(e, o) || n.removeAttribute(o, e)
        }
        var wh = Object.defineProperty,
            Ah = Object.defineProperties,
            Ch = Object.getOwnPropertyDescriptors,
            _h = Object.getOwnPropertySymbols,
            vh = Object.prototype.hasOwnProperty,
            yh = Object.prototype.propertyIsEnumerable,
            xh = (t, e, n) => e in t ? wh(t, e, {
                enumerable: !0,
                configurable: !0,
                writable: !0,
                value: n
            }) : t[e] = n;
        class Eh extends(B()) {
            constructor(t) {
                var e;
                super(), this._splitParts = new Map, this._cursorParents = new Map, this._modelCursor = null, this._emptyElementsToKeep = new Set, this.conversionApi = (e = ((t, e) => {
                    for (var n in e || (e = {})) vh.call(e, n) && xh(t, n, e[n]);
                    if (_h)
                        for (var n of _h(e)) yh.call(e, n) && xh(t, n, e[n]);
                    return t
                })({}, t), Ah(e, Ch({
                    consumable: null,
                    writer: null,
                    store: null,
                    convertItem: (t, e) => this._convertItem(t, e),
                    convertChildren: (t, e) => this._convertChildren(t, e),
                    safeInsert: (t, e) => this._safeInsert(t, e),
                    updateConversionResult: (t, e) => this._updateConversionResult(t, e),
                    splitToAllowedParent: (t, e) => this._splitToAllowedParent(t, e),
                    getSplitParts: t => this._getSplitParts(t),
                    keepEmptyElement: t => this._keepEmptyElement(t)
                })))
            }
            convert(t, e, n = ["$root"]) {
                this.fire("viewCleanup", t), this._modelCursor = function (t, e) {
                    let n;
                    for (const o of new rh(t)) {
                        const t = {};
                        for (const e of o.getAttributeKeys()) t[e] = o.getAttribute(e);
                        const i = e.createElement(o.name, t);
                        n && e.insert(i, n), n = Ll._createAt(i, 0)
                    }
                    return n
                }(n, e), this.conversionApi.writer = e, this.conversionApi.consumable = eh.createFrom(t), this.conversionApi.store = {};
                const {
                    modelRange: o
                } = this._convertItem(t, this._modelCursor), i = e.createDocumentFragment();
                if (o) {
                    this._removeEmptyElements();
                    for (const t of Array.from(this._modelCursor.parent.getChildren())) e.append(t, i);
                    i.markers = function (t, e) {
                        const n = new Set,
                            o = new Map,
                            i = Hl._createIn(t).getItems();
                        for (const t of i) t.is("element", "$marker") && n.add(t);
                        for (const t of n) {
                            const n = t.getAttribute("data-name"),
                                i = e.createPositionBefore(t);
                            o.has(n) ? o.get(n).end = i.clone() : o.set(n, new Hl(i.clone())), e.remove(t)
                        }
                        return o
                    }(i, e)
                }
                return this._modelCursor = null, this._splitParts.clear(), this._cursorParents.clear(), this._emptyElementsToKeep.clear(), this.conversionApi.writer = null, this.conversionApi.store = null, i
            }
            _convertItem(t, e) {
                const n = {
                    viewItem: t,
                    modelCursor: e,
                    modelRange: null
                };
                if (t.is("element") ? this.fire(`element:${t.name}`, n, this.conversionApi) : t.is("$text") ? this.fire("text", n, this.conversionApi) : this.fire("documentFragment", n, this.conversionApi), n.modelRange && !(n.modelRange instanceof Hl)) throw new A("view-conversion-dispatcher-incorrect-result", this);
                return {
                    modelRange: n.modelRange,
                    modelCursor: n.modelCursor
                }
            }
            _convertChildren(t, e) {
                let n = e.is("position") ? e : Ll._createAt(e, 0);
                const o = new Hl(n);
                for (const e of Array.from(t.getChildren())) {
                    const t = this._convertItem(e, n);
                    t.modelRange instanceof Hl && (o.end = t.modelRange.end, n = t.modelCursor)
                }
                return {
                    modelRange: o,
                    modelCursor: n
                }
            }
            _safeInsert(t, e) {
                const n = this._splitToAllowedParent(t, e);
                return !!n && (this.conversionApi.writer.insert(t, n.position), !0)
            }
            _updateConversionResult(t, e) {
                const n = this._getSplitParts(t),
                    o = this.conversionApi.writer;
                e.modelRange || (e.modelRange = o.createRange(o.createPositionBefore(t), o.createPositionAfter(n[n.length - 1])));
                const i = this._cursorParents.get(t);
                e.modelCursor = i ? o.createPositionAt(i, 0) : e.modelRange.end
            }
            _splitToAllowedParent(t, e) {
                const {
                    schema: n,
                    writer: o
                } = this.conversionApi;
                let i = n.findAllowedParent(e, t);
                if (i) {
                    if (i === e.parent) return {
                        position: e
                    };
                    this._modelCursor.parent.getAncestors().includes(i) && (i = null)
                }
                if (!i) return Pd(e, t, n) ? {
                    position: zd(e, o)
                } : null;
                const r = this.conversionApi.writer.split(e, i),
                    s = [];
                for (const t of r.range.getWalker())
                    if ("elementEnd" == t.type) s.push(t.item);
                    else {
                        const e = s.pop(),
                            n = t.item;
                        this._registerSplitPair(e, n)
                    } const a = r.range.end.parent;
                return this._cursorParents.set(t, a), {
                    position: r.position,
                    cursorParent: a
                }
            }
            _registerSplitPair(t, e) {
                this._splitParts.has(t) || this._splitParts.set(t, [t]);
                const n = this._splitParts.get(t);
                this._splitParts.set(e, n), n.push(e)
            }
            _getSplitParts(t) {
                let e;
                return e = this._splitParts.has(t) ? this._splitParts.get(t) : [t], e
            }
            _keepEmptyElement(t) {
                this._emptyElementsToKeep.add(t)
            }
            _removeEmptyElements() {
                let t = !1;
                for (const e of this._splitParts.keys()) e.isEmpty && !this._emptyElementsToKeep.has(e) && (this.conversionApi.writer.remove(e), this._splitParts.delete(e), t = !0);
                t && this._removeEmptyElements()
            }
        }
        class Dh {
            getHtml(t) {
                const e = document.implementation.createHTMLDocument("").createElement("div");
                return e.appendChild(t), e.innerHTML
            }
        }
        class Sh {
            constructor(t) {
                this.skipComments = !0, this.domParser = new DOMParser, this.domConverter = new Ec(t, {
                    renderingMode: "data"
                }), this.htmlWriter = new Dh
            }
            toData(t) {
                const e = this.domConverter.viewToDom(t);
                return this.htmlWriter.getHtml(e)
            }
            toView(t) {
                const e = this._toDom(t);
                return this.domConverter.domToView(e, {
                    skipComments: this.skipComments
                })
            }
            registerRawContentMatcher(t) {
                this.domConverter.registerRawContentMatcher(t)
            }
            useFillerType(t) {
                this.domConverter.blockFillerMode = "marked" == t ? "markedNbsp" : "nbsp"
            }
            _toDom(t) {
                t.match(/<(?:html|body|head|meta)(?:\s[^>]*)?>/i) || (t = `<body>${t}</body>`);
                const e = this.domParser.parseFromString(t, "text/html"),
                    n = e.createDocumentFragment(),
                    o = e.body.childNodes;
                for (; o.length > 0;) n.appendChild(o[0]);
                return n
            }
        }
        class Ih extends(B()) {
            constructor(t, e) {
                super(), this.model = t, this.mapper = new Gl, this.downcastDispatcher = new nd({
                    mapper: this.mapper,
                    schema: t.schema
                }), this.downcastDispatcher.on("insert:$text", ((t, e, n) => {
                    if (!n.consumable.consume(e.item, t.name)) return;
                    const o = n.writer,
                        i = n.mapper.toViewPosition(e.range.start),
                        r = o.createText(e.item.data);
                    o.insert(i, r)
                }), {
                    priority: "lowest"
                }), this.downcastDispatcher.on("insert", ((t, e, n) => {
                    n.convertAttributes(e.item), e.reconversion || !e.item.is("element") || e.item.isEmpty || n.convertChildren(e.item)
                }), {
                    priority: "lowest"
                }), this.upcastDispatcher = new Eh({
                    schema: t.schema
                }), this.viewDocument = new za(e), this.stylesProcessor = e, this.htmlProcessor = new Sh(this.viewDocument), this.processor = this.htmlProcessor, this._viewWriter = new Ka(this.viewDocument), this.upcastDispatcher.on("text", ((t, e, {
                    schema: n,
                    consumable: o,
                    writer: i
                }) => {
                    let r = e.modelCursor;
                    if (!o.test(e.viewItem)) return;
                    if (!n.checkChild(r, "$text")) {
                        if (!Pd(r, "$text", n)) return;
                        if (0 == e.viewItem.data.trim().length) return;
                        const t = r.nodeBefore;
                        r = zd(r, i), t && t.is("element", "$marker") && (i.move(i.createRangeOn(t), r), r = i.createPositionAfter(t))
                    }
                    o.consume(e.viewItem);
                    const s = i.createText(e.viewItem.data);
                    i.insert(s, r), e.modelRange = i.createRange(r, r.getShiftedBy(s.offsetSize)), e.modelCursor = e.modelRange.end
                }), {
                    priority: "lowest"
                }), this.upcastDispatcher.on("element", ((t, e, n) => {
                    if (!e.modelRange && n.consumable.consume(e.viewItem, {
                            name: !0
                        })) {
                        const {
                            modelRange: t,
                            modelCursor: o
                        } = n.convertChildren(e.viewItem, e.modelCursor);
                        e.modelRange = t, e.modelCursor = o
                    }
                }), {
                    priority: "lowest"
                }), this.upcastDispatcher.on("documentFragment", ((t, e, n) => {
                    if (!e.modelRange && n.consumable.consume(e.viewItem, {
                            name: !0
                        })) {
                        const {
                            modelRange: t,
                            modelCursor: o
                        } = n.convertChildren(e.viewItem, e.modelCursor);
                        e.modelRange = t, e.modelCursor = o
                    }
                }), {
                    priority: "lowest"
                }), K().prototype.decorate.call(this, "init"), K().prototype.decorate.call(this, "set"), K().prototype.decorate.call(this, "get"), K().prototype.decorate.call(this, "toView"), K().prototype.decorate.call(this, "toModel"), this.on("init", (() => {
                    this.fire("ready")
                }), {
                    priority: "lowest"
                }), this.on("ready", (() => {
                    this.model.enqueueChange({
                        isUndoable: !1
                    }, Nd)
                }), {
                    priority: "lowest"
                })
            }
            get(t = {}) {
                const {
                    rootName: e = "main",
                    trim: n = "empty"
                } = t;
                if (!this._checkIfRootsExists([e])) throw new A("datacontroller-get-non-existent-root", this);
                const o = this.model.document.getRoot(e);
                return o.isAttached() || C("datacontroller-get-detached-root", this), "empty" !== n || this.model.hasContent(o, {
                    ignoreWhitespaces: !0
                }) ? this.stringify(o, t) : ""
            }
            stringify(t, e = {}) {
                const n = this.toView(t, e);
                return this.processor.toData(n)
            }
            toView(t, e = {}) {
                const n = this.viewDocument,
                    o = this._viewWriter;
                this.mapper.clearBindings();
                const i = Hl._createIn(t),
                    r = new Wa(n);
                this.mapper.bindElements(t, r);
                const s = t.is("documentFragment") ? t.markers : function (t) {
                    const e = [],
                        n = t.root.document;
                    if (!n) return new Map;
                    const o = Hl._createIn(t);
                    for (const t of n.model.markers) {
                        const n = t.getRange(),
                            i = n.isCollapsed,
                            r = n.start.isEqual(o.start) || n.end.isEqual(o.end);
                        if (i && r) e.push([t.name, n]);
                        else {
                            const i = o.getIntersection(n);
                            i && e.push([t.name, i])
                        }
                    }
                    return e.sort((([t, e], [n, o]) => {
                        if ("after" !== e.end.compareWith(o.start)) return 1;
                        if ("before" !== e.start.compareWith(o.end)) return -1;
                        switch (e.start.compareWith(o.start)) {
                            case "before":
                                return 1;
                            case "after":
                                return -1;
                            default:
                                switch (e.end.compareWith(o.end)) {
                                    case "before":
                                        return 1;
                                    case "after":
                                        return -1;
                                    default:
                                        return n.localeCompare(t)
                                }
                        }
                    })), new Map(e)
                }(t);
                return this.downcastDispatcher.convert(i, s, o, e), r
            }
            init(t) {
                if (this.model.document.version) throw new A("datacontroller-init-document-not-empty", this);
                let e = {};
                if ("string" == typeof t ? e.main = t : e = t, !this._checkIfRootsExists(Object.keys(e))) throw new A("datacontroller-init-non-existent-root", this);
                return this.model.enqueueChange({
                    isUndoable: !1
                }, (t => {
                    for (const n of Object.keys(e)) {
                        const o = this.model.document.getRoot(n);
                        t.insert(this.parse(e[n], o), o, 0)
                    }
                })), Promise.resolve()
            }
            set(t, e = {}) {
                let n = {};
                if ("string" == typeof t ? n.main = t : n = t, !this._checkIfRootsExists(Object.keys(n))) throw new A("datacontroller-set-non-existent-root", this);
                this.model.enqueueChange(e.batchType || {}, (t => {
                    t.setSelection(null), t.removeSelectionAttribute(this.model.document.selection.getAttributeKeys());
                    for (const e of Object.keys(n)) {
                        const o = this.model.document.getRoot(e);
                        t.remove(t.createRangeIn(o)), t.insert(this.parse(n[e], o), o, 0)
                    }
                }))
            }
            parse(t, e = "$root") {
                const n = this.processor.toView(t);
                return this.toModel(n, e)
            }
            toModel(t, e = "$root") {
                return this.model.change((n => this.upcastDispatcher.convert(t, n, e)))
            }
            addStyleProcessorRules(t) {
                t(this.stylesProcessor)
            }
            registerRawContentMatcher(t) {
                this.processor && this.processor !== this.htmlProcessor && this.processor.registerRawContentMatcher(t), this.htmlProcessor.registerRawContentMatcher(t)
            }
            destroy() {
                this.stopListening()
            }
            _checkIfRootsExists(t) {
                for (const e of t)
                    if (!this.model.document.getRoot(e)) return !1;
                return !0
            }
        }
        class Mh {
            constructor(t, e) {
                this._helpers = new Map, this._downcast = vi(t), this._createConversionHelpers({
                    name: "downcast",
                    dispatchers: this._downcast,
                    isDowncast: !0
                }), this._upcast = vi(e), this._createConversionHelpers({
                    name: "upcast",
                    dispatchers: this._upcast,
                    isDowncast: !1
                })
            }
            addAlias(t, e) {
                const n = this._downcast.includes(e);
                if (!this._upcast.includes(e) && !n) throw new A("conversion-add-alias-dispatcher-not-registered", this);
                this._createConversionHelpers({
                    name: t,
                    dispatchers: [e],
                    isDowncast: n
                })
            }
            for (t) {
                if (!this._helpers.has(t)) throw new A("conversion-for-unknown-group", this);
                return this._helpers.get(t)
            }
            elementToElement(t) {
                this.for("downcast").elementToElement(t);
                for (const {
                        model: e,
                        view: n
                    } of Th(t)) this.for("upcast").elementToElement({
                    model: e,
                    view: n,
                    converterPriority: t.converterPriority
                })
            }
            attributeToElement(t) {
                this.for("downcast").attributeToElement(t);
                for (const {
                        model: e,
                        view: n
                    } of Th(t)) this.for("upcast").elementToAttribute({
                    view: n,
                    model: e,
                    converterPriority: t.converterPriority
                })
            }
            attributeToAttribute(t) {
                this.for("downcast").attributeToAttribute(t);
                for (const {
                        model: e,
                        view: n
                    } of Th(t)) this.for("upcast").attributeToAttribute({
                    view: n,
                    model: e
                })
            }
            _createConversionHelpers({
                name: t,
                dispatchers: e,
                isDowncast: n
            }) {
                if (this._helpers.has(t)) throw new A("conversion-group-exists", this);
                const o = n ? new Ad(e) : new Hd(e);
                this._helpers.set(t, o)
            }
        }

        function* Th(t) {
            if (t.model.values)
                for (const e of t.model.values) {
                    const n = {
                            key: t.model.key,
                            value: e
                        },
                        o = t.view[e],
                        i = t.upcastAlso ? t.upcastAlso[e] : void 0;
                    yield* Bh(n, o, i)
                } else yield* Bh(t.model, t.view, t.upcastAlso)
        }

        function* Bh(t, e, n) {
            if (yield {
                    model: t,
                    view: e
                }, n)
                for (const e of vi(n)) yield {
                    model: t,
                    view: e
                }
        }
        class Nh {
            constructor(t) {
                this.baseVersion = t, this.isDocumentOperation = null !== this.baseVersion, this.batch = null
            }
            _validate() {}
            toJSON() {
                const t = Object.assign({}, this);
                return t.__className = this.constructor.className, delete t.batch, delete t.isDocumentOperation, t
            }
            static get className() {
                return "Operation"
            }
            static fromJSON(t, e) {
                return new this(t.baseVersion)
            }
        }

        function Ph(t, e) {
            const n = Lh(e),
                o = n.reduce(((t, e) => t + e.offsetSize), 0),
                i = t.parent;
            Rh(t);
            const r = t.index;
            return i._insertChild(r, n), jh(i, r + n.length), jh(i, r), new Hl(t, t.getShiftedBy(o))
        }

        function zh(t) {
            if (!t.isFlat) throw new A("operation-utils-remove-range-not-flat", this);
            const e = t.start.parent;
            Rh(t.start), Rh(t.end);
            const n = e._removeChildren(t.start.index, t.end.index - t.start.index);
            return jh(e, t.start.index), n
        }

        function Oh(t, e) {
            if (!t.isFlat) throw new A("operation-utils-move-range-not-flat", this);
            const n = zh(t);
            return Ph(e = e._getTransformedByDeletion(t.start, t.end.offset - t.start.offset), n)
        }

        function Lh(t) {
            const e = [];
            ! function t(n) {
                if ("string" == typeof n) e.push(new Bl(n));
                else if (n instanceof Nl) e.push(new Bl(n.data, n.getAttributes()));
                else if (n instanceof Ml) e.push(n);
                else if (nt(n))
                    for (const e of n) t(e)
            }(t);
            for (let t = 1; t < e.length; t++) {
                const n = e[t],
                    o = e[t - 1];
                n instanceof Bl && o instanceof Bl && Fh(n, o) && (e.splice(t - 1, 2, new Bl(o.data + n.data, o.getAttributes())), t--)
            }
            return e
        }

        function jh(t, e) {
            const n = t.getChild(e - 1),
                o = t.getChild(e);
            if (n && o && n.is("$text") && o.is("$text") && Fh(n, o)) {
                const i = new Bl(n.data + o.data, n.getAttributes());
                t._removeChildren(e - 1, 2), t._insertChild(e - 1, i)
            }
        }

        function Rh(t) {
            const e = t.textNode,
                n = t.parent;
            if (e) {
                const o = t.offset - e.startOffset,
                    i = e.index;
                n._removeChildren(i, 1);
                const r = new Bl(e.data.substr(0, o), e.getAttributes()),
                    s = new Bl(e.data.substr(o), e.getAttributes());
                n._insertChild(i, [r, s])
            }
        }

        function Fh(t, e) {
            const n = t.getAttributes(),
                o = e.getAttributes();
            for (const t of n) {
                if (t[1] !== e.getAttribute(t[0])) return !1;
                o.next()
            }
            return o.next().done
        }
        class Vh extends Nh {
            constructor(t, e, n, o) {
                super(o), this.sourcePosition = t.clone(), this.sourcePosition.stickiness = "toNext", this.howMany = e, this.targetPosition = n.clone(), this.targetPosition.stickiness = "toNone"
            }
            get type() {
                return "$graveyard" == this.targetPosition.root.rootName ? "remove" : "$graveyard" == this.sourcePosition.root.rootName ? "reinsert" : "move"
            }
            get affectedSelectable() {
                return [Hl._createFromPositionAndShift(this.sourcePosition, this.howMany), Hl._createFromPositionAndShift(this.targetPosition, 0)]
            }
            clone() {
                return new Vh(this.sourcePosition, this.howMany, this.targetPosition, this.baseVersion)
            }
            getMovedRangeStart() {
                return this.targetPosition._getTransformedByDeletion(this.sourcePosition, this.howMany)
            }
            getReversed() {
                const t = this.sourcePosition._getTransformedByInsertion(this.targetPosition, this.howMany);
                return new Vh(this.getMovedRangeStart(), this.howMany, t, this.baseVersion + 1)
            }
            _validate() {
                const t = this.sourcePosition.parent,
                    e = this.targetPosition.parent,
                    n = this.sourcePosition.offset,
                    o = this.targetPosition.offset;
                if (n + this.howMany > t.maxOffset) throw new A("move-operation-nodes-do-not-exist", this);
                if (t === e && n < o && o < n + this.howMany) throw new A("move-operation-range-into-itself", this);
                if (this.sourcePosition.root == this.targetPosition.root && "prefix" == et(this.sourcePosition.getParentPath(), this.targetPosition.getParentPath())) {
                    const t = this.sourcePosition.path.length - 1;
                    if (this.targetPosition.path[t] >= n && this.targetPosition.path[t] < n + this.howMany) throw new A("move-operation-node-into-itself", this)
                }
            }
            _execute() {
                Oh(Hl._createFromPositionAndShift(this.sourcePosition, this.howMany), this.targetPosition)
            }
            toJSON() {
                const t = super.toJSON();
                return t.sourcePosition = this.sourcePosition.toJSON(), t.targetPosition = this.targetPosition.toJSON(), t
            }
            static get className() {
                return "MoveOperation"
            }
            static fromJSON(t, e) {
                const n = Ll.fromJSON(t.sourcePosition, e),
                    o = Ll.fromJSON(t.targetPosition, e);
                return new this(n, t.howMany, o, t.baseVersion)
            }
        }
        class Uh extends Nh {
            constructor(t, e, n) {
                super(n), this.position = t.clone(), this.position.stickiness = "toNone", this.nodes = new Tl(Lh(e)), this.shouldReceiveAttributes = !1
            }
            get type() {
                return "insert"
            }
            get howMany() {
                return this.nodes.maxOffset
            }
            get affectedSelectable() {
                return this.position.clone()
            }
            clone() {
                const t = new Tl([...this.nodes].map((t => t._clone(!0)))),
                    e = new Uh(this.position, t, this.baseVersion);
                return e.shouldReceiveAttributes = this.shouldReceiveAttributes, e
            }
            getReversed() {
                const t = this.position.root.document.graveyard,
                    e = new Ll(t, [0]);
                return new Vh(this.position, this.nodes.maxOffset, e, this.baseVersion + 1)
            }
            _validate() {
                const t = this.position.parent;
                if (!t || t.maxOffset < this.position.offset) throw new A("insert-operation-position-invalid", this)
            }
            _execute() {
                const t = this.nodes;
                this.nodes = new Tl([...t].map((t => t._clone(!0)))), Ph(this.position, t)
            }
            toJSON() {
                const t = super.toJSON();
                return t.position = this.position.toJSON(), t.nodes = this.nodes.toJSON(), t
            }
            static get className() {
                return "InsertOperation"
            }
            static fromJSON(t, e) {
                const n = [];
                for (const e of t.nodes) e.name ? n.push(Pl.fromJSON(e)) : n.push(Bl.fromJSON(e));
                const o = new Uh(Ll.fromJSON(t.position, e), n, t.baseVersion);
                return o.shouldReceiveAttributes = t.shouldReceiveAttributes, o
            }
        }
        class Hh extends Nh {
            constructor(t, e, n, o, i) {
                super(i), this.splitPosition = t.clone(), this.splitPosition.stickiness = "toNext", this.howMany = e, this.insertionPosition = n, this.graveyardPosition = o ? o.clone() : null, this.graveyardPosition && (this.graveyardPosition.stickiness = "toNext")
            }
            get type() {
                return "split"
            }
            get moveTargetPosition() {
                const t = this.insertionPosition.path.slice();
                return t.push(0), new Ll(this.insertionPosition.root, t)
            }
            get movedRange() {
                const t = this.splitPosition.getShiftedBy(Number.POSITIVE_INFINITY);
                return new Hl(this.splitPosition, t)
            }
            get affectedSelectable() {
                const t = [Hl._createFromPositionAndShift(this.splitPosition, 0), Hl._createFromPositionAndShift(this.insertionPosition, 0)];
                return this.graveyardPosition && t.push(Hl._createFromPositionAndShift(this.graveyardPosition, 0)), t
            }
            clone() {
                return new Hh(this.splitPosition, this.howMany, this.insertionPosition, this.graveyardPosition, this.baseVersion)
            }
            getReversed() {
                const t = this.splitPosition.root.document.graveyard,
                    e = new Ll(t, [0]);
                return new Gh(this.moveTargetPosition, this.howMany, this.splitPosition, e, this.baseVersion + 1)
            }
            _validate() {
                const t = this.splitPosition.parent,
                    e = this.splitPosition.offset;
                if (!t || t.maxOffset < e) throw new A("split-operation-position-invalid", this);
                if (!t.parent) throw new A("split-operation-split-in-root", this);
                if (this.howMany != t.maxOffset - this.splitPosition.offset) throw new A("split-operation-how-many-invalid", this);
                if (this.graveyardPosition && !this.graveyardPosition.nodeAfter) throw new A("split-operation-graveyard-position-invalid", this)
            }
            _execute() {
                const t = this.splitPosition.parent;
                if (this.graveyardPosition) Oh(Hl._createFromPositionAndShift(this.graveyardPosition, 1), this.insertionPosition);
                else {
                    const e = t._clone();
                    Ph(this.insertionPosition, e)
                }
                Oh(new Hl(Ll._createAt(t, this.splitPosition.offset), Ll._createAt(t, t.maxOffset)), this.moveTargetPosition)
            }
            toJSON() {
                const t = super.toJSON();
                return t.splitPosition = this.splitPosition.toJSON(), t.insertionPosition = this.insertionPosition.toJSON(), this.graveyardPosition && (t.graveyardPosition = this.graveyardPosition.toJSON()), t
            }
            static get className() {
                return "SplitOperation"
            }
            static getInsertionPosition(t) {
                const e = t.path.slice(0, -1);
                return e[e.length - 1]++, new Ll(t.root, e, "toPrevious")
            }
            static fromJSON(t, e) {
                const n = Ll.fromJSON(t.splitPosition, e),
                    o = Ll.fromJSON(t.insertionPosition, e),
                    i = t.graveyardPosition ? Ll.fromJSON(t.graveyardPosition, e) : null;
                return new this(n, t.howMany, o, i, t.baseVersion)
            }
        }
        class Gh extends Nh {
            constructor(t, e, n, o, i) {
                super(i), this.sourcePosition = t.clone(), this.sourcePosition.stickiness = "toPrevious", this.howMany = e, this.targetPosition = n.clone(), this.targetPosition.stickiness = "toNext", this.graveyardPosition = o.clone()
            }
            get type() {
                return "merge"
            }
            get deletionPosition() {
                return new Ll(this.sourcePosition.root, this.sourcePosition.path.slice(0, -1))
            }
            get movedRange() {
                const t = this.sourcePosition.getShiftedBy(Number.POSITIVE_INFINITY);
                return new Hl(this.sourcePosition, t)
            }
            get affectedSelectable() {
                const t = this.sourcePosition.parent;
                return [Hl._createOn(t), Hl._createFromPositionAndShift(this.targetPosition, 0), Hl._createFromPositionAndShift(this.graveyardPosition, 0)]
            }
            clone() {
                return new Gh(this.sourcePosition, this.howMany, this.targetPosition, this.graveyardPosition, this.baseVersion)
            }
            getReversed() {
                const t = this.targetPosition._getTransformedByMergeOperation(this),
                    e = this.sourcePosition.path.slice(0, -1),
                    n = new Ll(this.sourcePosition.root, e)._getTransformedByMergeOperation(this);
                return new Hh(t, this.howMany, n, this.graveyardPosition, this.baseVersion + 1)
            }
            _validate() {
                const t = this.sourcePosition.parent,
                    e = this.targetPosition.parent;
                if (!t.parent) throw new A("merge-operation-source-position-invalid", this);
                if (!e.parent) throw new A("merge-operation-target-position-invalid", this);
                if (this.howMany != t.maxOffset) throw new A("merge-operation-how-many-invalid", this)
            }
            _execute() {
                const t = this.sourcePosition.parent;
                Oh(Hl._createIn(t), this.targetPosition), Oh(Hl._createOn(t), this.graveyardPosition)
            }
            toJSON() {
                const t = super.toJSON();
                return t.sourcePosition = t.sourcePosition.toJSON(), t.targetPosition = t.targetPosition.toJSON(), t.graveyardPosition = t.graveyardPosition.toJSON(), t
            }
            static get className() {
                return "MergeOperation"
            }
            static fromJSON(t, e) {
                const n = Ll.fromJSON(t.sourcePosition, e),
                    o = Ll.fromJSON(t.targetPosition, e),
                    i = Ll.fromJSON(t.graveyardPosition, e);
                return new this(n, t.howMany, o, i, t.baseVersion)
            }
        }
        class qh extends Nh {
            constructor(t, e, n, o, i, r) {
                super(r), this.name = t, this.oldRange = e ? e.clone() : null, this.newRange = n ? n.clone() : null, this.affectsData = i, this._markers = o
            }
            get type() {
                return "marker"
            }
            get affectedSelectable() {
                const t = [];
                return this.oldRange && t.push(this.oldRange.clone()), this.newRange && (this.oldRange ? t.push(...this.newRange.getDifference(this.oldRange)) : t.push(this.newRange.clone())), t
            }
            clone() {
                return new qh(this.name, this.oldRange, this.newRange, this._markers, this.affectsData, this.baseVersion)
            }
            getReversed() {
                return new qh(this.name, this.newRange, this.oldRange, this._markers, this.affectsData, this.baseVersion + 1)
            }
            _execute() {
                this.newRange ? this._markers._set(this.name, this.newRange, !0, this.affectsData) : this._markers._remove(this.name)
            }
            toJSON() {
                const t = super.toJSON();
                return this.oldRange && (t.oldRange = this.oldRange.toJSON()), this.newRange && (t.newRange = this.newRange.toJSON()), delete t._markers, t
            }
            static get className() {
                return "MarkerOperation"
            }
            static fromJSON(t, e) {
                return new qh(t.name, t.oldRange ? Hl.fromJSON(t.oldRange, e) : null, t.newRange ? Hl.fromJSON(t.newRange, e) : null, e.model.markers, t.affectsData, t.baseVersion)
            }
        }
        const Wh = function (t, e) {
            return ml(t, e)
        };
        class Kh extends Nh {
            constructor(t, e, n, o, i) {
                super(i), this.range = t.clone(), this.key = e, this.oldValue = void 0 === n ? null : n, this.newValue = void 0 === o ? null : o
            }
            get type() {
                return null === this.oldValue ? "addAttribute" : null === this.newValue ? "removeAttribute" : "changeAttribute"
            }
            get affectedSelectable() {
                return this.range.clone()
            }
            clone() {
                return new Kh(this.range, this.key, this.oldValue, this.newValue, this.baseVersion)
            }
            getReversed() {
                return new Kh(this.range, this.key, this.newValue, this.oldValue, this.baseVersion + 1)
            }
            toJSON() {
                const t = super.toJSON();
                return t.range = this.range.toJSON(), t
            }
            _validate() {
                if (!this.range.isFlat) throw new A("attribute-operation-range-not-flat", this);
                for (const t of this.range.getItems({
                        shallow: !0
                    })) {
                    if (null !== this.oldValue && !Wh(t.getAttribute(this.key), this.oldValue)) throw new A("attribute-operation-wrong-old-value", this, {
                        item: t,
                        key: this.key,
                        value: this.oldValue
                    });
                    if (null === this.oldValue && null !== this.newValue && t.hasAttribute(this.key)) throw new A("attribute-operation-attribute-exists", this, {
                        node: t,
                        key: this.key
                    })
                }
            }
            _execute() {
                Wh(this.oldValue, this.newValue) || function (t, e, n) {
                    Rh(t.start), Rh(t.end);
                    for (const o of t.getItems({
                            shallow: !0
                        })) {
                        const t = o.is("$textProxy") ? o.textNode : o;
                        null !== n ? t._setAttribute(e, n) : t._removeAttribute(e), jh(t.parent, t.index)
                    }
                    jh(t.end.parent, t.end.index)
                }(this.range, this.key, this.newValue)
            }
            static get className() {
                return "AttributeOperation"
            }
            static fromJSON(t, e) {
                return new Kh(Hl.fromJSON(t.range, e), t.key, t.oldValue, t.newValue, t.baseVersion)
            }
        }
        class Yh extends Nh {
            get type() {
                return "noop"
            }
            get affectedSelectable() {
                return null
            }
            clone() {
                return new Yh(this.baseVersion)
            }
            getReversed() {
                return new Yh(this.baseVersion + 1)
            }
            _execute() {}
            static get className() {
                return "NoOperation"
            }
        }
        class $h extends Nh {
            constructor(t, e, n, o) {
                super(o), this.position = t, this.position.stickiness = "toNext", this.oldName = e, this.newName = n
            }
            get type() {
                return "rename"
            }
            get affectedSelectable() {
                return this.position.nodeAfter
            }
            clone() {
                return new $h(this.position.clone(), this.oldName, this.newName, this.baseVersion)
            }
            getReversed() {
                return new $h(this.position.clone(), this.newName, this.oldName, this.baseVersion + 1)
            }
            _validate() {
                const t = this.position.nodeAfter;
                if (!(t instanceof Pl)) throw new A("rename-operation-wrong-position", this);
                if (t.name !== this.oldName) throw new A("rename-operation-wrong-name", this)
            }
            _execute() {
                this.position.nodeAfter.name = this.newName
            }
            toJSON() {
                const t = super.toJSON();
                return t.position = this.position.toJSON(), t
            }
            static get className() {
                return "RenameOperation"
            }
            static fromJSON(t, e) {
                return new $h(Ll.fromJSON(t.position, e), t.oldName, t.newName, t.baseVersion)
            }
        }
        class Zh extends Nh {
            constructor(t, e, n, o, i) {
                super(i), this.root = t, this.key = e, this.oldValue = void 0 === n ? null : n, this.newValue = void 0 === o ? null : o
            }
            get type() {
                return null === this.oldValue ? "addRootAttribute" : null === this.newValue ? "removeRootAttribute" : "changeRootAttribute"
            }
            get affectedSelectable() {
                return this.root
            }
            clone() {
                return new Zh(this.root, this.key, this.oldValue, this.newValue, this.baseVersion)
            }
            getReversed() {
                return new Zh(this.root, this.key, this.newValue, this.oldValue, this.baseVersion + 1)
            }
            _validate() {
                if (this.root != this.root.root || this.root.is("documentFragment")) throw new A("rootattribute-operation-not-a-root", this, {
                    root: this.root,
                    key: this.key
                });
                if (null !== this.oldValue && this.root.getAttribute(this.key) !== this.oldValue) throw new A("rootattribute-operation-wrong-old-value", this, {
                    root: this.root,
                    key: this.key
                });
                if (null === this.oldValue && null !== this.newValue && this.root.hasAttribute(this.key)) throw new A("rootattribute-operation-attribute-exists", this, {
                    root: this.root,
                    key: this.key
                })
            }
            _execute() {
                null !== this.newValue ? this.root._setAttribute(this.key, this.newValue) : this.root._removeAttribute(this.key)
            }
            toJSON() {
                const t = super.toJSON();
                return t.root = this.root.toJSON(), t
            }
            static get className() {
                return "RootAttributeOperation"
            }
            static fromJSON(t, e) {
                if (!e.getRoot(t.root)) throw new A("rootattribute-operation-fromjson-no-root", this, {
                    rootName: t.root
                });
                return new Zh(e.getRoot(t.root), t.key, t.oldValue, t.newValue, t.baseVersion)
            }
        }
        class Qh extends Nh {
            constructor(t, e, n, o, i) {
                if (super(i), this.rootName = t, this.elementName = e, this.isAdd = n, this._document = o, !this._document.getRoot(this.rootName)) {
                    this._document.createRoot(this.elementName, this.rootName)._isAttached = !1
                }
            }
            get type() {
                return this.isAdd ? "addRoot" : "detachRoot"
            }
            get affectedSelectable() {
                return this._document.getRoot(this.rootName)
            }
            clone() {
                return new Qh(this.rootName, this.elementName, this.isAdd, this._document, this.baseVersion)
            }
            getReversed() {
                return new Qh(this.rootName, this.elementName, !this.isAdd, this._document, this.baseVersion + 1)
            }
            _execute() {
                this._document.getRoot(this.rootName)._isAttached = this.isAdd
            }
            toJSON() {
                const t = super.toJSON();
                return delete t._document, t
            }
            static get className() {
                return "RootOperation"
            }
            static fromJSON(t, e) {
                return new Qh(t.rootName, t.elementName, t.isAdd, e, t.baseVersion)
            }
        }
        const Jh = {};
        Jh[Kh.className] = Kh, Jh[Uh.className] = Uh, Jh[qh.className] = qh, Jh[Vh.className] = Vh, Jh[Yh.className] = Yh, Jh[Nh.className] = Nh, Jh[$h.className] = $h, Jh[Zh.className] = Zh, Jh[Qh.className] = Qh, Jh[Hh.className] = Hh, Jh[Gh.className] = Gh;
        class Xh {
            static fromJSON(t, e) {
                return Jh[t.__className].fromJSON(t, e)
            }
        }
        const tu = new Map;

        function eu(t, e, n) {
            let o = tu.get(t);
            o || (o = new Map, tu.set(t, o)), o.set(e, n)
        }

        function nu(t) {
            return [t]
        }

        function ou(t, e, n = {}) {
            const o = function (t, e) {
                const n = tu.get(t);
                return n && n.has(e) ? n.get(e) : nu
            }(t.constructor, e.constructor);
            try {
                return o(t = t.clone(), e, n)
            } catch (t) {
                throw t
            }
        }

        function iu(t, e, n) {
            t = t.slice(), e = e.slice();
            const o = new ru(n.document, n.useRelations, n.forceWeakRemove);
            o.setOriginalOperations(t), o.setOriginalOperations(e);
            const i = o.originalOperations;
            if (0 == t.length || 0 == e.length) return {
                operationsA: t,
                operationsB: e,
                originalOperations: i
            };
            const r = new WeakMap;
            for (const e of t) r.set(e, 0);
            const s = {
                nextBaseVersionA: t[t.length - 1].baseVersion + 1,
                nextBaseVersionB: e[e.length - 1].baseVersion + 1,
                originalOperationsACount: t.length,
                originalOperationsBCount: e.length
            };
            let a = 0;
            for (; a < t.length;) {
                const n = t[a],
                    i = r.get(n);
                if (i == e.length) {
                    a++;
                    continue
                }
                const s = e[i],
                    c = ou(n, s, o.getContext(n, s, !0)),
                    l = ou(s, n, o.getContext(s, n, !1));
                o.updateRelation(n, s), o.setOriginalOperations(c, n), o.setOriginalOperations(l, s);
                for (const t of c) r.set(t, i + l.length);
                t.splice(a, 1, ...c), e.splice(i, 1, ...l)
            }
            if (n.padWithNoOps) {
                const n = t.length - s.originalOperationsACount,
                    o = e.length - s.originalOperationsBCount;
                au(t, o - n), au(e, n - o)
            }
            return su(t, s.nextBaseVersionB), su(e, s.nextBaseVersionA), {
                operationsA: t,
                operationsB: e,
                originalOperations: i
            }
        }
        class ru {
            constructor(t, e, n = !1) {
                this.originalOperations = new Map, this._history = t.history, this._useRelations = e, this._forceWeakRemove = !!n, this._relations = new Map
            }
            setOriginalOperations(t, e = null) {
                const n = e ? this.originalOperations.get(e) : null;
                for (const e of t) this.originalOperations.set(e, n || e)
            }
            updateRelation(t, e) {
                if (t instanceof Vh) e instanceof Gh ? t.targetPosition.isEqual(e.sourcePosition) || e.movedRange.containsPosition(t.targetPosition) ? this._setRelation(t, e, "insertAtSource") : t.targetPosition.isEqual(e.deletionPosition) ? this._setRelation(t, e, "insertBetween") : t.targetPosition.isAfter(e.sourcePosition) && this._setRelation(t, e, "moveTargetAfter") : e instanceof Vh && (t.targetPosition.isEqual(e.sourcePosition) || t.targetPosition.isBefore(e.sourcePosition) ? this._setRelation(t, e, "insertBefore") : this._setRelation(t, e, "insertAfter"));
                else if (t instanceof Hh) {
                    if (e instanceof Gh) t.splitPosition.isBefore(e.sourcePosition) && this._setRelation(t, e, "splitBefore");
                    else if (e instanceof Vh)
                        if (t.splitPosition.isEqual(e.sourcePosition) || t.splitPosition.isBefore(e.sourcePosition)) this._setRelation(t, e, "splitBefore");
                        else {
                            const n = Hl._createFromPositionAndShift(e.sourcePosition, e.howMany);
                            if (t.splitPosition.hasSameParentAs(e.sourcePosition) && n.containsPosition(t.splitPosition)) {
                                const o = n.end.offset - t.splitPosition.offset,
                                    i = t.splitPosition.offset - n.start.offset;
                                this._setRelation(t, e, {
                                    howMany: o,
                                    offset: i
                                })
                            }
                        }
                } else if (t instanceof Gh) e instanceof Gh ? (t.targetPosition.isEqual(e.sourcePosition) || this._setRelation(t, e, "mergeTargetNotMoved"), t.sourcePosition.isEqual(e.targetPosition) && this._setRelation(t, e, "mergeSourceNotMoved"), t.sourcePosition.isEqual(e.sourcePosition) && this._setRelation(t, e, "mergeSameElement")) : e instanceof Hh && t.sourcePosition.isEqual(e.splitPosition) && this._setRelation(t, e, "splitAtSource");
                else if (t instanceof qh) {
                    const n = t.newRange;
                    if (!n) return;
                    if (e instanceof Vh) {
                        const o = Hl._createFromPositionAndShift(e.sourcePosition, e.howMany),
                            i = o.containsPosition(n.start) || o.start.isEqual(n.start),
                            r = o.containsPosition(n.end) || o.end.isEqual(n.end);
                        !i && !r || o.containsRange(n) || this._setRelation(t, e, {
                            side: i ? "left" : "right",
                            path: i ? n.start.path.slice() : n.end.path.slice()
                        })
                    } else if (e instanceof Gh) {
                        const o = n.start.isEqual(e.targetPosition),
                            i = n.start.isEqual(e.deletionPosition),
                            r = n.end.isEqual(e.deletionPosition),
                            s = n.end.isEqual(e.sourcePosition);
                        (o || i || r || s) && this._setRelation(t, e, {
                            wasInLeftElement: o,
                            wasStartBeforeMergedElement: i,
                            wasEndBeforeMergedElement: r,
                            wasInRightElement: s
                        })
                    }
                }
            }
            getContext(t, e, n) {
                return {
                    aIsStrong: n,
                    aWasUndone: this._wasUndone(t),
                    bWasUndone: this._wasUndone(e),
                    abRelation: this._useRelations ? this._getRelation(t, e) : null,
                    baRelation: this._useRelations ? this._getRelation(e, t) : null,
                    forceWeakRemove: this._forceWeakRemove
                }
            }
            _wasUndone(t) {
                const e = this.originalOperations.get(t);
                return e.wasUndone || this._history.isUndoneOperation(e)
            }
            _getRelation(t, e) {
                const n = this.originalOperations.get(e),
                    o = this._history.getUndoneOperation(n);
                if (!o) return null;
                const i = this.originalOperations.get(t),
                    r = this._relations.get(i);
                return r && r.get(o) || null
            }
            _setRelation(t, e, n) {
                const o = this.originalOperations.get(t),
                    i = this.originalOperations.get(e);
                let r = this._relations.get(o);
                r || (r = new Map, this._relations.set(o, r)), r.set(i, n)
            }
        }

        function su(t, e) {
            for (const n of t) n.baseVersion = e++
        }

        function au(t, e) {
            for (let n = 0; n < e; n++) t.push(new Yh(0))
        }

        function cu(t, e, n) {
            const o = t.nodes.getNode(0).getAttribute(e);
            if (o == n) return null;
            const i = new Hl(t.position, t.position.getShiftedBy(t.howMany));
            return new Kh(i, e, o, n, 0)
        }

        function lu(t, e) {
            return null === t.targetPosition._getTransformedByDeletion(e.sourcePosition, e.howMany)
        }

        function du(t, e) {
            const n = [];
            for (let o = 0; o < t.length; o++) {
                const i = t[o],
                    r = new Vh(i.start, i.end.offset - i.start.offset, e, 0);
                n.push(r);
                for (let e = o + 1; e < t.length; e++) t[e] = t[e]._getTransformedByMove(r.sourcePosition, r.targetPosition, r.howMany)[0];
                e = e._getTransformedByMove(r.sourcePosition, r.targetPosition, r.howMany)
            }
            return n
        }
        eu(Kh, Kh, ((t, e, n) => {
            if (t.key === e.key && t.range.start.hasSameParentAs(e.range.start)) {
                const o = t.range.getDifference(e.range).map((e => new Kh(e, t.key, t.oldValue, t.newValue, 0))),
                    i = t.range.getIntersection(e.range);
                return i && n.aIsStrong && o.push(new Kh(i, e.key, e.newValue, t.newValue, 0)), 0 == o.length ? [new Yh(0)] : o
            }
            return [t]
        })), eu(Kh, Uh, ((t, e) => {
            if (t.range.start.hasSameParentAs(e.position) && t.range.containsPosition(e.position)) {
                const n = t.range._getTransformedByInsertion(e.position, e.howMany, !e.shouldReceiveAttributes).map((e => new Kh(e, t.key, t.oldValue, t.newValue, t.baseVersion)));
                if (e.shouldReceiveAttributes) {
                    const o = cu(e, t.key, t.oldValue);
                    o && n.unshift(o)
                }
                return n
            }
            return t.range = t.range._getTransformedByInsertion(e.position, e.howMany, !1)[0], [t]
        })), eu(Kh, Gh, ((t, e) => {
            const n = [];
            t.range.start.hasSameParentAs(e.deletionPosition) && (t.range.containsPosition(e.deletionPosition) || t.range.start.isEqual(e.deletionPosition)) && n.push(Hl._createFromPositionAndShift(e.graveyardPosition, 1));
            const o = t.range._getTransformedByMergeOperation(e);
            return o.isCollapsed || n.push(o), n.map((e => new Kh(e, t.key, t.oldValue, t.newValue, t.baseVersion)))
        })), eu(Kh, Vh, ((t, e) => {
            const n = function (t, e) {
                const n = Hl._createFromPositionAndShift(e.sourcePosition, e.howMany);
                let o = null,
                    i = [];
                n.containsRange(t, !0) ? o = t : t.start.hasSameParentAs(n.start) ? (i = t.getDifference(n), o = t.getIntersection(n)) : i = [t];
                const r = [];
                for (let t of i) {
                    t = t._getTransformedByDeletion(e.sourcePosition, e.howMany);
                    const n = e.getMovedRangeStart(),
                        o = t.start.hasSameParentAs(n),
                        i = t._getTransformedByInsertion(n, e.howMany, o);
                    r.push(...i)
                }
                o && r.push(o._getTransformedByMove(e.sourcePosition, e.targetPosition, e.howMany, !1)[0]);
                return r
            }(t.range, e);
            return n.map((e => new Kh(e, t.key, t.oldValue, t.newValue, t.baseVersion)))
        })), eu(Kh, Hh, ((t, e) => {
            if (t.range.end.isEqual(e.insertionPosition)) return e.graveyardPosition || t.range.end.offset++, [t];
            if (t.range.start.hasSameParentAs(e.splitPosition) && t.range.containsPosition(e.splitPosition)) {
                const n = t.clone();
                return n.range = new Hl(e.moveTargetPosition.clone(), t.range.end._getCombined(e.splitPosition, e.moveTargetPosition)), t.range.end = e.splitPosition.clone(), t.range.end.stickiness = "toPrevious", [t, n]
            }
            return t.range = t.range._getTransformedBySplitOperation(e), [t]
        })), eu(Uh, Kh, ((t, e) => {
            const n = [t];
            if (t.shouldReceiveAttributes && t.position.hasSameParentAs(e.range.start) && e.range.containsPosition(t.position)) {
                const o = cu(t, e.key, e.newValue);
                o && n.push(o)
            }
            return n
        })), eu(Uh, Uh, ((t, e, n) => (t.position.isEqual(e.position) && n.aIsStrong || (t.position = t.position._getTransformedByInsertOperation(e)), [t]))), eu(Uh, Vh, ((t, e) => (t.position = t.position._getTransformedByMoveOperation(e), [t]))), eu(Uh, Hh, ((t, e) => (t.position = t.position._getTransformedBySplitOperation(e), [t]))), eu(Uh, Gh, ((t, e) => (t.position = t.position._getTransformedByMergeOperation(e), [t]))), eu(qh, Uh, ((t, e) => (t.oldRange && (t.oldRange = t.oldRange._getTransformedByInsertOperation(e)[0]), t.newRange && (t.newRange = t.newRange._getTransformedByInsertOperation(e)[0]), [t]))), eu(qh, qh, ((t, e, n) => {
            if (t.name == e.name) {
                if (!n.aIsStrong) return [new Yh(0)];
                t.oldRange = e.newRange ? e.newRange.clone() : null
            }
            return [t]
        })), eu(qh, Gh, ((t, e) => (t.oldRange && (t.oldRange = t.oldRange._getTransformedByMergeOperation(e)), t.newRange && (t.newRange = t.newRange._getTransformedByMergeOperation(e)), [t]))), eu(qh, Vh, ((t, e, n) => {
            if (t.oldRange && (t.oldRange = Hl._createFromRanges(t.oldRange._getTransformedByMoveOperation(e))), t.newRange) {
                if (n.abRelation) {
                    const o = Hl._createFromRanges(t.newRange._getTransformedByMoveOperation(e));
                    if ("left" == n.abRelation.side && e.targetPosition.isEqual(t.newRange.start)) return t.newRange.end = o.end, t.newRange.start.path = n.abRelation.path, [t];
                    if ("right" == n.abRelation.side && e.targetPosition.isEqual(t.newRange.end)) return t.newRange.start = o.start, t.newRange.end.path = n.abRelation.path, [t]
                }
                t.newRange = Hl._createFromRanges(t.newRange._getTransformedByMoveOperation(e))
            }
            return [t]
        })), eu(qh, Hh, ((t, e, n) => {
            if (t.oldRange && (t.oldRange = t.oldRange._getTransformedBySplitOperation(e)), t.newRange) {
                if (n.abRelation) {
                    const o = t.newRange._getTransformedBySplitOperation(e);
                    return t.newRange.start.isEqual(e.splitPosition) && n.abRelation.wasStartBeforeMergedElement ? t.newRange.start = Ll._createAt(e.insertionPosition) : t.newRange.start.isEqual(e.splitPosition) && !n.abRelation.wasInLeftElement && (t.newRange.start = Ll._createAt(e.moveTargetPosition)), t.newRange.end.isEqual(e.splitPosition) && n.abRelation.wasInRightElement ? t.newRange.end = Ll._createAt(e.moveTargetPosition) : t.newRange.end.isEqual(e.splitPosition) && n.abRelation.wasEndBeforeMergedElement ? t.newRange.end = Ll._createAt(e.insertionPosition) : t.newRange.end = o.end, [t]
                }
                t.newRange = t.newRange._getTransformedBySplitOperation(e)
            }
            return [t]
        })), eu(Gh, Uh, ((t, e) => (t.sourcePosition.hasSameParentAs(e.position) && (t.howMany += e.howMany), t.sourcePosition = t.sourcePosition._getTransformedByInsertOperation(e), t.targetPosition = t.targetPosition._getTransformedByInsertOperation(e), [t]))), eu(Gh, Gh, ((t, e, n) => {
            if (t.sourcePosition.isEqual(e.sourcePosition) && t.targetPosition.isEqual(e.targetPosition)) {
                if (n.bWasUndone) {
                    const n = e.graveyardPosition.path.slice();
                    return n.push(0), t.sourcePosition = new Ll(e.graveyardPosition.root, n), t.howMany = 0, [t]
                }
                return [new Yh(0)]
            }
            if (t.sourcePosition.isEqual(e.sourcePosition) && !t.targetPosition.isEqual(e.targetPosition) && !n.bWasUndone && "splitAtSource" != n.abRelation) {
                const o = "$graveyard" == t.targetPosition.root.rootName,
                    i = "$graveyard" == e.targetPosition.root.rootName;
                if (i && !o || !(o && !i) && n.aIsStrong) {
                    const n = e.targetPosition._getTransformedByMergeOperation(e),
                        o = t.targetPosition._getTransformedByMergeOperation(e);
                    return [new Vh(n, t.howMany, o, 0)]
                }
                return [new Yh(0)]
            }
            return t.sourcePosition.hasSameParentAs(e.targetPosition) && (t.howMany += e.howMany), t.sourcePosition = t.sourcePosition._getTransformedByMergeOperation(e), t.targetPosition = t.targetPosition._getTransformedByMergeOperation(e), t.graveyardPosition.isEqual(e.graveyardPosition) && n.aIsStrong || (t.graveyardPosition = t.graveyardPosition._getTransformedByMergeOperation(e)), [t]
        })), eu(Gh, Vh, ((t, e, n) => {
            const o = Hl._createFromPositionAndShift(e.sourcePosition, e.howMany);
            return "remove" == e.type && !n.bWasUndone && !n.forceWeakRemove && t.deletionPosition.hasSameParentAs(e.sourcePosition) && o.containsPosition(t.sourcePosition) ? [new Yh(0)] : (t.sourcePosition.hasSameParentAs(e.targetPosition) && (t.howMany += e.howMany), t.sourcePosition.hasSameParentAs(e.sourcePosition) && (t.howMany -= e.howMany), t.sourcePosition = t.sourcePosition._getTransformedByMoveOperation(e), t.targetPosition = t.targetPosition._getTransformedByMoveOperation(e), t.graveyardPosition.isEqual(e.targetPosition) || (t.graveyardPosition = t.graveyardPosition._getTransformedByMoveOperation(e)), [t])
        })), eu(Gh, Hh, ((t, e, n) => {
            if (e.graveyardPosition && (t.graveyardPosition = t.graveyardPosition._getTransformedByDeletion(e.graveyardPosition, 1), t.deletionPosition.isEqual(e.graveyardPosition) && (t.howMany = e.howMany)), t.targetPosition.isEqual(e.splitPosition)) {
                const o = 0 != e.howMany,
                    i = e.graveyardPosition && t.deletionPosition.isEqual(e.graveyardPosition);
                if (o || i || "mergeTargetNotMoved" == n.abRelation) return t.sourcePosition = t.sourcePosition._getTransformedBySplitOperation(e), [t]
            }
            if (t.sourcePosition.isEqual(e.splitPosition)) {
                if ("mergeSourceNotMoved" == n.abRelation) return t.howMany = 0, t.targetPosition = t.targetPosition._getTransformedBySplitOperation(e), [t];
                if ("mergeSameElement" == n.abRelation || t.sourcePosition.offset > 0) return t.sourcePosition = e.moveTargetPosition.clone(), t.targetPosition = t.targetPosition._getTransformedBySplitOperation(e), [t]
            }
            return t.sourcePosition.hasSameParentAs(e.splitPosition) && (t.howMany = e.splitPosition.offset), t.sourcePosition = t.sourcePosition._getTransformedBySplitOperation(e), t.targetPosition = t.targetPosition._getTransformedBySplitOperation(e), [t]
        })), eu(Vh, Uh, ((t, e) => {
            const n = Hl._createFromPositionAndShift(t.sourcePosition, t.howMany)._getTransformedByInsertOperation(e, !1)[0];
            return t.sourcePosition = n.start, t.howMany = n.end.offset - n.start.offset, t.targetPosition.isEqual(e.position) || (t.targetPosition = t.targetPosition._getTransformedByInsertOperation(e)), [t]
        })), eu(Vh, Vh, ((t, e, n) => {
            const o = Hl._createFromPositionAndShift(t.sourcePosition, t.howMany),
                i = Hl._createFromPositionAndShift(e.sourcePosition, e.howMany);
            let r, s = n.aIsStrong,
                a = !n.aIsStrong;
            if ("insertBefore" == n.abRelation || "insertAfter" == n.baRelation ? a = !0 : "insertAfter" != n.abRelation && "insertBefore" != n.baRelation || (a = !1), r = t.targetPosition.isEqual(e.targetPosition) && a ? t.targetPosition._getTransformedByDeletion(e.sourcePosition, e.howMany) : t.targetPosition._getTransformedByMove(e.sourcePosition, e.targetPosition, e.howMany), lu(t, e) && lu(e, t)) return [e.getReversed()];
            if (o.containsPosition(e.targetPosition) && o.containsRange(i, !0)) return o.start = o.start._getTransformedByMove(e.sourcePosition, e.targetPosition, e.howMany), o.end = o.end._getTransformedByMove(e.sourcePosition, e.targetPosition, e.howMany), du([o], r);
            if (i.containsPosition(t.targetPosition) && i.containsRange(o, !0)) return o.start = o.start._getCombined(e.sourcePosition, e.getMovedRangeStart()), o.end = o.end._getCombined(e.sourcePosition, e.getMovedRangeStart()), du([o], r);
            const c = et(t.sourcePosition.getParentPath(), e.sourcePosition.getParentPath());
            if ("prefix" == c || "extension" == c) return o.start = o.start._getTransformedByMove(e.sourcePosition, e.targetPosition, e.howMany), o.end = o.end._getTransformedByMove(e.sourcePosition, e.targetPosition, e.howMany), du([o], r);
            "remove" != t.type || "remove" == e.type || n.aWasUndone || n.forceWeakRemove ? "remove" == t.type || "remove" != e.type || n.bWasUndone || n.forceWeakRemove || (s = !1) : s = !0;
            const l = [],
                d = o.getDifference(i);
            for (const t of d) {
                t.start = t.start._getTransformedByDeletion(e.sourcePosition, e.howMany), t.end = t.end._getTransformedByDeletion(e.sourcePosition, e.howMany);
                const n = "same" == et(t.start.getParentPath(), e.getMovedRangeStart().getParentPath()),
                    o = t._getTransformedByInsertion(e.getMovedRangeStart(), e.howMany, n);
                l.push(...o)
            }
            const h = o.getIntersection(i);
            return null !== h && s && (h.start = h.start._getCombined(e.sourcePosition, e.getMovedRangeStart()), h.end = h.end._getCombined(e.sourcePosition, e.getMovedRangeStart()), 0 === l.length ? l.push(h) : 1 == l.length ? i.start.isBefore(o.start) || i.start.isEqual(o.start) ? l.unshift(h) : l.push(h) : l.splice(1, 0, h)), 0 === l.length ? [new Yh(t.baseVersion)] : du(l, r)
        })), eu(Vh, Hh, ((t, e, n) => {
            let o = t.targetPosition.clone();
            t.targetPosition.isEqual(e.insertionPosition) && e.graveyardPosition && "moveTargetAfter" != n.abRelation || (o = t.targetPosition._getTransformedBySplitOperation(e));
            const i = Hl._createFromPositionAndShift(t.sourcePosition, t.howMany);
            if (i.end.isEqual(e.insertionPosition)) return e.graveyardPosition || t.howMany++, t.targetPosition = o, [t];
            if (i.start.hasSameParentAs(e.splitPosition) && i.containsPosition(e.splitPosition)) {
                let t = new Hl(e.splitPosition, i.end);
                t = t._getTransformedBySplitOperation(e);
                return du([new Hl(i.start, e.splitPosition), t], o)
            }
            t.targetPosition.isEqual(e.splitPosition) && "insertAtSource" == n.abRelation && (o = e.moveTargetPosition), t.targetPosition.isEqual(e.insertionPosition) && "insertBetween" == n.abRelation && (o = t.targetPosition);
            const r = [i._getTransformedBySplitOperation(e)];
            if (e.graveyardPosition) {
                const o = i.start.isEqual(e.graveyardPosition) || i.containsPosition(e.graveyardPosition);
                t.howMany > 1 && o && !n.aWasUndone && r.push(Hl._createFromPositionAndShift(e.insertionPosition, 1))
            }
            return du(r, o)
        })), eu(Vh, Gh, ((t, e, n) => {
            const o = Hl._createFromPositionAndShift(t.sourcePosition, t.howMany);
            if (e.deletionPosition.hasSameParentAs(t.sourcePosition) && o.containsPosition(e.sourcePosition))
                if ("remove" != t.type || n.forceWeakRemove) {
                    if (1 == t.howMany) return n.bWasUndone ? (t.sourcePosition = e.graveyardPosition.clone(), t.targetPosition = t.targetPosition._getTransformedByMergeOperation(e), [t]) : [new Yh(0)]
                } else if (!n.aWasUndone) {
                const n = [];
                let o = e.graveyardPosition.clone(),
                    i = e.targetPosition._getTransformedByMergeOperation(e);
                t.howMany > 1 && (n.push(new Vh(t.sourcePosition, t.howMany - 1, t.targetPosition, 0)), o = o._getTransformedByMove(t.sourcePosition, t.targetPosition, t.howMany - 1), i = i._getTransformedByMove(t.sourcePosition, t.targetPosition, t.howMany - 1));
                const r = e.deletionPosition._getCombined(t.sourcePosition, t.targetPosition),
                    s = new Vh(o, 1, r, 0),
                    a = s.getMovedRangeStart().path.slice();
                a.push(0);
                const c = new Ll(s.targetPosition.root, a);
                i = i._getTransformedByMove(o, r, 1);
                const l = new Vh(i, e.howMany, c, 0);
                return n.push(s), n.push(l), n
            }
            const i = Hl._createFromPositionAndShift(t.sourcePosition, t.howMany)._getTransformedByMergeOperation(e);
            return t.sourcePosition = i.start, t.howMany = i.end.offset - i.start.offset, t.targetPosition = t.targetPosition._getTransformedByMergeOperation(e), [t]
        })), eu($h, Uh, ((t, e) => (t.position = t.position._getTransformedByInsertOperation(e), [t]))), eu($h, Gh, ((t, e) => t.position.isEqual(e.deletionPosition) ? (t.position = e.graveyardPosition.clone(), t.position.stickiness = "toNext", [t]) : (t.position = t.position._getTransformedByMergeOperation(e), [t]))), eu($h, Vh, ((t, e) => (t.position = t.position._getTransformedByMoveOperation(e), [t]))), eu($h, $h, ((t, e, n) => {
            if (t.position.isEqual(e.position)) {
                if (!n.aIsStrong) return [new Yh(0)];
                t.oldName = e.newName
            }
            return [t]
        })), eu($h, Hh, ((t, e) => {
            if ("same" == et(t.position.path, e.splitPosition.getParentPath()) && !e.graveyardPosition) {
                const e = new $h(t.position.getShiftedBy(1), t.oldName, t.newName, 0);
                return [t, e]
            }
            return t.position = t.position._getTransformedBySplitOperation(e), [t]
        })), eu(Zh, Zh, ((t, e, n) => {
            if (t.root === e.root && t.key === e.key) {
                if (!n.aIsStrong || t.newValue === e.newValue) return [new Yh(0)];
                t.oldValue = e.newValue
            }
            return [t]
        })), eu(Qh, Qh, ((t, e) => t.rootName === e.rootName && t.isAdd === e.isAdd ? [new Yh(0)] : [t])), eu(Hh, Uh, ((t, e) => (t.splitPosition.hasSameParentAs(e.position) && t.splitPosition.offset < e.position.offset && (t.howMany += e.howMany), t.splitPosition = t.splitPosition._getTransformedByInsertOperation(e), t.insertionPosition = t.insertionPosition._getTransformedByInsertOperation(e), [t]))), eu(Hh, Gh, ((t, e, n) => {
            if (!t.graveyardPosition && !n.bWasUndone && t.splitPosition.hasSameParentAs(e.sourcePosition)) {
                const n = e.graveyardPosition.path.slice();
                n.push(0);
                const o = new Ll(e.graveyardPosition.root, n),
                    i = Hh.getInsertionPosition(new Ll(e.graveyardPosition.root, n)),
                    r = new Hh(o, 0, i, null, 0);
                return t.splitPosition = t.splitPosition._getTransformedByMergeOperation(e), t.insertionPosition = Hh.getInsertionPosition(t.splitPosition), t.graveyardPosition = r.insertionPosition.clone(), t.graveyardPosition.stickiness = "toNext", [r, t]
            }
            return t.splitPosition.hasSameParentAs(e.deletionPosition) && !t.splitPosition.isAfter(e.deletionPosition) && t.howMany--, t.splitPosition.hasSameParentAs(e.targetPosition) && (t.howMany += e.howMany), t.splitPosition = t.splitPosition._getTransformedByMergeOperation(e), t.insertionPosition = Hh.getInsertionPosition(t.splitPosition), t.graveyardPosition && (t.graveyardPosition = t.graveyardPosition._getTransformedByMergeOperation(e)), [t]
        })), eu(Hh, Vh, ((t, e, n) => {
            const o = Hl._createFromPositionAndShift(e.sourcePosition, e.howMany);
            if (t.graveyardPosition) {
                const i = o.start.isEqual(t.graveyardPosition) || o.containsPosition(t.graveyardPosition);
                if (!n.bWasUndone && i) {
                    const n = t.splitPosition._getTransformedByMoveOperation(e),
                        o = t.graveyardPosition._getTransformedByMoveOperation(e),
                        i = o.path.slice();
                    i.push(0);
                    const r = new Ll(o.root, i);
                    return [new Vh(n, t.howMany, r, 0)]
                }
                t.graveyardPosition = t.graveyardPosition._getTransformedByMoveOperation(e)
            }
            const i = t.splitPosition.isEqual(e.targetPosition);
            if (i && ("insertAtSource" == n.baRelation || "splitBefore" == n.abRelation)) return t.howMany += e.howMany, t.splitPosition = t.splitPosition._getTransformedByDeletion(e.sourcePosition, e.howMany), t.insertionPosition = Hh.getInsertionPosition(t.splitPosition), [t];
            if (i && n.abRelation && n.abRelation.howMany) {
                const {
                    howMany: e,
                    offset: o
                } = n.abRelation;
                return t.howMany += e, t.splitPosition = t.splitPosition.getShiftedBy(o), [t]
            }
            if (t.splitPosition.hasSameParentAs(e.sourcePosition) && o.containsPosition(t.splitPosition)) {
                const n = e.howMany - (t.splitPosition.offset - e.sourcePosition.offset);
                return t.howMany -= n, t.splitPosition.hasSameParentAs(e.targetPosition) && t.splitPosition.offset < e.targetPosition.offset && (t.howMany += e.howMany), t.splitPosition = e.sourcePosition.clone(), t.insertionPosition = Hh.getInsertionPosition(t.splitPosition), [t]
            }
            return e.sourcePosition.isEqual(e.targetPosition) || (t.splitPosition.hasSameParentAs(e.sourcePosition) && t.splitPosition.offset <= e.sourcePosition.offset && (t.howMany -= e.howMany), t.splitPosition.hasSameParentAs(e.targetPosition) && t.splitPosition.offset < e.targetPosition.offset && (t.howMany += e.howMany)), t.splitPosition.stickiness = "toNone", t.splitPosition = t.splitPosition._getTransformedByMoveOperation(e), t.splitPosition.stickiness = "toNext", t.graveyardPosition ? t.insertionPosition = t.insertionPosition._getTransformedByMoveOperation(e) : t.insertionPosition = Hh.getInsertionPosition(t.splitPosition), [t]
        })), eu(Hh, Hh, ((t, e, n) => {
            if (t.splitPosition.isEqual(e.splitPosition)) {
                if (!t.graveyardPosition && !e.graveyardPosition) return [new Yh(0)];
                if (t.graveyardPosition && e.graveyardPosition && t.graveyardPosition.isEqual(e.graveyardPosition)) return [new Yh(0)];
                if ("splitBefore" == n.abRelation) return t.howMany = 0, t.graveyardPosition = t.graveyardPosition._getTransformedBySplitOperation(e), [t]
            }
            if (t.graveyardPosition && e.graveyardPosition && t.graveyardPosition.isEqual(e.graveyardPosition)) {
                const o = "$graveyard" == t.splitPosition.root.rootName,
                    i = "$graveyard" == e.splitPosition.root.rootName;
                if (i && !o || !(o && !i) && n.aIsStrong) {
                    const n = [];
                    return e.howMany && n.push(new Vh(e.moveTargetPosition, e.howMany, e.splitPosition, 0)), t.howMany && n.push(new Vh(t.splitPosition, t.howMany, t.moveTargetPosition, 0)), n
                }
                return [new Yh(0)]
            }
            if (t.graveyardPosition && (t.graveyardPosition = t.graveyardPosition._getTransformedBySplitOperation(e)), t.splitPosition.isEqual(e.insertionPosition) && "splitBefore" == n.abRelation) return t.howMany++, [t];
            if (e.splitPosition.isEqual(t.insertionPosition) && "splitBefore" == n.baRelation) {
                const n = e.insertionPosition.path.slice();
                n.push(0);
                const o = new Ll(e.insertionPosition.root, n);
                return [t, new Vh(t.insertionPosition, 1, o, 0)]
            }
            return t.splitPosition.hasSameParentAs(e.splitPosition) && t.splitPosition.offset < e.splitPosition.offset && (t.howMany -= e.howMany), t.splitPosition = t.splitPosition._getTransformedBySplitOperation(e), t.insertionPosition = Hh.getInsertionPosition(t.splitPosition), [t]
        }));
        class hu extends(B(Ll)) {
            constructor(t, e, n = "toNone") {
                if (super(t, e, n), !this.root.is("rootElement")) throw new A("model-liveposition-root-not-rootelement", t);
                uu.call(this)
            }
            detach() {
                this.stopListening()
            }
            toPosition() {
                return new Ll(this.root, this.path.slice(), this.stickiness)
            }
            static fromPosition(t, e) {
                return new this(t.root, t.path.slice(), e || t.stickiness)
            }
        }

        function uu() {
            this.listenTo(this.root.document.model, "applyOperation", ((t, e) => {
                const n = e[0];
                n.isDocumentOperation && gu.call(this, n)
            }), {
                priority: "low"
            })
        }

        function gu(t) {
            const e = this.getTransformedByOperation(t);
            if (!this.isEqual(e)) {
                const t = this.toPosition();
                this.path = e.path, this.root = e.root, this.fire("change", t)
            }
        }
        hu.prototype.is = function (t) {
            return "livePosition" === t || "model:livePosition" === t || "position" == t || "model:position" === t
        };
        class pu {
            constructor(t = {}) {
                "string" == typeof t && (t = "transparent" === t ? {
                    isUndoable: !1
                } : {}, C("batch-constructor-deprecated-string-type"));
                const {
                    isUndoable: e = !0,
                    isLocal: n = !0,
                    isUndo: o = !1,
                    isTyping: i = !1
                } = t;
                this.operations = [], this.isUndoable = e, this.isLocal = n, this.isUndo = o, this.isTyping = i
            }
            get type() {
                return C("batch-type-deprecated"), "default"
            }
            get baseVersion() {
                for (const t of this.operations)
                    if (null !== t.baseVersion) return t.baseVersion;
                return null
            }
            addOperation(t) {
                return t.batch = this, this.operations.push(t), t
            }
        }
        var mu = Object.defineProperty,
            fu = Object.defineProperties,
            ku = Object.getOwnPropertyDescriptors,
            bu = Object.getOwnPropertySymbols,
            wu = Object.prototype.hasOwnProperty,
            Au = Object.prototype.propertyIsEnumerable,
            Cu = (t, e, n) => e in t ? mu(t, e, {
                enumerable: !0,
                configurable: !0,
                writable: !0,
                value: n
            }) : t[e] = n,
            _u = (t, e) => {
                for (var n in e || (e = {})) wu.call(e, n) && Cu(t, n, e[n]);
                if (bu)
                    for (var n of bu(e)) Au.call(e, n) && Cu(t, n, e[n]);
                return t
            };
        class vu {
            constructor(t) {
                this._changesInElement = new Map, this._elementSnapshots = new Map, this._changedMarkers = new Map, this._changedRoots = new Map, this._changeCount = 0, this._cachedChanges = null, this._cachedChangesWithGraveyard = null, this._refreshedItems = new Set, this._markerCollection = t
            }
            get isEmpty() {
                return 0 == this._changesInElement.size && 0 == this._changedMarkers.size && 0 == this._changedRoots.size
            }
            bufferOperation(t) {
                const e = t;
                switch (e.type) {
                    case "insert":
                        if (this._isInInsertedElement(e.position.parent)) return;
                        this._markInsert(e.position.parent, e.position.offset, e.nodes.maxOffset);
                        break;
                    case "addAttribute":
                    case "removeAttribute":
                    case "changeAttribute":
                        for (const t of e.range.getItems({
                                shallow: !0
                            })) this._isInInsertedElement(t.parent) || this._markAttribute(t);
                        break;
                    case "remove":
                    case "move":
                    case "reinsert": {
                        if (e.sourcePosition.isEqual(e.targetPosition) || e.sourcePosition.getShiftedBy(e.howMany).isEqual(e.targetPosition)) return;
                        const t = this._isInInsertedElement(e.sourcePosition.parent),
                            n = this._isInInsertedElement(e.targetPosition.parent);
                        t || this._markRemove(e.sourcePosition.parent, e.sourcePosition.offset, e.howMany), n || this._markInsert(e.targetPosition.parent, e.getMovedRangeStart().offset, e.howMany);
                        break
                    }
                    case "rename": {
                        if (this._isInInsertedElement(e.position.parent)) return;
                        this._markRemove(e.position.parent, e.position.offset, 1), this._markInsert(e.position.parent, e.position.offset, 1);
                        const t = Hl._createFromPositionAndShift(e.position, 1);
                        for (const e of this._markerCollection.getMarkersIntersectingRange(t)) {
                            const t = e.getData();
                            this.bufferMarkerChange(e.name, t, t)
                        }
                        break
                    }
                    case "split": {
                        const t = e.splitPosition.parent;
                        this._isInInsertedElement(t) || this._markRemove(t, e.splitPosition.offset, e.howMany), this._isInInsertedElement(e.insertionPosition.parent) || this._markInsert(e.insertionPosition.parent, e.insertionPosition.offset, 1), e.graveyardPosition && this._markRemove(e.graveyardPosition.parent, e.graveyardPosition.offset, 1);
                        break
                    }
                    case "merge": {
                        const t = e.sourcePosition.parent;
                        this._isInInsertedElement(t.parent) || this._markRemove(t.parent, t.startOffset, 1);
                        const n = e.graveyardPosition.parent;
                        this._markInsert(n, e.graveyardPosition.offset, 1);
                        const o = e.targetPosition.parent;
                        this._isInInsertedElement(o) || this._markInsert(o, e.targetPosition.offset, t.maxOffset);
                        break
                    }
                    case "detachRoot":
                    case "addRoot": {
                        const t = e.affectedSelectable;
                        if (!t._isLoaded) return;
                        if (t.isAttached() == e.isAdd) return;
                        this._bufferRootStateChange(e.rootName, e.isAdd);
                        break
                    }
                    case "addRootAttribute":
                    case "removeRootAttribute":
                    case "changeRootAttribute": {
                        if (!e.root._isLoaded) return;
                        const t = e.root.rootName;
                        this._bufferRootAttributeChange(t, e.key, e.oldValue, e.newValue);
                        break
                    }
                }
                this._cachedChanges = null
            }
            bufferMarkerChange(t, e, n) {
                e.range && e.range.root.is("rootElement") && !e.range.root._isLoaded && (e.range = null), n.range && n.range.root.is("rootElement") && !n.range.root._isLoaded && (n.range = null);
                let o = this._changedMarkers.get(t);
                o ? o.newMarkerData = n : (o = {
                    newMarkerData: n,
                    oldMarkerData: e
                }, this._changedMarkers.set(t, o)), null == o.oldMarkerData.range && null == n.range && this._changedMarkers.delete(t)
            }
            getMarkersToRemove() {
                const t = [];
                for (const [e, n] of this._changedMarkers) null != n.oldMarkerData.range && t.push({
                    name: e,
                    range: n.oldMarkerData.range
                });
                return t
            }
            getMarkersToAdd() {
                const t = [];
                for (const [e, n] of this._changedMarkers) null != n.newMarkerData.range && t.push({
                    name: e,
                    range: n.newMarkerData.range
                });
                return t
            }
            getChangedMarkers() {
                return Array.from(this._changedMarkers).map((([t, e]) => ({
                    name: t,
                    data: {
                        oldRange: e.oldMarkerData.range,
                        newRange: e.newMarkerData.range
                    }
                })))
            }
            hasDataChanges() {
                if (this._changesInElement.size > 0) return !0;
                if (this._changedRoots.size > 0) return !0;
                for (const {
                        newMarkerData: t,
                        oldMarkerData: e
                    } of this._changedMarkers.values()) {
                    if (t.affectsData !== e.affectsData) return !0;
                    if (t.affectsData) {
                        const n = t.range && !e.range,
                            o = !t.range && e.range,
                            i = t.range && e.range && !t.range.isEqual(e.range);
                        if (n || o || i) return !0
                    }
                }
                return !1
            }
            getChanges(t = {}) {
                if (this._cachedChanges) return t.includeChangesInGraveyard ? this._cachedChangesWithGraveyard.slice() : this._cachedChanges.slice();
                let e = [];
                for (const t of this._changesInElement.keys()) {
                    const n = this._changesInElement.get(t).sort(((t, e) => t.offset === e.offset ? t.type != e.type ? "remove" == t.type ? -1 : 1 : 0 : t.offset < e.offset ? -1 : 1)),
                        o = this._elementSnapshots.get(t),
                        i = yu(t.getChildren()),
                        r = xu(o.length, n);
                    let s = 0,
                        a = 0;
                    for (const n of r)
                        if ("i" === n) e.push(this._getInsertDiff(t, s, i[s])), s++;
                        else if ("r" === n) e.push(this._getRemoveDiff(t, s, o[a])), a++;
                    else if ("a" === n) {
                        const n = i[s].attributes,
                            r = o[a].attributes;
                        let c;
                        if ("$text" == i[s].name) c = new Hl(Ll._createAt(t, s), Ll._createAt(t, s + 1));
                        else {
                            const e = t.offsetToIndex(s);
                            c = new Hl(Ll._createAt(t, s), Ll._createAt(t.getChild(e), 0))
                        }
                        e.push(...this._getAttributesDiff(c, r, n)), s++, a++
                    } else s++, a++
                }
                e.sort(((t, e) => t.position.root != e.position.root ? t.position.root.rootName < e.position.root.rootName ? -1 : 1 : t.position.isEqual(e.position) ? t.changeCount - e.changeCount : t.position.isBefore(e.position) ? -1 : 1));
                for (let t = 1, n = 0; t < e.length; t++) {
                    const o = e[n],
                        i = e[t],
                        r = "remove" == o.type && "remove" == i.type && "$text" == o.name && "$text" == i.name && o.position.isEqual(i.position),
                        s = "insert" == o.type && "insert" == i.type && "$text" == o.name && "$text" == i.name && o.position.parent == i.position.parent && o.position.offset + o.length == i.position.offset,
                        a = "attribute" == o.type && "attribute" == i.type && o.position.parent == i.position.parent && o.range.isFlat && i.range.isFlat && o.position.offset + o.length == i.position.offset && o.attributeKey == i.attributeKey && o.attributeOldValue == i.attributeOldValue && o.attributeNewValue == i.attributeNewValue;
                    r || s || a ? (o.length++, a && (o.range.end = o.range.end.getShiftedBy(1)), e[t] = null) : n = t
                }
                e = e.filter((t => t));
                for (const t of e) delete t.changeCount, "attribute" == t.type && (delete t.position, delete t.length);
                return this._changeCount = 0, this._cachedChangesWithGraveyard = e, this._cachedChanges = e.filter(Eu), t.includeChangesInGraveyard ? this._cachedChangesWithGraveyard.slice() : this._cachedChanges.slice()
            }
            getChangedRoots() {
                return Array.from(this._changedRoots.values()).map((t => {
                    const e = _u({}, t);
                    return void 0 !== e.state && delete e.attributes, e
                }))
            }
            getRefreshedItems() {
                return new Set(this._refreshedItems)
            }
            reset() {
                this._changesInElement.clear(), this._elementSnapshots.clear(), this._changedMarkers.clear(), this._changedRoots.clear(), this._refreshedItems = new Set, this._cachedChanges = null
            }
            _bufferRootStateChange(t, e) {
                if (!this._changedRoots.has(t)) return void this._changedRoots.set(t, {
                    name: t,
                    state: e ? "attached" : "detached"
                });
                const n = this._changedRoots.get(t);
                void 0 !== n.state ? (delete n.state, void 0 === n.attributes && this._changedRoots.delete(t)) : n.state = e ? "attached" : "detached"
            }
            _bufferRootAttributeChange(t, e, n, o) {
                const i = this._changedRoots.get(t) || {
                        name: t
                    },
                    r = i.attributes || {};
                if (r[e]) {
                    const t = r[e];
                    o === t.oldValue ? delete r[e] : t.newValue = o
                } else r[e] = {
                    oldValue: n,
                    newValue: o
                };
                0 === Object.entries(r).length ? (delete i.attributes, void 0 === i.state && this._changedRoots.delete(t)) : (i.attributes = r, this._changedRoots.set(t, i))
            }
            _refreshItem(t) {
                if (this._isInInsertedElement(t.parent)) return;
                this._markRemove(t.parent, t.startOffset, t.offsetSize), this._markInsert(t.parent, t.startOffset, t.offsetSize), this._refreshedItems.add(t);
                const e = Hl._createOn(t);
                for (const t of this._markerCollection.getMarkersIntersectingRange(e)) {
                    const e = t.getData();
                    this.bufferMarkerChange(t.name, e, e)
                }
                this._cachedChanges = null
            }
            _bufferRootLoad(t) {
                if (t.isAttached()) {
                    this._bufferRootStateChange(t.rootName, !0), this._markInsert(t, 0, t.maxOffset);
                    for (const e of t.getAttributeKeys()) this._bufferRootAttributeChange(t.rootName, e, null, t.getAttribute(e));
                    for (const n of this._markerCollection)
                        if (n.getRange().root == t) {
                            const t = n.getData();
                            this.bufferMarkerChange(n.name, (e = _u({}, t), fu(e, ku({
                                range: null
                            }))), t)
                        } var e
                }
            }
            _markInsert(t, e, n) {
                if (t.root.is("rootElement") && !t.root._isLoaded) return;
                const o = {
                    type: "insert",
                    offset: e,
                    howMany: n,
                    count: this._changeCount++
                };
                this._markChange(t, o)
            }
            _markRemove(t, e, n) {
                if (t.root.is("rootElement") && !t.root._isLoaded) return;
                const o = {
                    type: "remove",
                    offset: e,
                    howMany: n,
                    count: this._changeCount++
                };
                this._markChange(t, o), this._removeAllNestedChanges(t, e, n)
            }
            _markAttribute(t) {
                if (t.root.is("rootElement") && !t.root._isLoaded) return;
                const e = {
                    type: "attribute",
                    offset: t.startOffset,
                    howMany: t.offsetSize,
                    count: this._changeCount++
                };
                this._markChange(t.parent, e)
            }
            _markChange(t, e) {
                this._makeSnapshot(t);
                const n = this._getChangesForElement(t);
                this._handleChange(e, n), n.push(e);
                for (let t = 0; t < n.length; t++) n[t].howMany < 1 && (n.splice(t, 1), t--)
            }
            _getChangesForElement(t) {
                let e;
                return this._changesInElement.has(t) ? e = this._changesInElement.get(t) : (e = [], this._changesInElement.set(t, e)), e
            }
            _makeSnapshot(t) {
                this._elementSnapshots.has(t) || this._elementSnapshots.set(t, yu(t.getChildren()))
            }
            _handleChange(t, e) {
                t.nodesToHandle = t.howMany;
                for (const n of e) {
                    const o = t.offset + t.howMany,
                        i = n.offset + n.howMany;
                    if ("insert" == t.type && ("insert" == n.type && (t.offset <= n.offset ? n.offset += t.howMany : t.offset < i && (n.howMany += t.nodesToHandle, t.nodesToHandle = 0)), "remove" == n.type && t.offset < n.offset && (n.offset += t.howMany), "attribute" == n.type))
                        if (t.offset <= n.offset) n.offset += t.howMany;
                        else if (t.offset < i) {
                        const i = n.howMany;
                        n.howMany = t.offset - n.offset, e.unshift({
                            type: "attribute",
                            offset: o,
                            howMany: i - n.howMany,
                            count: this._changeCount++
                        })
                    }
                    if ("remove" == t.type) {
                        if ("insert" == n.type)
                            if (o <= n.offset) n.offset -= t.howMany;
                            else if (o <= i)
                            if (t.offset < n.offset) {
                                const e = o - n.offset;
                                n.offset = t.offset, n.howMany -= e, t.nodesToHandle -= e
                            } else n.howMany -= t.nodesToHandle, t.nodesToHandle = 0;
                        else if (t.offset <= n.offset) t.nodesToHandle -= n.howMany, n.howMany = 0;
                        else if (t.offset < i) {
                            const e = i - t.offset;
                            n.howMany -= e, t.nodesToHandle -= e
                        }
                        if ("remove" == n.type && (o <= n.offset ? n.offset -= t.howMany : t.offset < n.offset && (t.nodesToHandle += n.howMany, n.howMany = 0)), "attribute" == n.type)
                            if (o <= n.offset) n.offset -= t.howMany;
                            else if (t.offset < n.offset) {
                            const e = o - n.offset;
                            n.offset = t.offset, n.howMany -= e
                        } else if (t.offset < i)
                            if (o <= i) {
                                const o = n.howMany;
                                n.howMany = t.offset - n.offset;
                                const i = o - n.howMany - t.nodesToHandle;
                                e.unshift({
                                    type: "attribute",
                                    offset: t.offset,
                                    howMany: i,
                                    count: this._changeCount++
                                })
                            } else n.howMany -= i - t.offset
                    }
                    if ("attribute" == t.type) {
                        if ("insert" == n.type)
                            if (t.offset < n.offset && o > n.offset) {
                                if (o > i) {
                                    const t = {
                                        type: "attribute",
                                        offset: i,
                                        howMany: o - i,
                                        count: this._changeCount++
                                    };
                                    this._handleChange(t, e), e.push(t)
                                }
                                t.nodesToHandle = n.offset - t.offset, t.howMany = t.nodesToHandle
                            } else t.offset >= n.offset && t.offset < i && (o > i ? (t.nodesToHandle = o - i, t.offset = i) : t.nodesToHandle = 0);
                        if ("remove" == n.type && t.offset < n.offset && o > n.offset) {
                            const i = {
                                type: "attribute",
                                offset: n.offset,
                                howMany: o - n.offset,
                                count: this._changeCount++
                            };
                            this._handleChange(i, e), e.push(i), t.nodesToHandle = n.offset - t.offset, t.howMany = t.nodesToHandle
                        }
                        "attribute" == n.type && (t.offset >= n.offset && o <= i ? (t.nodesToHandle = 0, t.howMany = 0, t.offset = 0) : t.offset <= n.offset && o >= i && (n.howMany = 0))
                    }
                }
                t.howMany = t.nodesToHandle, delete t.nodesToHandle
            }
            _getInsertDiff(t, e, n) {
                return {
                    type: "insert",
                    position: Ll._createAt(t, e),
                    name: n.name,
                    attributes: new Map(n.attributes),
                    length: 1,
                    changeCount: this._changeCount++
                }
            }
            _getRemoveDiff(t, e, n) {
                return {
                    type: "remove",
                    position: Ll._createAt(t, e),
                    name: n.name,
                    attributes: new Map(n.attributes),
                    length: 1,
                    changeCount: this._changeCount++
                }
            }
            _getAttributesDiff(t, e, n) {
                const o = [];
                n = new Map(n);
                for (const [i, r] of e) {
                    const e = n.has(i) ? n.get(i) : null;
                    e !== r && o.push({
                        type: "attribute",
                        position: t.start,
                        range: t.clone(),
                        length: 1,
                        attributeKey: i,
                        attributeOldValue: r,
                        attributeNewValue: e,
                        changeCount: this._changeCount++
                    }), n.delete(i)
                }
                for (const [e, i] of n) o.push({
                    type: "attribute",
                    position: t.start,
                    range: t.clone(),
                    length: 1,
                    attributeKey: e,
                    attributeOldValue: null,
                    attributeNewValue: i,
                    changeCount: this._changeCount++
                });
                return o
            }
            _isInInsertedElement(t) {
                const e = t.parent;
                if (!e) return !1;
                const n = this._changesInElement.get(e),
                    o = t.startOffset;
                if (n)
                    for (const t of n)
                        if ("insert" == t.type && o >= t.offset && o < t.offset + t.howMany) return !0;
                return this._isInInsertedElement(e)
            }
            _removeAllNestedChanges(t, e, n) {
                const o = new Hl(Ll._createAt(t, e), Ll._createAt(t, e + n));
                for (const t of o.getItems({
                        shallow: !0
                    })) t.is("element") && (this._elementSnapshots.delete(t), this._changesInElement.delete(t), this._removeAllNestedChanges(t, 0, t.maxOffset))
            }
        }

        function yu(t) {
            const e = [];
            for (const n of t)
                if (n.is("$text"))
                    for (let t = 0; t < n.data.length; t++) e.push({
                        name: "$text",
                        attributes: new Map(n.getAttributes())
                    });
                else e.push({
                    name: n.name,
                    attributes: new Map(n.getAttributes())
                });
            return e
        }

        function xu(t, e) {
            const n = [];
            let o = 0,
                i = 0;
            for (const t of e) {
                if (t.offset > o) {
                    for (let e = 0; e < t.offset - o; e++) n.push("e");
                    i += t.offset - o
                }
                if ("insert" == t.type) {
                    for (let e = 0; e < t.howMany; e++) n.push("i");
                    o = t.offset + t.howMany
                } else if ("remove" == t.type) {
                    for (let e = 0; e < t.howMany; e++) n.push("r");
                    o = t.offset, i += t.howMany
                } else n.push(..."a".repeat(t.howMany).split("")), o = t.offset + t.howMany, i += t.howMany
            }
            if (i < t)
                for (let e = 0; e < t - i - o; e++) n.push("e");
            return n
        }

        function Eu(t) {
            const e = "position" in t && "$graveyard" == t.position.root.rootName,
                n = "range" in t && "$graveyard" == t.range.root.rootName;
            return !e && !n
        }
        class Du {
            constructor() {
                this._operations = [], this._undoPairs = new Map, this._undoneOperations = new Set, this._baseVersionToOperationIndex = new Map, this._version = 0, this._gaps = new Map
            }
            get version() {
                return this._version
            }
            set version(t) {
                this._operations.length && t > this._version + 1 && this._gaps.set(this._version, t), this._version = t
            }
            get lastOperation() {
                return this._operations[this._operations.length - 1]
            }
            addOperation(t) {
                if (t.baseVersion !== this.version) throw new A("model-document-history-addoperation-incorrect-version", this, {
                    operation: t,
                    historyVersion: this.version
                });
                this._operations.push(t), this._version++, this._baseVersionToOperationIndex.set(t.baseVersion, this._operations.length - 1)
            }
            getOperations(t, e = this.version) {
                if (!this._operations.length) return [];
                const n = this._operations[0];
                void 0 === t && (t = n.baseVersion);
                let o = e - 1;
                for (const [e, n] of this._gaps) t > e && t < n && (t = n), o > e && o < n && (o = e - 1);
                if (o < n.baseVersion || t > this.lastOperation.baseVersion) return [];
                let i = this._baseVersionToOperationIndex.get(t);
                void 0 === i && (i = 0);
                let r = this._baseVersionToOperationIndex.get(o);
                return void 0 === r && (r = this._operations.length - 1), this._operations.slice(i, r + 1)
            }
            getOperation(t) {
                const e = this._baseVersionToOperationIndex.get(t);
                if (void 0 !== e) return this._operations[e]
            }
            setOperationAsUndone(t, e) {
                this._undoPairs.set(e, t), this._undoneOperations.add(t)
            }
            isUndoingOperation(t) {
                return this._undoPairs.has(t)
            }
            isUndoneOperation(t) {
                return this._undoneOperations.has(t)
            }
            getUndoneOperation(t) {
                return this._undoPairs.get(t)
            }
            reset() {
                this._version = 0, this._undoPairs = new Map, this._operations = [], this._undoneOperations = new Set, this._gaps = new Map, this._baseVersionToOperationIndex = new Map
            }
        }
        class Su extends Pl {
            constructor(t, e, n = "main") {
                super(e), this._isAttached = !0, this._isLoaded = !0, this._document = t, this.rootName = n
            }
            get document() {
                return this._document
            }
            isAttached() {
                return this._isAttached
            }
            toJSON() {
                return this.rootName
            }
        }
        Su.prototype.is = function (t, e) {
            return e ? e === this.name && ("rootElement" === t || "model:rootElement" === t || "element" === t || "model:element" === t) : "rootElement" === t || "model:rootElement" === t || "element" === t || "model:element" === t || "node" === t || "model:node" === t
        };
        var Iu = Object.defineProperty,
            Mu = Object.defineProperties,
            Tu = Object.getOwnPropertyDescriptors,
            Bu = Object.getOwnPropertySymbols,
            Nu = Object.prototype.hasOwnProperty,
            Pu = Object.prototype.propertyIsEnumerable,
            zu = (t, e, n) => e in t ? Iu(t, e, {
                enumerable: !0,
                configurable: !0,
                writable: !0,
                value: n
            }) : t[e] = n,
            Ou = (t, e) => {
                for (var n in e || (e = {})) Nu.call(e, n) && zu(t, n, e[n]);
                if (Bu)
                    for (var n of Bu(e)) Pu.call(e, n) && zu(t, n, e[n]);
                return t
            },
            Lu = (t, e) => Mu(t, Tu(e));
        const ju = "$graveyard";
        class Ru extends(B()) {
            constructor(t) {
                super(), this.model = t, this.history = new Du, this.selection = new fd(this), this.roots = new Si({
                    idProperty: "rootName"
                }), this.differ = new vu(t.markers), this.isReadOnly = !1, this._postFixers = new Set, this._hasSelectionChangedFromTheLastChangeBlock = !1, this.createRoot("$root", ju), this.listenTo(t, "applyOperation", ((t, e) => {
                    const n = e[0];
                    n.isDocumentOperation && this.differ.bufferOperation(n)
                }), {
                    priority: "high"
                }), this.listenTo(t, "applyOperation", ((t, e) => {
                    const n = e[0];
                    n.isDocumentOperation && this.history.addOperation(n)
                }), {
                    priority: "low"
                }), this.listenTo(this.selection, "change", (() => {
                    this._hasSelectionChangedFromTheLastChangeBlock = !0
                })), this.listenTo(t.markers, "update", ((t, e, n, o, i) => {
                    const r = Lu(Ou({}, e.getData()), {
                        range: o
                    });
                    this.differ.bufferMarkerChange(e.name, i, r), null === n && e.on("change", ((t, n) => {
                        const o = e.getData();
                        this.differ.bufferMarkerChange(e.name, Lu(Ou({}, o), {
                            range: n
                        }), o)
                    }))
                })), this.registerPostFixer((t => {
                    let e = !1;
                    for (const n of this.roots) n.isAttached() || n.isEmpty || (t.remove(t.createRangeIn(n)), e = !0);
                    for (const n of this.model.markers) n.getRange().root.isAttached() || (t.removeMarker(n), e = !0);
                    return e
                }))
            }
            get version() {
                return this.history.version
            }
            set version(t) {
                this.history.version = t
            }
            get graveyard() {
                return this.getRoot(ju)
            }
            createRoot(t = "$root", e = "main") {
                if (this.roots.get(e)) throw new A("model-document-createroot-name-exists", this, {
                    name: e
                });
                const n = new Su(this, t, e);
                return this.roots.add(n), n
            }
            destroy() {
                this.selection.destroy(), this.stopListening()
            }
            getRoot(t = "main") {
                return this.roots.get(t)
            }
            getRootNames(t = !1) {
                return this.getRoots(t).map((t => t.rootName))
            }
            getRoots(t = !1) {
                return Array.from(this.roots).filter((e => e != this.graveyard && (t || e.isAttached()) && e._isLoaded))
            }
            registerPostFixer(t) {
                this._postFixers.add(t)
            }
            toJSON() {
                const t = hs(this);
                return t.selection = "[engine.model.DocumentSelection]", t.model = "[engine.model.Model]", t
            }
            _handleChangeBlock(t) {
                this._hasDocumentChangedFromTheLastChangeBlock() && (this._callPostFixers(t), this.selection.refresh(), this.differ.hasDataChanges() ? this.fire("change:data", t.batch) : this.fire("change", t.batch), this.selection.refresh(), this.differ.reset()), this._hasSelectionChangedFromTheLastChangeBlock = !1
            }
            _hasDocumentChangedFromTheLastChangeBlock() {
                return !this.differ.isEmpty || this._hasSelectionChangedFromTheLastChangeBlock
            }
            _getDefaultRoot() {
                const t = this.getRoots();
                return t.length ? t[0] : this.graveyard
            }
            _getDefaultRange() {
                const t = this._getDefaultRoot(),
                    e = this.model,
                    n = e.schema,
                    o = e.createPositionFromPath(t, [0]);
                return n.getNearestSelectionRange(o) || e.createRange(o)
            }
            _validateSelectionRange(t) {
                return Fu(t.start) && Fu(t.end)
            }
            _callPostFixers(t) {
                let e = !1;
                do {
                    for (const n of this._postFixers)
                        if (this.selection.refresh(), e = n(t), e) break
                } while (e)
            }
        }

        function Fu(t) {
            const e = t.textNode;
            if (e) {
                const n = e.data,
                    o = t.offset - e.startOffset;
                return !Pi(n, o) && !zi(n, o)
            }
            return !0
        }
        var Vu = Object.defineProperty,
            Uu = Object.defineProperties,
            Hu = Object.getOwnPropertyDescriptors,
            Gu = Object.getOwnPropertySymbols,
            qu = Object.prototype.hasOwnProperty,
            Wu = Object.prototype.propertyIsEnumerable,
            Ku = (t, e, n) => e in t ? Vu(t, e, {
                enumerable: !0,
                configurable: !0,
                writable: !0,
                value: n
            }) : t[e] = n;
        class Yu extends(B()) {
            constructor() {
                super(...arguments), this._markers = new Map
            } [Symbol.iterator]() {
                return this._markers.values()
            }
            has(t) {
                const e = t instanceof $u ? t.name : t;
                return this._markers.has(e)
            }
            get(t) {
                return this._markers.get(t) || null
            }
            _set(t, e, n = !1, o = !1) {
                const i = t instanceof $u ? t.name : t;
                if (i.includes(",")) throw new A("markercollection-incorrect-marker-name", this);
                const r = this._markers.get(i);
                if (r) {
                    const t = r.getData(),
                        s = r.getRange();
                    let a = !1;
                    return s.isEqual(e) || (r._attachLiveRange(ud.fromRange(e)), a = !0), n != r.managedUsingOperations && (r._managedUsingOperations = n, a = !0), "boolean" == typeof o && o != r.affectsData && (r._affectsData = o, a = !0), a && this.fire(`update:${i}`, r, s, e, t), r
                }
                const s = ud.fromRange(e),
                    a = new $u(i, s, n, o);
                var c;
                return this._markers.set(i, a), this.fire(`update:${i}`, a, null, e, (c = ((t, e) => {
                    for (var n in e || (e = {})) qu.call(e, n) && Ku(t, n, e[n]);
                    if (Gu)
                        for (var n of Gu(e)) Wu.call(e, n) && Ku(t, n, e[n]);
                    return t
                })({}, a.getData()), Uu(c, Hu({
                    range: null
                })))), a
            }
            _remove(t) {
                const e = t instanceof $u ? t.name : t,
                    n = this._markers.get(e);
                return !!n && (this._markers.delete(e), this.fire(`update:${e}`, n, n.getRange(), null, n.getData()), this._destroyMarker(n), !0)
            }
            _refresh(t) {
                const e = t instanceof $u ? t.name : t,
                    n = this._markers.get(e);
                if (!n) throw new A("markercollection-refresh-marker-not-exists", this);
                const o = n.getRange();
                this.fire(`update:${e}`, n, o, o, n.getData())
            }* getMarkersAtPosition(t) {
                for (const e of this) e.getRange().containsPosition(t) && (yield e)
            }* getMarkersIntersectingRange(t) {
                for (const e of this) null !== e.getRange().getIntersection(t) && (yield e)
            }
            destroy() {
                for (const t of this._markers.values()) this._destroyMarker(t);
                this._markers = null, this.stopListening()
            }* getMarkersGroup(t) {
                for (const e of this._markers.values()) e.name.startsWith(t + ":") && (yield e)
            }
            _destroyMarker(t) {
                t.stopListening(), t._detachLiveRange()
            }
        }
        class $u extends(B(Il)) {
            constructor(t, e, n, o) {
                super(), this.name = t, this._liveRange = this._attachLiveRange(e), this._managedUsingOperations = n, this._affectsData = o
            }
            get managedUsingOperations() {
                if (!this._liveRange) throw new A("marker-destroyed", this);
                return this._managedUsingOperations
            }
            get affectsData() {
                if (!this._liveRange) throw new A("marker-destroyed", this);
                return this._affectsData
            }
            getData() {
                return {
                    range: this.getRange(),
                    affectsData: this.affectsData,
                    managedUsingOperations: this.managedUsingOperations
                }
            }
            getStart() {
                if (!this._liveRange) throw new A("marker-destroyed", this);
                return this._liveRange.start.clone()
            }
            getEnd() {
                if (!this._liveRange) throw new A("marker-destroyed", this);
                return this._liveRange.end.clone()
            }
            getRange() {
                if (!this._liveRange) throw new A("marker-destroyed", this);
                return this._liveRange.toRange()
            }
            _attachLiveRange(t) {
                return this._liveRange && this._detachLiveRange(), t.delegate("change:range").to(this), t.delegate("change:content").to(this), this._liveRange = t, t
            }
            _detachLiveRange() {
                this._liveRange.stopDelegating("change:range", this), this._liveRange.stopDelegating("change:content", this), this._liveRange.detach(), this._liveRange = null
            }
        }
        $u.prototype.is = function (t) {
            return "marker" === t || "model:marker" === t
        };
        class Zu extends Nh {
            constructor(t, e) {
                super(null), this.sourcePosition = t.clone(), this.howMany = e
            }
            get type() {
                return "detach"
            }
            get affectedSelectable() {
                return null
            }
            toJSON() {
                const t = super.toJSON();
                return t.sourcePosition = this.sourcePosition.toJSON(), t
            }
            _validate() {
                if (this.sourcePosition.root.document) throw new A("detach-operation-on-document-node", this)
            }
            _execute() {
                zh(Hl._createFromPositionAndShift(this.sourcePosition, this.howMany))
            }
            static get className() {
                return "DetachOperation"
            }
        }
        class Qu extends Il {
            constructor(t) {
                super(), this.markers = new Map, this._children = new Tl, t && this._insertChild(0, t)
            } [Symbol.iterator]() {
                return this.getChildren()
            }
            get childCount() {
                return this._children.length
            }
            get maxOffset() {
                return this._children.maxOffset
            }
            get isEmpty() {
                return 0 === this.childCount
            }
            get nextSibling() {
                return null
            }
            get previousSibling() {
                return null
            }
            get root() {
                return this
            }
            get parent() {
                return null
            }
            get document() {
                return null
            }
            isAttached() {
                return !1
            }
            getAncestors() {
                return []
            }
            getChild(t) {
                return this._children.getNode(t)
            }
            getChildren() {
                return this._children[Symbol.iterator]()
            }
            getChildIndex(t) {
                return this._children.getNodeIndex(t)
            }
            getChildStartOffset(t) {
                return this._children.getNodeStartOffset(t)
            }
            getPath() {
                return []
            }
            getNodeByPath(t) {
                let e = this;
                for (const n of t) e = e.getChild(e.offsetToIndex(n));
                return e
            }
            offsetToIndex(t) {
                return this._children.offsetToIndex(t)
            }
            toJSON() {
                const t = [];
                for (const e of this._children) t.push(e.toJSON());
                return t
            }
            static fromJSON(t) {
                const e = [];
                for (const n of t) n.name ? e.push(Pl.fromJSON(n)) : e.push(Bl.fromJSON(n));
                return new Qu(e)
            }
            _appendChild(t) {
                this._insertChild(this.childCount, t)
            }
            _insertChild(t, e) {
                const n = function (t) {
                    if ("string" == typeof t) return [new Bl(t)];
                    nt(t) || (t = [t]);
                    return Array.from(t).map((t => "string" == typeof t ? new Bl(t) : t instanceof Nl ? new Bl(t.data, t.getAttributes()) : t))
                }(e);
                for (const t of n) null !== t.parent && t._remove(), t.parent = this;
                this._children._insertNodes(t, n)
            }
            _removeChildren(t, e = 1) {
                const n = this._children._removeNodes(t, e);
                for (const t of n) t.parent = null;
                return n
            }
        }
        Qu.prototype.is = function (t) {
            return "documentFragment" === t || "model:documentFragment" === t
        };
        class Ju {
            constructor(t, e) {
                this.model = t, this.batch = e
            }
            createText(t, e) {
                return new Bl(t, e)
            }
            createElement(t, e) {
                return new Pl(t, e)
            }
            createDocumentFragment() {
                return new Qu
            }
            cloneElement(t, e = !0) {
                return t._clone(e)
            }
            insert(t, e, n = 0) {
                if (this._assertWriterUsedCorrectly(), t instanceof Bl && "" == t.data) return;
                const o = Ll._createAt(e, n);
                if (t.parent) {
                    if (og(t.root, o.root)) return void this.move(Hl._createOn(t), o);
                    if (t.root.document) throw new A("model-writer-insert-forbidden-move", this);
                    this.remove(t)
                }
                const i = o.root.document ? o.root.document.version : null,
                    r = new Uh(o, t, i);
                if (t instanceof Bl && (r.shouldReceiveAttributes = !0), this.batch.addOperation(r), this.model.applyOperation(r), t instanceof Qu)
                    for (const [e, n] of t.markers) {
                        const t = Ll._createAt(n.root, 0),
                            i = {
                                range: new Hl(n.start._getCombined(t, o), n.end._getCombined(t, o)),
                                usingOperation: !0,
                                affectsData: !0
                            };
                        this.model.markers.has(e) ? this.updateMarker(e, i) : this.addMarker(e, i)
                    }
            }
            insertText(t, e, n, o) {
                e instanceof Qu || e instanceof Pl || e instanceof Ll ? this.insert(this.createText(t), e, n) : this.insert(this.createText(t, e), n, o)
            }
            insertElement(t, e, n, o) {
                e instanceof Qu || e instanceof Pl || e instanceof Ll ? this.insert(this.createElement(t), e, n) : this.insert(this.createElement(t, e), n, o)
            }
            append(t, e) {
                this.insert(t, e, "end")
            }
            appendText(t, e, n) {
                e instanceof Qu || e instanceof Pl ? this.insert(this.createText(t), e, "end") : this.insert(this.createText(t, e), n, "end")
            }
            appendElement(t, e, n) {
                e instanceof Qu || e instanceof Pl ? this.insert(this.createElement(t), e, "end") : this.insert(this.createElement(t, e), n, "end")
            }
            setAttribute(t, e, n) {
                if (this._assertWriterUsedCorrectly(), n instanceof Hl) {
                    const o = n.getMinimalFlatRanges();
                    for (const n of o) Xu(this, t, e, n)
                } else tg(this, t, e, n)
            }
            setAttributes(t, e) {
                for (const [n, o] of Bi(t)) this.setAttribute(n, o, e)
            }
            removeAttribute(t, e) {
                if (this._assertWriterUsedCorrectly(), e instanceof Hl) {
                    const n = e.getMinimalFlatRanges();
                    for (const e of n) Xu(this, t, null, e)
                } else tg(this, t, null, e)
            }
            clearAttributes(t) {
                this._assertWriterUsedCorrectly();
                const e = t => {
                    for (const e of t.getAttributeKeys()) this.removeAttribute(e, t)
                };
                if (t instanceof Hl)
                    for (const n of t.getItems()) e(n);
                else e(t)
            }
            move(t, e, n) {
                if (this._assertWriterUsedCorrectly(), !(t instanceof Hl)) throw new A("writer-move-invalid-range", this);
                if (!t.isFlat) throw new A("writer-move-range-not-flat", this);
                const o = Ll._createAt(e, n);
                if (o.isEqual(t.start)) return;
                if (this._addOperationForAffectedMarkers("move", t), !og(t.root, o.root)) throw new A("writer-move-different-document", this);
                const i = t.root.document ? t.root.document.version : null,
                    r = new Vh(t.start, t.end.offset - t.start.offset, o, i);
                this.batch.addOperation(r), this.model.applyOperation(r)
            }
            remove(t) {
                this._assertWriterUsedCorrectly();
                const e = (t instanceof Hl ? t : Hl._createOn(t)).getMinimalFlatRanges().reverse();
                for (const t of e) this._addOperationForAffectedMarkers("move", t), ng(t.start, t.end.offset - t.start.offset, this.batch, this.model)
            }
            merge(t) {
                this._assertWriterUsedCorrectly();
                const e = t.nodeBefore,
                    n = t.nodeAfter;
                if (this._addOperationForAffectedMarkers("merge", t), !(e instanceof Pl)) throw new A("writer-merge-no-element-before", this);
                if (!(n instanceof Pl)) throw new A("writer-merge-no-element-after", this);
                t.root.document ? this._merge(t) : this._mergeDetached(t)
            }
            createPositionFromPath(t, e, n) {
                return this.model.createPositionFromPath(t, e, n)
            }
            createPositionAt(t, e) {
                return this.model.createPositionAt(t, e)
            }
            createPositionAfter(t) {
                return this.model.createPositionAfter(t)
            }
            createPositionBefore(t) {
                return this.model.createPositionBefore(t)
            }
            createRange(t, e) {
                return this.model.createRange(t, e)
            }
            createRangeIn(t) {
                return this.model.createRangeIn(t)
            }
            createRangeOn(t) {
                return this.model.createRangeOn(t)
            }
            createSelection(...t) {
                return this.model.createSelection(...t)
            }
            _mergeDetached(t) {
                const e = t.nodeBefore,
                    n = t.nodeAfter;
                this.move(Hl._createIn(n), Ll._createAt(e, "end")), this.remove(n)
            }
            _merge(t) {
                const e = Ll._createAt(t.nodeBefore, "end"),
                    n = Ll._createAt(t.nodeAfter, 0),
                    o = t.root.document.graveyard,
                    i = new Ll(o, [0]),
                    r = t.root.document.version,
                    s = new Gh(n, t.nodeAfter.maxOffset, e, i, r);
                this.batch.addOperation(s), this.model.applyOperation(s)
            }
            rename(t, e) {
                if (this._assertWriterUsedCorrectly(), !(t instanceof Pl)) throw new A("writer-rename-not-element-instance", this);
                const n = t.root.document ? t.root.document.version : null,
                    o = new $h(Ll._createBefore(t), t.name, e, n);
                this.batch.addOperation(o), this.model.applyOperation(o)
            }
            split(t, e) {
                this._assertWriterUsedCorrectly();
                let n, o, i = t.parent;
                if (!i.parent) throw new A("writer-split-element-no-parent", this);
                if (e || (e = i.parent), !t.parent.getAncestors({
                        includeSelf: !0
                    }).includes(e)) throw new A("writer-split-invalid-limit-element", this);
                do {
                    const e = i.root.document ? i.root.document.version : null,
                        r = i.maxOffset - t.offset,
                        s = Hh.getInsertionPosition(t),
                        a = new Hh(t, r, s, null, e);
                    this.batch.addOperation(a), this.model.applyOperation(a), n || o || (n = i, o = t.parent.nextSibling), i = (t = this.createPositionAfter(t.parent)).parent
                } while (i !== e);
                return {
                    position: t,
                    range: new Hl(Ll._createAt(n, "end"), Ll._createAt(o, 0))
                }
            }
            wrap(t, e) {
                if (this._assertWriterUsedCorrectly(), !t.isFlat) throw new A("writer-wrap-range-not-flat", this);
                const n = e instanceof Pl ? e : new Pl(e);
                if (n.childCount > 0) throw new A("writer-wrap-element-not-empty", this);
                if (null !== n.parent) throw new A("writer-wrap-element-attached", this);
                this.insert(n, t.start);
                const o = new Hl(t.start.getShiftedBy(1), t.end.getShiftedBy(1));
                this.move(o, Ll._createAt(n, 0))
            }
            unwrap(t) {
                if (this._assertWriterUsedCorrectly(), null === t.parent) throw new A("writer-unwrap-element-no-parent", this);
                this.move(Hl._createIn(t), this.createPositionAfter(t)), this.remove(t)
            }
            addMarker(t, e) {
                if (this._assertWriterUsedCorrectly(), !e || "boolean" != typeof e.usingOperation) throw new A("writer-addmarker-no-usingoperation", this);
                const n = e.usingOperation,
                    o = e.range,
                    i = void 0 !== e.affectsData && e.affectsData;
                if (this.model.markers.has(t)) throw new A("writer-addmarker-marker-exists", this);
                if (!o) throw new A("writer-addmarker-no-range", this);
                return n ? (eg(this, t, null, o, i), this.model.markers.get(t)) : this.model.markers._set(t, o, n, i)
            }
            updateMarker(t, e) {
                this._assertWriterUsedCorrectly();
                const n = "string" == typeof t ? t : t.name,
                    o = this.model.markers.get(n);
                if (!o) throw new A("writer-updatemarker-marker-not-exists", this);
                if (!e) return C("writer-updatemarker-reconvert-using-editingcontroller", {
                    markerName: n
                }), void this.model.markers._refresh(o);
                const i = "boolean" == typeof e.usingOperation,
                    r = "boolean" == typeof e.affectsData,
                    s = r ? e.affectsData : o.affectsData;
                if (!i && !e.range && !r) throw new A("writer-updatemarker-wrong-options", this);
                const a = o.getRange(),
                    c = e.range ? e.range : a;
                i && e.usingOperation !== o.managedUsingOperations ? e.usingOperation ? eg(this, n, null, c, s) : (eg(this, n, a, null, s), this.model.markers._set(n, c, void 0, s)) : o.managedUsingOperations ? eg(this, n, a, c, s) : this.model.markers._set(n, c, void 0, s)
            }
            removeMarker(t) {
                this._assertWriterUsedCorrectly();
                const e = "string" == typeof t ? t : t.name;
                if (!this.model.markers.has(e)) throw new A("writer-removemarker-no-marker", this);
                const n = this.model.markers.get(e);
                if (!n.managedUsingOperations) return void this.model.markers._remove(e);
                eg(this, e, n.getRange(), null, n.affectsData)
            }
            addRoot(t, e = "$root") {
                this._assertWriterUsedCorrectly();
                const n = this.model.document.getRoot(t);
                if (n && n.isAttached()) throw new A("writer-addroot-root-exists", this);
                const o = this.model.document,
                    i = new Qh(t, e, !0, o, o.version);
                return this.batch.addOperation(i), this.model.applyOperation(i), this.model.document.getRoot(t)
            }
            detachRoot(t) {
                this._assertWriterUsedCorrectly();
                const e = "string" == typeof t ? this.model.document.getRoot(t) : t;
                if (!e || !e.isAttached()) throw new A("writer-detachroot-no-root", this);
                for (const t of this.model.markers) t.getRange().root === e && this.removeMarker(t);
                for (const t of e.getAttributeKeys()) this.removeAttribute(t, e);
                this.remove(this.createRangeIn(e));
                const n = this.model.document,
                    o = new Qh(e.rootName, e.name, !1, n, n.version);
                this.batch.addOperation(o), this.model.applyOperation(o)
            }
            setSelection(...t) {
                this._assertWriterUsedCorrectly(), this.model.document.selection._setTo(...t)
            }
            setSelectionFocus(t, e) {
                this._assertWriterUsedCorrectly(), this.model.document.selection._setFocus(t, e)
            }
            setSelectionAttribute(t, e) {
                if (this._assertWriterUsedCorrectly(), "string" == typeof t) this._setSelectionAttribute(t, e);
                else
                    for (const [e, n] of Bi(t)) this._setSelectionAttribute(e, n)
            }
            removeSelectionAttribute(t) {
                if (this._assertWriterUsedCorrectly(), "string" == typeof t) this._removeSelectionAttribute(t);
                else
                    for (const e of t) this._removeSelectionAttribute(e)
            }
            overrideSelectionGravity() {
                return this.model.document.selection._overrideGravity()
            }
            restoreSelectionGravity(t) {
                this.model.document.selection._restoreGravity(t)
            }
            _setSelectionAttribute(t, e) {
                const n = this.model.document.selection;
                if (n.isCollapsed && n.anchor.parent.isEmpty) {
                    const o = fd._getStoreAttributeKey(t);
                    this.setAttribute(o, e, n.anchor.parent)
                }
                n._setAttribute(t, e)
            }
            _removeSelectionAttribute(t) {
                const e = this.model.document.selection;
                if (e.isCollapsed && e.anchor.parent.isEmpty) {
                    const n = fd._getStoreAttributeKey(t);
                    this.removeAttribute(n, e.anchor.parent)
                }
                e._removeAttribute(t)
            }
            _assertWriterUsedCorrectly() {
                if (this.model._currentWriter !== this) throw new A("writer-incorrect-use", this)
            }
            _addOperationForAffectedMarkers(t, e) {
                for (const n of this.model.markers) {
                    if (!n.managedUsingOperations) continue;
                    const o = n.getRange();
                    let i = !1;
                    if ("move" === t) {
                        const t = e;
                        i = t.containsPosition(o.start) || t.start.isEqual(o.start) || t.containsPosition(o.end) || t.end.isEqual(o.end)
                    } else {
                        const t = e,
                            n = t.nodeBefore,
                            r = t.nodeAfter,
                            s = o.start.parent == n && o.start.isAtEnd,
                            a = o.end.parent == r && 0 == o.end.offset,
                            c = o.end.nodeAfter == r,
                            l = o.start.nodeAfter == r;
                        i = s || a || c || l
                    }
                    i && this.updateMarker(n.name, {
                        range: o
                    })
                }
            }
        }

        function Xu(t, e, n, o) {
            const i = t.model,
                r = i.document;
            let s, a, c, l = o.start;
            for (const t of o.getWalker({
                    shallow: !0
                })) c = t.item.getAttribute(e), s && a != c && (a != n && d(), l = s), s = t.nextPosition, a = c;

            function d() {
                const o = new Hl(l, s),
                    c = o.root.document ? r.version : null,
                    d = new Kh(o, e, a, n, c);
                t.batch.addOperation(d), i.applyOperation(d)
            }
            s instanceof Ll && s != l && a != n && d()
        }

        function tg(t, e, n, o) {
            const i = t.model,
                r = i.document,
                s = o.getAttribute(e);
            let a, c;
            if (s != n) {
                if (o.root === o) {
                    const t = o.document ? r.version : null;
                    c = new Zh(o, e, s, n, t)
                } else {
                    a = new Hl(Ll._createBefore(o), t.createPositionAfter(o));
                    const i = a.root.document ? r.version : null;
                    c = new Kh(a, e, s, n, i)
                }
                t.batch.addOperation(c), i.applyOperation(c)
            }
        }

        function eg(t, e, n, o, i) {
            const r = t.model,
                s = r.document,
                a = new qh(e, n, o, r.markers, !!i, s.version);
            t.batch.addOperation(a), r.applyOperation(a)
        }

        function ng(t, e, n, o) {
            let i;
            if (t.root.document) {
                const n = o.document,
                    r = new Ll(n.graveyard, [0]);
                i = new Vh(t, e, r, n.version)
            } else i = new Zu(t, e);
            n.addOperation(i), o.applyOperation(i)
        }

        function og(t, e) {
            return t === e || t instanceof Su && e instanceof Su
        }

        function ig(t, e, n = {}) {
            if (e.isCollapsed) return;
            const o = e.getFirstRange();
            if ("$graveyard" == o.root.rootName) return;
            const i = t.schema;
            t.change((t => {
                if (!n.doNotResetEntireContent && function (t, e) {
                        const n = t.getLimitElement(e);
                        if (!e.containsEntireContent(n)) return !1;
                        const o = e.getFirstRange();
                        if (o.start.parent == o.end.parent) return !1;
                        return t.checkChild(n, "paragraph")
                    }(i, e)) return void

                function (t, e) {
                    const n = t.model.schema.getLimitElement(e);
                    t.remove(t.createRangeIn(n)), cg(t, t.createPositionAt(n, 0), e)
                }(t, e);
                const r = {};
                if (!n.doNotAutoparagraph) {
                    const t = e.getSelectedElement();
                    t && Object.assign(r, i.getAttributesWithProperty(t, "copyOnReplace", !0))
                }
                const [s, a] = function (t) {
                    const e = t.root.document.model,
                        n = t.start;
                    let o = t.end;
                    if (e.hasContent(t, {
                            ignoreMarkers: !0
                        })) {
                        const n = function (t) {
                            const e = t.parent,
                                n = e.root.document.model.schema,
                                o = e.getAncestors({
                                    parentFirst: !0,
                                    includeSelf: !0
                                });
                            for (const t of o) {
                                if (n.isLimit(t)) return null;
                                if (n.isBlock(t)) return t
                            }
                        }(o);
                        if (n && o.isTouching(e.createPositionAt(n, 0))) {
                            const n = e.createSelection(t);
                            e.modifySelection(n, {
                                direction: "backward"
                            });
                            const i = n.getLastPosition(),
                                r = e.createRange(i, o);
                            e.hasContent(r, {
                                ignoreMarkers: !0
                            }) || (o = i)
                        }
                    }
                    return [hu.fromPosition(n, "toPrevious"), hu.fromPosition(o, "toNext")]
                }(o);
                s.isTouching(a) || t.remove(t.createRange(s, a)), n.leaveUnmerged || (! function (t, e, n) {
                    const o = t.model;
                    if (!ag(t.model.schema, e, n)) return;
                    const [i, r] = function (t, e) {
                        const n = t.getAncestors(),
                            o = e.getAncestors();
                        let i = 0;
                        for (; n[i] && n[i] == o[i];) i++;
                        return [n[i], o[i]]
                    }(e, n);
                    if (!i || !r) return;
                    !o.hasContent(i, {
                        ignoreMarkers: !0
                    }) && o.hasContent(r, {
                        ignoreMarkers: !0
                    }) ? sg(t, e, n, i.parent) : rg(t, e, n, i.parent)
                }(t, s, a), i.removeDisallowedAttributes(s.parent.getChildren(), t)), lg(t, e, s), !n.doNotAutoparagraph && function (t, e) {
                    const n = t.checkChild(e, "$text"),
                        o = t.checkChild(e, "paragraph");
                    return !n && o
                }(i, s) && cg(t, s, e, r), s.detach(), a.detach()
            }))
        }

        function rg(t, e, n, o) {
            const i = e.parent,
                r = n.parent;
            if (i != o && r != o) {
                for (e = t.createPositionAfter(i), (n = t.createPositionBefore(r)).isEqual(e) || t.insert(r, e), t.merge(e); n.parent.isEmpty;) {
                    const e = n.parent;
                    n = t.createPositionBefore(e), t.remove(e)
                }
                ag(t.model.schema, e, n) && rg(t, e, n, o)
            }
        }

        function sg(t, e, n, o) {
            const i = e.parent,
                r = n.parent;
            if (i != o && r != o) {
                for (e = t.createPositionAfter(i), (n = t.createPositionBefore(r)).isEqual(e) || t.insert(i, n); e.parent.isEmpty;) {
                    const n = e.parent;
                    e = t.createPositionBefore(n), t.remove(n)
                }
                n = t.createPositionBefore(r),
                    function (t, e) {
                        const n = e.nodeBefore,
                            o = e.nodeAfter;
                        n.name != o.name && t.rename(n, o.name);
                        t.clearAttributes(n), t.setAttributes(Object.fromEntries(o.getAttributes()), n), t.merge(e)
                    }(t, n), ag(t.model.schema, e, n) && sg(t, e, n, o)
            }
        }

        function ag(t, e, n) {
            const o = e.parent,
                i = n.parent;
            return o != i && (!t.isLimit(o) && !t.isLimit(i) && function (t, e, n) {
                const o = new Hl(t, e);
                for (const t of o.getWalker())
                    if (n.isLimit(t.item)) return !1;
                return !0
            }(e, n, t))
        }

        function cg(t, e, n, o = {}) {
            const i = t.createElement("paragraph");
            t.model.schema.setAllowedAttributes(i, o, t), t.insert(i, e), lg(t, n, t.createPositionAt(i, 0))
        }

        function lg(t, e, n) {
            e instanceof fd ? t.setSelection(n) : e.setTo(n)
        }

        function dg(t, e) {
            const n = [];
            Array.from(t.getItems({
                direction: "backward"
            })).map((t => e.createRangeOn(t))).filter((e => (e.start.isAfter(t.start) || e.start.isEqual(t.start)) && (e.end.isBefore(t.end) || e.end.isEqual(t.end)))).forEach((t => {
                n.push(t.start.parent), e.remove(t)
            })), n.forEach((t => {
                let n = t;
                for (; n.parent && n.isEmpty;) {
                    const t = e.createRangeOn(n);
                    n = n.parent, e.remove(t)
                }
            }))
        }
        class hg {
            constructor(t, e, n) {
                this._firstNode = null, this._lastNode = null, this._lastAutoParagraph = null, this._filterAttributesOf = [], this._affectedStart = null, this._affectedEnd = null, this._nodeToSelect = null, this.model = t, this.writer = e, this.position = n, this.canMergeWith = new Set([this.position.parent]), this.schema = t.schema, this._documentFragment = e.createDocumentFragment(), this._documentFragmentPosition = e.createPositionAt(this._documentFragment, 0)
            }
            handleNodes(t) {
                for (const e of Array.from(t)) this._handleNode(e);
                this._insertPartialFragment(), this._lastAutoParagraph && this._updateLastNodeFromAutoParagraph(this._lastAutoParagraph), this._mergeOnRight(), this.schema.removeDisallowedAttributes(this._filterAttributesOf, this.writer), this._filterAttributesOf = []
            }
            _updateLastNodeFromAutoParagraph(t) {
                const e = this.writer.createPositionAfter(this._lastNode),
                    n = this.writer.createPositionAfter(t);
                if (n.isAfter(e)) {
                    if (this._lastNode = t, this.position.parent != t || !this.position.isAtEnd) throw new A("insertcontent-invalid-insertion-position", this);
                    this.position = n, this._setAffectedBoundaries(this.position)
                }
            }
            getSelectionRange() {
                return this._nodeToSelect ? Hl._createOn(this._nodeToSelect) : this.model.schema.getNearestSelectionRange(this.position)
            }
            getAffectedRange() {
                return this._affectedStart ? new Hl(this._affectedStart, this._affectedEnd) : null
            }
            destroy() {
                this._affectedStart && this._affectedStart.detach(), this._affectedEnd && this._affectedEnd.detach()
            }
            _handleNode(t) {
                if (this.schema.isObject(t)) return void this._handleObject(t);
                let e = this._checkAndAutoParagraphToAllowedPosition(t);
                e || (e = this._checkAndSplitToAllowedPosition(t), e) ? (this._appendToFragment(t), this._firstNode || (this._firstNode = t), this._lastNode = t) : this._handleDisallowedNode(t)
            }
            _insertPartialFragment() {
                if (this._documentFragment.isEmpty) return;
                const t = hu.fromPosition(this.position, "toNext");
                this._setAffectedBoundaries(this.position), this._documentFragment.getChild(0) == this._firstNode && (this.writer.insert(this._firstNode, this.position), this._mergeOnLeft(), this.position = t.toPosition()), this._documentFragment.isEmpty || this.writer.insert(this._documentFragment, this.position), this._documentFragmentPosition = this.writer.createPositionAt(this._documentFragment, 0), this.position = t.toPosition(), t.detach()
            }
            _handleObject(t) {
                this._checkAndSplitToAllowedPosition(t) ? this._appendToFragment(t) : this._tryAutoparagraphing(t)
            }
            _handleDisallowedNode(t) {
                t.is("element") ? this.handleNodes(t.getChildren()) : this._tryAutoparagraphing(t)
            }
            _appendToFragment(t) {
                if (!this.schema.checkChild(this.position, t)) throw new A("insertcontent-wrong-position", this, {
                    node: t,
                    position: this.position
                });
                this.writer.insert(t, this._documentFragmentPosition), this._documentFragmentPosition = this._documentFragmentPosition.getShiftedBy(t.offsetSize), this.schema.isObject(t) && !this.schema.checkChild(this.position, "$text") ? this._nodeToSelect = t : this._nodeToSelect = null, this._filterAttributesOf.push(t)
            }
            _setAffectedBoundaries(t) {
                this._affectedStart || (this._affectedStart = hu.fromPosition(t, "toPrevious")), this._affectedEnd && !this._affectedEnd.isBefore(t) || (this._affectedEnd && this._affectedEnd.detach(), this._affectedEnd = hu.fromPosition(t, "toNext"))
            }
            _mergeOnLeft() {
                const t = this._firstNode;
                if (!(t instanceof Pl)) return;
                if (!this._canMergeLeft(t)) return;
                const e = hu._createBefore(t);
                e.stickiness = "toNext";
                const n = hu.fromPosition(this.position, "toNext");
                this._affectedStart.isEqual(e) && (this._affectedStart.detach(), this._affectedStart = hu._createAt(e.nodeBefore, "end", "toPrevious")), this._firstNode === this._lastNode && (this._firstNode = e.nodeBefore, this._lastNode = e.nodeBefore), this.writer.merge(e), e.isEqual(this._affectedEnd) && this._firstNode === this._lastNode && (this._affectedEnd.detach(), this._affectedEnd = hu._createAt(e.nodeBefore, "end", "toNext")), this.position = n.toPosition(), n.detach(), this._filterAttributesOf.push(this.position.parent), e.detach()
            }
            _mergeOnRight() {
                const t = this._lastNode;
                if (!(t instanceof Pl)) return;
                if (!this._canMergeRight(t)) return;
                const e = hu._createAfter(t);
                if (e.stickiness = "toNext", !this.position.isEqual(e)) throw new A("insertcontent-invalid-insertion-position", this);
                this.position = Ll._createAt(e.nodeBefore, "end");
                const n = hu.fromPosition(this.position, "toPrevious");
                this._affectedEnd.isEqual(e) && (this._affectedEnd.detach(), this._affectedEnd = hu._createAt(e.nodeBefore, "end", "toNext")), this._firstNode === this._lastNode && (this._firstNode = e.nodeBefore, this._lastNode = e.nodeBefore), this.writer.merge(e), e.getShiftedBy(-1).isEqual(this._affectedStart) && this._firstNode === this._lastNode && (this._affectedStart.detach(), this._affectedStart = hu._createAt(e.nodeBefore, 0, "toPrevious")), this.position = n.toPosition(), n.detach(), this._filterAttributesOf.push(this.position.parent), e.detach()
            }
            _canMergeLeft(t) {
                const e = t.previousSibling;
                return e instanceof Pl && this.canMergeWith.has(e) && this.model.schema.checkMerge(e, t)
            }
            _canMergeRight(t) {
                const e = t.nextSibling;
                return e instanceof Pl && this.canMergeWith.has(e) && this.model.schema.checkMerge(t, e)
            }
            _tryAutoparagraphing(t) {
                const e = this.writer.createElement("paragraph");
                this._getAllowedIn(this.position.parent, e) && this.schema.checkChild(e, t) && (e._appendChild(t), this._handleNode(e))
            }
            _checkAndAutoParagraphToAllowedPosition(t) {
                if (this.schema.checkChild(this.position.parent, t)) return !0;
                if (!this.schema.checkChild(this.position.parent, "paragraph") || !this.schema.checkChild("paragraph", t)) return !1;
                this._insertPartialFragment();
                const e = this.writer.createElement("paragraph");
                return this.writer.insert(e, this.position), this._setAffectedBoundaries(this.position), this._lastAutoParagraph = e, this.position = this.writer.createPositionAt(e, 0), !0
            }
            _checkAndSplitToAllowedPosition(t) {
                const e = this._getAllowedIn(this.position.parent, t);
                if (!e) return !1;
                for (e != this.position.parent && this._insertPartialFragment(); e != this.position.parent;)
                    if (this.position.isAtStart) {
                        const t = this.position.parent;
                        this.position = this.writer.createPositionBefore(t), t.isEmpty && t.parent === e && this.writer.remove(t)
                    } else if (this.position.isAtEnd) this.position = this.writer.createPositionAfter(this.position.parent);
                else {
                    const t = this.writer.createPositionAfter(this.position.parent);
                    this._setAffectedBoundaries(this.position), this.writer.split(this.position), this.position = t, this.canMergeWith.add(this.position.nodeAfter)
                }
                return !0
            }
            _getAllowedIn(t, e) {
                return this.schema.checkChild(t, e) ? t : this.schema.isLimit(t) ? null : this._getAllowedIn(t.parent, e)
            }
        }

        function ug(t, e, n = "auto") {
            const o = t.getSelectedElement();
            if (o && e.schema.isObject(o) && !e.schema.isInline(o)) return "before" == n || "after" == n ? e.createRange(e.createPositionAt(o, n)) : e.createRangeOn(o);
            const i = Ii(t.getSelectedBlocks());
            if (!i) return e.createRange(t.focus);
            if (i.isEmpty) return e.createRange(e.createPositionAt(i, 0));
            const r = e.createPositionAfter(i);
            return t.focus.isTouching(r) ? e.createRange(r) : e.createRange(e.createPositionBefore(i))
        }

        function gg(t, e, n, o = {}) {
            if (!t.schema.isObject(e)) throw new A("insertobject-element-not-an-object", t, {
                object: e
            });
            const i = n || t.document.selection;
            let r = i;
            o.findOptimalPosition && t.schema.isBlock(e) && (r = t.createSelection(ug(i, t, o.findOptimalPosition)));
            const s = Ii(i.getSelectedBlocks()),
                a = {};
            return s && Object.assign(a, t.schema.getAttributesWithProperty(s, "copyOnReplace", !0)), t.change((n => {
                r.isCollapsed || t.deleteContent(r, {
                    doNotAutoparagraph: !0
                });
                let i = e;
                const s = r.anchor.parent;
                !t.schema.checkChild(s, e) && t.schema.checkChild(s, "paragraph") && t.schema.checkChild("paragraph", e) && (i = n.createElement("paragraph"), n.insert(e, i)), t.schema.setAllowedAttributes(i, a, n);
                const c = t.insertContent(i, r);
                return c.isCollapsed || o.setSelection && function (t, e, n, o) {
                    const i = t.model;
                    if ("on" == n) return void t.setSelection(e, "on");
                    if ("after" != n) throw new A("insertobject-invalid-place-parameter-value", i);
                    let r = e.nextSibling;
                    if (i.schema.isInline(e)) return void t.setSelection(e, "after");
                    const s = r && i.schema.checkChild(r, "$text");
                    !s && i.schema.checkChild(e.parent, "paragraph") && (r = t.createElement("paragraph"), i.schema.setAllowedAttributes(r, o, t), i.insertContent(r, t.createPositionAfter(e)));
                    r && t.setSelection(r, 0)
                }(n, e, o.setSelection, a), c
            }))
        }
        const pg = ' ,.?!:;"-()';

        function mg(t, e) {
            const {
                isForward: n,
                walker: o,
                unit: i,
                schema: r,
                treatEmojiAsSingleUnit: s
            } = t, {
                type: a,
                item: c,
                nextPosition: l
            } = e;
            if ("text" == a) return "word" === t.unit ? function (t, e) {
                let n = t.position.textNode;
                n || (n = e ? t.position.nodeAfter : t.position.nodeBefore);
                for (; n && n.is("$text");) {
                    const o = t.position.offset - n.startOffset;
                    if (bg(n, o, e)) n = e ? t.position.nodeAfter : t.position.nodeBefore;
                    else {
                        if (kg(n.data, o, e)) break;
                        t.next()
                    }
                }
                return t.position
            }(o, n) : function (t, e, n) {
                const o = t.position.textNode;
                if (o) {
                    const i = o.data;
                    let r = t.position.offset - o.startOffset;
                    for (; Pi(i, r) || "character" == e && zi(i, r) || n && Li(i, r);) t.next(), r = t.position.offset - o.startOffset
                }
                return t.position
            }(o, i, s);
            if (a == (n ? "elementStart" : "elementEnd")) {
                if (r.isSelectable(c)) return Ll._createAt(c, n ? "after" : "before");
                if (r.checkChild(l, "$text")) return l
            } else {
                if (r.isLimit(c)) return void o.skip((() => !0));
                if (r.checkChild(l, "$text")) return l
            }
        }

        function fg(t, e) {
            const n = t.root,
                o = Ll._createAt(n, e ? "end" : 0);
            return e ? new Hl(t, o) : new Hl(o, t)
        }

        function kg(t, e, n) {
            const o = e + (n ? 0 : -1);
            return pg.includes(t.charAt(o))
        }

        function bg(t, e, n) {
            return e === (n ? t.offsetSize : 0)
        }
        class wg extends(K()) {
            constructor() {
                super(), this.markers = new Yu, this.document = new Ru(this), this.schema = new ih, this._pendingChanges = [], this._currentWriter = null, ["deleteContent", "modifySelection", "getSelectedContent", "applyOperation"].forEach((t => this.decorate(t))), this.on("applyOperation", ((t, e) => {
                    e[0]._validate()
                }), {
                    priority: "highest"
                }), this.schema.register("$root", {
                    isLimit: !0
                }), this.schema.register("$container", {
                    allowIn: ["$root", "$container"]
                }), this.schema.register("$block", {
                    allowIn: ["$root", "$container"],
                    isBlock: !0
                }), this.schema.register("$blockObject", {
                    allowWhere: "$block",
                    isBlock: !0,
                    isObject: !0
                }), this.schema.register("$inlineObject", {
                    allowWhere: "$text",
                    allowAttributesOf: "$text",
                    isInline: !0,
                    isObject: !0
                }), this.schema.register("$text", {
                    allowIn: "$block",
                    isInline: !0,
                    isContent: !0
                }), this.schema.register("$clipboardHolder", {
                    allowContentOf: "$root",
                    allowChildren: "$text",
                    isLimit: !0
                }), this.schema.register("$documentFragment", {
                    allowContentOf: "$root",
                    allowChildren: "$text",
                    isLimit: !0
                }), this.schema.register("$marker"), this.schema.addChildCheck(((t, e) => {
                    if ("$marker" === e.name) return !0
                })), Zd(this), this.document.registerPostFixer(Nd), this.on("insertContent", ((t, [e, n]) => {
                    t.return = function (t, e, n) {
                        return t.change((o => {
                            const i = n || t.document.selection;
                            i.isCollapsed || t.deleteContent(i, {
                                doNotAutoparagraph: !0
                            });
                            const r = new hg(t, o, i.anchor),
                                s = [];
                            let a;
                            if (e.is("documentFragment")) {
                                if (e.markers.size) {
                                    const t = [];
                                    for (const [n, o] of e.markers) {
                                        const {
                                            start: e,
                                            end: i
                                        } = o, r = e.isEqual(i);
                                        t.push({
                                            position: e,
                                            name: n,
                                            isCollapsed: r
                                        }, {
                                            position: i,
                                            name: n,
                                            isCollapsed: r
                                        })
                                    }
                                    t.sort((({
                                        position: t
                                    }, {
                                        position: e
                                    }) => t.isBefore(e) ? 1 : -1));
                                    for (const {
                                            position: n,
                                            name: i,
                                            isCollapsed: r
                                        } of t) {
                                        let t = null,
                                            a = null;
                                        const c = n.parent === e && n.isAtStart,
                                            l = n.parent === e && n.isAtEnd;
                                        c || l ? r && (a = c ? "start" : "end") : (t = o.createElement("$marker"), o.insert(t, n)), s.push({
                                            name: i,
                                            element: t,
                                            collapsed: a
                                        })
                                    }
                                }
                                a = e.getChildren()
                            } else a = [e];
                            r.handleNodes(a);
                            let c = r.getSelectionRange();
                            if (e.is("documentFragment") && s.length) {
                                const t = c ? ud.fromRange(c) : null,
                                    e = {};
                                for (let t = s.length - 1; t >= 0; t--) {
                                    const {
                                        name: n,
                                        element: i,
                                        collapsed: a
                                    } = s[t], c = !e[n];
                                    if (c && (e[n] = []), i) {
                                        const t = o.createPositionAt(i, "before");
                                        e[n].push(t), o.remove(i)
                                    } else {
                                        const t = r.getAffectedRange();
                                        if (!t) {
                                            a && e[n].push(r.position);
                                            continue
                                        }
                                        a ? e[n].push(t[a]) : e[n].push(c ? t.start : t.end)
                                    }
                                }
                                for (const [t, [n, i]] of Object.entries(e)) n && i && n.root === i.root && o.addMarker(t, {
                                    usingOperation: !0,
                                    affectsData: !0,
                                    range: new Hl(n, i)
                                });
                                t && (c = t.toRange(), t.detach())
                            }
                            c && (i instanceof fd ? o.setSelection(c) : i.setTo(c));
                            const l = r.getAffectedRange() || t.createRange(i.anchor);
                            return r.destroy(), l
                        }))
                    }(this, e, n)
                })), this.on("insertObject", ((t, [e, n, o]) => {
                    t.return = gg(this, e, n, o)
                })), this.on("canEditAt", (t => {
                    const e = !this.document.isReadOnly;
                    t.return = e, e || t.stop()
                }))
            }
            change(t) {
                try {
                    return 0 === this._pendingChanges.length ? (this._pendingChanges.push({
                        batch: new pu,
                        callback: t
                    }), this._runPendingChanges()[0]) : t(this._currentWriter)
                } catch (t) {
                    A.rethrowUnexpectedError(t, this)
                }
            }
            enqueueChange(t, e) {
                try {
                    t ? "function" == typeof t ? (e = t, t = new pu) : t instanceof pu || (t = new pu(t)) : t = new pu, this._pendingChanges.push({
                        batch: t,
                        callback: e
                    }), 1 == this._pendingChanges.length && this._runPendingChanges()
                } catch (t) {
                    A.rethrowUnexpectedError(t, this)
                }
            }
            applyOperation(t) {
                t._execute()
            }
            insertContent(t, e, n, ...o) {
                const i = Ag(e, n);
                return this.fire("insertContent", [t, i, n, ...o])
            }
            insertObject(t, e, n, o, ...i) {
                const r = Ag(e, n);
                return this.fire("insertObject", [t, r, o, o, ...i])
            }
            deleteContent(t, e) {
                ig(this, t, e)
            }
            modifySelection(t, e) {
                ! function (t, e, n = {}) {
                    const o = t.schema,
                        i = "backward" != n.direction,
                        r = n.unit ? n.unit : "character",
                        s = !!n.treatEmojiAsSingleUnit,
                        a = e.focus,
                        c = new zl({
                            boundaries: fg(a, i),
                            singleCharacters: !0,
                            direction: i ? "forward" : "backward"
                        }),
                        l = {
                            walker: c,
                            schema: o,
                            isForward: i,
                            unit: r,
                            treatEmojiAsSingleUnit: s
                        };
                    let d;
                    for (; d = c.next();) {
                        if (d.done) return;
                        const n = mg(l, d.value);
                        if (n) return void(e instanceof fd ? t.change((t => {
                            t.setSelectionFocus(n)
                        })) : e.setFocus(n))
                    }
                }(this, t, e)
            }
            getSelectedContent(t) {
                return function (t, e) {
                    return t.change((t => {
                        const n = t.createDocumentFragment(),
                            o = e.getFirstRange();
                        if (!o || o.isCollapsed) return n;
                        const i = o.start.root,
                            r = o.start.getCommonPath(o.end),
                            s = i.getNodeByPath(r);
                        let a;
                        a = o.start.parent == o.end.parent ? o : t.createRange(t.createPositionAt(s, o.start.path[r.length]), t.createPositionAt(s, o.end.path[r.length] + 1));
                        const c = a.end.offset - a.start.offset;
                        for (const e of a.getItems({
                                shallow: !0
                            })) e.is("$textProxy") ? t.appendText(e.data, e.getAttributes(), n) : t.append(t.cloneElement(e, !0), n);
                        if (a != o) {
                            const e = o._getTransformedByMove(a.start, t.createPositionAt(n, 0), c)[0],
                                i = t.createRange(t.createPositionAt(n, 0), e.start);
                            dg(t.createRange(e.end, t.createPositionAt(n, "end")), t), dg(i, t)
                        }
                        return n
                    }))
                }(this, t)
            }
            hasContent(t, e = {}) {
                const n = t instanceof Hl ? t : Hl._createIn(t);
                if (n.isCollapsed) return !1;
                const {
                    ignoreWhitespaces: o = !1,
                    ignoreMarkers: i = !1
                } = e;
                if (!i)
                    for (const t of this.markers.getMarkersIntersectingRange(n))
                        if (t.affectsData) return !0;
                for (const t of n.getItems())
                    if (this.schema.isContent(t)) {
                        if (!t.is("$textProxy")) return !0;
                        if (!o) return !0;
                        if (-1 !== t.data.search(/\S/)) return !0
                    } return !1
            }
            canEditAt(t) {
                const e = Ag(t);
                return this.fire("canEditAt", [e])
            }
            createPositionFromPath(t, e, n) {
                return new Ll(t, e, n)
            }
            createPositionAt(t, e) {
                return Ll._createAt(t, e)
            }
            createPositionAfter(t) {
                return Ll._createAfter(t)
            }
            createPositionBefore(t) {
                return Ll._createBefore(t)
            }
            createRange(t, e) {
                return new Hl(t, e)
            }
            createRangeIn(t) {
                return Hl._createIn(t)
            }
            createRangeOn(t) {
                return Hl._createOn(t)
            }
            createSelection(...t) {
                return new rd(...t)
            }
            createBatch(t) {
                return new pu(t)
            }
            createOperationFromJSON(t) {
                return Xh.fromJSON(t, this.document)
            }
            destroy() {
                this.document.destroy(), this.stopListening()
            }
            _runPendingChanges() {
                const t = [];
                this.fire("_beforeChanges");
                try {
                    for (; this._pendingChanges.length;) {
                        const e = this._pendingChanges[0].batch;
                        this._currentWriter = new Ju(this, e);
                        const n = this._pendingChanges[0].callback(this._currentWriter);
                        t.push(n), this.document._handleChangeBlock(this._currentWriter), this._pendingChanges.shift(), this._currentWriter = null
                    }
                } finally {
                    this._pendingChanges.length = 0, this._currentWriter = null, this.fire("_afterChanges")
                }
                return t
            }
        }

        function Ag(t, e) {
            if (t) return t instanceof rd || t instanceof fd ? t : t instanceof Ml ? e || 0 === e ? new rd(t, e) : t.is("rootElement") ? new rd(t, "in") : new rd(t, "on") : new rd(t)
        }
        class Cg extends Pc {
            constructor() {
                super(...arguments), this.domEventType = "click"
            }
            onDomEvent(t) {
                this.fire(t.type, t)
            }
        }
        class _g extends Pc {
            constructor() {
                super(...arguments), this.domEventType = ["mousedown", "mouseup", "mouseover", "mouseout"]
            }
            onDomEvent(t) {
                this.fire(t.type, t)
            }
        }
        class vg {
            constructor(t) {
                this.document = t
            }
            createDocumentFragment(t) {
                return new Wa(this.document, t)
            }
            createElement(t, e, n) {
                return new ma(this.document, t, e, n)
            }
            createText(t) {
                return new gs(this.document, t)
            }
            clone(t, e = !1) {
                return t._clone(e)
            }
            appendChild(t, e) {
                return e._appendChild(t)
            }
            insertChild(t, e, n) {
                return n._insertChild(t, e)
            }
            removeChildren(t, e, n) {
                return n._removeChildren(t, e)
            }
            remove(t) {
                const e = t.parent;
                return e ? this.removeChildren(e.getChildIndex(t), 1, e) : []
            }
            replace(t, e) {
                const n = t.parent;
                if (n) {
                    const o = n.getChildIndex(t);
                    return this.removeChildren(o, 1, n), this.insertChild(o, e, n), !0
                }
                return !1
            }
            unwrapElement(t) {
                const e = t.parent;
                if (e) {
                    const n = e.getChildIndex(t);
                    this.remove(t), this.insertChild(n, t.getChildren(), e)
                }
            }
            rename(t, e) {
                const n = new ma(this.document, t, e.getAttributes(), e.getChildren());
                return this.replace(e, n) ? n : null
            }
            setAttribute(t, e, n) {
                n._setAttribute(t, e)
            }
            removeAttribute(t, e) {
                e._removeAttribute(t)
            }
            addClass(t, e) {
                e._addClass(t)
            }
            removeClass(t, e) {
                e._removeClass(t)
            }
            setStyle(t, e, n) {
                Dt(t) && void 0 === n ? e._setStyle(t) : n._setStyle(t, e)
            }
            removeStyle(t, e) {
                e._removeStyle(t)
            }
            setCustomProperty(t, e, n) {
                n._setCustomProperty(t, e)
            }
            removeCustomProperty(t, e) {
                return e._removeCustomProperty(t)
            }
            createPositionAt(t, e) {
                return va._createAt(t, e)
            }
            createPositionAfter(t) {
                return va._createAfter(t)
            }
            createPositionBefore(t) {
                return va._createBefore(t)
            }
            createRange(t, e) {
                return new ya(t, e)
            }
            createRangeOn(t) {
                return ya._createOn(t)
            }
            createRangeIn(t) {
                return ya._createIn(t)
            }
            createSelection(...t) {
                return new Ea(...t)
            }
        }
        class yg {
            constructor() {
                this._commands = new Map
            }
            add(t, e) {
                this._commands.set(t, e)
            }
            get(t) {
                return this._commands.get(t)
            }
            execute(t, ...e) {
                const n = this.get(t);
                if (!n) throw new A("commandcollection-command-not-found", this, {
                    commandName: t
                });
                return n.execute(...e)
            }* names() {
                yield* this._commands.keys()
            }* commands() {
                yield* this._commands.values()
            } [Symbol.iterator]() {
                return this._commands[Symbol.iterator]()
            }
            destroy() {
                for (const t of this.commands()) t.destroy()
            }
        }
        class xg extends(K()) {
            constructor(t = {}) {
                super();
                const e = this.constructor,
                    n = t.language || e.defaultConfig && e.defaultConfig.language;
                this._context = t.context || new Jr({
                    language: n
                }), this._context._addEditor(this, !t.context);
                const o = Array.from(e.builtinPlugins || []);
                this.config = new Eo(t, e.defaultConfig), this.config.define("plugins", o), this.config.define(this._context._getEditorConfig()), this.plugins = new Qr(this, o, this._context.plugins), this.locale = this._context.locale, this.t = this.locale.t, this._readOnlyLocks = new Set, this.commands = new yg, this.set("state", "initializing"), this.once("ready", (() => this.state = "ready"), {
                    priority: "high"
                }), this.once("destroy", (() => this.state = "destroyed"), {
                    priority: "high"
                }), this.model = new wg, this.on("change:isReadOnly", (() => {
                    this.model.document.isReadOnly = this.isReadOnly
                }));
                const i = new ua;
                this.data = new Ih(this.model, i), this.editing = new th(this.model, i), this.editing.view.document.bind("isReadOnly").to(this), this.conversion = new Mh([this.editing.downcastDispatcher, this.data.downcastDispatcher], this.data.upcastDispatcher), this.conversion.addAlias("dataDowncast", this.data.downcastDispatcher), this.conversion.addAlias("editingDowncast", this.editing.downcastDispatcher), this.keystrokes = new ts(this), this.keystrokes.listenTo(this.editing.view.document)
            }
            get isReadOnly() {
                return this._readOnlyLocks.size > 0
            }
            set isReadOnly(t) {
                throw new A("editor-isreadonly-has-no-setter")
            }
            enableReadOnlyMode(t) {
                if ("string" != typeof t && "symbol" != typeof t) throw new A("editor-read-only-lock-id-invalid", null, {
                    lockId: t
                });
                this._readOnlyLocks.has(t) || (this._readOnlyLocks.add(t), 1 === this._readOnlyLocks.size && this.fire("change:isReadOnly", "isReadOnly", !0, !1))
            }
            disableReadOnlyMode(t) {
                if ("string" != typeof t && "symbol" != typeof t) throw new A("editor-read-only-lock-id-invalid", null, {
                    lockId: t
                });
                this._readOnlyLocks.has(t) && (this._readOnlyLocks.delete(t), 0 === this._readOnlyLocks.size && this.fire("change:isReadOnly", "isReadOnly", !1, !0))
            }
            initPlugins() {
                const t = this.config,
                    e = t.get("plugins"),
                    n = t.get("removePlugins") || [],
                    o = t.get("extraPlugins") || [],
                    i = t.get("substitutePlugins") || [];
                return this.plugins.init(e.concat(o), n, i)
            }
            destroy() {
                let t = Promise.resolve();
                return "initializing" == this.state && (t = new Promise((t => this.once("ready", t)))), t.then((() => {
                    this.fire("destroy"), this.stopListening(), this.commands.destroy()
                })).then((() => this.plugins.destroy())).then((() => {
                    this.model.destroy(), this.data.destroy(), this.editing.destroy(), this.keystrokes.destroy()
                })).then((() => this._context._removeEditor(this)))
            }
            execute(t, ...e) {
                try {
                    return this.commands.execute(t, ...e)
                } catch (t) {
                    A.rethrowUnexpectedError(t, this)
                }
            }
            focus() {
                this.editing.view.focus()
            }
            static create(...t) {
                throw new Error("This is an abstract method.")
            }
        }

        function Eg(t) {
            return class extends t {
                setData(t) {
                    this.data.set(t)
                }
                getData(t) {
                    return this.data.get(t)
                }
            }
        } {
            const t = Eg(Object);
            Eg.setData = t.prototype.setData, Eg.getData = t.prototype.getData
        }

        function Dg(t) {
            return class extends t {
                updateSourceElement(t = this.data.get()) {
                    if (!this.sourceElement) throw new A("editor-missing-sourceelement", this);
                    const e = this.config.get("updateSourceElementOnDestroy"),
                        n = this.sourceElement instanceof HTMLTextAreaElement;
                    $o(this.sourceElement, e || n ? t : "")
                }
            }
        }
        Dg.updateSourceElement = Dg(Object).prototype.updateSourceElement;
        class Sg extends Xr {
            static get pluginName() {
                return "PendingActions"
            }
            init() {
                this.set("hasAny", !1), this._actions = new Si({
                    idProperty: "_id"
                }), this._actions.delegate("add", "remove").to(this)
            }
            add(t) {
                if ("string" != typeof t) throw new A("pendingactions-add-invalid-message", this);
                const e = new(K());
                return e.set("message", t), this._actions.add(e), this.hasAny = !0, e
            }
            remove(t) {
                this._actions.remove(t), this.hasAny = !!this._actions.length
            }
            get first() {
                return this._actions.get(0)
            } [Symbol.iterator]() {
                return this._actions[Symbol.iterator]()
            }
        }
        const Ig = {
            bold: '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M10.187 17H5.773c-.637 0-1.092-.138-1.364-.415-.273-.277-.409-.718-.409-1.323V4.738c0-.617.14-1.062.419-1.332.279-.27.73-.406 1.354-.406h4.68c.69 0 1.288.041 1.793.124.506.083.96.242 1.36.478.341.197.644.447.906.75a3.262 3.262 0 0 1 .808 2.162c0 1.401-.722 2.426-2.167 3.075C15.05 10.175 16 11.315 16 13.01a3.756 3.756 0 0 1-2.296 3.504 6.1 6.1 0 0 1-1.517.377c-.571.073-1.238.11-2 .11zm-.217-6.217H7v4.087h3.069c1.977 0 2.965-.69 2.965-2.072 0-.707-.256-1.22-.768-1.537-.512-.319-1.277-.478-2.296-.478zM7 5.13v3.619h2.606c.729 0 1.292-.067 1.69-.2a1.6 1.6 0 0 0 .91-.765c.165-.267.247-.566.247-.897 0-.707-.26-1.176-.778-1.409-.519-.232-1.31-.348-2.375-.348H7z"/></svg>',
            cancel: '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m11.591 10.177 4.243 4.242a1 1 0 0 1-1.415 1.415l-4.242-4.243-4.243 4.243a1 1 0 0 1-1.414-1.415l4.243-4.242L4.52 5.934A1 1 0 0 1 5.934 4.52l4.243 4.243 4.242-4.243a1 1 0 1 1 1.415 1.414l-4.243 4.243z"/></svg>',
            caption: '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2 16h9a1 1 0 0 1 0 2H2a1 1 0 0 1 0-2z"/><path d="M17 1a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h14zm0 1.5H3a.5.5 0 0 0-.492.41L2.5 3v9a.5.5 0 0 0 .41.492L3 12.5h14a.5.5 0 0 0 .492-.41L17.5 12V3a.5.5 0 0 0-.41-.492L17 2.5z" fill-opacity=".6"/></svg>',
            check: '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M6.972 16.615a.997.997 0 0 1-.744-.292l-4.596-4.596a1 1 0 1 1 1.414-1.414l3.926 3.926 9.937-9.937a1 1 0 0 1 1.414 1.415L7.717 16.323a.997.997 0 0 1-.745.292z"/></svg>',
            cog: '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m11.333 2 .19 2.263a5.899 5.899 0 0 1 1.458.604L14.714 3.4 16.6 5.286l-1.467 1.733c.263.452.468.942.605 1.46L18 8.666v2.666l-2.263.19a5.899 5.899 0 0 1-.604 1.458l1.467 1.733-1.886 1.886-1.733-1.467a5.899 5.899 0 0 1-1.46.605L11.334 18H8.667l-.19-2.263a5.899 5.899 0 0 1-1.458-.604L5.286 16.6 3.4 14.714l1.467-1.733a5.899 5.899 0 0 1-.604-1.458L2 11.333V8.667l2.262-.189a5.899 5.899 0 0 1 .605-1.459L3.4 5.286 5.286 3.4l1.733 1.467a5.899 5.899 0 0 1 1.46-.605L8.666 2h2.666zM10 6.267a3.733 3.733 0 1 0 0 7.466 3.733 3.733 0 0 0 0-7.466z"/></svg>',
            eraser: '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m8.636 9.531-2.758 3.94a.5.5 0 0 0 .122.696l3.224 2.284h1.314l2.636-3.736L8.636 9.53zm.288 8.451L5.14 15.396a2 2 0 0 1-.491-2.786l6.673-9.53a2 2 0 0 1 2.785-.49l3.742 2.62a2 2 0 0 1 .491 2.785l-7.269 10.053-2.147-.066z"/><path d="M4 18h5.523v-1H4zm-2 0h1v-1H2z"/></svg>',
            image: '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M6.91 10.54c.26-.23.64-.21.88.03l3.36 3.14 2.23-2.06a.64.64 0 0 1 .87 0l2.52 2.97V4.5H3.2v10.12l3.71-4.08zm10.27-7.51c.6 0 1.09.47 1.09 1.05v11.84c0 .59-.49 1.06-1.09 1.06H2.79c-.6 0-1.09-.47-1.09-1.06V4.08c0-.58.49-1.05 1.1-1.05h14.38zm-5.22 5.56a1.96 1.96 0 1 1 3.4-1.96 1.96 1.96 0 0 1-3.4 1.96z"/></svg>',
            lowVision: '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M5.085 6.22 2.943 4.078a.75.75 0 1 1 1.06-1.06l2.592 2.59A11.094 11.094 0 0 1 10 5.068c4.738 0 8.578 3.101 8.578 5.083 0 1.197-1.401 2.803-3.555 3.887l1.714 1.713a.75.75 0 0 1-.09 1.138.488.488 0 0 1-.15.084.75.75 0 0 1-.821-.16L6.17 7.304c-.258.11-.51.233-.757.365l6.239 6.24-.006.005.78.78c-.388.094-.78.166-1.174.215l-1.11-1.11h.011L4.55 8.197a7.2 7.2 0 0 0-.665.514l-.112.098 4.897 4.897-.005.006 1.276 1.276a10.164 10.164 0 0 1-1.477-.117l-.479-.479-.009.009-4.863-4.863-.022.031a2.563 2.563 0 0 0-.124.2c-.043.077-.08.158-.108.241a.534.534 0 0 0-.028.133.29.29 0 0 0 .008.072.927.927 0 0 0 .082.226c.067.133.145.26.234.379l3.242 3.365.025.01.59.623c-3.265-.918-5.59-3.155-5.59-4.668 0-1.194 1.448-2.838 3.663-3.93zm7.07.531a4.632 4.632 0 0 1 1.108 5.992l.345.344.046-.018a9.313 9.313 0 0 0 2-1.112c.256-.187.5-.392.727-.613.137-.134.27-.277.392-.431.072-.091.141-.185.203-.286.057-.093.107-.19.148-.292a.72.72 0 0 0 .036-.12.29.29 0 0 0 .008-.072.492.492 0 0 0-.028-.133.999.999 0 0 0-.036-.096 2.165 2.165 0 0 0-.071-.145 2.917 2.917 0 0 0-.125-.2 3.592 3.592 0 0 0-.263-.335 5.444 5.444 0 0 0-.53-.523 7.955 7.955 0 0 0-1.054-.768 9.766 9.766 0 0 0-1.879-.891c-.337-.118-.68-.219-1.027-.301zm-2.85.21-.069.002a.508.508 0 0 0-.254.097.496.496 0 0 0-.104.679.498.498 0 0 0 .326.199l.045.005c.091.003.181.003.272.012a2.45 2.45 0 0 1 2.017 1.513c.024.061.043.125.069.185a.494.494 0 0 0 .45.287h.008a.496.496 0 0 0 .35-.158.482.482 0 0 0 .13-.335.638.638 0 0 0-.048-.219 3.379 3.379 0 0 0-.36-.723 3.438 3.438 0 0 0-2.791-1.543l-.028-.001h-.013z"/></svg>',
            importExport: '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M19 4.5 14 0H3v12.673l.868-1.041c.185-.222.4-.402.632-.54V1.5h8v5h5v7.626a2.24 2.24 0 0 1 1.5.822V4.5ZM14 5V2l3.3 3H14Zm-3.692 12.5c.062.105.133.206.213.303L11.52 19H8v-.876a2.243 2.243 0 0 0 1.82-.624h.488Zm7.518-.657a.75.75 0 0 0-1.152-.96L15.5 17.29V12H14v5.29l-1.174-1.408a.75.75 0 0 0-1.152.96l2.346 2.816a.95.95 0 0 0 1.46 0l2.346-2.815Zm-15.056-.38a.75.75 0 0 1-.096-1.056l2.346-2.815a.95.95 0 0 1 1.46 0l2.346 2.815a.75.75 0 1 1-1.152.96L6.5 14.96V20H5v-5.04l-1.174 1.408a.75.75 0 0 1-1.056.096Z"/></svg>',
            paragraph: '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M10.5 5.5H7v5h3.5a2.5 2.5 0 1 0 0-5zM5 3h6.5v.025a5 5 0 0 1 0 9.95V13H7v4a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1z"/></svg>',
            plus: '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M10 2a1 1 0 0 0-1 1v6H3a1 1 0 1 0 0 2h6v6a1 1 0 1 0 2 0v-6h6a1 1 0 1 0 0-2h-6V3a1 1 0 0 0-1-1Z"/></svg>',
            text: '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M9.816 11.5 7.038 4.785 4.261 11.5h5.555Zm.62 1.5H3.641l-1.666 4.028H.312l5.789-14h1.875l5.789 14h-1.663L10.436 13Z"/><path d="m12.09 17-.534-1.292.848-1.971.545 1.319L12.113 17h-.023Zm1.142-5.187.545 1.319L15.5 9.13l1.858 4.316h-3.45l.398.965h3.467L18.887 17H20l-3.873-9h-1.254l-1.641 3.813Z"/></svg>',
            alignBottom: '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m9.239 13.938-2.88-1.663a.75.75 0 0 1 .75-1.3L9 12.067V4.75a.75.75 0 1 1 1.5 0v7.318l1.89-1.093a.75.75 0 0 1 .75 1.3l-2.879 1.663a.752.752 0 0 1-.511.187.752.752 0 0 1-.511-.187zM4.25 17a.75.75 0 1 1 0-1.5h10.5a.75.75 0 0 1 0 1.5H4.25z"/></svg>',
            alignMiddle: '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M9.75 11.875a.752.752 0 0 1 .508.184l2.883 1.666a.75.75 0 0 1-.659 1.344l-.091-.044-1.892-1.093.001 4.318a.75.75 0 1 1-1.5 0v-4.317l-1.89 1.092a.75.75 0 0 1-.75-1.3l2.879-1.663a.752.752 0 0 1 .51-.187zM15.25 9a.75.75 0 1 1 0 1.5H4.75a.75.75 0 1 1 0-1.5h10.5zM9.75.375a.75.75 0 0 1 .75.75v4.318l1.89-1.093.092-.045a.75.75 0 0 1 .659 1.344l-2.883 1.667a.752.752 0 0 1-.508.184.752.752 0 0 1-.511-.187L6.359 5.65a.75.75 0 0 1 .75-1.299L9 5.442V1.125a.75.75 0 0 1 .75-.75z"/></svg>',
            alignTop: '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m10.261 7.062 2.88 1.663a.75.75 0 0 1-.75 1.3L10.5 8.933v7.317a.75.75 0 1 1-1.5 0V8.932l-1.89 1.093a.75.75 0 0 1-.75-1.3l2.879-1.663a.752.752 0 0 1 .511-.187.752.752 0 0 1 .511.187zM15.25 4a.75.75 0 1 1 0 1.5H4.75a.75.75 0 0 1 0-1.5h10.5z"/></svg>',
            alignLeft: '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2 3.75c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0 8c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0 4c0 .414.336.75.75.75h9.929a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0-8c0 .414.336.75.75.75h9.929a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75z"/></svg>',
            alignCenter: '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2 3.75c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0 8c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm2.286 4c0 .414.336.75.75.75h9.928a.75.75 0 1 0 0-1.5H5.036a.75.75 0 0 0-.75.75zm0-8c0 .414.336.75.75.75h9.928a.75.75 0 1 0 0-1.5H5.036a.75.75 0 0 0-.75.75z"/></svg>',
            alignRight: '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M18 3.75a.75.75 0 0 1-.75.75H2.75a.75.75 0 1 1 0-1.5h14.5a.75.75 0 0 1 .75.75zm0 8a.75.75 0 0 1-.75.75H2.75a.75.75 0 1 1 0-1.5h14.5a.75.75 0 0 1 .75.75zm0 4a.75.75 0 0 1-.75.75H7.321a.75.75 0 1 1 0-1.5h9.929a.75.75 0 0 1 .75.75zm0-8a.75.75 0 0 1-.75.75H7.321a.75.75 0 1 1 0-1.5h9.929a.75.75 0 0 1 .75.75z"/></svg>',
            alignJustify: '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2 3.75c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0 8c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0 4c0 .414.336.75.75.75h9.929a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0-8c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75z"/></svg>',
            objectLeft: '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm11.5 9H18v1.5h-4.5zm0-3H18v1.5h-4.5zm0-3H18v1.5h-4.5zM2 15h16v1.5H2z"/><path d="M12.003 7v5.5a1 1 0 0 1-1 1H2.996a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h8.007a1 1 0 0 1 1 1zm-1.506.5H3.5V12h6.997V7.5z"/></svg>',
            objectCenter: '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm0 12h16v1.5H2z"/><path d="M15.003 7v5.5a1 1 0 0 1-1 1H5.996a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h8.007a1 1 0 0 1 1 1zm-1.506.5H6.5V12h6.997V7.5z"/></svg>',
            objectRight: '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm0 12h16v1.5H2zm0-9h5v1.5H2zm0 3h5v1.5H2zm0 3h5v1.5H2z"/><path d="M18.003 7v5.5a1 1 0 0 1-1 1H8.996a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h8.007a1 1 0 0 1 1 1zm-1.506.5H9.5V12h6.997V7.5z"/></svg>',
            objectFullWidth: '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm0 12h16v1.5H2z"/><path d="M18 7v5.5a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1zm-1.505.5H3.504V12h12.991V7.5z"/></svg>',
            objectInline: '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm11.5 9H18v1.5h-4.5zM2 15h16v1.5H2z"/><path d="M12.003 7v5.5a1 1 0 0 1-1 1H2.996a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h8.007a1 1 0 0 1 1 1zm-1.506.5H3.5V12h6.997V7.5z"/></svg>',
            objectBlockLeft: '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm0 12h16v1.5H2z"/><path d="M12.003 7v5.5a1 1 0 0 1-1 1H2.996a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h8.007a1 1 0 0 1 1 1zm-1.506.5H3.5V12h6.997V7.5z"/></svg>',
            objectBlockRight: '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm0 12h16v1.5H2z"/><path d="M18.003 7v5.5a1 1 0 0 1-1 1H8.996a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h8.007a1 1 0 0 1 1 1zm-1.506.5H9.5V12h6.997V7.5z"/></svg>',
            objectSizeFull: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M2.5 17v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zM1 15.5v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm0-2v1h-1v-1h1zm-19 0v1H0v-1h1zM14.5 2v1h-1V2h1zm2 0v1h-1V2h1zm2 0v1h-1V2h1zm-8 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm8 0v1h-1V2h1zm-10 0v1h-1V2h1z"/><path d="M18.095 2H1.905C.853 2 0 2.895 0 4v12c0 1.105.853 2 1.905 2h16.19C19.147 18 20 17.105 20 16V4c0-1.105-.853-2-1.905-2zm0 1.5c.263 0 .476.224.476.5v12c0 .276-.213.5-.476.5H1.905a.489.489 0 0 1-.476-.5V4c0-.276.213-.5.476-.5h16.19z"/></svg>',
            objectSizeLarge: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M2.5 17v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zM1 15.5v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm0-2v1h-1v-1h1zm-19 0v1H0v-1h1zM14.5 2v1h-1V2h1zm2 0v1h-1V2h1zm2 0v1h-1V2h1zm-8 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm8 0v1h-1V2h1zm-10 0v1h-1V2h1z"/><path d="M13 6H2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2zm0 1.5a.5.5 0 0 1 .5.5v8a.5.5 0 0 1-.5.5H2a.5.5 0 0 1-.5-.5V8a.5.5 0 0 1 .5-.5h11z"/></svg>',
            objectSizeSmall: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M2.5 17v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zM1 15.5v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm0-2v1h-1v-1h1zm-19 0v1H0v-1h1zM14.5 2v1h-1V2h1zm2 0v1h-1V2h1zm2 0v1h-1V2h1zm-8 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm8 0v1h-1V2h1zm-10 0v1h-1V2h1z"/><path d="M7 10H2a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h5a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2zm0 1.5a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5H2a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5h5z"/></svg>',
            objectSizeMedium: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M2.5 17v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zM1 15.5v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm0-2v1h-1v-1h1zm-19 0v1H0v-1h1zM14.5 2v1h-1V2h1zm2 0v1h-1V2h1zm2 0v1h-1V2h1zm-8 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm8 0v1h-1V2h1zm-10 0v1h-1V2h1z"/><path d="M10 8H2a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2v-6a2 2 0 0 0-2-2zm0 1.5a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-.5.5H2a.5.5 0 0 1-.5-.5v-6a.5.5 0 0 1 .5-.5h8z"/></svg>',
            pencil: '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m7.3 17.37-.061.088a1.518 1.518 0 0 1-.934.535l-4.178.663-.806-4.153a1.495 1.495 0 0 1 .187-1.058l.056-.086L8.77 2.639c.958-1.351 2.803-1.076 4.296-.03 1.497 1.047 2.387 2.693 1.433 4.055L7.3 17.37zM9.14 4.728l-5.545 8.346 3.277 2.294 5.544-8.346L9.14 4.728zM6.07 16.512l-3.276-2.295.53 2.73 2.746-.435zM9.994 3.506 13.271 5.8c.316-.452-.16-1.333-1.065-1.966-.905-.634-1.895-.78-2.212-.328zM8 18.5 9.375 17H19v1.5H8z"/></svg>',
            pilcrow: '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M6.999 2H15a1 1 0 0 1 0 2h-1.004v13a1 1 0 1 1-2 0V4H8.999v13a1 1 0 1 1-2 0v-7A4 4 0 0 1 3 6a4 4 0 0 1 3.999-4z"/></svg>',
            quote: '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M3 10.423a6.5 6.5 0 0 1 6.056-6.408l.038.67C6.448 5.423 5.354 7.663 5.22 10H9c.552 0 .5.432.5.986v4.511c0 .554-.448.503-1 .503h-5c-.552 0-.5-.449-.5-1.003v-4.574zm8 0a6.5 6.5 0 0 1 6.056-6.408l.038.67c-2.646.739-3.74 2.979-3.873 5.315H17c.552 0 .5.432.5.986v4.511c0 .554-.448.503-1 .503h-5c-.552 0-.5-.449-.5-1.003v-4.574z"/></svg>',
            threeVerticalDots: '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><circle cx="9.5" cy="4.5" r="1.5"/><circle cx="9.5" cy="10.5" r="1.5"/><circle cx="9.5" cy="16.5" r="1.5"/></svg>'
        };
        var Mg = n(5542),
            Tg = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(Mg.Z, Tg);
        Mg.Z.locals;
        const {
            threeVerticalDots: Bg
        } = Ig, Ng = {
            alignLeft: Ig.alignLeft,
            bold: Ig.bold,
            importExport: Ig.importExport,
            paragraph: Ig.paragraph,
            plus: Ig.plus,
            text: Ig.text,
            threeVerticalDots: Ig.threeVerticalDots
        };
        class Pg extends Hi {
            constructor(t, e) {
                super(t);
                const n = this.bindTemplate,
                    o = this.t;
                this.options = e || {}, this.set("ariaLabel", o("Editor toolbar")), this.set("maxWidth", "auto"), this.items = this.createCollection(), this.focusTracker = new Mi, this.keystrokes = new Ti, this.set("class", void 0), this.set("isCompact", !1), this.itemsView = new zg(t), this.children = this.createCollection(), this.children.add(this.itemsView), this.focusables = this.createCollection();
                const i = "rtl" === t.uiLanguageDirection;
                this._focusCycler = new Vr({
                    focusables: this.focusables,
                    focusTracker: this.focusTracker,
                    keystrokeHandler: this.keystrokes,
                    actions: {
                        focusPrevious: [i ? "arrowright" : "arrowleft", "arrowup"],
                        focusNext: [i ? "arrowleft" : "arrowright", "arrowdown"]
                    }
                });
                const r = ["ck", "ck-toolbar", n.to("class"), n.if("isCompact", "ck-toolbar_compact")];
                var s;
                this.options.shouldGroupWhenFull && this.options.isFloating && r.push("ck-toolbar_floating"), this.setTemplate({
                    tag: "div",
                    attributes: {
                        class: r,
                        role: "toolbar",
                        "aria-label": n.to("ariaLabel"),
                        style: {
                            maxWidth: n.to("maxWidth")
                        },
                        tabindex: -1
                    },
                    children: this.children,
                    on: {
                        mousedown: (s = this, s.bindTemplate.to((t => {
                            t.target === s.element && t.preventDefault()
                        })))
                    }
                }), this._behavior = this.options.shouldGroupWhenFull ? new Lg(this) : new Og(this)
            }
            render() {
                super.render(), this.focusTracker.add(this.element);
                for (const t of this.items) this.focusTracker.add(t.element);
                this.items.on("add", ((t, e) => {
                    this.focusTracker.add(e.element)
                })), this.items.on("remove", ((t, e) => {
                    this.focusTracker.remove(e.element)
                })), this.keystrokes.listenTo(this.element), this._behavior.render(this)
            }
            destroy() {
                return this._behavior.destroy(), this.focusTracker.destroy(), this.keystrokes.destroy(), super.destroy()
            }
            focus() {
                this._focusCycler.focusFirst()
            }
            focusLast() {
                this._focusCycler.focusLast()
            }
            fillFromConfig(t, e, n) {
                this.items.addMany(this._buildItemsFromConfig(t, e, n))
            }
            _buildItemsFromConfig(t, e, n) {
                const o = qr(t),
                    i = n || o.removeItems;
                return this._cleanItemsConfiguration(o.items, e, i).map((t => F(t) ? this._createNestedToolbarDropdown(t, e, i) : "|" === t ? new Hr : "-" === t ? new Gr : e.create(t))).filter((t => !!t))
            }
            _cleanItemsConfiguration(t, e, n) {
                const o = t.filter(((t, o, i) => "|" === t || -1 === n.indexOf(t) && ("-" === t ? !this.options.shouldGroupWhenFull || (C("toolbarview-line-break-ignored-when-grouping-items", i), !1) : !(!F(t) && !e.has(t)) || (C("toolbarview-item-unavailable", {
                    item: t
                }), !1))));
                return this._cleanSeparatorsAndLineBreaks(o)
            }
            _cleanSeparatorsAndLineBreaks(t) {
                const e = t => "-" !== t && "|" !== t,
                    n = t.length,
                    o = t.findIndex(e);
                if (-1 === o) return [];
                const i = n - t.slice().reverse().findIndex(e);
                return t.slice(o, i).filter(((t, n, o) => {
                    if (e(t)) return !0;
                    return !(n > 0 && o[n - 1] === t)
                }))
            }
            _createNestedToolbarDropdown(t, e, n) {
                let {
                    label: o,
                    icon: i,
                    items: r,
                    tooltip: s = !0,
                    withText: a = !1
                } = t;
                if (r = this._cleanItemsConfiguration(r, e, n), !r.length) return null;
                const c = Zg(this.locale);
                return o || C("toolbarview-nested-toolbar-dropdown-missing-label", t), c.class = "ck-toolbar__nested-toolbar-dropdown", c.buttonView.set({
                    label: o,
                    tooltip: s,
                    withText: !!a
                }), !1 !== i ? c.buttonView.icon = Ng[i] || i || Bg : c.buttonView.withText = !0, Qg(c, (() => c.toolbarView._buildItemsFromConfig(r, e, n))), c
            }
        }
        class zg extends Hi {
            constructor(t) {
                super(t), this.children = this.createCollection(), this.setTemplate({
                    tag: "div",
                    attributes: {
                        class: ["ck", "ck-toolbar__items"]
                    },
                    children: this.children
                })
            }
        }
        class Og {
            constructor(t) {
                const e = t.bindTemplate;
                t.set("isVertical", !1), t.itemsView.children.bindTo(t.items).using((t => t)), t.focusables.bindTo(t.items).using((t => t)), t.extendTemplate({
                    attributes: {
                        class: [e.if("isVertical", "ck-toolbar_vertical")]
                    }
                })
            }
            render() {}
            destroy() {}
        }
        class Lg {
            constructor(t) {
                this.resizeObserver = null, this.cachedPadding = null, this.shouldUpdateGroupingOnNextResize = !1, this.view = t, this.viewChildren = t.children, this.viewFocusables = t.focusables, this.viewItemsView = t.itemsView, this.viewFocusTracker = t.focusTracker, this.viewLocale = t.locale, this.ungroupedItems = t.createCollection(), this.groupedItems = t.createCollection(), this.groupedItemsDropdown = this._createGroupedItemsDropdown(), t.itemsView.children.bindTo(this.ungroupedItems).using((t => t)), this.ungroupedItems.on("change", this._updateFocusCycleableItems.bind(this)), t.children.on("change", this._updateFocusCycleableItems.bind(this)), t.items.on("change", ((t, e) => {
                    const n = e.index,
                        o = Array.from(e.added);
                    for (const t of e.removed) n >= this.ungroupedItems.length ? this.groupedItems.remove(t) : this.ungroupedItems.remove(t);
                    for (let t = n; t < n + o.length; t++) {
                        const e = o[t - n];
                        t > this.ungroupedItems.length ? this.groupedItems.add(e, t - this.ungroupedItems.length) : this.ungroupedItems.add(e, t)
                    }
                    this._updateGrouping()
                })), t.extendTemplate({
                    attributes: {
                        class: ["ck-toolbar_grouping"]
                    }
                })
            }
            render(t) {
                this.viewElement = t.element, this._enableGroupingOnResize(), this._enableGroupingOnMaxWidthChange(t)
            }
            destroy() {
                this.groupedItemsDropdown.destroy(), this.resizeObserver.destroy()
            }
            _updateGrouping() {
                if (!this.viewElement.ownerDocument.body.contains(this.viewElement)) return;
                if (!ti(this.viewElement)) return void(this.shouldUpdateGroupingOnNextResize = !0);
                const t = this.groupedItems.length;
                let e;
                for (; this._areItemsOverflowing;) this._groupLastItem(), e = !0;
                if (!e && this.groupedItems.length) {
                    for (; this.groupedItems.length && !this._areItemsOverflowing;) this._ungroupFirstItem();
                    this._areItemsOverflowing && this._groupLastItem()
                }
                this.groupedItems.length !== t && this.view.fire("groupedItemsUpdate")
            }
            get _areItemsOverflowing() {
                if (!this.ungroupedItems.length) return !1;
                const t = this.viewElement,
                    e = this.viewLocale.uiLanguageDirection,
                    n = new Uo(t.lastChild),
                    o = new Uo(t);
                if (!this.cachedPadding) {
                    const n = Oo.window.getComputedStyle(t),
                        o = "ltr" === e ? "paddingRight" : "paddingLeft";
                    this.cachedPadding = Number.parseInt(n[o])
                }
                return "ltr" === e ? n.right > o.right - this.cachedPadding : n.left < o.left + this.cachedPadding
            }
            _enableGroupingOnResize() {
                let t;
                this.resizeObserver = new Yo(this.viewElement, (e => {
                    t && t === e.contentRect.width && !this.shouldUpdateGroupingOnNextResize || (this.shouldUpdateGroupingOnNextResize = !1, this._updateGrouping(), t = e.contentRect.width)
                })), this._updateGrouping()
            }
            _enableGroupingOnMaxWidthChange(t) {
                t.on("change:maxWidth", (() => {
                    this._updateGrouping()
                }))
            }
            _groupLastItem() {
                this.groupedItems.length || (this.viewChildren.add(new Hr), this.viewChildren.add(this.groupedItemsDropdown), this.viewFocusTracker.add(this.groupedItemsDropdown.element)), this.groupedItems.add(this.ungroupedItems.remove(this.ungroupedItems.last), 0)
            }
            _ungroupFirstItem() {
                this.ungroupedItems.add(this.groupedItems.remove(this.groupedItems.first)), this.groupedItems.length || (this.viewChildren.remove(this.groupedItemsDropdown), this.viewChildren.remove(this.viewChildren.last), this.viewFocusTracker.remove(this.groupedItemsDropdown.element))
            }
            _createGroupedItemsDropdown() {
                const t = this.viewLocale,
                    e = t.t,
                    n = Zg(t);
                return n.class = "ck-toolbar__grouped-dropdown", n.panelPosition = "ltr" === t.uiLanguageDirection ? "sw" : "se", Qg(n, this.groupedItems), n.buttonView.set({
                    label: e("Show more items"),
                    tooltip: !0,
                    tooltipPosition: "rtl" === t.uiLanguageDirection ? "se" : "sw",
                    icon: Bg
                }), n
            }
            _updateFocusCycleableItems() {
                this.viewFocusables.clear(), this.ungroupedItems.map((t => {
                    this.viewFocusables.add(t)
                })), this.groupedItems.length && this.viewFocusables.add(this.groupedItemsDropdown)
            }
        }
        var jg = n(1046),
            Rg = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(jg.Z, Rg);
        jg.Z.locals;
        class Fg extends Hi {
            constructor(t) {
                super(t);
                const e = this.bindTemplate;
                this.items = this.createCollection(), this.focusTracker = new Mi, this.keystrokes = new Ti, this._focusCycler = new Vr({
                    focusables: this.items,
                    focusTracker: this.focusTracker,
                    keystrokeHandler: this.keystrokes,
                    actions: {
                        focusPrevious: "arrowup",
                        focusNext: "arrowdown"
                    }
                }), this.set("ariaLabel", void 0), this.set("role", void 0), this.setTemplate({
                    tag: "ul",
                    attributes: {
                        class: ["ck", "ck-reset", "ck-list"],
                        role: e.to("role"),
                        "aria-label": e.to("ariaLabel")
                    },
                    children: this.items
                })
            }
            render() {
                super.render();
                for (const t of this.items) this.focusTracker.add(t.element);
                this.items.on("add", ((t, e) => {
                    this.focusTracker.add(e.element)
                })), this.items.on("remove", ((t, e) => {
                    this.focusTracker.remove(e.element)
                })), this.keystrokes.listenTo(this.element)
            }
            destroy() {
                super.destroy(), this.focusTracker.destroy(), this.keystrokes.destroy()
            }
            focus() {
                this._focusCycler.focusFirst()
            }
            focusLast() {
                this._focusCycler.focusLast()
            }
        }
        class Vg extends Hi {
            constructor(t) {
                super(t);
                const e = this.bindTemplate;
                this.set("isVisible", !0), this.children = this.createCollection(), this.setTemplate({
                    tag: "li",
                    attributes: {
                        class: ["ck", "ck-list__item", e.if("isVisible", "ck-hidden", (t => !t))],
                        role: "presentation"
                    },
                    children: this.children
                })
            }
            focus() {
                this.children.first.focus()
            }
        }
        class Ug extends Hi {
            constructor(t) {
                super(t), this.setTemplate({
                    tag: "li",
                    attributes: {
                        class: ["ck", "ck-list__separator"]
                    }
                })
            }
        }
        var Hg = n(7686),
            Gg = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(Hg.Z, Gg);
        Hg.Z.locals;
        class qg extends Hi {
            constructor(t) {
                super(t);
                const e = this.bindTemplate;
                this.set("class", void 0), this.set("labelStyle", void 0), this.set("icon", void 0), this.set("isEnabled", !0), this.set("isOn", !1), this.set("isToggleable", !1), this.set("isVisible", !0), this.set("keystroke", void 0), this.set("withKeystroke", !1), this.set("label", void 0), this.set("tabindex", -1), this.set("tooltip", !1), this.set("tooltipPosition", "s"), this.set("type", "button"), this.set("withText", !1), this.children = this.createCollection(), this.actionView = this._createActionView(), this.arrowView = this._createArrowView(), this.keystrokes = new Ti, this.focusTracker = new Mi, this.setTemplate({
                    tag: "div",
                    attributes: {
                        class: ["ck", "ck-splitbutton", e.to("class"), e.if("isVisible", "ck-hidden", (t => !t)), this.arrowView.bindTemplate.if("isOn", "ck-splitbutton_open")]
                    },
                    children: this.children
                })
            }
            render() {
                super.render(), this.children.add(this.actionView), this.children.add(this.arrowView), this.focusTracker.add(this.actionView.element), this.focusTracker.add(this.arrowView.element), this.keystrokes.listenTo(this.element), this.keystrokes.set("arrowright", ((t, e) => {
                    this.focusTracker.focusedElement === this.actionView.element && (this.arrowView.focus(), e())
                })), this.keystrokes.set("arrowleft", ((t, e) => {
                    this.focusTracker.focusedElement === this.arrowView.element && (this.actionView.focus(), e())
                }))
            }
            destroy() {
                super.destroy(), this.focusTracker.destroy(), this.keystrokes.destroy()
            }
            focus() {
                this.actionView.focus()
            }
            _createActionView() {
                const t = new br;
                return t.bind("icon", "isEnabled", "isOn", "isToggleable", "keystroke", "label", "tabindex", "tooltip", "tooltipPosition", "type", "withText").to(this), t.extendTemplate({
                    attributes: {
                        class: "ck-splitbutton__action"
                    }
                }), t.delegate("execute").to(this), t
            }
            _createArrowView() {
                const t = new br,
                    e = t.bindTemplate;
                return t.icon = Rr, t.extendTemplate({
                    attributes: {
                        class: ["ck-splitbutton__arrow"],
                        "data-cke-tooltip-disabled": e.to("isOn"),
                        "aria-haspopup": !0,
                        "aria-expanded": e.to("isOn", (t => String(t)))
                    }
                }), t.bind("isEnabled").to(this), t.bind("label").to(this), t.bind("tooltip").to(this), t.delegate("execute").to(this, "open"), t
            }
        }
        var Wg = n(7339),
            Kg = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(Wg.Z, Kg);
        Wg.Z.locals;
        var Yg = n(3949),
            $g = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(Yg.Z, $g);
        Yg.Z.locals;

        function Zg(e, n = Fr) {
            const o = new n(e),
                i = new Pr(e),
                r = new jr(e, o, i);
            return o.bind("isEnabled").to(r), o instanceof qg ? o.arrowView.bind("isOn").to(r, "isOpen") : o.bind("isOn").to(r, "isOpen"),
                function (e) {
                    (function (e) {
                        e.on("render", (() => {
                            t({
                                emitter: e,
                                activator: () => e.isOpen,
                                callback: () => {
                                    e.isOpen = !1
                                },
                                contextElements: () => [e.element, ...e.focusTracker._elements]
                            })
                        }))
                    })(e),
                    function (t) {
                        t.on("execute", (e => {
                            e.source instanceof Cr || (t.isOpen = !1)
                        }))
                    }(e),
                    function (t) {
                        t.focusTracker.on("change:isFocused", ((e, n, o) => {
                            t.isOpen && !o && (t.isOpen = !1)
                        }))
                    }(e),
                    function (t) {
                        t.keystrokes.set("arrowdown", ((e, n) => {
                            t.isOpen && (t.panelView.focus(), n())
                        })), t.keystrokes.set("arrowup", ((e, n) => {
                            t.isOpen && (t.panelView.focusLast(), n())
                        }))
                    }(e),
                    function (t) {
                        t.on("change:isOpen", ((e, n, o) => {
                            if (o) return;
                            const i = t.panelView.element;
                            i && i.contains(Oo.document.activeElement) && t.buttonView.focus()
                        }))
                    }(e),
                    function (t) {
                        t.on("change:isOpen", ((e, n, o) => {
                            o && t.panelView.focus()
                        }), {
                            priority: "low"
                        })
                    }(e)
                }(r), r
        }

        function Qg(t, e, n = {}) {
            t.extendTemplate({
                attributes: {
                    class: ["ck-toolbar-dropdown"]
                }
            }), t.isOpen ? Jg(t, e, n) : t.once("change:isOpen", (() => Jg(t, e, n)), {
                priority: "highest"
            }), n.enableActiveItemFocusOnDropdownOpen && ep(t, (() => t.toolbarView.items.find((t => t.isOn))))
        }

        function Jg(t, e, n) {
            const o = t.locale,
                i = o.t,
                r = t.toolbarView = new Pg(o),
                s = "function" == typeof e ? e() : e;
            r.ariaLabel = n.ariaLabel || i("Dropdown toolbar"), n.maxWidth && (r.maxWidth = n.maxWidth), n.class && (r.class = n.class), n.isCompact && (r.isCompact = n.isCompact), n.isVertical && (r.isVertical = !0), s instanceof ji ? r.items.bindTo(s).using((t => t)) : r.items.addMany(s), t.panelView.children.add(r), r.items.delegate("execute").to(t)
        }

        function Xg(t, e, n = {}) {
            t.isOpen ? tp(t, e, n) : t.once("change:isOpen", (() => tp(t, e, n)), {
                priority: "highest"
            }), ep(t, (() => t.listView.items.find((t => t instanceof Vg && t.children.first.isOn))))
        }

        function tp(t, e, n) {
            const o = t.locale,
                i = t.listView = new Fg(o),
                r = "function" == typeof e ? e() : e;
            i.ariaLabel = n.ariaLabel, i.role = n.role, i.items.bindTo(r).using((t => {
                if ("separator" === t.type) return new Ug(o);
                if ("button" === t.type || "switchbutton" === t.type) {
                    const e = new Vg(o);
                    let n;
                    return n = "button" === t.type ? new br(o) : new Cr(o), n.bind(...Object.keys(t.model)).to(t.model), n.delegate("execute").to(e), e.children.add(n), e
                }
                return null
            })), t.panelView.children.add(i), i.items.delegate("execute").to(t)
        }

        function ep(t, e) {
            t.on("change:isOpen", (() => {
                if (!t.isOpen) return;
                const n = e();
                n && ("function" == typeof n.focus ? n.focus() : C("ui-dropdown-focus-child-on-open-child-missing-focus", {
                    view: n
                }))
            }), {
                priority: k.low - 10
            })
        }

        function np(t, e, n) {
            const o = new Nr(t.locale);
            return o.set({
                id: e,
                ariaDescribedById: n
            }), o.bind("isReadOnly").to(t, "isEnabled", (t => !t)), o.bind("hasError").to(t, "errorText", (t => !!t)), o.on("input", (() => {
                t.errorText = null
            })), t.bind("isEmpty", "isFocused", "placeholder").to(o), o
        }
        const op = (t, e = 0, n = 1) => t > n ? n : t < e ? e : t,
            ip = (t, e = 0, n = Math.pow(10, e)) => Math.round(n * t) / n,
            rp = (Math.PI, t => ("#" === t[0] && (t = t.substring(1)), t.length < 6 ? {
                r: parseInt(t[0] + t[0], 16),
                g: parseInt(t[1] + t[1], 16),
                b: parseInt(t[2] + t[2], 16),
                a: 4 === t.length ? ip(parseInt(t[3] + t[3], 16) / 255, 2) : 1
            } : {
                r: parseInt(t.substring(0, 2), 16),
                g: parseInt(t.substring(2, 4), 16),
                b: parseInt(t.substring(4, 6), 16),
                a: 8 === t.length ? ip(parseInt(t.substring(6, 8), 16) / 255, 2) : 1
            })),
            sp = ({
                h: t,
                s: e,
                v: n,
                a: o
            }) => {
                const i = (200 - e) * n / 100;
                return {
                    h: ip(t),
                    s: ip(i > 0 && i < 200 ? e * n / 100 / (i <= 100 ? i : 200 - i) * 100 : 0),
                    l: ip(i / 2),
                    a: ip(o, 2)
                }
            },
            ap = t => {
                const {
                    h: e,
                    s: n,
                    l: o
                } = sp(t);
                return `hsl(${e}, ${n}%, ${o}%)`
            },
            cp = ({
                h: t,
                s: e,
                v: n,
                a: o
            }) => {
                t = t / 360 * 6, e /= 100, n /= 100;
                const i = Math.floor(t),
                    r = n * (1 - e),
                    s = n * (1 - (t - i) * e),
                    a = n * (1 - (1 - t + i) * e),
                    c = i % 6;
                return {
                    r: ip(255 * [n, s, r, r, a, n][c]),
                    g: ip(255 * [a, n, n, s, r, r][c]),
                    b: ip(255 * [r, r, a, n, n, s][c]),
                    a: ip(o, 2)
                }
            },
            lp = t => {
                const e = t.toString(16);
                return e.length < 2 ? "0" + e : e
            },
            dp = ({
                r: t,
                g: e,
                b: n,
                a: o
            }) => {
                const i = o < 1 ? lp(ip(255 * o)) : "";
                return "#" + lp(t) + lp(e) + lp(n) + i
            },
            hp = ({
                r: t,
                g: e,
                b: n,
                a: o
            }) => {
                const i = Math.max(t, e, n),
                    r = i - Math.min(t, e, n),
                    s = r ? i === t ? (e - n) / r : i === e ? 2 + (n - t) / r : 4 + (t - e) / r : 0;
                return {
                    h: ip(60 * (s < 0 ? s + 6 : s)),
                    s: ip(i ? r / i * 100 : 0),
                    v: ip(i / 255 * 100),
                    a: o
                }
            },
            up = (t, e) => {
                if (t === e) return !0;
                for (const n in t)
                    if (t[n] !== e[n]) return !1;
                return !0
            },
            gp = {},
            pp = t => {
                let e = gp[t];
                return e || (e = document.createElement("template"), e.innerHTML = t, gp[t] = e), e
            },
            mp = (t, e, n) => {
                t.dispatchEvent(new CustomEvent(e, {
                    bubbles: !0,
                    detail: n
                }))
            };
        let fp = !1;
        const kp = t => "touches" in t,
            bp = (t, e) => {
                const n = kp(e) ? e.touches[0] : e,
                    o = t.el.getBoundingClientRect();
                mp(t.el, "move", t.getMove({
                    x: op((n.pageX - (o.left + window.pageXOffset)) / o.width),
                    y: op((n.pageY - (o.top + window.pageYOffset)) / o.height)
                }))
            };
        class wp {
            constructor(t, e, n, o) {
                const i = pp(`<div role="slider" tabindex="0" part="${e}" ${n}><div part="${e}-pointer"></div></div>`);
                t.appendChild(i.content.cloneNode(!0));
                const r = t.querySelector(`[part=${e}]`);
                r.addEventListener("mousedown", this), r.addEventListener("touchstart", this), r.addEventListener("keydown", this), this.el = r, this.xy = o, this.nodes = [r.firstChild, r]
            }
            set dragging(t) {
                const e = t ? document.addEventListener : document.removeEventListener;
                e(fp ? "touchmove" : "mousemove", this), e(fp ? "touchend" : "mouseup", this)
            }
            handleEvent(t) {
                switch (t.type) {
                    case "mousedown":
                    case "touchstart":
                        if (t.preventDefault(), !(t => !(fp && !kp(t) || (fp || (fp = kp(t)), 0)))(t) || !fp && 0 != t.button) return;
                        this.el.focus(), bp(this, t), this.dragging = !0;
                        break;
                    case "mousemove":
                    case "touchmove":
                        t.preventDefault(), bp(this, t);
                        break;
                    case "mouseup":
                    case "touchend":
                        this.dragging = !1;
                        break;
                    case "keydown":
                        ((t, e) => {
                            const n = e.keyCode;
                            n > 40 || t.xy && n < 37 || n < 33 || (e.preventDefault(), mp(t.el, "move", t.getMove({
                                x: 39 === n ? .01 : 37 === n ? -.01 : 34 === n ? .05 : 33 === n ? -.05 : 35 === n ? 1 : 36 === n ? -1 : 0,
                                y: 40 === n ? .01 : 38 === n ? -.01 : 0
                            }, !0)))
                        })(this, t)
                }
            }
            style(t) {
                t.forEach(((t, e) => {
                    for (const n in t) this.nodes[e].style.setProperty(n, t[n])
                }))
            }
        }
        class Ap extends wp {
            constructor(t) {
                super(t, "hue", 'aria-label="Hue" aria-valuemin="0" aria-valuemax="360"', !1)
            }
            update({
                h: t
            }) {
                this.h = t, this.style([{
                    left: t / 360 * 100 + "%",
                    color: ap({
                        h: t,
                        s: 100,
                        v: 100,
                        a: 1
                    })
                }]), this.el.setAttribute("aria-valuenow", `${ip(t)}`)
            }
            getMove(t, e) {
                return {
                    h: e ? op(this.h + 360 * t.x, 0, 360) : 360 * t.x
                }
            }
        }
        class Cp extends wp {
            constructor(t) {
                super(t, "saturation", 'aria-label="Color"', !0)
            }
            update(t) {
                this.hsva = t, this.style([{
                    top: 100 - t.v + "%",
                    left: `${t.s}%`,
                    color: ap(t)
                }, {
                    "background-color": ap({
                        h: t.h,
                        s: 100,
                        v: 100,
                        a: 1
                    })
                }]), this.el.setAttribute("aria-valuetext", `Saturation ${ip(t.s)}%, Brightness ${ip(t.v)}%`)
            }
            getMove(t, e) {
                return {
                    s: e ? op(this.hsva.s + 100 * t.x, 0, 100) : 100 * t.x,
                    v: e ? op(this.hsva.v - 100 * t.y, 0, 100) : Math.round(100 - 100 * t.y)
                }
            }
        }
        const _p = Symbol("same"),
            vp = Symbol("color"),
            yp = Symbol("hsva"),
            xp = Symbol("update"),
            Ep = Symbol("parts"),
            Dp = Symbol("css"),
            Sp = Symbol("sliders");
        class Ip extends HTMLElement {
            static get observedAttributes() {
                return ["color"]
            }
            get[Dp]() {
                return [':host{display:flex;flex-direction:column;position:relative;width:200px;height:200px;user-select:none;-webkit-user-select:none;cursor:default}:host([hidden]){display:none!important}[role=slider]{position:relative;touch-action:none;user-select:none;-webkit-user-select:none;outline:0}[role=slider]:last-child{border-radius:0 0 8px 8px}[part$=pointer]{position:absolute;z-index:1;box-sizing:border-box;width:28px;height:28px;display:flex;place-content:center center;transform:translate(-50%,-50%);background-color:#fff;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2)}[part$=pointer]::after{content:"";width:100%;height:100%;border-radius:inherit;background-color:currentColor}[role=slider]:focus [part$=pointer]{transform:translate(-50%,-50%) scale(1.1)}', "[part=hue]{flex:0 0 24px;background:linear-gradient(to right,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%)}[part=hue-pointer]{top:50%;z-index:2}", "[part=saturation]{flex-grow:1;border-color:transparent;border-bottom:12px solid #000;border-radius:8px 8px 0 0;background-image:linear-gradient(to top,#000,transparent),linear-gradient(to right,#fff,rgba(255,255,255,0));box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}[part=saturation-pointer]{z-index:3}"]
            }
            get[Sp]() {
                return [Cp, Ap]
            }
            get color() {
                return this[vp]
            }
            set color(t) {
                if (!this[_p](t)) {
                    const e = this.colorModel.toHsva(t);
                    this[xp](e), this[vp] = t
                }
            }
            constructor() {
                super();
                const t = pp(`<style>${this[Dp].join("")}</style>`),
                    e = this.attachShadow({
                        mode: "open"
                    });
                e.appendChild(t.content.cloneNode(!0)), e.addEventListener("move", this), this[Ep] = this[Sp].map((t => new t(e)))
            }
            connectedCallback() {
                if (this.hasOwnProperty("color")) {
                    const t = this.color;
                    delete this.color, this.color = t
                } else this.color || (this.color = this.colorModel.defaultColor)
            }
            attributeChangedCallback(t, e, n) {
                const o = this.colorModel.fromAttr(n);
                this[_p](o) || (this.color = o)
            }
            handleEvent(t) {
                const e = this[yp],
                    n = {
                        ...e,
                        ...t.detail
                    };
                let o;
                this[xp](n), up(n, e) || this[_p](o = this.colorModel.fromHsva(n)) || (this[vp] = o, mp(this, "color-changed", {
                    value: o
                }))
            } [_p](t) {
                return this.color && this.colorModel.equal(t, this.color)
            } [xp](t) {
                this[yp] = t, this[Ep].forEach((e => e.update(t)))
            }
        }
        const Mp = {
            defaultColor: "#000",
            toHsva: t => hp(rp(t)),
            fromHsva: ({
                h: t,
                s: e,
                v: n
            }) => dp(cp({
                h: t,
                s: e,
                v: n,
                a: 1
            })),
            equal: (t, e) => t.toLowerCase() === e.toLowerCase() || up(rp(t), rp(e)),
            fromAttr: t => t
        };
        class Tp extends Ip {
            get colorModel() {
                return Mp
            }
        }
        customElements.define("hex-color-picker", class extends Tp {});
        var Bp = n(3398),
            Np = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(Bp.Z, Np);
        Bp.Z.locals;
        K(Si);
        Object.defineProperty, Object.getOwnPropertySymbols, Object.prototype.hasOwnProperty, Object.prototype.propertyIsEnumerable;
        var Pp = n(4157),
            zp = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(Pp.Z, zp);
        Pp.Z.locals;
        class Op {
            constructor(t) {
                this._components = new Map, this.editor = t
            }* names() {
                for (const t of this._components.values()) yield t.originalName
            }
            add(t, e) {
                this._components.set(Lp(t), {
                    callback: e,
                    originalName: t
                })
            }
            create(t) {
                if (!this.has(t)) throw new A("componentfactory-item-missing", this, {
                    name: t
                });
                return this._components.get(Lp(t)).callback(this.editor.locale)
            }
            has(t) {
                return this._components.has(Lp(t))
            }
        }

        function Lp(t) {
            return String(t).toLowerCase()
        }
        var jp = n(8793),
            Rp = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(jp.Z, Rp);
        jp.Z.locals;
        var Fp = Object.defineProperty,
            Vp = Object.getOwnPropertySymbols,
            Up = Object.prototype.hasOwnProperty,
            Hp = Object.prototype.propertyIsEnumerable,
            Gp = (t, e, n) => e in t ? Fp(t, e, {
                enumerable: !0,
                configurable: !0,
                writable: !0,
                value: n
            }) : t[e] = n,
            qp = (t, e) => {
                for (var n in e || (e = {})) Up.call(e, n) && Gp(t, n, e[n]);
                if (Vp)
                    for (var n of Vp(e)) Hp.call(e, n) && Gp(t, n, e[n]);
                return t
            };
        const Wp = Zo("px"),
            Kp = Oo.document.body,
            Yp = class extends Hi {
                constructor(t) {
                    super(t);
                    const e = this.bindTemplate;
                    this.set("top", 0), this.set("left", 0), this.set("position", "arrow_nw"), this.set("isVisible", !1), this.set("withArrow", !0), this.set("class", void 0), this._pinWhenIsVisibleCallback = null, this.content = this.createCollection(), this.setTemplate({
                        tag: "div",
                        attributes: {
                            class: ["ck", "ck-balloon-panel", e.to("position", (t => `ck-balloon-panel_${t}`)), e.if("isVisible", "ck-balloon-panel_visible"), e.if("withArrow", "ck-balloon-panel_with-arrow"), e.to("class")],
                            style: {
                                top: e.to("top", Wp),
                                left: e.to("left", Wp)
                            }
                        },
                        children: this.content
                    })
                }
                show() {
                    this.isVisible = !0
                }
                hide() {
                    this.isVisible = !1
                }
                attachTo(t) {
                    this.show();
                    const e = Yp.defaultPositions,
                        n = Object.assign({}, {
                            element: this.element,
                            positions: [e.southArrowNorth, e.southArrowNorthMiddleWest, e.southArrowNorthMiddleEast, e.southArrowNorthWest, e.southArrowNorthEast, e.northArrowSouth, e.northArrowSouthMiddleWest, e.northArrowSouthMiddleEast, e.northArrowSouthWest, e.northArrowSouthEast, e.viewportStickyNorth],
                            limiter: Kp,
                            fitInViewport: !0
                        }, t),
                        o = Yp._getOptimalPosition(n),
                        i = parseInt(o.left),
                        r = parseInt(o.top),
                        s = o.name,
                        a = o.config || {},
                        {
                            withArrow: c = !0
                        } = a;
                    this.top = r, this.left = i, this.position = s, this.withArrow = c
                }
                pin(t) {
                    this.unpin(), this._pinWhenIsVisibleCallback = () => {
                        this.isVisible ? this._startPinning(t) : this._stopPinning()
                    }, this._startPinning(t), this.listenTo(this, "change:isVisible", this._pinWhenIsVisibleCallback)
                }
                unpin() {
                    this._pinWhenIsVisibleCallback && (this._stopPinning(), this.stopListening(this, "change:isVisible", this._pinWhenIsVisibleCallback), this._pinWhenIsVisibleCallback = null, this.hide())
                }
                _startPinning(t) {
                    this.attachTo(t);
                    const e = Zp(t.target),
                        n = t.limiter ? Zp(t.limiter) : Kp;
                    this.listenTo(Oo.document, "scroll", ((o, i) => {
                        const r = i.target,
                            s = e && r.contains(e),
                            a = n && r.contains(n);
                        !s && !a && e && n || this.attachTo(t)
                    }), {
                        useCapture: !0
                    }), this.listenTo(Oo.window, "resize", (() => {
                        this.attachTo(t)
                    }))
                }
                _stopPinning() {
                    this.stopListening(Oo.document, "scroll"), this.stopListening(Oo.window, "resize")
                }
            };
        let $p = Yp;

        function Zp(t) {
            return xo(t) ? t : jo(t) ? t.commonAncestorContainer : "function" == typeof t ? Zp(t()) : null
        }

        function Qp(t = {}) {
            const {
                sideOffset: e = $p.arrowSideOffset,
                heightOffset: n = $p.arrowHeightOffset,
                stickyVerticalOffset: o = $p.stickyVerticalOffset,
                config: i
            } = t;
            return {
                northWestArrowSouthWest: (t, n) => qp({
                    top: r(t, n),
                    left: t.left - e,
                    name: "arrow_sw"
                }, i && {
                    config: i
                }),
                northWestArrowSouthMiddleWest: (t, n) => qp({
                    top: r(t, n),
                    left: t.left - .25 * n.width - e,
                    name: "arrow_smw"
                }, i && {
                    config: i
                }),
                northWestArrowSouth: (t, e) => qp({
                    top: r(t, e),
                    left: t.left - e.width / 2,
                    name: "arrow_s"
                }, i && {
                    config: i
                }),
                northWestArrowSouthMiddleEast: (t, n) => qp({
                    top: r(t, n),
                    left: t.left - .75 * n.width + e,
                    name: "arrow_sme"
                }, i && {
                    config: i
                }),
                northWestArrowSouthEast: (t, n) => qp({
                    top: r(t, n),
                    left: t.left - n.width + e,
                    name: "arrow_se"
                }, i && {
                    config: i
                }),
                northArrowSouthWest: (t, n) => qp({
                    top: r(t, n),
                    left: t.left + t.width / 2 - e,
                    name: "arrow_sw"
                }, i && {
                    config: i
                }),
                northArrowSouthMiddleWest: (t, n) => qp({
                    top: r(t, n),
                    left: t.left + t.width / 2 - .25 * n.width - e,
                    name: "arrow_smw"
                }, i && {
                    config: i
                }),
                northArrowSouth: (t, e) => qp({
                    top: r(t, e),
                    left: t.left + t.width / 2 - e.width / 2,
                    name: "arrow_s"
                }, i && {
                    config: i
                }),
                northArrowSouthMiddleEast: (t, n) => qp({
                    top: r(t, n),
                    left: t.left + t.width / 2 - .75 * n.width + e,
                    name: "arrow_sme"
                }, i && {
                    config: i
                }),
                northArrowSouthEast: (t, n) => qp({
                    top: r(t, n),
                    left: t.left + t.width / 2 - n.width + e,
                    name: "arrow_se"
                }, i && {
                    config: i
                }),
                northEastArrowSouthWest: (t, n) => qp({
                    top: r(t, n),
                    left: t.right - e,
                    name: "arrow_sw"
                }, i && {
                    config: i
                }),
                northEastArrowSouthMiddleWest: (t, n) => qp({
                    top: r(t, n),
                    left: t.right - .25 * n.width - e,
                    name: "arrow_smw"
                }, i && {
                    config: i
                }),
                northEastArrowSouth: (t, e) => qp({
                    top: r(t, e),
                    left: t.right - e.width / 2,
                    name: "arrow_s"
                }, i && {
                    config: i
                }),
                northEastArrowSouthMiddleEast: (t, n) => qp({
                    top: r(t, n),
                    left: t.right - .75 * n.width + e,
                    name: "arrow_sme"
                }, i && {
                    config: i
                }),
                northEastArrowSouthEast: (t, n) => qp({
                    top: r(t, n),
                    left: t.right - n.width + e,
                    name: "arrow_se"
                }, i && {
                    config: i
                }),
                southWestArrowNorthWest: t => qp({
                    top: s(t),
                    left: t.left - e,
                    name: "arrow_nw"
                }, i && {
                    config: i
                }),
                southWestArrowNorthMiddleWest: (t, n) => qp({
                    top: s(t),
                    left: t.left - .25 * n.width - e,
                    name: "arrow_nmw"
                }, i && {
                    config: i
                }),
                southWestArrowNorth: (t, e) => qp({
                    top: s(t),
                    left: t.left - e.width / 2,
                    name: "arrow_n"
                }, i && {
                    config: i
                }),
                southWestArrowNorthMiddleEast: (t, n) => qp({
                    top: s(t),
                    left: t.left - .75 * n.width + e,
                    name: "arrow_nme"
                }, i && {
                    config: i
                }),
                southWestArrowNorthEast: (t, n) => qp({
                    top: s(t),
                    left: t.left - n.width + e,
                    name: "arrow_ne"
                }, i && {
                    config: i
                }),
                southArrowNorthWest: t => qp({
                    top: s(t),
                    left: t.left + t.width / 2 - e,
                    name: "arrow_nw"
                }, i && {
                    config: i
                }),
                southArrowNorthMiddleWest: (t, n) => qp({
                    top: s(t),
                    left: t.left + t.width / 2 - .25 * n.width - e,
                    name: "arrow_nmw"
                }, i && {
                    config: i
                }),
                southArrowNorth: (t, e) => qp({
                    top: s(t),
                    left: t.left + t.width / 2 - e.width / 2,
                    name: "arrow_n"
                }, i && {
                    config: i
                }),
                southArrowNorthMiddleEast: (t, n) => qp({
                    top: s(t),
                    left: t.left + t.width / 2 - .75 * n.width + e,
                    name: "arrow_nme"
                }, i && {
                    config: i
                }),
                southArrowNorthEast: (t, n) => qp({
                    top: s(t),
                    left: t.left + t.width / 2 - n.width + e,
                    name: "arrow_ne"
                }, i && {
                    config: i
                }),
                southEastArrowNorthWest: t => qp({
                    top: s(t),
                    left: t.right - e,
                    name: "arrow_nw"
                }, i && {
                    config: i
                }),
                southEastArrowNorthMiddleWest: (t, n) => qp({
                    top: s(t),
                    left: t.right - .25 * n.width - e,
                    name: "arrow_nmw"
                }, i && {
                    config: i
                }),
                southEastArrowNorth: (t, e) => qp({
                    top: s(t),
                    left: t.right - e.width / 2,
                    name: "arrow_n"
                }, i && {
                    config: i
                }),
                southEastArrowNorthMiddleEast: (t, n) => qp({
                    top: s(t),
                    left: t.right - .75 * n.width + e,
                    name: "arrow_nme"
                }, i && {
                    config: i
                }),
                southEastArrowNorthEast: (t, n) => qp({
                    top: s(t),
                    left: t.right - n.width + e,
                    name: "arrow_ne"
                }, i && {
                    config: i
                }),
                westArrowEast: (t, e) => qp({
                    top: t.top + t.height / 2 - e.height / 2,
                    left: t.left - e.width - n,
                    name: "arrow_e"
                }, i && {
                    config: i
                }),
                eastArrowWest: (t, e) => qp({
                    top: t.top + t.height / 2 - e.height / 2,
                    left: t.right + n,
                    name: "arrow_w"
                }, i && {
                    config: i
                }),
                viewportStickyNorth: (t, e, n) => t.getIntersection(n) ? {
                    top: n.top + o,
                    left: t.left + t.width / 2 - e.width / 2,
                    name: "arrowless",
                    config: qp({
                        withArrow: !1
                    }, i)
                } : null
            };

            function r(t, e) {
                return t.top - e.height - n
            }

            function s(t) {
                return t.bottom + n
            }
        }
        $p.arrowSideOffset = 25, $p.arrowHeightOffset = 10, $p.stickyVerticalOffset = 20, $p._getOptimalPosition = ni, $p.defaultPositions = Qp();
        var Jp = n(3332),
            Xp = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(Jp.Z, Xp);
        Jp.Z.locals;
        const tm = "ck-tooltip",
            em = class extends(Bo()) {
                constructor(t) {
                    if (super(), this._currentElementWithTooltip = null, this._currentTooltipPosition = null, this._resizeObserver = null, em._editors.add(t), em._instance) return em._instance;
                    em._instance = this, this.tooltipTextView = new Hi(t.locale), this.tooltipTextView.set("text", ""), this.tooltipTextView.setTemplate({
                        tag: "span",
                        attributes: {
                            class: ["ck", "ck-tooltip__text"]
                        },
                        children: [{
                            text: this.tooltipTextView.bindTemplate.to("text")
                        }]
                    }), this.balloonPanelView = new $p(t.locale), this.balloonPanelView.class = tm, this.balloonPanelView.content.add(this.tooltipTextView), this._pinTooltipDebounced = Yc(this._pinTooltip, 600), this.listenTo(Oo.document, "mouseenter", this._onEnterOrFocus.bind(this), {
                        useCapture: !0
                    }), this.listenTo(Oo.document, "mouseleave", this._onLeaveOrBlur.bind(this), {
                        useCapture: !0
                    }), this.listenTo(Oo.document, "focus", this._onEnterOrFocus.bind(this), {
                        useCapture: !0
                    }), this.listenTo(Oo.document, "blur", this._onLeaveOrBlur.bind(this), {
                        useCapture: !0
                    }), this.listenTo(Oo.document, "scroll", this._onScroll.bind(this), {
                        useCapture: !0
                    }), this._watchdogExcluded = !0
                }
                destroy(t) {
                    const e = t.ui.view && t.ui.view.body;
                    em._editors.delete(t), this.stopListening(t.ui), e && e.has(this.balloonPanelView) && e.remove(this.balloonPanelView), em._editors.size || (this._unpinTooltip(), this.balloonPanelView.destroy(), this.stopListening(), em._instance = null)
                }
                static getPositioningFunctions(t) {
                    const e = em.defaultBalloonPositions;
                    return {
                        s: [e.southArrowNorth, e.southArrowNorthEast, e.southArrowNorthWest],
                        n: [e.northArrowSouth],
                        e: [e.eastArrowWest],
                        w: [e.westArrowEast],
                        sw: [e.southArrowNorthEast],
                        se: [e.southArrowNorthWest]
                    } [t]
                }
                _onEnterOrFocus(t, {
                    target: e
                }) {
                    const n = om(e);
                    var o;
                    n && (n !== this._currentElementWithTooltip && (this._unpinTooltip(), this._pinTooltipDebounced(n, {
                        text: (o = n).dataset.ckeTooltipText,
                        position: o.dataset.ckeTooltipPosition || "s",
                        cssClass: o.dataset.ckeTooltipClass || ""
                    })))
                }
                _onLeaveOrBlur(t, {
                    target: e,
                    relatedTarget: n
                }) {
                    if ("mouseleave" === t.name) {
                        if (!xo(e)) return;
                        if (this._currentElementWithTooltip && e !== this._currentElementWithTooltip) return;
                        const t = om(e),
                            o = om(n);
                        t && t !== o && this._unpinTooltip()
                    } else {
                        if (this._currentElementWithTooltip && e !== this._currentElementWithTooltip) return;
                        this._unpinTooltip()
                    }
                }
                _onScroll(t, {
                    target: e
                }) {
                    this._currentElementWithTooltip && (e.contains(this.balloonPanelView.element) && e.contains(this._currentElementWithTooltip) || this._unpinTooltip())
                }
                _pinTooltip(t, {
                    text: e,
                    position: n,
                    cssClass: o
                }) {
                    const i = Ii(em._editors.values()).ui.view.body;
                    i.has(this.balloonPanelView) || i.add(this.balloonPanelView), this.tooltipTextView.text = e, this.balloonPanelView.pin({
                        target: t,
                        positions: em.getPositioningFunctions(n)
                    }), this._resizeObserver = new Yo(t, (() => {
                        ti(t) || this._unpinTooltip()
                    })), this.balloonPanelView.class = [tm, o].filter((t => t)).join(" ");
                    for (const t of em._editors) this.listenTo(t.ui, "update", this._updateTooltipPosition.bind(this), {
                        priority: "low"
                    });
                    this._currentElementWithTooltip = t, this._currentTooltipPosition = n
                }
                _unpinTooltip() {
                    this._pinTooltipDebounced.cancel(), this.balloonPanelView.unpin();
                    for (const t of em._editors) this.stopListening(t.ui, "update");
                    this._currentElementWithTooltip = null, this._currentTooltipPosition = null, this._resizeObserver && this._resizeObserver.destroy()
                }
                _updateTooltipPosition() {
                    ti(this._currentElementWithTooltip) ? this.balloonPanelView.pin({
                        target: this._currentElementWithTooltip,
                        positions: em.getPositioningFunctions(this._currentTooltipPosition)
                    }) : this._unpinTooltip()
                }
            };
        let nm = em;

        function om(t) {
            return xo(t) ? t.closest("[data-cke-tooltip-text]:not([data-cke-tooltip-disabled])") : null
        }
        nm.defaultBalloonPositions = Qp({
            heightOffset: 5,
            sideOffset: 13
        }), nm._editors = new Set, nm._instance = null;
        const im = function (t, e, n) {
            var o = !0,
                i = !0;
            if ("function" != typeof t) throw new TypeError("Expected a function");
            return F(n) && (o = "leading" in n ? !!n.leading : o, i = "trailing" in n ? !!n.trailing : i), Yc(t, e, {
                leading: o,
                maxWait: e,
                trailing: i
            })
        };
        var rm = Object.defineProperty,
            sm = Object.getOwnPropertySymbols,
            am = Object.prototype.hasOwnProperty,
            cm = Object.prototype.propertyIsEnumerable,
            lm = (t, e, n) => e in t ? rm(t, e, {
                enumerable: !0,
                configurable: !0,
                writable: !0,
                value: n
            }) : t[e] = n,
            dm = (t, e) => {
                for (var n in e || (e = {})) am.call(e, n) && lm(t, n, e[n]);
                if (sm)
                    for (var n of sm(e)) cm.call(e, n) && lm(t, n, e[n]);
                return t
            };
        const hm = 50,
            um = 350,
            gm = "Powered by",
            pm = {
                top: -99999,
                left: -99999,
                name: "invalid",
                config: {
                    withArrow: !1
                }
            };
        class mm extends(Bo()) {
            constructor(t) {
                super(), this.editor = t, this._balloonView = null, this._lastFocusedEditableElement = null, this._showBalloonThrottled = im(this._showBalloon.bind(this), 50, {
                    leading: !0
                }), t.on("ready", this._handleEditorReady.bind(this))
            }
            destroy() {
                const t = this._balloonView;
                t && (t.unpin(), this._balloonView = null), this._showBalloonThrottled.cancel(), this.stopListening()
            }
            _handleEditorReady() {
                const t = this.editor;
                (!!t.config.get("ui.poweredBy.forceVisible") || "VALID" !== function (t) {
                    function e(t) {
                        return t.length >= 40 && t.length <= 255 ? "VALID" : "INVALID"
                    }
                    if (!t) return "INVALID";
                    let n = "";
                    try {
                        n = atob(t)
                    } catch (t) {
                        return "INVALID"
                    }
                    const o = n.split("-"),
                        i = o[0],
                        r = o[1];
                    if (!r) return e(t);
                    try {
                        atob(r)
                    } catch (n) {
                        try {
                            if (atob(i), !atob(i).length) return e(t)
                        } catch (n) {
                            return e(t)
                        }
                    }
                    if (i.length < 40 || i.length > 255) return "INVALID";
                    let s = "";
                    try {
                        atob(i), s = atob(r)
                    } catch (t) {
                        return "INVALID"
                    }
                    if (8 !== s.length) return "INVALID";
                    const a = Number(s.substring(0, 4)),
                        c = Number(s.substring(4, 6)) - 1,
                        l = Number(s.substring(6, 8)),
                        d = new Date(a, c, l);
                    return d < E || isNaN(Number(d)) ? "INVALID" : "VALID"
                }(t.config.get("licenseKey"))) && t.ui.view && (t.ui.focusTracker.on("change:isFocused", ((t, e, n) => {
                    this._updateLastFocusedEditableElement(), n ? this._showBalloon() : this._hideBalloon()
                })), t.ui.focusTracker.on("change:focusedElement", ((t, e, n) => {
                    this._updateLastFocusedEditableElement(), n && this._showBalloon()
                })), t.ui.on("update", (() => {
                    this._showBalloonThrottled()
                })))
            }
            _createBalloonView() {
                const t = this.editor,
                    e = this._balloonView = new $p,
                    n = bm(t),
                    o = new fm(t.locale, n.label);
                e.content.add(o), e.set({
                    class: "ck-powered-by-balloon"
                }), t.ui.view.body.add(e), t.ui.focusTracker.add(e.element), this._balloonView = e
            }
            _showBalloon() {
                if (!this._lastFocusedEditableElement) return;
                const t = function (t, e) {
                    const n = bm(t),
                        o = "right" === n.side ? function (t, e) {
                            return km(t, e, ((t, n) => t.left + t.width - n.width - e.horizontalOffset))
                        }(e, n) : function (t, e) {
                            return km(t, e, (t => t.left + e.horizontalOffset))
                        }(e, n);
                    return {
                        target: e,
                        positions: [o]
                    }
                }(this.editor, this._lastFocusedEditableElement);
                t && (this._balloonView || this._createBalloonView(), this._balloonView.pin(t))
            }
            _hideBalloon() {
                this._balloonView && this._balloonView.unpin()
            }
            _updateLastFocusedEditableElement() {
                const t = this.editor,
                    e = t.ui.focusTracker.isFocused,
                    n = t.ui.focusTracker.focusedElement;
                if (!e || !n) return void(this._lastFocusedEditableElement = null);
                const o = Array.from(t.ui.getEditableElementsNames()).map((e => t.ui.getEditableElement(e)));
                o.includes(n) ? this._lastFocusedEditableElement = n : this._lastFocusedEditableElement = o[0]
            }
        }
        class fm extends Hi {
            constructor(t, e) {
                super(t);
                const n = new mr,
                    o = this.bindTemplate;
                n.set({
                    content: '<svg xmlns="http://www.w3.org/2000/svg" width="53" height="10" viewBox="0 0 53 10"><path fill="#1C2331" d="M31.724 1.492a15.139 15.139 0 0 0 .045 1.16 2.434 2.434 0 0 0-.687-.34 3.68 3.68 0 0 0-1.103-.166 2.332 2.332 0 0 0-1.14.255 1.549 1.549 0 0 0-.686.87c-.15.41-.225.98-.225 1.712 0 .939.148 1.659.444 2.161.297.503.792.754 1.487.754.452.015.9-.094 1.294-.316.296-.174.557-.4.771-.669l.14.852h1.282V.007h-1.623v1.485ZM31 6.496a1.77 1.77 0 0 1-.494.061.964.964 0 0 1-.521-.127.758.758 0 0 1-.296-.466 3.984 3.984 0 0 1-.093-.992 4.208 4.208 0 0 1 .098-1.052.753.753 0 0 1 .307-.477 1.08 1.08 0 0 1 .55-.122c.233-.004.466.026.69.089l.483.144v2.553c-.11.076-.213.143-.307.2a1.73 1.73 0 0 1-.417.189ZM35.68 0l-.702.004c-.322.002-.482.168-.48.497l.004.581c.002.33.164.493.486.49l.702-.004c.322-.002.481-.167.48-.496L36.165.49c-.002-.33-.164-.493-.486-.491ZM36.145 2.313l-1.612.01.034 5.482 1.613-.01-.035-5.482ZM39.623.79 37.989.8 38 2.306l-.946.056.006 1.009.949-.006.024 2.983c.003.476.143.844.419 1.106.275.26.658.39 1.148.387.132 0 .293-.01.483-.03.19-.02.38-.046.57-.08.163-.028.324-.068.482-.119l-.183-1.095-.702.004a.664.664 0 0 1-.456-.123.553.553 0 0 1-.14-.422l-.016-2.621 1.513-.01-.006-1.064-1.514.01-.01-1.503ZM46.226 2.388c-.41-.184-.956-.274-1.636-.27-.673.004-1.215.101-1.627.29-.402.179-.72.505-.888.91-.18.419-.268.979-.264 1.68.004.688.1 1.24.285 1.655.172.404.495.724.9.894.414.18.957.268 1.63.264.68-.004 1.224-.099 1.632-.284.4-.176.714-.501.878-.905.176-.418.263-.971.258-1.658-.004-.702-.097-1.261-.28-1.677a1.696 1.696 0 0 0-.888-.9Zm-.613 3.607a.77.77 0 0 1-.337.501 1.649 1.649 0 0 1-1.317.009.776.776 0 0 1-.343-.497 4.066 4.066 0 0 1-.105-1.02 4.136 4.136 0 0 1 .092-1.03.786.786 0 0 1 .337-.507 1.59 1.59 0 0 1 1.316-.008.79.79 0 0 1 .344.502c.078.337.113.683.105 1.03.012.343-.019.685-.092 1.02ZM52.114 2.07a2.67 2.67 0 0 0-1.128.278c-.39.191-.752.437-1.072.73l-.157-.846-1.273.008.036 5.572 1.623-.01-.024-3.78c.35-.124.646-.22.887-.286.26-.075.53-.114.8-.118l.45-.003.144-1.546-.286.001ZM22.083 7.426l-1.576-2.532a2.137 2.137 0 0 0-.172-.253 1.95 1.95 0 0 0-.304-.29.138.138 0 0 1 .042-.04 1.7 1.7 0 0 0 .328-.374l1.75-2.71c.01-.015.025-.028.024-.048-.01-.01-.021-.007-.031-.007L20.49 1.17a.078.078 0 0 0-.075.045l-.868 1.384c-.23.366-.46.732-.688 1.099a.108.108 0 0 1-.112.06c-.098-.005-.196-.001-.294-.002-.018 0-.038.006-.055-.007.002-.02.002-.039.005-.058a4.6 4.6 0 0 0 .046-.701V1.203c0-.02-.009-.032-.03-.03h-.033L16.93 1.17c-.084 0-.073-.01-.073.076v6.491c-.001.018.006.028.025.027h1.494c.083 0 .072.007.072-.071v-2.19c0-.055-.003-.11-.004-.166a3.366 3.366 0 0 0-.05-.417h.06c.104 0 .209.002.313-.002a.082.082 0 0 1 .084.05c.535.913 1.07 1.824 1.607 2.736a.104.104 0 0 0 .103.062c.554-.003 1.107-.002 1.66-.002l.069-.003-.019-.032-.188-.304ZM27.112 6.555c-.005-.08-.004-.08-.082-.08h-2.414c-.053 0-.106-.003-.159-.011a.279.279 0 0 1-.246-.209.558.558 0 0 1-.022-.15c0-.382 0-.762-.002-1.143 0-.032.007-.049.042-.044h2.504c.029.003.037-.012.034-.038V3.814c0-.089.013-.078-.076-.078h-2.44c-.07 0-.062.003-.062-.06v-.837c0-.047.004-.093.013-.14a.283.283 0 0 1 .241-.246.717.717 0 0 1 .146-.011h2.484c.024.002.035-.009.036-.033l.003-.038.03-.496c.01-.183.024-.365.034-.548.005-.085.003-.087-.082-.094-.218-.018-.437-.038-.655-.05a17.845 17.845 0 0 0-.657-.026 72.994 72.994 0 0 0-1.756-.016 1.7 1.7 0 0 0-.471.064 1.286 1.286 0 0 0-.817.655c-.099.196-.149.413-.145.633v3.875c0 .072.003.144.011.216a1.27 1.27 0 0 0 .711 1.029c.228.113.48.167.734.158.757-.005 1.515.002 2.272-.042.274-.016.548-.034.82-.053.03-.002.043-.008.04-.041-.008-.104-.012-.208-.019-.312a69.964 69.964 0 0 1-.05-.768ZM16.14 7.415l-.127-1.075c-.004-.03-.014-.04-.044-.037a13.125 13.125 0 0 1-.998.073c-.336.01-.672.02-1.008.016-.116-.001-.233-.014-.347-.039a.746.746 0 0 1-.45-.262c-.075-.1-.132-.211-.167-.33a3.324 3.324 0 0 1-.126-.773 9.113 9.113 0 0 1-.015-.749c0-.285.022-.57.065-.852.023-.158.066-.312.127-.46a.728.728 0 0 1 .518-.443 1.64 1.64 0 0 1 .397-.048c.628-.001 1.255.003 1.882.05.022.001.033-.006.036-.026l.003-.031.06-.55c.019-.177.036-.355.057-.532.004-.034-.005-.046-.04-.056a5.595 5.595 0 0 0-1.213-.21 10.783 10.783 0 0 0-.708-.02c-.24-.003-.48.01-.719.041a3.477 3.477 0 0 0-.625.14 1.912 1.912 0 0 0-.807.497c-.185.2-.33.433-.424.688a4.311 4.311 0 0 0-.24 1.096c-.031.286-.045.572-.042.86-.006.43.024.86.091 1.286.04.25.104.497.193.734.098.279.26.53.473.734.214.205.473.358.756.446.344.11.702.17 1.063.177a8.505 8.505 0 0 0 1.578-.083 6.11 6.11 0 0 0 .766-.18c.03-.008.047-.023.037-.057a.157.157 0 0 1-.003-.025Z"/><path fill="#AFE229" d="M6.016 6.69a1.592 1.592 0 0 0-.614.21c-.23.132-.422.32-.56.546-.044.072-.287.539-.287.539l-.836 1.528.009.006c.038.025.08.046.123.063.127.046.26.07.395.073.505.023 1.011-.007 1.517-.003.29.009.58.002.869-.022a.886.886 0 0 0 .395-.116.962.962 0 0 0 .312-.286c.056-.083.114-.163.164-.249.24-.408.48-.816.718-1.226.075-.128.148-.257.222-.386l.112-.192a1.07 1.07 0 0 0 .153-.518l-1.304.023s-1.258-.005-1.388.01Z"/><path fill="#771BFF" d="m2.848 9.044.76-1.39.184-.352c-.124-.067-.245-.14-.367-.21-.346-.204-.706-.384-1.045-.6a.984.984 0 0 1-.244-.207c-.108-.134-.136-.294-.144-.46-.021-.409-.002-.818-.009-1.227-.003-.195 0-.39.003-.585.004-.322.153-.553.427-.713l.833-.488c.22-.13.44-.257.662-.385.05-.029.105-.052.158-.077.272-.128.519-.047.76.085l.044.028c.123.06.242.125.358.196.318.178.635.357.952.537.095.056.187.117.275.184.194.144.254.35.266.578.016.284.007.569.006.853-.001.28.004.558 0 .838.592-.003 1.259 0 1.259 0l.723-.013c-.003-.292-.007-.584-.007-.876 0-.524.015-1.048-.016-1.571-.024-.42-.135-.8-.492-1.067a5.02 5.02 0 0 0-.506-.339A400.52 400.52 0 0 0 5.94.787C5.722.664 5.513.524 5.282.423 5.255.406 5.228.388 5.2.373 4.758.126 4.305-.026 3.807.21c-.097.046-.197.087-.29.14A699.896 699.896 0 0 0 .783 1.948c-.501.294-.773.717-.778 1.31-.004.36-.009.718-.001 1.077.016.754-.017 1.508.024 2.261.016.304.07.6.269.848.127.15.279.28.448.382.622.4 1.283.734 1.92 1.11l.183.109Z"/></svg>\n',
                    isColorInherited: !1
                }), n.extendTemplate({
                    attributes: {
                        style: {
                            width: "53px",
                            height: "10px"
                        }
                    }
                }), this.setTemplate({
                    tag: "div",
                    attributes: {
                        class: ["ck", "ck-powered-by"],
                        "aria-hidden": !0
                    },
                    children: [{
                        tag: "a",
                        attributes: {
                            href: "https://ckeditor.com/?utm_source=ckeditor&utm_medium=referral&utm_campaign=701Dn000000hVgmIAE_powered_by_ckeditor_logo",
                            target: "_blank",
                            tabindex: "-1"
                        },
                        children: [...e ? [{
                            tag: "span",
                            attributes: {
                                class: ["ck", "ck-powered-by__label"]
                            },
                            children: [e]
                        }] : [], n],
                        on: {
                            dragstart: o.to((t => t.preventDefault()))
                        }
                    }]
                })
            }
        }

        function km(t, e, n) {
            return (o, i) => {
                const r = o.getVisible();
                if (!r) return pm;
                if (o.width < um || o.height < hm) return pm;
                let s;
                s = "inside" === e.position ? o.bottom - i.height : o.bottom - i.height / 2, s -= e.verticalOffset;
                const a = n(o, i);
                if ("inside" === e.position) {
                    const t = i.clone().moveTo(a, s);
                    if (t.getIntersectionArea(r) < t.getArea()) return pm
                } else {
                    const n = Lo(t);
                    if (n) {
                        const t = new Uo(n),
                            s = r.bottom + i.height / 2 > t.bottom,
                            a = "left" === e.side ? o.left < t.left : o.right > t.right;
                        if (s || a) return pm
                    }
                }
                return {
                    top: s,
                    left: a,
                    name: `position_${e.position}-side_${e.side}`,
                    config: {
                        withArrow: !1
                    }
                }
            }
        }

        function bm(t) {
            const e = t.config.get("ui.poweredBy"),
                n = e && e.position || "border";
            return dm({
                position: n,
                label: gm,
                verticalOffset: "inside" === n ? 5 : 0,
                horizontalOffset: 5,
                side: "ltr" === t.locale.contentLanguageDirection ? "right" : "left"
            }, e)
        }
        var wm = Object.defineProperty,
            Am = Object.getOwnPropertySymbols,
            Cm = Object.prototype.hasOwnProperty,
            _m = Object.prototype.propertyIsEnumerable,
            vm = (t, e, n) => e in t ? wm(t, e, {
                enumerable: !0,
                configurable: !0,
                writable: !0,
                value: n
            }) : t[e] = n;
        class ym extends(K()) {
            constructor(t) {
                super(), this.isReady = !1, this._editableElementsMap = new Map, this._focusableToolbarDefinitions = [];
                const e = t.editing.view;
                this.editor = t, this.componentFactory = new Op(t), this.focusTracker = new Mi, this.tooltipManager = new nm(t), this.poweredBy = new mm(t), this.set("viewportOffset", this._readViewportOffsetFromConfig()), this.once("ready", (() => {
                    this.isReady = !0
                })), this.listenTo(e.document, "layoutChanged", this.update.bind(this)), this.listenTo(e, "scrollToTheSelection", this._handleScrollToTheSelection.bind(this)), this._initFocusTracking()
            }
            get element() {
                return null
            }
            update() {
                this.fire("update")
            }
            destroy() {
                this.stopListening(), this.focusTracker.destroy(), this.tooltipManager.destroy(this.editor), this.poweredBy.destroy();
                for (const t of this._editableElementsMap.values()) t.ckeditorInstance = null, this.editor.keystrokes.stopListening(t);
                this._editableElementsMap = new Map, this._focusableToolbarDefinitions = []
            }
            setEditableElement(t, e) {
                this._editableElementsMap.set(t, e), e.ckeditorInstance || (e.ckeditorInstance = this.editor), this.focusTracker.add(e);
                const n = () => {
                    this.editor.editing.view.getDomRoot(t) || this.editor.keystrokes.listenTo(e)
                };
                this.isReady ? n() : this.once("ready", n)
            }
            removeEditableElement(t) {
                const e = this._editableElementsMap.get(t);
                e && (this._editableElementsMap.delete(t), this.editor.keystrokes.stopListening(e), this.focusTracker.remove(e), e.ckeditorInstance = null)
            }
            getEditableElement(t = "main") {
                return this._editableElementsMap.get(t)
            }
            getEditableElementsNames() {
                return this._editableElementsMap.keys()
            }
            addToolbar(t, e = {}) {
                t.isRendered ? (this.focusTracker.add(t.element), this.editor.keystrokes.listenTo(t.element)) : t.once("render", (() => {
                    this.focusTracker.add(t.element), this.editor.keystrokes.listenTo(t.element)
                })), this._focusableToolbarDefinitions.push({
                    toolbarView: t,
                    options: e
                })
            }
            get _editableElements() {
                return console.warn("editor-ui-deprecated-editable-elements: The EditorUI#_editableElements property has been deprecated and will be removed in the near future.", {
                    editorUI: this
                }), this._editableElementsMap
            }
            _readViewportOffsetFromConfig() {
                const t = this.editor,
                    e = t.config.get("ui.viewportOffset");
                if (e) return e;
                const n = t.config.get("toolbar.viewportTopOffset");
                return n ? (console.warn("editor-ui-deprecated-viewport-offset-config: The `toolbar.vieportTopOffset` configuration option is deprecated. It will be removed from future CKEditor versions. Use `ui.viewportOffset.top` instead."), {
                    top: n
                }) : {
                    top: 0
                }
            }
            _initFocusTracking() {
                const t = this.editor,
                    e = t.editing.view;
                let n, o;
                t.keystrokes.set("Alt+F10", ((t, i) => {
                    const r = this.focusTracker.focusedElement;
                    Array.from(this._editableElementsMap.values()).includes(r) && !Array.from(e.domRoots.values()).includes(r) && (n = r);
                    const s = this._getCurrentFocusedToolbarDefinition();
                    s && o || (o = this._getFocusableCandidateToolbarDefinitions());
                    for (let t = 0; t < o.length; t++) {
                        const t = o.shift();
                        if (o.push(t), t !== s && this._focusFocusableCandidateToolbar(t)) {
                            s && s.options.afterBlur && s.options.afterBlur();
                            break
                        }
                    }
                    i()
                })), t.keystrokes.set("Esc", ((e, o) => {
                    const i = this._getCurrentFocusedToolbarDefinition();
                    i && (n ? (n.focus(), n = null) : t.editing.view.focus(), i.options.afterBlur && i.options.afterBlur(), o())
                }))
            }
            _getFocusableCandidateToolbarDefinitions() {
                const t = [];
                for (const e of this._focusableToolbarDefinitions) {
                    const {
                        toolbarView: n,
                        options: o
                    } = e;
                    (ti(n.element) || o.beforeFocus) && t.push(e)
                }
                return t.sort(((t, e) => xm(t) - xm(e))), t
            }
            _getCurrentFocusedToolbarDefinition() {
                for (const t of this._focusableToolbarDefinitions)
                    if (t.toolbarView.element && t.toolbarView.element.contains(this.focusTracker.focusedElement)) return t;
                return null
            }
            _focusFocusableCandidateToolbar(t) {
                const {
                    toolbarView: e,
                    options: {
                        beforeFocus: n
                    }
                } = t;
                return n && n(), !!ti(e.element) && (e.focus(), !0)
            }
            _handleScrollToTheSelection(t, e) {
                const n = ((t, e) => {
                    for (var n in e || (e = {})) Cm.call(e, n) && vm(t, n, e[n]);
                    if (Am)
                        for (var n of Am(e)) _m.call(e, n) && vm(t, n, e[n]);
                    return t
                })({
                    top: 0,
                    bottom: 0,
                    left: 0,
                    right: 0
                }, this.viewportOffset);
                e.viewportOffset.top += n.top, e.viewportOffset.bottom += n.bottom, e.viewportOffset.left += n.left, e.viewportOffset.right += n.right
            }
        }

        function xm(t) {
            const {
                toolbarView: e,
                options: n
            } = t;
            let o = 10;
            return ti(e.element) && o--, n.isContextual && o--, o
        }
        var Em = n(9688),
            Dm = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(Em.Z, Dm);
        Em.Z.locals;
        class Sm extends Hi {
            constructor(t) {
                super(t), this.body = new hr(t)
            }
            render() {
                super.render(), this.body.attachToDom()
            }
            destroy() {
                return this.body.detachFromDom(), super.destroy()
            }
        }
        class Im extends Sm {
            constructor(t) {
                super(t), this.top = this.createCollection(), this.main = this.createCollection(), this._voiceLabelView = this._createVoiceLabel(), this.setTemplate({
                    tag: "div",
                    attributes: {
                        class: ["ck", "ck-reset", "ck-editor", "ck-rounded-corners"],
                        role: "application",
                        dir: t.uiLanguageDirection,
                        lang: t.uiLanguage,
                        "aria-labelledby": this._voiceLabelView.id
                    },
                    children: [this._voiceLabelView, {
                        tag: "div",
                        attributes: {
                            class: ["ck", "ck-editor__top", "ck-reset_all"],
                            role: "presentation"
                        },
                        children: this.top
                    }, {
                        tag: "div",
                        attributes: {
                            class: ["ck", "ck-editor__main"],
                            role: "presentation"
                        },
                        children: this.main
                    }]
                })
            }
            _createVoiceLabel() {
                const t = this.t,
                    e = new Er;
                return e.text = t("Rich Text Editor"), e.extendTemplate({
                    attributes: {
                        class: "ck-voice-label"
                    }
                }), e
            }
        }
        class Mm extends Hi {
            constructor(t, e, n) {
                super(t), this.name = null, this.setTemplate({
                    tag: "div",
                    attributes: {
                        class: ["ck", "ck-content", "ck-editor__editable", "ck-rounded-corners"],
                        lang: t.contentLanguage,
                        dir: t.contentLanguageDirection
                    }
                }), this.set("isFocused", !1), this._editableElement = n, this._hasExternalElement = !!this._editableElement, this._editingView = e
            }
            render() {
                super.render(), this._hasExternalElement ? this.template.apply(this.element = this._editableElement) : this._editableElement = this.element, this.on("change:isFocused", (() => this._updateIsFocusedClasses())), this._updateIsFocusedClasses()
            }
            destroy() {
                this._hasExternalElement && this.template.revert(this._editableElement), super.destroy()
            }
            get hasExternalElement() {
                return this._hasExternalElement
            }
            _updateIsFocusedClasses() {
                const t = this._editingView;

                function e(e) {
                    t.change((n => {
                        const o = t.document.getRoot(e.name);
                        n.addClass(e.isFocused ? "ck-focused" : "ck-blurred", o), n.removeClass(e.isFocused ? "ck-blurred" : "ck-focused", o)
                    }))
                }
                t.isRenderingInProgress ? function n(o) {
                    t.once("change:isRenderingInProgress", ((t, i, r) => {
                        r ? n(o) : e(o)
                    }))
                }(this) : e(this)
            }
        }
        class Tm extends Mm {
            constructor(t, e, n, o = {}) {
                super(t, e, n);
                const i = t.t;
                this.extendTemplate({
                    attributes: {
                        role: "textbox",
                        class: "ck-editor__editable_inline"
                    }
                }), this._generateLabel = o.label || (() => i("Editor editing area: %0", this.name))
            }
            render() {
                super.render();
                const t = this._editingView;
                t.change((e => {
                    const n = t.document.getRoot(this.name);
                    e.setAttribute("aria-label", this._generateLabel(this), n)
                }))
            }
        }
        var Bm = n(8847),
            Nm = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(Bm.Z, Nm);
        Bm.Z.locals;
        class Pm extends Xr {
            static get pluginName() {
                return "Notification"
            }
            init() {
                this.on("show:warning", ((t, e) => {
                    window.alert(e.message)
                }), {
                    priority: "lowest"
                })
            }
            showSuccess(t, e = {}) {
                this._showNotification({
                    message: t,
                    type: "success",
                    namespace: e.namespace,
                    title: e.title
                })
            }
            showInfo(t, e = {}) {
                this._showNotification({
                    message: t,
                    type: "info",
                    namespace: e.namespace,
                    title: e.title
                })
            }
            showWarning(t, e = {}) {
                this._showNotification({
                    message: t,
                    type: "warning",
                    namespace: e.namespace,
                    title: e.title
                })
            }
            _showNotification(t) {
                const e = t.namespace ? `show:${t.type}:${t.namespace}` : `show:${t.type}`;
                this.fire(e, {
                    message: t.message,
                    type: t.type,
                    title: t.title || ""
                })
            }
        }
        class zm extends(K()) {
            constructor(t, e) {
                super(), e && Bc(this, e), t && this.set(t)
            }
        }
        var Om = n(4650),
            Lm = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(Om.Z, Lm);
        Om.Z.locals;
        var jm = n(7676),
            Rm = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(jm.Z, Rm);
        jm.Z.locals;
        const Fm = Zo("px");
        class Vm extends Wr {
            constructor(t) {
                super(t), this._viewToStack = new Map, this._idToStack = new Map, this._view = null, this._rotatorView = null, this._fakePanelsView = null, this.positionLimiter = () => {
                    const t = this.editor.editing.view,
                        e = t.document.selection.editableElement;
                    return e ? t.domConverter.mapViewToDom(e.root) : null
                }, this.set("visibleView", null), this.set("_numberOfStacks", 0), this.set("_singleViewMode", !1)
            }
            static get pluginName() {
                return "ContextualBalloon"
            }
            destroy() {
                super.destroy(), this._view && this._view.destroy(), this._rotatorView && this._rotatorView.destroy(), this._fakePanelsView && this._fakePanelsView.destroy()
            }
            get view() {
                return this._view || this._createPanelView(), this._view
            }
            hasView(t) {
                return Array.from(this._viewToStack.keys()).includes(t)
            }
            add(t) {
                if (this._view || this._createPanelView(), this.hasView(t.view)) throw new A("contextualballoon-add-view-exist", [this, t]);
                const e = t.stackId || "main";
                if (!this._idToStack.has(e)) return this._idToStack.set(e, new Map([
                    [t.view, t]
                ])), this._viewToStack.set(t.view, this._idToStack.get(e)), this._numberOfStacks = this._idToStack.size, void(this._visibleStack && !t.singleViewMode || this.showStack(e));
                const n = this._idToStack.get(e);
                t.singleViewMode && this.showStack(e), n.set(t.view, t), this._viewToStack.set(t.view, n), n === this._visibleStack && this._showView(t)
            }
            remove(t) {
                if (!this.hasView(t)) throw new A("contextualballoon-remove-view-not-exist", [this, t]);
                const e = this._viewToStack.get(t);
                this._singleViewMode && this.visibleView === t && (this._singleViewMode = !1), this.visibleView === t && (1 === e.size ? this._idToStack.size > 1 ? this._showNextStack() : (this.view.hide(), this.visibleView = null, this._rotatorView.hideView()) : this._showView(Array.from(e.values())[e.size - 2])), 1 === e.size ? (this._idToStack.delete(this._getStackId(e)), this._numberOfStacks = this._idToStack.size) : e.delete(t), this._viewToStack.delete(t)
            }
            updatePosition(t) {
                t && (this._visibleStack.get(this.visibleView).position = t), this.view.pin(this._getBalloonPosition()), this._fakePanelsView.updatePosition()
            }
            showStack(t) {
                this.visibleStack = t;
                const e = this._idToStack.get(t);
                if (!e) throw new A("contextualballoon-showstack-stack-not-exist", this);
                this._visibleStack !== e && this._showView(Array.from(e.values()).pop())
            }
            _createPanelView() {
                this._view = new $p(this.editor.locale), this.editor.ui.view.body.add(this._view), this.editor.ui.focusTracker.add(this._view.element), this._rotatorView = this._createRotatorView(), this._fakePanelsView = this._createFakePanelsView()
            }
            get _visibleStack() {
                return this._viewToStack.get(this.visibleView)
            }
            _getStackId(t) {
                return Array.from(this._idToStack.entries()).find((e => e[1] === t))[0]
            }
            _showNextStack() {
                const t = Array.from(this._idToStack.values());
                let e = t.indexOf(this._visibleStack) + 1;
                t[e] || (e = 0), this.showStack(this._getStackId(t[e]))
            }
            _showPrevStack() {
                const t = Array.from(this._idToStack.values());
                let e = t.indexOf(this._visibleStack) - 1;
                t[e] || (e = t.length - 1), this.showStack(this._getStackId(t[e]))
            }
            _createRotatorView() {
                const t = new Um(this.editor.locale),
                    e = this.editor.locale.t;
                return this.view.content.add(t), t.bind("isNavigationVisible").to(this, "_numberOfStacks", this, "_singleViewMode", ((t, e) => !e && t > 1)), t.on("change:isNavigationVisible", (() => this.updatePosition()), {
                    priority: "low"
                }), t.bind("counter").to(this, "visibleView", this, "_numberOfStacks", ((t, n) => {
                    if (n < 2) return "";
                    const o = Array.from(this._idToStack.values()).indexOf(this._visibleStack) + 1;
                    return e("%0 of %1", [o, n])
                })), t.buttonNextView.on("execute", (() => {
                    t.focusTracker.isFocused && this.editor.editing.view.focus(), this._showNextStack()
                })), t.buttonPrevView.on("execute", (() => {
                    t.focusTracker.isFocused && this.editor.editing.view.focus(), this._showPrevStack()
                })), t
            }
            _createFakePanelsView() {
                const t = new Hm(this.editor.locale, this.view);
                return t.bind("numberOfPanels").to(this, "_numberOfStacks", this, "_singleViewMode", ((t, e) => !e && t >= 2 ? Math.min(t - 1, 2) : 0)), t.listenTo(this.view, "change:top", (() => t.updatePosition())), t.listenTo(this.view, "change:left", (() => t.updatePosition())), this.editor.ui.view.body.add(t), t
            }
            _showView({
                view: t,
                balloonClassName: e = "",
                withArrow: n = !0,
                singleViewMode: o = !1
            }) {
                this.view.class = e, this.view.withArrow = n, this._rotatorView.showView(t), this.visibleView = t, this.view.pin(this._getBalloonPosition()), this._fakePanelsView.updatePosition(), o && (this._singleViewMode = !0)
            }
            _getBalloonPosition() {
                let t = Array.from(this._visibleStack.values()).pop().position;
                return t && (t.limiter || (t = Object.assign({}, t, {
                    limiter: this.positionLimiter
                })), t = Object.assign({}, t, {
                    viewportOffsetConfig: this.editor.ui.viewportOffset
                })), t
            }
        }
        class Um extends Hi {
            constructor(t) {
                super(t);
                const e = t.t,
                    n = this.bindTemplate;
                this.set("isNavigationVisible", !0), this.focusTracker = new Mi, this.buttonPrevView = this._createButtonView(e("Previous"), '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M11.463 5.187a.888.888 0 1 1 1.254 1.255L9.16 10l3.557 3.557a.888.888 0 1 1-1.254 1.255L7.26 10.61a.888.888 0 0 1 .16-1.382l4.043-4.042z"/></svg>'), this.buttonNextView = this._createButtonView(e("Next"), '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M8.537 14.813a.888.888 0 1 1-1.254-1.255L10.84 10 7.283 6.442a.888.888 0 1 1 1.254-1.255L12.74 9.39a.888.888 0 0 1-.16 1.382l-4.043 4.042z"/></svg>'), this.content = this.createCollection(), this.setTemplate({
                    tag: "div",
                    attributes: {
                        class: ["ck", "ck-balloon-rotator"],
                        "z-index": "-1"
                    },
                    children: [{
                        tag: "div",
                        attributes: {
                            class: ["ck-balloon-rotator__navigation", n.to("isNavigationVisible", (t => t ? "" : "ck-hidden"))]
                        },
                        children: [this.buttonPrevView, {
                            tag: "span",
                            attributes: {
                                class: ["ck-balloon-rotator__counter"]
                            },
                            children: [{
                                text: n.to("counter")
                            }]
                        }, this.buttonNextView]
                    }, {
                        tag: "div",
                        attributes: {
                            class: "ck-balloon-rotator__content"
                        },
                        children: this.content
                    }]
                })
            }
            render() {
                super.render(), this.focusTracker.add(this.element)
            }
            destroy() {
                super.destroy(), this.focusTracker.destroy()
            }
            showView(t) {
                this.hideView(), this.content.add(t)
            }
            hideView() {
                this.content.clear()
            }
            _createButtonView(t, e) {
                const n = new br(this.locale);
                return n.set({
                    label: t,
                    icon: e,
                    tooltip: !0
                }), n
            }
        }
        class Hm extends Hi {
            constructor(t, e) {
                super(t);
                const n = this.bindTemplate;
                this.set("top", 0), this.set("left", 0), this.set("height", 0), this.set("width", 0), this.set("numberOfPanels", 0), this.content = this.createCollection(), this._balloonPanelView = e, this.setTemplate({
                    tag: "div",
                    attributes: {
                        class: ["ck-fake-panel", n.to("numberOfPanels", (t => t ? "" : "ck-hidden"))],
                        style: {
                            top: n.to("top", Fm),
                            left: n.to("left", Fm),
                            width: n.to("width", Fm),
                            height: n.to("height", Fm)
                        }
                    },
                    children: this.content
                }), this.on("change:numberOfPanels", ((t, e, n, o) => {
                    n > o ? this._addPanels(n - o) : this._removePanels(o - n), this.updatePosition()
                }))
            }
            _addPanels(t) {
                for (; t--;) {
                    const t = new Hi;
                    t.setTemplate({
                        tag: "div"
                    }), this.content.add(t), this.registerChild(t)
                }
            }
            _removePanels(t) {
                for (; t--;) {
                    const t = this.content.last;
                    this.content.remove(t), this.deregisterChild(t), t.destroy()
                }
            }
            updatePosition() {
                if (this.numberOfPanels) {
                    const {
                        top: t,
                        left: e
                    } = this._balloonPanelView, {
                        width: n,
                        height: o
                    } = new Uo(this._balloonPanelView.element);
                    Object.assign(this, {
                        top: t,
                        left: e,
                        width: n,
                        height: o
                    })
                }
            }
        }
        var Gm = n(5868),
            qm = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(Gm.Z, qm);
        Gm.Z.locals;
        const Wm = Zo("px");
        class Km extends Hi {
            constructor(t) {
                super(t);
                const e = this.bindTemplate;
                this.set("isActive", !1), this.set("isSticky", !1), this.set("limiterElement", null), this.set("limiterBottomOffset", 50), this.set("viewportTopOffset", 0), this.set("_marginLeft", null), this.set("_isStickyToTheBottomOfLimiter", !1), this.set("_stickyTopOffset", null), this.set("_stickyBottomOffset", null), this.content = this.createCollection(), this._contentPanelPlaceholder = new Gi({
                    tag: "div",
                    attributes: {
                        class: ["ck", "ck-sticky-panel__placeholder"],
                        style: {
                            display: e.to("isSticky", (t => t ? "block" : "none")),
                            height: e.to("isSticky", (t => t ? Wm(this._contentPanelRect.height) : null))
                        }
                    }
                }).render(), this._contentPanel = new Gi({
                    tag: "div",
                    attributes: {
                        class: ["ck", "ck-sticky-panel__content", e.if("isSticky", "ck-sticky-panel__content_sticky"), e.if("_isStickyToTheBottomOfLimiter", "ck-sticky-panel__content_sticky_bottom-limit")],
                        style: {
                            width: e.to("isSticky", (t => t ? Wm(this._contentPanelPlaceholder.getBoundingClientRect().width) : null)),
                            top: e.to("_stickyTopOffset", (t => t ? Wm(t) : t)),
                            bottom: e.to("_stickyBottomOffset", (t => t ? Wm(t) : t)),
                            marginLeft: e.to("_marginLeft")
                        }
                    },
                    children: this.content
                }).render(), this.setTemplate({
                    tag: "div",
                    attributes: {
                        class: ["ck", "ck-sticky-panel"]
                    },
                    children: [this._contentPanelPlaceholder, this._contentPanel]
                })
            }
            render() {
                super.render(), this.checkIfShouldBeSticky(), this.listenTo(Oo.document, "scroll", ((t, e) => {
                    this.checkIfShouldBeSticky(e.target)
                }), {
                    useCapture: !0
                }), this.listenTo(this, "change:isActive", (() => {
                    this.checkIfShouldBeSticky()
                }))
            }
            checkIfShouldBeSticky(t) {
                if (!this.limiterElement || !this.isActive) return void this._unstick();
                const e = function (t) {
                    const e = [];
                    let n = Lo(t);
                    for (; n && n !== Oo.document.body;) e.push(n), n = Lo(n);
                    return e.push(Oo.document), e
                }(this.limiterElement);
                if (t && !e.includes(t)) return;
                const o = function (t, e = 0) {
                        const o = t.map((t => {
                            if (t instanceof Document) {
                                const t = new Uo(n.g.window);
                                return t.top += e, t.height -= e, t
                            }
                            return new Uo(t)
                        }));
                        let i = o[0];
                        for (const t of o.slice(1)) i && (i = i.getIntersection(t));
                        return i
                    }(e, this.viewportTopOffset),
                    i = new Uo(this.limiterElement);
                if (o && i.top < o.top) {
                    const t = i.getIntersection(o);
                    if (t) {
                        const e = o.top;
                        if (e + this._contentPanelRect.height + this.limiterBottomOffset > t.bottom) {
                            const t = Math.max(i.bottom - o.bottom, 0) + this.limiterBottomOffset;
                            i.bottom - t > i.top + this._contentPanelRect.height ? this._stickToBottomOfLimiter(t) : this._unstick()
                        } else this._contentPanelRect.height + this.limiterBottomOffset < i.height ? this._stickToTopOfAncestors(e) : this._unstick()
                    } else this._unstick()
                } else this._unstick()
            }
            _stickToTopOfAncestors(t) {
                this.isSticky = !0, this._isStickyToTheBottomOfLimiter = !1, this._stickyTopOffset = t, this._stickyBottomOffset = null, this._marginLeft = Wm(-Oo.window.scrollX)
            }
            _stickToBottomOfLimiter(t) {
                this.isSticky = !0, this._isStickyToTheBottomOfLimiter = !0, this._stickyTopOffset = null, this._stickyBottomOffset = t, this._marginLeft = Wm(-Oo.window.scrollX)
            }
            _unstick() {
                this.isSticky = !1, this._isStickyToTheBottomOfLimiter = !1, this._stickyTopOffset = null, this._stickyBottomOffset = null, this._marginLeft = null
            }
            get _contentPanelRect() {
                return new Uo(this._contentPanel)
            }
        }
        Zo("px");
        var Ym = n(9695),
            $m = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(Ym.Z, $m);
        Ym.Z.locals, Zo("px");
        Zo("px");
        const {
            pilcrow: Zm
        } = Ig;
        class Qm extends ym {
            constructor(t, e) {
                super(t), this.view = e, this._toolbarConfig = qr(t.config.get("toolbar")), this._elementReplacer = new X, this.listenTo(t.editing.view, "scrollToTheSelection", this._handleScrollToTheSelectionWithStickyPanel.bind(this))
            }
            get element() {
                return this.view.element
            }
            init(t) {
                const e = this.editor,
                    n = this.view,
                    o = e.editing.view,
                    i = n.editable,
                    r = o.document.getRoot();
                i.name = r.rootName, n.render();
                const s = i.element;
                this.setEditableElement(i.name, s), n.editable.bind("isFocused").to(this.focusTracker), o.attachDomRoot(s), t && this._elementReplacer.replace(t, this.element), this._initPlaceholder(), this._initToolbar(), this.fire("ready")
            }
            destroy() {
                super.destroy();
                const t = this.view,
                    e = this.editor.editing.view;
                this._elementReplacer.restore(), e.detachDomRoot(t.editable.name), t.destroy()
            }
            _initToolbar() {
                const t = this.view;
                t.stickyPanel.bind("isActive").to(this.focusTracker, "isFocused"), t.stickyPanel.limiterElement = t.element, t.stickyPanel.bind("viewportTopOffset").to(this, "viewportOffset", (({
                    top: t
                }) => t || 0)), t.toolbar.fillFromConfig(this._toolbarConfig, this.componentFactory), this.addToolbar(t.toolbar)
            }
            _initPlaceholder() {
                const t = this.editor,
                    e = t.editing.view,
                    n = e.document.getRoot(),
                    o = t.sourceElement;
                let i;
                const r = t.config.get("placeholder");
                r && (i = "string" == typeof r ? r : r[this.view.editable.name]), !i && o && "textarea" === o.tagName.toLowerCase() && (i = o.getAttribute("placeholder")), i && (n.placeholder = i), rs({
                    view: e,
                    element: n,
                    isDirectHost: !1,
                    keepOnFocus: !0
                })
            }
            _handleScrollToTheSelectionWithStickyPanel(t, e, n) {
                const o = this.view.stickyPanel;
                if (o.isSticky) {
                    const t = new Uo(o.element).height;
                    e.viewportOffset.top += t
                } else {
                    const t = () => {
                        this.editor.editing.view.scrollToTheSelection(n)
                    };
                    this.listenTo(o, "change:isSticky", t), setTimeout((() => {
                        this.stopListening(o, "change:isSticky", t)
                    }), 20)
                }
            }
        }
        var Jm = n(3143),
            Xm = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(Jm.Z, Xm);
        Jm.Z.locals;
        class tf extends Im {
            constructor(t, e, n = {}) {
                super(t), this.stickyPanel = new Km(t), this.toolbar = new Pg(t, {
                    shouldGroupWhenFull: n.shouldToolbarGroupWhenFull
                }), this.editable = new Tm(t, e)
            }
            render() {
                super.render(), this.stickyPanel.content.add(this.toolbar), this.top.add(this.stickyPanel), this.main.add(this.editable)
            }
        }
        class ef {
            constructor(t) {
                if (this.crashes = [], this.state = "initializing", this._now = Date.now, this.crashes = [], this._crashNumberLimit = "number" == typeof t.crashNumberLimit ? t.crashNumberLimit : 3, this._minimumNonErrorTimePeriod = "number" == typeof t.minimumNonErrorTimePeriod ? t.minimumNonErrorTimePeriod : 5e3, this._boundErrorHandler = t => {
                        const e = "error" in t ? t.error : t.reason;
                        e instanceof Error && this._handleError(e, t)
                    }, this._listeners = {}, !this._restart) throw new Error("The Watchdog class was split into the abstract `Watchdog` class and the `EditorWatchdog` class. Please, use `EditorWatchdog` if you have used the `Watchdog` class previously.")
            }
            destroy() {
                this._stopErrorHandling(), this._listeners = {}
            }
            on(t, e) {
                this._listeners[t] || (this._listeners[t] = []), this._listeners[t].push(e)
            }
            off(t, e) {
                this._listeners[t] = this._listeners[t].filter((t => t !== e))
            }
            _fire(t, ...e) {
                const n = this._listeners[t] || [];
                for (const t of n) t.apply(this, [null, ...e])
            }
            _startErrorHandling() {
                window.addEventListener("error", this._boundErrorHandler), window.addEventListener("unhandledrejection", this._boundErrorHandler)
            }
            _stopErrorHandling() {
                window.removeEventListener("error", this._boundErrorHandler), window.removeEventListener("unhandledrejection", this._boundErrorHandler)
            }
            _handleError(t, e) {
                if (this._shouldReactToError(t)) {
                    this.crashes.push({
                        message: t.message,
                        stack: t.stack,
                        filename: e instanceof ErrorEvent ? e.filename : void 0,
                        lineno: e instanceof ErrorEvent ? e.lineno : void 0,
                        colno: e instanceof ErrorEvent ? e.colno : void 0,
                        date: this._now()
                    });
                    const n = this._shouldRestart();
                    this.state = "crashed", this._fire("stateChange"), this._fire("error", {
                        error: t,
                        causesRestart: n
                    }), n ? this._restart() : (this.state = "crashedPermanently", this._fire("stateChange"))
                }
            }
            _shouldReactToError(t) {
                return t.is && t.is("CKEditorError") && void 0 !== t.context && null !== t.context && "ready" === this.state && this._isErrorComingFromThisItem(t)
            }
            _shouldRestart() {
                if (this.crashes.length <= this._crashNumberLimit) return !0;
                return (this.crashes[this.crashes.length - 1].date - this.crashes[this.crashes.length - 1 - this._crashNumberLimit].date) / this._crashNumberLimit > this._minimumNonErrorTimePeriod
            }
        }

        function nf(t, e = new Set) {
            const n = [t],
                o = new Set;
            let i = 0;
            for (; n.length > i;) {
                const t = n[i++];
                if (!o.has(t) && of (t) && !e.has(t))
                    if (o.add(t), Symbol.iterator in t) try {
                        for (const e of t) n.push(e)
                    } catch (t) {} else
                        for (const e in t) "defaultValue" !== e && n.push(t[e])
            }
            return o
        }

        function of (t) {
            const e = Object.prototype.toString.call(t),
                n = typeof t;
            return !("number" === n || "boolean" === n || "string" === n || "symbol" === n || "function" === n || "[object Date]" === e || "[object RegExp]" === e || "[object Module]" === e || null == t || t._watchdogExcluded || t instanceof EventTarget || t instanceof Event)
        }

        function rf(t, e, n = new Set) {
            if (t === e && ("object" == typeof (o = t) && null !== o)) return !0;
            var o;
            const i = nf(t, n),
                r = nf(e, n);
            for (const t of i)
                if (r.has(t)) return !0;
            return !1
        }
        var sf = Object.defineProperty,
            af = Object.defineProperties,
            cf = Object.getOwnPropertyDescriptors,
            lf = Object.getOwnPropertySymbols,
            df = Object.prototype.hasOwnProperty,
            hf = Object.prototype.propertyIsEnumerable,
            uf = (t, e, n) => e in t ? sf(t, e, {
                enumerable: !0,
                configurable: !0,
                writable: !0,
                value: n
            }) : t[e] = n,
            gf = (t, e) => {
                for (var n in e || (e = {})) df.call(e, n) && uf(t, n, e[n]);
                if (lf)
                    for (var n of lf(e)) hf.call(e, n) && uf(t, n, e[n]);
                return t
            };
        class pf extends ef {
            constructor(t, e = {}) {
                super(e), this._editor = null, this._initUsingData = !0, this._editables = {}, this._throttledSave = im(this._save.bind(this), "number" == typeof e.saveInterval ? e.saveInterval : 5e3), t && (this._creator = (e, n) => t.create(e, n)), this._destructor = t => t.destroy()
            }
            get editor() {
                return this._editor
            }
            get _item() {
                return this._editor
            }
            setCreator(t) {
                this._creator = t
            }
            setDestructor(t) {
                this._destructor = t
            }
            _restart() {
                return Promise.resolve().then((() => (this.state = "initializing", this._fire("stateChange"), this._destroy()))).catch((t => {
                    console.error("An error happened during the editor destroying.", t)
                })).then((() => {
                    const t = {},
                        e = [],
                        n = this._config.rootsAttributes || {},
                        o = {};
                    for (const [i, r] of Object.entries(this._data.roots)) r.isLoaded ? (t[i] = "", o[i] = n[i] || {}) : e.push(i);
                    const i = (r = gf({}, this._config), s = {
                        extraPlugins: this._config.extraPlugins || [],
                        lazyRoots: e,
                        rootsAttributes: o,
                        _watchdogInitialData: this._data
                    }, af(r, cf(s)));
                    var r, s;
                    return delete i.initialData, i.extraPlugins.push(mf), this._initUsingData ? this.create(t, i, i.context) : xo(this._elementOrData) ? this.create(this._elementOrData, i, i.context) : this.create(this._editables, i, i.context)
                })).then((() => {
                    this._fire("restart")
                }))
            }
            create(t = this._elementOrData, e = this._config, n) {
                return Promise.resolve().then((() => (super._startErrorHandling(), this._elementOrData = t, this._initUsingData = "string" == typeof t || Object.keys(t).length > 0 && "string" == typeof Object.values(t)[0], this._config = this._cloneEditorConfiguration(e) || {}, this._config.context = n, this._creator(t, this._config)))).then((t => {
                    this._editor = t, t.model.document.on("change:data", this._throttledSave), this._lastDocumentVersion = t.model.document.version, this._data = this._getData(), this._initUsingData || (this._editables = this._getEditables()), this.state = "ready", this._fire("stateChange")
                }))
            }
            destroy() {
                return Promise.resolve().then((() => (this.state = "destroyed", this._fire("stateChange"), super.destroy(), this._destroy())))
            }
            _destroy() {
                return Promise.resolve().then((() => {
                    this._stopErrorHandling(), this._throttledSave.cancel();
                    const t = this._editor;
                    return this._editor = null, t.model.document.off("change:data", this._throttledSave), this._destructor(t)
                }))
            }
            _save() {
                const t = this._editor.model.document.version;
                try {
                    this._data = this._getData(), this._initUsingData || (this._editables = this._getEditables()), this._lastDocumentVersion = t
                } catch (t) {
                    console.error(t, "An error happened during restoring editor data. Editor will be restored from the previously saved data.")
                }
            }
            _setExcludedProperties(t) {
                this._excludedProps = t
            }
            _getData() {
                const t = this._editor,
                    e = t.model.document.roots.filter((t => t.isAttached() && "$graveyard" != t.rootName)),
                    {
                        plugins: n
                    } = t,
                    o = n.has("CommentsRepository") && n.get("CommentsRepository"),
                    i = n.has("TrackChanges") && n.get("TrackChanges"),
                    r = {
                        roots: {},
                        markers: {},
                        commentThreads: JSON.stringify([]),
                        suggestions: JSON.stringify([])
                    };
                e.forEach((t => {
                    r.roots[t.rootName] = {
                        content: JSON.stringify(Array.from(t.getChildren())),
                        attributes: JSON.stringify(Array.from(t.getAttributes())),
                        isLoaded: t._isLoaded
                    }
                }));
                for (const e of t.model.markers) e._affectsData && (r.markers[e.name] = {
                    rangeJSON: e.getRange().toJSON(),
                    usingOperation: e._managedUsingOperations,
                    affectsData: e._affectsData
                });
                return o && (r.commentThreads = JSON.stringify(o.getCommentThreads({
                    toJSON: !0,
                    skipNotAttached: !0
                }))), i && (r.suggestions = JSON.stringify(i.getSuggestions({
                    toJSON: !0,
                    skipNotAttached: !0
                }))), r
            }
            _getEditables() {
                const t = {};
                for (const e of this.editor.model.document.getRootNames()) {
                    const n = this.editor.ui.getEditableElement(e);
                    n && (t[e] = n)
                }
                return t
            }
            _isErrorComingFromThisItem(t) {
                return rf(this._editor, t.context, this._excludedProps)
            }
            _cloneEditorConfiguration(t) {
                return yo(t, ((t, e) => xo(t) || "context" === e ? t : void 0))
            }
        }
        class mf {
            constructor(t) {
                this.editor = t, this._data = t.config.get("_watchdogInitialData")
            }
            init() {
                this.editor.data.on("init", (t => {
                    t.stop(), this.editor.model.enqueueChange({
                        isUndoable: !1
                    }, (t => {
                        this._restoreCollaborationData(), this._restoreEditorData(t)
                    })), this.editor.data.fire("ready")
                }), {
                    priority: 999
                })
            }
            _createNode(t, e) {
                if ("name" in e) {
                    const n = t.createElement(e.name, e.attributes);
                    if (e.children)
                        for (const o of e.children) n._appendChild(this._createNode(t, o));
                    return n
                }
                return t.createText(e.data, e.attributes)
            }
            _restoreEditorData(t) {
                const e = this.editor;
                Object.entries(this._data.roots).forEach((([n, {
                    content: o,
                    attributes: i
                }]) => {
                    const r = JSON.parse(o),
                        s = JSON.parse(i),
                        a = e.model.document.getRoot(n);
                    for (const [e, n] of s) t.setAttribute(e, n, a);
                    for (const e of r) {
                        const n = this._createNode(t, e);
                        t.insert(n, a, "end")
                    }
                })), Object.entries(this._data.markers).forEach((([n, o]) => {
                    const {
                        document: i
                    } = e.model, r = o, {
                        rangeJSON: {
                            start: s,
                            end: a
                        }
                    } = r, c = ((t, e) => {
                        var n = {};
                        for (var o in t) df.call(t, o) && e.indexOf(o) < 0 && (n[o] = t[o]);
                        if (null != t && lf)
                            for (var o of lf(t)) e.indexOf(o) < 0 && hf.call(t, o) && (n[o] = t[o]);
                        return n
                    })(r, ["rangeJSON"]), l = i.getRoot(s.root), d = t.createPositionFromPath(l, s.path, s.stickiness), h = t.createPositionFromPath(l, a.path, a.stickiness), u = t.createRange(d, h);
                    t.addMarker(n, gf({
                        range: u
                    }, c))
                }))
            }
            _restoreCollaborationData() {
                const t = JSON.parse(this._data.commentThreads),
                    e = JSON.parse(this._data.suggestions);
                t.forEach((t => {
                    const e = this.editor.config.get("collaboration.channelId"),
                        n = this.editor.plugins.get("CommentsRepository");
                    if (n.hasCommentThread(t.threadId)) {
                        n.getCommentThread(t.threadId).remove()
                    }
                    n.addCommentThread(gf({
                        channelId: e
                    }, t))
                })), e.forEach((t => {
                    const e = this.editor.plugins.get("TrackChangesEditing");
                    if (e.hasSuggestion(t.id)) {
                        e.getSuggestion(t.id).attributes = t.attributes
                    } else e.addSuggestionData(t)
                }))
            }
        }
        const ff = Symbol("MainQueueId");
        class kf {
            constructor() {
                this._onEmptyCallbacks = [], this._queues = new Map, this._activeActions = 0
            }
            onEmpty(t) {
                this._onEmptyCallbacks.push(t)
            }
            enqueue(t, e) {
                const n = t === ff;
                this._activeActions++, this._queues.get(t) || this._queues.set(t, Promise.resolve());
                const o = (n ? Promise.all(this._queues.values()) : Promise.all([this._queues.get(ff), this._queues.get(t)])).then(e),
                    i = o.catch((() => {}));
                return this._queues.set(t, i), o.finally((() => {
                    this._activeActions--, this._queues.get(t) === i && 0 === this._activeActions && this._onEmptyCallbacks.forEach((t => t()))
                }))
            }
        }

        function bf(t) {
            return Array.isArray(t) ? t : [t]
        }
        class wf extends(Eg(Dg(xg))) {
            constructor(t, e = {}) {
                if (!Af(t) && void 0 !== e.initialData) throw new A("editor-create-initial-data", null);
                super(e), void 0 === this.config.get("initialData") && this.config.set("initialData", function (t) {
                    return Af(t) ? (e = t, e instanceof HTMLTextAreaElement ? e.value : e.innerHTML) : t;
                    var e
                }(t)), Af(t) && (this.sourceElement = t), this.model.document.createRoot();
                const n = !this.config.get("toolbar.shouldNotGroupWhenFull"),
                    o = new tf(this.locale, this.editing.view, {
                        shouldToolbarGroupWhenFull: n
                    });
                this.ui = new Qm(this, o),
                    function (t) {
                        if (!Ut(t.updateSourceElement)) throw new A("attachtoform-missing-elementapi-interface", t);
                        const e = t.sourceElement;
                        if (function (t) {
                                return !!t && "textarea" === t.tagName.toLowerCase()
                            }(e) && e.form) {
                            let n;
                            const o = e.form,
                                i = () => t.updateSourceElement();
                            Ut(o.submit) && (n = o.submit, o.submit = () => {
                                i(), n.apply(o)
                            }), o.addEventListener("submit", i), t.on("destroy", (() => {
                                o.removeEventListener("submit", i), n && (o.submit = n)
                            }))
                        }
                    }(this)
            }
            destroy() {
                return this.sourceElement && this.updateSourceElement(), this.ui.destroy(), super.destroy()
            }
            static create(t, e = {}) {
                return new Promise((n => {
                    const o = new this(t, e);
                    n(o.initPlugins().then((() => o.ui.init(Af(t) ? t : null))).then((() => o.data.init(o.config.get("initialData")))).then((() => o.fire("ready"))).then((() => o)))
                }))
            }
        }

        function Af(t) {
            return xo(t)
        }
        wf.Context = Jr, wf.EditorWatchdog = pf, wf.ContextWatchdog = class extends ef {
            constructor(t, e = {}) {
                super(e), this._watchdogs = new Map, this._context = null, this._contextProps = new Set, this._actionQueues = new kf, this._watchdogConfig = e, this._creator = e => t.create(e), this._destructor = t => t.destroy(), this._actionQueues.onEmpty((() => {
                    "initializing" === this.state && (this.state = "ready", this._fire("stateChange"))
                }))
            }
            setCreator(t) {
                this._creator = t
            }
            setDestructor(t) {
                this._destructor = t
            }
            get context() {
                return this._context
            }
            create(t = {}) {
                return this._actionQueues.enqueue(ff, (() => (this._contextConfig = t, this._create())))
            }
            getItem(t) {
                return this._getWatchdog(t)._item
            }
            getItemState(t) {
                return this._getWatchdog(t).state
            }
            add(t) {
                const e = bf(t);
                return Promise.all(e.map((t => this._actionQueues.enqueue(t.id, (() => {
                    if ("destroyed" === this.state) throw new Error("Cannot add items to destroyed watchdog.");
                    if (!this._context) throw new Error("Context was not created yet. You should call the `ContextWatchdog#create()` method first.");
                    let e;
                    if (this._watchdogs.has(t.id)) throw new Error(`Item with the given id is already added: '${t.id}'.`);
                    if ("editor" === t.type) return e = new pf(null, this._watchdogConfig), e.setCreator(t.creator), e._setExcludedProperties(this._contextProps), t.destructor && e.setDestructor(t.destructor), this._watchdogs.set(t.id, e), e.on("error", ((n, {
                        error: o,
                        causesRestart: i
                    }) => {
                        this._fire("itemError", {
                            itemId: t.id,
                            error: o
                        }), i && this._actionQueues.enqueue(t.id, (() => new Promise((n => {
                            const o = () => {
                                e.off("restart", o), this._fire("itemRestart", {
                                    itemId: t.id
                                }), n()
                            };
                            e.on("restart", o)
                        }))))
                    })), e.create(t.sourceElementOrData, t.config, this._context);
                    throw new Error(`Not supported item type: '${t.type}'.`)
                })))))
            }
            remove(t) {
                const e = bf(t);
                return Promise.all(e.map((t => this._actionQueues.enqueue(t, (() => {
                    const e = this._getWatchdog(t);
                    return this._watchdogs.delete(t), e.destroy()
                })))))
            }
            destroy() {
                return this._actionQueues.enqueue(ff, (() => (this.state = "destroyed", this._fire("stateChange"), super.destroy(), this._destroy())))
            }
            _restart() {
                return this._actionQueues.enqueue(ff, (() => (this.state = "initializing", this._fire("stateChange"), this._destroy().catch((t => {
                    console.error("An error happened during destroying the context or items.", t)
                })).then((() => this._create())).then((() => this._fire("restart"))))))
            }
            _create() {
                return Promise.resolve().then((() => (this._startErrorHandling(), this._creator(this._contextConfig)))).then((t => (this._context = t, this._contextProps = nf(this._context), Promise.all(Array.from(this._watchdogs.values()).map((t => (t._setExcludedProperties(this._contextProps), t.create(void 0, void 0, this._context))))))))
            }
            _destroy() {
                return Promise.resolve().then((() => {
                    this._stopErrorHandling();
                    const t = this._context;
                    return this._context = null, this._contextProps = new Set, Promise.all(Array.from(this._watchdogs.values()).map((t => t.destroy()))).then((() => this._destructor(t)))
                }))
            }
            _getWatchdog(t) {
                const e = this._watchdogs.get(t);
                if (!e) throw new Error(`Item with the given id was not registered: ${t}.`);
                return e
            }
            _isErrorComingFromThisItem(t) {
                for (const e of this._watchdogs.values())
                    if (e._isErrorComingFromThisItem(t)) return !1;
                return rf(this._context, t.context)
            }
        };
        class Cf extends Pc {
            constructor(t) {
                super(t), this.domEventType = ["paste", "copy", "cut", "drop", "dragover", "dragstart", "dragend", "dragenter", "dragleave"];
                const e = this.document;

                function n(t) {
                    return (n, o) => {
                        o.preventDefault();
                        const i = o.dropRange ? [o.dropRange] : null,
                            r = new p(e, t);
                        e.fire(r, {
                            dataTransfer: o.dataTransfer,
                            method: n.name,
                            targetRanges: i,
                            target: o.target,
                            domEvent: o.domEvent
                        }), r.stop.called && o.stopPropagation()
                    }
                }
                this.listenTo(e, "paste", n("clipboardInput"), {
                    priority: "low"
                }), this.listenTo(e, "drop", n("clipboardInput"), {
                    priority: "low"
                }), this.listenTo(e, "dragover", n("dragging"), {
                    priority: "low"
                })
            }
            onDomEvent(t) {
                const e = "clipboardData" in t ? t.clipboardData : t.dataTransfer,
                    n = "drop" == t.type || "paste" == t.type,
                    o = {
                        dataTransfer: new _l(e, {
                            cacheFiles: n
                        })
                    };
                "drop" != t.type && "dragover" != t.type || (o.dropRange = function (t, e) {
                    const n = e.target.ownerDocument,
                        o = e.clientX,
                        i = e.clientY;
                    let r;
                    n.caretRangeFromPoint && n.caretRangeFromPoint(o, i) ? r = n.caretRangeFromPoint(o, i) : e.rangeParent && (r = n.createRange(), r.setStart(e.rangeParent, e.rangeOffset), r.collapse(!0));
                    if (r) return t.domConverter.domRangeToView(r);
                    return null
                }(this.view, t)), this.fire(t.type, t, o)
            }
        }
        const _f = ["figcaption", "li"];

        function vf(t) {
            let e = "";
            if (t.is("$text") || t.is("$textProxy")) e = t.data;
            else if (t.is("element", "img") && t.hasAttribute("alt")) e = t.getAttribute("alt");
            else if (t.is("element", "br")) e = "\n";
            else {
                let n = null;
                for (const o of t.getChildren()) {
                    const t = vf(o);
                    n && (n.is("containerElement") || o.is("containerElement")) && (_f.includes(n.name) || _f.includes(o.name) ? e += "\n" : e += "\n\n"), e += t, n = o
                }
            }
            return e
        }
        class yf extends Wr {
            static get pluginName() {
                return "ClipboardPipeline"
            }
            init() {
                this.editor.editing.view.addObserver(Cf), this._setupPasteDrop(), this._setupCopyCut()
            }
            _setupPasteDrop() {
                const t = this.editor,
                    e = t.model,
                    n = t.editing.view,
                    o = n.document;
                this.listenTo(o, "clipboardInput", ((e, n) => {
                    "paste" != n.method || t.model.canEditAt(t.model.document.selection) || e.stop()
                }), {
                    priority: "highest"
                }), this.listenTo(o, "clipboardInput", ((t, e) => {
                    const o = e.dataTransfer;
                    let i;
                    if (e.content) i = e.content;
                    else {
                        let t = "";
                        o.getData("text/html") ? t = function (t) {
                            return t.replace(/<span(?: class="Apple-converted-space"|)>(\s+)<\/span>/g, ((t, e) => 1 == e.length ? " " : e)).replace(/<!--[\s\S]*?-->/g, "")
                        }(o.getData("text/html")) : o.getData("text/plain") && (((r = (r = o.getData("text/plain")).replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/\r?\n\r?\n/g, "</p><p>").replace(/\r?\n/g, "<br>").replace(/\t/g, "&nbsp;&nbsp;&nbsp;&nbsp;").replace(/^\s/, "&nbsp;").replace(/\s$/, "&nbsp;").replace(/\s\s/g, " &nbsp;")).includes("</p><p>") || r.includes("<br>")) && (r = `<p>${r}</p>`), t = r), i = this.editor.data.htmlProcessor.toView(t)
                    }
                    var r;
                    const s = new p(this, "inputTransformation");
                    this.fire(s, {
                        content: i,
                        dataTransfer: o,
                        targetRanges: e.targetRanges,
                        method: e.method
                    }), s.stop.called && t.stop(), n.scrollToTheSelection()
                }), {
                    priority: "low"
                }), this.listenTo(this, "inputTransformation", ((t, n) => {
                    if (n.content.isEmpty) return;
                    const o = this.editor.data.toModel(n.content, "$clipboardHolder");
                    0 != o.childCount && (t.stop(), e.change((() => {
                        this.fire("contentInsertion", {
                            content: o,
                            method: n.method,
                            dataTransfer: n.dataTransfer,
                            targetRanges: n.targetRanges
                        })
                    })))
                }), {
                    priority: "low"
                }), this.listenTo(this, "contentInsertion", ((t, n) => {
                    n.resultRange = e.insertContent(n.content)
                }), {
                    priority: "low"
                })
            }
            _setupCopyCut() {
                const t = this.editor,
                    e = t.model.document,
                    n = t.editing.view.document,
                    o = (o, i) => {
                        const r = i.dataTransfer;
                        i.preventDefault();
                        const s = t.data.toView(t.model.getSelectedContent(e.selection));
                        n.fire("clipboardOutput", {
                            dataTransfer: r,
                            content: s,
                            method: o.name
                        })
                    };
                this.listenTo(n, "copy", o, {
                    priority: "low"
                }), this.listenTo(n, "cut", ((e, n) => {
                    t.model.canEditAt(t.model.document.selection) ? o(e, n) : n.preventDefault()
                }), {
                    priority: "low"
                }), this.listenTo(n, "clipboardOutput", ((n, o) => {
                    o.content.isEmpty || (o.dataTransfer.setData("text/html", this.editor.data.htmlProcessor.toData(o.content)), o.dataTransfer.setData("text/plain", vf(o.content))), "cut" == o.method && t.model.deleteContent(e.selection)
                }), {
                    priority: "low"
                })
            }
        }
        class xf {
            constructor(t, e = 20) {
                this._batch = null, this.model = t, this._size = 0, this.limit = e, this._isLocked = !1, this._changeCallback = (t, e) => {
                    e.isLocal && e.isUndoable && e !== this._batch && this._reset(!0)
                }, this._selectionChangeCallback = () => {
                    this._reset()
                }, this.model.document.on("change", this._changeCallback), this.model.document.selection.on("change:range", this._selectionChangeCallback), this.model.document.selection.on("change:attribute", this._selectionChangeCallback)
            }
            get batch() {
                return this._batch || (this._batch = this.model.createBatch({
                    isTyping: !0
                })), this._batch
            }
            get size() {
                return this._size
            }
            input(t) {
                this._size += t, this._size >= this.limit && this._reset(!0)
            }
            get isLocked() {
                return this._isLocked
            }
            lock() {
                this._isLocked = !0
            }
            unlock() {
                this._isLocked = !1
            }
            destroy() {
                this.model.document.off("change", this._changeCallback), this.model.document.selection.off("change:range", this._selectionChangeCallback), this.model.document.selection.off("change:attribute", this._selectionChangeCallback)
            }
            _reset(t = !1) {
                this.isLocked && !t || (this._batch = null, this._size = 0)
            }
        }
        class Ef extends Yr {
            constructor(t, e) {
                super(t), this._buffer = new xf(t.model, e), this._isEnabledBasedOnSelection = !1
            }
            get buffer() {
                return this._buffer
            }
            destroy() {
                super.destroy(), this._buffer.destroy()
            }
            execute(t = {}) {
                const e = this.editor.model,
                    n = e.document,
                    o = t.text || "",
                    i = o.length;
                let r = n.selection;
                if (t.selection ? r = t.selection : t.range && (r = e.createSelection(t.range)), !e.canEditAt(r)) return;
                const s = t.resultRange;
                e.enqueueChange(this._buffer.batch, (t => {
                    this._buffer.lock(), e.deleteContent(r), o && e.insertContent(t.createText(o, n.selection.getAttributes()), r), s ? t.setSelection(s) : r.is("documentSelection") || t.setSelection(r), this._buffer.unlock(), this._buffer.input(i)
                }))
            }
        }
        const Df = ["insertText", "insertReplacementText"];
        class Sf extends Tc {
            constructor(t) {
                super(t), this.focusObserver = t.getObserver(wl), a.isAndroid && Df.push("insertCompositionText");
                const e = t.document;
                e.on("beforeinput", ((n, o) => {
                    if (!this.isEnabled) return;
                    const {
                        data: i,
                        targetRanges: r,
                        inputType: s,
                        domEvent: a
                    } = o;
                    if (!Df.includes(s)) return;
                    this.focusObserver.flush();
                    const c = new p(e, "insertText");
                    e.fire(c, new Nc(t, a, {
                        text: i,
                        selection: t.createSelection(r)
                    })), c.stop.called && n.stop()
                })), e.on("compositionend", ((n, {
                    data: o,
                    domEvent: i
                }) => {
                    this.isEnabled && !a.isAndroid && o && e.fire("insertText", new Nc(t, i, {
                        text: o,
                        selection: e.selection
                    }))
                }), {
                    priority: "lowest"
                })
            }
            observe() {}
            stopObserving() {}
        }
        class If extends Wr {
            static get pluginName() {
                return "Input"
            }
            init() {
                const t = this.editor,
                    e = t.model,
                    n = t.editing.view,
                    o = e.document.selection;
                n.addObserver(Sf);
                const i = new Ef(t, t.config.get("typing.undoStep") || 20);
                t.commands.add("insertText", i), t.commands.add("input", i), this.listenTo(n.document, "insertText", ((o, i) => {
                    n.document.isComposing || i.preventDefault();
                    const {
                        text: r,
                        selection: s,
                        resultRange: c
                    } = i, l = Array.from(s.getRanges()).map((e => t.editing.mapper.toModelRange(e)));
                    let d = r;
                    if (a.isAndroid) {
                        const t = Array.from(l[0].getItems()).reduce(((t, e) => t + (e.is("$textProxy") ? e.data : "")), "");
                        t && (t.length <= d.length ? d.startsWith(t) && (d = d.substring(t.length), l[0].start = l[0].start.getShiftedBy(t.length)) : t.startsWith(d) && (l[0].start = l[0].start.getShiftedBy(d.length), d = ""))
                    }
                    const h = {
                        text: d,
                        selection: e.createSelection(l)
                    };
                    c && (h.resultRange = t.editing.mapper.toModelRange(c)), t.execute("insertText", h), n.scrollToTheSelection()
                })), a.isAndroid ? this.listenTo(n.document, "keydown", ((t, r) => {
                    !o.isCollapsed && 229 == r.keyCode && n.document.isComposing && Mf(e, i)
                })) : this.listenTo(n.document, "compositionstart", (() => {
                    o.isCollapsed || Mf(e, i)
                }))
            }
        }

        function Mf(t, e) {
            if (!e.isEnabled) return;
            const n = e.buffer;
            n.lock(), t.enqueueChange(n.batch, (() => {
                t.deleteContent(t.document.selection)
            })), n.unlock()
        }
        class Tf extends Yr {
            constructor(t, e) {
                super(t), this.direction = e, this._buffer = new xf(t.model, t.config.get("typing.undoStep")), this._isEnabledBasedOnSelection = !1
            }
            get buffer() {
                return this._buffer
            }
            execute(t = {}) {
                const e = this.editor.model,
                    n = e.document;
                e.enqueueChange(this._buffer.batch, (o => {
                    this._buffer.lock();
                    const i = o.createSelection(t.selection || n.selection);
                    if (!e.canEditAt(i)) return;
                    const r = t.sequence || 1,
                        s = i.isCollapsed;
                    if (i.isCollapsed && e.modifySelection(i, {
                            direction: this.direction,
                            unit: t.unit,
                            treatEmojiAsSingleUnit: !0
                        }), this._shouldEntireContentBeReplacedWithParagraph(r)) return void this._replaceEntireContentWithParagraph(o);
                    if (this._shouldReplaceFirstBlockWithParagraph(i, r)) return void this.editor.execute("paragraph", {
                        selection: i
                    });
                    if (i.isCollapsed) return;
                    let a = 0;
                    i.getFirstRange().getMinimalFlatRanges().forEach((t => {
                        a += tt(t.getWalker({
                            singleCharacters: !0,
                            ignoreElementEnd: !0,
                            shallow: !0
                        }))
                    })), e.deleteContent(i, {
                        doNotResetEntireContent: s,
                        direction: this.direction
                    }), this._buffer.input(a), o.setSelection(i), this._buffer.unlock()
                }))
            }
            _shouldEntireContentBeReplacedWithParagraph(t) {
                if (t > 1) return !1;
                const e = this.editor.model,
                    n = e.document.selection,
                    o = e.schema.getLimitElement(n);
                if (!(n.isCollapsed && n.containsEntireContent(o))) return !1;
                if (!e.schema.checkChild(o, "paragraph")) return !1;
                const i = o.getChild(0);
                return !i || !i.is("element", "paragraph")
            }
            _replaceEntireContentWithParagraph(t) {
                const e = this.editor.model,
                    n = e.document.selection,
                    o = e.schema.getLimitElement(n),
                    i = t.createElement("paragraph");
                t.remove(t.createRangeIn(o)), t.insert(i, o), t.setSelection(i, 0)
            }
            _shouldReplaceFirstBlockWithParagraph(t, e) {
                const n = this.editor.model;
                if (e > 1 || "backward" != this.direction) return !1;
                if (!t.isCollapsed) return !1;
                const o = t.getFirstPosition(),
                    i = n.schema.getLimitElement(o),
                    r = i.getChild(0);
                return o.parent == r && (!!t.containsEntireContent(r) && (!!n.schema.checkChild(i, "paragraph") && "paragraph" != r.name))
            }
        }
        const Bf = "word",
            Nf = "selection",
            Pf = "backward",
            zf = "forward",
            Of = {
                deleteContent: {
                    unit: Nf,
                    direction: Pf
                },
                deleteContentBackward: {
                    unit: "codePoint",
                    direction: Pf
                },
                deleteWordBackward: {
                    unit: Bf,
                    direction: Pf
                },
                deleteHardLineBackward: {
                    unit: Nf,
                    direction: Pf
                },
                deleteSoftLineBackward: {
                    unit: Nf,
                    direction: Pf
                },
                deleteContentForward: {
                    unit: "character",
                    direction: zf
                },
                deleteWordForward: {
                    unit: Bf,
                    direction: zf
                },
                deleteHardLineForward: {
                    unit: Nf,
                    direction: zf
                },
                deleteSoftLineForward: {
                    unit: Nf,
                    direction: zf
                }
            };
        class Lf extends Tc {
            constructor(t) {
                super(t);
                const e = t.document;
                let n = 0;
                e.on("keydown", (() => {
                    n++
                })), e.on("keyup", (() => {
                    n = 0
                })), e.on("beforeinput", ((o, i) => {
                    if (!this.isEnabled) return;
                    const {
                        targetRanges: r,
                        domEvent: s,
                        inputType: c
                    } = i, l = Of[c];
                    if (!l) return;
                    const d = {
                        direction: l.direction,
                        unit: l.unit,
                        sequence: n
                    };
                    d.unit == Nf && (d.selectionToRemove = t.createSelection(r[0])), "deleteContentBackward" === c && (a.isAndroid && (d.sequence = 1), function (t) {
                        if (1 != t.length || t[0].isCollapsed) return !1;
                        const e = t[0].getWalker({
                            direction: "backward",
                            singleCharacters: !0,
                            ignoreElementEnd: !0
                        });
                        let n = 0;
                        for (const {
                                nextPosition: t
                            } of e) {
                            if (t.parent.is("$text")) {
                                const e = t.parent.data,
                                    o = t.offset;
                                if (Pi(e, o) || zi(e, o) || Li(e, o)) continue;
                                n++
                            } else n++;
                            if (n > 1) return !0
                        }
                        return !1
                    }(r) && (d.unit = Nf, d.selectionToRemove = t.createSelection(r)));
                    const h = new Sa(e, "delete", r[0]);
                    e.fire(h, new Nc(t, s, d)), h.stop.called && o.stop()
                })), a.isBlink && function (t) {
                    const e = t.view,
                        n = e.document;
                    let o = null,
                        i = !1;

                    function r(t) {
                        return t == ki.backspace || t == ki.delete
                    }

                    function s(t) {
                        return t == ki.backspace ? Pf : zf
                    }
                    n.on("keydown", ((t, {
                        keyCode: e
                    }) => {
                        o = e, i = !1
                    })), n.on("keyup", ((a, {
                        keyCode: c,
                        domEvent: l
                    }) => {
                        const d = n.selection,
                            h = t.isEnabled && c == o && r(c) && !d.isCollapsed && !i;
                        if (o = null, h) {
                            const t = d.getFirstRange(),
                                o = new Sa(n, "delete", t),
                                i = {
                                    unit: Nf,
                                    direction: s(c),
                                    selectionToRemove: d
                                };
                            n.fire(o, new Nc(e, l, i))
                        }
                    })), n.on("beforeinput", ((t, {
                        inputType: e
                    }) => {
                        const n = Of[e];
                        r(o) && n && n.direction == s(o) && (i = !0)
                    }), {
                        priority: "high"
                    }), n.on("beforeinput", ((t, {
                        inputType: e,
                        data: n
                    }) => {
                        o == ki.delete && "insertText" == e && "" == n && t.stop()
                    }), {
                        priority: "high"
                    })
                }(this)
            }
            observe() {}
            stopObserving() {}
        }
        class jf extends Wr {
            static get pluginName() {
                return "Delete"
            }
            init() {
                const t = this.editor,
                    e = t.editing.view,
                    n = e.document,
                    o = t.model.document;
                e.addObserver(Lf), this._undoOnBackspace = !1;
                const i = new Tf(t, "forward");
                t.commands.add("deleteForward", i), t.commands.add("forwardDelete", i), t.commands.add("delete", new Tf(t, "backward")), this.listenTo(n, "delete", ((o, i) => {
                    n.isComposing || i.preventDefault();
                    const {
                        direction: r,
                        sequence: s,
                        selectionToRemove: a,
                        unit: c
                    } = i, l = "forward" === r ? "deleteForward" : "delete", d = {
                        sequence: s
                    };
                    if ("selection" == c) {
                        const e = Array.from(a.getRanges()).map((e => t.editing.mapper.toModelRange(e)));
                        d.selection = t.model.createSelection(e)
                    } else d.unit = c;
                    t.execute(l, d), e.scrollToTheSelection()
                }), {
                    priority: "low"
                }), this.editor.plugins.has("UndoEditing") && (this.listenTo(n, "delete", ((e, n) => {
                    this._undoOnBackspace && "backward" == n.direction && 1 == n.sequence && "codePoint" == n.unit && (this._undoOnBackspace = !1, t.execute("undo"), n.preventDefault(), e.stop())
                }), {
                    context: "$capture"
                }), this.listenTo(o, "change", (() => {
                    this._undoOnBackspace = !1
                })))
            }
            requestUndoOnBackspace() {
                this.editor.plugins.has("UndoEditing") && (this._undoOnBackspace = !0)
            }
        }
        class Rf extends Wr {
            static get requires() {
                return [If, jf]
            }
            static get pluginName() {
                return "Typing"
            }
        }

        function Ff(t, e) {
            let n = t.start;
            return {
                text: Array.from(t.getWalker({
                    ignoreElementEnd: !1
                })).reduce(((t, {
                    item: o
                }) => o.is("$text") || o.is("$textProxy") ? t + o.data : (n = e.createPositionAfter(o), "")), ""),
                range: e.createRange(n, t.end)
            }
        }
        class Vf extends(K()) {
            constructor(t, e) {
                super(), this.model = t, this.testCallback = e, this._hasMatch = !1, this.set("isEnabled", !0), this.on("change:isEnabled", (() => {
                    this.isEnabled ? this._startListening() : (this.stopListening(t.document.selection), this.stopListening(t.document))
                })), this._startListening()
            }
            get hasMatch() {
                return this._hasMatch
            }
            _startListening() {
                const t = this.model.document;
                this.listenTo(t.selection, "change:range", ((e, {
                    directChange: n
                }) => {
                    n && (t.selection.isCollapsed ? this._evaluateTextBeforeSelection("selection") : this.hasMatch && (this.fire("unmatched"), this._hasMatch = !1))
                })), this.listenTo(t, "change:data", ((t, e) => {
                    !e.isUndo && e.isLocal && this._evaluateTextBeforeSelection("data", {
                        batch: e
                    })
                }))
            }
            _evaluateTextBeforeSelection(t, e = {}) {
                const n = this.model,
                    o = n.document.selection,
                    i = n.createRange(n.createPositionAt(o.focus.parent, 0), o.focus),
                    {
                        text: r,
                        range: s
                    } = Ff(i, n),
                    a = this.testCallback(r);
                if (!a && this.hasMatch && this.fire("unmatched"), this._hasMatch = !!a, a) {
                    const n = Object.assign(e, {
                        text: r,
                        range: s
                    });
                    "object" == typeof a && Object.assign(n, a), this.fire(`matched:${t}`, n)
                }
            }
        }
        class Uf extends Wr {
            constructor(t) {
                super(t), this.attributes = new Set, this._overrideUid = null
            }
            static get pluginName() {
                return "TwoStepCaretMovement"
            }
            init() {
                const t = this.editor,
                    e = t.model,
                    n = t.editing.view,
                    o = t.locale,
                    i = e.document.selection;
                this.listenTo(n.document, "arrowKey", ((t, e) => {
                    if (!i.isCollapsed) return;
                    if (e.shiftKey || e.altKey || e.ctrlKey) return;
                    const n = e.keyCode == ki.arrowright,
                        r = e.keyCode == ki.arrowleft;
                    if (!n && !r) return;
                    const s = o.contentLanguageDirection;
                    let a = !1;
                    a = "ltr" === s && n || "rtl" === s && r ? this._handleForwardMovement(e) : this._handleBackwardMovement(e), !0 === a && t.stop()
                }), {
                    context: "$text",
                    priority: "highest"
                }), this._isNextGravityRestorationSkipped = !1, this.listenTo(i, "change:range", ((t, e) => {
                    this._isNextGravityRestorationSkipped ? this._isNextGravityRestorationSkipped = !1 : this._isGravityOverridden && (!e.directChange && Wf(i.getFirstPosition(), this.attributes) || this._restoreGravity())
                }))
            }
            registerAttribute(t) {
                this.attributes.add(t)
            }
            _handleForwardMovement(t) {
                const e = this.attributes,
                    n = this.editor.model.document.selection,
                    o = n.getFirstPosition();
                return !this._isGravityOverridden && ((!o.isAtStart || !Hf(n, e)) && (!!Wf(o, e) && (qf(t), this._overrideGravity(), !0)))
            }
            _handleBackwardMovement(t) {
                const e = this.attributes,
                    n = this.editor.model,
                    o = n.document.selection,
                    i = o.getFirstPosition();
                return this._isGravityOverridden ? (qf(t), this._restoreGravity(), Gf(n, e, i), !0) : i.isAtStart ? !!Hf(o, e) && (qf(t), Gf(n, e, i), !0) : !! function (t, e) {
                    const n = t.getShiftedBy(-1);
                    return Wf(n, e)
                }(i, e) && (i.isAtEnd && !Hf(o, e) && Wf(i, e) ? (qf(t), Gf(n, e, i), !0) : (this._isNextGravityRestorationSkipped = !0, this._overrideGravity(), !1))
            }
            get _isGravityOverridden() {
                return !!this._overrideUid
            }
            _overrideGravity() {
                this._overrideUid = this.editor.model.change((t => t.overrideSelectionGravity()))
            }
            _restoreGravity() {
                this.editor.model.change((t => {
                    t.restoreSelectionGravity(this._overrideUid), this._overrideUid = null
                }))
            }
        }

        function Hf(t, e) {
            for (const n of e)
                if (t.hasAttribute(n)) return !0;
            return !1
        }

        function Gf(t, e, n) {
            const o = n.nodeBefore;
            t.change((n => {
                if (o) {
                    const e = [],
                        i = t.schema.isObject(o) && t.schema.isInline(o);
                    for (const [n, r] of o.getAttributes()) !t.schema.checkAttribute("$text", n) || i && !1 === t.schema.getAttributeProperties(n).copyFromObject || e.push([n, r]);
                    n.setSelectionAttribute(e)
                } else n.removeSelectionAttribute(e)
            }))
        }

        function qf(t) {
            t.preventDefault()
        }

        function Wf(t, e) {
            const {
                nodeBefore: n,
                nodeAfter: o
            } = t;
            for (const t of e) {
                const e = n ? n.getAttribute(t) : void 0;
                if ((o ? o.getAttribute(t) : void 0) !== e) return !0
            }
            return !1
        }
        var Kf = /[\\^$.*+?()[\]{}|]/g,
            Yf = RegExp(Kf.source);
        const $f = function (t) {
                return (t = Ns(t)) && Yf.test(t) ? t.replace(Kf, "\\$&") : t
            },
            Zf = {
                copyright: {
                    from: "(c)",
                    to: "©"
                },
                registeredTrademark: {
                    from: "(r)",
                    to: "®"
                },
                trademark: {
                    from: "(tm)",
                    to: "™"
                },
                oneHalf: {
                    from: /(^|[^/a-z0-9])(1\/2)([^/a-z0-9])$/i,
                    to: [null, "½", null]
                },
                oneThird: {
                    from: /(^|[^/a-z0-9])(1\/3)([^/a-z0-9])$/i,
                    to: [null, "⅓", null]
                },
                twoThirds: {
                    from: /(^|[^/a-z0-9])(2\/3)([^/a-z0-9])$/i,
                    to: [null, "⅔", null]
                },
                oneForth: {
                    from: /(^|[^/a-z0-9])(1\/4)([^/a-z0-9])$/i,
                    to: [null, "¼", null]
                },
                threeQuarters: {
                    from: /(^|[^/a-z0-9])(3\/4)([^/a-z0-9])$/i,
                    to: [null, "¾", null]
                },
                lessThanOrEqual: {
                    from: "<=",
                    to: "≤"
                },
                greaterThanOrEqual: {
                    from: ">=",
                    to: "≥"
                },
                notEqual: {
                    from: "!=",
                    to: "≠"
                },
                arrowLeft: {
                    from: "<-",
                    to: "←"
                },
                arrowRight: {
                    from: "->",
                    to: "→"
                },
                horizontalEllipsis: {
                    from: "...",
                    to: "…"
                },
                enDash: {
                    from: /(^| )(--)( )$/,
                    to: [null, "–", null]
                },
                emDash: {
                    from: /(^| )(---)( )$/,
                    to: [null, "—", null]
                },
                quotesPrimary: {
                    from: nk('"'),
                    to: [null, "“", null, "”"]
                },
                quotesSecondary: {
                    from: nk("'"),
                    to: [null, "‘", null, "’"]
                },
                quotesPrimaryEnGb: {
                    from: nk("'"),
                    to: [null, "‘", null, "’"]
                },
                quotesSecondaryEnGb: {
                    from: nk('"'),
                    to: [null, "“", null, "”"]
                },
                quotesPrimaryPl: {
                    from: nk('"'),
                    to: [null, "„", null, "”"]
                },
                quotesSecondaryPl: {
                    from: nk("'"),
                    to: [null, "‚", null, "’"]
                }
            },
            Qf = {
                symbols: ["copyright", "registeredTrademark", "trademark"],
                mathematical: ["oneHalf", "oneThird", "twoThirds", "oneForth", "threeQuarters", "lessThanOrEqual", "greaterThanOrEqual", "notEqual", "arrowLeft", "arrowRight"],
                typography: ["horizontalEllipsis", "enDash", "emDash"],
                quotes: ["quotesPrimary", "quotesSecondary"]
            },
            Jf = ["symbols", "mathematical", "typography", "quotes"];

        function Xf(t) {
            return "string" == typeof t ? new RegExp(`(${$f(t)})$`) : t
        }

        function tk(t) {
            return "string" == typeof t ? () => [t] : t instanceof Array ? () => t : t
        }

        function ek(t) {
            return (t.textNode ? t.textNode : t.nodeAfter).getAttributes()
        }

        function nk(t) {
            return new RegExp(`(^|\\s)(${t})([^${t}]*)(${t})$`)
        }

        function ok(t, e, n, o) {
            return o.createRange(ik(t, e, n, !0, o), ik(t, e, n, !1, o))
        }

        function ik(t, e, n, o, i) {
            let r = t.textNode || (o ? t.nodeBefore : t.nodeAfter),
                s = null;
            for (; r && r.getAttribute(e) == n;) s = r, r = o ? r.previousSibling : r.nextSibling;
            return s ? i.createPositionAt(s, o ? "before" : "after") : t
        }

        function* rk(t, e) {
            for (const n of e) n && t.getAttributeProperties(n[0]).copyOnEnter && (yield n)
        }
        class sk extends Yr {
            execute() {
                this.editor.model.change((t => {
                    this.enterBlock(t), this.fire("afterExecute", {
                        writer: t
                    })
                }))
            }
            enterBlock(t) {
                const e = this.editor.model,
                    n = e.document.selection,
                    o = e.schema,
                    i = n.isCollapsed,
                    r = n.getFirstRange(),
                    s = r.start.parent,
                    a = r.end.parent;
                if (o.isLimit(s) || o.isLimit(a)) return i || s != a || e.deleteContent(n), !1;
                if (i) {
                    const e = rk(t.model.schema, n.getAttributes());
                    return ak(t, r.start), t.setSelectionAttribute(e), !0
                } {
                    const o = !(r.start.isAtStart && r.end.isAtEnd),
                        i = s == a;
                    if (e.deleteContent(n, {
                            leaveUnmerged: o
                        }), o) {
                        if (i) return ak(t, n.focus), !0;
                        t.setSelection(a, 0)
                    }
                }
                return !1
            }
        }

        function ak(t, e) {
            t.split(e), t.setSelection(e.parent.nextSibling, 0)
        }
        const ck = {
            insertParagraph: {
                isSoft: !1
            },
            insertLineBreak: {
                isSoft: !0
            }
        };
        class lk extends Tc {
            constructor(t) {
                super(t);
                const e = this.document;
                let n = !1;
                e.on("keydown", ((t, e) => {
                    n = e.shiftKey
                })), e.on("beforeinput", ((o, i) => {
                    if (!this.isEnabled) return;
                    let r = i.inputType;
                    a.isSafari && n && "insertParagraph" == r && (r = "insertLineBreak");
                    const s = i.domEvent,
                        c = ck[r];
                    if (!c) return;
                    const l = new Sa(e, "enter", i.targetRanges[0]);
                    e.fire(l, new Nc(t, s, {
                        isSoft: c.isSoft
                    })), l.stop.called && o.stop()
                }))
            }
            observe() {}
            stopObserving() {}
        }
        class dk extends Wr {
            static get pluginName() {
                return "Enter"
            }
            init() {
                const t = this.editor,
                    e = t.editing.view,
                    n = e.document;
                e.addObserver(lk), t.commands.add("enter", new sk(t)), this.listenTo(n, "enter", ((o, i) => {
                    n.isComposing || i.preventDefault(), i.isSoft || (t.execute("enter"), e.scrollToTheSelection())
                }), {
                    priority: "low"
                })
            }
        }
        class hk extends Yr {
            execute() {
                const t = this.editor.model,
                    e = t.document;
                t.change((n => {
                    ! function (t, e, n) {
                        const o = n.isCollapsed,
                            i = n.getFirstRange(),
                            r = i.start.parent,
                            s = i.end.parent,
                            a = r == s;
                        if (o) {
                            const o = rk(t.schema, n.getAttributes());
                            uk(t, e, i.end), e.removeSelectionAttribute(n.getAttributeKeys()), e.setSelectionAttribute(o)
                        } else {
                            const o = !(i.start.isAtStart && i.end.isAtEnd);
                            t.deleteContent(n, {
                                leaveUnmerged: o
                            }), a ? uk(t, e, n.focus) : o && e.setSelection(s, 0)
                        }
                    }(t, n, e.selection), this.fire("afterExecute", {
                        writer: n
                    })
                }))
            }
            refresh() {
                const t = this.editor.model,
                    e = t.document;
                this.isEnabled = function (t, e) {
                    if (e.rangeCount > 1) return !1;
                    const n = e.anchor;
                    if (!n || !t.checkChild(n, "softBreak")) return !1;
                    const o = e.getFirstRange(),
                        i = o.start.parent,
                        r = o.end.parent;
                    if ((gk(i, t) || gk(r, t)) && i !== r) return !1;
                    return !0
                }(t.schema, e.selection)
            }
        }

        function uk(t, e, n) {
            const o = e.createElement("softBreak");
            t.insertContent(o, n), e.setSelection(o, "after")
        }

        function gk(t, e) {
            return !t.is("rootElement") && (e.isLimit(t) || gk(t.parent, e))
        }
        class pk extends Wr {
            static get pluginName() {
                return "ShiftEnter"
            }
            init() {
                const t = this.editor,
                    e = t.model.schema,
                    n = t.conversion,
                    o = t.editing.view,
                    i = o.document;
                e.register("softBreak", {
                    allowWhere: "$text",
                    isInline: !0
                }), n.for("upcast").elementToElement({
                    model: "softBreak",
                    view: "br"
                }), n.for("downcast").elementToElement({
                    model: "softBreak",
                    view: (t, {
                        writer: e
                    }) => e.createEmptyElement("br")
                }), o.addObserver(lk), t.commands.add("shiftEnter", new hk(t)), this.listenTo(i, "enter", ((e, n) => {
                    i.isComposing || n.preventDefault(), n.isSoft && (t.execute("shiftEnter"), o.scrollToTheSelection())
                }), {
                    priority: "low"
                })
            }
        }
        class mk extends(B()) {
            constructor() {
                super(...arguments), this._stack = []
            }
            add(t, e) {
                const n = this._stack,
                    o = n[0];
                this._insertDescriptor(t);
                const i = n[0];
                o === i || fk(o, i) || this.fire("change:top", {
                    oldDescriptor: o,
                    newDescriptor: i,
                    writer: e
                })
            }
            remove(t, e) {
                const n = this._stack,
                    o = n[0];
                this._removeDescriptor(t);
                const i = n[0];
                o === i || fk(o, i) || this.fire("change:top", {
                    oldDescriptor: o,
                    newDescriptor: i,
                    writer: e
                })
            }
            _insertDescriptor(t) {
                const e = this._stack,
                    n = e.findIndex((e => e.id === t.id));
                if (fk(t, e[n])) return;
                n > -1 && e.splice(n, 1);
                let o = 0;
                for (; e[o] && kk(e[o], t);) o++;
                e.splice(o, 0, t)
            }
            _removeDescriptor(t) {
                const e = this._stack,
                    n = e.findIndex((e => e.id === t));
                n > -1 && e.splice(n, 1)
            }
        }

        function fk(t, e) {
            return t && e && t.priority == e.priority && bk(t.classes) == bk(e.classes)
        }

        function kk(t, e) {
            return t.priority > e.priority || !(t.priority < e.priority) && bk(t.classes) > bk(e.classes)
        }

        function bk(t) {
            return Array.isArray(t) ? t.sort().join(",") : t
        }
        const wk = '<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="M4 0v1H1v3H0V.5A.5.5 0 0 1 .5 0H4zm8 0h3.5a.5.5 0 0 1 .5.5V4h-1V1h-3V0zM4 16H.5a.5.5 0 0 1-.5-.5V12h1v3h3v1zm8 0v-1h3v-3h1v3.5a.5.5 0 0 1-.5.5H12z"/><path fill-opacity=".256" d="M1 1h14v14H1z"/><g class="ck-icon__selected-indicator"><path d="M7 0h2v1H7V0zM0 7h1v2H0V7zm15 0h1v2h-1V7zm-8 8h2v1H7v-1z"/><path fill-opacity=".254" d="M1 1h14v14H1z"/></g></svg>',
            Ak = "ck-widget",
            Ck = "ck-widget_selected";

        function _k(t) {
            return !!t.is("element") && !!t.getCustomProperty("widget")
        }

        function vk(t, e, n = {}) {
            if (!t.is("containerElement")) throw new A("widget-to-widget-wrong-element-type", null, {
                element: t
            });
            return e.setAttribute("contenteditable", "false", t), e.addClass(Ak, t), e.setCustomProperty("widget", !0, t), t.getFillerOffset = Ik, e.setCustomProperty("widgetLabel", [], t), n.label && function (t, e) {
                const n = t.getCustomProperty("widgetLabel");
                n.push(e)
            }(t, n.label), n.hasSelectionHandle && function (t, e) {
                const n = e.createUIElement("div", {
                    class: "ck ck-widget__selection-handle"
                }, (function (t) {
                    const e = this.toDomElement(t),
                        n = new mr;
                    return n.set("content", wk), n.render(), e.appendChild(n.element), e
                }));
                e.insert(e.createPositionAt(t, 0), n), e.addClass(["ck-widget_with-selection-handle"], t)
            }(t, e), Ek(t, e), t
        }

        function yk(t, e, n) {
            if (e.classes && n.addClass(vi(e.classes), t), e.attributes)
                for (const o in e.attributes) n.setAttribute(o, e.attributes[o], t)
        }

        function xk(t, e, n) {
            if (e.classes && n.removeClass(vi(e.classes), t), e.attributes)
                for (const o in e.attributes) n.removeAttribute(o, t)
        }

        function Ek(t, e, n = yk, o = xk) {
            const i = new mk;
            i.on("change:top", ((e, i) => {
                i.oldDescriptor && o(t, i.oldDescriptor, i.writer), i.newDescriptor && n(t, i.newDescriptor, i.writer)
            }));
            e.setCustomProperty("addHighlight", ((t, e, n) => i.add(e, n)), t), e.setCustomProperty("removeHighlight", ((t, e, n) => i.remove(e, n)), t)
        }

        function Dk(t, e, n = {}) {
            return e.addClass(["ck-editor__editable", "ck-editor__nested-editable"], t), e.setAttribute("role", "textbox", t), n.label && e.setAttribute("aria-label", n.label, t), e.setAttribute("contenteditable", t.isReadOnly ? "false" : "true", t), t.on("change:isReadOnly", ((n, o, i) => {
                e.setAttribute("contenteditable", i ? "false" : "true", t)
            })), t.on("change:isFocused", ((n, o, i) => {
                i ? e.addClass("ck-editor__nested-editable_focused", t) : e.removeClass("ck-editor__nested-editable_focused", t)
            })), Ek(t, e), t
        }

        function Sk(t, e) {
            const n = t.getSelectedElement();
            if (n) {
                const o = Bk(t);
                if (o) return e.createRange(e.createPositionAt(n, o))
            }
            return ug(t, e)
        }

        function Ik() {
            return null
        }
        const Mk = "widget-type-around";

        function Tk(t, e, n) {
            return !!t && _k(t) && !n.isInline(e)
        }

        function Bk(t) {
            return t.getAttribute(Mk)
        }
        var Nk = n(4921),
            Pk = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(Nk.Z, Pk);
        Nk.Z.locals;
        const zk = ["before", "after"],
            Ok = (new DOMParser).parseFromString('<svg viewBox="0 0 10 8" xmlns="http://www.w3.org/2000/svg"><path d="M9.055.263v3.972h-6.77M1 4.216l2-2.038m-2 2 2 2.038"/></svg>', "image/svg+xml").firstChild,
            Lk = "ck-widget__type-around_disabled";
        class jk extends Wr {
            constructor() {
                super(...arguments), this._currentFakeCaretModelElement = null
            }
            static get pluginName() {
                return "WidgetTypeAround"
            }
            static get requires() {
                return [dk, jf]
            }
            init() {
                const t = this.editor,
                    e = t.editing.view;
                this.on("change:isEnabled", ((n, o, i) => {
                    e.change((t => {
                        for (const n of e.document.roots) i ? t.removeClass(Lk, n) : t.addClass(Lk, n)
                    })), i || t.model.change((t => {
                        t.removeSelectionAttribute(Mk)
                    }))
                })), this._enableTypeAroundUIInjection(), this._enableInsertingParagraphsOnButtonClick(), this._enableInsertingParagraphsOnEnterKeypress(), this._enableInsertingParagraphsOnTypingKeystroke(), this._enableTypeAroundFakeCaretActivationUsingKeyboardArrows(), this._enableDeleteIntegration(), this._enableInsertContentIntegration(), this._enableInsertObjectIntegration(), this._enableDeleteContentIntegration()
            }
            destroy() {
                super.destroy(), this._currentFakeCaretModelElement = null
            }
            _insertParagraph(t, e) {
                const n = this.editor,
                    o = n.editing.view,
                    i = n.model.schema.getAttributesWithProperty(t, "copyOnReplace", !0);
                n.execute("insertParagraph", {
                    position: n.model.createPositionAt(t, e),
                    attributes: i
                }), o.focus(), o.scrollToTheSelection()
            }
            _listenToIfEnabled(t, e, n, o) {
                this.listenTo(t, e, ((...t) => {
                    this.isEnabled && n(...t)
                }), o)
            }
            _insertParagraphAccordingToFakeCaretPosition() {
                const t = this.editor.model.document.selection,
                    e = Bk(t);
                if (!e) return !1;
                const n = t.getSelectedElement();
                return this._insertParagraph(n, e), !0
            }
            _enableTypeAroundUIInjection() {
                const t = this.editor,
                    e = t.model.schema,
                    n = t.locale.t,
                    o = {
                        before: n("Insert paragraph before block"),
                        after: n("Insert paragraph after block")
                    };
                t.editing.downcastDispatcher.on("insert", ((t, i, r) => {
                    const s = r.mapper.toViewElement(i.item);
                    if (s && Tk(s, i.item, e)) {
                        ! function (t, e, n) {
                            const o = t.createUIElement("div", {
                                class: "ck ck-reset_all ck-widget__type-around"
                            }, (function (t) {
                                const n = this.toDomElement(t);
                                return function (t, e) {
                                        for (const n of zk) {
                                            const o = new Gi({
                                                tag: "div",
                                                attributes: {
                                                    class: ["ck", "ck-widget__type-around__button", `ck-widget__type-around__button_${n}`],
                                                    title: e[n],
                                                    "aria-hidden": "true"
                                                },
                                                children: [t.ownerDocument.importNode(Ok, !0)]
                                            });
                                            t.appendChild(o.render())
                                        }
                                    }(n, e),
                                    function (t) {
                                        const e = new Gi({
                                            tag: "div",
                                            attributes: {
                                                class: ["ck", "ck-widget__type-around__fake-caret"]
                                            }
                                        });
                                        t.appendChild(e.render())
                                    }(n), n
                            }));
                            t.insert(t.createPositionAt(n, "end"), o)
                        }(r.writer, o, s);
                        s.getCustomProperty("widgetLabel").push((() => this.isEnabled ? n("Press Enter to type after or press Shift + Enter to type before the widget") : ""))
                    }
                }), {
                    priority: "low"
                })
            }
            _enableTypeAroundFakeCaretActivationUsingKeyboardArrows() {
                const t = this.editor,
                    e = t.model,
                    n = e.document.selection,
                    o = e.schema,
                    i = t.editing.view;

                function r(t) {
                    return `ck-widget_type-around_show-fake-caret_${t}`
                }
                this._listenToIfEnabled(i.document, "arrowKey", ((t, e) => {
                    this._handleArrowKeyPress(t, e)
                }), {
                    context: [_k, "$text"],
                    priority: "high"
                }), this._listenToIfEnabled(n, "change:range", ((e, n) => {
                    n.directChange && t.model.change((t => {
                        t.removeSelectionAttribute(Mk)
                    }))
                })), this._listenToIfEnabled(e.document, "change:data", (() => {
                    const e = n.getSelectedElement();
                    if (e) {
                        if (Tk(t.editing.mapper.toViewElement(e), e, o)) return
                    }
                    t.model.change((t => {
                        t.removeSelectionAttribute(Mk)
                    }))
                })), this._listenToIfEnabled(t.editing.downcastDispatcher, "selection", ((t, e, n) => {
                    const i = n.writer;
                    if (this._currentFakeCaretModelElement) {
                        const t = n.mapper.toViewElement(this._currentFakeCaretModelElement);
                        t && (i.removeClass(zk.map(r), t), this._currentFakeCaretModelElement = null)
                    }
                    const s = e.selection.getSelectedElement();
                    if (!s) return;
                    const a = n.mapper.toViewElement(s);
                    if (!Tk(a, s, o)) return;
                    const c = Bk(e.selection);
                    c && (i.addClass(r(c), a), this._currentFakeCaretModelElement = s)
                })), this._listenToIfEnabled(t.ui.focusTracker, "change:isFocused", ((e, n, o) => {
                    o || t.model.change((t => {
                        t.removeSelectionAttribute(Mk)
                    }))
                }))
            }
            _handleArrowKeyPress(t, e) {
                const n = this.editor,
                    o = n.model,
                    i = o.document.selection,
                    r = o.schema,
                    s = n.editing.view,
                    a = function (t, e) {
                        const n = _i(t, e);
                        return "down" === n || "right" === n
                    }(e.keyCode, n.locale.contentLanguageDirection),
                    c = s.document.selection.getSelectedElement();
                let l;
                Tk(c, n.editing.mapper.toModelElement(c), r) ? l = this._handleArrowKeyPressOnSelectedWidget(a) : i.isCollapsed ? l = this._handleArrowKeyPressWhenSelectionNextToAWidget(a) : e.shiftKey || (l = this._handleArrowKeyPressWhenNonCollapsedSelection(a)), l && (e.preventDefault(), t.stop())
            }
            _handleArrowKeyPressOnSelectedWidget(t) {
                const e = this.editor.model,
                    n = Bk(e.document.selection);
                return e.change((e => {
                    if (!n) return e.setSelectionAttribute(Mk, t ? "after" : "before"), !0;
                    if (!(n === (t ? "after" : "before"))) return e.removeSelectionAttribute(Mk), !0;
                    return !1
                }))
            }
            _handleArrowKeyPressWhenSelectionNextToAWidget(t) {
                const e = this.editor,
                    n = e.model,
                    o = n.schema,
                    i = e.plugins.get("Widget"),
                    r = i._getObjectElementNextToSelection(t);
                return !!Tk(e.editing.mapper.toViewElement(r), r, o) && (n.change((e => {
                    i._setSelectionOverElement(r), e.setSelectionAttribute(Mk, t ? "before" : "after")
                })), !0)
            }
            _handleArrowKeyPressWhenNonCollapsedSelection(t) {
                const e = this.editor,
                    n = e.model,
                    o = n.schema,
                    i = e.editing.mapper,
                    r = n.document.selection,
                    s = t ? r.getLastPosition().nodeBefore : r.getFirstPosition().nodeAfter;
                return !!Tk(i.toViewElement(s), s, o) && (n.change((e => {
                    e.setSelection(s, "on"), e.setSelectionAttribute(Mk, t ? "after" : "before")
                })), !0)
            }
            _enableInsertingParagraphsOnButtonClick() {
                const t = this.editor,
                    e = t.editing.view;
                this._listenToIfEnabled(e.document, "mousedown", ((n, o) => {
                    const i = o.domTarget.closest(".ck-widget__type-around__button");
                    if (!i) return;
                    const r = function (t) {
                            return t.classList.contains("ck-widget__type-around__button_before") ? "before" : "after"
                        }(i),
                        s = function (t, e) {
                            const n = t.closest(".ck-widget");
                            return e.mapDomToView(n)
                        }(i, e.domConverter),
                        a = t.editing.mapper.toModelElement(s);
                    this._insertParagraph(a, r), o.preventDefault(), n.stop()
                }))
            }
            _enableInsertingParagraphsOnEnterKeypress() {
                const t = this.editor,
                    e = t.model.document.selection,
                    n = t.editing.view;
                this._listenToIfEnabled(n.document, "enter", ((n, o) => {
                    if ("atTarget" != n.eventPhase) return;
                    const i = e.getSelectedElement(),
                        r = t.editing.mapper.toViewElement(i),
                        s = t.model.schema;
                    let a;
                    this._insertParagraphAccordingToFakeCaretPosition() ? a = !0 : Tk(r, i, s) && (this._insertParagraph(i, o.isSoft ? "before" : "after"), a = !0), a && (o.preventDefault(), n.stop())
                }), {
                    context: _k
                })
            }
            _enableInsertingParagraphsOnTypingKeystroke() {
                const t = this.editor.editing.view.document;
                this._listenToIfEnabled(t, "insertText", ((e, n) => {
                    this._insertParagraphAccordingToFakeCaretPosition() && (n.selection = t.selection)
                }), {
                    priority: "high"
                }), a.isAndroid ? this._listenToIfEnabled(t, "keydown", ((t, e) => {
                    229 == e.keyCode && this._insertParagraphAccordingToFakeCaretPosition()
                })) : this._listenToIfEnabled(t, "compositionstart", (() => {
                    this._insertParagraphAccordingToFakeCaretPosition()
                }), {
                    priority: "high"
                })
            }
            _enableDeleteIntegration() {
                const t = this.editor,
                    e = t.editing.view,
                    n = t.model,
                    o = n.schema;
                this._listenToIfEnabled(e.document, "delete", ((e, i) => {
                    if ("atTarget" != e.eventPhase) return;
                    const r = Bk(n.document.selection);
                    if (!r) return;
                    const s = i.direction,
                        a = n.document.selection.getSelectedElement(),
                        c = "forward" == s;
                    if ("before" === r === c) t.execute("delete", {
                        selection: n.createSelection(a, "on")
                    });
                    else {
                        const e = o.getNearestSelectionRange(n.createPositionAt(a, r), s);
                        if (e)
                            if (e.isCollapsed) {
                                const i = n.createSelection(e.start);
                                if (n.modifySelection(i, {
                                        direction: s
                                    }), i.focus.isEqual(e.start)) {
                                    const t = function (t, e) {
                                        let n = e;
                                        for (const o of e.getAncestors({
                                                parentFirst: !0
                                            })) {
                                            if (o.childCount > 1 || t.isLimit(o)) break;
                                            n = o
                                        }
                                        return n
                                    }(o, e.start.parent);
                                    n.deleteContent(n.createSelection(t, "on"), {
                                        doNotAutoparagraph: !0
                                    })
                                } else n.change((n => {
                                    n.setSelection(e), t.execute(c ? "deleteForward" : "delete")
                                }))
                            } else n.change((n => {
                                n.setSelection(e), t.execute(c ? "deleteForward" : "delete")
                            }))
                    }
                    i.preventDefault(), e.stop()
                }), {
                    context: _k
                })
            }
            _enableInsertContentIntegration() {
                const t = this.editor,
                    e = this.editor.model,
                    n = e.document.selection;
                this._listenToIfEnabled(t.model, "insertContent", ((t, [o, i]) => {
                    if (i && !i.is("documentSelection")) return;
                    const r = Bk(n);
                    return r ? (t.stop(), e.change((t => {
                        const i = n.getSelectedElement(),
                            s = e.createPositionAt(i, r),
                            a = t.createSelection(s),
                            c = e.insertContent(o, a);
                        return t.setSelection(a), c
                    }))) : void 0
                }), {
                    priority: "high"
                })
            }
            _enableInsertObjectIntegration() {
                const t = this.editor,
                    e = this.editor.model.document.selection;
                this._listenToIfEnabled(t.model, "insertObject", ((t, n) => {
                    const [, o, i = {}] = n;
                    if (o && !o.is("documentSelection")) return;
                    const r = Bk(e);
                    r && (i.findOptimalPosition = r, n[3] = i)
                }), {
                    priority: "high"
                })
            }
            _enableDeleteContentIntegration() {
                const t = this.editor,
                    e = this.editor.model.document.selection;
                this._listenToIfEnabled(t.model, "deleteContent", ((t, [n]) => {
                    if (n && !n.is("documentSelection")) return;
                    Bk(e) && t.stop()
                }), {
                    priority: "high"
                })
            }
        }

        function Rk(t) {
            const e = t.model;
            return (n, o) => {
                const i = o.keyCode == ki.arrowup,
                    r = o.keyCode == ki.arrowdown,
                    s = o.shiftKey,
                    a = e.document.selection;
                if (!i && !r) return;
                const c = r;
                if (s && function (t, e) {
                        return !t.isCollapsed && t.isBackward == e
                    }(a, c)) return;
                const l = function (t, e, n) {
                    const o = t.model;
                    if (n) {
                        const t = e.isCollapsed ? e.focus : e.getLastPosition(),
                            n = Fk(o, t, "forward");
                        if (!n) return null;
                        const i = o.createRange(t, n),
                            r = Vk(o.schema, i, "backward");
                        return r ? o.createRange(t, r) : null
                    } {
                        const t = e.isCollapsed ? e.focus : e.getFirstPosition(),
                            n = Fk(o, t, "backward");
                        if (!n) return null;
                        const i = o.createRange(n, t),
                            r = Vk(o.schema, i, "forward");
                        return r ? o.createRange(r, t) : null
                    }
                }(t, a, c);
                if (l) {
                    if (l.isCollapsed) {
                        if (a.isCollapsed) return;
                        if (s) return
                    }(l.isCollapsed || function (t, e, n) {
                        const o = t.model,
                            i = t.view.domConverter;
                        if (n) {
                            const t = o.createSelection(e.start);
                            o.modifySelection(t), t.focus.isAtEnd || e.start.isEqual(t.focus) || (e = o.createRange(t.focus, e.end))
                        }
                        const r = t.mapper.toViewRange(e),
                            s = i.viewRangeToDom(r),
                            a = Uo.getDomRangeRects(s);
                        let c;
                        for (const t of a)
                            if (void 0 !== c) {
                                if (Math.round(t.top) >= c) return !1;
                                c = Math.max(c, Math.round(t.bottom))
                            } else c = Math.round(t.bottom);
                        return !0
                    }(t, l, c)) && (e.change((t => {
                        const n = c ? l.end : l.start;
                        if (s) {
                            const o = e.createSelection(a.anchor);
                            o.setFocus(n), t.setSelection(o)
                        } else t.setSelection(n)
                    })), n.stop(), o.preventDefault(), o.stopPropagation())
                }
            }
        }

        function Fk(t, e, n) {
            const o = t.schema,
                i = t.createRangeIn(e.root),
                r = "forward" == n ? "elementStart" : "elementEnd";
            for (const {
                    previousPosition: t,
                    item: s,
                    type: a
                } of i.getWalker({
                    startPosition: e,
                    direction: n
                })) {
                if (o.isLimit(s) && !o.isInline(s)) return t;
                if (a == r && o.isBlock(s)) return null
            }
            return null
        }

        function Vk(t, e, n) {
            const o = "backward" == n ? e.end : e.start;
            if (t.checkChild(o, "$text")) return o;
            for (const {
                    nextPosition: o
                } of e.getWalker({
                    direction: n
                }))
                if (t.checkChild(o, "$text")) return o;
            return null
        }
        var Uk = n(3488),
            Hk = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(Uk.Z, Hk);
        Uk.Z.locals;
        class Gk extends Wr {
            constructor() {
                super(...arguments), this._previouslySelected = new Set
            }
            static get pluginName() {
                return "Widget"
            }
            static get requires() {
                return [jk, jf]
            }
            init() {
                const t = this.editor,
                    e = t.editing.view,
                    n = e.document;
                this.editor.editing.downcastDispatcher.on("selection", ((e, n, o) => {
                    const i = o.writer,
                        r = n.selection;
                    if (r.isCollapsed) return;
                    const s = r.getSelectedElement();
                    if (!s) return;
                    const a = t.editing.mapper.toViewElement(s);
                    var c;
                    _k(a) && (o.consumable.consume(r, "selection") && i.setSelection(i.createRangeOn(a), {
                        fake: !0,
                        label: (c = a, c.getCustomProperty("widgetLabel").reduce(((t, e) => "function" == typeof e ? t ? t + ". " + e() : e() : t ? t + ". " + e : e), ""))
                    }))
                })), this.editor.editing.downcastDispatcher.on("selection", ((t, e, n) => {
                    this._clearPreviouslySelectedWidgets(n.writer);
                    const o = n.writer,
                        i = o.document.selection;
                    let r = null;
                    for (const t of i.getRanges())
                        for (const e of t) {
                            const t = e.item;
                            _k(t) && !qk(t, r) && (o.addClass(Ck, t), this._previouslySelected.add(t), r = t)
                        }
                }), {
                    priority: "low"
                }), e.addObserver(_g), this.listenTo(n, "mousedown", ((...t) => this._onMousedown(...t))), this.listenTo(n, "arrowKey", ((...t) => {
                    this._handleSelectionChangeOnArrowKeyPress(...t)
                }), {
                    context: [_k, "$text"]
                }), this.listenTo(n, "arrowKey", ((...t) => {
                    this._preventDefaultOnArrowKeyPress(...t)
                }), {
                    context: "$root"
                }), this.listenTo(n, "arrowKey", Rk(this.editor.editing), {
                    context: "$text"
                }), this.listenTo(n, "delete", ((t, e) => {
                    this._handleDelete("forward" == e.direction) && (e.preventDefault(), t.stop())
                }), {
                    context: "$root"
                })
            }
            _onMousedown(t, e) {
                const n = this.editor,
                    o = n.editing.view,
                    i = o.document;
                let r = e.target;
                if (function (t) {
                        let e = t;
                        for (; e;) {
                            if (e.is("editableElement") && !e.is("rootElement")) return !0;
                            if (_k(e)) return !1;
                            e = e.parent
                        }
                        return !1
                    }(r)) {
                    if ((a.isSafari || a.isGecko) && e.domEvent.detail >= 3) {
                        const t = n.editing.mapper,
                            o = r.is("attributeElement") ? r.findAncestor((t => !t.is("attributeElement"))) : r,
                            i = t.toModelElement(o);
                        e.preventDefault(), this.editor.model.change((t => {
                            t.setSelection(i, "in")
                        }))
                    }
                    return
                }
                if (!_k(r) && (r = r.findAncestor(_k), !r)) return;
                a.isAndroid && e.preventDefault(), i.isFocused || o.focus();
                const s = n.editing.mapper.toModelElement(r);
                this._setSelectionOverElement(s)
            }
            _handleSelectionChangeOnArrowKeyPress(t, e) {
                const n = e.keyCode,
                    o = this.editor.model,
                    i = o.schema,
                    r = o.document.selection,
                    s = r.getSelectedElement(),
                    a = _i(n, this.editor.locale.contentLanguageDirection),
                    c = "down" == a || "right" == a,
                    l = "up" == a || "down" == a;
                if (s && i.isObject(s)) {
                    const n = c ? r.getLastPosition() : r.getFirstPosition(),
                        s = i.getNearestSelectionRange(n, c ? "forward" : "backward");
                    return void(s && (o.change((t => {
                        t.setSelection(s)
                    })), e.preventDefault(), t.stop()))
                }
                if (!r.isCollapsed && !e.shiftKey) {
                    const n = r.getFirstPosition(),
                        s = r.getLastPosition(),
                        a = n.nodeAfter,
                        l = s.nodeBefore;
                    return void((a && i.isObject(a) || l && i.isObject(l)) && (o.change((t => {
                        t.setSelection(c ? s : n)
                    })), e.preventDefault(), t.stop()))
                }
                if (!r.isCollapsed) return;
                const d = this._getObjectElementNextToSelection(c);
                if (d && i.isObject(d)) {
                    if (i.isInline(d) && l) return;
                    this._setSelectionOverElement(d), e.preventDefault(), t.stop()
                }
            }
            _preventDefaultOnArrowKeyPress(t, e) {
                const n = this.editor.model,
                    o = n.schema,
                    i = n.document.selection.getSelectedElement();
                i && o.isObject(i) && (e.preventDefault(), t.stop())
            }
            _handleDelete(t) {
                const e = this.editor.model.document.selection;
                if (!this.editor.model.canEditAt(e)) return;
                if (!e.isCollapsed) return;
                const n = this._getObjectElementNextToSelection(t);
                return n ? (this.editor.model.change((t => {
                    let o = e.anchor.parent;
                    for (; o.isEmpty;) {
                        const e = o;
                        o = e.parent, t.remove(e)
                    }
                    this._setSelectionOverElement(n)
                })), !0) : void 0
            }
            _setSelectionOverElement(t) {
                this.editor.model.change((e => {
                    e.setSelection(e.createRangeOn(t))
                }))
            }
            _getObjectElementNextToSelection(t) {
                const e = this.editor.model,
                    n = e.schema,
                    o = e.document.selection,
                    i = e.createSelection(o);
                if (e.modifySelection(i, {
                        direction: t ? "forward" : "backward"
                    }), i.isEqual(o)) return null;
                const r = t ? i.focus.nodeBefore : i.focus.nodeAfter;
                return r && n.isObject(r) ? r : null
            }
            _clearPreviouslySelectedWidgets(t) {
                for (const e of this._previouslySelected) t.removeClass(Ck, e);
                this._previouslySelected.clear()
            }
        }

        function qk(t, e) {
            return !!e && Array.from(t.getAncestors()).includes(e)
        }
        class Wk extends Wr {
            constructor() {
                super(...arguments), this._toolbarDefinitions = new Map
            }
            static get requires() {
                return [Vm]
            }
            static get pluginName() {
                return "WidgetToolbarRepository"
            }
            init() {
                const t = this.editor;
                if (t.plugins.has("BalloonToolbar")) {
                    const e = t.plugins.get("BalloonToolbar");
                    this.listenTo(e, "show", (e => {
                        (function (t) {
                            const e = t.getSelectedElement();
                            return !(!e || !_k(e))
                        })(t.editing.view.document.selection) && e.stop()
                    }), {
                        priority: "high"
                    })
                }
                this._balloon = this.editor.plugins.get("ContextualBalloon"), this.on("change:isEnabled", (() => {
                    this._updateToolbarsVisibility()
                })), this.listenTo(t.ui, "update", (() => {
                    this._updateToolbarsVisibility()
                })), this.listenTo(t.ui.focusTracker, "change:isFocused", (() => {
                    this._updateToolbarsVisibility()
                }), {
                    priority: "low"
                })
            }
            destroy() {
                super.destroy();
                for (const t of this._toolbarDefinitions.values()) t.view.destroy()
            }
            register(t, {
                ariaLabel: e,
                items: n,
                getRelatedElement: o,
                balloonClassName: i = "ck-toolbar-container"
            }) {
                if (!n.length) return void C("widget-toolbar-no-items", {
                    toolbarId: t
                });
                const r = this.editor,
                    s = r.t,
                    a = new Pg(r.locale);
                if (a.ariaLabel = e || s("Widget toolbar"), this._toolbarDefinitions.has(t)) throw new A("widget-toolbar-duplicated", this, {
                    toolbarId: t
                });
                const c = {
                    view: a,
                    getRelatedElement: o,
                    balloonClassName: i,
                    itemsConfig: n,
                    initialized: !1
                };
                r.ui.addToolbar(a, {
                    isContextual: !0,
                    beforeFocus: () => {
                        const t = o(r.editing.view.document.selection);
                        t && this._showToolbar(c, t)
                    },
                    afterBlur: () => {
                        this._hideToolbar(c)
                    }
                }), this._toolbarDefinitions.set(t, c)
            }
            _updateToolbarsVisibility() {
                let t = 0,
                    e = null,
                    n = null;
                for (const o of this._toolbarDefinitions.values()) {
                    const i = o.getRelatedElement(this.editor.editing.view.document.selection);
                    if (this.isEnabled && i)
                        if (this.editor.ui.focusTracker.isFocused) {
                            const r = i.getAncestors().length;
                            r > t && (t = r, e = i, n = o)
                        } else this._isToolbarVisible(o) && this._hideToolbar(o);
                    else this._isToolbarInBalloon(o) && this._hideToolbar(o)
                }
                n && this._showToolbar(n, e)
            }
            _hideToolbar(t) {
                this._balloon.remove(t.view), this.stopListening(this._balloon, "change:visibleView")
            }
            _showToolbar(t, e) {
                this._isToolbarVisible(t) ? Kk(this.editor, e) : this._isToolbarInBalloon(t) || (t.initialized || (t.initialized = !0, t.view.fillFromConfig(t.itemsConfig, this.editor.ui.componentFactory)), this._balloon.add({
                    view: t.view,
                    position: Yk(this.editor, e),
                    balloonClassName: t.balloonClassName
                }), this.listenTo(this._balloon, "change:visibleView", (() => {
                    for (const t of this._toolbarDefinitions.values())
                        if (this._isToolbarVisible(t)) {
                            const e = t.getRelatedElement(this.editor.editing.view.document.selection);
                            Kk(this.editor, e)
                        }
                })))
            }
            _isToolbarVisible(t) {
                return this._balloon.visibleView === t.view
            }
            _isToolbarInBalloon(t) {
                return this._balloon.hasView(t.view)
            }
        }

        function Kk(t, e) {
            const n = t.plugins.get("ContextualBalloon"),
                o = Yk(t, e);
            n.updatePosition(o)
        }

        function Yk(t, e) {
            const n = t.editing.view,
                o = $p.defaultPositions;
            return {
                target: n.domConverter.mapViewToDom(e),
                positions: [o.northArrowSouth, o.northArrowSouthWest, o.northArrowSouthEast, o.southArrowNorth, o.southArrowNorthWest, o.southArrowNorthEast, o.viewportStickyNorth]
            }
        }
        K();
        Object.defineProperty, Object.defineProperties, Object.getOwnPropertyDescriptors, Object.getOwnPropertySymbols, Object.prototype.hasOwnProperty, Object.prototype.propertyIsEnumerable;
        K();
        var $k = n(8506),
            Zk = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()($k.Z, Zk);
        $k.Z.locals;
        var Qk = n(903),
            Jk = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(Qk.Z, Jk);
        Qk.Z.locals;
        class Xk extends Wr {
            static get pluginName() {
                return "DragDrop"
            }
            static get requires() {
                return [yf, Gk]
            }
            init() {
                const t = this.editor,
                    e = t.editing.view;
                this._draggedRange = null, this._draggingUid = "", this._draggableElement = null, this._updateDropMarkerThrottled = im((t => this._updateDropMarker(t)), 40), this._removeDropMarkerDelayed = Ni((() => this._removeDropMarker()), 40), this._clearDraggableAttributesDelayed = Ni((() => this._clearDraggableAttributes()), 40), t.plugins.has("DragDropExperimental") ? this.forceDisabled("DragDropExperimental") : (e.addObserver(Cf), e.addObserver(_g), this._setupDragging(), this._setupContentInsertionIntegration(), this._setupClipboardInputIntegration(), this._setupDropMarker(), this._setupDraggableAttributeHandling(), this.listenTo(t, "change:isReadOnly", ((t, e, n) => {
                    n ? this.forceDisabled("readOnlyMode") : this.clearForceDisabled("readOnlyMode")
                })), this.on("change:isEnabled", ((t, e, n) => {
                    n || this._finalizeDragging(!1)
                })), a.isAndroid && this.forceDisabled("noAndroidSupport"))
            }
            destroy() {
                return this._draggedRange && (this._draggedRange.detach(), this._draggedRange = null), this._updateDropMarkerThrottled.cancel(), this._removeDropMarkerDelayed.cancel(), this._clearDraggableAttributesDelayed.cancel(), super.destroy()
            }
            _setupDragging() {
                const t = this.editor,
                    e = t.model,
                    n = e.document,
                    o = t.editing.view,
                    i = o.document;
                this.listenTo(i, "dragstart", ((o, r) => {
                    const s = n.selection;
                    if (r.target && r.target.is("editableElement")) return void r.preventDefault();
                    const a = r.target ? nb(r.target) : null;
                    if (a) {
                        const n = t.editing.mapper.toModelElement(a);
                        if (this._draggedRange = ud.fromRange(e.createRangeOn(n)), t.plugins.has("WidgetToolbarRepository")) {
                            t.plugins.get("WidgetToolbarRepository").forceDisabled("dragDrop")
                        }
                    } else if (!i.selection.isCollapsed) {
                        const t = i.selection.getSelectedElement();
                        t && _k(t) || (this._draggedRange = ud.fromRange(s.getFirstRange()))
                    }
                    if (!this._draggedRange) return void r.preventDefault();
                    this._draggingUid = f();
                    const c = this.isEnabled && t.model.canEditAt(this._draggedRange);
                    r.dataTransfer.effectAllowed = c ? "copyMove" : "copy", r.dataTransfer.setData("application/ckeditor5-dragging-uid", this._draggingUid);
                    const l = e.createSelection(this._draggedRange.toRange()),
                        d = t.data.toView(e.getSelectedContent(l));
                    i.fire("clipboardOutput", {
                        dataTransfer: r.dataTransfer,
                        content: d,
                        method: "dragstart"
                    }), c || (this._draggedRange.detach(), this._draggedRange = null, this._draggingUid = "")
                }), {
                    priority: "low"
                }), this.listenTo(i, "dragend", ((t, e) => {
                    this._finalizeDragging(!e.dataTransfer.isCanceled && "move" == e.dataTransfer.dropEffect)
                }), {
                    priority: "low"
                }), this.listenTo(i, "dragenter", (() => {
                    this.isEnabled && o.focus()
                })), this.listenTo(i, "dragleave", (() => {
                    this._removeDropMarkerDelayed()
                })), this.listenTo(i, "dragging", ((e, n) => {
                    if (!this.isEnabled) return void(n.dataTransfer.dropEffect = "none");
                    this._removeDropMarkerDelayed.cancel();
                    const o = tb(t, n.targetRanges, n.target);
                    t.model.canEditAt(o) ? (this._draggedRange || (n.dataTransfer.dropEffect = "copy"), a.isGecko || ("copy" == n.dataTransfer.effectAllowed ? n.dataTransfer.dropEffect = "copy" : ["all", "copyMove"].includes(n.dataTransfer.effectAllowed) && (n.dataTransfer.dropEffect = "move")), o && this._updateDropMarkerThrottled(o)) : n.dataTransfer.dropEffect = "none"
                }), {
                    priority: "low"
                })
            }
            _setupClipboardInputIntegration() {
                const t = this.editor,
                    e = t.editing.view.document;
                this.listenTo(e, "clipboardInput", ((e, n) => {
                    if ("drop" != n.method) return;
                    const o = tb(t, n.targetRanges, n.target);
                    if (this._removeDropMarker(), !o || !t.model.canEditAt(o)) return this._finalizeDragging(!1), void e.stop();
                    this._draggedRange && this._draggingUid != n.dataTransfer.getData("application/ckeditor5-dragging-uid") && (this._draggedRange.detach(), this._draggedRange = null, this._draggingUid = "");
                    if ("move" == eb(n.dataTransfer) && this._draggedRange && this._draggedRange.containsRange(o, !0)) return this._finalizeDragging(!1), void e.stop();
                    n.targetRanges = [t.editing.mapper.toViewRange(o)]
                }), {
                    priority: "high"
                })
            }
            _setupContentInsertionIntegration() {
                const t = this.editor.plugins.get(yf);
                t.on("contentInsertion", ((t, e) => {
                    if (!this.isEnabled || "drop" !== e.method) return;
                    const n = e.targetRanges.map((t => this.editor.editing.mapper.toModelRange(t)));
                    this.editor.model.change((t => t.setSelection(n)))
                }), {
                    priority: "high"
                }), t.on("contentInsertion", ((t, e) => {
                    if (!this.isEnabled || "drop" !== e.method) return;
                    const n = "move" == eb(e.dataTransfer),
                        o = !e.resultRange || !e.resultRange.isCollapsed;
                    this._finalizeDragging(o && n)
                }), {
                    priority: "lowest"
                })
            }
            _setupDraggableAttributeHandling() {
                const t = this.editor,
                    e = t.editing.view,
                    n = e.document;
                this.listenTo(n, "mousedown", ((o, i) => {
                    if (a.isAndroid || !i) return;
                    this._clearDraggableAttributesDelayed.cancel();
                    let r = nb(i.target);
                    if (a.isBlink && !r && !n.selection.isCollapsed) {
                        const t = n.selection.getSelectedElement();
                        if (!t || !_k(t)) {
                            const t = n.selection.editableElement;
                            t && !t.isReadOnly && (r = t)
                        }
                    }
                    r && (e.change((t => {
                        t.setAttribute("draggable", "true", r)
                    })), this._draggableElement = t.editing.mapper.toModelElement(r))
                })), this.listenTo(n, "mouseup", (() => {
                    a.isAndroid || this._clearDraggableAttributesDelayed()
                }))
            }
            _clearDraggableAttributes() {
                const t = this.editor.editing;
                t.view.change((e => {
                    this._draggableElement && "$graveyard" != this._draggableElement.root.rootName && e.removeAttribute("draggable", t.mapper.toViewElement(this._draggableElement)), this._draggableElement = null
                }))
            }
            _setupDropMarker() {
                const t = this.editor;
                t.conversion.for("editingDowncast").markerToHighlight({
                    model: "drop-target",
                    view: {
                        classes: ["ck-clipboard-drop-target-range"]
                    }
                }), t.conversion.for("editingDowncast").markerToElement({
                    model: "drop-target",
                    view: (e, {
                        writer: n
                    }) => {
                        if (t.model.schema.checkChild(e.markerRange.start, "$text")) return n.createUIElement("span", {
                            class: "ck ck-clipboard-drop-target-position"
                        }, (function (t) {
                            const e = this.toDomElement(t);
                            return e.append("⁠", t.createElement("span"), "⁠"), e
                        }))
                    }
                })
            }
            _updateDropMarker(t) {
                const e = this.editor,
                    n = e.model.markers;
                e.model.change((e => {
                    n.has("drop-target") ? n.get("drop-target").getRange().isEqual(t) || e.updateMarker("drop-target", {
                        range: t
                    }) : e.addMarker("drop-target", {
                        range: t,
                        usingOperation: !1,
                        affectsData: !1
                    })
                }))
            }
            _removeDropMarker() {
                const t = this.editor.model;
                this._removeDropMarkerDelayed.cancel(), this._updateDropMarkerThrottled.cancel(), t.markers.has("drop-target") && t.change((t => {
                    t.removeMarker("drop-target")
                }))
            }
            _finalizeDragging(t) {
                const e = this.editor,
                    n = e.model;
                if (this._removeDropMarker(), this._clearDraggableAttributes(), e.plugins.has("WidgetToolbarRepository")) {
                    e.plugins.get("WidgetToolbarRepository").clearForceDisabled("dragDrop")
                }
                this._draggingUid = "", this._draggedRange && (t && this.isEnabled && n.deleteContent(n.createSelection(this._draggedRange), {
                    doNotAutoparagraph: !0
                }), this._draggedRange.detach(), this._draggedRange = null)
            }
        }

        function tb(t, e, n) {
            const o = t.model,
                i = t.editing.mapper;
            let r = null;
            const s = e ? e[0].start : null;
            if (n.is("uiElement") && (n = n.parent), r = function (t, e) {
                    const n = t.model,
                        o = t.editing.mapper;
                    if (_k(e)) return n.createRangeOn(o.toModelElement(e));
                    if (!e.is("editableElement")) {
                        const t = e.findAncestor((t => _k(t) || t.is("editableElement")));
                        if (_k(t)) return n.createRangeOn(o.toModelElement(t))
                    }
                    return null
                }(t, n), r) return r;
            const c = function (t, e) {
                    const n = t.editing.mapper,
                        o = t.editing.view,
                        i = n.toModelElement(e);
                    if (i) return i;
                    const r = o.createPositionBefore(e),
                        s = n.findMappedViewAncestor(r);
                    return n.toModelElement(s)
                }(t, n),
                l = s ? i.toModelPosition(s) : null;
            return l ? (r = function (t, e, n) {
                const o = t.model;
                if (!o.schema.checkChild(n, "$block")) return null;
                const i = o.createPositionAt(n, 0),
                    r = e.path.slice(0, i.path.length),
                    s = o.createPositionFromPath(e.root, r),
                    a = s.nodeAfter;
                if (a && o.schema.isObject(a)) return o.createRangeOn(a);
                return null
            }(t, l, c), r || (r = o.schema.getNearestSelectionRange(l, a.isGecko ? "forward" : "backward"), r || function (t, e) {
                const n = t.model;
                let o = e;
                for (; o;) {
                    if (n.schema.isObject(o)) return n.createRangeOn(o);
                    o = o.parent
                }
                return null
            }(t, l.parent))) : function (t, e) {
                const n = t.model,
                    o = n.schema,
                    i = n.createPositionAt(e, 0);
                return o.getNearestSelectionRange(i, "forward")
            }(t, c)
        }

        function eb(t) {
            return a.isGecko ? t.dropEffect : ["all", "copyMove"].includes(t.effectAllowed) ? "move" : "copy"
        }

        function nb(t) {
            if (t.is("editableElement")) return null;
            if (t.hasClass("ck-widget__selection-handle")) return t.findAncestor(_k);
            if (_k(t)) return t;
            const e = t.findAncestor((t => _k(t) || t.is("editableElement")));
            return _k(e) ? e : null
        }
        class ob extends Wr {
            static get pluginName() {
                return "PastePlainText"
            }
            static get requires() {
                return [yf]
            }
            init() {
                const t = this.editor,
                    e = t.model,
                    n = t.editing.view,
                    o = n.document,
                    i = e.document.selection;
                let r = !1;
                n.addObserver(Cf), this.listenTo(o, "keydown", ((t, e) => {
                    r = e.shiftKey
                })), t.plugins.get(yf).on("contentInsertion", ((t, n) => {
                    (r || function (t, e) {
                        if (t.childCount > 1) return !1;
                        const n = t.getChild(0);
                        if (e.isObject(n)) return !1;
                        return 0 == Array.from(n.getAttributeKeys()).length
                    }(n.content, e.schema)) && e.change((t => {
                        const o = Array.from(i.getAttributes()).filter((([t]) => e.schema.getAttributeProperties(t).isFormatting));
                        i.isCollapsed || e.deleteContent(i, {
                            doNotAutoparagraph: !0
                        }), o.push(...i.getAttributes());
                        const r = t.createRangeIn(n.content);
                        for (const e of r.getItems()) e.is("$textProxy") && t.setAttributes(o, e)
                    }))
                }))
            }
        }
        class ib extends Wr {
            static get pluginName() {
                return "Clipboard"
            }
            static get requires() {
                return [yf, Xk, ob]
            }
        }
        Zo("px");
        Object.defineProperty, Object.defineProperties, Object.getOwnPropertyDescriptors, Object.getOwnPropertySymbols, Object.prototype.hasOwnProperty, Object.prototype.propertyIsEnumerable;
        class rb extends Yr {
            constructor(t) {
                super(t), this.affectsData = !1
            }
            execute() {
                const t = this.editor.model,
                    e = t.document.selection;
                let n = t.schema.getLimitElement(e);
                if (e.containsEntireContent(n) || !sb(t.schema, n))
                    do {
                        if (n = n.parent, !n) return
                    } while (!sb(t.schema, n));
                t.change((t => {
                    t.setSelection(n, "in")
                }))
            }
        }

        function sb(t, e) {
            return t.isLimit(e) && (t.checkChild(e, "$text") || t.checkChild(e, "paragraph"))
        }
        const ab = Ai("Ctrl+A");
        class cb extends Wr {
            static get pluginName() {
                return "SelectAllEditing"
            }
            init() {
                const t = this.editor,
                    e = t.editing.view.document;
                t.commands.add("selectAll", new rb(t)), this.listenTo(e, "keydown", ((e, n) => {
                    wi(n) === ab && (t.execute("selectAll"), n.preventDefault())
                }))
            }
        }
        class lb extends Wr {
            static get pluginName() {
                return "SelectAllUI"
            }
            init() {
                const t = this.editor;
                t.ui.componentFactory.add("selectAll", (e => {
                    const n = t.commands.get("selectAll"),
                        o = new br(e),
                        i = e.t;
                    return o.set({
                        label: i("Select all"),
                        icon: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M.75 15.5a.75.75 0 0 1 .75.75V18l.008.09A.5.5 0 0 0 2 18.5h1.75a.75.75 0 1 1 0 1.5H1.5l-.144-.007a1.5 1.5 0 0 1-1.35-1.349L0 18.5v-2.25a.75.75 0 0 1 .75-.75zm18.5 0a.75.75 0 0 1 .75.75v2.25l-.007.144a1.5 1.5 0 0 1-1.349 1.35L18.5 20h-2.25a.75.75 0 1 1 0-1.5H18a.5.5 0 0 0 .492-.41L18.5 18v-1.75a.75.75 0 0 1 .75-.75zm-10.45 3c.11 0 .2.09.2.2v1.1a.2.2 0 0 1-.2.2H7.2a.2.2 0 0 1-.2-.2v-1.1c0-.11.09-.2.2-.2h1.6zm4 0c.11 0 .2.09.2.2v1.1a.2.2 0 0 1-.2.2h-1.6a.2.2 0 0 1-.2-.2v-1.1c0-.11.09-.2.2-.2h1.6zm.45-5.5a.75.75 0 1 1 0 1.5h-8.5a.75.75 0 1 1 0-1.5h8.5zM1.3 11c.11 0 .2.09.2.2v1.6a.2.2 0 0 1-.2.2H.2a.2.2 0 0 1-.2-.2v-1.6c0-.11.09-.2.2-.2h1.1zm18.5 0c.11 0 .2.09.2.2v1.6a.2.2 0 0 1-.2.2h-1.1a.2.2 0 0 1-.2-.2v-1.6c0-.11.09-.2.2-.2h1.1zm-4.55-2a.75.75 0 1 1 0 1.5H4.75a.75.75 0 1 1 0-1.5h10.5zM1.3 7c.11 0 .2.09.2.2v1.6a.2.2 0 0 1-.2.2H.2a.2.2 0 0 1-.2-.2V7.2c0-.11.09-.2.2-.2h1.1zm18.5 0c.11 0 .2.09.2.2v1.6a.2.2 0 0 1-.2.2h-1.1a.2.2 0 0 1-.2-.2V7.2c0-.11.09-.2.2-.2h1.1zm-4.55-2a.75.75 0 1 1 0 1.5h-2.5a.75.75 0 1 1 0-1.5h2.5zm-5 0a.75.75 0 1 1 0 1.5h-5.5a.75.75 0 0 1 0-1.5h5.5zm-6.5-5a.75.75 0 0 1 0 1.5H2a.5.5 0 0 0-.492.41L1.5 2v1.75a.75.75 0 0 1-1.5 0V1.5l.007-.144A1.5 1.5 0 0 1 1.356.006L1.5 0h2.25zM18.5 0l.144.007a1.5 1.5 0 0 1 1.35 1.349L20 1.5v2.25a.75.75 0 1 1-1.5 0V2l-.008-.09A.5.5 0 0 0 18 1.5h-1.75a.75.75 0 1 1 0-1.5h2.25zM8.8 0c.11 0 .2.09.2.2v1.1a.2.2 0 0 1-.2.2H7.2a.2.2 0 0 1-.2-.2V.2c0-.11.09-.2.2-.2h1.6zm4 0c.11 0 .2.09.2.2v1.1a.2.2 0 0 1-.2.2h-1.6a.2.2 0 0 1-.2-.2V.2c0-.11.09-.2.2-.2h1.6z"/></svg>',
                        keystroke: "Ctrl+A",
                        tooltip: !0
                    }), o.bind("isEnabled").to(n, "isEnabled"), this.listenTo(o, "execute", (() => {
                        t.execute("selectAll"), t.editing.view.focus()
                    })), o
                }))
            }
        }
        class db extends Wr {
            static get requires() {
                return [cb, lb]
            }
            static get pluginName() {
                return "SelectAll"
            }
        }
        var hb = Object.defineProperty,
            ub = Object.getOwnPropertySymbols,
            gb = Object.prototype.hasOwnProperty,
            pb = Object.prototype.propertyIsEnumerable,
            mb = (t, e, n) => e in t ? hb(t, e, {
                enumerable: !0,
                configurable: !0,
                writable: !0,
                value: n
            }) : t[e] = n;
        class fb extends Yr {
            constructor(t) {
                super(t), this._stack = [], this._createdBatches = new WeakSet, this.refresh(), this._isEnabledBasedOnSelection = !1, this.listenTo(t.data, "set", ((t, e) => {
                    e[1] = ((t, e) => {
                        for (var n in e || (e = {})) gb.call(e, n) && mb(t, n, e[n]);
                        if (ub)
                            for (var n of ub(e)) pb.call(e, n) && mb(t, n, e[n]);
                        return t
                    })({}, e[1]);
                    const n = e[1];
                    n.batchType || (n.batchType = {
                        isUndoable: !1
                    })
                }), {
                    priority: "high"
                }), this.listenTo(t.data, "set", ((t, e) => {
                    e[1].batchType.isUndoable || this.clearStack()
                }))
            }
            refresh() {
                this.isEnabled = this._stack.length > 0
            }
            get createdBatches() {
                return this._createdBatches
            }
            addBatch(t) {
                const e = this.editor.model.document.selection,
                    n = {
                        ranges: e.hasOwnRange ? Array.from(e.getRanges()) : [],
                        isBackward: e.isBackward
                    };
                this._stack.push({
                    batch: t,
                    selection: n
                }), this.refresh()
            }
            clearStack() {
                this._stack = [], this.refresh()
            }
            _restoreSelection(t, e, n) {
                const o = this.editor.model,
                    i = o.document,
                    r = [],
                    s = t.map((t => t.getTransformedByOperations(n))),
                    a = s.flat();
                for (const t of s) {
                    const e = t.filter((t => t.root != i.graveyard)).filter((t => !bb(t, a)));
                    e.length && (kb(e), r.push(e[0]))
                }
                r.length && o.change((t => {
                    t.setSelection(r, {
                        backward: e
                    })
                }))
            }
            _undo(t, e) {
                const n = this.editor.model,
                    o = n.document;
                this._createdBatches.add(e);
                const i = t.operations.slice().filter((t => t.isDocumentOperation));
                i.reverse();
                for (const t of i) {
                    const i = t.baseVersion + 1,
                        r = Array.from(o.history.getOperations(i)),
                        s = iu([t.getReversed()], r, {
                            useRelations: !0,
                            document: this.editor.model.document,
                            padWithNoOps: !1,
                            forceWeakRemove: !0
                        }).operationsA;
                    for (let i of s) {
                        const r = i.affectedSelectable;
                        r && !n.canEditAt(r) && (i = new Yh(i.baseVersion)), e.addOperation(i), n.applyOperation(i), o.history.setOperationAsUndone(t, i)
                    }
                }
            }
        }

        function kb(t) {
            t.sort(((t, e) => t.start.isBefore(e.start) ? -1 : 1));
            for (let e = 1; e < t.length; e++) {
                const n = t[e - 1].getJoined(t[e], !0);
                n && (e--, t.splice(e, 2, n))
            }
        }

        function bb(t, e) {
            return e.some((e => e !== t && e.containsRange(t, !0)))
        }
        class wb extends fb {
            execute(t = null) {
                const e = t ? this._stack.findIndex((e => e.batch == t)) : this._stack.length - 1,
                    n = this._stack.splice(e, 1)[0],
                    o = this.editor.model.createBatch({
                        isUndo: !0
                    });
                this.editor.model.enqueueChange(o, (() => {
                    this._undo(n.batch, o);
                    const t = this.editor.model.document.history.getOperations(n.batch.baseVersion);
                    this._restoreSelection(n.selection.ranges, n.selection.isBackward, t)
                })), this.fire("revert", n.batch, o), this.refresh()
            }
        }
        class Ab extends fb {
            execute() {
                const t = this._stack.pop(),
                    e = this.editor.model.createBatch({
                        isUndo: !0
                    });
                this.editor.model.enqueueChange(e, (() => {
                    const n = t.batch.operations[t.batch.operations.length - 1].baseVersion + 1,
                        o = this.editor.model.document.history.getOperations(n);
                    this._restoreSelection(t.selection.ranges, t.selection.isBackward, o), this._undo(t.batch, e)
                })), this.refresh()
            }
        }
        class Cb extends Wr {
            constructor() {
                super(...arguments), this._batchRegistry = new WeakSet
            }
            static get pluginName() {
                return "UndoEditing"
            }
            init() {
                const t = this.editor;
                this._undoCommand = new wb(t), this._redoCommand = new Ab(t), t.commands.add("undo", this._undoCommand), t.commands.add("redo", this._redoCommand), this.listenTo(t.model, "applyOperation", ((t, e) => {
                    const n = e[0];
                    if (!n.isDocumentOperation) return;
                    const o = n.batch,
                        i = this._redoCommand.createdBatches.has(o),
                        r = this._undoCommand.createdBatches.has(o);
                    this._batchRegistry.has(o) || (this._batchRegistry.add(o), o.isUndoable && (i ? this._undoCommand.addBatch(o) : r || (this._undoCommand.addBatch(o), this._redoCommand.clearStack())))
                }), {
                    priority: "highest"
                }), this.listenTo(this._undoCommand, "revert", ((t, e, n) => {
                    this._redoCommand.addBatch(n)
                })), t.keystrokes.set("CTRL+Z", "undo"), t.keystrokes.set("CTRL+Y", "redo"), t.keystrokes.set("CTRL+SHIFT+Z", "redo")
            }
        }
        const _b = '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m5.042 9.367 2.189 1.837a.75.75 0 0 1-.965 1.149l-3.788-3.18a.747.747 0 0 1-.21-.284.75.75 0 0 1 .17-.945L6.23 4.762a.75.75 0 1 1 .964 1.15L4.863 7.866h8.917A.75.75 0 0 1 14 7.9a4 4 0 1 1-1.477 7.718l.344-1.489a2.5 2.5 0 1 0 1.094-4.73l.008-.032H5.042z"/></svg>',
            vb = '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m14.958 9.367-2.189 1.837a.75.75 0 0 0 .965 1.149l3.788-3.18a.747.747 0 0 0 .21-.284.75.75 0 0 0-.17-.945L13.77 4.762a.75.75 0 1 0-.964 1.15l2.331 1.955H6.22A.75.75 0 0 0 6 7.9a4 4 0 1 0 1.477 7.718l-.344-1.489A2.5 2.5 0 1 1 6.039 9.4l-.008-.032h8.927z"/></svg>';
        class yb extends Wr {
            static get pluginName() {
                return "UndoUI"
            }
            init() {
                const t = this.editor,
                    e = t.locale,
                    n = t.t,
                    o = "ltr" == e.uiLanguageDirection ? _b : vb,
                    i = "ltr" == e.uiLanguageDirection ? vb : _b;
                this._addButton("undo", n("Undo"), "CTRL+Z", o), this._addButton("redo", n("Redo"), "CTRL+Y", i)
            }
            _addButton(t, e, n, o) {
                const i = this.editor;
                i.ui.componentFactory.add(t, (r => {
                    const s = i.commands.get(t),
                        a = new br(r);
                    return a.set({
                        label: e,
                        icon: o,
                        keystroke: n,
                        tooltip: !0
                    }), a.bind("isEnabled").to(s, "isEnabled"), this.listenTo(a, "execute", (() => {
                        i.execute(t), i.editing.view.focus()
                    })), a
                }))
            }
        }
        class xb extends Wr {
            static get requires() {
                return [Cb, yb]
            }
            static get pluginName() {
                return "Undo"
            }
        }
        class Eb extends(K()) {
            constructor() {
                super();
                const t = new window.FileReader;
                this._reader = t, this._data = void 0, this.set("loaded", 0), t.onprogress = t => {
                    this.loaded = t.loaded
                }
            }
            get error() {
                return this._reader.error
            }
            get data() {
                return this._data
            }
            read(t) {
                const e = this._reader;
                return this.total = t.size, new Promise(((n, o) => {
                    e.onload = () => {
                        const t = e.result;
                        this._data = t, n(t)
                    }, e.onerror = () => {
                        o("error")
                    }, e.onabort = () => {
                        o("aborted")
                    }, this._reader.readAsDataURL(t)
                }))
            }
            abort() {
                this._reader.abort()
            }
        }
        class Db extends Wr {
            constructor() {
                super(...arguments), this.loaders = new Si, this._loadersMap = new Map, this._pendingAction = null
            }
            static get pluginName() {
                return "FileRepository"
            }
            static get requires() {
                return [Sg]
            }
            init() {
                this.loaders.on("change", (() => this._updatePendingAction())), this.set("uploaded", 0), this.set("uploadTotal", null), this.bind("uploadedPercent").to(this, "uploaded", this, "uploadTotal", ((t, e) => e ? t / e * 100 : 0))
            }
            getLoader(t) {
                return this._loadersMap.get(t) || null
            }
            createLoader(t) {
                if (!this.createUploadAdapter) return C("filerepository-no-upload-adapter"), null;
                const e = new Sb(Promise.resolve(t), this.createUploadAdapter);
                return this.loaders.add(e), this._loadersMap.set(t, e), t instanceof Promise && e.file.then((t => {
                    this._loadersMap.set(t, e)
                })).catch((() => {})), e.on("change:uploaded", (() => {
                    let t = 0;
                    for (const e of this.loaders) t += e.uploaded;
                    this.uploaded = t
                })), e.on("change:uploadTotal", (() => {
                    let t = 0;
                    for (const e of this.loaders) e.uploadTotal && (t += e.uploadTotal);
                    this.uploadTotal = t
                })), e
            }
            destroyLoader(t) {
                const e = t instanceof Sb ? t : this.getLoader(t);
                e._destroy(), this.loaders.remove(e), this._loadersMap.forEach(((t, n) => {
                    t === e && this._loadersMap.delete(n)
                }))
            }
            _updatePendingAction() {
                const t = this.editor.plugins.get(Sg);
                if (this.loaders.length) {
                    if (!this._pendingAction) {
                        const e = this.editor.t,
                            n = t => `${e("Upload in progress")} ${parseInt(t)}%.`;
                        this._pendingAction = t.add(n(this.uploadedPercent)), this._pendingAction.bind("message").to(this, "uploadedPercent", n)
                    }
                } else t.remove(this._pendingAction), this._pendingAction = null
            }
        }
        class Sb extends(K()) {
            constructor(t, e) {
                super(), this.id = f(), this._filePromiseWrapper = this._createFilePromiseWrapper(t), this._adapter = e(this), this._reader = new Eb, this.set("status", "idle"), this.set("uploaded", 0), this.set("uploadTotal", null), this.bind("uploadedPercent").to(this, "uploaded", this, "uploadTotal", ((t, e) => e ? t / e * 100 : 0)), this.set("uploadResponse", null)
            }
            get file() {
                return this._filePromiseWrapper ? this._filePromiseWrapper.promise.then((t => this._filePromiseWrapper ? t : null)) : Promise.resolve(null)
            }
            get data() {
                return this._reader.data
            }
            read() {
                if ("idle" != this.status) throw new A("filerepository-read-wrong-status", this);
                return this.status = "reading", this.file.then((t => this._reader.read(t))).then((t => {
                    if ("reading" !== this.status) throw this.status;
                    return this.status = "idle", t
                })).catch((t => {
                    if ("aborted" === t) throw this.status = "aborted", "aborted";
                    throw this.status = "error", this._reader.error ? this._reader.error : t
                }))
            }
            upload() {
                if ("idle" != this.status) throw new A("filerepository-upload-wrong-status", this);
                return this.status = "uploading", this.file.then((() => this._adapter.upload())).then((t => (this.uploadResponse = t, this.status = "idle", t))).catch((t => {
                    if ("aborted" === this.status) throw "aborted";
                    throw this.status = "error", t
                }))
            }
            abort() {
                const t = this.status;
                this.status = "aborted", this._filePromiseWrapper.isFulfilled ? "reading" == t ? this._reader.abort() : "uploading" == t && this._adapter.abort && this._adapter.abort() : (this._filePromiseWrapper.promise.catch((() => {})), this._filePromiseWrapper.rejecter("aborted")), this._destroy()
            }
            _destroy() {
                this._filePromiseWrapper = void 0, this._reader = void 0, this._adapter = void 0, this.uploadResponse = void 0
            }
            _createFilePromiseWrapper(t) {
                const e = {};
                return e.promise = new Promise(((n, o) => {
                    e.rejecter = o, e.isFulfilled = !1, t.then((t => {
                        e.isFulfilled = !0, n(t)
                    })).catch((t => {
                        e.isFulfilled = !0, o(t)
                    }))
                })), e
            }
        }
        class Ib extends Hi {
            constructor(t) {
                super(t), this.buttonView = new br(t), this._fileInputView = new Mb(t), this._fileInputView.bind("acceptedType").to(this), this._fileInputView.bind("allowMultipleFiles").to(this), this._fileInputView.delegate("done").to(this), this.setTemplate({
                    tag: "span",
                    attributes: {
                        class: "ck-file-dialog-button"
                    },
                    children: [this.buttonView, this._fileInputView]
                }), this.buttonView.on("execute", (() => {
                    this._fileInputView.open()
                }))
            }
            focus() {
                this.buttonView.focus()
            }
        }
        class Mb extends Hi {
            constructor(t) {
                super(t), this.set("acceptedType", void 0), this.set("allowMultipleFiles", !1);
                const e = this.bindTemplate;
                this.setTemplate({
                    tag: "input",
                    attributes: {
                        class: ["ck-hidden"],
                        type: "file",
                        tabindex: "-1",
                        accept: e.to("acceptedType"),
                        multiple: e.to("allowMultipleFiles")
                    },
                    on: {
                        change: e.to((() => {
                            this.element && this.element.files && this.element.files.length && this.fire("done", this.element.files), this.element.value = ""
                        }))
                    }
                })
            }
            open() {
                this.element.click()
            }
        }
        Object.defineProperty, Object.defineProperties, Object.getOwnPropertyDescriptors, Object.getOwnPropertySymbols, Object.prototype.hasOwnProperty, Object.prototype.propertyIsEnumerable;
        const Tb = "ckCsrfToken",
            Bb = "abcdefghijklmnopqrstuvwxyz0123456789";

        function Nb() {
            let t = function (t) {
                t = t.toLowerCase();
                const e = document.cookie.split(";");
                for (const n of e) {
                    const e = n.split("=");
                    if (decodeURIComponent(e[0].trim().toLowerCase()) === t) return decodeURIComponent(e[1])
                }
                return null
            }(Tb);
            var e, n;
            return t && 40 == t.length || (t = function (t) {
                let e = "";
                const n = new Uint8Array(t);
                window.crypto.getRandomValues(n);
                for (let t = 0; t < n.length; t++) {
                    const o = Bb.charAt(n[t] % Bb.length);
                    e += Math.random() > .5 ? o.toUpperCase() : o
                }
                return e
            }(40), e = Tb, n = t, document.cookie = encodeURIComponent(e) + "=" + encodeURIComponent(n) + ";path=/"), t
        }
        class Pb {
            constructor(t, e, n) {
                this.loader = t, this.url = e, this.t = n
            }
            upload() {
                return this.loader.file.then((t => new Promise(((e, n) => {
                    this._initRequest(), this._initListeners(e, n, t), this._sendRequest(t)
                }))))
            }
            abort() {
                this.xhr && this.xhr.abort()
            }
            _initRequest() {
                const t = this.xhr = new XMLHttpRequest;
                t.open("POST", this.url, !0), t.responseType = "json"
            }
            _initListeners(t, e, n) {
                const o = this.xhr,
                    i = this.loader,
                    r = (0, this.t)("Cannot upload file:") + ` ${n.name}.`;
                o.addEventListener("error", (() => e(r))), o.addEventListener("abort", (() => e())), o.addEventListener("load", (() => {
                    const n = o.response;
                    if (!n || !n.uploaded) return e(n && n.error && n.error.message ? n.error.message : r);
                    t({
                        default: n.url
                    })
                })), o.upload && o.upload.addEventListener("progress", (t => {
                    t.lengthComputable && (i.uploadTotal = t.total, i.uploaded = t.loaded)
                }))
            }
            _sendRequest(t) {
                const e = new FormData;
                e.append("upload", t), e.append("ckCsrfToken", Nb()), this.xhr.send(e)
            }
        }

        function zb(t, e, n, o) {
            let i, r = null;
            "function" == typeof o ? i = o : (r = t.commands.get(o), i = () => {
                t.execute(o)
            }), t.model.document.on("change:data", ((s, a) => {
                if (r && !r.isEnabled || !e.isEnabled) return;
                const c = Ii(t.model.document.selection.getRanges());
                if (!c.isCollapsed) return;
                if (a.isUndo || !a.isLocal) return;
                const l = Array.from(t.model.document.differ.getChanges()),
                    d = l[0];
                if (1 != l.length || "insert" !== d.type || "$text" != d.name || 1 != d.length) return;
                const h = d.position.parent;
                if (h.is("element", "codeBlock")) return;
                if (h.is("element", "listItem") && "function" != typeof o && !["numberedList", "bulletedList", "todoList"].includes(o)) return;
                if (r && !0 === r.value) return;
                const u = h.getChild(0),
                    g = t.model.createRangeOn(u);
                if (!g.containsRange(c) && !c.end.isEqual(g.end)) return;
                const p = n.exec(u.data.substr(0, c.end.offset));
                p && t.model.enqueueChange((e => {
                    const n = e.createPositionAt(h, 0),
                        o = e.createPositionAt(h, p[0].length),
                        r = new ud(n, o);
                    if (!1 !== i({
                            match: p
                        })) {
                        e.remove(r);
                        const n = t.model.document.selection.getFirstRange(),
                            o = e.createRangeIn(h);
                        !h.isEmpty || o.isEqual(n) || o.containsRange(n, !0) || e.remove(h)
                    }
                    r.detach(), t.model.enqueueChange((() => {
                        t.plugins.get("Delete").requestUndoOnBackspace()
                    }))
                }))
            }))
        }

        function Ob(t, e, n, o) {
            let i, r;
            n instanceof RegExp ? i = n : r = n, r = r || (t => {
                let e;
                const n = [],
                    o = [];
                for (; null !== (e = i.exec(t)) && !(e && e.length < 4);) {
                    let {
                        index: t,
                        1: i,
                        2: r,
                        3: s
                    } = e;
                    const a = i + r + s;
                    t += e[0].length - a.length;
                    const c = [t, t + i.length],
                        l = [t + i.length + r.length, t + i.length + r.length + s.length];
                    n.push(c), n.push(l), o.push([t + i.length, t + i.length + r.length])
                }
                return {
                    remove: n,
                    format: o
                }
            }), t.model.document.on("change:data", ((n, i) => {
                if (i.isUndo || !i.isLocal || !e.isEnabled) return;
                const s = t.model,
                    a = s.document.selection;
                if (!a.isCollapsed) return;
                const c = Array.from(s.document.differ.getChanges()),
                    l = c[0];
                if (1 != c.length || "insert" !== l.type || "$text" != l.name || 1 != l.length) return;
                const d = a.focus,
                    h = d.parent,
                    {
                        text: u,
                        range: g
                    } = function (t, e) {
                        let n = t.start;
                        const o = Array.from(t.getItems()).reduce(((t, o) => !o.is("$text") && !o.is("$textProxy") || o.getAttribute("code") ? (n = e.createPositionAfter(o), "") : t + o.data), "");
                        return {
                            text: o,
                            range: e.createRange(n, t.end)
                        }
                    }(s.createRange(s.createPositionAt(h, 0), d), s),
                    p = r(u),
                    m = Lb(g.start, p.format, s),
                    f = Lb(g.start, p.remove, s);
                m.length && f.length && s.enqueueChange((e => {
                    if (!1 !== o(e, m)) {
                        for (const t of f.reverse()) e.remove(t);
                        s.enqueueChange((() => {
                            t.plugins.get("Delete").requestUndoOnBackspace()
                        }))
                    }
                }))
            }))
        }

        function Lb(t, e, n) {
            return e.filter((t => void 0 !== t[0] && void 0 !== t[1])).map((e => n.createRange(t.getShiftedBy(e[0]), t.getShiftedBy(e[1]))))
        }

        function jb(t, e) {
            return (n, o) => {
                if (!t.commands.get(e).isEnabled) return !1;
                const i = t.model.schema.getValidRanges(o, e);
                for (const t of i) n.setAttribute(e, !0, t);
                n.removeSelectionAttribute(e)
            }
        }
        class Rb extends Yr {
            constructor(t, e) {
                super(t), this.attributeKey = e
            }
            refresh() {
                const t = this.editor.model,
                    e = t.document;
                this.value = this._getValueFromFirstAllowedNode(), this.isEnabled = t.schema.checkAttributeInSelection(e.selection, this.attributeKey)
            }
            execute(t = {}) {
                const e = this.editor.model,
                    n = e.document.selection,
                    o = void 0 === t.forceValue ? !this.value : t.forceValue;
                e.change((t => {
                    if (n.isCollapsed) o ? t.setSelectionAttribute(this.attributeKey, !0) : t.removeSelectionAttribute(this.attributeKey);
                    else {
                        const i = e.schema.getValidRanges(n.getRanges(), this.attributeKey);
                        for (const e of i) o ? t.setAttribute(this.attributeKey, o, e) : t.removeAttribute(this.attributeKey, e)
                    }
                }))
            }
            _getValueFromFirstAllowedNode() {
                const t = this.editor.model,
                    e = t.schema,
                    n = t.document.selection;
                if (n.isCollapsed) return n.hasAttribute(this.attributeKey);
                for (const t of n.getRanges())
                    for (const n of t.getItems())
                        if (e.checkAttribute(n, this.attributeKey)) return n.hasAttribute(this.attributeKey);
                return !1
            }
        }
        const Fb = "bold";
        class Vb extends Wr {
            static get pluginName() {
                return "BoldEditing"
            }
            init() {
                const t = this.editor;
                t.model.schema.extend("$text", {
                    allowAttributes: Fb
                }), t.model.schema.setAttributeProperties(Fb, {
                    isFormatting: !0,
                    copyOnEnter: !0
                }), t.conversion.attributeToElement({
                    model: Fb,
                    view: "strong",
                    upcastAlso: ["b", t => {
                        const e = t.getStyle("font-weight");
                        return e && ("bold" == e || Number(e) >= 600) ? {
                            name: !0,
                            styles: ["font-weight"]
                        } : null
                    }]
                }), t.commands.add(Fb, new Rb(t, Fb)), t.keystrokes.set("CTRL+B", Fb)
            }
        }
        const Ub = "bold";
        class Hb extends Wr {
            static get pluginName() {
                return "BoldUI"
            }
            init() {
                const t = this.editor,
                    e = t.t;
                t.ui.componentFactory.add(Ub, (n => {
                    const o = t.commands.get(Ub),
                        i = new br(n);
                    return i.set({
                        label: e("Bold"),
                        icon: Ig.bold,
                        keystroke: "CTRL+B",
                        tooltip: !0,
                        isToggleable: !0
                    }), i.bind("isOn", "isEnabled").to(o, "value", "isEnabled"), this.listenTo(i, "execute", (() => {
                        t.execute(Ub), t.editing.view.focus()
                    })), i
                }))
            }
        }
        var Gb = n(8603),
            qb = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(Gb.Z, qb);
        Gb.Z.locals;
        const Wb = "italic";
        class Kb extends Wr {
            static get pluginName() {
                return "ItalicEditing"
            }
            init() {
                const t = this.editor;
                t.model.schema.extend("$text", {
                    allowAttributes: Wb
                }), t.model.schema.setAttributeProperties(Wb, {
                    isFormatting: !0,
                    copyOnEnter: !0
                }), t.conversion.attributeToElement({
                    model: Wb,
                    view: "i",
                    upcastAlso: ["em", {
                        styles: {
                            "font-style": "italic"
                        }
                    }]
                }), t.commands.add(Wb, new Rb(t, Wb)), t.keystrokes.set("CTRL+I", Wb)
            }
        }
        const Yb = "italic";
        class $b extends Wr {
            static get pluginName() {
                return "ItalicUI"
            }
            init() {
                const t = this.editor,
                    e = t.t;
                t.ui.componentFactory.add(Yb, (n => {
                    const o = t.commands.get(Yb),
                        i = new br(n);
                    return i.set({
                        label: e("Italic"),
                        icon: '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m9.586 14.633.021.004c-.036.335.095.655.393.962.082.083.173.15.274.201h1.474a.6.6 0 1 1 0 1.2H5.304a.6.6 0 0 1 0-1.2h1.15c.474-.07.809-.182 1.005-.334.157-.122.291-.32.404-.597l2.416-9.55a1.053 1.053 0 0 0-.281-.823 1.12 1.12 0 0 0-.442-.296H8.15a.6.6 0 0 1 0-1.2h6.443a.6.6 0 1 1 0 1.2h-1.195c-.376.056-.65.155-.823.296-.215.175-.423.439-.623.79l-2.366 9.347z"/></svg>',
                        keystroke: "CTRL+I",
                        tooltip: !0,
                        isToggleable: !0
                    }), i.bind("isOn", "isEnabled").to(o, "value", "isEnabled"), this.listenTo(i, "execute", (() => {
                        t.execute(Yb), t.editing.view.focus()
                    })), i
                }))
            }
        }
        class Zb extends Yr {
            refresh() {
                this.value = this._getValue(), this.isEnabled = this._checkEnabled()
            }
            execute(t = {}) {
                const e = this.editor.model,
                    n = e.schema,
                    o = e.document.selection,
                    i = Array.from(o.getSelectedBlocks()),
                    r = void 0 === t.forceValue ? !this.value : t.forceValue;
                e.change((t => {
                    if (r) {
                        const e = i.filter((t => Qb(t) || Xb(n, t)));
                        this._applyQuote(t, e)
                    } else this._removeQuote(t, i.filter(Qb))
                }))
            }
            _getValue() {
                const t = Ii(this.editor.model.document.selection.getSelectedBlocks());
                return !(!t || !Qb(t))
            }
            _checkEnabled() {
                if (this.value) return !0;
                const t = this.editor.model.document.selection,
                    e = this.editor.model.schema,
                    n = Ii(t.getSelectedBlocks());
                return !!n && Xb(e, n)
            }
            _removeQuote(t, e) {
                Jb(t, e).reverse().forEach((e => {
                    if (e.start.isAtStart && e.end.isAtEnd) return void t.unwrap(e.start.parent);
                    if (e.start.isAtStart) {
                        const n = t.createPositionBefore(e.start.parent);
                        return void t.move(e, n)
                    }
                    e.end.isAtEnd || t.split(e.end);
                    const n = t.createPositionAfter(e.end.parent);
                    t.move(e, n)
                }))
            }
            _applyQuote(t, e) {
                const n = [];
                Jb(t, e).reverse().forEach((e => {
                    let o = Qb(e.start);
                    o || (o = t.createElement("blockQuote"), t.wrap(e, o)), n.push(o)
                })), n.reverse().reduce(((e, n) => e.nextSibling == n ? (t.merge(t.createPositionAfter(e)), e) : n))
            }
        }

        function Qb(t) {
            return "blockQuote" == t.parent.name ? t.parent : null
        }

        function Jb(t, e) {
            let n, o = 0;
            const i = [];
            for (; o < e.length;) {
                const r = e[o],
                    s = e[o + 1];
                n || (n = t.createPositionBefore(r)), s && r.nextSibling == s || (i.push(t.createRange(n, t.createPositionAfter(r))), n = null), o++
            }
            return i
        }

        function Xb(t, e) {
            const n = t.checkChild(e.parent, "blockQuote"),
                o = t.checkChild(["$root", "blockQuote"], e);
            return n && o
        }
        class tw extends Wr {
            static get pluginName() {
                return "BlockQuoteEditing"
            }
            static get requires() {
                return [dk, jf]
            }
            init() {
                const t = this.editor,
                    e = t.model.schema;
                t.commands.add("blockQuote", new Zb(t)), e.register("blockQuote", {
                    inheritAllFrom: "$container"
                }), t.conversion.elementToElement({
                    model: "blockQuote",
                    view: "blockquote"
                }), t.model.document.registerPostFixer((n => {
                    const o = t.model.document.differ.getChanges();
                    for (const t of o)
                        if ("insert" == t.type) {
                            const o = t.position.nodeAfter;
                            if (!o) continue;
                            if (o.is("element", "blockQuote") && o.isEmpty) return n.remove(o), !0;
                            if (o.is("element", "blockQuote") && !e.checkChild(t.position, o)) return n.unwrap(o), !0;
                            if (o.is("element")) {
                                const t = n.createRangeIn(o);
                                for (const o of t.getItems())
                                    if (o.is("element", "blockQuote") && !e.checkChild(n.createPositionBefore(o), o)) return n.unwrap(o), !0
                            }
                        } else if ("remove" == t.type) {
                        const e = t.position.parent;
                        if (e.is("element", "blockQuote") && e.isEmpty) return n.remove(e), !0
                    }
                    return !1
                }));
                const n = this.editor.editing.view.document,
                    o = t.model.document.selection,
                    i = t.commands.get("blockQuote");
                this.listenTo(n, "enter", ((e, n) => {
                    if (!o.isCollapsed || !i.value) return;
                    o.getLastPosition().parent.isEmpty && (t.execute("blockQuote"), t.editing.view.scrollToTheSelection(), n.preventDefault(), e.stop())
                }), {
                    context: "blockquote"
                }), this.listenTo(n, "delete", ((e, n) => {
                    if ("backward" != n.direction || !o.isCollapsed || !i.value) return;
                    const r = o.getLastPosition().parent;
                    r.isEmpty && !r.previousSibling && (t.execute("blockQuote"), t.editing.view.scrollToTheSelection(), n.preventDefault(), e.stop())
                }), {
                    context: "blockquote"
                })
            }
        }
        var ew = n(3062),
            nw = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(ew.Z, nw);
        ew.Z.locals;
        class ow extends Wr {
            static get pluginName() {
                return "BlockQuoteUI"
            }
            init() {
                const t = this.editor,
                    e = t.t;
                t.ui.componentFactory.add("blockQuote", (n => {
                    const o = t.commands.get("blockQuote"),
                        i = new br(n);
                    return i.set({
                        label: e("Block quote"),
                        icon: Ig.quote,
                        tooltip: !0,
                        isToggleable: !0
                    }), i.bind("isOn", "isEnabled").to(o, "value", "isEnabled"), this.listenTo(i, "execute", (() => {
                        t.execute("blockQuote"), t.editing.view.focus()
                    })), i
                }))
            }
        }
        class iw extends Wr {
            static get pluginName() {
                return "CKBoxUI"
            }
            afterInit() {
                const t = this.editor,
                    e = t.commands.get("ckbox");
                if (!e) return;
                const n = t.t;
                t.ui.componentFactory.add("ckbox", (o => {
                    const i = new br(o);
                    return i.set({
                        label: n("Open file manager"),
                        icon: '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M11.627 16.5zm5.873-.196zm0-7.001V8h-13v8.5h4.341c.191.54.457 1.044.785 1.5H2a1.5 1.5 0 0 1-1.5-1.5v-13A1.5 1.5 0 0 1 2 2h4.5a1.5 1.5 0 0 1 1.06.44L9.122 4H16a1.5 1.5 0 0 1 1.5 1.5v1A1.5 1.5 0 0 1 19 8v2.531a6.027 6.027 0 0 0-1.5-1.228zM16 6.5v-1H8.5l-2-2H2v13h1V8a1.5 1.5 0 0 1 1.5-1.5H16z"/><path d="M14.5 19.5a5 5 0 1 1 0-10 5 5 0 0 1 0 10zM15 14v-2h-1v2h-2v1h2v2h1v-2h2v-1h-2z"/></svg>',
                        tooltip: !0
                    }), i.bind("isOn", "isEnabled").to(e, "value", "isEnabled"), i.on("execute", (() => {
                        t.execute("ckbox")
                    })), i
                }))
            }
        }

        function rw(t) {
            const e = [];
            let n = 0;
            for (const o in t) {
                const i = parseInt(o, 10);
                isNaN(i) || (i > n && (n = i), e.push(`${t[o]} ${o}w`))
            }
            const o = [{
                srcset: e.join(","),
                sizes: `(max-width: ${n}px) 100vw, ${n}px`,
                type: "image/webp"
            }];
            return {
                imageFallbackUrl: t.default,
                imageSources: o
            }
        }
        class sw extends Yr {
            constructor(t) {
                super(t), this._chosenAssets = new Set, this._wrapper = null, this._initListeners()
            }
            refresh() {
                this.value = this._getValue(), this.isEnabled = this._checkEnabled()
            }
            execute() {
                this.fire("ckbox:open")
            }
            _getValue() {
                return null !== this._wrapper
            }
            _checkEnabled() {
                const t = this.editor.commands.get("insertImage"),
                    e = this.editor.commands.get("link");
                return !(!t.isEnabled && !e.isEnabled)
            }
            _prepareOptions() {
                const t = this.editor.config.get("ckbox");
                return {
                    theme: t.theme,
                    language: t.language,
                    tokenUrl: t.tokenUrl,
                    serviceOrigin: t.serviceOrigin,
                    dialog: {
                        onClose: () => this.fire("ckbox:close")
                    },
                    assets: {
                        onChoose: t => this.fire("ckbox:choose", t)
                    }
                }
            }
            _initListeners() {
                const t = this.editor,
                    e = t.model,
                    n = !t.config.get("ckbox.ignoreDataId");
                this.on("ckbox", (() => {
                    this.refresh()
                }), {
                    priority: "low"
                }), this.on("ckbox:open", (() => {
                    this.isEnabled && !this.value && (this._wrapper = wt(document, "div", {
                        class: "ck ckbox-wrapper"
                    }), document.body.appendChild(this._wrapper), window.CKBox.mount(this._wrapper, this._prepareOptions()))
                })), this.on("ckbox:close", (() => {
                    this.value && (this._wrapper.remove(), this._wrapper = null)
                })), this.on("ckbox:choose", ((o, i) => {
                    if (!this.isEnabled) return;
                    const r = t.commands.get("insertImage"),
                        s = t.commands.get("link"),
                        a = function ({
                            assets: t,
                            isImageAllowed: e,
                            isLinkAllowed: n
                        }) {
                            return t.map((t => function (t) {
                                const e = t.data.metadata;
                                if (!e) return !1;
                                return e.width && e.height
                            }(t) ? {
                                id: t.data.id,
                                type: "image",
                                attributes: aw(t)
                            } : {
                                id: t.data.id,
                                type: "link",
                                attributes: cw(t)
                            })).filter((t => "image" === t.type ? e : n))
                        }({
                            assets: i,
                            isImageAllowed: r.isEnabled,
                            isLinkAllowed: s.isEnabled
                        });
                    0 !== a.length && e.change((t => {
                        for (const e of a) {
                            const o = e === a[a.length - 1];
                            this._insertAsset(e, o, t), n && (setTimeout((() => this._chosenAssets.delete(e)), 1e3), this._chosenAssets.add(e))
                        }
                    }))
                })), this.listenTo(t, "destroy", (() => {
                    this.fire("ckbox:close"), this._chosenAssets.clear()
                }))
            }
            _insertAsset(t, e, n) {
                const o = this.editor.model.document.selection;
                n.removeSelectionAttribute("linkHref"), "image" === t.type ? this._insertImage(t) : this._insertLink(t, n), e || n.setSelection(o.getLastPosition())
            }
            _insertImage(t) {
                const e = this.editor,
                    {
                        imageFallbackUrl: n,
                        imageSources: o,
                        imageTextAlternative: i
                    } = t.attributes;
                e.execute("insertImage", {
                    source: {
                        src: n,
                        sources: o,
                        alt: i
                    }
                })
            }
            _insertLink(t, e) {
                const n = this.editor,
                    o = n.model,
                    i = o.document.selection,
                    {
                        linkName: r,
                        linkHref: s
                    } = t.attributes;
                if (i.isCollapsed) {
                    const t = Bi(i.getAttributes()),
                        n = e.createText(r, t),
                        s = o.insertContent(n);
                    e.setSelection(s)
                }
                n.execute("link", s)
            }
        }

        function aw(t) {
            const {
                imageFallbackUrl: e,
                imageSources: n
            } = rw(t.data.imageUrls);
            return {
                imageFallbackUrl: e,
                imageSources: n,
                imageTextAlternative: t.data.metadata.description || ""
            }
        }

        function cw(t) {
            return {
                linkName: t.data.name,
                linkHref: lw(t)
            }
        }

        function lw(t) {
            const e = new URL(t.data.url);
            return e.searchParams.set("download", "true"), e.toString()
        }
        var dw = (t, e, n) => new Promise(((o, i) => {
            var r = t => {
                    try {
                        a(n.next(t))
                    } catch (t) {
                        i(t)
                    }
                },
                s = t => {
                    try {
                        a(n.throw(t))
                    } catch (t) {
                        i(t)
                    }
                },
                a = t => t.done ? o(t.value) : Promise.resolve(t.value).then(r, s);
            a((n = n.apply(t, e)).next())
        }));
        class hw extends Wr {
            static get requires() {
                return ["ImageUploadEditing", "ImageUploadProgress", Db, gw]
            }
            static get pluginName() {
                return "CKBoxUploadAdapter"
            }
            afterInit() {
                return dw(this, null, (function* () {
                    const t = this.editor,
                        e = !!t.config.get("ckbox"),
                        n = !!window.CKBox;
                    if (!e && !n) return;
                    const o = t.plugins.get(Db),
                        i = t.plugins.get(gw);
                    o.createUploadAdapter = e => new uw(e, i.getToken(), t);
                    const r = !t.config.get("ckbox.ignoreDataId"),
                        s = t.plugins.get("ImageUploadEditing");
                    r && s.on("uploadComplete", ((e, {
                        imageElement: n,
                        data: o
                    }) => {
                        t.model.change((t => {
                            t.setAttribute("ckboxImageId", o.ckboxImageId, n)
                        }))
                    }))
                }))
            }
        }
        class uw {
            constructor(t, e, n) {
                this.loader = t, this.token = e, this.editor = n, this.controller = new AbortController, this.serviceOrigin = n.config.get("ckbox.serviceOrigin")
            }
            getWorkspaceId() {
                const t = (0, this.editor.t)("Cannot access default workspace."),
                    e = this.editor.config.get("ckbox.defaultUploadWorkspaceId"),
                    n = function (t, e) {
                        const [, n] = t.value.split("."), o = JSON.parse(atob(n)), i = o.auth && o.auth.ckbox && o.auth.ckbox.workspaces || [o.aud];
                        return e ? "superadmin" == (o.auth && o.auth.ckbox && o.auth.ckbox.role) || i.includes(e) ? e : null : i[0]
                    }(this.token, e);
                if (null == n) throw _("ckbox-access-default-workspace-error"), t;
                return n
            }
            getAvailableCategories(t = 0) {
                return dw(this, null, (function* () {
                    const e = new URL("categories", this.serviceOrigin);
                    return e.searchParams.set("limit", 50..toString()), e.searchParams.set("offset", t.toString()), e.searchParams.set("workspaceId", this.getWorkspaceId()), this._sendHttpRequest({
                        url: e
                    }).then((e => dw(this, null, (function* () {
                        if (e.totalCount - (t + 50) > 0) {
                            const n = yield this.getAvailableCategories(t + 50);
                            return [...e.items, ...n]
                        }
                        return e.items
                    })))).catch((() => {
                        this.controller.signal.throwIfAborted(), _("ckbox-fetch-category-http-error")
                    }))
                }))
            }
            getCategoryIdForFile(t) {
                return dw(this, null, (function* () {
                    const e = function (t) {
                            const e = new RegExp("\\.(?<ext>[^.]+)$");
                            return t.match(e).groups.ext.toLowerCase()
                        }(t.name),
                        n = yield this.getAvailableCategories();
                    if (!n) return null;
                    const o = this.editor.config.get("ckbox.defaultUploadCategories");
                    if (o) {
                        const t = Object.keys(o).find((t => o[t].find((t => t.toLowerCase() == e))));
                        if (t) {
                            const e = n.find((e => e.id === t || e.name === t));
                            return e ? e.id : null
                        }
                    }
                    const i = n.find((t => t.extensions.find((t => t.toLowerCase() == e))));
                    return i ? i.id : null
                }))
            }
            upload() {
                return dw(this, null, (function* () {
                    const t = this.editor.t,
                        e = t("Cannot determine a category for the uploaded file."),
                        n = yield this.loader.file, o = yield this.getCategoryIdForFile(n);
                    if (!o) return Promise.reject(e);
                    const i = new URL("assets", this.serviceOrigin),
                        r = new FormData;
                    i.searchParams.set("workspaceId", this.getWorkspaceId()), r.append("categoryId", o), r.append("file", n);
                    const s = {
                        method: "POST",
                        url: i,
                        data: r,
                        onUploadProgress: t => {
                            t.lengthComputable && (this.loader.uploadTotal = t.total, this.loader.uploaded = t.loaded)
                        }
                    };
                    return this._sendHttpRequest(s).then((t => dw(this, null, (function* () {
                        const e = rw(t.imageUrls);
                        return {
                            ckboxImageId: t.id,
                            default: e.imageFallbackUrl,
                            sources: e.imageSources
                        }
                    })))).catch((() => {
                        const e = t("Cannot upload file:") + ` ${n.name}.`;
                        return Promise.reject(e)
                    }))
                }))
            }
            abort() {
                this.controller.abort()
            }
            _sendHttpRequest({
                url: t,
                method: e = "GET",
                data: n,
                onUploadProgress: o
            }) {
                const i = this.controller.signal,
                    r = new XMLHttpRequest;
                r.open(e, t.toString(), !0), r.setRequestHeader("Authorization", this.token.value), r.setRequestHeader("CKBox-Version", "CKEditor 5"), r.responseType = "json";
                const s = () => {
                    r.abort()
                };
                return new Promise(((t, e) => {
                    i.addEventListener("abort", s), r.addEventListener("loadstart", (() => {
                        i.addEventListener("abort", s)
                    })), r.addEventListener("loadend", (() => {
                        i.removeEventListener("abort", s)
                    })), r.addEventListener("error", (() => {
                        e()
                    })), r.addEventListener("abort", (() => {
                        e()
                    })), r.addEventListener("load", (() => dw(this, null, (function* () {
                        const n = r.response;
                        return !n || n.statusCode >= 400 ? e(n && n.message) : t(n)
                    })))), o && r.upload.addEventListener("progress", (t => {
                        o(t)
                    })), r.send(n)
                }))
            }
        }
        class gw extends Wr {
            static get pluginName() {
                return "CKBoxEditing"
            }
            static get requires() {
                return ["CloudServices", "LinkEditing", "PictureEditing", hw]
            }
            init() {
                return t = this, e = null, n = function* () {
                    const t = this.editor,
                        e = !!t.config.get("ckbox"),
                        n = !!window.CKBox;
                    if (!e && !n) return;
                    this._initConfig();
                    const o = t.plugins.get("CloudServicesCore"),
                        i = t.config.get("ckbox.tokenUrl");
                    if (i === t.config.get("cloudServices.tokenUrl")) {
                        const e = t.plugins.get("CloudServices");
                        this._token = e.token
                    } else this._token = yield o.createToken(i).init();
                    t.config.get("ckbox.ignoreDataId") || (this._initSchema(), this._initConversion(), this._initFixers()), n && t.commands.add("ckbox", new sw(t))
                }, new Promise(((o, i) => {
                    var r = t => {
                            try {
                                a(n.next(t))
                            } catch (t) {
                                i(t)
                            }
                        },
                        s = t => {
                            try {
                                a(n.throw(t))
                            } catch (t) {
                                i(t)
                            }
                        },
                        a = t => t.done ? o(t.value) : Promise.resolve(t.value).then(r, s);
                    a((n = n.apply(t, e)).next())
                }));
                var t, e, n
            }
            getToken() {
                return this._token
            }
            _initConfig() {
                const t = this.editor;
                t.config.define("ckbox", {
                    serviceOrigin: "https://api.ckbox.io",
                    defaultUploadCategories: null,
                    ignoreDataId: !1,
                    language: t.locale.uiLanguage,
                    theme: "default",
                    tokenUrl: t.config.get("cloudServices.tokenUrl")
                });
                if (!t.config.get("ckbox.tokenUrl")) throw new A("ckbox-plugin-missing-token-url", this);
                t.plugins.has("ImageBlockEditing") || t.plugins.has("ImageInlineEditing") || _("ckbox-plugin-image-feature-missing", t)
            }
            _initSchema() {
                const t = this.editor.model.schema;
                t.extend("$text", {
                    allowAttributes: "ckboxLinkId"
                }), t.isRegistered("imageBlock") && t.extend("imageBlock", {
                    allowAttributes: ["ckboxImageId", "ckboxLinkId"]
                }), t.isRegistered("imageInline") && t.extend("imageInline", {
                    allowAttributes: ["ckboxImageId", "ckboxLinkId"]
                }), t.addAttributeCheck(((t, e) => {
                    if (!!!t.last.getAttribute("linkHref") && "ckboxLinkId" === e) return !1
                }))
            }
            _initConversion() {
                const t = this.editor;
                t.conversion.for("downcast").add((t => {
                    t.on("attribute:ckboxLinkId:imageBlock", ((t, e, n) => {
                        const {
                            writer: o,
                            mapper: i,
                            consumable: r
                        } = n;
                        if (!r.consume(e.item, t.name)) return;
                        const s = [...i.toViewElement(e.item).getChildren()].find((t => "a" === t.name));
                        s && (e.item.hasAttribute("ckboxLinkId") ? o.setAttribute("data-ckbox-resource-id", e.item.getAttribute("ckboxLinkId"), s) : o.removeAttribute("data-ckbox-resource-id", s))
                    }), {
                        priority: "low"
                    }), t.on("attribute:ckboxLinkId", ((t, e, n) => {
                        const {
                            writer: o,
                            mapper: i,
                            consumable: r
                        } = n;
                        if (r.consume(e.item, t.name)) {
                            if (e.attributeOldValue) {
                                const t = mw(o, e.attributeOldValue);
                                o.unwrap(i.toViewRange(e.range), t)
                            }
                            if (e.attributeNewValue) {
                                const t = mw(o, e.attributeNewValue);
                                if (e.item.is("selection")) {
                                    const e = o.document.selection;
                                    o.wrap(e.getFirstRange(), t)
                                } else o.wrap(i.toViewRange(e.range), t)
                            }
                        }
                    }), {
                        priority: "low"
                    })
                })), t.conversion.for("upcast").add((t => {
                    t.on("element:a", ((t, e, n) => {
                        const {
                            writer: o,
                            consumable: i
                        } = n;
                        if (!e.viewItem.getAttribute("href")) return;
                        if (!i.consume(e.viewItem, {
                                attributes: ["data-ckbox-resource-id"]
                            })) return;
                        const r = e.viewItem.getAttribute("data-ckbox-resource-id");
                        if (r)
                            if (e.modelRange)
                                for (let t of e.modelRange.getItems()) t.is("$textProxy") && (t = t.textNode), fw(t) && o.setAttribute("ckboxLinkId", r, t);
                            else {
                                const t = e.modelCursor.nodeBefore || e.modelCursor.parent;
                                o.setAttribute("ckboxLinkId", r, t)
                            }
                    }), {
                        priority: "low"
                    })
                })), t.conversion.for("downcast").attributeToAttribute({
                    model: "ckboxImageId",
                    view: "data-ckbox-resource-id"
                }), t.conversion.for("upcast").elementToAttribute({
                    model: {
                        key: "ckboxImageId",
                        value: t => t.getAttribute("data-ckbox-resource-id")
                    },
                    view: {
                        attributes: {
                            "data-ckbox-resource-id": /[\s\S]+/
                        }
                    }
                })
            }
            _initFixers() {
                const t = this.editor,
                    e = t.model,
                    n = e.document.selection;
                e.document.registerPostFixer(function (t) {
                    return e => {
                        let n = !1;
                        const o = t.model,
                            i = t.commands.get("ckbox");
                        if (!i) return n;
                        for (const t of o.document.differ.getChanges()) {
                            if ("insert" !== t.type && "attribute" !== t.type) continue;
                            const o = "insert" === t.type ? new Hl(t.position, t.position.getShiftedBy(t.length)) : t.range,
                                r = "attribute" === t.type && "linkHref" === t.attributeKey && null === t.attributeNewValue;
                            for (const t of o.getItems()) {
                                if (r && t.hasAttribute("ckboxLinkId")) {
                                    e.removeAttribute("ckboxLinkId", t), n = !0;
                                    continue
                                }
                                const o = pw(t, i._chosenAssets);
                                for (const i of o) {
                                    const o = "image" === i.type ? "ckboxImageId" : "ckboxLinkId";
                                    i.id !== t.getAttribute(o) && (e.setAttribute(o, i.id, t), n = !0)
                                }
                            }
                        }
                        return n
                    }
                }(t)), e.document.registerPostFixer(function (t) {
                    return e => !(t.hasAttribute("linkHref") || !t.hasAttribute("ckboxLinkId")) && (e.removeSelectionAttribute("ckboxLinkId"), !0)
                }(n))
            }
        }

        function pw(t, e) {
            const n = t.is("element", "imageInline") || t.is("element", "imageBlock"),
                o = t.hasAttribute("linkHref");
            return [...e].filter((e => "image" === e.type && n ? e.attributes.imageFallbackUrl === t.getAttribute("src") : "link" === e.type && o ? e.attributes.linkHref === t.getAttribute("linkHref") : void 0))
        }

        function mw(t, e) {
            const n = t.createAttributeElement("a", {
                "data-ckbox-resource-id": e
            }, {
                priority: 5
            });
            return t.setCustomProperty("link", !0, n), n
        }

        function fw(t) {
            return !!t.is("$text") || !(!t.is("element", "imageInline") && !t.is("element", "imageBlock"))
        }
        class kw extends Wr {
            static get pluginName() {
                return "CKFinderUI"
            }
            init() {
                const t = this.editor,
                    e = t.ui.componentFactory,
                    n = t.t;
                e.add("ckfinder", (e => {
                    const o = t.commands.get("ckfinder"),
                        i = new br(e);
                    return i.set({
                        label: n("Insert image or file"),
                        icon: '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M11.627 16.5zm5.873-.196zm0-7.001V8h-13v8.5h4.341c.191.54.457 1.044.785 1.5H2a1.5 1.5 0 0 1-1.5-1.5v-13A1.5 1.5 0 0 1 2 2h4.5a1.5 1.5 0 0 1 1.06.44L9.122 4H16a1.5 1.5 0 0 1 1.5 1.5v1A1.5 1.5 0 0 1 19 8v2.531a6.027 6.027 0 0 0-1.5-1.228zM16 6.5v-1H8.5l-2-2H2v13h1V8a1.5 1.5 0 0 1 1.5-1.5H16z"/><path d="M14.5 19.5a5 5 0 1 1 0-10 5 5 0 0 1 0 10zM15 14v-2h-1v2h-2v1h2v2h1v-2h2v-1h-2z"/></svg>',
                        tooltip: !0
                    }), i.bind("isEnabled").to(o), i.on("execute", (() => {
                        t.execute("ckfinder"), t.editing.view.focus()
                    })), i
                }))
            }
        }
        class bw extends Yr {
            constructor(t) {
                super(t), this.affectsData = !1, this.stopListening(this.editor.model.document, "change"), this.listenTo(this.editor.model.document, "change", (() => this.refresh()), {
                    priority: "low"
                })
            }
            refresh() {
                const t = this.editor.commands.get("insertImage"),
                    e = this.editor.commands.get("link");
                this.isEnabled = t.isEnabled || e.isEnabled
            }
            execute() {
                const t = this.editor,
                    e = this.editor.config.get("ckfinder.openerMethod") || "modal";
                if ("popup" != e && "modal" != e) throw new A("ckfinder-unknown-openermethod", t);
                const n = this.editor.config.get("ckfinder.options") || {};
                n.chooseFiles = !0;
                const o = n.onInit;
                n.language || (n.language = t.locale.uiLanguage), n.onInit = e => {
                    o && o(e), e.on("files:choose", (n => {
                        const o = n.data.files.toArray(),
                            i = o.filter((t => !t.isImage())),
                            r = o.filter((t => t.isImage()));
                        for (const e of i) t.execute("link", e.getUrl());
                        const s = [];
                        for (const t of r) {
                            const n = t.getUrl();
                            s.push(n || e.request("file:getProxyUrl", {
                                file: t
                            }))
                        }
                        s.length && ww(t, s)
                    })), e.on("file:choose:resizedImage", (e => {
                        const n = e.data.resizedUrl;
                        if (n) ww(t, [n]);
                        else {
                            const e = t.plugins.get("Notification"),
                                n = t.locale.t;
                            e.showWarning(n("Could not obtain resized image URL."), {
                                title: n("Selecting resized image failed"),
                                namespace: "ckfinder"
                            })
                        }
                    }))
                }, window.CKFinder[e](n)
            }
        }

        function ww(t, e) {
            if (t.commands.get("insertImage").isEnabled) t.execute("insertImage", {
                source: e
            });
            else {
                const e = t.plugins.get("Notification"),
                    n = t.locale.t;
                e.showWarning(n("Could not insert image at the current position."), {
                    title: n("Inserting image failed"),
                    namespace: "ckfinder"
                })
            }
        }
        class Aw extends Wr {
            static get pluginName() {
                return "CKFinderEditing"
            }
            static get requires() {
                return [Pm, "LinkEditing"]
            }
            init() {
                const t = this.editor;
                if (!t.plugins.has("ImageBlockEditing") && !t.plugins.has("ImageInlineEditing")) throw new A("ckfinder-missing-image-plugin", t);
                t.commands.add("ckfinder", new bw(t))
            }
        }
        class Cw extends Wr {
            static get pluginName() {
                return "CloudServicesUploadAdapter"
            }
            static get requires() {
                return ["CloudServices", Db]
            }
            init() {
                const t = this.editor,
                    e = t.plugins.get("CloudServices"),
                    n = e.token,
                    o = e.uploadUrl;
                if (!n) return;
                const i = t.plugins.get("CloudServicesCore");
                this._uploadGateway = i.createUploadGateway(n, o), t.plugins.get(Db).createUploadAdapter = t => new _w(this._uploadGateway, t)
            }
        }
        class _w {
            constructor(t, e) {
                this.uploadGateway = t, this.loader = e
            }
            upload() {
                return this.loader.file.then((t => (this.fileUploader = this.uploadGateway.upload(t), this.fileUploader.on("progress", ((t, e) => {
                    this.loader.uploadTotal = e.total, this.loader.uploaded = e.uploaded
                })), this.fileUploader.send())))
            }
            abort() {
                this.fileUploader.abort()
            }
        }
        class vw extends Yr {
            constructor(t) {
                super(t), this._isEnabledBasedOnSelection = !1
            }
            refresh() {
                const t = this.editor.model,
                    e = Ii(t.document.selection.getSelectedBlocks());
                this.value = !!e && e.is("element", "paragraph"), this.isEnabled = !!e && yw(e, t.schema)
            }
            execute(t = {}) {
                const e = this.editor.model,
                    n = e.document,
                    o = t.selection || n.selection;
                e.canEditAt(o) && e.change((t => {
                    const n = o.getSelectedBlocks();
                    for (const o of n) !o.is("element", "paragraph") && yw(o, e.schema) && t.rename(o, "paragraph")
                }))
            }
        }

        function yw(t, e) {
            return e.checkChild(t.parent, "paragraph") && !e.isObject(t)
        }
        class xw extends Yr {
            constructor(t) {
                super(t), this._isEnabledBasedOnSelection = !1
            }
            execute(t) {
                const e = this.editor.model,
                    n = t.attributes;
                let o = t.position;
                e.canEditAt(o) && e.change((t => {
                    if (o = this._findPositionToInsertParagraph(o, t), !o) return;
                    const i = t.createElement("paragraph");
                    n && e.schema.setAllowedAttributes(i, n, t), e.insertContent(i, o), t.setSelection(i, "in")
                }))
            }
            _findPositionToInsertParagraph(t, e) {
                const n = this.editor.model;
                if (n.schema.checkChild(t, "paragraph")) return t;
                const o = n.schema.findAllowedParent(t, "paragraph");
                if (!o) return null;
                const i = t.parent,
                    r = n.schema.checkChild(i, "$text");
                return i.isEmpty || r && t.isAtEnd ? n.createPositionAfter(i) : !i.isEmpty && r && t.isAtStart ? n.createPositionBefore(i) : e.split(t, o).position
            }
        }
        const Ew = class extends Wr {
            static get pluginName() {
                return "Paragraph"
            }
            init() {
                const t = this.editor,
                    e = t.model;
                t.commands.add("paragraph", new vw(t)), t.commands.add("insertParagraph", new xw(t)), e.schema.register("paragraph", {
                    inheritAllFrom: "$block"
                }), t.conversion.elementToElement({
                    model: "paragraph",
                    view: "p"
                }), t.conversion.for("upcast").elementToElement({
                    model: (t, {
                        writer: e
                    }) => Ew.paragraphLikeElements.has(t.name) ? t.isEmpty ? null : e.createElement("paragraph") : null,
                    view: /.+/,
                    converterPriority: "low"
                })
            }
        };
        let Dw = Ew;
        Dw.paragraphLikeElements = new Set(["blockquote", "dd", "div", "dt", "h1", "h2", "h3", "h4", "h5", "h6", "li", "p", "td", "th"]);
        class Sw extends Yr {
            constructor(t, e) {
                super(t), this.modelElements = e
            }
            refresh() {
                const t = Ii(this.editor.model.document.selection.getSelectedBlocks());
                this.value = !!t && this.modelElements.includes(t.name) && t.name, this.isEnabled = !!t && this.modelElements.some((e => Iw(t, e, this.editor.model.schema)))
            }
            execute(t) {
                const e = this.editor.model,
                    n = e.document,
                    o = t.value;
                e.change((t => {
                    const i = Array.from(n.selection.getSelectedBlocks()).filter((t => Iw(t, o, e.schema)));
                    for (const e of i) e.is("element", o) || t.rename(e, o)
                }))
            }
        }

        function Iw(t, e, n) {
            return n.checkChild(t.parent, e) && !n.isObject(t)
        }
        const Mw = "paragraph";
        class Tw extends Wr {
            static get pluginName() {
                return "HeadingEditing"
            }
            constructor(t) {
                super(t), t.config.define("heading", {
                    options: [{
                        model: "paragraph",
                        title: "Paragraph",
                        class: "ck-heading_paragraph"
                    }, {
                        model: "heading1",
                        view: "h2",
                        title: "Heading 1",
                        class: "ck-heading_heading1"
                    }, {
                        model: "heading2",
                        view: "h3",
                        title: "Heading 2",
                        class: "ck-heading_heading2"
                    }, {
                        model: "heading3",
                        view: "h4",
                        title: "Heading 3",
                        class: "ck-heading_heading3"
                    }]
                })
            }
            static get requires() {
                return [Dw]
            }
            init() {
                const t = this.editor,
                    e = t.config.get("heading.options"),
                    n = [];
                for (const o of e) "paragraph" !== o.model && (t.model.schema.register(o.model, {
                    inheritAllFrom: "$block"
                }), t.conversion.elementToElement(o), n.push(o.model));
                this._addDefaultH1Conversion(t), t.commands.add("heading", new Sw(t, n))
            }
            afterInit() {
                const t = this.editor,
                    e = t.commands.get("enter"),
                    n = t.config.get("heading.options");
                e && this.listenTo(e, "afterExecute", ((e, o) => {
                    const i = t.model.document.selection.getFirstPosition().parent;
                    n.some((t => i.is("element", t.model))) && !i.is("element", Mw) && 0 === i.childCount && o.writer.rename(i, Mw)
                }))
            }
            _addDefaultH1Conversion(t) {
                t.conversion.for("upcast").elementToElement({
                    model: "heading1",
                    view: "h1",
                    converterPriority: k.low + 1
                })
            }
        }
        var Bw = n(8733),
            Nw = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(Bw.Z, Nw);
        Bw.Z.locals;
        class Pw extends Wr {
            static get pluginName() {
                return "HeadingUI"
            }
            init() {
                const t = this.editor,
                    e = t.t,
                    n = function (t) {
                        const e = t.t,
                            n = {
                                Paragraph: e("Paragraph"),
                                "Heading 1": e("Heading 1"),
                                "Heading 2": e("Heading 2"),
                                "Heading 3": e("Heading 3"),
                                "Heading 4": e("Heading 4"),
                                "Heading 5": e("Heading 5"),
                                "Heading 6": e("Heading 6")
                            };
                        return t.config.get("heading.options").map((t => {
                            const e = n[t.title];
                            return e && e != t.title && (t.title = e), t
                        }))
                    }(t),
                    o = e("Choose heading"),
                    i = e("Heading");
                t.ui.componentFactory.add("heading", (e => {
                    const r = {},
                        s = new Si,
                        a = t.commands.get("heading"),
                        c = t.commands.get("paragraph"),
                        l = [a];
                    for (const t of n) {
                        const e = {
                            type: "button",
                            model: new zm({
                                label: t.title,
                                class: t.class,
                                role: "menuitemradio",
                                withText: !0
                            })
                        };
                        "paragraph" === t.model ? (e.model.bind("isOn").to(c, "value"), e.model.set("commandName", "paragraph"), l.push(c)) : (e.model.bind("isOn").to(a, "value", (e => e === t.model)), e.model.set({
                            commandName: "heading",
                            commandValue: t.model
                        })), s.add(e), r[t.model] = t.title
                    }
                    const d = Zg(e);
                    return Xg(d, s, {
                        ariaLabel: i,
                        role: "menu"
                    }), d.buttonView.set({
                        ariaLabel: i,
                        ariaLabelledBy: void 0,
                        isOn: !1,
                        withText: !0,
                        tooltip: i
                    }), d.extendTemplate({
                        attributes: {
                            class: ["ck-heading-dropdown"]
                        }
                    }), d.bind("isEnabled").toMany(l, "isEnabled", ((...t) => t.some((t => t)))), d.buttonView.bind("label").to(a, "value", c, "value", ((t, e) => {
                        const n = t || e && "paragraph";
                        return "boolean" == typeof n ? o : r[n] ? r[n] : o
                    })), this.listenTo(d, "execute", (e => {
                        const {
                            commandName: n,
                            commandValue: o
                        } = e.source;
                        t.execute(n, o ? {
                            value: o
                        } : void 0), t.editing.view.focus()
                    })), d
                }))
            }
        }

        function zw(t) {
            return t.createContainerElement("figure", {
                class: "image"
            }, [t.createEmptyElement("img"), t.createSlot("children")])
        }

        function Ow(t, e) {
            const n = t.plugins.get("ImageUtils"),
                o = t.plugins.has("ImageInlineEditing") && t.plugins.has("ImageBlockEditing");
            return t => {
                if (!n.isInlineImageView(t)) return null;
                if (!o) return i(t);
                return ("block" == t.getStyle("display") || t.findAncestor(n.isBlockImageView) ? "imageBlock" : "imageInline") !== e ? null : i(t)
            };

            function i(t) {
                const e = {
                    name: !0
                };
                return t.hasAttribute("src") && (e.attributes = ["src"]), e
            }
        }

        function Lw(t, e) {
            const n = Ii(e.getSelectedBlocks());
            return !n || t.isObject(n) || n.isEmpty && "listItem" != n.name ? "imageBlock" : "imageInline"
        }
        var jw = Object.defineProperty,
            Rw = Object.getOwnPropertySymbols,
            Fw = Object.prototype.hasOwnProperty,
            Vw = Object.prototype.propertyIsEnumerable,
            Uw = (t, e, n) => e in t ? jw(t, e, {
                enumerable: !0,
                configurable: !0,
                writable: !0,
                value: n
            }) : t[e] = n,
            Hw = (t, e) => {
                for (var n in e || (e = {})) Fw.call(e, n) && Uw(t, n, e[n]);
                if (Rw)
                    for (var n of Rw(e)) Vw.call(e, n) && Uw(t, n, e[n]);
                return t
            };
        class Gw extends Wr {
            static get pluginName() {
                return "ImageUtils"
            }
            isImage(t) {
                return this.isInlineImage(t) || this.isBlockImage(t)
            }
            isInlineImageView(t) {
                return !!t && t.is("element", "img")
            }
            isBlockImageView(t) {
                return !!t && t.is("element", "figure") && t.hasClass("image")
            }
            insertImage(t = {}, e = null, n = null) {
                const o = this.editor,
                    i = o.model,
                    r = i.document.selection;
                n = qw(o, e || r, n), t = Hw(Hw({}, Object.fromEntries(r.getAttributes())), t);
                for (const e in t) i.schema.checkAttribute(n, e) || delete t[e];
                return i.change((o => {
                    const r = o.createElement(n, t);
                    return i.insertObject(r, e, null, {
                        setSelection: "on",
                        findOptimalPosition: e || "imageInline" == n ? void 0 : "auto"
                    }), r.parent ? r : null
                }))
            }
            getClosestSelectedImageWidget(t) {
                const e = t.getFirstPosition();
                if (!e) return null;
                const n = t.getSelectedElement();
                if (n && this.isImageWidget(n)) return n;
                let o = e.parent;
                for (; o;) {
                    if (o.is("element") && this.isImageWidget(o)) return o;
                    o = o.parent
                }
                return null
            }
            getClosestSelectedImageElement(t) {
                const e = t.getSelectedElement();
                return this.isImage(e) ? e : t.getFirstPosition().findAncestor("imageBlock")
            }
            isImageAllowed() {
                const t = this.editor.model.document.selection;
                return function (t, e) {
                    const n = qw(t, e, null);
                    if ("imageBlock" == n) {
                        const n = function (t, e) {
                            const n = Sk(t, e),
                                o = n.start.parent;
                            if (o.isEmpty && !o.is("element", "$root")) return o.parent;
                            return o
                        }(e, t.model);
                        if (t.model.schema.checkChild(n, "imageBlock")) return !0
                    } else if (t.model.schema.checkChild(e.focus, "imageInline")) return !0;
                    return !1
                }(this.editor, t) && function (t) {
                    return [...t.focus.getAncestors()].every((t => !t.is("element", "imageBlock")))
                }(t)
            }
            toImageWidget(t, e, n) {
                e.setCustomProperty("image", !0, t);
                return vk(t, e, {
                    label: () => {
                        const e = this.findViewImgElement(t).getAttribute("alt");
                        return e ? `${e} ${n}` : n
                    }
                })
            }
            isImageWidget(t) {
                return !!t.getCustomProperty("image") && _k(t)
            }
            isBlockImage(t) {
                return !!t && t.is("element", "imageBlock")
            }
            isInlineImage(t) {
                return !!t && t.is("element", "imageInline")
            }
            findViewImgElement(t) {
                if (this.isInlineImageView(t)) return t;
                const e = this.editor.editing.view;
                for (const {
                        item: n
                    } of e.createRangeIn(t))
                    if (this.isInlineImageView(n)) return n
            }
        }

        function qw(t, e, n) {
            const o = t.model.schema,
                i = t.config.get("image.insert.type");
            return t.plugins.has("ImageBlockEditing") ? t.plugins.has("ImageInlineEditing") ? n || ("inline" === i ? "imageInline" : "block" === i ? "imageBlock" : e.is("selection") ? Lw(o, e) : o.checkChild(e, "imageInline") ? "imageInline" : "imageBlock") : "imageBlock" : "imageInline"
        }
        Object.defineProperty, Object.defineProperties, Object.getOwnPropertyDescriptors, Object.getOwnPropertySymbols, Object.prototype.hasOwnProperty, Object.prototype.propertyIsEnumerable;
        new RegExp(String(/^(http(s)?:\/\/)?[\w-]+\.[\w.~:/[\]@!$&'()*+,;=%-]+/.source + /\.(jpg|jpeg|png|gif|ico|webp|JPG|JPEG|PNG|GIF|ICO|WEBP)/.source + /(\?[\w.~:/[\]@!$&'()*+,;=%-]*)?/.source + /(#[\w.~:/[\]@!$&'()*+,;=%-]*)?$/.source));
        class Ww extends Yr {
            refresh() {
                const t = this.editor.plugins.get("ImageUtils").getClosestSelectedImageElement(this.editor.model.document.selection);
                this.isEnabled = !!t, this.isEnabled && t.hasAttribute("alt") ? this.value = t.getAttribute("alt") : this.value = !1
            }
            execute(t) {
                const e = this.editor,
                    n = e.plugins.get("ImageUtils"),
                    o = e.model,
                    i = n.getClosestSelectedImageElement(o.document.selection);
                o.change((e => {
                    e.setAttribute("alt", t.newValue, i)
                }))
            }
        }
        class Kw extends Wr {
            static get requires() {
                return [Gw]
            }
            static get pluginName() {
                return "ImageTextAlternativeEditing"
            }
            init() {
                this.editor.commands.add("imageTextAlternative", new Ww(this.editor))
            }
        }
        var Yw = n(1905),
            $w = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(Yw.Z, $w);
        Yw.Z.locals;
        var Zw = n(6764),
            Qw = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(Zw.Z, Qw);
        Zw.Z.locals;
        class Jw extends Hi {
            constructor(t) {
                super(t);
                const e = this.locale.t;
                this.focusTracker = new Mi, this.keystrokes = new Ti, this.labeledInput = this._createLabeledInputView(), this.saveButtonView = this._createButton(e("Save"), Ig.check, "ck-button-save"), this.saveButtonView.type = "submit", this.cancelButtonView = this._createButton(e("Cancel"), Ig.cancel, "ck-button-cancel", "cancel"), this._focusables = new ji, this._focusCycler = new Vr({
                    focusables: this._focusables,
                    focusTracker: this.focusTracker,
                    keystrokeHandler: this.keystrokes,
                    actions: {
                        focusPrevious: "shift + tab",
                        focusNext: "tab"
                    }
                }), this.setTemplate({
                    tag: "form",
                    attributes: {
                        class: ["ck", "ck-text-alternative-form", "ck-responsive-form"],
                        tabindex: "-1"
                    },
                    children: [this.labeledInput, this.saveButtonView, this.cancelButtonView]
                })
            }
            render() {
                super.render(), this.keystrokes.listenTo(this.element), i({
                    view: this
                }), [this.labeledInput, this.saveButtonView, this.cancelButtonView].forEach((t => {
                    this._focusables.add(t), this.focusTracker.add(t.element)
                }))
            }
            destroy() {
                super.destroy(), this.focusTracker.destroy(), this.keystrokes.destroy()
            }
            _createButton(t, e, n, o) {
                const i = new br(this.locale);
                return i.set({
                    label: t,
                    icon: e,
                    tooltip: !0
                }), i.extendTemplate({
                    attributes: {
                        class: n
                    }
                }), o && i.delegate("execute").to(this, o), i
            }
            _createLabeledInputView() {
                const t = this.locale.t,
                    e = new Ir(this.locale, np);
                return e.label = t("Text alternative"), e
            }
        }

        function Xw(t) {
            const e = t.editing.view,
                n = $p.defaultPositions,
                o = t.plugins.get("ImageUtils");
            return {
                target: e.domConverter.mapViewToDom(o.getClosestSelectedImageWidget(e.document.selection)),
                positions: [n.northArrowSouth, n.northArrowSouthWest, n.northArrowSouthEast, n.southArrowNorth, n.southArrowNorthWest, n.southArrowNorthEast, n.viewportStickyNorth]
            }
        }
        class tA extends Wr {
            static get requires() {
                return [Vm]
            }
            static get pluginName() {
                return "ImageTextAlternativeUI"
            }
            init() {
                this._createButton()
            }
            destroy() {
                super.destroy(), this._form && this._form.destroy()
            }
            _createButton() {
                const t = this.editor,
                    e = t.t;
                t.ui.componentFactory.add("imageTextAlternative", (n => {
                    const o = t.commands.get("imageTextAlternative"),
                        i = new br(n);
                    return i.set({
                        label: e("Change image text alternative"),
                        icon: Ig.lowVision,
                        tooltip: !0
                    }), i.bind("isEnabled").to(o, "isEnabled"), i.bind("isOn").to(o, "value", (t => !!t)), this.listenTo(i, "execute", (() => {
                        this._showForm()
                    })), i
                }))
            }
            _createForm() {
                const n = this.editor,
                    o = n.editing.view.document,
                    i = n.plugins.get("ImageUtils");
                this._balloon = this.editor.plugins.get("ContextualBalloon"), this._form = new(e(Jw))(n.locale), this._form.render(), this.listenTo(this._form, "submit", (() => {
                    n.execute("imageTextAlternative", {
                        newValue: this._form.labeledInput.fieldView.element.value
                    }), this._hideForm(!0)
                })), this.listenTo(this._form, "cancel", (() => {
                    this._hideForm(!0)
                })), this._form.keystrokes.set("Esc", ((t, e) => {
                    this._hideForm(!0), e()
                })), this.listenTo(n.ui, "update", (() => {
                    i.getClosestSelectedImageWidget(o.selection) ? this._isVisible && function (t) {
                        const e = t.plugins.get("ContextualBalloon");
                        if (t.plugins.get("ImageUtils").getClosestSelectedImageWidget(t.editing.view.document.selection)) {
                            const n = Xw(t);
                            e.updatePosition(n)
                        }
                    }(n) : this._hideForm(!0)
                })), t({
                    emitter: this._form,
                    activator: () => this._isVisible,
                    contextElements: () => [this._balloon.view.element],
                    callback: () => this._hideForm()
                })
            }
            _showForm() {
                if (this._isVisible) return;
                this._form || this._createForm();
                const t = this.editor,
                    e = t.commands.get("imageTextAlternative"),
                    n = this._form.labeledInput;
                this._form.disableCssTransitions(), this._isInBalloon || this._balloon.add({
                    view: this._form,
                    position: Xw(t)
                }), n.fieldView.value = n.fieldView.element.value = e.value || "", this._form.labeledInput.fieldView.select(), this._form.enableCssTransitions()
            }
            _hideForm(t = !1) {
                this._isInBalloon && (this._form.focusTracker.isFocused && this._form.saveButtonView.focus(), this._balloon.remove(this._form), t && this.editor.editing.view.focus())
            }
            get _isVisible() {
                return !!this._balloon && this._balloon.visibleView === this._form
            }
            get _isInBalloon() {
                return !!this._balloon && this._balloon.hasView(this._form)
            }
        }
        class eA extends Wr {
            static get requires() {
                return [Kw, tA]
            }
            static get pluginName() {
                return "ImageTextAlternative"
            }
        }

        function nA(t, e) {
            const n = (e, n, o) => {
                if (!o.consumable.consume(n.item, e.name)) return;
                const i = o.writer,
                    r = o.mapper.toViewElement(n.item),
                    s = t.findViewImgElement(r);
                if (null === n.attributeNewValue) {
                    const t = n.attributeOldValue;
                    t && t.data && (i.removeAttribute("srcset", s), i.removeAttribute("sizes", s), t.width && i.removeAttribute("width", s))
                } else {
                    const t = n.attributeNewValue;
                    t && t.data && (i.setAttribute("srcset", t.data, s), i.setAttribute("sizes", "100vw", s), t.width && i.setAttribute("width", t.width, s))
                }
            };
            return t => {
                t.on(`attribute:srcset:${e}`, n)
            }
        }

        function oA(t, e, n) {
            const o = (e, n, o) => {
                if (!o.consumable.consume(n.item, e.name)) return;
                const i = o.writer,
                    r = o.mapper.toViewElement(n.item),
                    s = t.findViewImgElement(r);
                i.setAttribute(n.attributeKey, n.attributeNewValue || "", s)
            };
            return t => {
                t.on(`attribute:${n}:${e}`, o)
            }
        }
        class iA extends Tc {
            observe(t) {
                this.listenTo(t, "load", ((t, e) => {
                    const n = e.target;
                    this.checkShouldIgnoreEventFromTarget(n) || "IMG" == n.tagName && this._fireEvents(e)
                }), {
                    useCapture: !0
                })
            }
            stopObserving(t) {
                this.stopListening(t)
            }
            _fireEvents(t) {
                this.isEnabled && (this.document.fire("layoutChanged"), this.document.fire("imageLoaded", t))
            }
        }
        var rA = Object.defineProperty,
            sA = Object.getOwnPropertySymbols,
            aA = Object.prototype.hasOwnProperty,
            cA = Object.prototype.propertyIsEnumerable,
            lA = (t, e, n) => e in t ? rA(t, e, {
                enumerable: !0,
                configurable: !0,
                writable: !0,
                value: n
            }) : t[e] = n,
            dA = (t, e) => {
                for (var n in e || (e = {})) aA.call(e, n) && lA(t, n, e[n]);
                if (sA)
                    for (var n of sA(e)) cA.call(e, n) && lA(t, n, e[n]);
                return t
            };
        class hA extends Yr {
            constructor(t) {
                super(t);
                const e = t.config.get("image.insert.type");
                t.plugins.has("ImageBlockEditing") || "block" === e && C("image-block-plugin-required"), t.plugins.has("ImageInlineEditing") || "inline" === e && C("image-inline-plugin-required")
            }
            refresh() {
                const t = this.editor.plugins.get("ImageUtils");
                this.isEnabled = t.isImageAllowed()
            }
            execute(t) {
                const e = vi(t.source),
                    n = this.editor.model.document.selection,
                    o = this.editor.plugins.get("ImageUtils"),
                    i = Object.fromEntries(n.getAttributes());
                e.forEach(((t, e) => {
                    const r = n.getSelectedElement();
                    if ("string" == typeof t && (t = {
                            src: t
                        }), e && r && o.isImage(r)) {
                        const e = this.editor.model.createPositionAfter(r);
                        o.insertImage(dA(dA({}, t), i), e)
                    } else o.insertImage(dA(dA({}, t), i))
                }))
            }
        }
        class uA extends Yr {
            refresh() {
                const t = this.editor.plugins.get("ImageUtils"),
                    e = this.editor.model.document.selection.getSelectedElement();
                this.isEnabled = t.isImage(e), this.value = this.isEnabled ? e.getAttribute("src") : null
            }
            execute(t) {
                const e = this.editor.model.document.selection.getSelectedElement();
                this.editor.model.change((n => {
                    n.setAttribute("src", t.source, e), n.removeAttribute("srcset", e), n.removeAttribute("sizes", e)
                }))
            }
        }
        class gA extends Wr {
            static get requires() {
                return [Gw]
            }
            static get pluginName() {
                return "ImageEditing"
            }
            init() {
                const t = this.editor,
                    e = t.conversion;
                t.editing.view.addObserver(iA), e.for("upcast").attributeToAttribute({
                    view: {
                        name: "img",
                        key: "alt"
                    },
                    model: "alt"
                }).attributeToAttribute({
                    view: {
                        name: "img",
                        key: "srcset"
                    },
                    model: {
                        key: "srcset",
                        value: t => {
                            const e = {
                                data: t.getAttribute("srcset")
                            };
                            return t.hasAttribute("width") && (e.width = t.getAttribute("width")), e
                        }
                    }
                });
                const n = new hA(t),
                    o = new uA(t);
                t.commands.add("insertImage", n), t.commands.add("replaceImageSource", o), t.commands.add("imageInsert", n)
            }
        }
        class pA extends Yr {
            constructor(t, e) {
                super(t), this._modelElementName = e
            }
            refresh() {
                const t = this.editor.plugins.get("ImageUtils"),
                    e = t.getClosestSelectedImageElement(this.editor.model.document.selection);
                "imageBlock" === this._modelElementName ? this.isEnabled = t.isInlineImage(e) : this.isEnabled = t.isBlockImage(e)
            }
            execute() {
                const t = this.editor,
                    e = this.editor.model,
                    n = t.plugins.get("ImageUtils"),
                    o = n.getClosestSelectedImageElement(e.document.selection),
                    i = Object.fromEntries(o.getAttributes());
                return i.src || i.uploadId ? e.change((t => {
                    const r = Array.from(e.markers).filter((t => t.getRange().containsItem(o))),
                        s = n.insertImage(i, e.createSelection(o, "on"), this._modelElementName);
                    if (!s) return null;
                    const a = t.createRangeOn(s);
                    for (const e of r) {
                        const n = e.getRange(),
                            o = "$graveyard" != n.root.rootName ? n.getJoined(a, !0) : a;
                        t.updateMarker(e, {
                            range: o
                        })
                    }
                    return {
                        oldElement: o,
                        newElement: s
                    }
                })) : null
            }
        }
        class mA extends Wr {
            static get requires() {
                return [gA, Gw, yf]
            }
            static get pluginName() {
                return "ImageBlockEditing"
            }
            init() {
                const t = this.editor;
                t.model.schema.register("imageBlock", {
                    inheritAllFrom: "$blockObject",
                    allowAttributes: ["alt", "src", "srcset"]
                }), this._setupConversion(), t.plugins.has("ImageInlineEditing") && (t.commands.add("imageTypeBlock", new pA(this.editor, "imageBlock")), this._setupClipboardIntegration())
            }
            _setupConversion() {
                const t = this.editor,
                    e = t.t,
                    n = t.conversion,
                    o = t.plugins.get("ImageUtils");
                n.for("dataDowncast").elementToStructure({
                    model: "imageBlock",
                    view: (t, {
                        writer: e
                    }) => zw(e)
                }), n.for("editingDowncast").elementToStructure({
                    model: "imageBlock",
                    view: (t, {
                        writer: n
                    }) => o.toImageWidget(zw(n), n, e("image widget"))
                }), n.for("downcast").add(oA(o, "imageBlock", "src")).add(oA(o, "imageBlock", "alt")).add(nA(o, "imageBlock")), n.for("upcast").elementToElement({
                    view: Ow(t, "imageBlock"),
                    model: (t, {
                        writer: e
                    }) => e.createElement("imageBlock", t.hasAttribute("src") ? {
                        src: t.getAttribute("src")
                    } : void 0)
                }).add(function (t) {
                    const e = (e, n, o) => {
                        if (!o.consumable.test(n.viewItem, {
                                name: !0,
                                classes: "image"
                            })) return;
                        const i = t.findViewImgElement(n.viewItem);
                        if (!i || !o.consumable.test(i, {
                                name: !0
                            })) return;
                        o.consumable.consume(n.viewItem, {
                            name: !0,
                            classes: "image"
                        });
                        const r = Ii(o.convertItem(i, n.modelCursor).modelRange.getItems());
                        r ? (o.convertChildren(n.viewItem, r), o.updateConversionResult(r, n)) : o.consumable.revert(n.viewItem, {
                            name: !0,
                            classes: "image"
                        })
                    };
                    return t => {
                        t.on("element:figure", e)
                    }
                }(o))
            }
            _setupClipboardIntegration() {
                const t = this.editor,
                    e = t.model,
                    n = t.editing.view,
                    o = t.plugins.get("ImageUtils"),
                    i = t.plugins.get("ClipboardPipeline");
                this.listenTo(i, "inputTransformation", ((i, r) => {
                    const s = Array.from(r.content.getChildren());
                    let a;
                    if (!s.every(o.isInlineImageView)) return;
                    a = r.targetRanges ? t.editing.mapper.toModelRange(r.targetRanges[0]) : e.document.selection.getFirstRange();
                    const c = e.createSelection(a);
                    if ("imageBlock" === Lw(e.schema, c)) {
                        const t = new vg(n.document),
                            e = s.map((e => t.createElement("figure", {
                                class: "image"
                            }, e)));
                        r.content = t.createDocumentFragment(e)
                    }
                }))
            }
        }
        var fA = n(3508),
            kA = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(fA.Z, kA);
        fA.Z.locals;
        class bA extends Wr {
            static get requires() {
                return [mA, Gk, eA]
            }
            static get pluginName() {
                return "ImageBlock"
            }
        }
        class wA extends Wr {
            static get requires() {
                return [gA, Gw, yf]
            }
            static get pluginName() {
                return "ImageInlineEditing"
            }
            init() {
                const t = this.editor,
                    e = t.model.schema;
                e.register("imageInline", {
                    inheritAllFrom: "$inlineObject",
                    allowAttributes: ["alt", "src", "srcset"]
                }), e.addChildCheck(((t, e) => {
                    if (t.endsWith("caption") && "imageInline" === e.name) return !1
                })), this._setupConversion(), t.plugins.has("ImageBlockEditing") && (t.commands.add("imageTypeInline", new pA(this.editor, "imageInline")), this._setupClipboardIntegration())
            }
            _setupConversion() {
                const t = this.editor,
                    e = t.t,
                    n = t.conversion,
                    o = t.plugins.get("ImageUtils");
                n.for("dataDowncast").elementToElement({
                    model: "imageInline",
                    view: (t, {
                        writer: e
                    }) => e.createEmptyElement("img")
                }), n.for("editingDowncast").elementToStructure({
                    model: "imageInline",
                    view: (t, {
                        writer: n
                    }) => o.toImageWidget(function (t) {
                        return t.createContainerElement("span", {
                            class: "image-inline"
                        }, t.createEmptyElement("img"))
                    }(n), n, e("image widget"))
                }), n.for("downcast").add(oA(o, "imageInline", "src")).add(oA(o, "imageInline", "alt")).add(nA(o, "imageInline")), n.for("upcast").elementToElement({
                    view: Ow(t, "imageInline"),
                    model: (t, {
                        writer: e
                    }) => e.createElement("imageInline", t.hasAttribute("src") ? {
                        src: t.getAttribute("src")
                    } : void 0)
                })
            }
            _setupClipboardIntegration() {
                const t = this.editor,
                    e = t.model,
                    n = t.editing.view,
                    o = t.plugins.get("ImageUtils"),
                    i = t.plugins.get("ClipboardPipeline");
                this.listenTo(i, "inputTransformation", ((i, r) => {
                    const s = Array.from(r.content.getChildren());
                    let a;
                    if (!s.every(o.isBlockImageView)) return;
                    a = r.targetRanges ? t.editing.mapper.toModelRange(r.targetRanges[0]) : e.document.selection.getFirstRange();
                    const c = e.createSelection(a);
                    if ("imageInline" === Lw(e.schema, c)) {
                        const t = new vg(n.document),
                            e = s.map((e => 1 === e.childCount ? (Array.from(e.getAttributes()).forEach((n => t.setAttribute(...n, o.findViewImgElement(e)))), e.getChild(0)) : e));
                        r.content = t.createDocumentFragment(e)
                    }
                }))
            }
        }
        class AA extends Wr {
            static get requires() {
                return [wA, Gk, eA]
            }
            static get pluginName() {
                return "ImageInline"
            }
        }
        class CA extends Wr {
            static get pluginName() {
                return "ImageCaptionUtils"
            }
            static get requires() {
                return [Gw]
            }
            getCaptionFromImageModelElement(t) {
                for (const e of t.getChildren())
                    if (e && e.is("element", "caption")) return e;
                return null
            }
            getCaptionFromModelSelection(t) {
                const e = this.editor.plugins.get("ImageUtils"),
                    n = t.getFirstPosition().findAncestor("caption");
                return n && e.isBlockImage(n.parent) ? n : null
            }
            matchImageCaptionViewElement(t) {
                const e = this.editor.plugins.get("ImageUtils");
                return "figcaption" == t.name && e.isBlockImageView(t.parent) ? {
                    name: !0
                } : null
            }
        }
        class _A extends Yr {
            refresh() {
                const t = this.editor,
                    e = t.plugins.get("ImageCaptionUtils"),
                    n = t.plugins.get("ImageUtils");
                if (!t.plugins.has(mA)) return this.isEnabled = !1, void(this.value = !1);
                const o = t.model.document.selection,
                    i = o.getSelectedElement();
                if (!i) {
                    const t = e.getCaptionFromModelSelection(o);
                    return this.isEnabled = !!t, void(this.value = !!t)
                }
                this.isEnabled = n.isImage(i), this.isEnabled ? this.value = !!e.getCaptionFromImageModelElement(i) : this.value = !1
            }
            execute(t = {}) {
                const {
                    focusCaptionOnShow: e
                } = t;
                this.editor.model.change((t => {
                    this.value ? this._hideImageCaption(t) : this._showImageCaption(t, e)
                }))
            }
            _showImageCaption(t, e) {
                const n = this.editor.model.document.selection,
                    o = this.editor.plugins.get("ImageCaptionEditing"),
                    i = this.editor.plugins.get("ImageUtils");
                let r = n.getSelectedElement();
                const s = o._getSavedCaption(r);
                i.isInlineImage(r) && (this.editor.execute("imageTypeBlock"), r = n.getSelectedElement());
                const a = s || t.createElement("caption");
                t.append(a, r), e && t.setSelection(a, "in")
            }
            _hideImageCaption(t) {
                const e = this.editor,
                    n = e.model.document.selection,
                    o = e.plugins.get("ImageCaptionEditing"),
                    i = e.plugins.get("ImageCaptionUtils");
                let r, s = n.getSelectedElement();
                s ? r = i.getCaptionFromImageModelElement(s) : (r = i.getCaptionFromModelSelection(n), s = r.parent), o._saveCaption(s, r), t.setSelection(s, "on"), t.remove(r)
            }
        }
        class vA extends Wr {
            constructor(t) {
                super(t), this._savedCaptionsMap = new WeakMap
            }
            static get requires() {
                return [Gw, CA]
            }
            static get pluginName() {
                return "ImageCaptionEditing"
            }
            init() {
                const t = this.editor,
                    e = t.model.schema;
                e.isRegistered("caption") ? e.extend("caption", {
                    allowIn: "imageBlock"
                }) : e.register("caption", {
                    allowIn: "imageBlock",
                    allowContentOf: "$block",
                    isLimit: !0
                }), t.commands.add("toggleImageCaption", new _A(this.editor)), this._setupConversion(), this._setupImageTypeCommandsIntegration(), this._registerCaptionReconversion()
            }
            _setupConversion() {
                const t = this.editor,
                    e = t.editing.view,
                    n = t.plugins.get("ImageUtils"),
                    o = t.plugins.get("ImageCaptionUtils"),
                    i = t.t;
                t.conversion.for("upcast").elementToElement({
                    view: t => o.matchImageCaptionViewElement(t),
                    model: "caption"
                }), t.conversion.for("dataDowncast").elementToElement({
                    model: "caption",
                    view: (t, {
                        writer: e
                    }) => n.isBlockImage(t.parent) ? e.createContainerElement("figcaption") : null
                }), t.conversion.for("editingDowncast").elementToElement({
                    model: "caption",
                    view: (t, {
                        writer: o
                    }) => {
                        if (!n.isBlockImage(t.parent)) return null;
                        const r = o.createEditableElement("figcaption");
                        o.setCustomProperty("imageCaption", !0, r), r.placeholder = i("Enter image caption"), rs({
                            view: e,
                            element: r,
                            keepOnFocus: !0
                        });
                        const s = t.parent.getAttribute("alt");
                        return Dk(r, o, {
                            label: s ? i("Caption for image: %0", [s]) : i("Caption for the image")
                        })
                    }
                })
            }
            _setupImageTypeCommandsIntegration() {
                const t = this.editor,
                    e = t.plugins.get("ImageUtils"),
                    n = t.plugins.get("ImageCaptionUtils"),
                    o = t.commands.get("imageTypeInline"),
                    i = t.commands.get("imageTypeBlock"),
                    r = t => {
                        if (!t.return) return;
                        const {
                            oldElement: o,
                            newElement: i
                        } = t.return;
                        if (!o) return;
                        if (e.isBlockImage(o)) {
                            const t = n.getCaptionFromImageModelElement(o);
                            if (t) return void this._saveCaption(i, t)
                        }
                        const r = this._getSavedCaption(o);
                        r && this._saveCaption(i, r)
                    };
                o && this.listenTo(o, "execute", r, {
                    priority: "low"
                }), i && this.listenTo(i, "execute", r, {
                    priority: "low"
                })
            }
            _getSavedCaption(t) {
                const e = this._savedCaptionsMap.get(t);
                return e ? Pl.fromJSON(e) : null
            }
            _saveCaption(t, e) {
                this._savedCaptionsMap.set(t, e.toJSON())
            }
            _registerCaptionReconversion() {
                const t = this.editor,
                    e = t.model,
                    n = t.plugins.get("ImageUtils"),
                    o = t.plugins.get("ImageCaptionUtils");
                e.document.on("change:data", (() => {
                    const i = e.document.differ.getChanges();
                    for (const e of i) {
                        if ("alt" !== e.attributeKey) continue;
                        const i = e.range.start.nodeAfter;
                        if (n.isBlockImage(i)) {
                            const e = o.getCaptionFromImageModelElement(i);
                            if (!e) return;
                            t.editing.reconvertItem(e)
                        }
                    }
                }))
            }
        }
        class yA extends Wr {
            static get requires() {
                return [CA]
            }
            static get pluginName() {
                return "ImageCaptionUI"
            }
            init() {
                const t = this.editor,
                    e = t.editing.view,
                    n = t.plugins.get("ImageCaptionUtils"),
                    o = t.t;
                t.ui.componentFactory.add("toggleImageCaption", (i => {
                    const r = t.commands.get("toggleImageCaption"),
                        s = new br(i);
                    return s.set({
                        icon: Ig.caption,
                        tooltip: !0,
                        isToggleable: !0
                    }), s.bind("isOn", "isEnabled").to(r, "value", "isEnabled"), s.bind("label").to(r, "value", (t => o(t ? "Toggle caption off" : "Toggle caption on"))), this.listenTo(s, "execute", (() => {
                        t.execute("toggleImageCaption", {
                            focusCaptionOnShow: !0
                        });
                        const o = n.getCaptionFromModelSelection(t.model.document.selection);
                        if (o) {
                            const n = t.editing.mapper.toViewElement(o);
                            e.scrollToTheSelection(), e.change((t => {
                                t.addClass("image__caption_highlighted", n)
                            }))
                        }
                        t.editing.view.focus()
                    })), s
                }))
            }
        }
        var xA = n(2640),
            EA = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(xA.Z, EA);
        xA.Z.locals;

        function DA(t) {
            const e = t.map((t => t.replace("+", "\\+")));
            return new RegExp(`^image\\/(${e.join("|")})$`)
        }

        function SA(t) {
            return new Promise(((e, n) => {
                const o = t.getAttribute("src");
                fetch(o).then((t => t.blob())).then((t => {
                    const n = IA(t, o),
                        i = n.replace("image/", ""),
                        r = new File([t], `image.${i}`, {
                            type: n
                        });
                    e(r)
                })).catch((t => t && "TypeError" === t.name ? function (t) {
                    return function (t) {
                        return new Promise(((e, n) => {
                            const o = Oo.document.createElement("img");
                            o.addEventListener("load", (() => {
                                const t = Oo.document.createElement("canvas");
                                t.width = o.width, t.height = o.height;
                                t.getContext("2d").drawImage(o, 0, 0), t.toBlob((t => t ? e(t) : n()))
                            })), o.addEventListener("error", (() => n())), o.src = t
                        }))
                    }(t).then((e => {
                        const n = IA(e, t),
                            o = n.replace("image/", "");
                        return new File([e], `image.${o}`, {
                            type: n
                        })
                    }))
                }(o).then(e).catch(n) : n(t)))
            }))
        }

        function IA(t, e) {
            return t.type ? t.type : e.match(/data:(image\/\w+);base64/) ? e.match(/data:(image\/\w+);base64/)[1].toLowerCase() : "image/jpeg"
        }
        class MA extends Wr {
            static get pluginName() {
                return "ImageUploadUI"
            }
            init() {
                const t = this.editor,
                    e = t.t,
                    n = n => {
                        const o = new Ib(n),
                            i = t.commands.get("uploadImage"),
                            r = t.config.get("image.upload.types"),
                            s = DA(r);
                        return o.set({
                            acceptedType: r.map((t => `image/${t}`)).join(","),
                            allowMultipleFiles: !0
                        }), o.buttonView.set({
                            label: e("Insert image"),
                            icon: Ig.image,
                            tooltip: !0
                        }), o.buttonView.bind("isEnabled").to(i), o.on("done", ((e, n) => {
                            const o = Array.from(n).filter((t => s.test(t.type)));
                            o.length && (t.execute("uploadImage", {
                                file: o
                            }), t.editing.view.focus())
                        })), o
                    };
                t.ui.componentFactory.add("uploadImage", n), t.ui.componentFactory.add("imageUpload", n)
            }
        }
        var TA = n(3689),
            BA = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(TA.Z, BA);
        TA.Z.locals;
        var NA = n(4036),
            PA = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(NA.Z, PA);
        NA.Z.locals;
        var zA = n(3773),
            OA = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(zA.Z, OA);
        zA.Z.locals;
        class LA extends Wr {
            constructor(t) {
                super(t), this.uploadStatusChange = (t, e, n) => {
                    const o = this.editor,
                        i = e.item,
                        r = i.getAttribute("uploadId");
                    if (!n.consumable.consume(e.item, t.name)) return;
                    const s = o.plugins.get("ImageUtils"),
                        a = o.plugins.get(Db),
                        c = r ? e.attributeNewValue : null,
                        l = this.placeholder,
                        d = o.editing.mapper.toViewElement(i),
                        h = n.writer;
                    if ("reading" == c) return jA(d, h), void RA(s, l, d, h);
                    if ("uploading" == c) {
                        const t = a.loaders.get(r);
                        return jA(d, h), void(t ? (FA(d, h), function (t, e, n, o) {
                            const i = function (t) {
                                const e = t.createUIElement("div", {
                                    class: "ck-progress-bar"
                                });
                                return t.setCustomProperty("progressBar", !0, e), e
                            }(e);
                            e.insert(e.createPositionAt(t, "end"), i), n.on("change:uploadedPercent", ((t, e, n) => {
                                o.change((t => {
                                    t.setStyle("width", n + "%", i)
                                }))
                            }))
                        }(d, h, t, o.editing.view), function (t, e, n, o) {
                            if (o.data) {
                                const i = t.findViewImgElement(e);
                                n.setAttribute("src", o.data, i)
                            }
                        }(s, d, h, t)) : RA(s, l, d, h))
                    }
                    "complete" == c && a.loaders.get(r) && function (t, e, n) {
                            const o = e.createUIElement("div", {
                                class: "ck-image-upload-complete-icon"
                            });
                            e.insert(e.createPositionAt(t, "end"), o), setTimeout((() => {
                                n.change((t => t.remove(t.createRangeOn(o))))
                            }), 3e3)
                        }(d, h, o.editing.view),
                        function (t, e) {
                            UA(t, e, "progressBar")
                        }(d, h), FA(d, h),
                        function (t, e) {
                            e.removeClass("ck-appear", t)
                        }(d, h)
                }, this.placeholder = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="
            }
            static get pluginName() {
                return "ImageUploadProgress"
            }
            init() {
                const t = this.editor;
                t.plugins.has("ImageBlockEditing") && t.editing.downcastDispatcher.on("attribute:uploadStatus:imageBlock", this.uploadStatusChange), t.plugins.has("ImageInlineEditing") && t.editing.downcastDispatcher.on("attribute:uploadStatus:imageInline", this.uploadStatusChange)
            }
        }

        function jA(t, e) {
            t.hasClass("ck-appear") || e.addClass("ck-appear", t)
        }

        function RA(t, e, n, o) {
            n.hasClass("ck-image-upload-placeholder") || o.addClass("ck-image-upload-placeholder", n);
            const i = t.findViewImgElement(n);
            i.getAttribute("src") !== e && o.setAttribute("src", e, i), VA(n, "placeholder") || o.insert(o.createPositionAfter(i), function (t) {
                const e = t.createUIElement("div", {
                    class: "ck-upload-placeholder-loader"
                });
                return t.setCustomProperty("placeholder", !0, e), e
            }(o))
        }

        function FA(t, e) {
            t.hasClass("ck-image-upload-placeholder") && e.removeClass("ck-image-upload-placeholder", t), UA(t, e, "placeholder")
        }

        function VA(t, e) {
            for (const n of t.getChildren())
                if (n.getCustomProperty(e)) return n
        }

        function UA(t, e, n) {
            const o = VA(t, n);
            o && e.remove(e.createRangeOn(o))
        }
        var HA = Object.defineProperty,
            GA = Object.defineProperties,
            qA = Object.getOwnPropertyDescriptors,
            WA = Object.getOwnPropertySymbols,
            KA = Object.prototype.hasOwnProperty,
            YA = Object.prototype.propertyIsEnumerable,
            $A = (t, e, n) => e in t ? HA(t, e, {
                enumerable: !0,
                configurable: !0,
                writable: !0,
                value: n
            }) : t[e] = n;
        class ZA extends Yr {
            refresh() {
                const t = this.editor,
                    e = t.plugins.get("ImageUtils"),
                    n = t.model.document.selection.getSelectedElement();
                this.isEnabled = e.isImageAllowed() || e.isImage(n)
            }
            execute(t) {
                const e = vi(t.file),
                    n = this.editor.model.document.selection,
                    o = this.editor.plugins.get("ImageUtils"),
                    i = Object.fromEntries(n.getAttributes());
                e.forEach(((t, e) => {
                    const r = n.getSelectedElement();
                    if (e && r && o.isImage(r)) {
                        const e = this.editor.model.createPositionAfter(r);
                        this._uploadImage(t, i, e)
                    } else this._uploadImage(t, i)
                }))
            }
            _uploadImage(t, e, n) {
                const o = this.editor,
                    i = o.plugins.get(Db).createLoader(t),
                    r = o.plugins.get("ImageUtils");
                var s, a;
                i && r.insertImage((s = ((t, e) => {
                    for (var n in e || (e = {})) KA.call(e, n) && $A(t, n, e[n]);
                    if (WA)
                        for (var n of WA(e)) YA.call(e, n) && $A(t, n, e[n]);
                    return t
                })({}, e), a = {
                    uploadId: i.id
                }, GA(s, qA(a))), n)
            }
        }
        class QA extends Wr {
            constructor(t) {
                super(t), t.config.define("image", {
                    upload: {
                        types: ["jpeg", "png", "gif", "bmp", "webp", "tiff"]
                    }
                }), this._uploadImageElements = new Map
            }
            static get requires() {
                return [Db, Pm, yf, Gw]
            }
            static get pluginName() {
                return "ImageUploadEditing"
            }
            init() {
                const t = this.editor,
                    e = t.model.document,
                    n = t.conversion,
                    o = t.plugins.get(Db),
                    i = t.plugins.get("ImageUtils"),
                    r = t.plugins.get("ClipboardPipeline"),
                    s = DA(t.config.get("image.upload.types")),
                    a = new ZA(t);
                t.commands.add("uploadImage", a), t.commands.add("imageUpload", a), n.for("upcast").attributeToAttribute({
                    view: {
                        name: "img",
                        key: "uploadId"
                    },
                    model: "uploadId"
                }), this.listenTo(t.editing.view.document, "clipboardInput", ((e, n) => {
                    if (o = n.dataTransfer, Array.from(o.types).includes("text/html") && "" !== o.getData("text/html")) return;
                    var o;
                    const i = Array.from(n.dataTransfer.files).filter((t => !!t && s.test(t.type)));
                    i.length && (e.stop(), t.model.change((e => {
                        n.targetRanges && e.setSelection(n.targetRanges.map((e => t.editing.mapper.toModelRange(e)))), t.model.enqueueChange((() => {
                            t.execute("uploadImage", {
                                file: i
                            })
                        }))
                    })))
                })), this.listenTo(r, "inputTransformation", ((e, n) => {
                    const r = Array.from(t.editing.view.createRangeIn(n.content)).map((t => t.item)).filter((t => function (t, e) {
                        return !(!t.isInlineImageView(e) || !e.getAttribute("src") || !e.getAttribute("src").match(/^data:image\/\w+;base64,/g) && !e.getAttribute("src").match(/^blob:/g))
                    }(i, t) && !t.getAttribute("uploadProcessed"))).map((t => ({
                        promise: SA(t),
                        imageElement: t
                    })));
                    if (!r.length) return;
                    const s = new vg(t.editing.view.document);
                    for (const t of r) {
                        s.setAttribute("uploadProcessed", !0, t.imageElement);
                        const e = o.createLoader(t.promise);
                        e && (s.setAttribute("src", "", t.imageElement), s.setAttribute("uploadId", e.id, t.imageElement))
                    }
                })), t.editing.view.document.on("dragover", ((t, e) => {
                    e.preventDefault()
                })), e.on("change", (() => {
                    const n = e.differ.getChanges({
                            includeChangesInGraveyard: !0
                        }).reverse(),
                        i = new Set;
                    for (const e of n)
                        if ("insert" == e.type && "$text" != e.name) {
                            const n = e.position.nodeAfter,
                                r = "$graveyard" == e.position.root.rootName;
                            for (const e of JA(t, n)) {
                                const t = e.getAttribute("uploadId");
                                if (!t) continue;
                                const n = o.loaders.get(t);
                                n && (r ? i.has(t) || n.abort() : (i.add(t), this._uploadImageElements.set(t, e), "idle" == n.status && this._readAndUpload(n)))
                            }
                        }
                })), this.on("uploadComplete", ((t, {
                    imageElement: e,
                    data: n
                }) => {
                    const o = n.urls ? n.urls : n;
                    this.editor.model.change((t => {
                        t.setAttribute("src", o.default, e), this._parseAndSetSrcsetAttributeOnImage(o, e, t)
                    }))
                }), {
                    priority: "low"
                })
            }
            afterInit() {
                const t = this.editor.model.schema;
                this.editor.plugins.has("ImageBlockEditing") && t.extend("imageBlock", {
                    allowAttributes: ["uploadId", "uploadStatus"]
                }), this.editor.plugins.has("ImageInlineEditing") && t.extend("imageInline", {
                    allowAttributes: ["uploadId", "uploadStatus"]
                })
            }
            _readAndUpload(t) {
                const e = this.editor,
                    n = e.model,
                    o = e.locale.t,
                    i = e.plugins.get(Db),
                    r = e.plugins.get(Pm),
                    s = e.plugins.get("ImageUtils"),
                    c = this._uploadImageElements;
                return n.enqueueChange({
                    isUndoable: !1
                }, (e => {
                    e.setAttribute("uploadStatus", "reading", c.get(t.id))
                })), t.read().then((() => {
                    const o = t.upload(),
                        i = c.get(t.id);
                    if (a.isSafari) {
                        const t = e.editing.mapper.toViewElement(i),
                            n = s.findViewImgElement(t);
                        e.editing.view.once("render", (() => {
                            if (!n.parent) return;
                            const t = e.editing.view.domConverter.mapViewToDom(n.parent);
                            if (!t) return;
                            const o = t.style.display;
                            t.style.display = "none", t._ckHack = t.offsetHeight, t.style.display = o
                        }))
                    }
                    return n.enqueueChange({
                        isUndoable: !1
                    }, (t => {
                        t.setAttribute("uploadStatus", "uploading", i)
                    })), o
                })).then((e => {
                    n.enqueueChange({
                        isUndoable: !1
                    }, (n => {
                        const o = c.get(t.id);
                        n.setAttribute("uploadStatus", "complete", o), this.fire("uploadComplete", {
                            data: e,
                            imageElement: o
                        })
                    })), l()
                })).catch((e => {
                    if ("error" !== t.status && "aborted" !== t.status) throw e;
                    "error" == t.status && e && r.showWarning(e, {
                        title: o("Upload failed"),
                        namespace: "upload"
                    }), n.enqueueChange({
                        isUndoable: !1
                    }, (e => {
                        e.remove(c.get(t.id))
                    })), l()
                }));

                function l() {
                    n.enqueueChange({
                        isUndoable: !1
                    }, (e => {
                        const n = c.get(t.id);
                        e.removeAttribute("uploadId", n), e.removeAttribute("uploadStatus", n), c.delete(t.id)
                    })), i.destroyLoader(t)
                }
            }
            _parseAndSetSrcsetAttributeOnImage(t, e, n) {
                let o = 0;
                const i = Object.keys(t).filter((t => {
                    const e = parseInt(t, 10);
                    if (!isNaN(e)) return o = Math.max(o, e), !0
                })).map((e => `${t[e]} ${e}w`)).join(", ");
                "" != i && n.setAttribute("srcset", {
                    data: i,
                    width: o
                }, e)
            }
        }

        function JA(t, e) {
            const n = t.plugins.get("ImageUtils");
            return Array.from(t.model.createRangeOn(e)).filter((t => n.isImage(t.item))).map((t => t.item))
        }
        var XA = n(1568),
            tC = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(XA.Z, tC);
        XA.Z.locals;
        var eC = n(3535),
            nC = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(eC.Z, nC);
        eC.Z.locals;
        var oC = n(6270),
            iC = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(oC.Z, iC);
        oC.Z.locals;
        class rC extends Yr {
            constructor(t, e) {
                super(t), this._defaultStyles = {
                    imageBlock: !1,
                    imageInline: !1
                }, this._styles = new Map(e.map((t => {
                    if (t.isDefault)
                        for (const e of t.modelElements) this._defaultStyles[e] = t.name;
                    return [t.name, t]
                })))
            }
            refresh() {
                const t = this.editor.plugins.get("ImageUtils").getClosestSelectedImageElement(this.editor.model.document.selection);
                this.isEnabled = !!t, this.isEnabled ? t.hasAttribute("imageStyle") ? this.value = t.getAttribute("imageStyle") : this.value = this._defaultStyles[t.name] : this.value = !1
            }
            execute(t = {}) {
                const e = this.editor,
                    n = e.model,
                    o = e.plugins.get("ImageUtils");
                n.change((e => {
                    const i = t.value;
                    let r = o.getClosestSelectedImageElement(n.document.selection);
                    i && this.shouldConvertImageType(i, r) && (this.editor.execute(o.isBlockImage(r) ? "imageTypeInline" : "imageTypeBlock"), r = o.getClosestSelectedImageElement(n.document.selection)), !i || this._styles.get(i).isDefault ? e.removeAttribute("imageStyle", r) : e.setAttribute("imageStyle", i, r)
                }))
            }
            shouldConvertImageType(t, e) {
                return !this._styles.get(t).modelElements.includes(e.name)
            }
        }
        var sC = Object.defineProperty,
            aC = Object.getOwnPropertySymbols,
            cC = Object.prototype.hasOwnProperty,
            lC = Object.prototype.propertyIsEnumerable,
            dC = (t, e, n) => e in t ? sC(t, e, {
                enumerable: !0,
                configurable: !0,
                writable: !0,
                value: n
            }) : t[e] = n,
            hC = (t, e) => {
                for (var n in e || (e = {})) cC.call(e, n) && dC(t, n, e[n]);
                if (aC)
                    for (var n of aC(e)) lC.call(e, n) && dC(t, n, e[n]);
                return t
            };
        const {
            objectFullWidth: uC,
            objectInline: gC,
            objectLeft: pC,
            objectRight: mC,
            objectCenter: fC,
            objectBlockLeft: kC,
            objectBlockRight: bC
        } = Ig, wC = {
            get inline() {
                return {
                    name: "inline",
                    title: "In line",
                    icon: gC,
                    modelElements: ["imageInline"],
                    isDefault: !0
                }
            },
            get alignLeft() {
                return {
                    name: "alignLeft",
                    title: "Left aligned image",
                    icon: pC,
                    modelElements: ["imageBlock", "imageInline"],
                    className: "image-style-align-left"
                }
            },
            get alignBlockLeft() {
                return {
                    name: "alignBlockLeft",
                    title: "Left aligned image",
                    icon: kC,
                    modelElements: ["imageBlock"],
                    className: "image-style-block-align-left"
                }
            },
            get alignCenter() {
                return {
                    name: "alignCenter",
                    title: "Centered image",
                    icon: fC,
                    modelElements: ["imageBlock"],
                    className: "image-style-align-center"
                }
            },
            get alignRight() {
                return {
                    name: "alignRight",
                    title: "Right aligned image",
                    icon: mC,
                    modelElements: ["imageBlock", "imageInline"],
                    className: "image-style-align-right"
                }
            },
            get alignBlockRight() {
                return {
                    name: "alignBlockRight",
                    title: "Right aligned image",
                    icon: bC,
                    modelElements: ["imageBlock"],
                    className: "image-style-block-align-right"
                }
            },
            get block() {
                return {
                    name: "block",
                    title: "Centered image",
                    icon: fC,
                    modelElements: ["imageBlock"],
                    isDefault: !0
                }
            },
            get side() {
                return {
                    name: "side",
                    title: "Side image",
                    icon: mC,
                    modelElements: ["imageBlock"],
                    className: "image-style-side"
                }
            }
        }, AC = {
            full: uC,
            left: kC,
            right: bC,
            center: fC,
            inlineLeft: pC,
            inlineRight: mC,
            inline: gC
        }, CC = [{
            name: "imageStyle:wrapText",
            title: "Wrap text",
            defaultItem: "imageStyle:alignLeft",
            items: ["imageStyle:alignLeft", "imageStyle:alignRight"]
        }, {
            name: "imageStyle:breakText",
            title: "Break text",
            defaultItem: "imageStyle:block",
            items: ["imageStyle:alignBlockLeft", "imageStyle:block", "imageStyle:alignBlockRight"]
        }];

        function _C(t) {
            C("image-style-configuration-definition-invalid", t)
        }
        const vC = {
            normalizeStyles: function (t) {
                return (t.configuredStyles.options || []).map((t => function (t) {
                    t = "string" == typeof t ? wC[t] ? hC({}, wC[t]) : {
                        name: t
                    } : function (t, e) {
                        const n = hC({}, e);
                        for (const o in t) Object.prototype.hasOwnProperty.call(e, o) || (n[o] = t[o]);
                        return n
                    }(wC[t.name], t);
                    "string" == typeof t.icon && (t.icon = AC[t.icon] || t.icon);
                    return t
                }(t))).filter((e => function (t, {
                    isBlockPluginLoaded: e,
                    isInlinePluginLoaded: n
                }) {
                    const {
                        modelElements: o,
                        name: i
                    } = t;
                    if (!(o && o.length && i)) return _C({
                        style: t
                    }), !1; {
                        const i = [e ? "imageBlock" : null, n ? "imageInline" : null];
                        if (!o.some((t => i.includes(t)))) return C("image-style-missing-dependency", {
                            style: t,
                            missingPlugins: o.map((t => "imageBlock" === t ? "ImageBlockEditing" : "ImageInlineEditing"))
                        }), !1
                    }
                    return !0
                }(e, t)))
            },
            getDefaultStylesConfiguration: function (t, e) {
                return t && e ? {
                    options: ["inline", "alignLeft", "alignRight", "alignCenter", "alignBlockLeft", "alignBlockRight", "block", "side"]
                } : t ? {
                    options: ["block", "side"]
                } : e ? {
                    options: ["inline", "alignLeft", "alignRight"]
                } : {}
            },
            getDefaultDropdownDefinitions: function (t) {
                return t.has("ImageBlockEditing") && t.has("ImageInlineEditing") ? [...CC] : []
            },
            warnInvalidStyle: _C,
            DEFAULT_OPTIONS: wC,
            DEFAULT_ICONS: AC,
            DEFAULT_DROPDOWN_DEFINITIONS: CC
        };

        function yC(t, e) {
            for (const n of e)
                if (n.name === t) return n
        }
        class xC extends Wr {
            static get pluginName() {
                return "ImageStyleEditing"
            }
            static get requires() {
                return [Gw]
            }
            init() {
                const {
                    normalizeStyles: t,
                    getDefaultStylesConfiguration: e
                } = vC, n = this.editor, o = n.plugins.has("ImageBlockEditing"), i = n.plugins.has("ImageInlineEditing");
                n.config.define("image.styles", e(o, i)), this.normalizedStyles = t({
                    configuredStyles: n.config.get("image.styles"),
                    isBlockPluginLoaded: o,
                    isInlinePluginLoaded: i
                }), this._setupConversion(o, i), this._setupPostFixer(), n.commands.add("imageStyle", new rC(n, this.normalizedStyles))
            }
            _setupConversion(t, e) {
                const n = this.editor,
                    o = n.model.schema,
                    i = (r = this.normalizedStyles, (t, e, n) => {
                        if (!n.consumable.consume(e.item, t.name)) return;
                        const o = yC(e.attributeNewValue, r),
                            i = yC(e.attributeOldValue, r),
                            s = n.mapper.toViewElement(e.item),
                            a = n.writer;
                        i && a.removeClass(i.className, s), o && a.addClass(o.className, s)
                    });
                var r;
                const s = function (t) {
                    const e = {
                        imageInline: t.filter((t => !t.isDefault && t.modelElements.includes("imageInline"))),
                        imageBlock: t.filter((t => !t.isDefault && t.modelElements.includes("imageBlock")))
                    };
                    return (t, n, o) => {
                        if (!n.modelRange) return;
                        const i = n.viewItem,
                            r = Ii(n.modelRange.getItems());
                        if (r && o.schema.checkAttribute(r, "imageStyle"))
                            for (const t of e[r.name]) o.consumable.consume(i, {
                                classes: t.className
                            }) && o.writer.setAttribute("imageStyle", t.name, r)
                    }
                }(this.normalizedStyles);
                n.editing.downcastDispatcher.on("attribute:imageStyle", i), n.data.downcastDispatcher.on("attribute:imageStyle", i), t && (o.extend("imageBlock", {
                    allowAttributes: "imageStyle"
                }), n.data.upcastDispatcher.on("element:figure", s, {
                    priority: "low"
                })), e && (o.extend("imageInline", {
                    allowAttributes: "imageStyle"
                }), n.data.upcastDispatcher.on("element:img", s, {
                    priority: "low"
                }))
            }
            _setupPostFixer() {
                const t = this.editor,
                    e = t.model.document,
                    n = t.plugins.get(Gw),
                    o = new Map(this.normalizedStyles.map((t => [t.name, t])));
                e.registerPostFixer((t => {
                    let i = !1;
                    for (const r of e.differ.getChanges())
                        if ("insert" == r.type || "attribute" == r.type && "imageStyle" == r.attributeKey) {
                            let e = "insert" == r.type ? r.position.nodeAfter : r.range.start.nodeAfter;
                            if (e && e.is("element", "paragraph") && e.childCount > 0 && (e = e.getChild(0)), !n.isImage(e)) continue;
                            const s = e.getAttribute("imageStyle");
                            if (!s) continue;
                            const a = o.get(s);
                            a && a.modelElements.includes(e.name) || (t.removeAttribute("imageStyle", e), i = !0)
                        } return i
                }))
            }
        }
        var EC = n(5083),
            DC = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(EC.Z, DC);
        EC.Z.locals;
        class SC extends Wr {
            static get requires() {
                return [xC]
            }
            static get pluginName() {
                return "ImageStyleUI"
            }
            get localizedDefaultStylesTitles() {
                const t = this.editor.t;
                return {
                    "Wrap text": t("Wrap text"),
                    "Break text": t("Break text"),
                    "In line": t("In line"),
                    "Full size image": t("Full size image"),
                    "Side image": t("Side image"),
                    "Left aligned image": t("Left aligned image"),
                    "Centered image": t("Centered image"),
                    "Right aligned image": t("Right aligned image")
                }
            }
            init() {
                const t = this.editor.plugins,
                    e = this.editor.config.get("image.toolbar") || [],
                    n = IC(t.get("ImageStyleEditing").normalizedStyles, this.localizedDefaultStylesTitles);
                for (const t of n) this._createButton(t);
                const o = IC([...e.filter(F), ...vC.getDefaultDropdownDefinitions(t)], this.localizedDefaultStylesTitles);
                for (const t of o) this._createDropdown(t, n)
            }
            _createDropdown(t, e) {
                const n = this.editor.ui.componentFactory;
                n.add(t.name, (o => {
                    let i;
                    const {
                        defaultItem: r,
                        items: s,
                        title: a
                    } = t, c = s.filter((t => e.find((({
                        name: e
                    }) => MC(e) === t)))).map((t => {
                        const e = n.create(t);
                        return t === r && (i = e), e
                    }));
                    s.length !== c.length && vC.warnInvalidStyle({
                        dropdown: t
                    });
                    const l = Zg(o, qg),
                        d = l.buttonView,
                        h = d.arrowView;
                    return Qg(l, c, {
                        enableActiveItemFocusOnDropdownOpen: !0
                    }), d.set({
                        label: TC(a, i.label),
                        class: null,
                        tooltip: !0
                    }), h.unbind("label"), h.set({
                        label: a
                    }), d.bind("icon").toMany(c, "isOn", ((...t) => {
                        const e = t.findIndex(Zs);
                        return e < 0 ? i.icon : c[e].icon
                    })), d.bind("label").toMany(c, "isOn", ((...t) => {
                        const e = t.findIndex(Zs);
                        return TC(a, e < 0 ? i.label : c[e].label)
                    })), d.bind("isOn").toMany(c, "isOn", ((...t) => t.some(Zs))), d.bind("class").toMany(c, "isOn", ((...t) => t.some(Zs) ? "ck-splitbutton_flatten" : void 0)), d.on("execute", (() => {
                        c.some((({
                            isOn: t
                        }) => t)) ? l.isOpen = !l.isOpen : i.fire("execute")
                    })), l.bind("isEnabled").toMany(c, "isEnabled", ((...t) => t.some(Zs))), this.listenTo(l, "execute", (() => {
                        this.editor.editing.view.focus()
                    })), l
                }))
            }
            _createButton(t) {
                const e = t.name;
                this.editor.ui.componentFactory.add(MC(e), (n => {
                    const o = this.editor.commands.get("imageStyle"),
                        i = new br(n);
                    return i.set({
                        label: t.title,
                        icon: t.icon,
                        tooltip: !0,
                        isToggleable: !0
                    }), i.bind("isEnabled").to(o, "isEnabled"), i.bind("isOn").to(o, "value", (t => t === e)), i.on("execute", this._executeCommand.bind(this, e)), i
                }))
            }
            _executeCommand(t) {
                this.editor.execute("imageStyle", {
                    value: t
                }), this.editor.editing.view.focus()
            }
        }

        function IC(t, e) {
            for (const n of t) e[n.title] && (n.title = e[n.title]);
            return t
        }

        function MC(t) {
            return `imageStyle:${t}`
        }

        function TC(t, e) {
            return (t ? t + ": " : "") + e
        }
        class BC extends Wr {
            static get pluginName() {
                return "IndentEditing"
            }
            init() {
                const t = this.editor;
                t.commands.add("indent", new Zr(t)), t.commands.add("outdent", new Zr(t))
            }
        }
        const NC = '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2 3.75c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm5 6c0 .414.336.75.75.75h9.5a.75.75 0 1 0 0-1.5h-9.5a.75.75 0 0 0-.75.75zM2.75 16.5h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 1 0 0 1.5zM1.632 6.95 5.02 9.358a.4.4 0 0 1-.013.661l-3.39 2.207A.4.4 0 0 1 1 11.892V7.275a.4.4 0 0 1 .632-.326z"/></svg>',
            PC = '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2 3.75c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm5 6c0 .414.336.75.75.75h9.5a.75.75 0 1 0 0-1.5h-9.5a.75.75 0 0 0-.75.75zM2.75 16.5h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 1 0 0 1.5zm1.618-9.55L.98 9.358a.4.4 0 0 0 .013.661l3.39 2.207A.4.4 0 0 0 5 11.892V7.275a.4.4 0 0 0-.632-.326z"/></svg>';
        class zC extends Wr {
            static get pluginName() {
                return "IndentUI"
            }
            init() {
                const t = this.editor,
                    e = t.locale,
                    n = t.t,
                    o = "ltr" == e.uiLanguageDirection ? NC : PC,
                    i = "ltr" == e.uiLanguageDirection ? PC : NC;
                this._defineButton("indent", n("Increase indent"), o), this._defineButton("outdent", n("Decrease indent"), i)
            }
            _defineButton(t, e, n) {
                const o = this.editor;
                o.ui.componentFactory.add(t, (i => {
                    const r = o.commands.get(t),
                        s = new br(i);
                    return s.set({
                        label: e,
                        icon: n,
                        tooltip: !0
                    }), s.bind("isEnabled").to(r, "isEnabled"), this.listenTo(s, "execute", (() => {
                        o.execute(t), o.editing.view.focus()
                    })), s
                }))
            }
        }
        class OC {
            constructor() {
                this._definitions = new Set
            }
            get length() {
                return this._definitions.size
            }
            add(t) {
                Array.isArray(t) ? t.forEach((t => this._definitions.add(t))) : this._definitions.add(t)
            }
            getDispatcher() {
                return t => {
                    t.on("attribute:linkHref", ((t, e, n) => {
                        if (!n.consumable.test(e.item, "attribute:linkHref")) return;
                        if (!e.item.is("selection") && !n.schema.isInline(e.item)) return;
                        const o = n.writer,
                            i = o.document.selection;
                        for (const t of this._definitions) {
                            const r = o.createAttributeElement("a", t.attributes, {
                                priority: 5
                            });
                            t.classes && o.addClass(t.classes, r);
                            for (const e in t.styles) o.setStyle(e, t.styles[e], r);
                            o.setCustomProperty("link", !0, r), t.callback(e.attributeNewValue) ? e.item.is("selection") ? o.wrap(i.getFirstRange(), r) : o.wrap(n.mapper.toViewRange(e.range), r) : o.unwrap(n.mapper.toViewRange(e.range), r)
                        }
                    }), {
                        priority: "high"
                    })
                }
            }
            getDispatcherForLinkedImage() {
                return t => {
                    t.on("attribute:linkHref:imageBlock", ((t, e, {
                        writer: n,
                        mapper: o
                    }) => {
                        const i = o.toViewElement(e.item),
                            r = Array.from(i.getChildren()).find((t => t.is("element", "a")));
                        for (const t of this._definitions) {
                            const o = Bi(t.attributes);
                            if (t.callback(e.attributeNewValue)) {
                                for (const [t, e] of o) "class" === t ? n.addClass(e, r) : n.setAttribute(t, e, r);
                                t.classes && n.addClass(t.classes, r);
                                for (const e in t.styles) n.setStyle(e, t.styles[e], r)
                            } else {
                                for (const [t, e] of o) "class" === t ? n.removeClass(e, r) : n.removeAttribute(t, r);
                                t.classes && n.removeClass(t.classes, r);
                                for (const e in t.styles) n.removeStyle(e, r)
                            }
                        }
                    }))
                }
            }
        }
        const LC = function (t, e, n) {
            var o = t.length;
            return n = void 0 === n ? o : n, !e && n >= o ? t : js(t, e, n)
        };
        var jC = RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");
        const RC = function (t) {
            return jC.test(t)
        };
        const FC = function (t) {
            return t.split("")
        };
        var VC = "\\ud800-\\udfff",
            UC = "[" + VC + "]",
            HC = "[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",
            GC = "\\ud83c[\\udffb-\\udfff]",
            qC = "[^" + VC + "]",
            WC = "(?:\\ud83c[\\udde6-\\uddff]){2}",
            KC = "[\\ud800-\\udbff][\\udc00-\\udfff]",
            YC = "(?:" + HC + "|" + GC + ")" + "?",
            $C = "[\\ufe0e\\ufe0f]?",
            ZC = $C + YC + ("(?:\\u200d(?:" + [qC, WC, KC].join("|") + ")" + $C + YC + ")*"),
            QC = "(?:" + [qC + HC + "?", HC, WC, KC, UC].join("|") + ")",
            JC = RegExp(GC + "(?=" + GC + ")|" + QC + ZC, "g");
        const XC = function (t) {
            return t.match(JC) || []
        };
        const t_ = function (t) {
            return RC(t) ? XC(t) : FC(t)
        };
        const e_ = function (t) {
                return function (e) {
                    e = Ns(e);
                    var n = RC(e) ? t_(e) : void 0,
                        o = n ? n[0] : e.charAt(0),
                        i = n ? LC(n, 1).join("") : e.slice(1);
                    return o[t]() + i
                }
            }("toUpperCase"),
            n_ = /[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,
            o_ = /^(?:(?:https?|ftps?|mailto):|[^a-z]|[a-z+.-]+(?:[^a-z+.:-]|$))/i,
            i_ = /^[\S]+@((?![-_])(?:[-\w\u00a1-\uffff]{0,63}[^-_]\.))+(?:[a-z\u00a1-\uffff]{2,})$/i,
            r_ = /^((\w+:(\/{2,})?)|(\W))/i,
            s_ = "Ctrl+K";

        function a_(t, {
            writer: e
        }) {
            const n = e.createAttributeElement("a", {
                href: t
            }, {
                priority: 5
            });
            return e.setCustomProperty("link", !0, n), n
        }

        function c_(t) {
            const e = String(t);
            return function (t) {
                const e = t.replace(n_, "");
                return !!e.match(o_)
            }(e) ? e : "#"
        }

        function l_(t, e) {
            return !!t && e.checkAttribute(t.name, "linkHref")
        }

        function d_(t, e) {
            const n = (o = t, i_.test(o) ? "mailto:" : e);
            var o;
            const i = !!n && !h_(t);
            return t && i ? n + t : t
        }

        function h_(t) {
            return r_.test(t)
        }

        function u_(t) {
            window.open(t, "_blank", "noopener")
        }
        class g_ extends Yr {
            constructor() {
                super(...arguments), this.manualDecorators = new Si, this.automaticDecorators = new OC
            }
            restoreManualDecoratorStates() {
                for (const t of this.manualDecorators) t.value = this._getDecoratorStateFromModel(t.id)
            }
            refresh() {
                const t = this.editor.model,
                    e = t.document.selection,
                    n = e.getSelectedElement() || Ii(e.getSelectedBlocks());
                l_(n, t.schema) ? (this.value = n.getAttribute("linkHref"), this.isEnabled = t.schema.checkAttribute(n, "linkHref")) : (this.value = e.getAttribute("linkHref"), this.isEnabled = t.schema.checkAttributeInSelection(e, "linkHref"));
                for (const t of this.manualDecorators) t.value = this._getDecoratorStateFromModel(t.id)
            }
            execute(t, e = {}) {
                const n = this.editor.model,
                    o = n.document.selection,
                    i = [],
                    r = [];
                for (const t in e) e[t] ? i.push(t) : r.push(t);
                n.change((e => {
                    if (o.isCollapsed) {
                        const s = o.getFirstPosition();
                        if (o.hasAttribute("linkHref")) {
                            const a = p_(o);
                            let c = ok(s, "linkHref", o.getAttribute("linkHref"), n);
                            o.getAttribute("linkHref") === a && (c = this._updateLinkContent(n, e, c, t)), e.setAttribute("linkHref", t, c), i.forEach((t => {
                                e.setAttribute(t, !0, c)
                            })), r.forEach((t => {
                                e.removeAttribute(t, c)
                            })), e.setSelection(e.createPositionAfter(c.end.nodeBefore))
                        } else if ("" !== t) {
                            const r = Bi(o.getAttributes());
                            r.set("linkHref", t), i.forEach((t => {
                                r.set(t, !0)
                            }));
                            const {
                                end: a
                            } = n.insertContent(e.createText(t, r), s);
                            e.setSelection(a)
                        } ["linkHref", ...i, ...r].forEach((t => {
                            e.removeSelectionAttribute(t)
                        }))
                    } else {
                        const s = n.schema.getValidRanges(o.getRanges(), "linkHref"),
                            a = [];
                        for (const t of o.getSelectedBlocks()) n.schema.checkAttribute(t, "linkHref") && a.push(e.createRangeOn(t));
                        const c = a.slice();
                        for (const t of s) this._isRangeToUpdate(t, a) && c.push(t);
                        for (const s of c) {
                            let a = s;
                            if (1 === c.length) {
                                const i = p_(o);
                                o.getAttribute("linkHref") === i && (a = this._updateLinkContent(n, e, s, t), e.setSelection(e.createSelection(a)))
                            }
                            e.setAttribute("linkHref", t, a), i.forEach((t => {
                                e.setAttribute(t, !0, a)
                            })), r.forEach((t => {
                                e.removeAttribute(t, a)
                            }))
                        }
                    }
                }))
            }
            _getDecoratorStateFromModel(t) {
                const e = this.editor.model,
                    n = e.document.selection,
                    o = n.getSelectedElement();
                return l_(o, e.schema) ? o.getAttribute(t) : n.getAttribute(t)
            }
            _isRangeToUpdate(t, e) {
                for (const n of e)
                    if (n.containsRange(t)) return !1;
                return !0
            }
            _updateLinkContent(t, e, n, o) {
                const i = e.createText(o, {
                    linkHref: o
                });
                return t.insertContent(i, n)
            }
        }

        function p_(t) {
            if (t.isCollapsed) {
                const e = t.getFirstPosition();
                return e.textNode && e.textNode.data
            } {
                const e = Array.from(t.getFirstRange().getItems());
                if (e.length > 1) return null;
                const n = e[0];
                return n.is("$text") || n.is("$textProxy") ? n.data : null
            }
        }
        class m_ extends Yr {
            refresh() {
                const t = this.editor.model,
                    e = t.document.selection,
                    n = e.getSelectedElement();
                l_(n, t.schema) ? this.isEnabled = t.schema.checkAttribute(n, "linkHref") : this.isEnabled = t.schema.checkAttributeInSelection(e, "linkHref")
            }
            execute() {
                const t = this.editor,
                    e = this.editor.model,
                    n = e.document.selection,
                    o = t.commands.get("link");
                e.change((t => {
                    const i = n.isCollapsed ? [ok(n.getFirstPosition(), "linkHref", n.getAttribute("linkHref"), e)] : e.schema.getValidRanges(n.getRanges(), "linkHref");
                    for (const e of i)
                        if (t.removeAttribute("linkHref", e), o)
                            for (const n of o.manualDecorators) t.removeAttribute(n.id, e)
                }))
            }
        }
        class f_ extends(K()) {
            constructor({
                id: t,
                label: e,
                attributes: n,
                classes: o,
                styles: i,
                defaultValue: r
            }) {
                super(), this.id = t, this.set("value", void 0), this.defaultValue = r, this.label = e, this.attributes = n, this.classes = o, this.styles = i
            }
            _createPattern() {
                return {
                    attributes: this.attributes,
                    classes: this.classes,
                    styles: this.styles
                }
            }
        }
        var k_ = n(9773),
            b_ = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(k_.Z, b_);
        k_.Z.locals;
        var w_ = Object.defineProperty,
            A_ = Object.getOwnPropertySymbols,
            C_ = Object.prototype.hasOwnProperty,
            __ = Object.prototype.propertyIsEnumerable,
            v_ = (t, e, n) => e in t ? w_(t, e, {
                enumerable: !0,
                configurable: !0,
                writable: !0,
                value: n
            }) : t[e] = n,
            y_ = (t, e) => {
                for (var n in e || (e = {})) C_.call(e, n) && v_(t, n, e[n]);
                if (A_)
                    for (var n of A_(e)) __.call(e, n) && v_(t, n, e[n]);
                return t
            };
        const x_ = "automatic",
            E_ = /^(https?:)?\/\//;
        class D_ extends Wr {
            static get pluginName() {
                return "LinkEditing"
            }
            static get requires() {
                return [Uf, If, yf]
            }
            constructor(t) {
                super(t), t.config.define("link", {
                    addTargetToExternalLinks: !1
                })
            }
            init() {
                const t = this.editor;
                t.model.schema.extend("$text", {
                    allowAttributes: "linkHref"
                }), t.conversion.for("dataDowncast").attributeToElement({
                    model: "linkHref",
                    view: a_
                }), t.conversion.for("editingDowncast").attributeToElement({
                    model: "linkHref",
                    view: (t, e) => a_(c_(t), e)
                }), t.conversion.for("upcast").elementToAttribute({
                    view: {
                        name: "a",
                        attributes: {
                            href: !0
                        }
                    },
                    model: {
                        key: "linkHref",
                        value: t => t.getAttribute("href")
                    }
                }), t.commands.add("link", new g_(t)), t.commands.add("unlink", new m_(t));
                const e = function (t, e) {
                    const n = {
                        "Open in a new tab": t("Open in a new tab"),
                        Downloadable: t("Downloadable")
                    };
                    return e.forEach((t => ("label" in t && n[t.label] && (t.label = n[t.label]), t))), e
                }(t.t, function (t) {
                    const e = [];
                    if (t)
                        for (const [n, o] of Object.entries(t)) {
                            const t = Object.assign({}, o, {
                                id: `link${e_(n)}`
                            });
                            e.push(t)
                        }
                    return e
                }(t.config.get("link.decorators")));
                this._enableAutomaticDecorators(e.filter((t => t.mode === x_))), this._enableManualDecorators(e.filter((t => "manual" === t.mode)));
                t.plugins.get(Uf).registerAttribute("linkHref"),
                    function (t, e, n, o) {
                        const i = t.editing.view,
                            r = new Set;
                        i.document.registerPostFixer((i => {
                            const s = t.model.document.selection;
                            let a = !1;
                            if (s.hasAttribute(e)) {
                                const c = ok(s.getFirstPosition(), e, s.getAttribute(e), t.model),
                                    l = t.editing.mapper.toViewRange(c);
                                for (const t of l.getItems()) t.is("element", n) && !t.hasClass(o) && (i.addClass(o, t), r.add(t), a = !0)
                            }
                            return a
                        })), t.conversion.for("editingDowncast").add((t => {
                            function e() {
                                i.change((t => {
                                    for (const e of r.values()) t.removeClass(o, e), r.delete(e)
                                }))
                            }
                            t.on("insert", e, {
                                priority: "highest"
                            }), t.on("remove", e, {
                                priority: "highest"
                            }), t.on("attribute", e, {
                                priority: "highest"
                            }), t.on("selection", e, {
                                priority: "highest"
                            })
                        }))
                    }(t, "linkHref", "a", "ck-link_selected"), this._enableLinkOpen(), this._enableInsertContentSelectionAttributesFixer(), this._enableClickingAfterLink(), this._enableTypingOverLink(), this._handleDeleteContentAfterLink(), this._enableClipboardIntegration()
            }
            _enableAutomaticDecorators(t) {
                const e = this.editor,
                    n = e.commands.get("link").automaticDecorators;
                e.config.get("link.addTargetToExternalLinks") && n.add({
                    id: "linkIsExternal",
                    mode: x_,
                    callback: t => !!t && E_.test(t),
                    attributes: {
                        target: "_blank",
                        rel: "noopener noreferrer"
                    }
                }), n.add(t), n.length && e.conversion.for("downcast").add(n.getDispatcher())
            }
            _enableManualDecorators(t) {
                if (!t.length) return;
                const e = this.editor,
                    n = e.commands.get("link").manualDecorators;
                t.forEach((t => {
                    e.model.schema.extend("$text", {
                        allowAttributes: t.id
                    });
                    const o = new f_(t);
                    n.add(o), e.conversion.for("downcast").attributeToElement({
                        model: o.id,
                        view: (t, {
                            writer: e,
                            schema: n
                        }, {
                            item: i
                        }) => {
                            if ((i.is("selection") || n.isInline(i)) && t) {
                                const t = e.createAttributeElement("a", o.attributes, {
                                    priority: 5
                                });
                                o.classes && e.addClass(o.classes, t);
                                for (const n in o.styles) e.setStyle(n, o.styles[n], t);
                                return e.setCustomProperty("link", !0, t), t
                            }
                        }
                    }), e.conversion.for("upcast").elementToAttribute({
                        view: y_({
                            name: "a"
                        }, o._createPattern()),
                        model: {
                            key: o.id
                        }
                    })
                }))
            }
            _enableLinkOpen() {
                const t = this.editor,
                    e = t.editing.view.document;
                this.listenTo(e, "click", ((t, e) => {
                    if (!(a.isMac ? e.domEvent.metaKey : e.domEvent.ctrlKey)) return;
                    let n = e.domTarget;
                    if ("a" != n.tagName.toLowerCase() && (n = n.closest("a")), !n) return;
                    const o = n.getAttribute("href");
                    o && (t.stop(), e.preventDefault(), u_(o))
                }), {
                    context: "$capture"
                }), this.listenTo(e, "keydown", ((e, n) => {
                    const o = t.commands.get("link").value;
                    !!o && n.keyCode === ki.enter && n.altKey && (e.stop(), u_(o))
                }))
            }
            _enableInsertContentSelectionAttributesFixer() {
                const t = this.editor.model,
                    e = t.document.selection;
                this.listenTo(t, "insertContent", (() => {
                    const n = e.anchor.nodeBefore,
                        o = e.anchor.nodeAfter;
                    e.hasAttribute("linkHref") && n && n.hasAttribute("linkHref") && (o && o.hasAttribute("linkHref") || t.change((e => {
                        S_(e, M_(t.schema))
                    })))
                }), {
                    priority: "low"
                })
            }
            _enableClickingAfterLink() {
                const t = this.editor,
                    e = t.model;
                t.editing.view.addObserver(_g);
                let n = !1;
                this.listenTo(t.editing.view.document, "mousedown", (() => {
                    n = !0
                })), this.listenTo(t.editing.view.document, "selectionChange", (() => {
                    if (!n) return;
                    n = !1;
                    const t = e.document.selection;
                    if (!t.isCollapsed) return;
                    if (!t.hasAttribute("linkHref")) return;
                    const o = t.getFirstPosition(),
                        i = ok(o, "linkHref", t.getAttribute("linkHref"), e);
                    (o.isTouching(i.start) || o.isTouching(i.end)) && e.change((t => {
                        S_(t, M_(e.schema))
                    }))
                }))
            }
            _enableTypingOverLink() {
                const t = this.editor,
                    e = t.editing.view;
                let n = null,
                    o = !1;
                this.listenTo(e.document, "delete", (() => {
                    o = !0
                }), {
                    priority: "high"
                }), this.listenTo(t.model, "deleteContent", (() => {
                    const e = t.model.document.selection;
                    e.isCollapsed || (o ? o = !1 : I_(t) && function (t) {
                        const e = t.document.selection,
                            n = e.getFirstPosition(),
                            o = e.getLastPosition(),
                            i = n.nodeAfter;
                        if (!i) return !1;
                        if (!i.is("$text")) return !1;
                        if (!i.hasAttribute("linkHref")) return !1;
                        const r = o.textNode || o.nodeBefore;
                        if (i === r) return !0;
                        return ok(n, "linkHref", i.getAttribute("linkHref"), t).containsRange(t.createRange(n, o), !0)
                    }(t.model) && (n = e.getAttributes()))
                }), {
                    priority: "high"
                }), this.listenTo(t.model, "insertContent", ((e, [i]) => {
                    o = !1, I_(t) && n && (t.model.change((t => {
                        for (const [e, o] of n) t.setAttribute(e, o, i)
                    })), n = null)
                }), {
                    priority: "high"
                })
            }
            _handleDeleteContentAfterLink() {
                const t = this.editor,
                    e = t.model,
                    n = e.document.selection,
                    o = t.editing.view;
                let i = !1,
                    r = !1;
                this.listenTo(o.document, "delete", ((t, e) => {
                    r = "backward" === e.direction
                }), {
                    priority: "high"
                }), this.listenTo(e, "deleteContent", (() => {
                    i = !1;
                    const t = n.getFirstPosition(),
                        o = n.getAttribute("linkHref");
                    if (!o) return;
                    const r = ok(t, "linkHref", o, e);
                    i = r.containsPosition(t) || r.end.isEqual(t)
                }), {
                    priority: "high"
                }), this.listenTo(e, "deleteContent", (() => {
                    r && (r = !1, i || t.model.enqueueChange((t => {
                        S_(t, M_(e.schema))
                    })))
                }), {
                    priority: "low"
                })
            }
            _enableClipboardIntegration() {
                const t = this.editor,
                    e = t.model,
                    n = this.editor.config.get("link.defaultProtocol");
                n && this.listenTo(t.plugins.get("ClipboardPipeline"), "contentInsertion", ((t, o) => {
                    e.change((t => {
                        const e = t.createRangeIn(o.content);
                        for (const o of e.getItems())
                            if (o.hasAttribute("linkHref")) {
                                const e = d_(o.getAttribute("linkHref"), n);
                                t.setAttribute("linkHref", e, o)
                            }
                    }))
                }))
            }
        }

        function S_(t, e) {
            t.removeSelectionAttribute("linkHref");
            for (const n of e) t.removeSelectionAttribute(n)
        }

        function I_(t) {
            return t.model.change((t => t.batch)).isTyping
        }

        function M_(t) {
            return t.getDefinition("$text").allowAttributes.filter((t => t.startsWith("link")))
        }
        var T_ = n(7754),
            B_ = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(T_.Z, B_);
        T_.Z.locals;
        class N_ extends Hi {
            constructor(t, e) {
                super(t), this.focusTracker = new Mi, this.keystrokes = new Ti, this._focusables = new ji;
                const n = t.t;
                this.urlInputView = this._createUrlInput(), this.saveButtonView = this._createButton(n("Save"), Ig.check, "ck-button-save"), this.saveButtonView.type = "submit", this.cancelButtonView = this._createButton(n("Cancel"), Ig.cancel, "ck-button-cancel", "cancel"), this._manualDecoratorSwitches = this._createManualDecoratorSwitches(e), this.children = this._createFormChildren(e.manualDecorators), this._focusCycler = new Vr({
                    focusables: this._focusables,
                    focusTracker: this.focusTracker,
                    keystrokeHandler: this.keystrokes,
                    actions: {
                        focusPrevious: "shift + tab",
                        focusNext: "tab"
                    }
                });
                const o = ["ck", "ck-link-form", "ck-responsive-form"];
                e.manualDecorators.length && o.push("ck-link-form_layout-vertical", "ck-vertical-form"), this.setTemplate({
                    tag: "form",
                    attributes: {
                        class: o,
                        tabindex: "-1"
                    },
                    children: this.children
                })
            }
            getDecoratorSwitchesState() {
                return Array.from(this._manualDecoratorSwitches).reduce(((t, e) => (t[e.name] = e.isOn, t)), {})
            }
            render() {
                super.render(), i({
                    view: this
                });
                [this.urlInputView, ...this._manualDecoratorSwitches, this.saveButtonView, this.cancelButtonView].forEach((t => {
                    this._focusables.add(t), this.focusTracker.add(t.element)
                })), this.keystrokes.listenTo(this.element)
            }
            destroy() {
                super.destroy(), this.focusTracker.destroy(), this.keystrokes.destroy()
            }
            focus() {
                this._focusCycler.focusFirst()
            }
            _createUrlInput() {
                const t = this.locale.t,
                    e = new Ir(this.locale, np);
                return e.label = t("Link URL"), e
            }
            _createButton(t, e, n, o) {
                const i = new br(this.locale);
                return i.set({
                    label: t,
                    icon: e,
                    tooltip: !0
                }), i.extendTemplate({
                    attributes: {
                        class: n
                    }
                }), o && i.delegate("execute").to(this, o), i
            }
            _createManualDecoratorSwitches(t) {
                const e = this.createCollection();
                for (const n of t.manualDecorators) {
                    const o = new Cr(this.locale);
                    o.set({
                        name: n.id,
                        label: n.label,
                        withText: !0
                    }), o.bind("isOn").toMany([n, t], "value", ((t, e) => void 0 === e && void 0 === t ? !!n.defaultValue : !!t)), o.on("execute", (() => {
                        n.set("value", !o.isOn)
                    })), e.add(o)
                }
                return e
            }
            _createFormChildren(t) {
                const e = this.createCollection();
                if (e.add(this.urlInputView), t.length) {
                    const t = new Hi;
                    t.setTemplate({
                        tag: "ul",
                        children: this._manualDecoratorSwitches.map((t => ({
                            tag: "li",
                            children: [t],
                            attributes: {
                                class: ["ck", "ck-list__item"]
                            }
                        }))),
                        attributes: {
                            class: ["ck", "ck-reset", "ck-list"]
                        }
                    }), e.add(t)
                }
                return e.add(this.saveButtonView), e.add(this.cancelButtonView), e
            }
        }
        var P_ = n(2347),
            z_ = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(P_.Z, z_);
        P_.Z.locals;
        class O_ extends Hi {
            constructor(t) {
                super(t), this.focusTracker = new Mi, this.keystrokes = new Ti, this._focusables = new ji;
                const e = t.t;
                this.previewButtonView = this._createPreviewButton(), this.unlinkButtonView = this._createButton(e("Unlink"), '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m11.077 15 .991-1.416a.75.75 0 1 1 1.229.86l-1.148 1.64a.748.748 0 0 1-.217.206 5.251 5.251 0 0 1-8.503-5.955.741.741 0 0 1 .12-.274l1.147-1.639a.75.75 0 1 1 1.228.86L4.933 10.7l.006.003a3.75 3.75 0 0 0 6.132 4.294l.006.004zm5.494-5.335a.748.748 0 0 1-.12.274l-1.147 1.639a.75.75 0 1 1-1.228-.86l.86-1.23a3.75 3.75 0 0 0-6.144-4.301l-.86 1.229a.75.75 0 0 1-1.229-.86l1.148-1.64a.748.748 0 0 1 .217-.206 5.251 5.251 0 0 1 8.503 5.955zm-4.563-2.532a.75.75 0 0 1 .184 1.045l-3.155 4.505a.75.75 0 1 1-1.229-.86l3.155-4.506a.75.75 0 0 1 1.045-.184zm4.919 10.562-1.414 1.414a.75.75 0 1 1-1.06-1.06l1.414-1.415-1.415-1.414a.75.75 0 0 1 1.061-1.06l1.414 1.414 1.414-1.415a.75.75 0 0 1 1.061 1.061l-1.414 1.414 1.414 1.415a.75.75 0 0 1-1.06 1.06l-1.415-1.414z"/></svg>', "unlink"), this.editButtonView = this._createButton(e("Edit link"), Ig.pencil, "edit"), this.set("href", void 0), this._focusCycler = new Vr({
                    focusables: this._focusables,
                    focusTracker: this.focusTracker,
                    keystrokeHandler: this.keystrokes,
                    actions: {
                        focusPrevious: "shift + tab",
                        focusNext: "tab"
                    }
                }), this.setTemplate({
                    tag: "div",
                    attributes: {
                        class: ["ck", "ck-link-actions", "ck-responsive-form"],
                        tabindex: "-1"
                    },
                    children: [this.previewButtonView, this.editButtonView, this.unlinkButtonView]
                })
            }
            render() {
                super.render();
                [this.previewButtonView, this.editButtonView, this.unlinkButtonView].forEach((t => {
                    this._focusables.add(t), this.focusTracker.add(t.element)
                })), this.keystrokes.listenTo(this.element)
            }
            destroy() {
                super.destroy(), this.focusTracker.destroy(), this.keystrokes.destroy()
            }
            focus() {
                this._focusCycler.focusFirst()
            }
            _createButton(t, e, n) {
                const o = new br(this.locale);
                return o.set({
                    label: t,
                    icon: e,
                    tooltip: !0
                }), o.delegate("execute").to(this, n), o
            }
            _createPreviewButton() {
                const t = new br(this.locale),
                    e = this.bindTemplate,
                    n = this.t;
                return t.set({
                    withText: !0,
                    tooltip: n("Open link in new tab")
                }), t.extendTemplate({
                    attributes: {
                        class: ["ck", "ck-link-actions__preview"],
                        href: e.to("href", (t => t && c_(t))),
                        target: "_blank",
                        rel: "noopener noreferrer"
                    }
                }), t.bind("label").to(this, "href", (t => t || n("This link has no URL"))), t.bind("isEnabled").to(this, "href", (t => !!t)), t.template.tag = "a", t.template.eventListeners = {}, t
            }
        }
        const L_ = "link-ui";
        class j_ extends Wr {
            constructor() {
                super(...arguments), this.actionsView = null, this.formView = null
            }
            static get requires() {
                return [Vm]
            }
            static get pluginName() {
                return "LinkUI"
            }
            init() {
                const t = this.editor;
                t.editing.view.addObserver(Cg), this._balloon = t.plugins.get(Vm), this._createToolbarLinkButton(), this._enableBalloonActivators(), t.conversion.for("editingDowncast").markerToHighlight({
                    model: L_,
                    view: {
                        classes: ["ck-fake-link-selection"]
                    }
                }), t.conversion.for("editingDowncast").markerToElement({
                    model: L_,
                    view: {
                        name: "span",
                        classes: ["ck-fake-link-selection", "ck-fake-link-selection_collapsed"]
                    }
                })
            }
            destroy() {
                super.destroy(), this.formView && this.formView.destroy(), this.actionsView && this.actionsView.destroy()
            }
            _createViews() {
                this.actionsView = this._createActionsView(), this.formView = this._createFormView(), this._enableUserBalloonInteractions()
            }
            _createActionsView() {
                const t = this.editor,
                    e = new O_(t.locale),
                    n = t.commands.get("link"),
                    o = t.commands.get("unlink");
                return e.bind("href").to(n, "value"), e.editButtonView.bind("isEnabled").to(n), e.unlinkButtonView.bind("isEnabled").to(o), this.listenTo(e, "edit", (() => {
                    this._addFormView()
                })), this.listenTo(e, "unlink", (() => {
                    t.execute("unlink"), this._hideUI()
                })), e.keystrokes.set("Esc", ((t, e) => {
                    this._hideUI(), e()
                })), e.keystrokes.set(s_, ((t, e) => {
                    this._addFormView(), e()
                })), e
            }
            _createFormView() {
                const t = this.editor,
                    n = t.commands.get("link"),
                    o = t.config.get("link.defaultProtocol"),
                    i = new(e(N_))(t.locale, n);
                return i.urlInputView.fieldView.bind("value").to(n, "value"), i.urlInputView.bind("isEnabled").to(n, "isEnabled"), i.saveButtonView.bind("isEnabled").to(n), this.listenTo(i, "submit", (() => {
                    const {
                        value: e
                    } = i.urlInputView.fieldView.element, n = d_(e, o);
                    t.execute("link", n, i.getDecoratorSwitchesState()), this._closeFormView()
                })), this.listenTo(i, "cancel", (() => {
                    this._closeFormView()
                })), i.keystrokes.set("Esc", ((t, e) => {
                    this._closeFormView(), e()
                })), i
            }
            _createToolbarLinkButton() {
                const t = this.editor,
                    e = t.commands.get("link"),
                    n = t.t;
                t.ui.componentFactory.add("link", (t => {
                    const o = new br(t);
                    return o.isEnabled = !0, o.label = n("Link"), o.icon = '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m11.077 15 .991-1.416a.75.75 0 1 1 1.229.86l-1.148 1.64a.748.748 0 0 1-.217.206 5.251 5.251 0 0 1-8.503-5.955.741.741 0 0 1 .12-.274l1.147-1.639a.75.75 0 1 1 1.228.86L4.933 10.7l.006.003a3.75 3.75 0 0 0 6.132 4.294l.006.004zm5.494-5.335a.748.748 0 0 1-.12.274l-1.147 1.639a.75.75 0 1 1-1.228-.86l.86-1.23a3.75 3.75 0 0 0-6.144-4.301l-.86 1.229a.75.75 0 0 1-1.229-.86l1.148-1.64a.748.748 0 0 1 .217-.206 5.251 5.251 0 0 1 8.503 5.955zm-4.563-2.532a.75.75 0 0 1 .184 1.045l-3.155 4.505a.75.75 0 1 1-1.229-.86l3.155-4.506a.75.75 0 0 1 1.045-.184z"/></svg>', o.keystroke = s_, o.tooltip = !0, o.isToggleable = !0, o.bind("isEnabled").to(e, "isEnabled"), o.bind("isOn").to(e, "value", (t => !!t)), this.listenTo(o, "execute", (() => this._showUI(!0))), o
                }))
            }
            _enableBalloonActivators() {
                const t = this.editor,
                    e = t.editing.view.document;
                this.listenTo(e, "click", (() => {
                    this._getSelectedLinkElement() && this._showUI()
                })), t.keystrokes.set(s_, ((e, n) => {
                    n(), t.commands.get("link").isEnabled && this._showUI(!0)
                }))
            }
            _enableUserBalloonInteractions() {
                this.editor.keystrokes.set("Tab", ((t, e) => {
                    this._areActionsVisible && !this.actionsView.focusTracker.isFocused && (this.actionsView.focus(), e())
                }), {
                    priority: "high"
                }), this.editor.keystrokes.set("Esc", ((t, e) => {
                    this._isUIVisible && (this._hideUI(), e())
                })), t({
                    emitter: this.formView,
                    activator: () => this._isUIInPanel,
                    contextElements: () => [this._balloon.view.element],
                    callback: () => this._hideUI()
                })
            }
            _addActionsView() {
                this.actionsView || this._createViews(), this._areActionsInPanel || this._balloon.add({
                    view: this.actionsView,
                    position: this._getBalloonPositionData()
                })
            }
            _addFormView() {
                if (this.formView || this._createViews(), this._isFormInPanel) return;
                const t = this.editor.commands.get("link");
                this.formView.disableCssTransitions(), this._balloon.add({
                    view: this.formView,
                    position: this._getBalloonPositionData()
                }), this._balloon.visibleView === this.formView && this.formView.urlInputView.fieldView.select(), this.formView.enableCssTransitions(), this.formView.urlInputView.fieldView.element.value = t.value || ""
            }
            _closeFormView() {
                const t = this.editor.commands.get("link");
                t.restoreManualDecoratorStates(), void 0 !== t.value ? this._removeFormView() : this._hideUI()
            }
            _removeFormView() {
                this._isFormInPanel && (this.formView.saveButtonView.focus(), this._balloon.remove(this.formView), this.editor.editing.view.focus(), this._hideFakeVisualSelection())
            }
            _showUI(t = !1) {
                this.formView || this._createViews(), this._getSelectedLinkElement() ? (this._areActionsVisible ? this._addFormView() : this._addActionsView(), t && this._balloon.showStack("main")) : (this._showFakeVisualSelection(), this._addActionsView(), t && this._balloon.showStack("main"), this._addFormView()), this._startUpdatingUI()
            }
            _hideUI() {
                if (!this._isUIInPanel) return;
                const t = this.editor;
                this.stopListening(t.ui, "update"), this.stopListening(this._balloon, "change:visibleView"), t.editing.view.focus(), this._removeFormView(), this._balloon.remove(this.actionsView), this._hideFakeVisualSelection()
            }
            _startUpdatingUI() {
                const t = this.editor,
                    e = t.editing.view.document;
                let n = this._getSelectedLinkElement(),
                    o = r();
                const i = () => {
                    const t = this._getSelectedLinkElement(),
                        e = r();
                    n && !t || !n && e !== o ? this._hideUI() : this._isUIVisible && this._balloon.updatePosition(this._getBalloonPositionData()), n = t, o = e
                };

                function r() {
                    return e.selection.focus.getAncestors().reverse().find((t => t.is("element")))
                }
                this.listenTo(t.ui, "update", i), this.listenTo(this._balloon, "change:visibleView", i)
            }
            get _isFormInPanel() {
                return !!this.formView && this._balloon.hasView(this.formView)
            }
            get _areActionsInPanel() {
                return !!this.actionsView && this._balloon.hasView(this.actionsView)
            }
            get _areActionsVisible() {
                return !!this.actionsView && this._balloon.visibleView === this.actionsView
            }
            get _isUIInPanel() {
                return this._isFormInPanel || this._areActionsInPanel
            }
            get _isUIVisible() {
                const t = this._balloon.visibleView;
                return !!this.formView && t == this.formView || this._areActionsVisible
            }
            _getBalloonPositionData() {
                const t = this.editor.editing.view,
                    e = this.editor.model,
                    n = t.document;
                let o;
                if (e.markers.has(L_)) {
                    const e = Array.from(this.editor.editing.mapper.markerNameToElements(L_)),
                        n = t.createRange(t.createPositionBefore(e[0]), t.createPositionAfter(e[e.length - 1]));
                    o = t.domConverter.viewRangeToDom(n)
                } else o = () => {
                    const e = this._getSelectedLinkElement();
                    return e ? t.domConverter.mapViewToDom(e) : t.domConverter.viewRangeToDom(n.selection.getFirstRange())
                };
                return {
                    target: o
                }
            }
            _getSelectedLinkElement() {
                const t = this.editor.editing.view,
                    e = t.document.selection,
                    n = e.getSelectedElement();
                if (e.isCollapsed || n && _k(n)) return R_(e.getFirstPosition()); {
                    const n = e.getFirstRange().getTrimmed(),
                        o = R_(n.start),
                        i = R_(n.end);
                    return o && o == i && t.createRangeIn(o).getTrimmed().isEqual(n) ? o : null
                }
            }
            _showFakeVisualSelection() {
                const t = this.editor.model;
                t.change((e => {
                    const n = t.document.selection.getFirstRange();
                    if (t.markers.has(L_)) e.updateMarker(L_, {
                        range: n
                    });
                    else if (n.start.isAtEnd) {
                        const o = n.start.getLastMatchingPosition((({
                            item: e
                        }) => !t.schema.isContent(e)), {
                            boundaries: n
                        });
                        e.addMarker(L_, {
                            usingOperation: !1,
                            affectsData: !1,
                            range: e.createRange(o, n.end)
                        })
                    } else e.addMarker(L_, {
                        usingOperation: !1,
                        affectsData: !1,
                        range: n
                    })
                }))
            }
            _hideFakeVisualSelection() {
                const t = this.editor.model;
                t.markers.has(L_) && t.change((t => {
                    t.removeMarker(L_)
                }))
            }
        }

        function R_(t) {
            return t.getAncestors().find((t => {
                return (e = t).is("attributeElement") && !!e.getCustomProperty("link");
                var e
            })) || null
        }
        const F_ = new RegExp("(^|\\s)(((?:(?:(?:https?|ftp):)?\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(((?!www\\.)|(www\\.))(?![-_])(?:[-_a-z0-9\\u00a1-\\uffff]{1,63}\\.)+(?:[a-z\\u00a1-\\uffff]{2,63})))(?::\\d{2,5})?(?:[/?#]\\S*)?)|((www.|(\\S+@))((?![-_])(?:[-_a-z0-9\\u00a1-\\uffff]{1,63}\\.))+(?:[a-z\\u00a1-\\uffff]{2,63})))$", "i");
        class V_ extends Wr {
            static get requires() {
                return [jf]
            }
            static get pluginName() {
                return "AutoLink"
            }
            init() {
                const t = this.editor.model.document.selection;
                t.on("change:range", (() => {
                    this.isEnabled = !t.anchor.parent.is("element", "codeBlock")
                })), this._enableTypingHandling()
            }
            afterInit() {
                this._enableEnterHandling(), this._enableShiftEnterHandling()
            }
            _enableTypingHandling() {
                const t = this.editor,
                    e = new Vf(t.model, (t => {
                        if (! function (t) {
                                return t.length > 4 && " " === t[t.length - 1] && " " !== t[t.length - 2]
                            }(t)) return;
                        const e = U_(t.substr(0, t.length - 1));
                        return e ? {
                            url: e
                        } : void 0
                    }));
                e.on("matched:data", ((e, n) => {
                    const {
                        batch: o,
                        range: i,
                        url: r
                    } = n;
                    if (!o.isTyping) return;
                    const s = i.end.getShiftedBy(-1),
                        a = s.getShiftedBy(-r.length),
                        c = t.model.createRange(a, s);
                    this._applyAutoLink(r, c)
                })), e.bind("isEnabled").to(this)
            }
            _enableEnterHandling() {
                const t = this.editor,
                    e = t.model,
                    n = t.commands.get("enter");
                n && n.on("execute", (() => {
                    const t = e.document.selection.getFirstPosition();
                    if (!t.parent.previousSibling) return;
                    const n = e.createRangeIn(t.parent.previousSibling);
                    this._checkAndApplyAutoLinkOnRange(n)
                }))
            }
            _enableShiftEnterHandling() {
                const t = this.editor,
                    e = t.model,
                    n = t.commands.get("shiftEnter");
                n && n.on("execute", (() => {
                    const t = e.document.selection.getFirstPosition(),
                        n = e.createRange(e.createPositionAt(t.parent, 0), t.getShiftedBy(-1));
                    this._checkAndApplyAutoLinkOnRange(n)
                }))
            }
            _checkAndApplyAutoLinkOnRange(t) {
                const e = this.editor.model,
                    {
                        text: n,
                        range: o
                    } = Ff(t, e),
                    i = U_(n);
                if (i) {
                    const t = e.createRange(o.end.getShiftedBy(-i.length), o.end);
                    this._applyAutoLink(i, t)
                }
            }
            _applyAutoLink(t, e) {
                const n = this.editor.model,
                    o = d_(t, this.editor.config.get("link.defaultProtocol"));
                this.isEnabled && function (t, e) {
                    return e.schema.checkAttributeInSelection(e.createSelection(t), "linkHref")
                }(e, n) && h_(o) && ! function (t) {
                    const e = t.start.nodeAfter;
                    return !!e && e.hasAttribute("linkHref")
                }(e) && this._persistAutoLink(o, e)
            }
            _persistAutoLink(t, e) {
                const n = this.editor.model,
                    o = this.editor.plugins.get("Delete");
                n.enqueueChange((i => {
                    i.setAttribute("linkHref", t, e), n.enqueueChange((() => {
                        o.requestUndoOnBackspace()
                    }))
                }))
            }
        }

        function U_(t) {
            const e = F_.exec(t);
            return e ? e[2] : null
        }
        var H_ = n(111),
            G_ = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(H_.Z, G_);
        H_.Z.locals;
        Symbol.iterator;
        Symbol.iterator;
        Object.defineProperty, Object.defineProperties, Object.getOwnPropertyDescriptors, Object.getOwnPropertySymbols, Object.prototype.hasOwnProperty, Object.prototype.propertyIsEnumerable;
        var q_ = n(5730),
            W_ = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(q_.Z, W_);
        q_.Z.locals;
        var K_ = n(4564),
            Y_ = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(K_.Z, Y_);
        K_.Z.locals;

        function $_(t, e) {
            const n = e.mapper,
                o = e.writer,
                i = "numbered" == t.getAttribute("listType") ? "ol" : "ul",
                r = function (t) {
                    const e = t.createContainerElement("li");
                    return e.getFillerOffset = iv, e
                }(o),
                s = o.createContainerElement(i, null);
            return o.insert(o.createPositionAt(s, 0), r), n.bindElements(t, r), r
        }

        function Z_(t, e, n, o) {
            const i = e.parent,
                r = n.mapper,
                s = n.writer;
            let a = r.toViewPosition(o.createPositionBefore(t));
            const c = X_(t.previousSibling, {
                    sameIndent: !0,
                    smallerIndent: !0,
                    listIndent: t.getAttribute("listIndent")
                }),
                l = t.previousSibling;
            if (c && c.getAttribute("listIndent") == t.getAttribute("listIndent")) {
                const t = r.toViewElement(c);
                a = s.breakContainer(s.createPositionAfter(t))
            } else if (l && "listItem" == l.name) {
                a = r.toViewPosition(o.createPositionAt(l, "end"));
                const t = r.findMappedViewAncestor(a),
                    e = function (t) {
                        for (const e of t.getChildren())
                            if ("ul" == e.name || "ol" == e.name) return e;
                        return null
                    }(t);
                a = e ? s.createPositionBefore(e) : s.createPositionAt(t, "end")
            } else a = r.toViewPosition(o.createPositionBefore(t));
            if (a = J_(a), s.insert(a, i), l && "listItem" == l.name) {
                const t = r.toViewElement(l),
                    n = s.createRange(s.createPositionAt(t, 0), a).getWalker({
                        ignoreElementEnd: !0
                    });
                for (const t of n)
                    if (t.item.is("element", "li")) {
                        const o = s.breakContainer(s.createPositionBefore(t.item)),
                            i = t.item.parent,
                            r = s.createPositionAt(e, "end");
                        Q_(s, r.nodeBefore, r.nodeAfter), s.move(s.createRangeOn(i), r), n._position = o
                    }
            } else {
                const n = i.nextSibling;
                if (n && (n.is("element", "ul") || n.is("element", "ol"))) {
                    let o = null;
                    for (const e of n.getChildren()) {
                        const n = r.toModelElement(e);
                        if (!(n && n.getAttribute("listIndent") > t.getAttribute("listIndent"))) break;
                        o = e
                    }
                    o && (s.breakContainer(s.createPositionAfter(o)), s.move(s.createRangeOn(o.parent), s.createPositionAt(e, "end")))
                }
            }
            Q_(s, i, i.nextSibling), Q_(s, i.previousSibling, i)
        }

        function Q_(t, e, n) {
            return !e || !n || "ul" != e.name && "ol" != e.name || e.name != n.name || e.getAttribute("class") !== n.getAttribute("class") ? null : t.mergeContainers(t.createPositionAfter(e))
        }

        function J_(t) {
            return t.getLastMatchingPosition((t => t.item.is("uiElement")))
        }

        function X_(t, e) {
            const n = !!e.sameIndent,
                o = !!e.smallerIndent,
                i = e.listIndent;
            let r = t;
            for (; r && "listItem" == r.name;) {
                const t = r.getAttribute("listIndent");
                if (n && i == t || o && i > t) return r;
                r = "forward" === e.direction ? r.nextSibling : r.previousSibling
            }
            return null
        }

        function tv(t, e, n, o) {
            t.ui.componentFactory.add(e, (i => {
                const r = t.commands.get(e),
                    s = new br(i);
                return s.set({
                    label: n,
                    icon: o,
                    tooltip: !0,
                    isToggleable: !0
                }), s.bind("isOn", "isEnabled").to(r, "value", "isEnabled"), s.on("execute", (() => {
                    t.execute(e), t.editing.view.focus()
                })), s
            }))
        }

        function ev(t, e) {
            const n = [],
                o = t.parent,
                i = {
                    ignoreElementEnd: !1,
                    startPosition: t,
                    shallow: !0,
                    direction: e
                },
                r = o.getAttribute("listIndent"),
                s = [...new zl(i)].filter((t => t.item.is("element"))).map((t => t.item));
            for (const t of s) {
                if (!t.is("element", "listItem")) break;
                if (t.getAttribute("listIndent") < r) break;
                if (!(t.getAttribute("listIndent") > r)) {
                    if (t.getAttribute("listType") !== o.getAttribute("listType")) break;
                    if (t.getAttribute("listStyle") !== o.getAttribute("listStyle")) break;
                    if (t.getAttribute("listReversed") !== o.getAttribute("listReversed")) break;
                    if (t.getAttribute("listStart") !== o.getAttribute("listStart")) break;
                    "backward" === e ? n.unshift(t) : n.push(t)
                }
            }
            return n
        }
        const nv = ["disc", "circle", "square"],
            ov = ["decimal", "decimal-leading-zero", "lower-roman", "upper-roman", "lower-latin", "upper-latin"];

        function iv() {
            const t = !this.isEmpty && ("ul" == this.getChild(0).name || "ol" == this.getChild(0).name);
            return this.isEmpty || t ? 0 : ba.call(this)
        }
        class rv extends Wr {
            static get pluginName() {
                return "ListUI"
            }
            init() {
                const t = this.editor.t;
                tv(this.editor, "numberedList", t("Numbered List"), '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M7 5.75c0 .414.336.75.75.75h9.5a.75.75 0 1 0 0-1.5h-9.5a.75.75 0 0 0-.75.75zM3.5 3v5H2V3.7H1v-1h2.5V3zM.343 17.857l2.59-3.257H2.92a.6.6 0 1 0-1.04 0H.302a2 2 0 1 1 3.995 0h-.001c-.048.405-.16.734-.333.988-.175.254-.59.692-1.244 1.312H4.3v1h-4l.043-.043zM7 14.75a.75.75 0 0 1 .75-.75h9.5a.75.75 0 1 1 0 1.5h-9.5a.75.75 0 0 1-.75-.75z"/></svg>'), tv(this.editor, "bulletedList", t("Bulleted List"), '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M7 5.75c0 .414.336.75.75.75h9.5a.75.75 0 1 0 0-1.5h-9.5a.75.75 0 0 0-.75.75zm-6 0C1 4.784 1.777 4 2.75 4c.966 0 1.75.777 1.75 1.75 0 .966-.777 1.75-1.75 1.75C1.784 7.5 1 6.723 1 5.75zm6 9c0 .414.336.75.75.75h9.5a.75.75 0 1 0 0-1.5h-9.5a.75.75 0 0 0-.75.75zm-6 0c0-.966.777-1.75 1.75-1.75.966 0 1.75.777 1.75 1.75 0 .966-.777 1.75-1.75 1.75-.966 0-1.75-.777-1.75-1.75z"/></svg>')
            }
        }
        const sv = {},
            av = {},
            cv = {},
            lv = [{
                listStyle: "disc",
                typeAttribute: "disc",
                listType: "bulleted"
            }, {
                listStyle: "circle",
                typeAttribute: "circle",
                listType: "bulleted"
            }, {
                listStyle: "square",
                typeAttribute: "square",
                listType: "bulleted"
            }, {
                listStyle: "decimal",
                typeAttribute: "1",
                listType: "numbered"
            }, {
                listStyle: "decimal-leading-zero",
                typeAttribute: null,
                listType: "numbered"
            }, {
                listStyle: "lower-roman",
                typeAttribute: "i",
                listType: "numbered"
            }, {
                listStyle: "upper-roman",
                typeAttribute: "I",
                listType: "numbered"
            }, {
                listStyle: "lower-alpha",
                typeAttribute: "a",
                listType: "numbered"
            }, {
                listStyle: "upper-alpha",
                typeAttribute: "A",
                listType: "numbered"
            }, {
                listStyle: "lower-latin",
                typeAttribute: "a",
                listType: "numbered"
            }, {
                listStyle: "upper-latin",
                typeAttribute: "A",
                listType: "numbered"
            }];
        for (const {
                listStyle: t,
                typeAttribute: e,
                listType: n
            } of lv) sv[t] = n, av[t] = e, e && (cv[e] = t);
        var dv = n(4721),
            hv = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(dv.Z, hv);
        dv.Z.locals;
        var uv = n(6082),
            gv = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(uv.Z, gv);
        uv.Z.locals;
        var pv = n(2417),
            mv = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(pv.Z, mv);
        pv.Z.locals;
        class fv extends Yr {
            constructor(t, e) {
                super(t), this._indentBy = "forward" == e ? 1 : -1
            }
            refresh() {
                this.isEnabled = this._checkEnabled()
            }
            execute() {
                const t = this.editor.model,
                    e = t.document;
                let n = Array.from(e.selection.getSelectedBlocks());
                t.change((t => {
                    const e = n[n.length - 1];
                    let o = e.nextSibling;
                    for (; o && "listItem" == o.name && o.getAttribute("listIndent") > e.getAttribute("listIndent");) n.push(o), o = o.nextSibling;
                    this._indentBy < 0 && (n = n.reverse());
                    for (const e of n) {
                        const n = e.getAttribute("listIndent") + this._indentBy;
                        n < 0 ? t.rename(e, "paragraph") : t.setAttribute("listIndent", n, e)
                    }
                    this.fire("_executeCleanup", n)
                }))
            }
            _checkEnabled() {
                const t = Ii(this.editor.model.document.selection.getSelectedBlocks());
                if (!t || !t.is("element", "listItem")) return !1;
                if (this._indentBy > 0) {
                    const e = t.getAttribute("listIndent"),
                        n = t.getAttribute("listType");
                    let o = t.previousSibling;
                    for (; o && o.is("element", "listItem") && o.getAttribute("listIndent") >= e;) {
                        if (o.getAttribute("listIndent") == e) return o.getAttribute("listType") == n;
                        o = o.previousSibling
                    }
                    return !1
                }
                return !0
            }
        }
        class kv extends Yr {
            constructor(t, e) {
                super(t), this.type = e
            }
            refresh() {
                this.value = this._getValue(), this.isEnabled = this._checkEnabled()
            }
            execute(t = {}) {
                const e = this.editor.model,
                    n = e.document,
                    o = Array.from(n.selection.getSelectedBlocks()).filter((t => wv(t, e.schema))),
                    i = void 0 !== t.forceValue ? !t.forceValue : this.value;
                e.change((t => {
                    if (i) {
                        let e = o[o.length - 1].nextSibling,
                            n = Number.POSITIVE_INFINITY,
                            i = [];
                        for (; e && "listItem" == e.name && 0 !== e.getAttribute("listIndent");) {
                            const t = e.getAttribute("listIndent");
                            t < n && (n = t);
                            const o = t - n;
                            i.push({
                                element: e,
                                listIndent: o
                            }), e = e.nextSibling
                        }
                        i = i.reverse();
                        for (const e of i) t.setAttribute("listIndent", e.listIndent, e.element)
                    }
                    if (!i) {
                        let t = Number.POSITIVE_INFINITY;
                        for (const e of o) e.is("element", "listItem") && e.getAttribute("listIndent") < t && (t = e.getAttribute("listIndent"));
                        t = 0 === t ? 1 : t, bv(o, !0, t), bv(o, !1, t)
                    }
                    for (const e of o.reverse()) i && "listItem" == e.name ? t.rename(e, "paragraph") : i || "listItem" == e.name ? i || "listItem" != e.name || e.getAttribute("listType") == this.type || t.setAttribute("listType", this.type, e) : (t.setAttributes({
                        listType: this.type,
                        listIndent: 0
                    }, e), t.rename(e, "listItem"));
                    this.fire("_executeCleanup", o)
                }))
            }
            _getValue() {
                const t = Ii(this.editor.model.document.selection.getSelectedBlocks());
                return !!t && t.is("element", "listItem") && t.getAttribute("listType") == this.type
            }
            _checkEnabled() {
                if (this.value) return !0;
                const t = this.editor.model.document.selection,
                    e = this.editor.model.schema,
                    n = Ii(t.getSelectedBlocks());
                return !!n && wv(n, e)
            }
        }

        function bv(t, e, n) {
            const o = e ? t[0] : t[t.length - 1];
            if (o.is("element", "listItem")) {
                let i = o[e ? "previousSibling" : "nextSibling"],
                    r = o.getAttribute("listIndent");
                for (; i && i.is("element", "listItem") && i.getAttribute("listIndent") >= n;) r > i.getAttribute("listIndent") && (r = i.getAttribute("listIndent")), i.getAttribute("listIndent") == r && t[e ? "unshift" : "push"](i), i = i[e ? "previousSibling" : "nextSibling"]
            }
        }

        function wv(t, e) {
            return e.checkChild(t.parent, "listItem") && !e.isObject(t)
        }
        class Av extends Wr {
            static get pluginName() {
                return "ListUtils"
            }
            getListTypeFromListStyleType(t) {
                return function (t) {
                    return nv.includes(t) ? "bulleted" : ov.includes(t) ? "numbered" : null
                }(t)
            }
            getSelectedListItems(t) {
                return function (t) {
                    let e = [...t.document.selection.getSelectedBlocks()].filter((t => t.is("element", "listItem"))).map((e => {
                        const n = t.change((t => t.createPositionAt(e, 0)));
                        return [...ev(n, "backward"), ...ev(n, "forward")]
                    })).flat();
                    return e = [...new Set(e)], e
                }(t)
            }
            getSiblingNodes(t, e) {
                return ev(t, e)
            }
        }

        function Cv(t) {
            return (e, n, o) => {
                const i = o.consumable;
                if (!i.test(n.item, "insert") || !i.test(n.item, "attribute:listType") || !i.test(n.item, "attribute:listIndent")) return;
                i.consume(n.item, "insert"), i.consume(n.item, "attribute:listType"), i.consume(n.item, "attribute:listIndent");
                const r = n.item;
                Z_(r, $_(r, o), o, t)
            }
        }
        const _v = (t, e, n) => {
                if (!n.consumable.test(e.item, t.name)) return;
                const o = n.mapper.toViewElement(e.item),
                    i = n.writer;
                i.breakContainer(i.createPositionBefore(o)), i.breakContainer(i.createPositionAfter(o));
                const r = o.parent,
                    s = "numbered" == e.attributeNewValue ? "ol" : "ul";
                i.rename(s, r)
            },
            vv = (t, e, n) => {
                n.consumable.consume(e.item, t.name);
                const o = n.mapper.toViewElement(e.item).parent,
                    i = n.writer;
                Q_(i, o, o.nextSibling), Q_(i, o.previousSibling, o)
            };
        const yv = (t, e, n) => {
                if (n.consumable.test(e.item, t.name) && "listItem" != e.item.name) {
                    let t = n.mapper.toViewPosition(e.range.start);
                    const o = n.writer,
                        i = [];
                    for (;
                        ("ul" == t.parent.name || "ol" == t.parent.name) && (t = o.breakContainer(t), "li" == t.parent.name);) {
                        const e = t,
                            n = o.createPositionAt(t.parent, "end");
                        if (!e.isEqual(n)) {
                            const t = o.remove(o.createRange(e, n));
                            i.push(t)
                        }
                        t = o.createPositionAfter(t.parent)
                    }
                    if (i.length > 0) {
                        for (let e = 0; e < i.length; e++) {
                            const n = t.nodeBefore;
                            if (t = o.insert(t, i[e]).end, e > 0) {
                                const e = Q_(o, n, n.nextSibling);
                                e && e.parent == n && t.offset--
                            }
                        }
                        Q_(o, t.nodeBefore, t.nodeAfter)
                    }
                }
            },
            xv = (t, e, n) => {
                const o = n.mapper.toViewPosition(e.position),
                    i = o.nodeBefore,
                    r = o.nodeAfter;
                Q_(n.writer, i, r)
            },
            Ev = (t, e, n) => {
                if (n.consumable.consume(e.viewItem, {
                        name: !0
                    })) {
                    const t = n.writer,
                        o = t.createElement("listItem"),
                        i = function (t) {
                            let e = 0,
                                n = t.parent;
                            for (; n;) {
                                if (n.is("element", "li")) e++;
                                else {
                                    const t = n.previousSibling;
                                    t && t.is("element", "li") && e++
                                }
                                n = n.parent
                            }
                            return e
                        }(e.viewItem);
                    t.setAttribute("listIndent", i, o);
                    const r = e.viewItem.parent && "ol" == e.viewItem.parent.name ? "numbered" : "bulleted";
                    if (t.setAttribute("listType", r, o), !n.safeInsert(o, e.modelCursor)) return;
                    const s = function (t, e, n) {
                        const {
                            writer: o,
                            schema: i
                        } = n;
                        let r = o.createPositionAfter(t);
                        for (const s of e)
                            if ("ul" == s.name || "ol" == s.name) r = n.convertItem(s, r).modelCursor;
                            else {
                                const e = n.convertItem(s, o.createPositionAt(t, "end")),
                                    a = e.modelRange.start.nodeAfter;
                                a && a.is("element") && !i.checkChild(t, a.name) && (t = e.modelCursor.parent.is("element", "listItem") ? e.modelCursor.parent : Tv(e.modelCursor), r = o.createPositionAfter(t))
                            } return r
                    }(o, e.viewItem.getChildren(), n);
                    e.modelRange = t.createRange(e.modelCursor, s), n.updateConversionResult(o, e)
                }
            },
            Dv = (t, e, n) => {
                if (n.consumable.test(e.viewItem, {
                        name: !0
                    })) {
                    const t = Array.from(e.viewItem.getChildren());
                    for (const e of t) {
                        !(e.is("element", "li") || Nv(e)) && e._remove()
                    }
                }
            },
            Sv = (t, e, n) => {
                if (n.consumable.test(e.viewItem, {
                        name: !0
                    })) {
                    if (0 === e.viewItem.childCount) return;
                    const t = [...e.viewItem.getChildren()];
                    let n = !1;
                    for (const e of t) n && !Nv(e) && e._remove(), Nv(e) && (n = !0)
                }
            };

        function Iv(t) {
            return (e, n) => {
                if (n.isPhantom) return;
                const o = n.modelPosition.nodeBefore;
                if (o && o.is("element", "listItem")) {
                    const e = n.mapper.toViewElement(o),
                        i = e.getAncestors().find(Nv),
                        r = t.createPositionAt(e, 0).getWalker();
                    for (const t of r) {
                        if ("elementStart" == t.type && t.item.is("element", "li")) {
                            n.viewPosition = t.previousPosition;
                            break
                        }
                        if ("elementEnd" == t.type && t.item == i) {
                            n.viewPosition = t.nextPosition;
                            break
                        }
                    }
                }
            }
        }
        const Mv = function (t, [e, n]) {
            const o = this;
            let i, r = e.is("documentFragment") ? e.getChild(0) : e;
            if (i = n ? o.createSelection(n) : o.document.selection, r && r.is("element", "listItem")) {
                const t = i.getFirstPosition();
                let e = null;
                if (t.parent.is("element", "listItem") ? e = t.parent : t.nodeBefore && t.nodeBefore.is("element", "listItem") && (e = t.nodeBefore), e) {
                    const t = e.getAttribute("listIndent");
                    if (t > 0)
                        for (; r && r.is("element", "listItem");) r._setAttribute("listIndent", r.getAttribute("listIndent") + t), r = r.nextSibling
                }
            }
        };

        function Tv(t) {
            const e = new zl({
                startPosition: t
            });
            let n;
            do {
                n = e.next()
            } while (!n.value.item.is("element", "listItem"));
            return n.value.item
        }

        function Bv(t, e, n, o, i, r) {
            const s = X_(e.nodeBefore, {
                    sameIndent: !0,
                    smallerIndent: !0,
                    listIndent: t
                }),
                a = i.mapper,
                c = i.writer,
                l = s ? s.getAttribute("listIndent") : null;
            let d;
            if (s)
                if (l == t) {
                    const t = a.toViewElement(s).parent;
                    d = c.createPositionAfter(t)
                } else {
                    const t = r.createPositionAt(s, "end");
                    d = a.toViewPosition(t)
                }
            else d = n;
            d = J_(d);
            for (const t of [...o.getChildren()]) Nv(t) && (d = c.move(c.createRangeOn(t), d).end, Q_(c, t, t.nextSibling), Q_(c, t.previousSibling, t))
        }

        function Nv(t) {
            return t.is("element", "ol") || t.is("element", "ul")
        }
        class Pv extends Wr {
            static get pluginName() {
                return "ListEditing"
            }
            static get requires() {
                return [dk, jf, Av]
            }
            init() {
                const t = this.editor;
                t.model.schema.register("listItem", {
                    inheritAllFrom: "$block",
                    allowAttributes: ["listType", "listIndent"]
                });
                const e = t.data,
                    n = t.editing;
                var o;
                t.model.document.registerPostFixer((e => function (t, e) {
                    const n = t.document.differ.getChanges(),
                        o = new Map;
                    let i = !1;
                    for (const o of n)
                        if ("insert" == o.type && "listItem" == o.name) r(o.position);
                        else if ("insert" == o.type && "listItem" != o.name) {
                        if ("$text" != o.name) {
                            const n = o.position.nodeAfter;
                            n.hasAttribute("listIndent") && (e.removeAttribute("listIndent", n), i = !0), n.hasAttribute("listType") && (e.removeAttribute("listType", n), i = !0), n.hasAttribute("listStyle") && (e.removeAttribute("listStyle", n), i = !0), n.hasAttribute("listReversed") && (e.removeAttribute("listReversed", n), i = !0), n.hasAttribute("listStart") && (e.removeAttribute("listStart", n), i = !0);
                            for (const e of Array.from(t.createRangeIn(n)).filter((t => t.item.is("element", "listItem")))) r(e.previousPosition)
                        }
                        r(o.position.getShiftedBy(o.length))
                    } else "remove" == o.type && "listItem" == o.name ? r(o.position) : ("attribute" == o.type && "listIndent" == o.attributeKey || "attribute" == o.type && "listType" == o.attributeKey) && r(o.range.start);
                    for (const t of o.values()) s(t), a(t);
                    return i;

                    function r(t) {
                        const e = t.nodeBefore;
                        if (e && e.is("element", "listItem")) {
                            let t = e;
                            if (o.has(t)) return;
                            for (let e = t.previousSibling; e && e.is("element", "listItem"); e = t.previousSibling)
                                if (t = e, o.has(t)) return;
                            o.set(e, t)
                        } else {
                            const e = t.nodeAfter;
                            e && e.is("element", "listItem") && o.set(e, e)
                        }
                    }

                    function s(t) {
                        let n = 0,
                            o = null;
                        for (; t && t.is("element", "listItem");) {
                            const r = t.getAttribute("listIndent");
                            if (r > n) {
                                let s;
                                null === o ? (o = r - n, s = n) : (o > r && (o = r), s = r - o), e.setAttribute("listIndent", s, t), i = !0
                            } else o = null, n = t.getAttribute("listIndent") + 1;
                            t = t.nextSibling
                        }
                    }

                    function a(t) {
                        let n = [],
                            o = null;
                        for (; t && t.is("element", "listItem");) {
                            const r = t.getAttribute("listIndent");
                            if (o && o.getAttribute("listIndent") > r && (n = n.slice(0, r + 1)), 0 != r)
                                if (n[r]) {
                                    const o = n[r];
                                    t.getAttribute("listType") != o && (e.setAttribute("listType", o, t), i = !0)
                                } else n[r] = t.getAttribute("listType");
                            o = t, t = t.nextSibling
                        }
                    }
                }(t.model, e))), n.mapper.registerViewToModelLength("li", zv), e.mapper.registerViewToModelLength("li", zv), n.mapper.on("modelToViewPosition", Iv(n.view)), n.mapper.on("viewToModelPosition", (o = t.model, (t, e) => {
                    const n = e.viewPosition,
                        i = n.parent,
                        r = e.mapper;
                    if ("ul" == i.name || "ol" == i.name) {
                        if (n.isAtEnd) {
                            const t = r.toModelElement(n.nodeBefore),
                                i = r.getModelLength(n.nodeBefore);
                            e.modelPosition = o.createPositionBefore(t).getShiftedBy(i)
                        } else {
                            const t = r.toModelElement(n.nodeAfter);
                            e.modelPosition = o.createPositionBefore(t)
                        }
                        t.stop()
                    } else if ("li" == i.name && n.nodeBefore && ("ul" == n.nodeBefore.name || "ol" == n.nodeBefore.name)) {
                        const s = r.toModelElement(i);
                        let a = 1,
                            c = n.nodeBefore;
                        for (; c && Nv(c);) a += r.getModelLength(c), c = c.previousSibling;
                        e.modelPosition = o.createPositionBefore(s).getShiftedBy(a), t.stop()
                    }
                })), e.mapper.on("modelToViewPosition", Iv(n.view)), t.conversion.for("editingDowncast").add((e => {
                    e.on("insert", yv, {
                        priority: "high"
                    }), e.on("insert:listItem", Cv(t.model)), e.on("attribute:listType:listItem", _v, {
                        priority: "high"
                    }), e.on("attribute:listType:listItem", vv, {
                        priority: "low"
                    }), e.on("attribute:listIndent:listItem", function (t) {
                        return (e, n, o) => {
                            if (!o.consumable.consume(n.item, "attribute:listIndent")) return;
                            const i = o.mapper.toViewElement(n.item),
                                r = o.writer;
                            r.breakContainer(r.createPositionBefore(i)), r.breakContainer(r.createPositionAfter(i));
                            const s = i.parent,
                                a = s.previousSibling,
                                c = r.createRangeOn(s);
                            r.remove(c), a && a.nextSibling && Q_(r, a, a.nextSibling), Bv(n.attributeOldValue + 1, n.range.start, c.start, i, o, t), Z_(n.item, i, o, t);
                            for (const t of n.item.getChildren()) o.consumable.consume(t, "insert")
                        }
                    }(t.model)), e.on("remove:listItem", function (t) {
                        return (e, n, o) => {
                            const i = o.mapper.toViewPosition(n.position).getLastMatchingPosition((t => !t.item.is("element", "li"))).nodeAfter,
                                r = o.writer;
                            r.breakContainer(r.createPositionBefore(i)), r.breakContainer(r.createPositionAfter(i));
                            const s = i.parent,
                                a = s.previousSibling,
                                c = r.createRangeOn(s),
                                l = r.remove(c);
                            a && a.nextSibling && Q_(r, a, a.nextSibling), Bv(o.mapper.toModelElement(i).getAttribute("listIndent") + 1, n.position, c.start, i, o, t);
                            for (const t of r.createRangeIn(l).getItems()) o.mapper.unbindViewElement(t);
                            e.stop()
                        }
                    }(t.model)), e.on("remove", xv, {
                        priority: "low"
                    })
                })), t.conversion.for("dataDowncast").add((e => {
                    e.on("insert", yv, {
                        priority: "high"
                    }), e.on("insert:listItem", Cv(t.model))
                })), t.conversion.for("upcast").add((t => {
                    t.on("element:ul", Dv, {
                        priority: "high"
                    }), t.on("element:ol", Dv, {
                        priority: "high"
                    }), t.on("element:li", Sv, {
                        priority: "high"
                    }), t.on("element:li", Ev)
                })), t.model.on("insertContent", Mv, {
                    priority: "high"
                }), t.commands.add("numberedList", new kv(t, "numbered")), t.commands.add("bulletedList", new kv(t, "bulleted")), t.commands.add("indentList", new fv(t, "forward")), t.commands.add("outdentList", new fv(t, "backward"));
                const i = n.view.document;
                this.listenTo(i, "enter", ((t, e) => {
                    const n = this.editor.model.document,
                        o = n.selection.getLastPosition().parent;
                    n.selection.isCollapsed && "listItem" == o.name && o.isEmpty && (this.editor.execute("outdentList"), e.preventDefault(), t.stop())
                }), {
                    context: "li"
                }), this.listenTo(i, "delete", ((t, e) => {
                    if ("backward" !== e.direction) return;
                    const n = this.editor.model.document.selection;
                    if (!n.isCollapsed) return;
                    const o = n.getFirstPosition();
                    if (!o.isAtStart) return;
                    const i = o.parent;
                    if ("listItem" !== i.name) return;
                    i.previousSibling && "listItem" === i.previousSibling.name || (this.editor.execute("outdentList"), e.preventDefault(), t.stop())
                }), {
                    context: "li"
                }), this.listenTo(t.editing.view.document, "tab", ((e, n) => {
                    const o = n.shiftKey ? "outdentList" : "indentList";
                    this.editor.commands.get(o).isEnabled && (t.execute(o), n.stopPropagation(), n.preventDefault(), e.stop())
                }), {
                    context: "li"
                })
            }
            afterInit() {
                const t = this.editor.commands,
                    e = t.get("indent"),
                    n = t.get("outdent");
                e && e.registerChildCommand(t.get("indentList")), n && n.registerChildCommand(t.get("outdentList"))
            }
        }

        function zv(t) {
            let e = 1;
            for (const n of t.getChildren())
                if ("ul" == n.name || "ol" == n.name)
                    for (const t of n.getChildren()) e += zv(t);
            return e
        }
        Ai("Ctrl+Enter");
        var Ov = n(1199),
            Lv = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(Ov.Z, Lv);
        Ov.Z.locals;

        function jv(t, e) {
            const n = (n, o, i) => {
                if (!i.consumable.consume(o.item, n.name)) return;
                const r = o.attributeNewValue,
                    s = i.writer,
                    a = i.mapper.toViewElement(o.item),
                    c = [...a.getChildren()].find((t => t.getCustomProperty("media-content")));
                s.remove(c);
                const l = t.getMediaViewElement(s, r, e);
                s.insert(s.createPositionAt(a, 0), l)
            };
            return t => {
                t.on("attribute:url:media", n)
            }
        }

        function Rv(t, e, n, o) {
            return t.createContainerElement("figure", {
                class: "media"
            }, [e.getMediaViewElement(t, n, o), t.createSlot()])
        }

        function Fv(t) {
            const e = t.getSelectedElement();
            return e && e.is("element", "media") ? e : null
        }

        function Vv(t, e, n, o) {
            t.change((i => {
                const r = i.createElement("media", {
                    url: e
                });
                t.insertObject(r, n, null, {
                    setSelection: "on",
                    findOptimalPosition: o ? "auto" : void 0
                })
            }))
        }
        class Uv extends Yr {
            refresh() {
                const t = this.editor.model,
                    e = t.document.selection,
                    n = Fv(e);
                this.value = n ? n.getAttribute("url") : void 0, this.isEnabled = function (t) {
                    const e = t.getSelectedElement();
                    return !!e && "media" === e.name
                }(e) || function (t, e) {
                    const n = Sk(t, e);
                    let o = n.start.parent;
                    o.isEmpty && !e.schema.isLimit(o) && (o = o.parent);
                    return e.schema.checkChild(o, "media")
                }(e, t)
            }
            execute(t) {
                const e = this.editor.model,
                    n = e.document.selection,
                    o = Fv(n);
                o ? e.change((e => {
                    e.setAttribute("url", t, o)
                })) : Vv(e, t, n, !0)
            }
        }
        class Hv {
            constructor(t, e) {
                const n = e.providers,
                    o = e.extraProviders || [],
                    i = new Set(e.removeProviders),
                    r = n.concat(o).filter((t => {
                        const e = t.name;
                        return e ? !i.has(e) : (C("media-embed-no-provider-name", {
                            provider: t
                        }), !1)
                    }));
                this.locale = t, this.providerDefinitions = r
            }
            hasMedia(t) {
                return !!this._getMedia(t)
            }
            getMediaViewElement(t, e, n) {
                return this._getMedia(e).getViewElement(t, n)
            }
            _getMedia(t) {
                if (!t) return new Gv(this.locale);
                t = t.trim();
                for (const e of this.providerDefinitions) {
                    const n = e.html,
                        o = vi(e.url);
                    for (const e of o) {
                        const o = this._getUrlMatches(t, e);
                        if (o) return new Gv(this.locale, t, o, n)
                    }
                }
                return null
            }
            _getUrlMatches(t, e) {
                let n = t.match(e);
                if (n) return n;
                let o = t.replace(/^https?:\/\//, "");
                return n = o.match(e), n || (o = o.replace(/^www\./, ""), n = o.match(e), n || null)
            }
        }
        class Gv {
            constructor(t, e, n, o) {
                this.url = this._getValidUrl(e), this._locale = t, this._match = n, this._previewRenderer = o
            }
            getViewElement(t, e) {
                const n = {};
                let o;
                if (e.renderForEditingView || e.renderMediaPreview && this.url && this._previewRenderer) {
                    this.url && (n["data-oembed-url"] = this.url), e.renderForEditingView && (n.class = "ck-media__wrapper");
                    const i = this._getPreviewHtml(e);
                    o = t.createRawElement("div", n, ((t, e) => {
                        e.setContentOf(t, i)
                    }))
                } else this.url && (n.url = this.url), o = t.createEmptyElement(e.elementName, n);
                return t.setCustomProperty("media-content", !0, o), o
            }
            _getPreviewHtml(t) {
                return this._previewRenderer ? this._previewRenderer(this._match) : this.url && t.renderForEditingView ? this._getPlaceholderHtml() : ""
            }
            _getPlaceholderHtml() {
                const t = new mr,
                    e = this._locale.t;
                t.content = '<svg viewBox="0 0 64 42" xmlns="http://www.w3.org/2000/svg"><path d="M47.426 17V3.713L63.102 0v19.389h-.001l.001.272c0 1.595-2.032 3.43-4.538 4.098-2.506.668-4.538-.083-4.538-1.678 0-1.594 2.032-3.43 4.538-4.098.914-.244 2.032-.565 2.888-.603V4.516L49.076 7.447v9.556A1.014 1.014 0 0 0 49 17h-1.574zM29.5 17h-8.343a7.073 7.073 0 1 0-4.657 4.06v3.781H3.3a2.803 2.803 0 0 1-2.8-2.804V8.63a2.803 2.803 0 0 1 2.8-2.805h4.082L8.58 2.768A1.994 1.994 0 0 1 10.435 1.5h8.985c.773 0 1.477.448 1.805 1.149l1.488 3.177H26.7c1.546 0 2.8 1.256 2.8 2.805V17zm-11.637 0H17.5a1 1 0 0 0-1 1v.05A4.244 4.244 0 1 1 17.863 17zm29.684 2c.97 0 .953-.048.953.889v20.743c0 .953.016.905-.953.905H19.453c-.97 0-.953.048-.953-.905V19.89c0-.937-.016-.889.97-.889h28.077zm-4.701 19.338V22.183H24.154v16.155h18.692zM20.6 21.375v1.616h1.616v-1.616H20.6zm0 3.231v1.616h1.616v-1.616H20.6zm0 3.231v1.616h1.616v-1.616H20.6zm0 3.231v1.616h1.616v-1.616H20.6zm0 3.231v1.616h1.616v-1.616H20.6zm0 3.231v1.616h1.616V37.53H20.6zm24.233-16.155v1.616h1.615v-1.616h-1.615zm0 3.231v1.616h1.615v-1.616h-1.615zm0 3.231v1.616h1.615v-1.616h-1.615zm0 3.231v1.616h1.615v-1.616h-1.615zm0 3.231v1.616h1.615v-1.616h-1.615zm0 3.231v1.616h1.615V37.53h-1.615zM29.485 25.283a.4.4 0 0 1 .593-.35l9.05 4.977a.4.4 0 0 1 0 .701l-9.05 4.978a.4.4 0 0 1-.593-.35v-9.956z"/></svg>', t.viewBox = "0 0 64 42";
                return new Gi({
                    tag: "div",
                    attributes: {
                        class: "ck ck-reset_all ck-media__placeholder"
                    },
                    children: [{
                        tag: "div",
                        attributes: {
                            class: "ck-media__placeholder__icon"
                        },
                        children: [t]
                    }, {
                        tag: "a",
                        attributes: {
                            class: "ck-media__placeholder__url",
                            target: "_blank",
                            rel: "noopener noreferrer",
                            href: this.url,
                            "data-cke-tooltip-text": e("Open media in new tab")
                        },
                        children: [{
                            tag: "span",
                            attributes: {
                                class: "ck-media__placeholder__url__text"
                            },
                            children: [this.url]
                        }]
                    }]
                }).render().outerHTML
            }
            _getValidUrl(t) {
                return t ? t.match(/^https?/) ? t : "https://" + t : null
            }
        }
        var qv = n(7442),
            Wv = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(qv.Z, Wv);
        qv.Z.locals;
        class Kv extends Wr {
            constructor(t) {
                super(t), t.config.define("mediaEmbed", {
                    elementName: "oembed",
                    providers: [{
                        name: "dailymotion",
                        url: /^dailymotion\.com\/video\/(\w+)/,
                        html: t => `<div style="position: relative; padding-bottom: 100%; height: 0; "><iframe src="https://www.dailymotion.com/embed/video/${t[1]}" style="position: absolute; width: 100%; height: 100%; top: 0; left: 0;" frameborder="0" width="480" height="270" allowfullscreen allow="autoplay"></iframe></div>`
                    }, {
                        name: "spotify",
                        url: [/^open\.spotify\.com\/(artist\/\w+)/, /^open\.spotify\.com\/(album\/\w+)/, /^open\.spotify\.com\/(track\/\w+)/],
                        html: t => `<div style="position: relative; padding-bottom: 100%; height: 0; padding-bottom: 126%;"><iframe src="https://open.spotify.com/embed/${t[1]}" style="position: absolute; width: 100%; height: 100%; top: 0; left: 0;" frameborder="0" allowtransparency="true" allow="encrypted-media"></iframe></div>`
                    }, {
                        name: "youtube",
                        url: [/^(?:m\.)?youtube\.com\/watch\?v=([\w-]+)(?:&t=(\d+))?/, /^(?:m\.)?youtube\.com\/v\/([\w-]+)(?:\?t=(\d+))?/, /^youtube\.com\/embed\/([\w-]+)(?:\?start=(\d+))?/, /^youtu\.be\/([\w-]+)(?:\?t=(\d+))?/],
                        html: t => {
                            const e = t[1],
                                n = t[2];
                            return `<div style="position: relative; padding-bottom: 100%; height: 0; padding-bottom: 56.2493%;"><iframe src="https://www.youtube.com/embed/${e}${n?`?start=${n}`:""}" style="position: absolute; width: 100%; height: 100%; top: 0; left: 0;" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe></div>`
                        }
                    }, {
                        name: "vimeo",
                        url: [/^vimeo\.com\/(\d+)/, /^vimeo\.com\/[^/]+\/[^/]+\/video\/(\d+)/, /^vimeo\.com\/album\/[^/]+\/video\/(\d+)/, /^vimeo\.com\/channels\/[^/]+\/(\d+)/, /^vimeo\.com\/groups\/[^/]+\/videos\/(\d+)/, /^vimeo\.com\/ondemand\/[^/]+\/(\d+)/, /^player\.vimeo\.com\/video\/(\d+)/],
                        html: t => `<div style="position: relative; padding-bottom: 100%; height: 0; padding-bottom: 56.2493%;"><iframe src="https://player.vimeo.com/video/${t[1]}" style="position: absolute; width: 100%; height: 100%; top: 0; left: 0;" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe></div>`
                    }, {
                        name: "instagram",
                        url: /^instagram\.com\/p\/(\w+)/
                    }, {
                        name: "twitter",
                        url: /^twitter\.com/
                    }, {
                        name: "googleMaps",
                        url: [/^google\.com\/maps/, /^goo\.gl\/maps/, /^maps\.google\.com/, /^maps\.app\.goo\.gl/]
                    }, {
                        name: "flickr",
                        url: /^flickr\.com/
                    }, {
                        name: "facebook",
                        url: /^facebook\.com/
                    }]
                }), this.registry = new Hv(t.locale, t.config.get("mediaEmbed"))
            }
            static get pluginName() {
                return "MediaEmbedEditing"
            }
            init() {
                const t = this.editor,
                    e = t.model.schema,
                    n = t.t,
                    o = t.conversion,
                    i = t.config.get("mediaEmbed.previewsInData"),
                    r = t.config.get("mediaEmbed.elementName"),
                    s = this.registry;
                t.commands.add("mediaEmbed", new Uv(t)), e.register("media", {
                    inheritAllFrom: "$blockObject",
                    allowAttributes: ["url"]
                }), o.for("dataDowncast").elementToStructure({
                    model: "media",
                    view: (t, {
                        writer: e
                    }) => {
                        const n = t.getAttribute("url");
                        return Rv(e, s, n, {
                            elementName: r,
                            renderMediaPreview: !!n && i
                        })
                    }
                }), o.for("dataDowncast").add(jv(s, {
                    elementName: r,
                    renderMediaPreview: i
                })), o.for("editingDowncast").elementToStructure({
                    model: "media",
                    view: (t, {
                        writer: e
                    }) => {
                        const o = t.getAttribute("url");
                        return function (t, e, n) {
                            return e.setCustomProperty("media", !0, t), vk(t, e, {
                                label: n
                            })
                        }(Rv(e, s, o, {
                            elementName: r,
                            renderForEditingView: !0
                        }), e, n("media widget"))
                    }
                }), o.for("editingDowncast").add(jv(s, {
                    elementName: r,
                    renderForEditingView: !0
                })), o.for("upcast").elementToElement({
                    view: t => ["oembed", r].includes(t.name) && t.getAttribute("url") ? {
                        name: !0
                    } : null,
                    model: (t, {
                        writer: e
                    }) => {
                        const n = t.getAttribute("url");
                        return s.hasMedia(n) ? e.createElement("media", {
                            url: n
                        }) : null
                    }
                }).elementToElement({
                    view: {
                        name: "div",
                        attributes: {
                            "data-oembed-url": !0
                        }
                    },
                    model: (t, {
                        writer: e
                    }) => {
                        const n = t.getAttribute("data-oembed-url");
                        return s.hasMedia(n) ? e.createElement("media", {
                            url: n
                        }) : null
                    }
                }).add((t => {
                    t.on("element:figure", ((t, e, n) => {
                        if (!n.consumable.consume(e.viewItem, {
                                name: !0,
                                classes: "media"
                            })) return;
                        const {
                            modelRange: o,
                            modelCursor: i
                        } = n.convertChildren(e.viewItem, e.modelCursor);
                        e.modelRange = o, e.modelCursor = i;
                        Ii(o.getItems()) || n.consumable.revert(e.viewItem, {
                            name: !0,
                            classes: "media"
                        })
                    }))
                }))
            }
        }
        const Yv = /^(?:http(s)?:\/\/)?[\w-]+\.[\w-.~:/?#[\]@!$&'()*+,;=%]+$/;
        class $v extends Wr {
            constructor(t) {
                super(t), this._timeoutId = null, this._positionToInsert = null
            }
            static get requires() {
                return [ib, jf, xb]
            }
            static get pluginName() {
                return "AutoMediaEmbed"
            }
            init() {
                const t = this.editor,
                    e = t.model.document,
                    n = t.plugins.get("ClipboardPipeline");
                this.listenTo(n, "inputTransformation", (() => {
                    const t = e.selection.getFirstRange(),
                        n = hu.fromPosition(t.start);
                    n.stickiness = "toPrevious";
                    const o = hu.fromPosition(t.end);
                    o.stickiness = "toNext", e.once("change:data", (() => {
                        this._embedMediaBetweenPositions(n, o), n.detach(), o.detach()
                    }), {
                        priority: "high"
                    })
                }));
                t.commands.get("undo").on("execute", (() => {
                    this._timeoutId && (Oo.window.clearTimeout(this._timeoutId), this._positionToInsert.detach(), this._timeoutId = null, this._positionToInsert = null)
                }), {
                    priority: "high"
                })
            }
            _embedMediaBetweenPositions(t, e) {
                const n = this.editor,
                    o = n.plugins.get(Kv).registry,
                    i = new ud(t, e),
                    r = i.getWalker({
                        ignoreElementEnd: !0
                    });
                let s = "";
                for (const t of r) t.item.is("$textProxy") && (s += t.item.data);
                if (s = s.trim(), !s.match(Yv)) return void i.detach();
                if (!o.hasMedia(s)) return void i.detach();
                n.commands.get("mediaEmbed").isEnabled ? (this._positionToInsert = hu.fromPosition(t), this._timeoutId = Oo.window.setTimeout((() => {
                    n.model.change((t => {
                        this._timeoutId = null, t.remove(i), i.detach();
                        let e = null;
                        "$graveyard" !== this._positionToInsert.root.rootName && (e = this._positionToInsert), Vv(n.model, s, e, !1), this._positionToInsert.detach(), this._positionToInsert = null
                    })), n.plugins.get(jf).requestUndoOnBackspace()
                }), 100)) : i.detach()
            }
        }
        var Zv = n(9292),
            Qv = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(Zv.Z, Qv);
        Zv.Z.locals;
        class Jv extends Hi {
            constructor(t, e) {
                super(e);
                const n = e.t;
                this.focusTracker = new Mi, this.keystrokes = new Ti, this.set("mediaURLInputValue", ""), this.urlInputView = this._createUrlInput(), this.saveButtonView = this._createButton(n("Save"), Ig.check, "ck-button-save"), this.saveButtonView.type = "submit", this.saveButtonView.bind("isEnabled").to(this, "mediaURLInputValue", (t => !!t)), this.cancelButtonView = this._createButton(n("Cancel"), Ig.cancel, "ck-button-cancel", "cancel"), this._focusables = new ji, this._focusCycler = new Vr({
                    focusables: this._focusables,
                    focusTracker: this.focusTracker,
                    keystrokeHandler: this.keystrokes,
                    actions: {
                        focusPrevious: "shift + tab",
                        focusNext: "tab"
                    }
                }), this._validators = t, this.setTemplate({
                    tag: "form",
                    attributes: {
                        class: ["ck", "ck-media-form", "ck-responsive-form"],
                        tabindex: "-1"
                    },
                    children: [this.urlInputView, this.saveButtonView, this.cancelButtonView]
                })
            }
            render() {
                super.render(), i({
                    view: this
                });
                [this.urlInputView, this.saveButtonView, this.cancelButtonView].forEach((t => {
                    this._focusables.add(t), this.focusTracker.add(t.element)
                })), this.keystrokes.listenTo(this.element);
                const t = t => t.stopPropagation();
                this.keystrokes.set("arrowright", t), this.keystrokes.set("arrowleft", t), this.keystrokes.set("arrowup", t), this.keystrokes.set("arrowdown", t)
            }
            destroy() {
                super.destroy(), this.focusTracker.destroy(), this.keystrokes.destroy()
            }
            focus() {
                this._focusCycler.focusFirst()
            }
            get url() {
                return this.urlInputView.fieldView.element.value.trim()
            }
            set url(t) {
                this.urlInputView.fieldView.element.value = t.trim()
            }
            isValid() {
                this.resetFormStatus();
                for (const t of this._validators) {
                    const e = t(this);
                    if (e) return this.urlInputView.errorText = e, !1
                }
                return !0
            }
            resetFormStatus() {
                this.urlInputView.errorText = null, this.urlInputView.infoText = this._urlInputViewInfoDefault
            }
            _createUrlInput() {
                const t = this.locale.t,
                    e = new Ir(this.locale, np),
                    n = e.fieldView;
                return this._urlInputViewInfoDefault = t("Paste the media URL in the input."), this._urlInputViewInfoTip = t("Tip: Paste the URL into the content to embed faster."), e.label = t("Media URL"), e.infoText = this._urlInputViewInfoDefault, n.on("input", (() => {
                    e.infoText = n.element.value ? this._urlInputViewInfoTip : this._urlInputViewInfoDefault, this.mediaURLInputValue = n.element.value.trim()
                })), e
            }
            _createButton(t, e, n, o) {
                const i = new br(this.locale);
                return i.set({
                    label: t,
                    icon: e,
                    tooltip: !0
                }), i.extendTemplate({
                    attributes: {
                        class: n
                    }
                }), o && i.delegate("execute").to(this, o), i
            }
        }
        class Xv extends Wr {
            static get requires() {
                return [Kv]
            }
            static get pluginName() {
                return "MediaEmbedUI"
            }
            init() {
                const t = this.editor,
                    e = t.commands.get("mediaEmbed");
                t.ui.componentFactory.add("mediaEmbed", (t => {
                    const n = Zg(t);
                    return this._setUpDropdown(n, e), n
                }))
            }
            _setUpDropdown(t, n) {
                const o = this.editor,
                    i = o.t,
                    r = t.buttonView,
                    s = o.plugins.get(Kv).registry;
                t.once("change:isOpen", (() => {
                    const i = new(e(Jv))(function (t, e) {
                        return [e => {
                            if (!e.url.length) return t("The URL must not be empty.")
                        }, n => {
                            if (!e.hasMedia(n.url)) return t("This media URL is not supported.")
                        }]
                    }(o.t, s), o.locale);
                    t.panelView.children.add(i), r.on("open", (() => {
                        i.disableCssTransitions(), i.url = n.value || "", i.urlInputView.fieldView.select(), i.enableCssTransitions()
                    }), {
                        priority: "low"
                    }), t.on("submit", (() => {
                        i.isValid() && (o.execute("mediaEmbed", i.url), o.editing.view.focus())
                    })), t.on("change:isOpen", (() => i.resetFormStatus())), t.on("cancel", (() => {
                        o.editing.view.focus()
                    })), i.delegate("submit", "cancel").to(t), i.urlInputView.fieldView.bind("value").to(n, "value"), i.urlInputView.bind("isEnabled").to(n, "isEnabled")
                })), t.bind("isEnabled").to(n), r.set({
                    label: i("Insert media"),
                    icon: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M18.68 3.03c.6 0 .59-.03.59.55v12.84c0 .59.01.56-.59.56H1.29c-.6 0-.59.03-.59-.56V3.58c0-.58-.01-.55.6-.55h17.38zM15.77 15V5H4.2v10h11.57zM2 4v1h1V4H2zm0 2v1h1V6H2zm0 2v1h1V8H2zm0 2v1h1v-1H2zm0 2v1h1v-1H2zm0 2v1h1v-1H2zM17 4v1h1V4h-1zm0 2v1h1V6h-1zm0 2v1h1V8h-1zm0 2v1h1v-1h-1zm0 2v1h1v-1h-1zm0 2v1h1v-1h-1zM7.5 7.177a.4.4 0 0 1 .593-.351l5.133 2.824a.4.4 0 0 1 0 .7l-5.133 2.824a.4.4 0 0 1-.593-.35V7.176v.001z"/></svg>',
                    tooltip: !0
                })
            }
        }
        var ty = n(4652),
            ey = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(ty.Z, ey);
        ty.Z.locals;

        function ny(t, e) {
            if (!t.childCount) return;
            const n = new vg(t.document),
                o = function (t, e) {
                    const n = e.createRangeIn(t),
                        o = new ms({
                            name: /^p|h\d+$/,
                            styles: {
                                "mso-list": /.*/
                            }
                        }),
                        i = [];
                    for (const t of n)
                        if ("elementStart" === t.type && o.match(t.item)) {
                            const e = ry(t.item);
                            i.push({
                                element: t.item,
                                id: e.id,
                                order: e.order,
                                indent: e.indent
                            })
                        } return i
                }(t, n);
            if (!o.length) return;
            let i = null,
                r = 1;
            o.forEach(((t, s) => {
                const a = function (t, e) {
                        if (!t) return !0;
                        if (t.id !== e.id) return e.indent - t.indent != 1;
                        const n = e.element.previousSibling;
                        if (!n) return !0;
                        return o = n, !(o.is("element", "ol") || o.is("element", "ul"));
                        var o
                    }(o[s - 1], t),
                    c = a ? null : o[s - 1],
                    l = (h = t, (d = c) ? h.indent - d.indent : h.indent - 1);
                var d, h;
                if (a && (i = null, r = 1), !i || 0 !== l) {
                    const o = function (t, e) {
                        const n = new RegExp(`@list l${t.id}:level${t.indent}\\s*({[^}]*)`, "gi"),
                            o = /mso-level-number-format:([^;]{0,100});/gi,
                            i = /mso-level-start-at:\s{0,100}([0-9]{0,10})\s{0,100};/gi,
                            r = n.exec(e);
                        let s = "decimal",
                            a = "ol",
                            c = null;
                        if (r && r[1]) {
                            const e = o.exec(r[1]);
                            if (e && e[1] && (s = e[1].trim(), a = "bullet" !== s && "image" !== s ? "ol" : "ul"), "bullet" === s) {
                                const e = function (t) {
                                    const e = function (t) {
                                        if (t.getChild(0).is("$text")) return null;
                                        for (const e of t.getChildren()) {
                                            if (!e.is("element", "span")) continue;
                                            const t = e.getChild(0);
                                            if (t) return t.is("$text") ? t : t.getChild(0)
                                        }
                                        return null
                                    }(t);
                                    if (!e) return null;
                                    const n = e._data;
                                    if ("o" === n) return "circle";
                                    if ("·" === n) return "disc";
                                    if ("§" === n) return "square";
                                    return null
                                }(t.element);
                                e && (s = e)
                            } else {
                                const t = i.exec(r[1]);
                                t && t[1] && (c = parseInt(t[1]))
                            }
                        }
                        return {
                            type: a,
                            startIndex: c,
                            style: oy(s)
                        }
                    }(t, e);
                    if (i) {
                        if (t.indent > r) {
                            const t = i.getChild(i.childCount - 1),
                                e = t.getChild(t.childCount - 1);
                            i = iy(o, e, n), r += 1
                        } else if (t.indent < r) {
                            const e = r - t.indent;
                            i = function (t, e) {
                                const n = t.getAncestors({
                                    parentFirst: !0
                                });
                                let o = null,
                                    i = 0;
                                for (const t of n)
                                    if ((t.is("element", "ul") || t.is("element", "ol")) && i++, i === e) {
                                        o = t;
                                        break
                                    } return o
                            }(i, e), r = t.indent
                        }
                    } else i = iy(o, t.element, n);
                    t.indent <= r && (i.is("element", o.type) || (i = n.rename(o.type, i)))
                }
                const u = function (t, e) {
                    return function (t, e) {
                        const n = new ms({
                                name: "span",
                                styles: {
                                    "mso-list": "Ignore"
                                }
                            }),
                            o = e.createRangeIn(t);
                        for (const t of o) "elementStart" === t.type && n.match(t.item) && e.remove(t.item)
                    }(t, e), e.removeStyle("text-indent", t), e.rename("li", t)
                }(t.element, n);
                n.appendChild(u, i)
            }))
        }

        function oy(t) {
            if (t.startsWith("arabic-leading-zero")) return "decimal-leading-zero";
            switch (t) {
                case "alpha-upper":
                    return "upper-alpha";
                case "alpha-lower":
                    return "lower-alpha";
                case "roman-upper":
                    return "upper-roman";
                case "roman-lower":
                    return "lower-roman";
                case "circle":
                case "disc":
                case "square":
                    return t;
                default:
                    return null
            }
        }

        function iy(t, e, n) {
            const o = e.parent,
                i = n.createElement(t.type),
                r = o.getChildIndex(e) + 1;
            return n.insertChild(r, i, o), t.style && n.setStyle("list-style-type", t.style, i), t.startIndex && t.startIndex > 1 && n.setAttribute("start", t.startIndex, i), i
        }

        function ry(t) {
            const e = {},
                n = t.getStyle("mso-list");
            if (n) {
                const t = n.match(/(^|\s{1,100})l(\d+)/i),
                    o = n.match(/\s{0,100}lfo(\d+)/i),
                    i = n.match(/\s{0,100}level(\d+)/i);
                t && o && i && (e.id = t[2], e.order = o[1], e.indent = parseInt(i[1]))
            }
            return e
        }

        function sy(t, e) {
            if (!t.childCount) return;
            const n = new vg(t.document),
                o = function (t, e) {
                    const n = e.createRangeIn(t),
                        o = new ms({
                            name: /v:(.+)/
                        }),
                        i = [];
                    for (const t of n) {
                        if ("elementStart" != t.type) continue;
                        const e = t.item,
                            n = e.previousSibling,
                            r = n && n.is("element") ? n.name : null;
                        o.match(e) && e.getAttribute("o:gfxdata") && "v:shapetype" !== r && i.push(t.item.getAttribute("id"))
                    }
                    return i
                }(t, n);
            ! function (t, e, n) {
                const o = n.createRangeIn(e),
                    i = new ms({
                        name: "img"
                    }),
                    r = [];
                for (const e of o)
                    if (e.item.is("element") && i.match(e.item)) {
                        const n = e.item,
                            o = n.getAttribute("v:shapes") ? n.getAttribute("v:shapes").split(" ") : [];
                        o.length && o.every((e => t.indexOf(e) > -1)) ? r.push(n) : n.getAttribute("src") || r.push(n)
                    } for (const t of r) n.remove(t)
            }(o, t, n),
            function (t, e, n) {
                const o = n.createRangeIn(e),
                    i = [];
                for (const e of o)
                    if ("elementStart" == e.type && e.item.is("element", "v:shape")) {
                        const n = e.item.getAttribute("id");
                        if (t.includes(n)) continue;
                        r(e.item.parent.getChildren(), n) || i.push(e.item)
                    } for (const t of i) {
                    const e = {
                        src: s(t)
                    };
                    t.hasAttribute("alt") && (e.alt = t.getAttribute("alt"));
                    const o = n.createElement("img", e);
                    n.insertChild(t.index + 1, o, t.parent)
                }

                function r(t, e) {
                    for (const n of t)
                        if (n.is("element")) {
                            if ("img" == n.name && n.getAttribute("v:shapes") == e) return !0;
                            if (r(n.getChildren(), e)) return !0
                        } return !1
                }

                function s(t) {
                    for (const e of t.getChildren())
                        if (e.is("element") && e.getAttribute("src")) return e.getAttribute("src")
                }
            }(o, t, n),
            function (t, e) {
                const n = e.createRangeIn(t),
                    o = new ms({
                        name: /v:(.+)/
                    }),
                    i = [];
                for (const t of n) "elementStart" == t.type && o.match(t.item) && i.push(t.item);
                for (const t of i) e.remove(t)
            }(t, n);
            const i = function (t, e) {
                const n = e.createRangeIn(t),
                    o = new ms({
                        name: "img"
                    }),
                    i = [];
                for (const t of n) t.item.is("element") && o.match(t.item) && t.item.getAttribute("src").startsWith("file://") && i.push(t.item);
                return i
            }(t, n);
            i.length && function (t, e, n) {
                if (t.length === e.length)
                    for (let o = 0; o < t.length; o++) {
                        const i = `data:${e[o].type};base64,${ay(e[o].hex)}`;
                        n.setAttribute("src", i, t[o])
                    }
            }(i, function (t) {
                if (!t) return [];
                const e = /{\\pict[\s\S]+?\\bliptag-?\d+(\\blipupi-?\d+)?({\\\*\\blipuid\s?[\da-fA-F]+)?[\s}]*?/,
                    n = new RegExp("(?:(" + e.source + "))([\\da-fA-F\\s]+)\\}", "g"),
                    o = t.match(n),
                    i = [];
                if (o)
                    for (const t of o) {
                        let n = !1;
                        t.includes("\\pngblip") ? n = "image/png" : t.includes("\\jpegblip") && (n = "image/jpeg"), n && i.push({
                            hex: t.replace(e, "").replace(/[^\da-fA-F]/g, ""),
                            type: n
                        })
                    }
                return i
            }(e), n)
        }

        function ay(t) {
            return btoa(t.match(/\w{2}/g).map((t => String.fromCharCode(parseInt(t, 16)))).join(""))
        }
        const cy = /<meta\s*name="?generator"?\s*content="?microsoft\s*word\s*\d+"?\/?>/i,
            ly = /xmlns:o="urn:schemas-microsoft-com/i;
        class dy {
            constructor(t) {
                this.document = t
            }
            isActive(t) {
                return cy.test(t) || ly.test(t)
            }
            execute(t) {
                const {
                    body: e,
                    stylesString: n
                } = t._parsedData;
                ny(e, n), sy(e, t.dataTransfer.getData("text/rtf")),
                    function (t) {
                        const e = new vg(t.document);
                        for (const n of t.getChildren()) {
                            if (!n.is("element")) continue;
                            if (n.is("element", "table")) {
                                e.setAttribute("align", "left", n);
                                continue
                            }
                            const t = n.getAttribute("align"),
                                o = n.getChild(0);
                            "div" === n.name && t && o && o.is("element", "table") && e.setAttribute("align", "center" === t ? "none" : t, o)
                        }
                    }(e), t.content = e
            }
        }

        function hy(t, e, n, {
            blockElements: o,
            inlineObjectElements: i
        }) {
            let r = n.createPositionAt(t, "forward" == e ? "after" : "before");
            return r = r.getLastMatchingPosition((({
                item: t
            }) => t.is("element") && !o.includes(t.name) && !i.includes(t.name)), {
                direction: e
            }), "forward" == e ? r.nodeAfter : r.nodeBefore
        }

        function uy(t, e) {
            return !!t && t.is("element") && e.includes(t.name)
        }
        const gy = /id=("|')docs-internal-guid-[-0-9a-f]+("|')/i;
        class py {
            constructor(t) {
                this.document = t
            }
            isActive(t) {
                return gy.test(t)
            }
            execute(t) {
                const e = new vg(this.document),
                    {
                        body: n
                    } = t._parsedData;
                ! function (t, e) {
                    for (const n of t.getChildren())
                        if (n.is("element", "b") && "normal" === n.getStyle("font-weight")) {
                            const o = t.getChildIndex(n);
                            e.remove(n), e.insertChild(o, n.getChildren(), t)
                        }
                }(n, e),
                function (t, e) {
                    for (const n of e.createRangeIn(t)) {
                        const t = n.item;
                        if (t.is("element", "li")) {
                            const n = t.getChild(0);
                            n && n.is("element", "p") && e.unwrapElement(n)
                        }
                    }
                }(n, e),
                function (t, e) {
                    const n = new za(e.document.stylesProcessor),
                        o = new Ec(n, {
                            renderingMode: "data"
                        }),
                        i = o.blockElements,
                        r = o.inlineObjectElements,
                        s = [];
                    for (const n of e.createRangeIn(t)) {
                        const t = n.item;
                        if (t.is("element", "br")) {
                            const n = hy(t, "forward", e, {
                                    blockElements: i,
                                    inlineObjectElements: r
                                }),
                                o = hy(t, "backward", e, {
                                    blockElements: i,
                                    inlineObjectElements: r
                                }),
                                a = uy(n, i);
                            (uy(o, i) || a) && s.push(t)
                        }
                    }
                    for (const t of s) t.hasClass("Apple-interchange-newline") ? e.remove(t) : e.replace(t, e.createElement("p"))
                }(n, e), t.content = n
            }
        }
        const my = /<google-sheets-html-origin/i;
        class fy {
            constructor(t) {
                this.document = t
            }
            isActive(t) {
                return my.test(t)
            }
            execute(t) {
                const e = new vg(this.document),
                    {
                        body: n
                    } = t._parsedData;
                ! function (t, e) {
                    for (const n of t.getChildren())
                        if (n.is("element", "google-sheets-html-origin")) {
                            const o = t.getChildIndex(n);
                            e.remove(n), e.insertChild(o, n.getChildren(), t)
                        }
                }(n, e),
                function (t, e) {
                    for (const n of t.getChildren()) n.is("element", "table") && n.hasAttribute("xmlns") && e.removeAttribute("xmlns", n)
                }(n, e),
                function (t, e) {
                    for (const n of t.getChildren()) n.is("element", "table") && "0px" === n.getStyle("width") && e.removeStyle("width", n)
                }(n, e),
                function (t, e) {
                    for (const n of Array.from(t.getChildren())) n.is("element", "style") && e.remove(n)
                }(n, e), t.content = n
            }
        }

        function ky(t) {
            return t.replace(/<span(?: class="Apple-converted-space"|)>(\s+)<\/span>/g, ((t, e) => 1 === e.length ? " " : Array(e.length + 1).join("  ").substr(0, e.length)))
        }

        function by(t, e) {
            const n = new DOMParser,
                o = function (t) {
                    return ky(ky(t)).replace(/(<span\s+style=['"]mso-spacerun:yes['"]>[^\S\r\n]*?)[\r\n]+([^\S\r\n]*<\/span>)/g, "$1$2").replace(/<span\s+style=['"]mso-spacerun:yes['"]><\/span>/g, "").replace(/(<span\s+style=['"]letter-spacing:[^'"]+?['"]>)[\r\n]+(<\/span>)/g, "$1 $2").replace(/ <\//g, " </").replace(/ <o:p><\/o:p>/g, " <o:p></o:p>").replace(/<o:p>(&nbsp;|\u00A0)<\/o:p>/g, "").replace(/>([^\S\r\n]*[\r\n]\s*)</g, "><")
                }(function (t) {
                    const e = "</body>",
                        n = "</html>",
                        o = t.indexOf(e);
                    if (o < 0) return t;
                    const i = t.indexOf(n, o + e.length);
                    return t.substring(0, o + e.length) + (i >= 0 ? t.substring(i) : "")
                }(t = t.replace(/<!--\[if gte vml 1]>/g, ""))),
                i = n.parseFromString(o, "text/html");
            ! function (t) {
                t.querySelectorAll("span[style*=spacerun]").forEach((t => {
                    const e = t,
                        n = e.innerText.length || 0;
                    e.innerText = Array(n + 1).join("  ").substr(0, n)
                }))
            }(i);
            const r = i.body.innerHTML,
                s = function (t, e) {
                    const n = new za(e),
                        o = new Ec(n, {
                            renderingMode: "data"
                        }),
                        i = t.createDocumentFragment(),
                        r = t.body.childNodes;
                    for (; r.length > 0;) i.appendChild(r[0]);
                    return o.domToView(i, {
                        skipComments: !0
                    })
                }(i, e),
                a = function (t) {
                    const e = [],
                        n = [],
                        o = Array.from(t.getElementsByTagName("style"));
                    for (const t of o) t.sheet && t.sheet.cssRules && t.sheet.cssRules.length && (e.push(t.sheet), n.push(t.innerHTML));
                    return {
                        styles: e,
                        stylesString: n.join(" ")
                    }
                }(i);
            return {
                body: s,
                bodyString: r,
                styles: a.styles,
                stylesString: a.stylesString
            }
        }
        Object.defineProperty, Object.getOwnPropertySymbols, Object.prototype.hasOwnProperty, Object.prototype.propertyIsEnumerable;

        function wy(t, e, n, o, i = 1) {
            null != e && null != i && e > i ? o.setAttribute(t, e, n) : o.removeAttribute(t, n)
        }

        function Ay(t, e, n = {}) {
            const o = t.createElement("tableCell", n);
            return t.insertElement("paragraph", o), t.insert(o, e), o
        }

        function Cy(t, e) {
            const n = e.parent.parent,
                o = parseInt(n.getAttribute("headingColumns") || "0"),
                {
                    column: i
                } = t.getCellLocation(e);
            return !!o && i < o
        }

        function _y() {
            return t => {
                t.on("element:table", ((t, e, n) => {
                    const o = e.viewItem;
                    if (!n.consumable.test(o, {
                            name: !0
                        })) return;
                    const {
                        rows: i,
                        headingRows: r,
                        headingColumns: s
                    } = function (t) {
                        let e, n = 0;
                        const o = [],
                            i = [];
                        let r;
                        for (const s of Array.from(t.getChildren())) {
                            if ("tbody" !== s.name && "thead" !== s.name && "tfoot" !== s.name) continue;
                            "thead" !== s.name || r || (r = s);
                            const t = Array.from(s.getChildren()).filter((t => t.is("element", "tr")));
                            for (const a of t)
                                if (r && s === r || "tbody" === s.name && Array.from(a.getChildren()).length && Array.from(a.getChildren()).every((t => t.is("element", "th")))) n++, o.push(a);
                                else {
                                    i.push(a);
                                    const t = yy(a);
                                    (!e || t < e) && (e = t)
                                }
                        }
                        return {
                            headingRows: n,
                            headingColumns: e || 0,
                            rows: [...o, ...i]
                        }
                    }(o), a = {};
                    s && (a.headingColumns = s), r && (a.headingRows = r);
                    const c = n.writer.createElement("table", a);
                    if (n.safeInsert(c, e.modelCursor)) {
                        if (n.consumable.consume(o, {
                                name: !0
                            }), i.forEach((t => n.convertItem(t, n.writer.createPositionAt(c, "end")))), n.convertChildren(o, n.writer.createPositionAt(c, "end")), c.isEmpty) {
                            const t = n.writer.createElement("tableRow");
                            n.writer.insert(t, n.writer.createPositionAt(c, "end")), Ay(n.writer, n.writer.createPositionAt(t, "end"))
                        }
                        n.updateConversionResult(c, e)
                    }
                }))
            }
        }

        function vy(t) {
            return e => {
                e.on(`element:${t}`, ((t, e, {
                    writer: n
                }) => {
                    if (!e.modelRange) return;
                    const o = e.modelRange.start.nodeAfter,
                        i = n.createPositionAt(o, 0);
                    if (e.viewItem.isEmpty) return void n.insertElement("paragraph", i);
                    const r = Array.from(o.getChildren());
                    if (r.every((t => t.is("element", "$marker")))) {
                        const t = n.createElement("paragraph");
                        n.insert(t, n.createPositionAt(o, 0));
                        for (const e of r) n.move(n.createRangeOn(e), n.createPositionAt(t, "end"))
                    }
                }), {
                    priority: "low"
                })
            }
        }

        function yy(t) {
            let e = 0,
                n = 0;
            const o = Array.from(t.getChildren()).filter((t => "th" === t.name || "td" === t.name));
            for (; n < o.length && "th" === o[n].name;) {
                const t = o[n];
                e += parseInt(t.getAttribute("colspan") || "1"), n++
            }
            return e
        }
        class xy {
            constructor(t, e = {}) {
                this._table = t, this._startRow = void 0 !== e.row ? e.row : e.startRow || 0, this._endRow = void 0 !== e.row ? e.row : e.endRow, this._startColumn = void 0 !== e.column ? e.column : e.startColumn || 0, this._endColumn = void 0 !== e.column ? e.column : e.endColumn, this._includeAllSlots = !!e.includeAllSlots, this._skipRows = new Set, this._row = 0, this._rowIndex = 0, this._column = 0, this._cellIndex = 0, this._spannedCells = new Map, this._nextCellAtColumn = -1
            } [Symbol.iterator]() {
                return this
            }
            next() {
                const t = this._table.getChild(this._rowIndex);
                if (!t || this._isOverEndRow()) return {
                    done: !0,
                    value: void 0
                };
                if (!t.is("element", "tableRow")) return this._rowIndex++, this.next();
                if (this._isOverEndColumn()) return this._advanceToNextRow();
                let e = null;
                const n = this._getSpanned();
                if (n) this._includeAllSlots && !this._shouldSkipSlot() && (e = this._formatOutValue(n.cell, n.row, n.column));
                else {
                    const n = t.getChild(this._cellIndex);
                    if (!n) return this._advanceToNextRow();
                    const o = parseInt(n.getAttribute("colspan") || "1"),
                        i = parseInt(n.getAttribute("rowspan") || "1");
                    (o > 1 || i > 1) && this._recordSpans(n, i, o), this._shouldSkipSlot() || (e = this._formatOutValue(n)), this._nextCellAtColumn = this._column + o
                }
                return this._column++, this._column == this._nextCellAtColumn && this._cellIndex++, e || this.next()
            }
            skipRow(t) {
                this._skipRows.add(t)
            }
            _advanceToNextRow() {
                return this._row++, this._rowIndex++, this._column = 0, this._cellIndex = 0, this._nextCellAtColumn = -1, this.next()
            }
            _isOverEndRow() {
                return void 0 !== this._endRow && this._row > this._endRow
            }
            _isOverEndColumn() {
                return void 0 !== this._endColumn && this._column > this._endColumn
            }
            _formatOutValue(t, e = this._row, n = this._column) {
                return {
                    done: !1,
                    value: new Ey(this, t, e, n)
                }
            }
            _shouldSkipSlot() {
                const t = this._skipRows.has(this._row),
                    e = this._row < this._startRow,
                    n = this._column < this._startColumn,
                    o = void 0 !== this._endColumn && this._column > this._endColumn;
                return t || e || n || o
            }
            _getSpanned() {
                const t = this._spannedCells.get(this._row);
                return t && t.get(this._column) || null
            }
            _recordSpans(t, e, n) {
                const o = {
                    cell: t,
                    row: this._row,
                    column: this._column
                };
                for (let t = this._row; t < this._row + e; t++)
                    for (let e = this._column; e < this._column + n; e++) t == this._row && e == this._column || this._markSpannedCell(t, e, o)
            }
            _markSpannedCell(t, e, n) {
                this._spannedCells.has(t) || this._spannedCells.set(t, new Map);
                this._spannedCells.get(t).set(e, n)
            }
        }
        class Ey {
            constructor(t, e, n, o) {
                this.cell = e, this.row = t._row, this.column = t._column, this.cellAnchorRow = n, this.cellAnchorColumn = o, this._cellIndex = t._cellIndex, this._rowIndex = t._rowIndex, this._table = t._table
            }
            get isAnchor() {
                return this.row === this.cellAnchorRow && this.column === this.cellAnchorColumn
            }
            get cellWidth() {
                return parseInt(this.cell.getAttribute("colspan") || "1")
            }
            get cellHeight() {
                return parseInt(this.cell.getAttribute("rowspan") || "1")
            }
            get rowIndex() {
                return this._rowIndex
            }
            getPositionBefore() {
                return this._table.root.document.model.createPositionAt(this._table.getChild(this.row), this._cellIndex)
            }
        }

        function Dy(t, e) {
            return (n, {
                writer: o
            }) => {
                const i = n.getAttribute("headingRows") || 0,
                    r = o.createContainerElement("table", null, []),
                    s = o.createContainerElement("figure", {
                        class: "table"
                    }, r);
                i > 0 && o.insert(o.createPositionAt(r, "end"), o.createContainerElement("thead", null, o.createSlot((t => t.is("element", "tableRow") && t.index < i)))), i < t.getRows(n) && o.insert(o.createPositionAt(r, "end"), o.createContainerElement("tbody", null, o.createSlot((t => t.is("element", "tableRow") && t.index >= i))));
                for (const {
                        positionOffset: t,
                        filter: n
                    } of e.additionalSlots) o.insert(o.createPositionAt(r, t), o.createSlot(n));
                return o.insert(o.createPositionAt(r, "after"), o.createSlot((t => !t.is("element", "tableRow") && !e.additionalSlots.some((({
                    filter: e
                }) => e(t)))))), e.asWidget ? function (t, e) {
                    return e.setCustomProperty("table", !0, t), vk(t, e, {
                        hasSelectionHandle: !0
                    })
                }(s, o) : s
            }
        }

        function Sy(t = {}) {
            return (e, {
                writer: n
            }) => {
                const o = e.parent,
                    i = o.parent,
                    r = i.getChildIndex(o),
                    s = new xy(i, {
                        row: r
                    }),
                    a = i.getAttribute("headingRows") || 0,
                    c = i.getAttribute("headingColumns") || 0;
                let l = null;
                for (const o of s)
                    if (o.cell == e) {
                        const e = o.row < a || o.column < c ? "th" : "td";
                        l = t.asWidget ? Dk(n.createEditableElement(e), n) : n.createContainerElement(e);
                        break
                    } return l
            }
        }

        function Iy(t = {}) {
            return (e, {
                writer: n
            }) => {
                if (!e.parent.is("element", "tableCell")) return null;
                if (!My(e)) return null;
                if (t.asWidget) return n.createContainerElement("span", {
                    class: "ck-table-bogus-paragraph"
                }); {
                    const t = n.createContainerElement("p");
                    return n.setCustomProperty("dataPipeline:transparentRendering", !0, t), t
                }
            }
        }

        function My(t) {
            return 1 == t.parent.childCount && !!t.getAttributeKeys().next().done
        }
        class Ty extends Yr {
            refresh() {
                const t = this.editor.model,
                    e = t.document.selection,
                    n = t.schema;
                this.isEnabled = function (t, e) {
                    const n = t.getFirstPosition().parent,
                        o = n === n.root ? n : n.parent;
                    return e.checkChild(o, "table")
                }(e, n)
            }
            execute(t = {}) {
                const e = this.editor,
                    n = e.model,
                    o = e.plugins.get("TableUtils"),
                    i = e.config.get("table.defaultHeadings.rows"),
                    r = e.config.get("table.defaultHeadings.columns");
                void 0 === t.headingRows && i && (t.headingRows = i), void 0 === t.headingColumns && r && (t.headingColumns = r), n.change((e => {
                    const i = o.createTable(e, t);
                    n.insertObject(i, null, null, {
                        findOptimalPosition: "auto"
                    }), e.setSelection(e.createPositionAt(i.getNodeByPath([0, 0, 0]), 0))
                }))
            }
        }
        class By extends Yr {
            constructor(t, e = {}) {
                super(t), this.order = e.order || "below"
            }
            refresh() {
                const t = this.editor.model.document.selection,
                    e = !!this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(t).length;
                this.isEnabled = e
            }
            execute() {
                const t = this.editor,
                    e = t.model.document.selection,
                    n = t.plugins.get("TableUtils"),
                    o = "above" === this.order,
                    i = n.getSelectionAffectedTableCells(e),
                    r = n.getRowIndexes(i),
                    s = o ? r.first : r.last,
                    a = i[0].findAncestor("table");
                n.insertRows(a, {
                    at: o ? s : s + 1,
                    copyStructureFromAbove: !o
                })
            }
        }
        class Ny extends Yr {
            constructor(t, e = {}) {
                super(t), this.order = e.order || "right"
            }
            refresh() {
                const t = this.editor.model.document.selection,
                    e = !!this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(t).length;
                this.isEnabled = e
            }
            execute() {
                const t = this.editor,
                    e = t.model.document.selection,
                    n = t.plugins.get("TableUtils"),
                    o = "left" === this.order,
                    i = n.getSelectionAffectedTableCells(e),
                    r = n.getColumnIndexes(i),
                    s = o ? r.first : r.last,
                    a = i[0].findAncestor("table");
                n.insertColumns(a, {
                    columns: 1,
                    at: o ? s : s + 1
                })
            }
        }
        class Py extends Yr {
            constructor(t, e = {}) {
                super(t), this.direction = e.direction || "horizontally"
            }
            refresh() {
                const t = this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(this.editor.model.document.selection);
                this.isEnabled = 1 === t.length
            }
            execute() {
                const t = this.editor.plugins.get("TableUtils"),
                    e = t.getSelectionAffectedTableCells(this.editor.model.document.selection)[0];
                "horizontally" === this.direction ? t.splitCellHorizontally(e, 2) : t.splitCellVertically(e, 2)
            }
        }

        function zy(t, e, n) {
            const {
                startRow: o,
                startColumn: i,
                endRow: r,
                endColumn: s
            } = e, a = n.createElement("table"), c = r - o + 1;
            for (let t = 0; t < c; t++) n.insertElement("tableRow", a, "end");
            const l = [...new xy(t, {
                startRow: o,
                endRow: r,
                startColumn: i,
                endColumn: s,
                includeAllSlots: !0
            })];
            for (const {
                    row: t,
                    column: e,
                    cell: c,
                    isAnchor: d,
                    cellAnchorRow: h,
                    cellAnchorColumn: u
                } of l) {
                const l = t - o,
                    g = a.getChild(l);
                if (d) {
                    const o = n.cloneElement(c);
                    n.append(o, g), Fy(o, t, e, r, s, n)
                } else(h < o || u < i) && Ay(n, n.createPositionAt(g, "end"))
            }
            return function (t, e, n, o, i) {
                const r = parseInt(e.getAttribute("headingRows") || "0");
                if (r > 0) {
                    wy("headingRows", r - n, t, i, 0)
                }
                const s = parseInt(e.getAttribute("headingColumns") || "0");
                if (s > 0) {
                    wy("headingColumns", s - o, t, i, 0)
                }
            }(a, t, o, i, n), a
        }

        function Oy(t, e, n = 0) {
            const o = [],
                i = new xy(t, {
                    startRow: n,
                    endRow: e - 1
                });
            for (const t of i) {
                const {
                    row: n,
                    cellHeight: i
                } = t;
                n < e && e <= n + i - 1 && o.push(t)
            }
            return o
        }

        function Ly(t, e, n) {
            const o = t.parent,
                i = o.parent,
                r = o.index,
                s = e - r,
                a = {},
                c = parseInt(t.getAttribute("rowspan")) - s;
            c > 1 && (a.rowspan = c);
            const l = parseInt(t.getAttribute("colspan") || "1");
            l > 1 && (a.colspan = l);
            const d = r + s,
                h = [...new xy(i, {
                    startRow: r,
                    endRow: d,
                    includeAllSlots: !0
                })];
            let u, g = null;
            for (const e of h) {
                const {
                    row: o,
                    column: i,
                    cell: r
                } = e;
                r === t && void 0 === u && (u = i), void 0 !== u && u === i && o === d && (g = Ay(n, e.getPositionBefore(), a))
            }
            return wy("rowspan", s, t, n), g
        }

        function jy(t, e) {
            const n = [],
                o = new xy(t);
            for (const t of o) {
                const {
                    column: o,
                    cellWidth: i
                } = t;
                o < e && e <= o + i - 1 && n.push(t)
            }
            return n
        }

        function Ry(t, e, n, o) {
            const i = n - e,
                r = {},
                s = parseInt(t.getAttribute("colspan")) - i;
            s > 1 && (r.colspan = s);
            const a = parseInt(t.getAttribute("rowspan") || "1");
            a > 1 && (r.rowspan = a);
            const c = Ay(o, o.createPositionAfter(t), r);
            return wy("colspan", i, t, o), c
        }

        function Fy(t, e, n, o, i, r) {
            const s = parseInt(t.getAttribute("colspan") || "1"),
                a = parseInt(t.getAttribute("rowspan") || "1");
            if (n + s - 1 > i) {
                wy("colspan", i - n + 1, t, r, 1)
            }
            if (e + a - 1 > o) {
                wy("rowspan", o - e + 1, t, r, 1)
            }
        }

        function Vy(t, e) {
            const n = e.getColumns(t),
                o = new Array(n).fill(0);
            for (const {
                    column: e
                } of new xy(t)) o[e]++;
            const i = o.reduce(((t, e, n) => e ? t : [...t, n]), []);
            if (i.length > 0) {
                const n = i[i.length - 1];
                return e.removeColumns(t, {
                    at: n
                }), !0
            }
            return !1
        }

        function Uy(t, e) {
            const n = [],
                o = e.getRows(t);
            for (let e = 0; e < o; e++) {
                t.getChild(e).isEmpty && n.push(e)
            }
            if (n.length > 0) {
                const o = n[n.length - 1];
                return e.removeRows(t, {
                    at: o
                }), !0
            }
            return !1
        }

        function Hy(t, e) {
            Vy(t, e) || Uy(t, e)
        }

        function Gy(t, e) {
            const n = Array.from(new xy(t, {
                startColumn: e.firstColumn,
                endColumn: e.lastColumn,
                row: e.lastRow
            }));
            if (n.every((({
                    cellHeight: t
                }) => 1 === t))) return e.lastRow;
            const o = n[0].cellHeight - 1;
            return e.lastRow + o
        }

        function qy(t, e) {
            const n = Array.from(new xy(t, {
                startRow: e.firstRow,
                endRow: e.lastRow,
                column: e.lastColumn
            }));
            if (n.every((({
                    cellWidth: t
                }) => 1 === t))) return e.lastColumn;
            const o = n[0].cellWidth - 1;
            return e.lastColumn + o
        }
        class Wy extends Yr {
            constructor(t, e) {
                super(t), this.direction = e.direction, this.isHorizontal = "right" == this.direction || "left" == this.direction
            }
            refresh() {
                const t = this._getMergeableCell();
                this.value = t, this.isEnabled = !!t
            }
            execute() {
                const t = this.editor.model,
                    e = t.document,
                    n = this.editor.plugins.get("TableUtils").getTableCellsContainingSelection(e.selection)[0],
                    o = this.value,
                    i = this.direction;
                t.change((t => {
                    const e = "right" == i || "down" == i,
                        r = e ? n : o,
                        s = e ? o : n,
                        a = s.parent;
                    ! function (t, e, n) {
                        Ky(t) || (Ky(e) && n.remove(n.createRangeIn(e)), n.move(n.createRangeIn(t), n.createPositionAt(e, "end")));
                        n.remove(t)
                    }(s, r, t);
                    const c = this.isHorizontal ? "colspan" : "rowspan",
                        l = parseInt(n.getAttribute(c) || "1"),
                        d = parseInt(o.getAttribute(c) || "1");
                    t.setAttribute(c, l + d, r), t.setSelection(t.createRangeIn(r));
                    const h = this.editor.plugins.get("TableUtils");
                    Hy(a.findAncestor("table"), h)
                }))
            }
            _getMergeableCell() {
                const t = this.editor.model.document,
                    e = this.editor.plugins.get("TableUtils"),
                    n = e.getTableCellsContainingSelection(t.selection)[0];
                if (!n) return;
                const o = this.isHorizontal ? function (t, e, n) {
                    const o = t.parent,
                        i = o.parent,
                        r = "right" == e ? t.nextSibling : t.previousSibling,
                        s = (i.getAttribute("headingColumns") || 0) > 0;
                    if (!r) return;
                    const a = "right" == e ? t : r,
                        c = "right" == e ? r : t,
                        {
                            column: l
                        } = n.getCellLocation(a),
                        {
                            column: d
                        } = n.getCellLocation(c),
                        h = parseInt(a.getAttribute("colspan") || "1"),
                        u = Cy(n, a),
                        g = Cy(n, c);
                    if (s && u != g) return;
                    return l + h === d ? r : void 0
                }(n, this.direction, e) : function (t, e, n) {
                    const o = t.parent,
                        i = o.parent,
                        r = i.getChildIndex(o);
                    if ("down" == e && r === n.getRows(i) - 1 || "up" == e && 0 === r) return null;
                    const s = parseInt(t.getAttribute("rowspan") || "1"),
                        a = i.getAttribute("headingRows") || 0,
                        c = "down" == e && r + s === a,
                        l = "up" == e && r === a;
                    if (a && (c || l)) return null;
                    const d = parseInt(t.getAttribute("rowspan") || "1"),
                        h = "down" == e ? r + d : r,
                        u = [...new xy(i, {
                            endRow: h
                        })],
                        g = u.find((e => e.cell === t)),
                        p = g.column,
                        m = u.find((({
                            row: t,
                            cellHeight: n,
                            column: o
                        }) => o === p && ("down" == e ? t === h : h === t + n)));
                    return m && m.cell ? m.cell : null
                }(n, this.direction, e);
                if (!o) return;
                const i = this.isHorizontal ? "rowspan" : "colspan",
                    r = parseInt(n.getAttribute(i) || "1");
                return parseInt(o.getAttribute(i) || "1") === r ? o : void 0
            }
        }

        function Ky(t) {
            const e = t.getChild(0);
            return 1 == t.childCount && e.is("element", "paragraph") && e.isEmpty
        }
        class Yy extends Yr {
            refresh() {
                const t = this.editor.plugins.get("TableUtils"),
                    e = t.getSelectionAffectedTableCells(this.editor.model.document.selection),
                    n = e[0];
                if (n) {
                    const o = n.findAncestor("table"),
                        i = t.getRows(o) - 1,
                        r = t.getRowIndexes(e),
                        s = 0 === r.first && r.last === i;
                    this.isEnabled = !s
                } else this.isEnabled = !1
            }
            execute() {
                const t = this.editor.model,
                    e = this.editor.plugins.get("TableUtils"),
                    n = e.getSelectionAffectedTableCells(t.document.selection),
                    o = e.getRowIndexes(n),
                    i = n[0],
                    r = i.findAncestor("table"),
                    s = e.getCellLocation(i).column;
                t.change((t => {
                    const n = o.last - o.first + 1;
                    e.removeRows(r, {
                        at: o.first,
                        rows: n
                    });
                    const i = function (t, e, n, o) {
                        const i = t.getChild(Math.min(e, o - 1));
                        let r = i.getChild(0),
                            s = 0;
                        for (const t of i.getChildren()) {
                            if (s > n) return r;
                            r = t, s += parseInt(t.getAttribute("colspan") || "1")
                        }
                        return r
                    }(r, o.first, s, e.getRows(r));
                    t.setSelection(t.createPositionAt(i, 0))
                }))
            }
        }
        class $y extends Yr {
            refresh() {
                const t = this.editor.plugins.get("TableUtils"),
                    e = t.getSelectionAffectedTableCells(this.editor.model.document.selection),
                    n = e[0];
                if (n) {
                    const o = n.findAncestor("table"),
                        i = t.getColumns(o),
                        {
                            first: r,
                            last: s
                        } = t.getColumnIndexes(e);
                    this.isEnabled = s - r < i - 1
                } else this.isEnabled = !1
            }
            execute() {
                const t = this.editor.plugins.get("TableUtils"),
                    [e, n] = function (t, e) {
                        const n = e.getSelectionAffectedTableCells(t),
                            o = n[0],
                            i = n.pop(),
                            r = [o, i];
                        return o.isBefore(i) ? r : r.reverse()
                    }(this.editor.model.document.selection, t),
                    o = e.parent.parent,
                    i = [...new xy(o)],
                    r = {
                        first: i.find((t => t.cell === e)).column,
                        last: i.find((t => t.cell === n)).column
                    },
                    s = function (t, e, n, o) {
                        const i = parseInt(n.getAttribute("colspan") || "1");
                        return i > 1 ? n : e.previousSibling || n.nextSibling ? n.nextSibling || e.previousSibling : o.first ? t.reverse().find((({
                            column: t
                        }) => t < o.first)).cell : t.reverse().find((({
                            column: t
                        }) => t > o.last)).cell
                    }(i, e, n, r);
                this.editor.model.change((e => {
                    const n = r.last - r.first + 1;
                    t.removeColumns(o, {
                        at: r.first,
                        columns: n
                    }), e.setSelection(e.createPositionAt(s, 0))
                }))
            }
        }
        class Zy extends Yr {
            refresh() {
                const t = this.editor.plugins.get("TableUtils"),
                    e = this.editor.model,
                    n = t.getSelectionAffectedTableCells(e.document.selection),
                    o = n.length > 0;
                this.isEnabled = o, this.value = o && n.every((t => this._isInHeading(t, t.parent.parent)))
            }
            execute(t = {}) {
                if (t.forceValue === this.value) return;
                const e = this.editor.plugins.get("TableUtils"),
                    n = this.editor.model,
                    o = e.getSelectionAffectedTableCells(n.document.selection),
                    i = o[0].findAncestor("table"),
                    {
                        first: r,
                        last: s
                    } = e.getRowIndexes(o),
                    a = this.value ? r : s + 1,
                    c = i.getAttribute("headingRows") || 0;
                n.change((t => {
                    if (a) {
                        const e = Oy(i, a, a > c ? c : 0);
                        for (const {
                                cell: n
                            } of e) Ly(n, a, t)
                    }
                    wy("headingRows", a, i, t, 0)
                }))
            }
            _isInHeading(t, e) {
                const n = parseInt(e.getAttribute("headingRows") || "0");
                return !!n && t.parent.index < n
            }
        }
        class Qy extends Yr {
            refresh() {
                const t = this.editor.model,
                    e = this.editor.plugins.get("TableUtils"),
                    n = e.getSelectionAffectedTableCells(t.document.selection),
                    o = n.length > 0;
                this.isEnabled = o, this.value = o && n.every((t => Cy(e, t)))
            }
            execute(t = {}) {
                if (t.forceValue === this.value) return;
                const e = this.editor.plugins.get("TableUtils"),
                    n = this.editor.model,
                    o = e.getSelectionAffectedTableCells(n.document.selection),
                    i = o[0].findAncestor("table"),
                    {
                        first: r,
                        last: s
                    } = e.getColumnIndexes(o),
                    a = this.value ? r : s + 1;
                n.change((t => {
                    if (a) {
                        const e = jy(i, a);
                        for (const {
                                cell: n,
                                column: o
                            } of e) Ry(n, o, a, t)
                    }
                    wy("headingColumns", a, i, t, 0)
                }))
            }
        }
        class Jy extends Wr {
            static get pluginName() {
                return "TableUtils"
            }
            init() {
                this.decorate("insertColumns"), this.decorate("insertRows")
            }
            getCellLocation(t) {
                const e = t.parent,
                    n = e.parent,
                    o = n.getChildIndex(e),
                    i = new xy(n, {
                        row: o
                    });
                for (const {
                        cell: e,
                        row: n,
                        column: o
                    } of i)
                    if (e === t) return {
                        row: n,
                        column: o
                    }
            }
            createTable(t, e) {
                const n = t.createElement("table"),
                    o = e.rows || 2,
                    i = e.columns || 2;
                return Xy(t, n, 0, o, i), e.headingRows && wy("headingRows", Math.min(e.headingRows, o), n, t, 0), e.headingColumns && wy("headingColumns", Math.min(e.headingColumns, i), n, t, 0), n
            }
            insertRows(t, e = {}) {
                const n = this.editor.model,
                    o = e.at || 0,
                    i = e.rows || 1,
                    r = void 0 !== e.copyStructureFromAbove,
                    s = e.copyStructureFromAbove ? o - 1 : o,
                    a = this.getRows(t),
                    c = this.getColumns(t);
                if (o > a) throw new A("tableutils-insertrows-insert-out-of-range", this, {
                    options: e
                });
                n.change((e => {
                    const n = t.getAttribute("headingRows") || 0;
                    if (n > o && wy("headingRows", n + i, t, e, 0), !r && (0 === o || o === a)) return void Xy(e, t, o, i, c);
                    const l = r ? Math.max(o, s) : o,
                        d = new xy(t, {
                            endRow: l
                        }),
                        h = new Array(c).fill(1);
                    for (const {
                            row: t,
                            column: n,
                            cellHeight: a,
                            cellWidth: c,
                            cell: l
                        } of d) {
                        const d = t + a - 1,
                            u = t <= s && s <= d;
                        t < o && o <= d ? (e.setAttribute("rowspan", a + i, l), h[n] = -c) : r && u && (h[n] = c)
                    }
                    for (let n = 0; n < i; n++) {
                        const n = e.createElement("tableRow");
                        e.insert(n, t, o);
                        for (let t = 0; t < h.length; t++) {
                            const o = h[t],
                                i = e.createPositionAt(n, "end");
                            o > 0 && Ay(e, i, o > 1 ? {
                                colspan: o
                            } : void 0), t += Math.abs(o) - 1
                        }
                    }
                }))
            }
            insertColumns(t, e = {}) {
                const n = this.editor.model,
                    o = e.at || 0,
                    i = e.columns || 1;
                n.change((e => {
                    const n = t.getAttribute("headingColumns");
                    o < n && e.setAttribute("headingColumns", n + i, t);
                    const r = this.getColumns(t);
                    if (0 === o || r === o) {
                        for (const n of t.getChildren()) n.is("element", "tableRow") && tx(i, e, e.createPositionAt(n, o ? "end" : 0));
                        return
                    }
                    const s = new xy(t, {
                        column: o,
                        includeAllSlots: !0
                    });
                    for (const t of s) {
                        const {
                            row: n,
                            cell: r,
                            cellAnchorColumn: a,
                            cellAnchorRow: c,
                            cellWidth: l,
                            cellHeight: d
                        } = t;
                        if (a < o) {
                            e.setAttribute("colspan", l + i, r);
                            const t = c + d - 1;
                            for (let e = n; e <= t; e++) s.skipRow(e)
                        } else tx(i, e, t.getPositionBefore())
                    }
                }))
            }
            removeRows(t, e) {
                const n = this.editor.model,
                    o = e.rows || 1,
                    i = this.getRows(t),
                    r = e.at,
                    s = r + o - 1;
                if (s > i - 1) throw new A("tableutils-removerows-row-index-out-of-range", this, {
                    table: t,
                    options: e
                });
                n.change((e => {
                    const n = {
                            first: r,
                            last: s
                        },
                        {
                            cellsToMove: o,
                            cellsToTrim: i
                        } = function (t, {
                            first: e,
                            last: n
                        }) {
                            const o = new Map,
                                i = [];
                            for (const {
                                    row: r,
                                    column: s,
                                    cellHeight: a,
                                    cell: c
                                } of new xy(t, {
                                    endRow: n
                                })) {
                                const t = r + a - 1;
                                if (r >= e && r <= n && t > n) {
                                    const t = a - (n - r + 1);
                                    o.set(s, {
                                        cell: c,
                                        rowspan: t
                                    })
                                }
                                if (r < e && t >= e) {
                                    let o;
                                    o = t >= n ? n - e + 1 : t - e + 1, i.push({
                                        cell: c,
                                        rowspan: a - o
                                    })
                                }
                            }
                            return {
                                cellsToMove: o,
                                cellsToTrim: i
                            }
                        }(t, n);
                    if (o.size) {
                        ! function (t, e, n, o) {
                            const i = new xy(t, {
                                    includeAllSlots: !0,
                                    row: e
                                }),
                                r = [...i],
                                s = t.getChild(e);
                            let a;
                            for (const {
                                    column: t,
                                    cell: e,
                                    isAnchor: i
                                } of r)
                                if (n.has(t)) {
                                    const {
                                        cell: e,
                                        rowspan: i
                                    } = n.get(t), r = a ? o.createPositionAfter(a) : o.createPositionAt(s, 0);
                                    o.move(o.createRangeOn(e), r), wy("rowspan", i, e, o), a = e
                                } else i && (a = e)
                        }(t, s + 1, o, e)
                    }
                    for (let n = s; n >= r; n--) e.remove(t.getChild(n));
                    for (const {
                            rowspan: t,
                            cell: n
                        } of i) wy("rowspan", t, n, e);
                    ! function (t, {
                        first: e,
                        last: n
                    }, o) {
                        const i = t.getAttribute("headingRows") || 0;
                        if (e < i) {
                            wy("headingRows", n < i ? i - (n - e + 1) : e, t, o, 0)
                        }
                    }(t, n, e), Vy(t, this) || Uy(t, this)
                }))
            }
            removeColumns(t, e) {
                const n = this.editor.model,
                    o = e.at,
                    i = e.columns || 1,
                    r = e.at + i - 1;
                n.change((e => {
                    ! function (t, e, n) {
                        const o = t.getAttribute("headingColumns") || 0;
                        if (o && e.first < o) {
                            const i = Math.min(o - 1, e.last) - e.first + 1;
                            n.setAttribute("headingColumns", o - i, t)
                        }
                    }(t, {
                        first: o,
                        last: r
                    }, e);
                    for (let n = r; n >= o; n--)
                        for (const {
                                cell: o,
                                column: i,
                                cellWidth: r
                            } of [...new xy(t)]) i <= n && r > 1 && i + r > n ? wy("colspan", r - 1, o, e) : i === n && e.remove(o);
                    Uy(t, this) || Vy(t, this)
                }))
            }
            splitCellVertically(t, e = 2) {
                const n = this.editor.model,
                    o = t.parent.parent,
                    i = parseInt(t.getAttribute("rowspan") || "1"),
                    r = parseInt(t.getAttribute("colspan") || "1");
                n.change((n => {
                    if (r > 1) {
                        const {
                            newCellsSpan: o,
                            updatedSpan: s
                        } = ex(r, e);
                        wy("colspan", s, t, n);
                        const a = {};
                        o > 1 && (a.colspan = o), i > 1 && (a.rowspan = i);
                        tx(r > e ? e - 1 : r - 1, n, n.createPositionAfter(t), a)
                    }
                    if (r < e) {
                        const s = e - r,
                            a = [...new xy(o)],
                            {
                                column: c
                            } = a.find((({
                                cell: e
                            }) => e === t)),
                            l = a.filter((({
                                cell: e,
                                cellWidth: n,
                                column: o
                            }) => e !== t && o === c || o < c && o + n > c));
                        for (const {
                                cell: t,
                                cellWidth: e
                            } of l) n.setAttribute("colspan", e + s, t);
                        const d = {};
                        i > 1 && (d.rowspan = i), tx(s, n, n.createPositionAfter(t), d);
                        const h = o.getAttribute("headingColumns") || 0;
                        h > c && wy("headingColumns", h + s, o, n)
                    }
                }))
            }
            splitCellHorizontally(t, e = 2) {
                const n = this.editor.model,
                    o = t.parent,
                    i = o.parent,
                    r = i.getChildIndex(o),
                    s = parseInt(t.getAttribute("rowspan") || "1"),
                    a = parseInt(t.getAttribute("colspan") || "1");
                n.change((n => {
                    if (s > 1) {
                        const o = [...new xy(i, {
                                startRow: r,
                                endRow: r + s - 1,
                                includeAllSlots: !0
                            })],
                            {
                                newCellsSpan: c,
                                updatedSpan: l
                            } = ex(s, e);
                        wy("rowspan", l, t, n);
                        const {
                            column: d
                        } = o.find((({
                            cell: e
                        }) => e === t)), h = {};
                        c > 1 && (h.rowspan = c), a > 1 && (h.colspan = a);
                        for (const t of o) {
                            const {
                                column: e,
                                row: o
                            } = t;
                            o >= r + l && e === d && (o + r + l) % c == 0 && tx(1, n, t.getPositionBefore(), h)
                        }
                    }
                    if (s < e) {
                        const o = e - s,
                            c = [...new xy(i, {
                                startRow: 0,
                                endRow: r
                            })];
                        for (const {
                                cell: e,
                                cellHeight: i,
                                row: s
                            } of c)
                            if (e !== t && s + i > r) {
                                const t = i + o;
                                n.setAttribute("rowspan", t, e)
                            } const l = {};
                        a > 1 && (l.colspan = a), Xy(n, i, r + 1, o, 1, l);
                        const d = i.getAttribute("headingRows") || 0;
                        d > r && wy("headingRows", d + o, i, n)
                    }
                }))
            }
            getColumns(t) {
                return [...t.getChild(0).getChildren()].reduce(((t, e) => t + parseInt(e.getAttribute("colspan") || "1")), 0)
            }
            getRows(t) {
                return Array.from(t.getChildren()).reduce(((t, e) => e.is("element", "tableRow") ? t + 1 : t), 0)
            }
            createTableWalker(t, e = {}) {
                return new xy(t, e)
            }
            getSelectedTableCells(t) {
                const e = [];
                for (const n of this.sortRanges(t.getRanges())) {
                    const t = n.getContainedElement();
                    t && t.is("element", "tableCell") && e.push(t)
                }
                return e
            }
            getTableCellsContainingSelection(t) {
                const e = [];
                for (const n of t.getRanges()) {
                    const t = n.start.findAncestor("tableCell");
                    t && e.push(t)
                }
                return e
            }
            getSelectionAffectedTableCells(t) {
                const e = this.getSelectedTableCells(t);
                return e.length ? e : this.getTableCellsContainingSelection(t)
            }
            getRowIndexes(t) {
                const e = t.map((t => t.parent.index));
                return this._getFirstLastIndexesObject(e)
            }
            getColumnIndexes(t) {
                const e = t[0].findAncestor("table"),
                    n = [...new xy(e)].filter((e => t.includes(e.cell))).map((t => t.column));
                return this._getFirstLastIndexesObject(n)
            }
            isSelectionRectangular(t) {
                if (t.length < 2 || !this._areCellInTheSameTableSection(t)) return !1;
                const e = new Set,
                    n = new Set;
                let o = 0;
                for (const i of t) {
                    const {
                        row: t,
                        column: r
                    } = this.getCellLocation(i), s = parseInt(i.getAttribute("rowspan")) || 1, a = parseInt(i.getAttribute("colspan")) || 1;
                    e.add(t), n.add(r), s > 1 && e.add(t + s - 1), a > 1 && n.add(r + a - 1), o += s * a
                }
                const i = function (t, e) {
                    const n = Array.from(t.values()),
                        o = Array.from(e.values()),
                        i = Math.max(...n),
                        r = Math.min(...n),
                        s = Math.max(...o),
                        a = Math.min(...o);
                    return (i - r + 1) * (s - a + 1)
                }(e, n);
                return i == o
            }
            sortRanges(t) {
                return Array.from(t).sort(nx)
            }
            _getFirstLastIndexesObject(t) {
                const e = t.sort(((t, e) => t - e));
                return {
                    first: e[0],
                    last: e[e.length - 1]
                }
            }
            _areCellInTheSameTableSection(t) {
                const e = t[0].findAncestor("table"),
                    n = this.getRowIndexes(t),
                    o = parseInt(e.getAttribute("headingRows")) || 0;
                if (!this._areIndexesInSameSection(n, o)) return !1;
                const i = this.getColumnIndexes(t),
                    r = parseInt(e.getAttribute("headingColumns")) || 0;
                return this._areIndexesInSameSection(i, r)
            }
            _areIndexesInSameSection({
                first: t,
                last: e
            }, n) {
                return t < n === e < n
            }
        }

        function Xy(t, e, n, o, i, r = {}) {
            for (let s = 0; s < o; s++) {
                const o = t.createElement("tableRow");
                t.insert(o, e, n), tx(i, t, t.createPositionAt(o, "end"), r)
            }
        }

        function tx(t, e, n, o = {}) {
            for (let i = 0; i < t; i++) Ay(e, n, o)
        }

        function ex(t, e) {
            if (t < e) return {
                newCellsSpan: 1,
                updatedSpan: 1
            };
            const n = Math.floor(t / e);
            return {
                newCellsSpan: n,
                updatedSpan: t - n * e + n
            }
        }

        function nx(t, e) {
            const n = t.start,
                o = e.start;
            return n.isBefore(o) ? -1 : 1
        }
        class ox extends Yr {
            refresh() {
                const t = this.editor.plugins.get(Jy),
                    e = t.getSelectedTableCells(this.editor.model.document.selection);
                this.isEnabled = t.isSelectionRectangular(e)
            }
            execute() {
                const t = this.editor.model,
                    e = this.editor.plugins.get(Jy);
                t.change((n => {
                    const o = e.getSelectedTableCells(t.document.selection),
                        i = o.shift(),
                        {
                            mergeWidth: r,
                            mergeHeight: s
                        } = function (t, e, n) {
                            let o = 0,
                                i = 0;
                            for (const t of e) {
                                const {
                                    row: e,
                                    column: r
                                } = n.getCellLocation(t);
                                o = sx(t, r, o, "colspan"), i = sx(t, e, i, "rowspan")
                            }
                            const {
                                row: r,
                                column: s
                            } = n.getCellLocation(t), a = o - s, c = i - r;
                            return {
                                mergeWidth: a,
                                mergeHeight: c
                            }
                        }(i, o, e);
                    wy("colspan", r, i, n), wy("rowspan", s, i, n);
                    for (const t of o) ix(t, i, n);
                    Hy(i.findAncestor("table"), e), n.setSelection(i, "in")
                }))
            }
        }

        function ix(t, e, n) {
            rx(t) || (rx(e) && n.remove(n.createRangeIn(e)), n.move(n.createRangeIn(t), n.createPositionAt(e, "end"))), n.remove(t)
        }

        function rx(t) {
            const e = t.getChild(0);
            return 1 == t.childCount && e.is("element", "paragraph") && e.isEmpty
        }

        function sx(t, e, n, o) {
            const i = parseInt(t.getAttribute(o) || "1");
            return Math.max(n, e + i)
        }
        class ax extends Yr {
            constructor(t) {
                super(t), this.affectsData = !1
            }
            refresh() {
                const t = this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(this.editor.model.document.selection);
                this.isEnabled = t.length > 0
            }
            execute() {
                const t = this.editor.model,
                    e = this.editor.plugins.get("TableUtils"),
                    n = e.getSelectionAffectedTableCells(t.document.selection),
                    o = e.getRowIndexes(n),
                    i = n[0].findAncestor("table"),
                    r = [];
                for (let e = o.first; e <= o.last; e++)
                    for (const n of i.getChild(e).getChildren()) r.push(t.createRangeOn(n));
                t.change((t => {
                    t.setSelection(r)
                }))
            }
        }
        class cx extends Yr {
            constructor(t) {
                super(t), this.affectsData = !1
            }
            refresh() {
                const t = this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(this.editor.model.document.selection);
                this.isEnabled = t.length > 0
            }
            execute() {
                const t = this.editor.plugins.get("TableUtils"),
                    e = this.editor.model,
                    n = t.getSelectionAffectedTableCells(e.document.selection),
                    o = n[0],
                    i = n.pop(),
                    r = o.findAncestor("table"),
                    s = t.getCellLocation(o),
                    a = t.getCellLocation(i),
                    c = Math.min(s.column, a.column),
                    l = Math.max(s.column, a.column),
                    d = [];
                for (const t of new xy(r, {
                        startColumn: c,
                        endColumn: l
                    })) d.push(e.createRangeOn(t.cell));
                e.change((t => {
                    t.setSelection(d)
                }))
            }
        }

        function lx(t) {
            t.document.registerPostFixer((e => function (t, e) {
                const n = e.document.differ.getChanges();
                let o = !1;
                const i = new Set;
                for (const e of n) {
                    let n = null;
                    "insert" == e.type && "table" == e.name && (n = e.position.nodeAfter), "insert" != e.type && "remove" != e.type || "tableRow" != e.name && "tableCell" != e.name || (n = e.position.findAncestor("table")), ux(e) && (n = e.range.start.findAncestor("table")), n && !i.has(n) && (o = dx(n, t) || o, o = hx(n, t) || o, i.add(n))
                }
                return o
            }(e, t)))
        }

        function dx(t, e) {
            let n = !1;
            const o = function (t) {
                const e = parseInt(t.getAttribute("headingRows") || "0"),
                    n = Array.from(t.getChildren()).reduce(((t, e) => e.is("element", "tableRow") ? t + 1 : t), 0),
                    o = [];
                for (const {
                        row: i,
                        cell: r,
                        cellHeight: s
                    } of new xy(t)) {
                    if (s < 2) continue;
                    const t = i < e ? e : n;
                    if (i + s > t) {
                        const e = t - i;
                        o.push({
                            cell: r,
                            rowspan: e
                        })
                    }
                }
                return o
            }(t);
            if (o.length) {
                n = !0;
                for (const t of o) wy("rowspan", t.rowspan, t.cell, e, 1)
            }
            return n
        }

        function hx(t, e) {
            let n = !1;
            const o = function (t) {
                    const e = new Array(t.childCount).fill(0);
                    for (const {
                            rowIndex: n
                        } of new xy(t, {
                            includeAllSlots: !0
                        })) e[n]++;
                    return e
                }(t),
                i = [];
            for (const [e, n] of o.entries()) !n && t.getChild(e).is("element", "tableRow") && i.push(e);
            if (i.length) {
                n = !0;
                for (const n of i.reverse()) e.remove(t.getChild(n)), o.splice(n, 1)
            }
            const r = o.filter(((e, n) => t.getChild(n).is("element", "tableRow"))),
                s = r[0];
            if (!r.every((t => t === s))) {
                const o = r.reduce(((t, e) => e > t ? e : t), 0);
                for (const [i, s] of r.entries()) {
                    const r = o - s;
                    if (r) {
                        for (let n = 0; n < r; n++) Ay(e, e.createPositionAt(t.getChild(i), "end"));
                        n = !0
                    }
                }
            }
            return n
        }

        function ux(t) {
            if ("attribute" !== t.type) return !1;
            const e = t.attributeKey;
            return "headingRows" === e || "colspan" === e || "rowspan" === e
        }

        function gx(t) {
            t.document.registerPostFixer((e => function (t, e) {
                const n = e.document.differ.getChanges();
                let o = !1;
                for (const e of n) "insert" == e.type && "table" == e.name && (o = px(e.position.nodeAfter, t) || o), "insert" == e.type && "tableRow" == e.name && (o = mx(e.position.nodeAfter, t) || o), "insert" == e.type && "tableCell" == e.name && (o = fx(e.position.nodeAfter, t) || o), "remove" != e.type && "insert" != e.type || !kx(e) || (o = fx(e.position.parent, t) || o);
                return o
            }(e, t)))
        }

        function px(t, e) {
            let n = !1;
            for (const o of t.getChildren()) o.is("element", "tableRow") && (n = mx(o, e) || n);
            return n
        }

        function mx(t, e) {
            let n = !1;
            for (const o of t.getChildren()) n = fx(o, e) || n;
            return n
        }

        function fx(t, e) {
            if (0 == t.childCount) return e.insertElement("paragraph", t), !0;
            const n = Array.from(t.getChildren()).filter((t => t.is("$text")));
            for (const t of n) e.wrap(e.createRangeOn(t), "paragraph");
            return !!n.length
        }

        function kx(t) {
            return !!t.position.parent.is("element", "tableCell") && ("insert" == t.type && "$text" == t.name || "remove" == t.type)
        }

        function bx(t, e) {
            if (!t.is("element", "paragraph")) return !1;
            const n = e.toViewElement(t);
            return !!n && My(t) !== n.is("element", "span")
        }
        var wx = n(3881),
            Ax = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(wx.Z, Ax);
        wx.Z.locals;
        class Cx extends Wr {
            constructor(t) {
                super(t), this._additionalSlots = []
            }
            static get pluginName() {
                return "TableEditing"
            }
            static get requires() {
                return [Jy]
            }
            init() {
                const t = this.editor,
                    e = t.model,
                    n = e.schema,
                    o = t.conversion,
                    i = t.plugins.get(Jy);
                n.register("table", {
                    inheritAllFrom: "$blockObject",
                    allowAttributes: ["headingRows", "headingColumns"]
                }), n.register("tableRow", {
                    allowIn: "table",
                    isLimit: !0
                }), n.register("tableCell", {
                    allowContentOf: "$container",
                    allowIn: "tableRow",
                    allowAttributes: ["colspan", "rowspan"],
                    isLimit: !0,
                    isSelectable: !0
                }), o.for("upcast").add((t => {
                    t.on("element:figure", ((t, e, n) => {
                        if (!n.consumable.test(e.viewItem, {
                                name: !0,
                                classes: "table"
                            })) return;
                        const o = function (t) {
                            for (const e of t.getChildren())
                                if (e.is("element", "table")) return e
                        }(e.viewItem);
                        if (!o || !n.consumable.test(o, {
                                name: !0
                            })) return;
                        n.consumable.consume(e.viewItem, {
                            name: !0,
                            classes: "table"
                        });
                        const i = Ii(n.convertItem(o, e.modelCursor).modelRange.getItems());
                        i ? (n.convertChildren(e.viewItem, n.writer.createPositionAt(i, "end")), n.updateConversionResult(i, e)) : n.consumable.revert(e.viewItem, {
                            name: !0,
                            classes: "table"
                        })
                    }))
                })), o.for("upcast").add(_y()), o.for("editingDowncast").elementToStructure({
                    model: {
                        name: "table",
                        attributes: ["headingRows"]
                    },
                    view: Dy(i, {
                        asWidget: !0,
                        additionalSlots: this._additionalSlots
                    })
                }), o.for("dataDowncast").elementToStructure({
                    model: {
                        name: "table",
                        attributes: ["headingRows"]
                    },
                    view: Dy(i, {
                        additionalSlots: this._additionalSlots
                    })
                }), o.for("upcast").elementToElement({
                    model: "tableRow",
                    view: "tr"
                }), o.for("upcast").add((t => {
                    t.on("element:tr", ((t, e) => {
                        e.viewItem.isEmpty && 0 == e.modelCursor.index && t.stop()
                    }), {
                        priority: "high"
                    })
                })), o.for("downcast").elementToElement({
                    model: "tableRow",
                    view: (t, {
                        writer: e
                    }) => t.isEmpty ? e.createEmptyElement("tr") : e.createContainerElement("tr")
                }), o.for("upcast").elementToElement({
                    model: "tableCell",
                    view: "td"
                }), o.for("upcast").elementToElement({
                    model: "tableCell",
                    view: "th"
                }), o.for("upcast").add(vy("td")), o.for("upcast").add(vy("th")), o.for("editingDowncast").elementToElement({
                    model: "tableCell",
                    view: Sy({
                        asWidget: !0
                    })
                }), o.for("dataDowncast").elementToElement({
                    model: "tableCell",
                    view: Sy()
                }), o.for("editingDowncast").elementToElement({
                    model: "paragraph",
                    view: Iy({
                        asWidget: !0
                    }),
                    converterPriority: "high"
                }), o.for("dataDowncast").elementToElement({
                    model: "paragraph",
                    view: Iy(),
                    converterPriority: "high"
                }), o.for("downcast").attributeToAttribute({
                    model: "colspan",
                    view: "colspan"
                }), o.for("upcast").attributeToAttribute({
                    model: {
                        key: "colspan",
                        value: _x("colspan")
                    },
                    view: "colspan"
                }), o.for("downcast").attributeToAttribute({
                    model: "rowspan",
                    view: "rowspan"
                }), o.for("upcast").attributeToAttribute({
                    model: {
                        key: "rowspan",
                        value: _x("rowspan")
                    },
                    view: "rowspan"
                }), t.config.define("table.defaultHeadings.rows", 0), t.config.define("table.defaultHeadings.columns", 0), t.commands.add("insertTable", new Ty(t)), t.commands.add("insertTableRowAbove", new By(t, {
                    order: "above"
                })), t.commands.add("insertTableRowBelow", new By(t, {
                    order: "below"
                })), t.commands.add("insertTableColumnLeft", new Ny(t, {
                    order: "left"
                })), t.commands.add("insertTableColumnRight", new Ny(t, {
                    order: "right"
                })), t.commands.add("removeTableRow", new Yy(t)), t.commands.add("removeTableColumn", new $y(t)), t.commands.add("splitTableCellVertically", new Py(t, {
                    direction: "vertically"
                })), t.commands.add("splitTableCellHorizontally", new Py(t, {
                    direction: "horizontally"
                })), t.commands.add("mergeTableCells", new ox(t)), t.commands.add("mergeTableCellRight", new Wy(t, {
                    direction: "right"
                })), t.commands.add("mergeTableCellLeft", new Wy(t, {
                    direction: "left"
                })), t.commands.add("mergeTableCellDown", new Wy(t, {
                    direction: "down"
                })), t.commands.add("mergeTableCellUp", new Wy(t, {
                    direction: "up"
                })), t.commands.add("setTableColumnHeader", new Qy(t)), t.commands.add("setTableRowHeader", new Zy(t)), t.commands.add("selectTableRow", new ax(t)), t.commands.add("selectTableColumn", new cx(t)), lx(e), gx(e), this.listenTo(e.document, "change:data", (() => {
                    ! function (t, e) {
                        const n = t.document.differ;
                        for (const t of n.getChanges()) {
                            let n, o = !1;
                            if ("attribute" == t.type) {
                                const e = t.range.start.nodeAfter;
                                if (!e || !e.is("element", "table")) continue;
                                if ("headingRows" != t.attributeKey && "headingColumns" != t.attributeKey) continue;
                                n = e, o = "headingRows" == t.attributeKey
                            } else "tableRow" != t.name && "tableCell" != t.name || (n = t.position.findAncestor("table"), o = "tableRow" == t.name);
                            if (!n) continue;
                            const i = n.getAttribute("headingRows") || 0,
                                r = n.getAttribute("headingColumns") || 0,
                                s = new xy(n);
                            for (const t of s) {
                                const n = t.row < i || t.column < r ? "th" : "td",
                                    s = e.mapper.toViewElement(t.cell);
                                s && s.is("element") && s.name != n && e.reconvertItem(o ? t.cell.parent : t.cell)
                            }
                        }
                    }(e, t.editing),
                    function (t, e) {
                        const n = t.document.differ,
                            o = new Set;
                        for (const t of n.getChanges()) {
                            const e = "attribute" == t.type ? t.range.start.parent : t.position.parent;
                            e.is("element", "tableCell") && o.add(e)
                        }
                        for (const t of o.values()) {
                            const n = Array.from(t.getChildren()).filter((t => bx(t, e.mapper)));
                            for (const t of n) e.reconvertItem(t)
                        }
                    }(e, t.editing)
                }))
            }
            registerAdditionalSlot(t) {
                this._additionalSlots.push(t)
            }
        }

        function _x(t) {
            return e => {
                const n = parseInt(e.getAttribute(t));
                return Number.isNaN(n) || n <= 0 ? null : n
            }
        }
        var vx = n(1613),
            yx = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(vx.Z, yx);
        vx.Z.locals;
        class xx extends Hi {
            constructor(t) {
                super(t);
                const e = this.bindTemplate;
                this.items = this._createGridCollection(), this.keystrokes = new Ti, this.focusTracker = new Mi, this.set("rows", 0), this.set("columns", 0), this.bind("label").to(this, "columns", this, "rows", ((t, e) => `${e} × ${t}`)), this.setTemplate({
                    tag: "div",
                    attributes: {
                        class: ["ck"]
                    },
                    children: [{
                        tag: "div",
                        attributes: {
                            class: ["ck-insert-table-dropdown__grid"]
                        },
                        on: {
                            "mouseover@.ck-insert-table-dropdown-grid-box": e.to("boxover")
                        },
                        children: this.items
                    }, {
                        tag: "div",
                        attributes: {
                            class: ["ck", "ck-insert-table-dropdown__label"],
                            "aria-hidden": !0
                        },
                        children: [{
                            text: e.to("label")
                        }]
                    }],
                    on: {
                        mousedown: e.to((t => {
                            t.preventDefault()
                        })),
                        click: e.to((() => {
                            this.fire("execute")
                        }))
                    }
                }), this.on("boxover", ((t, e) => {
                    const {
                        row: n,
                        column: o
                    } = e.target.dataset;
                    this.items.get(10 * (parseInt(n, 10) - 1) + (parseInt(o, 10) - 1)).focus()
                })), this.focusTracker.on("change:focusedElement", ((t, e, n) => {
                    if (!n) return;
                    const {
                        row: o,
                        column: i
                    } = n.dataset;
                    this.set({
                        rows: parseInt(o),
                        columns: parseInt(i)
                    })
                })), this.on("change:columns", (() => this._highlightGridBoxes())), this.on("change:rows", (() => this._highlightGridBoxes()))
            }
            render() {
                super.render(),
                    function ({
                        keystrokeHandler: t,
                        focusTracker: e,
                        gridItems: n,
                        numberOfColumns: o,
                        uiLanguageDirection: i
                    }) {
                        const r = "number" == typeof o ? () => o : o;

                        function s(t) {
                            return o => {
                                const i = n.find((t => t.element === e.focusedElement)),
                                    r = n.getIndex(i),
                                    s = t(r, n);
                                n.get(s).focus(), o.stopPropagation(), o.preventDefault()
                            }
                        }

                        function a(t, e) {
                            return t === e - 1 ? 0 : t + 1
                        }

                        function c(t, e) {
                            return 0 === t ? e - 1 : t - 1
                        }
                        t.set("arrowright", s(((t, e) => "rtl" === i ? c(t, e.length) : a(t, e.length)))), t.set("arrowleft", s(((t, e) => "rtl" === i ? a(t, e.length) : c(t, e.length)))), t.set("arrowup", s(((t, e) => {
                            let n = t - r();
                            return n < 0 && (n = t + r() * Math.floor(e.length / r()), n > e.length - 1 && (n -= r())), n
                        }))), t.set("arrowdown", s(((t, e) => {
                            let n = t + r();
                            return n > e.length - 1 && (n = t % r()), n
                        })))
                    }({
                        keystrokeHandler: this.keystrokes,
                        focusTracker: this.focusTracker,
                        gridItems: this.items,
                        numberOfColumns: 10,
                        uiLanguageDirection: this.locale && this.locale.uiLanguageDirection
                    });
                for (const t of this.items) this.focusTracker.add(t.element);
                this.keystrokes.listenTo(this.element)
            }
            focus() {
                this.items.get(0).focus()
            }
            focusLast() {
                this.items.get(0).focus()
            }
            _highlightGridBoxes() {
                const t = this.rows,
                    e = this.columns;
                this.items.map(((n, o) => {
                    const i = Math.floor(o / 10) < t && o % 10 < e;
                    n.set("isOn", i)
                }))
            }
            _createGridButton(t, e, n, o) {
                const i = new br(t);
                return i.set({
                    label: o,
                    class: "ck-insert-table-dropdown-grid-box"
                }), i.extendTemplate({
                    attributes: {
                        "data-row": e,
                        "data-column": n
                    }
                }), i
            }
            _createGridCollection() {
                const t = [];
                for (let e = 0; e < 100; e++) {
                    const n = Math.floor(e / 10),
                        o = e % 10,
                        i = `${n+1} × ${o+1}`;
                    t.push(this._createGridButton(this.locale, n + 1, o + 1, i))
                }
                return this.createCollection(t)
            }
        }
        class Ex extends Wr {
            static get pluginName() {
                return "TableUI"
            }
            init() {
                const t = this.editor,
                    e = this.editor.t,
                    n = "ltr" === t.locale.contentLanguageDirection;
                t.ui.componentFactory.add("insertTable", (n => {
                    const o = t.commands.get("insertTable"),
                        i = Zg(n);
                    let r;
                    return i.bind("isEnabled").to(o), i.buttonView.set({
                        icon: '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M3 6v3h4V6H3zm0 4v3h4v-3H3zm0 4v3h4v-3H3zm5 3h4v-3H8v3zm5 0h4v-3h-4v3zm4-4v-3h-4v3h4zm0-4V6h-4v3h4zm1.5 8a1.5 1.5 0 0 1-1.5 1.5H3A1.5 1.5 0 0 1 1.5 17V4c.222-.863 1.068-1.5 2-1.5h13c.932 0 1.778.637 2 1.5v13zM12 13v-3H8v3h4zm0-4V6H8v3h4z"/></svg>',
                        label: e("Insert table"),
                        tooltip: !0
                    }), i.on("change:isOpen", (() => {
                        r || (r = new xx(n), i.panelView.children.add(r), r.delegate("execute").to(i), i.on("execute", (() => {
                            t.execute("insertTable", {
                                rows: r.rows,
                                columns: r.columns
                            }), t.editing.view.focus()
                        })))
                    })), i
                })), t.ui.componentFactory.add("tableColumn", (t => {
                    const o = [{
                        type: "switchbutton",
                        model: {
                            commandName: "setTableColumnHeader",
                            label: e("Header column"),
                            bindIsOn: !0
                        }
                    }, {
                        type: "separator"
                    }, {
                        type: "button",
                        model: {
                            commandName: n ? "insertTableColumnLeft" : "insertTableColumnRight",
                            label: e("Insert column left")
                        }
                    }, {
                        type: "button",
                        model: {
                            commandName: n ? "insertTableColumnRight" : "insertTableColumnLeft",
                            label: e("Insert column right")
                        }
                    }, {
                        type: "button",
                        model: {
                            commandName: "removeTableColumn",
                            label: e("Delete column")
                        }
                    }, {
                        type: "button",
                        model: {
                            commandName: "selectTableColumn",
                            label: e("Select column")
                        }
                    }];
                    return this._prepareDropdown(e("Column"), '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2.5 1h15A1.5 1.5 0 0 1 19 2.5v15a1.5 1.5 0 0 1-1.5 1.5h-15A1.5 1.5 0 0 1 1 17.5v-15A1.5 1.5 0 0 1 2.5 1zM2 2v16h16V2H2z" opacity=".6"/><path d="M18 7v1H2V7h16zm0 5v1H2v-1h16z" opacity=".6"/><path d="M14 1v18a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V1a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1zm-2 1H8v4h4V2zm0 6H8v4h4V8zm0 6H8v4h4v-4z"/></svg>', o, t)
                })), t.ui.componentFactory.add("tableRow", (t => {
                    const n = [{
                        type: "switchbutton",
                        model: {
                            commandName: "setTableRowHeader",
                            label: e("Header row"),
                            bindIsOn: !0
                        }
                    }, {
                        type: "separator"
                    }, {
                        type: "button",
                        model: {
                            commandName: "insertTableRowAbove",
                            label: e("Insert row above")
                        }
                    }, {
                        type: "button",
                        model: {
                            commandName: "insertTableRowBelow",
                            label: e("Insert row below")
                        }
                    }, {
                        type: "button",
                        model: {
                            commandName: "removeTableRow",
                            label: e("Delete row")
                        }
                    }, {
                        type: "button",
                        model: {
                            commandName: "selectTableRow",
                            label: e("Select row")
                        }
                    }];
                    return this._prepareDropdown(e("Row"), '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2.5 1h15A1.5 1.5 0 0 1 19 2.5v15a1.5 1.5 0 0 1-1.5 1.5h-15A1.5 1.5 0 0 1 1 17.5v-15A1.5 1.5 0 0 1 2.5 1zM2 2v16h16V2H2z" opacity=".6"/><path d="M7 2h1v16H7V2zm5 0h1v16h-1V2z" opacity=".6"/><path d="M1 6h18a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1zm1 2v4h4V8H2zm6 0v4h4V8H8zm6 0v4h4V8h-4z"/></svg>', n, t)
                })), t.ui.componentFactory.add("mergeTableCells", (t => {
                    const o = [{
                        type: "button",
                        model: {
                            commandName: "mergeTableCellUp",
                            label: e("Merge cell up")
                        }
                    }, {
                        type: "button",
                        model: {
                            commandName: n ? "mergeTableCellRight" : "mergeTableCellLeft",
                            label: e("Merge cell right")
                        }
                    }, {
                        type: "button",
                        model: {
                            commandName: "mergeTableCellDown",
                            label: e("Merge cell down")
                        }
                    }, {
                        type: "button",
                        model: {
                            commandName: n ? "mergeTableCellLeft" : "mergeTableCellRight",
                            label: e("Merge cell left")
                        }
                    }, {
                        type: "separator"
                    }, {
                        type: "button",
                        model: {
                            commandName: "splitTableCellVertically",
                            label: e("Split cell vertically")
                        }
                    }, {
                        type: "button",
                        model: {
                            commandName: "splitTableCellHorizontally",
                            label: e("Split cell horizontally")
                        }
                    }];
                    return this._prepareMergeSplitButtonDropdown(e("Merge cells"), '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2.5 1h15A1.5 1.5 0 0 1 19 2.5v15a1.5 1.5 0 0 1-1.5 1.5h-15A1.5 1.5 0 0 1 1 17.5v-15A1.5 1.5 0 0 1 2.5 1zM2 2v16h16V2H2z" opacity=".6"/><path d="M7 2h1v16H7V2zm5 0h1v7h-1V2zm6 5v1H2V7h16zM8 12v1H2v-1h6z" opacity=".6"/><path d="M7 7h12a1 1 0 0 1 1 1v11a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V8a1 1 0 0 1 1-1zm1 2v9h10V9H8z"/></svg>', o, t)
                }))
            }
            _prepareDropdown(t, e, n, o) {
                const i = this.editor,
                    r = Zg(o),
                    s = this._fillDropdownWithListOptions(r, n);
                return r.buttonView.set({
                    label: t,
                    icon: e,
                    tooltip: !0
                }), r.bind("isEnabled").toMany(s, "isEnabled", ((...t) => t.some((t => t)))), this.listenTo(r, "execute", (t => {
                    i.execute(t.source.commandName), t.source instanceof Cr || i.editing.view.focus()
                })), r
            }
            _prepareMergeSplitButtonDropdown(t, e, n, o) {
                const i = this.editor,
                    r = Zg(o, qg),
                    s = "mergeTableCells",
                    a = i.commands.get(s),
                    c = this._fillDropdownWithListOptions(r, n);
                return r.buttonView.set({
                    label: t,
                    icon: e,
                    tooltip: !0,
                    isEnabled: !0
                }), r.bind("isEnabled").toMany([a, ...c], "isEnabled", ((...t) => t.some((t => t)))), this.listenTo(r.buttonView, "execute", (() => {
                    i.execute(s), i.editing.view.focus()
                })), this.listenTo(r, "execute", (t => {
                    i.execute(t.source.commandName), i.editing.view.focus()
                })), r
            }
            _fillDropdownWithListOptions(t, e) {
                const n = this.editor,
                    o = [],
                    i = new Si;
                for (const t of e) Dx(t, n, o, i);
                return Xg(t, i), o
            }
        }

        function Dx(t, e, n, o) {
            if ("button" === t.type || "switchbutton" === t.type) {
                const o = t.model = new zm(t.model),
                    {
                        commandName: i,
                        bindIsOn: r
                    } = t.model,
                    s = e.commands.get(i);
                n.push(s), o.set({
                    commandName: i
                }), o.bind("isEnabled").to(s), r && o.bind("isOn").to(s, "value"), o.set({
                    withText: !0
                })
            }
            o.add(t)
        }
        var Sx = n(6945),
            Ix = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(Sx.Z, Ix);
        Sx.Z.locals;
        class Mx extends Wr {
            static get pluginName() {
                return "TableSelection"
            }
            static get requires() {
                return [Jy, Jy]
            }
            init() {
                const t = this.editor,
                    e = t.model,
                    n = t.editing.view;
                this.listenTo(e, "deleteContent", ((t, e) => this._handleDeleteContent(t, e)), {
                    priority: "high"
                }), this.listenTo(n.document, "insertText", ((t, e) => this._handleInsertTextEvent(t, e)), {
                    priority: "high"
                }), this._defineSelectionConverter(), this._enablePluginDisabling()
            }
            getSelectedTableCells() {
                const t = this.editor.plugins.get(Jy),
                    e = this.editor.model.document.selection,
                    n = t.getSelectedTableCells(e);
                return 0 == n.length ? null : n
            }
            getSelectionAsFragment() {
                const t = this.editor.plugins.get(Jy),
                    e = this.getSelectedTableCells();
                return e ? this.editor.model.change((n => {
                    const o = n.createDocumentFragment(),
                        {
                            first: i,
                            last: r
                        } = t.getColumnIndexes(e),
                        {
                            first: s,
                            last: a
                        } = t.getRowIndexes(e),
                        c = e[0].findAncestor("table");
                    let l = a,
                        d = r;
                    if (t.isSelectionRectangular(e)) {
                        const t = {
                            firstColumn: i,
                            lastColumn: r,
                            firstRow: s,
                            lastRow: a
                        };
                        l = Gy(c, t), d = qy(c, t)
                    }
                    const h = zy(c, {
                        startRow: s,
                        startColumn: i,
                        endRow: l,
                        endColumn: d
                    }, n);
                    return n.insert(h, o, 0), o
                })) : null
            }
            setCellSelection(t, e) {
                const n = this._getCellsToSelect(t, e);
                this.editor.model.change((t => {
                    t.setSelection(n.cells.map((e => t.createRangeOn(e))), {
                        backward: n.backward
                    })
                }))
            }
            getFocusCell() {
                const t = [...this.editor.model.document.selection.getRanges()].pop().getContainedElement();
                return t && t.is("element", "tableCell") ? t : null
            }
            getAnchorCell() {
                const t = Ii(this.editor.model.document.selection.getRanges()).getContainedElement();
                return t && t.is("element", "tableCell") ? t : null
            }
            _defineSelectionConverter() {
                const t = this.editor,
                    e = new Set;
                t.conversion.for("editingDowncast").add((t => t.on("selection", ((t, n, o) => {
                    const i = o.writer;
                    ! function (t) {
                        for (const n of e) t.removeClass("ck-editor__editable_selected", n);
                        e.clear()
                    }(i);
                    const r = this.getSelectedTableCells();
                    if (!r) return;
                    for (const t of r) {
                        const n = o.mapper.toViewElement(t);
                        i.addClass("ck-editor__editable_selected", n), e.add(n)
                    }
                    const s = o.mapper.toViewElement(r[r.length - 1]);
                    i.setSelection(s, 0)
                }), {
                    priority: "lowest"
                })))
            }
            _enablePluginDisabling() {
                const t = this.editor;
                this.on("change:isEnabled", (() => {
                    if (!this.isEnabled) {
                        const e = this.getSelectedTableCells();
                        if (!e) return;
                        t.model.change((n => {
                            const o = n.createPositionAt(e[0], 0),
                                i = t.model.schema.getNearestSelectionRange(o);
                            n.setSelection(i)
                        }))
                    }
                }))
            }
            _handleDeleteContent(t, e) {
                const n = this.editor.plugins.get(Jy),
                    o = e[0],
                    i = e[1],
                    r = this.editor.model,
                    s = !i || "backward" == i.direction,
                    a = n.getSelectedTableCells(o);
                a.length && (t.stop(), r.change((t => {
                    const e = a[s ? a.length - 1 : 0];
                    r.change((t => {
                        for (const e of a) r.deleteContent(t.createSelection(e, "in"))
                    }));
                    const n = r.schema.getNearestSelectionRange(t.createPositionAt(e, 0));
                    o.is("documentSelection") ? t.setSelection(n) : o.setTo(n)
                })))
            }
            _handleInsertTextEvent(t, e) {
                const n = this.editor,
                    o = this.getSelectedTableCells();
                if (!o) return;
                const i = n.editing.view,
                    r = n.editing.mapper,
                    s = o.map((t => i.createRangeOn(r.toViewElement(t))));
                e.selection = i.createSelection(s)
            }
            _getCellsToSelect(t, e) {
                const n = this.editor.plugins.get("TableUtils"),
                    o = n.getCellLocation(t),
                    i = n.getCellLocation(e),
                    r = Math.min(o.row, i.row),
                    s = Math.max(o.row, i.row),
                    a = Math.min(o.column, i.column),
                    c = Math.max(o.column, i.column),
                    l = new Array(s - r + 1).fill(null).map((() => [])),
                    d = {
                        startRow: r,
                        endRow: s,
                        startColumn: a,
                        endColumn: c
                    };
                for (const {
                        row: e,
                        cell: n
                    } of new xy(t.findAncestor("table"), d)) l[e - r].push(n);
                const h = i.row < o.row,
                    u = i.column < o.column;
                return h && l.reverse(), u && l.forEach((t => t.reverse())), {
                    cells: l.flat(),
                    backward: h || u
                }
            }
        }
        class Tx extends Wr {
            static get pluginName() {
                return "TableClipboard"
            }
            static get requires() {
                return [Mx, Jy]
            }
            init() {
                const t = this.editor,
                    e = t.editing.view.document;
                this.listenTo(e, "copy", ((t, e) => this._onCopyCut(t, e))), this.listenTo(e, "cut", ((t, e) => this._onCopyCut(t, e))), this.listenTo(t.model, "insertContent", ((t, [e, n]) => this._onInsertContent(t, e, n)), {
                    priority: "high"
                }), this.decorate("_replaceTableSlotCell")
            }
            _onCopyCut(t, e) {
                const n = this.editor.plugins.get(Mx);
                if (!n.getSelectedTableCells()) return;
                if ("cut" == t.name && !this.editor.model.canEditAt(this.editor.model.document.selection)) return;
                e.preventDefault(), t.stop();
                const o = this.editor.data,
                    i = this.editor.editing.view.document,
                    r = o.toView(n.getSelectionAsFragment());
                i.fire("clipboardOutput", {
                    dataTransfer: e.dataTransfer,
                    content: r,
                    method: t.name
                })
            }
            _onInsertContent(t, e, n) {
                if (n && !n.is("documentSelection")) return;
                const o = this.editor.model,
                    i = this.editor.plugins.get(Jy);
                let r = this.getTableIfOnlyTableInContent(e, o);
                if (!r) return;
                const s = i.getSelectionAffectedTableCells(o.document.selection);
                s.length ? (t.stop(), o.change((t => {
                    const e = {
                            width: i.getColumns(r),
                            height: i.getRows(r)
                        },
                        n = function (t, e, n, o) {
                            const i = t[0].findAncestor("table"),
                                r = o.getColumnIndexes(t),
                                s = o.getRowIndexes(t),
                                a = {
                                    firstColumn: r.first,
                                    lastColumn: r.last,
                                    firstRow: s.first,
                                    lastRow: s.last
                                },
                                c = 1 === t.length;
                            c && (a.lastRow += e.height - 1, a.lastColumn += e.width - 1, function (t, e, n, o) {
                                const i = o.getColumns(t),
                                    r = o.getRows(t);
                                n > i && o.insertColumns(t, {
                                    at: i,
                                    columns: n - i
                                });
                                e > r && o.insertRows(t, {
                                    at: r,
                                    rows: e - r
                                })
                            }(i, a.lastRow + 1, a.lastColumn + 1, o));
                            c || !o.isSelectionRectangular(t) ? function (t, e, n) {
                                const {
                                    firstRow: o,
                                    lastRow: i,
                                    firstColumn: r,
                                    lastColumn: s
                                } = e, a = {
                                    first: o,
                                    last: i
                                }, c = {
                                    first: r,
                                    last: s
                                };
                                Nx(t, r, a, n), Nx(t, s + 1, a, n), Bx(t, o, c, n), Bx(t, i + 1, c, n, o)
                            }(i, a, n) : (a.lastRow = Gy(i, a), a.lastColumn = qy(i, a));
                            return a
                        }(s, e, t, i),
                        o = n.lastRow - n.firstRow + 1,
                        a = n.lastColumn - n.firstColumn + 1,
                        c = {
                            startRow: 0,
                            startColumn: 0,
                            endRow: Math.min(o, e.height) - 1,
                            endColumn: Math.min(a, e.width) - 1
                        };
                    r = zy(r, c, t);
                    const l = s[0].findAncestor("table"),
                        d = this._replaceSelectedCellsWithPasted(r, e, l, n, t);
                    if (this.editor.plugins.get("TableSelection").isEnabled) {
                        const e = i.sortRanges(d.map((e => t.createRangeOn(e))));
                        t.setSelection(e)
                    } else t.setSelection(d[0], 0)
                }))) : Hy(r, i)
            }
            _replaceSelectedCellsWithPasted(t, e, n, o, i) {
                const {
                    width: r,
                    height: s
                } = e, a = function (t, e, n) {
                    const o = new Array(n).fill(null).map((() => new Array(e).fill(null)));
                    for (const {
                            column: e,
                            row: n,
                            cell: i
                        } of new xy(t)) o[n][e] = i;
                    return o
                }(t, r, s), c = [...new xy(n, {
                    startRow: o.firstRow,
                    endRow: o.lastRow,
                    startColumn: o.firstColumn,
                    endColumn: o.lastColumn,
                    includeAllSlots: !0
                })], l = [];
                let d;
                for (const t of c) {
                    const {
                        row: e,
                        column: n
                    } = t;
                    n === o.firstColumn && (d = t.getPositionBefore());
                    const c = e - o.firstRow,
                        h = n - o.firstColumn,
                        u = a[c % s][h % r],
                        g = u ? i.cloneElement(u) : null,
                        p = this._replaceTableSlotCell(t, g, d, i);
                    p && (Fy(p, e, n, o.lastRow, o.lastColumn, i), l.push(p), d = i.createPositionAfter(p))
                }
                const h = parseInt(n.getAttribute("headingRows") || "0"),
                    u = parseInt(n.getAttribute("headingColumns") || "0"),
                    g = o.firstRow < h && h <= o.lastRow,
                    p = o.firstColumn < u && u <= o.lastColumn;
                if (g) {
                    const t = Bx(n, h, {
                        first: o.firstColumn,
                        last: o.lastColumn
                    }, i, o.firstRow);
                    l.push(...t)
                }
                if (p) {
                    const t = Nx(n, u, {
                        first: o.firstRow,
                        last: o.lastRow
                    }, i);
                    l.push(...t)
                }
                return l
            }
            _replaceTableSlotCell(t, e, n, o) {
                const {
                    cell: i,
                    isAnchor: r
                } = t;
                return r && o.remove(i), e ? (o.insert(e, n), e) : null
            }
            getTableIfOnlyTableInContent(t, e) {
                if (!t.is("documentFragment") && !t.is("element")) return null;
                if (t.is("element", "table")) return t;
                if (1 == t.childCount && t.getChild(0).is("element", "table")) return t.getChild(0);
                const n = e.createRangeIn(t);
                for (const t of n.getItems())
                    if (t.is("element", "table")) {
                        const o = e.createRange(n.start, e.createPositionBefore(t));
                        if (e.hasContent(o, {
                                ignoreWhitespaces: !0
                            })) return null;
                        const i = e.createRange(e.createPositionAfter(t), n.end);
                        return e.hasContent(i, {
                            ignoreWhitespaces: !0
                        }) ? null : t
                    } return null
            }
        }

        function Bx(t, e, n, o, i = 0) {
            if (e < 1) return;
            return Oy(t, e, i).filter((({
                column: t,
                cellWidth: e
            }) => Px(t, e, n))).map((({
                cell: t
            }) => Ly(t, e, o)))
        }

        function Nx(t, e, n, o) {
            if (e < 1) return;
            return jy(t, e).filter((({
                row: t,
                cellHeight: e
            }) => Px(t, e, n))).map((({
                cell: t,
                column: n
            }) => Ry(t, n, e, o)))
        }

        function Px(t, e, n) {
            const o = t + e - 1,
                {
                    first: i,
                    last: r
                } = n;
            return t >= i && t <= r || t < i && o >= i
        }
        class zx extends Wr {
            static get pluginName() {
                return "TableKeyboard"
            }
            static get requires() {
                return [Mx, Jy]
            }
            init() {
                const t = this.editor.editing.view.document;
                this.listenTo(t, "arrowKey", ((...t) => this._onArrowKey(...t)), {
                    context: "table"
                }), this.listenTo(t, "tab", ((...t) => this._handleTabOnSelectedTable(...t)), {
                    context: "figure"
                }), this.listenTo(t, "tab", ((...t) => this._handleTab(...t)), {
                    context: ["th", "td"]
                })
            }
            _handleTabOnSelectedTable(t, e) {
                const n = this.editor,
                    o = n.model.document.selection.getSelectedElement();
                o && o.is("element", "table") && (e.preventDefault(), e.stopPropagation(), t.stop(), n.model.change((t => {
                    t.setSelection(t.createRangeIn(o.getChild(0).getChild(0)))
                })))
            }
            _handleTab(t, e) {
                const n = this.editor,
                    o = this.editor.plugins.get(Jy),
                    i = this.editor.plugins.get("TableSelection"),
                    r = n.model.document.selection,
                    s = !e.shiftKey;
                let a = o.getTableCellsContainingSelection(r)[0];
                if (a || (a = i.getFocusCell()), !a) return;
                e.preventDefault(), e.stopPropagation(), t.stop();
                const c = a.parent,
                    l = c.parent,
                    d = l.getChildIndex(c),
                    h = c.getChildIndex(a),
                    u = 0 === h;
                if (!s && u && 0 === d) return void n.model.change((t => {
                    t.setSelection(t.createRangeOn(l))
                }));
                const g = h === c.childCount - 1,
                    p = d === o.getRows(l) - 1;
                if (s && p && g && (n.execute("insertTableRowBelow"), d === o.getRows(l) - 1)) return void n.model.change((t => {
                    t.setSelection(t.createRangeOn(l))
                }));
                let m;
                if (s && g) {
                    const t = l.getChild(d + 1);
                    m = t.getChild(0)
                } else if (!s && u) {
                    const t = l.getChild(d - 1);
                    m = t.getChild(t.childCount - 1)
                } else m = c.getChild(h + (s ? 1 : -1));
                n.model.change((t => {
                    t.setSelection(t.createRangeIn(m))
                }))
            }
            _onArrowKey(t, e) {
                const n = this.editor,
                    o = _i(e.keyCode, n.locale.contentLanguageDirection);
                this._handleArrowKeys(o, e.shiftKey) && (e.preventDefault(), e.stopPropagation(), t.stop())
            }
            _handleArrowKeys(t, e) {
                const n = this.editor.plugins.get(Jy),
                    o = this.editor.plugins.get("TableSelection"),
                    i = this.editor.model,
                    r = i.document.selection,
                    s = ["right", "down"].includes(t),
                    a = n.getSelectedTableCells(r);
                if (a.length) {
                    let n;
                    return n = e ? o.getFocusCell() : s ? a[a.length - 1] : a[0], this._navigateFromCellInDirection(n, t, e), !0
                }
                const c = r.focus.findAncestor("tableCell");
                if (!c) return !1;
                if (!r.isCollapsed)
                    if (e) {
                        if (r.isBackward == s && !r.containsEntireContent(c)) return !1
                    } else {
                        const t = r.getSelectedElement();
                        if (!t || !i.schema.isObject(t)) return !1
                    } return !!this._isSelectionAtCellEdge(r, c, s) && (this._navigateFromCellInDirection(c, t, e), !0)
            }
            _isSelectionAtCellEdge(t, e, n) {
                const o = this.editor.model,
                    i = this.editor.model.schema,
                    r = n ? t.getLastPosition() : t.getFirstPosition();
                if (!i.getLimitElement(r).is("element", "tableCell")) {
                    return o.createPositionAt(e, n ? "end" : 0).isTouching(r)
                }
                const s = o.createSelection(r);
                return o.modifySelection(s, {
                    direction: n ? "forward" : "backward"
                }), r.isEqual(s.focus)
            }
            _navigateFromCellInDirection(t, e, n = !1) {
                const o = this.editor.model,
                    i = t.findAncestor("table"),
                    r = [...new xy(i, {
                        includeAllSlots: !0
                    })],
                    {
                        row: s,
                        column: a
                    } = r[r.length - 1],
                    c = r.find((({
                        cell: e
                    }) => e == t));
                let {
                    row: l,
                    column: d
                } = c;
                switch (e) {
                    case "left":
                        d--;
                        break;
                    case "up":
                        l--;
                        break;
                    case "right":
                        d += c.cellWidth;
                        break;
                    case "down":
                        l += c.cellHeight
                }
                if (l < 0 || l > s || d < 0 && l <= 0 || d > a && l >= s) return void o.change((t => {
                    t.setSelection(t.createRangeOn(i))
                }));
                d < 0 ? (d = n ? 0 : a, l--) : d > a && (d = n ? a : 0, l++);
                const h = r.find((t => t.row == l && t.column == d)).cell,
                    u = ["right", "down"].includes(e),
                    g = this.editor.plugins.get("TableSelection");
                if (n && g.isEnabled) {
                    const e = g.getAnchorCell() || t;
                    g.setCellSelection(e, h)
                } else {
                    const t = o.createPositionAt(h, u ? 0 : "end");
                    o.change((e => {
                        e.setSelection(t)
                    }))
                }
            }
        }
        class Ox extends Pc {
            constructor() {
                super(...arguments), this.domEventType = ["mousemove", "mouseleave"]
            }
            onDomEvent(t) {
                this.fire(t.type, t)
            }
        }
        class Lx extends Wr {
            static get pluginName() {
                return "TableMouse"
            }
            static get requires() {
                return [Mx, Jy]
            }
            init() {
                this.editor.editing.view.addObserver(Ox), this._enableShiftClickSelection(), this._enableMouseDragSelection()
            }
            _enableShiftClickSelection() {
                const t = this.editor,
                    e = t.plugins.get(Jy);
                let n = !1;
                const o = t.plugins.get(Mx);
                this.listenTo(t.editing.view.document, "mousedown", ((i, r) => {
                    const s = t.model.document.selection;
                    if (!this.isEnabled || !o.isEnabled) return;
                    if (!r.domEvent.shiftKey) return;
                    const a = o.getAnchorCell() || e.getTableCellsContainingSelection(s)[0];
                    if (!a) return;
                    const c = this._getModelTableCellFromDomEvent(r);
                    c && jx(a, c) && (n = !0, o.setCellSelection(a, c), r.preventDefault())
                })), this.listenTo(t.editing.view.document, "mouseup", (() => {
                    n = !1
                })), this.listenTo(t.editing.view.document, "selectionChange", (t => {
                    n && t.stop()
                }), {
                    priority: "highest"
                })
            }
            _enableMouseDragSelection() {
                const t = this.editor;
                let e, n, o = !1,
                    i = !1;
                const r = t.plugins.get(Mx);
                this.listenTo(t.editing.view.document, "mousedown", ((t, n) => {
                    this.isEnabled && r.isEnabled && (n.domEvent.shiftKey || n.domEvent.ctrlKey || n.domEvent.altKey || (e = this._getModelTableCellFromDomEvent(n)))
                })), this.listenTo(t.editing.view.document, "mousemove", ((t, s) => {
                    if (!s.domEvent.buttons) return;
                    if (!e) return;
                    const a = this._getModelTableCellFromDomEvent(s);
                    a && jx(e, a) && (n = a, o || n == e || (o = !0)), o && (i = !0, r.setCellSelection(e, n), s.preventDefault())
                })), this.listenTo(t.editing.view.document, "mouseup", (() => {
                    o = !1, i = !1, e = null, n = null
                })), this.listenTo(t.editing.view.document, "selectionChange", (t => {
                    i && t.stop()
                }), {
                    priority: "highest"
                })
            }
            _getModelTableCellFromDomEvent(t) {
                const e = t.target,
                    n = this.editor.editing.view.createPositionAt(e, 0);
                return this.editor.editing.mapper.toModelPosition(n).parent.findAncestor("tableCell", {
                    includeSelf: !0
                })
            }
        }

        function jx(t, e) {
            return t.parent.parent == e.parent.parent
        }
        var Rx = n(6306),
            Fx = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(Rx.Z, Fx);
        Rx.Z.locals;

        function Vx(t) {
            const e = t.getSelectedElement();
            return e && Hx(e) ? e : null
        }

        function Ux(t) {
            const e = t.getFirstPosition();
            if (!e) return null;
            let n = e.parent;
            for (; n;) {
                if (n.is("element") && Hx(n)) return n;
                n = n.parent
            }
            return null
        }

        function Hx(t) {
            return !!t.getCustomProperty("table") && _k(t)
        }
        var Gx = n(7368),
            qx = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(Gx.Z, qx);
        Gx.Z.locals;
        Object.defineProperty, Object.defineProperties, Object.getOwnPropertyDescriptors, Object.getOwnPropertySymbols, Object.prototype.hasOwnProperty, Object.prototype.propertyIsEnumerable;
        var Wx = n(9247),
            Kx = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(Wx.Z, Kx);
        Wx.Z.locals;
        var Yx = n(4070),
            $x = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(Yx.Z, $x);
        Yx.Z.locals;
        var Zx = n(6237),
            Qx = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(Zx.Z, Qx);
        Zx.Z.locals;
        var Jx = n(5087),
            Xx = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(Jx.Z, Xx);
        Jx.Z.locals;
        const tE = $p.defaultPositions;
        tE.northArrowSouth, tE.northArrowSouthWest, tE.northArrowSouthEast, tE.southArrowNorth, tE.southArrowNorthWest, tE.southArrowNorthEast, tE.viewportStickyNorth;
        Object.defineProperty, Object.getOwnPropertySymbols, Object.prototype.hasOwnProperty, Object.prototype.propertyIsEnumerable;
        Object.defineProperty, Object.getOwnPropertySymbols, Object.prototype.hasOwnProperty, Object.prototype.propertyIsEnumerable;
        var eE = n(7341),
            nE = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(eE.Z, nE);
        eE.Z.locals;
        var oE = n(2128),
            iE = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(oE.Z, iE);
        oE.Z.locals;
        var rE = n(4101),
            sE = {
                injectType: "singletonStyleTag",
                attributes: {
                    "data-cke": !0
                },
                insert: "head",
                singleton: !0
            };
        Fi()(rE.Z, sE);
        rE.Z.locals;
        var aE = Object.defineProperty,
            cE = Object.getOwnPropertySymbols,
            lE = Object.prototype.hasOwnProperty,
            dE = Object.prototype.propertyIsEnumerable,
            hE = (t, e, n) => e in t ? aE(t, e, {
                enumerable: !0,
                configurable: !0,
                writable: !0,
                value: n
            }) : t[e] = n,
            uE = (t, e) => {
                for (var n in e || (e = {})) lE.call(e, n) && hE(t, n, e[n]);
                if (cE)
                    for (var n of cE(e)) dE.call(e, n) && hE(t, n, e[n]);
                return t
            };
        const gE = {
                autoRefresh: !0
            },
            pE = 36e5;
        class mE extends(K()) {
            constructor(t, e = {}) {
                if (super(), !t) throw new A("token-missing-token-url", this);
                e.initValue && this._validateTokenValue(e.initValue), this.set("value", e.initValue), this._refresh = "function" == typeof t ? t : () => {
                    return e = t, new Promise(((t, n) => {
                        const o = new XMLHttpRequest;
                        o.open("GET", e), o.addEventListener("load", (() => {
                            const e = o.status,
                                i = o.response;
                            return e < 200 || e > 299 ? n(new A("token-cannot-download-new-token", null)) : t(i)
                        })), o.addEventListener("error", (() => n(new Error("Network Error")))), o.addEventListener("abort", (() => n(new Error("Abort")))), o.send()
                    }));
                    var e
                }, this._options = uE(uE({}, gE), e)
            }
            init() {
                return new Promise(((t, e) => {
                    this.value ? (this._options.autoRefresh && this._registerRefreshTokenTimeout(), t(this)) : this.refreshToken().then(t).catch(e)
                }))
            }
            refreshToken() {
                return this._refresh().then((t => (this._validateTokenValue(t), this.set("value", t), this._options.autoRefresh && this._registerRefreshTokenTimeout(), this)))
            }
            destroy() {
                clearTimeout(this._tokenRefreshTimeout)
            }
            _validateTokenValue(t) {
                const e = "string" == typeof t,
                    n = !/^".*"$/.test(t),
                    o = e && 3 === t.split(".").length;
                if (!n || !o) throw new A("token-not-in-jwt-format", this)
            }
            _registerRefreshTokenTimeout() {
                const t = this._getTokenRefreshTimeoutTime();
                clearTimeout(this._tokenRefreshTimeout), this._tokenRefreshTimeout = setTimeout((() => {
                    this.refreshToken()
                }), t)
            }
            _getTokenRefreshTimeoutTime() {
                try {
                    const [, t] = this.value.split("."), {
                        exp: e
                    } = JSON.parse(atob(t));
                    if (!e) return pE;
                    return Math.floor((1e3 * e - Date.now()) / 2)
                } catch (t) {
                    return pE
                }
            }
            static create(t, e = {}) {
                return new mE(t, e).init()
            }
        }
        const fE = /^data:(\S*?);base64,/;
        class kE extends(B()) {
            constructor(t, e, n) {
                if (super(), !t) throw new A("fileuploader-missing-file", null);
                if (!e) throw new A("fileuploader-missing-token", null);
                if (!n) throw new A("fileuploader-missing-api-address", null);
                this.file = function (t) {
                    if ("string" != typeof t) return !1;
                    const e = t.match(fE);
                    return !(!e || !e.length)
                }(t) ? function (t, e = 512) {
                    try {
                        const n = t.match(fE)[1],
                            o = atob(t.replace(fE, "")),
                            i = [];
                        for (let t = 0; t < o.length; t += e) {
                            const n = o.slice(t, t + e),
                                r = new Array(n.length);
                            for (let t = 0; t < n.length; t++) r[t] = n.charCodeAt(t);
                            i.push(new Uint8Array(r))
                        }
                        return new Blob(i, {
                            type: n
                        })
                    } catch (t) {
                        throw new A("fileuploader-decoding-image-data-error", null)
                    }
                }(t) : t, this._token = e, this._apiAddress = n
            }
            onProgress(t) {
                return this.on("progress", ((e, n) => t(n))), this
            }
            onError(t) {
                return this.once("error", ((e, n) => t(n))), this
            }
            abort() {
                this.xhr.abort()
            }
            send() {
                return this._prepareRequest(), this._attachXHRListeners(), this._sendRequest()
            }
            _prepareRequest() {
                const t = new XMLHttpRequest;
                t.open("POST", this._apiAddress), t.setRequestHeader("Authorization", this._token.value), t.responseType = "json", this.xhr = t
            }
            _attachXHRListeners() {
                const t = this.xhr,
                    e = t => () => this.fire("error", t);
                t.addEventListener("error", e("Network Error")), t.addEventListener("abort", e("Abort")), t.upload && t.upload.addEventListener("progress", (t => {
                    t.lengthComputable && this.fire("progress", {
                        total: t.total,
                        uploaded: t.loaded
                    })
                })), t.addEventListener("load", (() => {
                    const e = t.status,
                        n = t.response;
                    if (e < 200 || e > 299) return this.fire("error", n.message || n.error)
                }))
            }
            _sendRequest() {
                const t = new FormData,
                    e = this.xhr;
                return t.append("file", this.file), new Promise(((n, o) => {
                    e.addEventListener("load", (() => {
                        const t = e.status,
                            i = e.response;
                        return t < 200 || t > 299 ? i.message ? o(new A("fileuploader-uploading-data-failed", this, {
                            message: i.message
                        })) : o(i.error) : n(i)
                    })), e.addEventListener("error", (() => o(new Error("Network Error")))), e.addEventListener("abort", (() => o(new Error("Abort")))), e.send(t)
                }))
            }
        }
        class bE {
            constructor(t, e) {
                if (!t) throw new A("uploadgateway-missing-token", null);
                if (!e) throw new A("uploadgateway-missing-api-address", null);
                this._token = t, this._apiAddress = e
            }
            upload(t) {
                return new kE(t, this._token, this._apiAddress)
            }
        }
        class wE extends Xr {
            static get pluginName() {
                return "CloudServicesCore"
            }
            createToken(t, e) {
                return new mE(t, e)
            }
            createUploadGateway(t, e) {
                return new bE(t, e)
            }
        }
        var AE = (t, e, n) => new Promise(((o, i) => {
            var r = t => {
                    try {
                        a(n.next(t))
                    } catch (t) {
                        i(t)
                    }
                },
                s = t => {
                    try {
                        a(n.throw(t))
                    } catch (t) {
                        i(t)
                    }
                },
                a = t => t.done ? o(t.value) : Promise.resolve(t.value).then(r, s);
            a((n = n.apply(t, e)).next())
        }));
        class CE extends wf {}
        CE.builtinPlugins = [class extends Wr {
            static get requires() {
                return [ib, dk, db, pk, Rf, xb]
            }
            static get pluginName() {
                return "Essentials"
            }
        }, class extends Wr {
            static get requires() {
                return [Db]
            }
            static get pluginName() {
                return "CKFinderUploadAdapter"
            }
            init() {
                const t = this.editor.config.get("ckfinder.uploadUrl");
                t && (this.editor.plugins.get(Db).createUploadAdapter = e => new Pb(e, t, this.editor.t))
            }
        }, class extends Wr {
            static get requires() {
                return [jf]
            }
            static get pluginName() {
                return "Autoformat"
            }
            afterInit() {
                this._addListAutoformats(), this._addBasicStylesAutoformats(), this._addHeadingAutoformats(), this._addBlockQuoteAutoformats(), this._addCodeBlockAutoformats(), this._addHorizontalLineAutoformats()
            }
            _addListAutoformats() {
                const t = this.editor.commands;
                t.get("bulletedList") && zb(this.editor, this, /^[*-]\s$/, "bulletedList"), t.get("numberedList") && zb(this.editor, this, /^1[.|)]\s$/, "numberedList"), t.get("todoList") && zb(this.editor, this, /^\[\s?\]\s$/, "todoList"), t.get("checkTodoList") && zb(this.editor, this, /^\[\s?x\s?\]\s$/, (() => {
                    this.editor.execute("todoList"), this.editor.execute("checkTodoList")
                }))
            }
            _addBasicStylesAutoformats() {
                const t = this.editor.commands;
                if (t.get("bold")) {
                    const t = jb(this.editor, "bold");
                    Ob(this.editor, this, /(?:^|\s)(\*\*)([^*]+)(\*\*)$/g, t), Ob(this.editor, this, /(?:^|\s)(__)([^_]+)(__)$/g, t)
                }
                if (t.get("italic")) {
                    const t = jb(this.editor, "italic");
                    Ob(this.editor, this, /(?:^|\s)(\*)([^*_]+)(\*)$/g, t), Ob(this.editor, this, /(?:^|\s)(_)([^_]+)(_)$/g, t)
                }
                if (t.get("code")) {
                    const t = jb(this.editor, "code");
                    Ob(this.editor, this, /(`)([^`]+)(`)$/g, t)
                }
                if (t.get("strikethrough")) {
                    const t = jb(this.editor, "strikethrough");
                    Ob(this.editor, this, /(~~)([^~]+)(~~)$/g, t)
                }
            }
            _addHeadingAutoformats() {
                const t = this.editor.commands.get("heading");
                t && t.modelElements.filter((t => t.match(/^heading[1-6]$/))).forEach((e => {
                    const n = e[7],
                        o = new RegExp(`^(#{${n}})\\s$`);
                    zb(this.editor, this, o, (() => {
                        if (!t.isEnabled || t.value === e) return !1;
                        this.editor.execute("heading", {
                            value: e
                        })
                    }))
                }))
            }
            _addBlockQuoteAutoformats() {
                this.editor.commands.get("blockQuote") && zb(this.editor, this, /^>\s$/, "blockQuote")
            }
            _addCodeBlockAutoformats() {
                const t = this.editor,
                    e = t.model.document.selection;
                t.commands.get("codeBlock") && zb(t, this, /^```$/, (() => {
                    if (e.getFirstPosition().parent.is("element", "listItem")) return !1;
                    this.editor.execute("codeBlock", {
                        usePreviousLanguageChoice: !0
                    })
                }))
            }
            _addHorizontalLineAutoformats() {
                this.editor.commands.get("horizontalLine") && zb(this.editor, this, /^---$/, "horizontalLine")
            }
        }, class extends Wr {
            static get requires() {
                return [Vb, Hb]
            }
            static get pluginName() {
                return "Bold"
            }
        }, class extends Wr {
            static get requires() {
                return [Kb, $b]
            }
            static get pluginName() {
                return "Italic"
            }
        }, class extends Wr {
            static get requires() {
                return [tw, ow]
            }
            static get pluginName() {
                return "BlockQuote"
            }
        }, class extends Wr {
            static get pluginName() {
                return "CKBox"
            }
            static get requires() {
                return [gw, iw]
            }
        }, class extends Wr {
            static get pluginName() {
                return "CKFinder"
            }
            static get requires() {
                return ["Link", "CKFinderUploadAdapter", Aw, kw]
            }
        }, class extends Xr {
            constructor() {
                super(...arguments), this.token = null, this._tokens = new Map
            }
            static get pluginName() {
                return "CloudServices"
            }
            static get requires() {
                return [wE]
            }
            init() {
                return AE(this, null, (function* () {
                    const t = this.context.config.get("cloudServices") || {};
                    for (const [e, n] of Object.entries(t)) this[e] = n;
                    if (!this.tokenUrl) return void(this.token = null);
                    const e = this.context.plugins.get("CloudServicesCore");
                    this.token = yield e.createToken(this.tokenUrl).init(), this._tokens.set(this.tokenUrl, this.token)
                }))
            }
            registerTokenUrl(t) {
                return AE(this, null, (function* () {
                    if (this._tokens.has(t)) return this.getTokenFor(t);
                    const e = this.context.plugins.get("CloudServicesCore"),
                        n = yield e.createToken(t).init();
                    return this._tokens.set(t, n), n
                }))
            }
            getTokenFor(t) {
                const e = this._tokens.get(t);
                if (!e) throw new A("cloudservices-token-not-registered", this);
                return e
            }
            destroy() {
                super.destroy();
                for (const t of this._tokens.values()) t.destroy()
            }
        }, class extends Wr {
            static get pluginName() {
                return "EasyImage"
            }
            static get requires() {
                return [Cw, "ImageUpload"]
            }
            init() {
                const t = this.editor;
                t.plugins.has("ImageBlockEditing") || t.plugins.has("ImageInlineEditing") || C("easy-image-image-feature-missing", t)
            }
        }, class extends Wr {
            static get requires() {
                return [Tw, Pw]
            }
            static get pluginName() {
                return "Heading"
            }
        }, class extends Wr {
            static get requires() {
                return [bA, AA]
            }
            static get pluginName() {
                return "Image"
            }
        }, class extends Wr {
            static get requires() {
                return [vA, yA]
            }
            static get pluginName() {
                return "ImageCaption"
            }
        }, class extends Wr {
            static get requires() {
                return [xC, SC]
            }
            static get pluginName() {
                return "ImageStyle"
            }
        }, class extends Wr {
            static get requires() {
                return [Wk, Gw]
            }
            static get pluginName() {
                return "ImageToolbar"
            }
            afterInit() {
                const t = this.editor,
                    e = t.t,
                    n = t.plugins.get(Wk),
                    o = t.plugins.get("ImageUtils");
                var i;
                n.register("image", {
                    ariaLabel: e("Image toolbar"),
                    items: (i = t.config.get("image.toolbar") || [], i.map((t => F(t) ? t.name : t))),
                    getRelatedElement: t => o.getClosestSelectedImageWidget(t)
                })
            }
        }, class extends Wr {
            static get pluginName() {
                return "ImageUpload"
            }
            static get requires() {
                return [QA, MA, LA]
            }
        }, class extends Wr {
            static get pluginName() {
                return "Indent"
            }
            static get requires() {
                return [BC, zC]
            }
        }, class extends Wr {
            static get requires() {
                return [D_, j_, V_]
            }
            static get pluginName() {
                return "Link"
            }
        }, class extends Wr {
            static get requires() {
                return [Pv, rv]
            }
            static get pluginName() {
                return "List"
            }
        }, class extends Wr {
            static get requires() {
                return [Kv, Xv, $v, Gk]
            }
            static get pluginName() {
                return "MediaEmbed"
            }
        }, Dw, class extends Wr {
            static get pluginName() {
                return "PasteFromOffice"
            }
            static get requires() {
                return [yf]
            }
            init() {
                const t = this.editor,
                    e = t.plugins.get("ClipboardPipeline"),
                    n = t.editing.view.document,
                    o = [];
                o.push(new dy(n)), o.push(new py(n)), o.push(new fy(n)), e.on("inputTransformation", ((e, i) => {
                    if (i._isTransformedWithPasteFromOffice) return;
                    if (t.model.document.selection.getFirstPosition().parent.is("element", "codeBlock")) return;
                    const r = i.dataTransfer.getData("text/html"),
                        s = o.find((t => t.isActive(r)));
                    s && (i._parsedData || (i._parsedData = by(r, n.stylesProcessor)), s.execute(i), i._isTransformedWithPasteFromOffice = !0)
                }), {
                    priority: "high"
                })
            }
        }, class extends Wr {
            static get requires() {
                return [gA, Gw]
            }
            static get pluginName() {
                return "PictureEditing"
            }
            afterInit() {
                const t = this.editor;
                t.plugins.has("ImageBlockEditing") && t.model.schema.extend("imageBlock", {
                    allowAttributes: ["sources"]
                }), t.plugins.has("ImageInlineEditing") && t.model.schema.extend("imageInline", {
                    allowAttributes: ["sources"]
                }), this._setupConversion(), this._setupImageUploadEditingIntegration()
            }
            _setupConversion() {
                const t = this.editor,
                    e = t.conversion,
                    n = t.plugins.get("ImageUtils");
                e.for("upcast").add(function (t) {
                    const e = ["srcset", "media", "type", "sizes"],
                        n = (n, o, i) => {
                            const r = o.viewItem;
                            if (!i.consumable.test(r, {
                                    name: !0
                                })) return;
                            const s = new Map;
                            for (const t of r.getChildren())
                                if (t.is("element", "source")) {
                                    const n = {};
                                    for (const o of e) t.hasAttribute(o) && i.consumable.test(t, {
                                        attributes: o
                                    }) && (n[o] = t.getAttribute(o));
                                    Object.keys(n).length && s.set(t, n)
                                } const a = t.findViewImgElement(r);
                            if (!a) return;
                            let c = o.modelCursor.parent;
                            if (!c.is("element", "imageBlock")) {
                                const t = i.convertItem(a, o.modelCursor);
                                o.modelRange = t.modelRange, o.modelCursor = t.modelCursor, c = Ii(t.modelRange.getItems())
                            }
                            i.consumable.consume(r, {
                                name: !0
                            });
                            for (const [t, e] of s) i.consumable.consume(t, {
                                attributes: Object.keys(e)
                            });
                            s.size && i.writer.setAttribute("sources", Array.from(s.values()), c), i.convertChildren(r, c)
                        };
                    return t => {
                        t.on("element:picture", n)
                    }
                }(n)), e.for("downcast").add(function (t) {
                    const e = (e, n, o) => {
                        if (!o.consumable.consume(n.item, e.name)) return;
                        const i = o.writer,
                            r = o.mapper.toViewElement(n.item),
                            s = t.findViewImgElement(r),
                            a = n.attributeNewValue;
                        if (a && a.length) {
                            const t = i.createContainerElement("picture", null, a.map((t => i.createEmptyElement("source", t)))),
                                e = [];
                            let n = s.parent;
                            for (; n && n.is("attributeElement");) {
                                const t = n.parent;
                                i.unwrap(i.createRangeOn(s), n), e.unshift(n), n = t
                            }
                            i.insert(i.createPositionBefore(s), t), i.move(i.createRangeOn(s), i.createPositionAt(t, "end"));
                            for (const n of e) i.wrap(i.createRangeOn(t), n)
                        } else if (s.parent.is("element", "picture")) {
                            const t = s.parent;
                            i.move(i.createRangeOn(s), i.createPositionBefore(t)), i.remove(t)
                        }
                    };
                    return t => {
                        t.on("attribute:sources:imageBlock", e), t.on("attribute:sources:imageInline", e)
                    }
                }(n))
            }
            _setupImageUploadEditingIntegration() {
                const t = this.editor;
                if (!t.plugins.has("ImageUploadEditing")) return;
                const e = t.plugins.get("ImageUploadEditing");
                this.listenTo(e, "uploadComplete", ((e, {
                    imageElement: n,
                    data: o
                }) => {
                    const i = o.sources;
                    i && t.model.change((t => {
                        t.setAttributes({
                            sources: i
                        }, n)
                    }))
                }))
            }
        }, class extends Wr {
            static get requires() {
                return [Cx, Ex, Mx, Lx, zx, Tx, Gk]
            }
            static get pluginName() {
                return "Table"
            }
        }, class extends Wr {
            static get requires() {
                return [Wk]
            }
            static get pluginName() {
                return "TableToolbar"
            }
            afterInit() {
                const t = this.editor,
                    e = t.t,
                    n = t.plugins.get(Wk),
                    o = t.config.get("table.contentToolbar"),
                    i = t.config.get("table.tableToolbar");
                o && n.register("tableContent", {
                    ariaLabel: e("Table toolbar"),
                    items: o,
                    getRelatedElement: Ux
                }), i && n.register("table", {
                    ariaLabel: e("Table toolbar"),
                    items: i,
                    getRelatedElement: Vx
                })
            }
        }, class extends Wr {
            static get requires() {
                return ["Delete", "Input"]
            }
            static get pluginName() {
                return "TextTransformation"
            }
            constructor(t) {
                super(t), t.config.define("typing", {
                    transformations: {
                        include: Jf
                    }
                })
            }
            init() {
                const t = this.editor.model.document.selection;
                t.on("change:range", (() => {
                    this.isEnabled = !t.anchor.parent.is("element", "codeBlock")
                })), this._enableTransformationWatchers()
            }
            _enableTransformationWatchers() {
                const t = this.editor,
                    e = t.model,
                    n = t.plugins.get("Delete"),
                    o = function (t) {
                        const e = t.extra || [],
                            n = t.remove || [],
                            o = t => !n.includes(t);
                        return function (t) {
                            const e = new Set;
                            for (const n of t)
                                if ("string" == typeof n && Qf[n])
                                    for (const t of Qf[n]) e.add(t);
                                else e.add(n);
                            return Array.from(e)
                        }(t.include.concat(e).filter(o)).filter(o).map((t => "string" == typeof t && Zf[t] ? Zf[t] : t)).filter((t => "object" == typeof t)).map((t => ({
                            from: Xf(t.from),
                            to: tk(t.to)
                        })))
                    }(t.config.get("typing.transformations")),
                    i = new Vf(t.model, (t => {
                        for (const e of o) {
                            if (e.from.test(t)) return {
                                normalizedTransformation: e
                            }
                        }
                    }));
                i.on("matched:data", ((t, o) => {
                    if (!o.batch.isTyping) return;
                    const {
                        from: i,
                        to: r
                    } = o.normalizedTransformation, s = i.exec(o.text), a = r(s.slice(1)), c = o.range;
                    let l = s.index;
                    e.enqueueChange((t => {
                        for (let n = 1; n < s.length; n++) {
                            const o = s[n],
                                i = a[n - 1];
                            if (null == i) {
                                l += o.length;
                                continue
                            }
                            const r = c.start.getShiftedBy(l),
                                d = e.createRange(r, r.getShiftedBy(o.length)),
                                h = ek(r);
                            e.insertContent(t.createText(i, h), d), l += i.length
                        }
                        e.enqueueChange((() => {
                            n.requestUndoOnBackspace()
                        }))
                    }))
                })), i.bind("isEnabled").to(this)
            }
        }], CE.defaultConfig = {
            toolbar: {
                items: ["undo", "redo", "|", "heading", "|", "bold", "italic", "|", "link", "uploadImage", "insertTable", "blockQuote", "mediaEmbed", "|", "bulletedList", "numberedList", "outdent", "indent"]
            },
            image: {
                toolbar: ["imageStyle:inline", "imageStyle:block", "imageStyle:side", "|", "toggleImageCaption", "imageTextAlternative"]
            },
            table: {
                contentToolbar: ["tableColumn", "tableRow", "mergeTableCells"]
            },
            language: "en"
        }
    })(), o = o.default
})()));
//# sourceMappingURL=ckeditor.js.map
