/* Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license/ */ (function () { if (window.CKEDITOR && window.CKEDITOR.dom) return; window.CKEDITOR || (window.CKEDITOR = (function () { var a = /(^|.*[\\\/])ckeditor\.js(?:\?.*|;.*)?$/i, d = { timestamp: "N5UC", version: "4.22.1", revision: "4a1fb11f44", rnd: Math.floor(900 * Math.random()) + 100, _: { pending: [], basePathSrcPattern: a }, status: "unloaded", basePath: (function () { var b = window.CKEDITOR_BASEPATH || ""; if (!b) for ( var c = document.getElementsByTagName("script"), d = 0; d < c.length; d++ ) { var h = c[d].src.match(a); if (h) { b = h[1]; break; } } -1 == b.indexOf(":/") && "//" != b.slice(0, 2) && (b = 0 === b.indexOf("/") ? location.href.match(/^.*?:\/\/[^\/]*/)[0] + b : location.href.match(/^[^\?]*\/(?:)/)[0] + b); if (!b) throw 'The CKEditor installation path could not be automatically detected. Please set the global variable "CKEDITOR_BASEPATH" before creating editor instances.'; return b; })(), getUrl: function (a) { -1 == a.indexOf(":/") && 0 !== a.indexOf("/") && (a = this.basePath + a); return (a = this.appendTimestamp(a)); }, appendTimestamp: function (a) { if ( !this.timestamp || "/" === a.charAt(a.length - 1) || /[&?]t=/.test(a) ) return a; var b = 0 <= a.indexOf("?") ? "\x26" : "?"; return a + b + "t\x3d" + this.timestamp; }, domReady: (function () { function a() { try { document.addEventListener ? (document.removeEventListener("DOMContentLoaded", a, !1), window.removeEventListener("load", a, !1), b()) : document.attachEvent && "complete" === document.readyState && (document.detachEvent("onreadystatechange", a), window.detachEvent("onload", a), b()); } catch (c) {} } function b() { for (var a; (a = c.shift()); ) a(); } var c = []; return function (b) { function e() { try { document.documentElement.doScroll("left"); } catch (b) { setTimeout(e, 1); return; } a(); } c.push(b); "complete" === document.readyState && setTimeout(a, 1); if (1 == c.length) if (document.addEventListener) document.addEventListener("DOMContentLoaded", a, !1), window.addEventListener("load", a, !1); else if (document.attachEvent) { document.attachEvent("onreadystatechange", a); window.attachEvent("onload", a); b = !1; try { b = !window.frameElement; } catch (d) {} document.documentElement.doScroll && b && e(); } }; })(), }, b = window.CKEDITOR_GETURL; if (b) { var c = d.getUrl; d.getUrl = function (a) { return b.call(d, a) || c.call(d, a); }; } return d; })()); (function () { var a = {}; CKEDITOR.event || ((CKEDITOR.event = function () {}), (CKEDITOR.event.implementOn = function (a) { var b = CKEDITOR.event.prototype, c; for (c in b) null == a[c] && (a[c] = b[c]); }), (CKEDITOR.event.prototype = (function () { function d(a) { var e = b(this); return e[a] || (e[a] = new c(a)); } var b = function (a) { a = (a.getPrivate && a.getPrivate()) || a._ || (a._ = {}); return a.events || (a.events = {}); }, c = function (a) { this.name = a; this.listeners = []; }; c.prototype = { getListenerIndex: function (a) { for (var b = 0, c = this.listeners; b < c.length; b++) if (c[b].fn == a) return b; return -1; }, }; return { define: function (a, b) { var c = d.call(this, a); CKEDITOR.tools.extend(c, b, !0); }, on: function (b, c, k, h, n) { function l(x, y, z, n) { x = { name: b, sender: this, editor: x, data: y, listenerData: h, stop: z, cancel: n, removeListener: g, }; return !1 === c.call(k, x) ? a : x.data; } function g() { x.removeListener(b, c); } var x = this, y = d.call(this, b); if (0 > y.getListenerIndex(c)) { y = y.listeners; k || (k = this); isNaN(n) && (n = 10); l.fn = c; l.priority = n; for (var z = y.length - 1; 0 <= z; z--) if (y[z].priority <= n) return y.splice(z + 1, 0, l), { removeListener: g }; y.unshift(l); } return { removeListener: g }; }, once: function () { var a = Array.prototype.slice.call(arguments), b = a[1]; a[1] = function (a) { a.removeListener(); return b.apply(this, arguments); }; return this.on.apply(this, a); }, capture: function () { CKEDITOR.event.useCapture = 1; var a = this.on.apply(this, arguments); CKEDITOR.event.useCapture = 0; return a; }, fire: (function () { var c = 0, e = function () { c = 1; }, d = 0, h = function () { d = 1; }; return function (n, l, g) { var x = b(this)[n]; n = c; var y = d; c = d = 0; if (x) { var z = x.listeners; if (z.length) for (var z = z.slice(0), G, v = 0; v < z.length; v++) { if (x.errorProof) try { G = z[v].call(this, g, l, e, h); } catch (m) {} else G = z[v].call(this, g, l, e, h); G === a ? (d = 1) : "undefined" != typeof G && (l = G); if (c || d) break; } } l = d ? !1 : "undefined" == typeof l ? !0 : l; c = n; d = y; return l; }; })(), fireOnce: function (a, c, d) { c = this.fire(a, c, d); delete b(this)[a]; return c; }, removeListener: function (a, c) { var d = b(this)[a]; if (d) { var h = d.getListenerIndex(c); 0 <= h && d.listeners.splice(h, 1); } }, removeAllListeners: function () { var a = b(this), c; for (c in a) delete a[c]; }, hasListeners: function (a) { return (a = b(this)[a]) && 0 < a.listeners.length; }, }; })())); })(); CKEDITOR.editor || ((CKEDITOR.editor = function () { CKEDITOR._.pending.push([this, arguments]); CKEDITOR.event.call(this); }), (CKEDITOR.editor.prototype.fire = function (a, d) { a in { instanceReady: 1, loaded: 1 } && (this[a] = !0); return CKEDITOR.event.prototype.fire.call(this, a, d, this); }), (CKEDITOR.editor.prototype.fireOnce = function (a, d) { a in { instanceReady: 1, loaded: 1 } && (this[a] = !0); return CKEDITOR.event.prototype.fireOnce.call(this, a, d, this); }), CKEDITOR.event.implementOn(CKEDITOR.editor.prototype)); CKEDITOR.env || (CKEDITOR.env = (function () { var a = navigator.userAgent.toLowerCase(), d = a.match(/edge[ \/](\d+.?\d*)/), b = -1 < a.indexOf("trident/"), b = !(!d && !b), b = { ie: b, edge: !!d, webkit: !b && -1 < a.indexOf(" applewebkit/"), air: -1 < a.indexOf(" adobeair/"), mac: -1 < a.indexOf("macintosh"), quirks: "BackCompat" == document.compatMode && (!document.documentMode || 10 > document.documentMode), mobile: -1 < a.indexOf("mobile"), iOS: /(ipad|iphone|ipod)/.test(a), isCustomDomain: function () { if (!this.ie) return !1; var a = document.domain, b = window.location.hostname; return a != b && a != "[" + b + "]"; }, secure: "https:" == location.protocol, }; b.gecko = "Gecko" == navigator.product && !b.webkit && !b.ie; b.webkit && (-1 < a.indexOf("chrome") ? (b.chrome = !0) : (b.safari = !0)); var c = 0; b.ie && ((c = d ? parseFloat(d[1]) : b.quirks || !document.documentMode ? parseFloat(a.match(/msie (\d+)/)[1]) : document.documentMode), (b.ie9Compat = 9 == c), (b.ie8Compat = 8 == c), (b.ie7Compat = 7 == c), (b.ie6Compat = 7 > c || b.quirks)); b.gecko && (d = a.match(/rv:([\d\.]+)/)) && ((d = d[1].split(".")), (c = 1e4 * d[0] + 100 * (d[1] || 0) + 1 * (d[2] || 0))); b.air && (c = parseFloat(a.match(/ adobeair\/(\d+)/)[1])); b.webkit && (c = parseFloat(a.match(/ applewebkit\/(\d+)/)[1])); b.version = c; b.isCompatible = !(b.ie && 7 > c) && !(b.gecko && 4e4 > c) && !(b.webkit && 534 > c); b.hidpi = 2 <= window.devicePixelRatio; b.needsBrFiller = b.gecko || b.webkit || (b.ie && 10 < c); b.needsNbspFiller = b.ie && 11 > c; b.cssClass = "cke_browser_" + (b.ie ? "ie" : b.gecko ? "gecko" : b.webkit ? "webkit" : "unknown"); b.quirks && (b.cssClass += " cke_browser_quirks"); b.ie && (b.cssClass += " cke_browser_ie" + (b.quirks ? "6 cke_browser_iequirks" : b.version)); b.air && (b.cssClass += " cke_browser_air"); b.iOS && (b.cssClass += " cke_browser_ios"); b.hidpi && (b.cssClass += " cke_hidpi"); return b; })()); "unloaded" == CKEDITOR.status && (function () { CKEDITOR.event.implementOn(CKEDITOR); CKEDITOR.loadFullCore = function () { if ("basic_ready" != CKEDITOR.status) CKEDITOR.loadFullCore._load = 1; else { delete CKEDITOR.loadFullCore; var a = document.createElement("script"); a.type = "text/javascript"; a.src = CKEDITOR.basePath + "ckeditor.js"; document.getElementsByTagName("head")[0].appendChild(a); } }; CKEDITOR.loadFullCoreTimeout = 0; CKEDITOR.add = function (a) { (this._.pending || (this._.pending = [])).push(a); }; (function () { CKEDITOR.domReady(function () { var a = CKEDITOR.loadFullCore, d = CKEDITOR.loadFullCoreTimeout; a && ((CKEDITOR.status = "basic_ready"), a && a._load ? a() : d && setTimeout(function () { CKEDITOR.loadFullCore && CKEDITOR.loadFullCore(); }, 1e3 * d)); }); })(); CKEDITOR.status = "basic_loaded"; })(); ("use strict"); CKEDITOR.VERBOSITY_WARN = 1; CKEDITOR.VERBOSITY_ERROR = 2; CKEDITOR.verbosity = CKEDITOR.VERBOSITY_WARN | CKEDITOR.VERBOSITY_ERROR; CKEDITOR.warn = function (a, d) { CKEDITOR.verbosity & CKEDITOR.VERBOSITY_WARN && CKEDITOR.fire("log", { type: "warn", errorCode: a, additionalData: d }); }; CKEDITOR.error = function (a, d) { CKEDITOR.verbosity & CKEDITOR.VERBOSITY_ERROR && CKEDITOR.fire("log", { type: "error", errorCode: a, additionalData: d }); }; CKEDITOR.on( "log", function (a) { if (window.console && window.console.log) { var d = console[a.data.type] ? a.data.type : "log", b = a.data.errorCode; if ((a = a.data.additionalData)) console[d]("[CKEDITOR] Error code: " + b + ".", a); /* else console[d]("[CKEDITOR] Error code: " + b + "."); // TODO: GER console[d]( "[CKEDITOR] For more information about this error go to https://ckeditor.com/docs/ckeditor4/latest/guide/dev_errors.html#" + b ); */ } }, null, null, 999 ); CKEDITOR.dom = {}; (function () { function a(a, y, b) { this._minInterval = a; this._context = b; this._lastOutput = this._scheduledTimer = 0; this._output = CKEDITOR.tools.bind(y, b || {}); var c = this; this.input = function () { function a() { c._lastOutput = new Date().getTime(); c._scheduledTimer = 0; c._call(); } if (!c._scheduledTimer || !1 !== c._reschedule()) { var x = new Date().getTime() - c._lastOutput; x < c._minInterval ? (c._scheduledTimer = setTimeout(a, c._minInterval - x)) : a(); } }; } function d(x, y, b) { a.call(this, x, y, b); this._args = []; var c = this; this.input = CKEDITOR.tools.override(this.input, function (a) { return function () { c._args = Array.prototype.slice.call(arguments); a.call(this); }; }); } var b = [], c = CKEDITOR.env.gecko ? "-moz-" : CKEDITOR.env.webkit ? "-webkit-" : CKEDITOR.env.ie ? "-ms-" : "", f = /&/g, e = />/g, k = /|\s) /g, function (a, b) { return b + "\x26nbsp;"; }) .replace(/ (?=<)/g, "\x26nbsp;")); }, getNextNumber: (function () { var a = 0; return function () { return ++a; }; })(), getNextId: function () { return "cke_" + this.getNextNumber(); }, getUniqueId: function () { for (var a = "e", b = 0; 8 > b; b++) a += Math.floor(65536 * (1 + Math.random())) .toString(16) .substring(1); return a; }, override: function (a, b) { var c = b(a); c.prototype = a.prototype; return c; }, setTimeout: function (a, b, c, g, h) { h || (h = window); c || (c = h); return h.setTimeout(function () { g ? a.apply(c, [].concat(g)) : a.apply(c); }, b || 0); }, debounce: function (a, b) { var c; return function () { var g = this, h = arguments; clearTimeout(c); c = setTimeout(function () { c = null; a.apply(g, h); }, b); }; }, throttle: function (a, b, c) { return new this.buffers.throttle(a, b, c); }, trim: (function () { var a = /(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g; return function (b) { return b.replace(a, ""); }; })(), ltrim: (function () { var a = /^[ \t\n\r]+/g; return function (b) { return b.replace(a, ""); }; })(), rtrim: (function () { var a = /[ \t\n\r]+$/g; return function (b) { return b.replace(a, ""); }; })(), indexOf: function (a, b) { if ("function" == typeof b) for (var c = 0, g = a.length; c < g; c++) { if (b(a[c])) return c; } else { if (a.indexOf) return a.indexOf(b); c = 0; for (g = a.length; c < g; c++) if (a[c] === b) return c; } return -1; }, search: function (a, b) { var c = CKEDITOR.tools.indexOf(a, b); return 0 <= c ? a[c] : null; }, bind: function (a, b) { var c = Array.prototype.slice.call(arguments, 2); return function () { return a.apply(b, c.concat(Array.prototype.slice.call(arguments))); }; }, createClass: function (a) { var b = a.$, c = a.base, g = a.privates || a._, h = a.proto; a = a.statics; !b && (b = function () { c && this.base.apply(this, arguments); }); if (g) var m = b, b = function () { var a = this._ || (this._ = {}), b; for (b in g) { var c = g[b]; a[b] = "function" == typeof c ? CKEDITOR.tools.bind(c, this) : c; } m.apply(this, arguments); }; c && ((b.prototype = this.prototypedCopy(c.prototype)), (b.prototype.constructor = b), (b.base = c), (b.baseProto = c.prototype), (b.prototype.base = function w() { this.base = c.prototype.base; c.apply(this, arguments); this.base = w; })); h && this.extend(b.prototype, h, !0); a && this.extend(b, a, !0); return b; }, addFunction: function (a, c) { return ( b.push(function () { return a.apply(c || this, arguments); }) - 1 ); }, removeFunction: function (a) { b[a] = null; }, callFunction: function (a) { var c = b[a]; return c && c.apply(window, Array.prototype.slice.call(arguments, 1)); }, cssLength: (function () { var a = /^-?\d+\.?\d*px$/, b; return function (c) { b = CKEDITOR.tools.trim(c + "") + "px"; return a.test(b) ? b : c || ""; }; })(), convertToPx: (function () { var a, b; return function (c) { if (!a || a.isDetached()) (a = CKEDITOR.dom.element.createFromHtml( '\x3cdiv style\x3d"position:absolute;left:-9999px;top:-9999px;margin:0px;padding:0px;border:0px;"\x3e\x3c/div\x3e', CKEDITOR.document )), CKEDITOR.document.getBody().append(a); if (!/%$/.test(c)) { var g = 0 > parseFloat(c); g && (c = c.replace("-", "")); a.setStyle("width", c); b = a.getClientRect(); c = Math.round(b.width); return g ? -c : c; } return c; }; })(), repeat: function (a, b) { return Array(b + 1).join(a); }, tryThese: function () { for (var a, b = 0, c = arguments.length; b < c; b++) { var g = arguments[b]; try { a = g(); break; } catch (h) {} } return a; }, genKey: function () { return Array.prototype.slice.call(arguments).join("-"); }, defer: function (a) { return function () { var b = arguments, c = this; window.setTimeout(function () { a.apply(c, b); }, 0); }; }, normalizeCssText: function (a, b) { var c = [], g, h = CKEDITOR.tools.parseCssText(a, !0, b); for (g in h) c.push(g + ":" + h[g]); c.sort(); return c.length ? c.join(";") + ";" : ""; }, convertRgbToHex: function (a) { return a.replace( /(?:rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\))/gi, function (a, b, c, g) { a = [b, c, g]; for (b = 0; 3 > b; b++) a[b] = ("0" + parseInt(a[b], 10).toString(16)).slice(-2); return "#" + a.join(""); } ); }, normalizeHex: function (a) { return a.replace( /#(([0-9a-f]{3}){1,2})($|;|\s+)/gi, function (a, b, c, g) { a = b.toLowerCase(); 3 == a.length && ((a = a.split("")), (a = [a[0], a[0], a[1], a[1], a[2], a[2]].join(""))); return "#" + a + g; } ); }, _isValidColorFormat: function (a) { if (!a) return !1; a = a.replace(/\s+/g, ""); return /^[a-z0-9()#%,./]+$/i.test(a); }, parseCssText: function (a, b, c) { var g = {}; c && (a = new CKEDITOR.dom.element("span") .setAttribute("style", a) .getAttribute("style") || ""); a && (a = CKEDITOR.tools.normalizeHex(CKEDITOR.tools.convertRgbToHex(a))); if (!a || ";" == a) return g; a.replace(/"/g, '"').replace( /\s*([^:;\s]+)\s*:\s*([^;]+)\s*(?=;|$)/g, function (a, c, x) { b && ((c = c.toLowerCase()), "font-family" == c && (x = x.replace(/\s*,\s*/g, ",")), (x = CKEDITOR.tools.trim(x))); g[c] = x; } ); return g; }, writeCssText: function (a, b) { var c, g = []; for (c in a) g.push(c + ":" + a[c]); b && g.sort(); return g.join("; "); }, objectCompare: function (a, b, c) { var g; if (!a && !b) return !0; if (!a || !b) return !1; for (g in a) if (a[g] != b[g]) return !1; if (!c) for (g in b) if (a[g] != b[g]) return !1; return !0; }, objectKeys: function (a) { return CKEDITOR.tools.object.keys(a); }, convertArrayToObject: function (a, b) { var c = {}; 1 == arguments.length && (b = !0); for (var g = 0, h = a.length; g < h; ++g) c[a[g]] = b; return c; }, getStyledSpans: function (a, b) { var c = CKEDITOR.env.ie && 8 == CKEDITOR.env.version ? a.toUpperCase() : a, c = b.find("span[style*\x3d" + c + "]").toArray(); return CKEDITOR.tools.array.filter(c, function (b) { return !!b.getStyle(a); }); }, fixDomain: function () { for (var a; ; ) try { a = window.parent.document.domain; break; } catch (b) { a = a ? a.replace(/.+?(?:\.|$)/, "") : document.domain; if (!a) break; document.domain = a; } return !!a; }, eventsBuffer: function (a, b, c) { return new this.buffers.event(a, b, c); }, enableHtml5Elements: function (a, b) { for ( var c = "abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup main mark meter nav output progress section summary time video".split( " " ), g = c.length, h; g--; ) (h = a.createElement(c[g])), b && a.appendChild(h); }, checkIfAnyArrayItemMatches: function (a, b) { for (var c = 0, g = a.length; c < g; ++c) if (a[c].match(b)) return !0; return !1; }, checkIfAnyObjectPropertyMatches: function (a, b) { for (var c in a) if (c.match(b)) return !0; return !1; }, keystrokeToString: function (a, b) { var c = this.keystrokeToArray(a, b); c.display = c.display.join("+"); c.aria = c.aria.join("+"); return c; }, keystrokeToArray: function (a, b) { var c = b & 16711680, g = b & 65535, h = CKEDITOR.env.mac, m = [], e = []; c & CKEDITOR.CTRL && (m.push(h ? "⌘" : a[17]), e.push(h ? a[224] : a[17])); c & CKEDITOR.ALT && (m.push(h ? "⌥" : a[18]), e.push(a[18])); c & CKEDITOR.SHIFT && (m.push(h ? "⇧" : a[16]), e.push(a[16])); g && (a[g] ? (m.push(a[g]), e.push(a[g])) : (m.push(String.fromCharCode(g)), e.push(String.fromCharCode(g)))); return { display: m, aria: e }; }, transparentImageData: "data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw\x3d\x3d", getCookie: function (a) { a = a.toLowerCase(); for (var b = document.cookie.split(";"), c, g, h = 0; h < b.length; h++) if ( ((c = b[h].split("\x3d")), (g = decodeURIComponent(CKEDITOR.tools.trim(c[0]).toLowerCase())), g === a) ) return decodeURIComponent(1 < c.length ? c[1] : ""); return null; }, setCookie: function (a, b) { document.cookie = encodeURIComponent(a) + "\x3d" + encodeURIComponent(b) + ";path\x3d/"; }, getCsrfToken: function () { var a = CKEDITOR.tools.getCookie("ckCsrfToken"); if (!a || 40 != a.length) { var a = [], b = ""; if (window.crypto && window.crypto.getRandomValues) (a = new Uint8Array(40)), window.crypto.getRandomValues(a); else for (var c = 0; 40 > c; c++) a.push(Math.floor(256 * Math.random())); for (c = 0; c < a.length; c++) var g = "abcdefghijklmnopqrstuvwxyz0123456789".charAt(a[c] % 36), b = b + (0.5 < Math.random() ? g.toUpperCase() : g); a = b; CKEDITOR.tools.setCookie("ckCsrfToken", a); } return a; }, escapeCss: function (a) { if (a) if (window.CSS && CSS.escape) a = CSS.escape(a); else { a = String(a); for ( var b = a.length, c = -1, g, h = "", m = a.charCodeAt(0); ++c < b; ) (g = a.charCodeAt(c)), (h = 0 == g ? h + "�" : 127 == g || (1 <= g && 31 >= g) || (0 == c && 48 <= g && 57 >= g) || (1 == c && 48 <= g && 57 >= g && 45 == m) ? h + ("\\" + g.toString(16) + " ") : 0 == c && 1 == b && 45 == g ? h + ("\\" + a.charAt(c)) : 128 <= g || 45 == g || 95 == g || (48 <= g && 57 >= g) || (65 <= g && 90 >= g) || (97 <= g && 122 >= g) ? h + a.charAt(c) : h + ("\\" + a.charAt(c))); a = h; } else a = ""; return a; }, getMouseButton: function (a) { return (a = a && a.data ? a.data.$ : a) ? CKEDITOR.tools.normalizeMouseButton(a.button) : !1; }, normalizeMouseButton: function (a, b) { if ( !CKEDITOR.env.ie || (9 <= CKEDITOR.env.version && !CKEDITOR.env.ie6Compat) ) return a; for ( var c = [ [CKEDITOR.MOUSE_BUTTON_LEFT, 1], [CKEDITOR.MOUSE_BUTTON_MIDDLE, 4], [CKEDITOR.MOUSE_BUTTON_RIGHT, 2], ], g = 0; g < c.length; g++ ) { var h = c[g]; if (h[0] === a && b) return h[1]; if (!b && h[1] === a) return h[0]; } }, convertHexStringToBytes: function (a) { var b = [], c = a.length / 2, g; for (g = 0; g < c; g++) b.push(parseInt(a.substr(2 * g, 2), 16)); return b; }, convertBytesToBase64: function (a) { var b = "", c = a.length, g; for (g = 0; g < c; g += 3) { var h = a.slice(g, g + 3), m = h.length, e = [], d; if (3 > m) for (d = m; 3 > d; d++) h[d] = 0; e[0] = (h[0] & 252) >> 2; e[1] = ((h[0] & 3) << 4) | (h[1] >> 4); e[2] = ((h[1] & 15) << 2) | ((h[2] & 192) >> 6); e[3] = h[2] & 63; for (d = 0; 4 > d; d++) b = d <= m ? b + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt( e[d] ) : b + "\x3d"; } return b; }, style: { parse: { _borderStyle: "none hidden dotted dashed solid double groove ridge inset outset".split( " " ), _widthRegExp: /^(thin|medium|thick|[\+-]?\d+(\.\d+)?[a-z%]+|[\+-]?0+(\.0+)?|\.\d+[a-z%]+)$/, _rgbaRegExp: /rgba?\(\s*\d+%?\s*,\s*\d+%?\s*,\s*\d+%?\s*(?:,\s*[0-9.]+\s*)?\)/gi, _hslaRegExp: /hsla?\(\s*[0-9.]+\s*,\s*\d+%\s*,\s*\d+%\s*(?:,\s*[0-9.]+\s*)?\)/gi, background: function (a) { var b = {}, c = this._findColor(a); c.length && ((b.color = c[0]), CKEDITOR.tools.array.forEach(c, function (b) { a = a.replace(b, ""); })); if ((a = CKEDITOR.tools.trim(a))) b.unprocessed = a; return b; }, margin: function (a) { return CKEDITOR.tools.style.parse.sideShorthand(a, function (a) { return ( a.match( /(?:\-?[\.\d]+(?:%|\w*)|auto|inherit|initial|unset|revert)/g ) || ["0px"] ); }); }, sideShorthand: function (a, b) { function c(a) { g.top = h[a[0]]; g.right = h[a[1]]; g.bottom = h[a[2]]; g.left = h[a[3]]; } var g = {}, h = b ? b(a) : a.split(/\s+/); switch (h.length) { case 1: c([0, 0, 0, 0]); break; case 2: c([0, 1, 0, 1]); break; case 3: c([0, 1, 2, 1]); break; case 4: c([0, 1, 2, 3]); } return g; }, border: function (a) { return CKEDITOR.tools.style.border.fromCssRule(a); }, _findColor: function (a) { var b = [], c = CKEDITOR.tools.array, b = b.concat(a.match(this._rgbaRegExp) || []), b = b.concat(a.match(this._hslaRegExp) || []); return (b = b.concat( c.filter(a.split(/\s+/), function (a) { return a.match(/^\#[a-f0-9]{3}(?:[a-f0-9]{3})?$/gi) ? !0 : a.toLowerCase() in CKEDITOR.tools.style.parse._colors; }) )); }, }, }, array: { filter: function (a, b, c) { var g = []; this.forEach(a, function (h, e) { b.call(c, h, e, a) && g.push(h); }); return g; }, find: function (a, b, c) { for (var g = a.length, h = 0; h < g; ) { if (b.call(c, a[h], h, a)) return a[h]; h++; } }, forEach: function (a, b, c) { var g = a.length, h; for (h = 0; h < g; h++) b.call(c, a[h], h, a); }, map: function (a, b, c) { for (var g = [], h = 0; h < a.length; h++) g.push(b.call(c, a[h], h, a)); return g; }, reduce: function (a, b, c, g) { for (var h = 0; h < a.length; h++) c = b.call(g, c, a[h], h, a); return c; }, every: function (a, b, c) { if (!a.length) return !0; b = this.filter(a, b, c); return a.length === b.length; }, some: function (a, b, c) { for (var g = 0; g < a.length; g++) if (b.call(c, a[g], g, a)) return !0; return !1; }, zip: function (a, b) { return CKEDITOR.tools.array.map(a, function (a, c) { return [a, b[c]]; }); }, unique: function (a) { return this.filter(a, function (b, c) { return c === CKEDITOR.tools.array.indexOf(a, b); }); }, }, object: { DONT_ENUMS: "toString toLocaleString valueOf hasOwnProperty isPrototypeOf propertyIsEnumerable constructor".split( " " ), entries: function (a) { return CKEDITOR.tools.array.map( CKEDITOR.tools.object.keys(a), function (b) { return [b, a[b]]; } ); }, values: function (a) { return CKEDITOR.tools.array.map( CKEDITOR.tools.object.keys(a), function (b) { return a[b]; } ); }, keys: function (a) { var b = Object.prototype.hasOwnProperty, c = [], g = CKEDITOR.tools.object.DONT_ENUMS; if ( CKEDITOR.env.ie && 9 > CKEDITOR.env.version && (!a || "object" !== typeof a) ) { b = []; if ("string" === typeof a) for (c = 0; c < a.length; c++) b.push(String(c)); return b; } for (var h in a) c.push(h); if (CKEDITOR.env.ie && 9 > CKEDITOR.env.version) for (h = 0; h < g.length; h++) b.call(a, g[h]) && c.push(g[h]); return c; }, findKey: function (a, b) { if ("object" !== typeof a) return null; for (var c in a) if (a[c] === b) return c; return null; }, merge: function (a, b) { var c = CKEDITOR.tools, g = c.clone(a), h = c.clone(b); c.array.forEach(c.object.keys(h), function (a) { g[a] = "object" === typeof h[a] && "object" === typeof g[a] ? c.object.merge(g[a], h[a]) : h[a]; }); return g; }, }, getAbsoluteRectPosition: function (a, b) { function c(a) { if (a) { var b = a.getClientRect(); g.top += b.top; g.left += b.left; "x" in g && "y" in g && ((g.x += b.x), (g.y += b.y)); c(a.getWindow().getFrame()); } } var g = CKEDITOR.tools.copy(b); c(a.getFrame()); var h = CKEDITOR.document.getWindow().getScrollPosition(); g.top += h.y; g.left += h.x; "x" in g && "y" in g && ((g.y += h.y), (g.x += h.x)); g.right = g.left + g.width; g.bottom = g.top + g.height; return g; }, }; a.prototype = { reset: function () { this._lastOutput = 0; this._clearTimer(); }, _reschedule: function () { return !1; }, _call: function () { this._output(); }, _clearTimer: function () { this._scheduledTimer && clearTimeout(this._scheduledTimer); this._scheduledTimer = 0; }, }; d.prototype = CKEDITOR.tools.prototypedCopy(a.prototype); d.prototype._reschedule = function () { this._scheduledTimer && this._clearTimer(); }; d.prototype._call = function () { this._output.apply(this._context, this._args); }; CKEDITOR.tools.buffers = {}; CKEDITOR.tools.buffers.event = a; CKEDITOR.tools.buffers.throttle = d; CKEDITOR.tools.style.border = CKEDITOR.tools.createClass({ $: function (a) { a = a || {}; this.width = a.width; this.style = a.style; this.color = a.color; this._.normalize(); }, _: { normalizeMap: { color: [[/windowtext/g, "black"]] }, normalize: function () { for (var a in this._.normalizeMap) { var b = this[a]; b && (this[a] = CKEDITOR.tools.array.reduce( this._.normalizeMap[a], function (a, b) { return a.replace(b[0], b[1]); }, b )); } }, }, proto: { toString: function () { return CKEDITOR.tools.array .filter([this.width, this.style, this.color], function (a) { return !!a; }) .join(" "); }, }, statics: { fromCssRule: function (a) { var b = {}, c = a.split(/\s+/g); a = CKEDITOR.tools.style.parse._findColor(a); a.length && (b.color = a[0]); CKEDITOR.tools.array.forEach(c, function (a) { b.style || -1 === CKEDITOR.tools.indexOf(CKEDITOR.tools.style.parse._borderStyle, a) ? !b.width && CKEDITOR.tools.style.parse._widthRegExp.test(a) && (b.width = a) : (b.style = a); }); return new CKEDITOR.tools.style.border(b); }, splitCssValues: function (a, b) { b = b || {}; var c = CKEDITOR.tools.array.reduce( ["width", "style", "color"], function (c, g) { var h = a["border-" + g] || b[g]; c[g] = h ? CKEDITOR.tools.style.parse.sideShorthand(h) : null; return c; }, {} ); return CKEDITOR.tools.array.reduce( ["top", "right", "bottom", "left"], function (b, g) { var h = {}, e; for (e in c) { var d = a["border-" + g + "-" + e]; h[e] = d ? d : c[e] && c[e][g]; } b["border-" + g] = new CKEDITOR.tools.style.border(h); return b; }, {} ); }, }, }); CKEDITOR.tools.array.indexOf = CKEDITOR.tools.indexOf; CKEDITOR.tools.array.isArray = CKEDITOR.tools.isArray; CKEDITOR.MOUSE_BUTTON_LEFT = 0; CKEDITOR.MOUSE_BUTTON_MIDDLE = 1; CKEDITOR.MOUSE_BUTTON_RIGHT = 2; })(); CKEDITOR.dtd = (function () { var a = CKEDITOR.tools.extend, d = function (a, b) { for ( var c = CKEDITOR.tools.clone(a), h = 1; h < arguments.length; h++ ) { b = arguments[h]; for (var e in b) delete c[e]; } return c; }, b = {}, c = {}, f = { address: 1, article: 1, aside: 1, blockquote: 1, details: 1, div: 1, dl: 1, fieldset: 1, figure: 1, footer: 1, form: 1, h1: 1, h2: 1, h3: 1, h4: 1, h5: 1, h6: 1, header: 1, hgroup: 1, hr: 1, main: 1, menu: 1, nav: 1, ol: 1, p: 1, pre: 1, section: 1, table: 1, ul: 1, }, e = { command: 1, link: 1, meta: 1, noscript: 1, script: 1, style: 1 }, k = {}, h = { "#": 1 }, n = { center: 1, dir: 1, noframes: 1 }; a( b, { a: 1, abbr: 1, area: 1, audio: 1, b: 1, bdi: 1, bdo: 1, br: 1, button: 1, canvas: 1, cite: 1, code: 1, command: 1, datalist: 1, del: 1, dfn: 1, em: 1, embed: 1, i: 1, iframe: 1, img: 1, input: 1, ins: 1, kbd: 1, keygen: 1, label: 1, map: 1, mark: 1, meter: 1, noscript: 1, object: 1, output: 1, progress: 1, q: 1, ruby: 1, s: 1, samp: 1, script: 1, select: 1, small: 1, span: 1, strong: 1, sub: 1, sup: 1, textarea: 1, time: 1, u: 1, var: 1, video: 1, wbr: 1, }, h, { acronym: 1, applet: 1, basefont: 1, big: 1, font: 1, isindex: 1, strike: 1, style: 1, tt: 1, } ); a(c, f, b, n); d = { a: d(b, { a: 1, button: 1 }), abbr: b, address: c, area: k, article: c, aside: c, audio: a({ source: 1, track: 1 }, c), b: b, base: k, bdi: b, bdo: b, blockquote: c, body: c, br: k, button: d(b, { a: 1, button: 1 }), canvas: b, caption: c, cite: b, code: b, col: k, colgroup: { col: 1 }, command: k, datalist: a({ option: 1 }, b), dd: c, del: b, details: a({ summary: 1 }, c), dfn: b, div: c, dl: { dt: 1, dd: 1 }, dt: c, em: b, embed: k, fieldset: a({ legend: 1 }, c), figcaption: c, figure: a({ figcaption: 1 }, c), footer: c, form: c, h1: b, h2: b, h3: b, h4: b, h5: b, h6: b, head: a({ title: 1, base: 1 }, e), header: c, hgroup: { h1: 1, h2: 1, h3: 1, h4: 1, h5: 1, h6: 1 }, hr: k, html: a({ head: 1, body: 1 }, c, e), i: b, iframe: h, img: k, input: k, ins: b, kbd: b, keygen: k, label: b, legend: b, li: c, link: k, main: c, map: c, mark: b, menu: a({ li: 1 }, c), meta: k, meter: d(b, { meter: 1 }), nav: c, noscript: a({ link: 1, meta: 1, style: 1 }, b), object: a({ param: 1 }, b), ol: { li: 1 }, optgroup: { option: 1 }, option: h, output: b, p: b, param: k, pre: b, progress: d(b, { progress: 1 }), q: b, rp: b, rt: b, ruby: a({ rp: 1, rt: 1 }, b), s: b, samp: b, script: h, section: c, select: { optgroup: 1, option: 1 }, small: b, source: k, span: b, strong: b, style: h, sub: b, summary: a({ h1: 1, h2: 1, h3: 1, h4: 1, h5: 1, h6: 1 }, b), sup: b, table: { caption: 1, colgroup: 1, thead: 1, tfoot: 1, tbody: 1, tr: 1 }, tbody: { tr: 1 }, td: c, textarea: h, tfoot: { tr: 1 }, th: c, thead: { tr: 1 }, time: d(b, { time: 1 }), title: h, tr: { th: 1, td: 1 }, track: k, u: b, ul: { li: 1 }, var: b, video: a({ source: 1, track: 1 }, c), wbr: k, acronym: b, applet: a({ param: 1 }, c), basefont: k, big: b, center: c, dialog: k, dir: { li: 1 }, font: b, isindex: k, noframes: c, strike: b, tt: b, }; a(d, { $block: a( { audio: 1, dd: 1, dt: 1, figcaption: 1, li: 1, video: 1 }, f, n ), $blockLimit: { article: 1, aside: 1, audio: 1, body: 1, caption: 1, details: 1, dir: 1, div: 1, dl: 1, fieldset: 1, figcaption: 1, figure: 1, footer: 1, form: 1, header: 1, hgroup: 1, main: 1, menu: 1, nav: 1, ol: 1, section: 1, table: 1, td: 1, th: 1, tr: 1, ul: 1, video: 1, }, $cdata: { script: 1, style: 1 }, $editable: { address: 1, article: 1, aside: 1, blockquote: 1, body: 1, details: 1, div: 1, fieldset: 1, figcaption: 1, footer: 1, form: 1, h1: 1, h2: 1, h3: 1, h4: 1, h5: 1, h6: 1, header: 1, hgroup: 1, main: 1, nav: 1, p: 1, pre: 1, section: 1, }, $empty: { area: 1, base: 1, basefont: 1, br: 1, col: 1, command: 1, dialog: 1, embed: 1, hr: 1, img: 1, input: 1, isindex: 1, keygen: 1, link: 1, meta: 1, param: 1, source: 1, track: 1, wbr: 1, }, $inline: b, $list: { dl: 1, ol: 1, ul: 1 }, $listItem: { dd: 1, dt: 1, li: 1 }, $nonBodyContent: a({ body: 1, head: 1, html: 1 }, d.head), $nonEditable: { applet: 1, audio: 1, button: 1, embed: 1, iframe: 1, map: 1, object: 1, option: 1, param: 1, script: 1, textarea: 1, video: 1, }, $object: { applet: 1, audio: 1, button: 1, hr: 1, iframe: 1, img: 1, input: 1, object: 1, select: 1, table: 1, textarea: 1, video: 1, }, $removeEmpty: { abbr: 1, acronym: 1, b: 1, bdi: 1, bdo: 1, big: 1, cite: 1, code: 1, del: 1, dfn: 1, em: 1, font: 1, i: 1, ins: 1, label: 1, kbd: 1, mark: 1, meter: 1, output: 1, q: 1, ruby: 1, s: 1, samp: 1, small: 1, span: 1, strike: 1, strong: 1, sub: 1, sup: 1, time: 1, tt: 1, u: 1, var: 1, }, $tabIndex: { a: 1, area: 1, button: 1, input: 1, object: 1, select: 1, textarea: 1, }, $tableContent: { caption: 1, col: 1, colgroup: 1, tbody: 1, td: 1, tfoot: 1, th: 1, thead: 1, tr: 1, }, $transparent: { a: 1, audio: 1, canvas: 1, del: 1, ins: 1, map: 1, noscript: 1, object: 1, video: 1, }, $intermediate: { caption: 1, colgroup: 1, dd: 1, dt: 1, figcaption: 1, legend: 1, li: 1, optgroup: 1, option: 1, rp: 1, rt: 1, summary: 1, tbody: 1, td: 1, tfoot: 1, th: 1, thead: 1, tr: 1, }, }); return d; })(); CKEDITOR.dom.event = function (a) { this.$ = a; }; CKEDITOR.dom.event.prototype = { getKey: function () { return this.$.keyCode || this.$.which; }, getKeystroke: function () { var a = this.getKey(); if (this.$.ctrlKey || this.$.metaKey) a += CKEDITOR.CTRL; this.$.shiftKey && (a += CKEDITOR.SHIFT); this.$.altKey && (a += CKEDITOR.ALT); return a; }, preventDefault: function (a) { var d = this.$; d.preventDefault ? d.preventDefault() : (d.returnValue = !1); a && this.stopPropagation(); }, stopPropagation: function () { var a = this.$; a.stopPropagation ? a.stopPropagation() : (a.cancelBubble = !0); }, getTarget: function () { var a = this.$.target || this.$.srcElement; return a ? new CKEDITOR.dom.node(a) : null; }, getPhase: function () { return this.$.eventPhase || 2; }, getPageOffset: function () { var a = this.getTarget().getDocument().$; return { x: this.$.pageX || this.$.clientX + (a.documentElement.scrollLeft || a.body.scrollLeft), y: this.$.pageY || this.$.clientY + (a.documentElement.scrollTop || a.body.scrollTop), }; }, }; CKEDITOR.CTRL = 1114112; CKEDITOR.SHIFT = 2228224; CKEDITOR.ALT = 4456448; CKEDITOR.EVENT_PHASE_CAPTURING = 1; CKEDITOR.EVENT_PHASE_AT_TARGET = 2; CKEDITOR.EVENT_PHASE_BUBBLING = 3; CKEDITOR.HISTORY_NATIVE = 1; CKEDITOR.HISTORY_HASH = 2; CKEDITOR.HISTORY_OFF = 0; CKEDITOR.dom.domObject = function (a) { a && (this.$ = a); }; CKEDITOR.dom.domObject.prototype = (function () { var a = function (a, b) { return function (c) { "undefined" != typeof CKEDITOR && a.fire(b, new CKEDITOR.dom.event(c)); }; }; return { getPrivate: function () { var a; (a = this.getCustomData("_")) || this.setCustomData("_", (a = {})); return a; }, on: function (d) { var b = this.getCustomData("_cke_nativeListeners"); b || ((b = {}), this.setCustomData("_cke_nativeListeners", b)); b[d] || ((b = b[d] = a(this, d)), this.$.addEventListener ? this.$.addEventListener(d, b, !!CKEDITOR.event.useCapture) : this.$.attachEvent && this.$.attachEvent("on" + d, b)); return CKEDITOR.event.prototype.on.apply(this, arguments); }, removeListener: function (a) { CKEDITOR.event.prototype.removeListener.apply(this, arguments); if (!this.hasListeners(a)) { var b = this.getCustomData("_cke_nativeListeners"), c = b && b[a]; c && (this.$.removeEventListener ? this.$.removeEventListener(a, c, !1) : this.$.detachEvent && this.$.detachEvent("on" + a, c), delete b[a]); } }, removeAllListeners: function () { try { var a = this.getCustomData("_cke_nativeListeners"), b; for (b in a) { var c = a[b]; this.$.detachEvent ? this.$.detachEvent("on" + b, c) : this.$.removeEventListener && this.$.removeEventListener(b, c, !1); delete a[b]; } } catch (f) { if (!CKEDITOR.env.edge || -2146828218 !== f.number) throw f; } CKEDITOR.event.prototype.removeAllListeners.call(this); }, }; })(); (function (a) { var d = {}; CKEDITOR.on("reset", function () { d = {}; }); a.equals = function (a) { try { return a && a.$ === this.$; } catch (c) { return !1; } }; a.setCustomData = function (a, c) { var f = this.getUniqueId(); (d[f] || (d[f] = {}))[a] = c; return this; }; a.getCustomData = function (a) { var c = this.$["data-cke-expando"]; return (c = c && d[c]) && a in c ? c[a] : null; }; a.removeCustomData = function (a) { var c = this.$["data-cke-expando"], c = c && d[c], f, e; c && ((f = c[a]), (e = a in c), delete c[a]); return e ? f : null; }; a.clearCustomData = function () { this.removeAllListeners(); var a = this.getUniqueId(); a && delete d[a]; }; a.getUniqueId = function () { return ( this.$["data-cke-expando"] || (this.$["data-cke-expando"] = CKEDITOR.tools.getNextNumber()) ); }; CKEDITOR.event.implementOn(a); })(CKEDITOR.dom.domObject.prototype); CKEDITOR.dom.node = function (a) { return a ? new CKEDITOR.dom[ a.nodeType == CKEDITOR.NODE_DOCUMENT ? "document" : a.nodeType == CKEDITOR.NODE_ELEMENT ? "element" : a.nodeType == CKEDITOR.NODE_TEXT ? "text" : a.nodeType == CKEDITOR.NODE_COMMENT ? "comment" : a.nodeType == CKEDITOR.NODE_DOCUMENT_FRAGMENT ? "documentFragment" : "domObject" ](a) : this; }; CKEDITOR.dom.node.prototype = new CKEDITOR.dom.domObject(); CKEDITOR.NODE_ELEMENT = 1; CKEDITOR.NODE_DOCUMENT = 9; CKEDITOR.NODE_TEXT = 3; CKEDITOR.NODE_COMMENT = 8; CKEDITOR.NODE_DOCUMENT_FRAGMENT = 11; CKEDITOR.POSITION_IDENTICAL = 0; CKEDITOR.POSITION_DISCONNECTED = 1; CKEDITOR.POSITION_FOLLOWING = 2; CKEDITOR.POSITION_PRECEDING = 4; CKEDITOR.POSITION_IS_CONTAINED = 8; CKEDITOR.POSITION_CONTAINS = 16; CKEDITOR.tools.extend(CKEDITOR.dom.node.prototype, { appendTo: function (a, d) { a.append(this, d); return a; }, clone: function (a, d) { function b(c) { c["data-cke-expando"] && (c["data-cke-expando"] = !1); if ( c.nodeType == CKEDITOR.NODE_ELEMENT || c.nodeType == CKEDITOR.NODE_DOCUMENT_FRAGMENT ) if ( (d || c.nodeType != CKEDITOR.NODE_ELEMENT || c.removeAttribute("id", !1), a) ) { c = c.childNodes; for (var f = 0; f < c.length; f++) b(c[f]); } } function c(b) { if ( b.type == CKEDITOR.NODE_ELEMENT || b.type == CKEDITOR.NODE_DOCUMENT_FRAGMENT ) { if (b.type != CKEDITOR.NODE_DOCUMENT_FRAGMENT) { var d = b.getName(); ":" == d[0] && b.renameNode(d.substring(1)); } if (a) for (d = 0; d < b.getChildCount(); d++) c(b.getChild(d)); } } var f = this.$.cloneNode(a); b(f); f = new CKEDITOR.dom.node(f); CKEDITOR.env.ie && 9 > CKEDITOR.env.version && (this.type == CKEDITOR.NODE_ELEMENT || this.type == CKEDITOR.NODE_DOCUMENT_FRAGMENT) && c(f); return f; }, hasPrevious: function () { return !!this.$.previousSibling; }, hasNext: function () { return !!this.$.nextSibling; }, insertAfter: function (a) { a.$.parentNode.insertBefore(this.$, a.$.nextSibling); return a; }, insertBefore: function (a) { a.$.parentNode.insertBefore(this.$, a.$); return a; }, insertBeforeMe: function (a) { this.$.parentNode.insertBefore(a.$, this.$); return a; }, getAddress: function (a) { for ( var d = [], b = this.getDocument().$.documentElement, c = this; c && c != b; ) { var f = c.getParent(); f && d.unshift(this.getIndex.call(c, a)); c = f; } return d; }, getDocument: function () { return new CKEDITOR.dom.document( this.$.ownerDocument || this.$.parentNode.ownerDocument ); }, getIndex: function (a) { function d(a, b) { var c = b ? a.getNext() : a.getPrevious(); return c && c.type == CKEDITOR.NODE_TEXT ? c.isEmpty() ? d(c, b) : c : null; } var b = this, c = -1, f; if ( !this.getParent() || (a && b.type == CKEDITOR.NODE_TEXT && b.isEmpty() && !d(b) && !d(b, !0)) ) return -1; do if ( !a || b.equals(this) || b.type != CKEDITOR.NODE_TEXT || (!f && !b.isEmpty()) ) c++, (f = b.type == CKEDITOR.NODE_TEXT); while ((b = b.getPrevious())); return c; }, getNextSourceNode: function (a, d, b) { if (b && !b.call) { var c = b; b = function (a) { return !a.equals(c); }; } a = !a && this.getFirst && this.getFirst(); var f; if (!a) { if (this.type == CKEDITOR.NODE_ELEMENT && b && !1 === b(this, !0)) return null; a = this.getNext(); } for (; !a && (f = (f || this).getParent()); ) { if (b && !1 === b(f, !0)) return null; a = f.getNext(); } return !a || (b && !1 === b(a)) ? null : d && d != a.type ? a.getNextSourceNode(!1, d, b) : a; }, getPreviousSourceNode: function (a, d, b) { if (b && !b.call) { var c = b; b = function (a) { return !a.equals(c); }; } a = !a && this.getLast && this.getLast(); var f; if (!a) { if (this.type == CKEDITOR.NODE_ELEMENT && b && !1 === b(this, !0)) return null; a = this.getPrevious(); } for (; !a && (f = (f || this).getParent()); ) { if (b && !1 === b(f, !0)) return null; a = f.getPrevious(); } return !a || (b && !1 === b(a)) ? null : d && a.type != d ? a.getPreviousSourceNode(!1, d, b) : a; }, getPrevious: function (a) { var d = this.$, b; do b = (d = d.previousSibling) && 10 != d.nodeType && new CKEDITOR.dom.node(d); while (b && a && !a(b)); return b; }, getNext: function (a) { var d = this.$, b; do b = (d = d.nextSibling) && new CKEDITOR.dom.node(d); while (b && a && !a(b)); return b; }, getParent: function (a) { var d = this.$.parentNode; return d && (d.nodeType == CKEDITOR.NODE_ELEMENT || (a && d.nodeType == CKEDITOR.NODE_DOCUMENT_FRAGMENT)) ? new CKEDITOR.dom.node(d) : null; }, getParents: function (a) { var d = this, b = []; do b[a ? "push" : "unshift"](d); while ((d = d.getParent())); return b; }, getCommonAncestor: function (a) { if (a.equals(this)) return this; if (a.contains && a.contains(this)) return a; var d = this.contains ? this : this.getParent(); do if (d.contains(a)) return d; while ((d = d.getParent())); return null; }, getPosition: function (a) { var d = this.$, b = a.$; if (d.compareDocumentPosition) return d.compareDocumentPosition(b); if (d == b) return CKEDITOR.POSITION_IDENTICAL; if ( this.type == CKEDITOR.NODE_ELEMENT && a.type == CKEDITOR.NODE_ELEMENT ) { if (d.contains) { if (d.contains(b)) return CKEDITOR.POSITION_CONTAINS + CKEDITOR.POSITION_PRECEDING; if (b.contains(d)) return CKEDITOR.POSITION_IS_CONTAINED + CKEDITOR.POSITION_FOLLOWING; } if ("sourceIndex" in d) return 0 > d.sourceIndex || 0 > b.sourceIndex ? CKEDITOR.POSITION_DISCONNECTED : d.sourceIndex < b.sourceIndex ? CKEDITOR.POSITION_PRECEDING : CKEDITOR.POSITION_FOLLOWING; } d = this.getAddress(); a = a.getAddress(); for (var b = Math.min(d.length, a.length), c = 0; c < b; c++) if (d[c] != a[c]) return d[c] < a[c] ? CKEDITOR.POSITION_PRECEDING : CKEDITOR.POSITION_FOLLOWING; return d.length < a.length ? CKEDITOR.POSITION_CONTAINS + CKEDITOR.POSITION_PRECEDING : CKEDITOR.POSITION_IS_CONTAINED + CKEDITOR.POSITION_FOLLOWING; }, getAscendant: function (a, d) { var b = this.$, c, f; d || (b = b.parentNode); "function" == typeof a ? ((f = !0), (c = a)) : ((f = !1), (c = function (b) { b = "string" == typeof b.nodeName ? b.nodeName.toLowerCase() : ""; return "string" == typeof a ? b == a : b in a; })); for (; b; ) { if (c(f ? new CKEDITOR.dom.node(b) : b)) return new CKEDITOR.dom.node(b); try { b = b.parentNode; } catch (e) { b = null; } } return null; }, hasAscendant: function (a, d) { var b = this.$; d || (b = b.parentNode); for (; b; ) { if (b.nodeName && b.nodeName.toLowerCase() == a) return !0; b = b.parentNode; } return !1; }, move: function (a, d) { a.append(this.remove(), d); }, remove: function (a) { var d = this.$, b = d.parentNode; if (b) { if (a) for (; (a = d.firstChild); ) b.insertBefore(d.removeChild(a), d); b.removeChild(d); } return this; }, replace: function (a) { this.insertBefore(a); a.remove(); }, trim: function () { this.ltrim(); this.rtrim(); }, ltrim: function () { for (var a; this.getFirst && (a = this.getFirst()); ) { if (a.type == CKEDITOR.NODE_TEXT) { var d = CKEDITOR.tools.ltrim(a.getText()), b = a.getLength(); if (d) d.length < b && (a.split(b - d.length), this.$.removeChild(this.$.firstChild)); else { a.remove(); continue; } } break; } }, rtrim: function () { for (var a; this.getLast && (a = this.getLast()); ) { if (a.type == CKEDITOR.NODE_TEXT) { var d = CKEDITOR.tools.rtrim(a.getText()), b = a.getLength(); if (d) d.length < b && (a.split(d.length), this.$.lastChild.parentNode.removeChild(this.$.lastChild)); else { a.remove(); continue; } } break; } CKEDITOR.env.needsBrFiller && (a = this.$.lastChild) && 1 == a.type && "br" == a.nodeName.toLowerCase() && a.parentNode.removeChild(a); }, isReadOnly: function (a) { var d = this; this.type != CKEDITOR.NODE_ELEMENT && (d = this.getParent()); CKEDITOR.env.edge && d && d.is("textarea", "input") && (a = !0); if (!a && d && "undefined" != typeof d.$.isContentEditable) return !(d.$.isContentEditable || d.data("cke-editable")); for (; d; ) { if (d.data("cke-editable")) return !1; if (d.hasAttribute("contenteditable")) return "false" == d.getAttribute("contenteditable"); d = d.getParent(); } return !0; }, }); CKEDITOR.dom.window = function (a) { CKEDITOR.dom.domObject.call(this, a); }; CKEDITOR.dom.window.prototype = new CKEDITOR.dom.domObject(); CKEDITOR.tools.extend(CKEDITOR.dom.window.prototype, { focus: function () { this.$.focus(); }, getViewPaneSize: function () { var a = this.$.document, d = "CSS1Compat" == a.compatMode; return { width: (d ? a.documentElement.clientWidth : a.body.clientWidth) || 0, height: (d ? a.documentElement.clientHeight : a.body.clientHeight) || 0, }; }, getScrollPosition: function () { var a = this.$; if ("pageXOffset" in a) return { x: a.pageXOffset || 0, y: a.pageYOffset || 0 }; a = a.document; return { x: a.documentElement.scrollLeft || a.body.scrollLeft || 0, y: a.documentElement.scrollTop || a.body.scrollTop || 0, }; }, getFrame: function () { var a = this.$.frameElement; return a ? new CKEDITOR.dom.element.get(a) : null; }, }); CKEDITOR.dom.document = function (a) { CKEDITOR.dom.domObject.call(this, a); }; CKEDITOR.dom.document.prototype = new CKEDITOR.dom.domObject(); CKEDITOR.tools.extend(CKEDITOR.dom.document.prototype, { type: CKEDITOR.NODE_DOCUMENT, appendStyleSheet: function (a) { a = CKEDITOR.appendTimestamp(a); if (this.$.createStyleSheet) this.$.createStyleSheet(a); else { var d = new CKEDITOR.dom.element("link"); d.setAttributes({ rel: "stylesheet", type: "text/css", href: a }); this.getHead().append(d); } }, appendStyleText: function (a) { if (this.$.createStyleSheet) { var d = this.$.createStyleSheet(""); d.cssText = a; } else { var b = new CKEDITOR.dom.element("style", this); b.append(new CKEDITOR.dom.text(a, this)); this.getHead().append(b); } return d || b.$.sheet; }, createElement: function (a, d) { var b = new CKEDITOR.dom.element(a, this); d && (d.attributes && b.setAttributes(d.attributes), d.styles && b.setStyles(d.styles)); return b; }, createText: function (a) { return new CKEDITOR.dom.text(a, this); }, focus: function () { this.getWindow().focus(); }, getActive: function () { var a; try { a = this.$.activeElement; } catch (d) { return null; } return new CKEDITOR.dom.element(a); }, getById: function (a) { return (a = this.$.getElementById(a)) ? new CKEDITOR.dom.element(a) : null; }, getByAddress: function (a, d) { for (var b = this.$.documentElement, c = 0; b && c < a.length; c++) { var f = a[c]; if (d) for (var e = -1, k = 0; k < b.childNodes.length; k++) { var h = b.childNodes[k]; if ( !0 !== d || 3 != h.nodeType || !h.previousSibling || 3 != h.previousSibling.nodeType ) if ((e++, e == f)) { b = h; break; } } else b = b.childNodes[f]; } return b ? new CKEDITOR.dom.node(b) : null; }, getElementsByTag: function (a, d) { (CKEDITOR.env.ie && 8 >= document.documentMode) || !d || (a = d + ":" + a); return new CKEDITOR.dom.nodeList(this.$.getElementsByTagName(a)); }, getHead: function () { var a = this.$.getElementsByTagName("head")[0]; return (a = a ? new CKEDITOR.dom.element(a) : this.getDocumentElement().append( new CKEDITOR.dom.element("head"), !0 )); }, getBody: function () { return new CKEDITOR.dom.element(this.$.body); }, getDocumentElement: function () { return new CKEDITOR.dom.element(this.$.documentElement); }, getWindow: function () { return new CKEDITOR.dom.window(this.$.parentWindow || this.$.defaultView); }, write: function (a) { this.$.open("text/html", "replace"); CKEDITOR.env.ie && (a = a.replace( /(?:^\s*]*?>)|^/i, '$\x26\n\x3cscript data-cke-temp\x3d"1"\x3e(' + CKEDITOR.tools.fixDomain + ")();\x3c/script\x3e" )); this.$.write(a); this.$.close(); }, find: function (a) { return new CKEDITOR.dom.nodeList(this.$.querySelectorAll(a)); }, findOne: function (a) { return (a = this.$.querySelector(a)) ? new CKEDITOR.dom.element(a) : null; }, _getHtml5ShivFrag: function () { var a = this.getCustomData("html5ShivFrag"); a || ((a = this.$.createDocumentFragment()), CKEDITOR.tools.enableHtml5Elements(a, !0), this.setCustomData("html5ShivFrag", a)); return a; }, }); CKEDITOR.dom.nodeList = function (a) { this.$ = a; }; CKEDITOR.dom.nodeList.prototype = { count: function () { return this.$.length; }, getItem: function (a) { return 0 > a || a >= this.$.length ? null : (a = this.$[a]) ? new CKEDITOR.dom.node(a) : null; }, toArray: function () { return CKEDITOR.tools.array.map(this.$, function (a) { return new CKEDITOR.dom.node(a); }); }, }; CKEDITOR.dom.element = function (a, d) { "string" == typeof a && (a = (d ? d.$ : document).createElement(a)); CKEDITOR.dom.domObject.call(this, a); }; CKEDITOR.dom.element.get = function (a) { return ( (a = "string" == typeof a ? document.getElementById(a) || document.getElementsByName(a)[0] : a) && (a.$ ? a : new CKEDITOR.dom.element(a)) ); }; CKEDITOR.dom.element.prototype = new CKEDITOR.dom.node(); CKEDITOR.dom.element.createFromHtml = function (a, d) { var b = new CKEDITOR.dom.element("div", d); b.setHtml(a); return b.getFirst().remove(); }; CKEDITOR.dom.element.setMarker = function (a, d, b, c) { var f = d.getCustomData("list_marker_id") || d .setCustomData("list_marker_id", CKEDITOR.tools.getNextNumber()) .getCustomData("list_marker_id"), e = d.getCustomData("list_marker_names") || d .setCustomData("list_marker_names", {}) .getCustomData("list_marker_names"); a[f] = d; e[b] = 1; return d.setCustomData(b, c); }; CKEDITOR.dom.element.clearAllMarkers = function (a) { for (var d in a) CKEDITOR.dom.element.clearMarkers(a, a[d], 1); }; CKEDITOR.dom.element.clearMarkers = function (a, d, b) { var c = d.getCustomData("list_marker_names"), f = d.getCustomData("list_marker_id"), e; for (e in c) d.removeCustomData(e); d.removeCustomData("list_marker_names"); b && (d.removeCustomData("list_marker_id"), delete a[f]); }; (function () { function a(a, b) { return -1 < (" " + a + " ").replace(e, " ").indexOf(" " + b + " "); } function d(a) { var b = !0; a.$.id || ((a.$.id = "cke_tmp_" + CKEDITOR.tools.getNextNumber()), (b = !1)); return function () { b || a.removeAttribute("id"); }; } function b(a, b) { var c = CKEDITOR.tools.escapeCss(a.$.id); return "#" + c + " " + b.split(/,\s*/).join(", #" + c + " "); } function c(a) { for (var b = 0, c = 0, g = k[a].length; c < g; c++) b += parseFloat(this.getComputedStyle(k[a][c]) || 0, 10) || 0; return b; } var f = document.createElement("_").classList, f = "undefined" !== typeof f && null !== String(f.add).match(/\[Native code\]/gi), e = /[\n\t\r]/g; CKEDITOR.tools.extend(CKEDITOR.dom.element.prototype, { type: CKEDITOR.NODE_ELEMENT, addClass: f ? function (a) { this.$.classList.add(a); return this; } : function (b) { var c = this.$.className; c && (a(c, b) || (c += " " + b)); this.$.className = c || b; return this; }, removeClass: f ? function (a) { var b = this.$; b.classList.remove(a); b.className || b.removeAttribute("class"); return this; } : function (b) { var c = this.getAttribute("class"); c && a(c, b) && ((c = c .replace(new RegExp("(?:^|\\s+)" + b + "(?\x3d\\s|$)"), "") .replace(/^\s+/, "")) ? this.setAttribute("class", c) : this.removeAttribute("class")); return this; }, hasClass: function (b) { return a(this.$.className, b); }, append: function (a, b) { "string" == typeof a && (a = this.getDocument().createElement(a)); b ? this.$.insertBefore(a.$, this.$.firstChild) : this.$.appendChild(a.$); return a; }, appendHtml: function (a) { if (this.$.childNodes.length) { var b = new CKEDITOR.dom.element("div", this.getDocument()); b.setHtml(a); b.moveChildren(this); } else this.setHtml(a); }, appendText: function (a) { null != this.$.text && CKEDITOR.env.ie && 9 > CKEDITOR.env.version ? (this.$.text += a) : this.append(new CKEDITOR.dom.text(a)); }, appendBogus: function (a) { if (a || CKEDITOR.env.needsBrFiller) { for ( a = this.getLast(); a && a.type == CKEDITOR.NODE_TEXT && !CKEDITOR.tools.rtrim(a.getText()); ) a = a.getPrevious(); (a && a.is && a.is("br")) || ((a = this.getDocument().createElement("br")), CKEDITOR.env.gecko && a.setAttribute("type", "_moz"), this.append(a)); } }, breakParent: function (a, b) { var c = new CKEDITOR.dom.range(this.getDocument()); c.setStartAfter(this); c.setEndAfter(a); var g = c.extractContents(!1, b || !1), e; c.insertNode(this.remove()); if (CKEDITOR.env.ie && !CKEDITOR.env.edge) { for (c = new CKEDITOR.dom.element("div"); (e = g.getFirst()); ) e.$.style.backgroundColor && (e.$.style.backgroundColor = e.$.style.backgroundColor), c.append(e); c.insertAfter(this); c.remove(!0); } else g.insertAfterNode(this); }, contains: document.compareDocumentPosition ? function (a) { return !!(this.$.compareDocumentPosition(a.$) & 16); } : function (a) { var b = this.$; return a.type != CKEDITOR.NODE_ELEMENT ? b.contains(a.getParent().$) : b != a.$ && b.contains(a.$); }, focus: (function () { function a() { try { this.$.focus(); } catch (b) {} } return function (b) { b ? CKEDITOR.tools.setTimeout(a, 100, this) : a.call(this); }; })(), getHtml: function () { var a = this.$.innerHTML; return CKEDITOR.env.ie ? a.replace(/<\?[^>]*>/g, "") : a; }, getOuterHtml: function () { if (this.$.outerHTML) return this.$.outerHTML.replace(/<\?[^>]*>/, ""); var a = this.$.ownerDocument.createElement("div"); a.appendChild(this.$.cloneNode(!0)); return a.innerHTML; }, getClientRect: function (a) { var b = CKEDITOR.tools.extend({}, this.$.getBoundingClientRect()); !b.width && (b.width = b.right - b.left); !b.height && (b.height = b.bottom - b.top); return a ? CKEDITOR.tools.getAbsoluteRectPosition(this.getWindow(), b) : b; }, setHtml: CKEDITOR.env.ie && 9 > CKEDITOR.env.version ? function (a) { try { var b = this.$; if (this.getParent()) return (b.innerHTML = a); var c = this.getDocument()._getHtml5ShivFrag(); c.appendChild(b); b.innerHTML = a; c.removeChild(b); return a; } catch (g) { this.$.innerHTML = ""; b = new CKEDITOR.dom.element("body", this.getDocument()); b.$.innerHTML = a; for (b = b.getChildren(); b.count(); ) this.append(b.getItem(0)); return a; } } : function (a) { return (this.$.innerHTML = a); }, setText: (function () { var a = document.createElement("p"); a.innerHTML = "x"; a = a.textContent; return function (b) { this.$[a ? "textContent" : "innerText"] = b; }; })(), getAttribute: (function () { var a = function (a) { return this.$.getAttribute(a, 2); }; return CKEDITOR.env.ie && (CKEDITOR.env.ie7Compat || CKEDITOR.env.quirks) ? function (a) { switch (a) { case "class": a = "className"; break; case "http-equiv": a = "httpEquiv"; break; case "name": return this.$.name; case "tabindex": return ( (a = this.$.getAttribute(a, 2)), 0 !== a && 0 === this.$.tabIndex && (a = null), a ); case "checked": return ( (a = this.$.attributes.getNamedItem(a)), (a.specified ? a.nodeValue : this.$.checked) ? "checked" : null ); case "hspace": case "value": return this.$[a]; case "style": return this.$.style.cssText; case "contenteditable": case "contentEditable": return this.$.attributes.getNamedItem("contentEditable") .specified ? this.$.getAttribute("contentEditable") : null; } return this.$.getAttribute(a, 2); } : a; })(), getAttributes: function (a) { var b = {}, c = this.$.attributes, g; a = CKEDITOR.tools.isArray(a) ? a : []; for (g = 0; g < c.length; g++) -1 === CKEDITOR.tools.indexOf(a, c[g].name) && (b[c[g].name] = c[g].value); return b; }, getChildren: function () { return new CKEDITOR.dom.nodeList(this.$.childNodes); }, getClientSize: function () { return { width: this.$.clientWidth, height: this.$.clientHeight }; }, getComputedStyle: document.defaultView && document.defaultView.getComputedStyle ? function (a) { var b = this.getWindow().$.getComputedStyle(this.$, null); return b ? b.getPropertyValue(a) : ""; } : function (a) { return this.$.currentStyle[CKEDITOR.tools.cssStyleToDomStyle(a)]; }, getDtd: function () { var a = CKEDITOR.dtd[this.getName()]; this.getDtd = function () { return a; }; return a; }, getElementsByTag: CKEDITOR.dom.document.prototype.getElementsByTag, getTabIndex: function () { var a = this.$.tabIndex; return 0 !== a || CKEDITOR.dtd.$tabIndex[this.getName()] || 0 === parseInt(this.getAttribute("tabindex"), 10) ? a : -1; }, getText: function () { return this.$.textContent || this.$.innerText || ""; }, getWindow: function () { return this.getDocument().getWindow(); }, getId: function () { return this.$.id || null; }, getNameAtt: function () { return this.$.name || null; }, getName: function () { var a = this.$.nodeName.toLowerCase(); if (CKEDITOR.env.ie && 8 >= document.documentMode) { var b = this.$.scopeName; "HTML" != b && (a = b.toLowerCase() + ":" + a); } this.getName = function () { return a; }; return this.getName(); }, getValue: function () { return this.$.value; }, getFirst: function (a) { var b = this.$.firstChild; (b = b && new CKEDITOR.dom.node(b)) && a && !a(b) && (b = b.getNext(a)); return b; }, getLast: function (a) { var b = this.$.lastChild; (b = b && new CKEDITOR.dom.node(b)) && a && !a(b) && (b = b.getPrevious(a)); return b; }, getStyle: function (a) { return this.$.style[CKEDITOR.tools.cssStyleToDomStyle(a)]; }, is: function () { var a = this.getName(); if ("object" == typeof arguments[0]) return !!arguments[0][a]; for (var b = 0; b < arguments.length; b++) if (arguments[b] == a) return !0; return !1; }, isEditable: function (a) { var b = this.getName(); return this.isReadOnly() || "none" == this.getComputedStyle("display") || "hidden" == this.getComputedStyle("visibility") || CKEDITOR.dtd.$nonEditable[b] || CKEDITOR.dtd.$empty[b] || (this.is("a") && (this.data("cke-saved-name") || this.hasAttribute("name")) && !this.getChildCount()) ? !1 : !1 !== a ? ((a = CKEDITOR.dtd[b] || CKEDITOR.dtd.span), !(!a || !a["#"])) : !0; }, isIdentical: function (a) { var b = this.clone(0, 1); a = a.clone(0, 1); b.removeAttributes([ "_moz_dirty", "data-cke-expando", "data-cke-saved-href", "data-cke-saved-name", ]); a.removeAttributes([ "_moz_dirty", "data-cke-expando", "data-cke-saved-href", "data-cke-saved-name", ]); if (b.$.isEqualNode) return ( (b.$.style.cssText = CKEDITOR.tools.normalizeCssText( b.$.style.cssText )), (a.$.style.cssText = CKEDITOR.tools.normalizeCssText( a.$.style.cssText )), b.$.isEqualNode(a.$) ); b = b.getOuterHtml(); a = a.getOuterHtml(); if (CKEDITOR.env.ie && 9 > CKEDITOR.env.version && this.is("a")) { var c = this.getParent(); c.type == CKEDITOR.NODE_ELEMENT && ((c = c.clone()), c.setHtml(b), (b = c.getHtml()), c.setHtml(a), (a = c.getHtml())); } return b == a; }, isVisible: function () { var a = (this.$.offsetHeight || this.$.offsetWidth) && "hidden" != this.getComputedStyle("visibility"), b, c; a && CKEDITOR.env.webkit && ((b = this.getWindow()), !b.equals(CKEDITOR.document.getWindow()) && (c = b.$.frameElement) && (a = new CKEDITOR.dom.element(c).isVisible())); return !!a; }, isEmptyInlineRemoveable: function () { if (!CKEDITOR.dtd.$removeEmpty[this.getName()]) return !1; for (var a = this.getChildren(), b = 0, c = a.count(); b < c; b++) { var g = a.getItem(b); if (g.type != CKEDITOR.NODE_ELEMENT || !g.data("cke-bookmark")) if ( (g.type == CKEDITOR.NODE_ELEMENT && !g.isEmptyInlineRemoveable()) || (g.type == CKEDITOR.NODE_TEXT && CKEDITOR.tools.trim(g.getText())) ) return !1; } return !0; }, hasAttributes: CKEDITOR.env.ie && (CKEDITOR.env.ie7Compat || CKEDITOR.env.quirks) ? function () { for (var a = this.$.attributes, b = 0; b < a.length; b++) { var c = a[b]; switch (c.nodeName) { case "class": if (this.getAttribute("class")) return !0; case "data-cke-expando": continue; default: if (c.specified) return !0; } } return !1; } : function () { var a = this.$.attributes, b = a.length, c = { "data-cke-expando": 1, _moz_dirty: 1 }; return ( 0 < b && (2 < b || !c[a[0].nodeName] || (2 == b && !c[a[1].nodeName])) ); }, hasAttribute: (function () { function a(b) { var c = this.$.attributes.getNamedItem(b); if ("input" == this.getName()) switch (b) { case "class": return 0 < this.$.className.length; case "checked": return !!this.$.checked; case "value": return ( (b = this.getAttribute("type")), "checkbox" == b || "radio" == b ? "on" != this.$.value : !!this.$.value ); } return c ? c.specified : !1; } return CKEDITOR.env.ie ? 8 > CKEDITOR.env.version ? function (b) { return "name" == b ? !!this.$.name : a.call(this, b); } : a : function (a) { return !!this.$.attributes.getNamedItem(a); }; })(), hide: function () { this.setStyle("display", "none"); }, moveChildren: function (a, b) { var c = this.$; a = a.$; if (c != a) { var g; if (b) for (; (g = c.lastChild); ) a.insertBefore(c.removeChild(g), a.firstChild); else for (; (g = c.firstChild); ) a.appendChild(c.removeChild(g)); } }, mergeSiblings: (function () { function a(b, c, g) { if (c && c.type == CKEDITOR.NODE_ELEMENT) { for ( var e = []; c.data("cke-bookmark") || c.isEmptyInlineRemoveable(); ) if ( (e.push(c), (c = g ? c.getNext() : c.getPrevious()), !c || c.type != CKEDITOR.NODE_ELEMENT) ) return; if (b.isIdentical(c)) { for (var h = g ? b.getLast() : b.getFirst(); e.length; ) e.shift().move(b, !g); c.moveChildren(b, !g); c.remove(); h && h.type == CKEDITOR.NODE_ELEMENT && h.mergeSiblings(); } } } return function (b) { if ( !1 === b || CKEDITOR.dtd.$removeEmpty[this.getName()] || this.is("a") ) a(this, this.getNext(), !0), a(this, this.getPrevious()); }; })(), show: function () { this.setStyles({ display: "", visibility: "" }); }, setAttribute: (function () { var a = function (a, b) { this.$.setAttribute(a, b); return this; }; return CKEDITOR.env.ie && (CKEDITOR.env.ie7Compat || CKEDITOR.env.quirks) ? function (b, c) { "class" == b ? (this.$.className = c) : "style" == b ? (this.$.style.cssText = c) : "tabindex" == b ? (this.$.tabIndex = c) : "checked" == b ? (this.$.checked = c) : "contenteditable" == b ? a.call(this, "contentEditable", c) : a.apply(this, arguments); return this; } : CKEDITOR.env.ie8Compat && CKEDITOR.env.secure ? function (b, c) { if ("src" == b && c.match(/^http:\/\//)) try { a.apply(this, arguments); } catch (g) {} else a.apply(this, arguments); return this; } : a; })(), setAttributes: function (a) { for (var b in a) this.setAttribute(b, a[b]); return this; }, setValue: function (a) { this.$.value = a; return this; }, removeAttribute: (function () { var a = function (a) { this.$.removeAttribute(a); }; return CKEDITOR.env.ie && (CKEDITOR.env.ie7Compat || CKEDITOR.env.quirks) ? function (a) { "class" == a ? (a = "className") : "tabindex" == a ? (a = "tabIndex") : "contenteditable" == a && (a = "contentEditable"); this.$.removeAttribute(a); } : a; })(), removeAttributes: function (a) { if (CKEDITOR.tools.isArray(a)) for (var b = 0; b < a.length; b++) this.removeAttribute(a[b]); else for (b in ((a = a || this.getAttributes()), a)) a.hasOwnProperty(b) && this.removeAttribute(b); }, removeStyle: function (a) { var b = this.$.style; if ( b.removeProperty || ("border" != a && "margin" != a && "padding" != a) ) b.removeProperty ? b.removeProperty(a) : b.removeAttribute(CKEDITOR.tools.cssStyleToDomStyle(a)), this.$.style.cssText || this.removeAttribute("style"); else { var c = ["top", "left", "right", "bottom"], g; "border" == a && (g = ["color", "style", "width"]); for (var b = [], e = 0; e < c.length; e++) if (g) for (var d = 0; d < g.length; d++) b.push([a, c[e], g[d]].join("-")); else b.push([a, c[e]].join("-")); for (a = 0; a < b.length; a++) this.removeStyle(b[a]); } }, setStyle: function (a, b) { this.$.style[CKEDITOR.tools.cssStyleToDomStyle(a)] = b; return this; }, setStyles: function (a) { for (var b in a) this.setStyle(b, a[b]); return this; }, setOpacity: function (a) { CKEDITOR.env.ie && 9 > CKEDITOR.env.version ? ((a = Math.round(100 * a)), this.setStyle( "filter", 100 <= a ? "" : "progid:DXImageTransform.Microsoft.Alpha(opacity\x3d" + a + ")" )) : this.setStyle("opacity", a); }, unselectable: function () { this.setStyles(CKEDITOR.tools.cssVendorPrefix("user-select", "none")); if (CKEDITOR.env.ie) { this.setAttribute("unselectable", "on"); for ( var a, b = this.getElementsByTag("*"), c = 0, g = b.count(); c < g; c++ ) (a = b.getItem(c)), a.setAttribute("unselectable", "on"); } }, getPositionedAncestor: function () { for (var a = this; "html" != a.getName(); ) { if ("static" != a.getComputedStyle("position")) return a; a = a.getParent(); } return null; }, getDocumentPosition: function (a) { var b = 0, c = 0, g = this.getDocument(), e = g.getBody(), d = "BackCompat" == g.$.compatMode; if ( document.documentElement.getBoundingClientRect && (CKEDITOR.env.ie ? 8 !== CKEDITOR.env.version : 1) ) { var f = this.$.getBoundingClientRect(), k = g.$.documentElement, v = k.clientTop || e.$.clientTop || 0, m = k.clientLeft || e.$.clientLeft || 0, M = !0; CKEDITOR.env.ie && ((M = g.getDocumentElement().contains(this)), (g = g.getBody().contains(this)), (M = (d && g) || (!d && M))); M && (CKEDITOR.env.webkit || (CKEDITOR.env.ie && 12 <= CKEDITOR.env.version) ? ((b = e.$.scrollLeft || k.scrollLeft), (c = e.$.scrollTop || k.scrollTop)) : ((c = d ? e.$ : k), (b = c.scrollLeft), (c = c.scrollTop)), (b = f.left + b - m), (c = f.top + c - v)); } else for ( v = this, m = null; v && "body" != v.getName() && "html" != v.getName(); ) { b += v.$.offsetLeft - v.$.scrollLeft; c += v.$.offsetTop - v.$.scrollTop; v.equals(this) || ((b += v.$.clientLeft || 0), (c += v.$.clientTop || 0)); for (; m && !m.equals(v); ) (b -= m.$.scrollLeft), (c -= m.$.scrollTop), (m = m.getParent()); m = v; v = (f = v.$.offsetParent) ? new CKEDITOR.dom.element(f) : null; } a && ((f = this.getWindow()), (v = a.getWindow()), !f.equals(v) && f.$.frameElement && ((a = new CKEDITOR.dom.element( f.$.frameElement ).getDocumentPosition(a)), (b += a.x), (c += a.y))); document.documentElement.getBoundingClientRect || !CKEDITOR.env.gecko || d || ((b += this.$.clientLeft ? 1 : 0), (c += this.$.clientTop ? 1 : 0)); return { x: b, y: c }; }, scrollIntoView: function (a) { var b = this.getParent(); if (b) { do if ( (((b.$.clientWidth && b.$.clientWidth < b.$.scrollWidth) || (b.$.clientHeight && b.$.clientHeight < b.$.scrollHeight)) && !b.is("body") && this.scrollIntoParent(b, a, 1), b.is("html")) ) { var c = b.getWindow(); try { var g = c.$.frameElement; g && (b = new CKEDITOR.dom.element(g)); } catch (e) {} } while ((b = b.getParent())); } }, scrollIntoParent: function (a, b, c) { var g, e, d, f; function k(b, c) { /body|html/.test(a.getName()) ? a.getWindow().$.scrollBy(b, c) : ((a.$.scrollLeft += b), (a.$.scrollTop += c)); } function v(a, b) { var c = { x: 0, y: 0 }; if (!a.is(M ? "body" : "html")) { var g = a.$.getBoundingClientRect(); c.x = g.left; c.y = g.top; } g = a.getWindow(); g.equals(b) || ((g = v(CKEDITOR.dom.element.get(g.$.frameElement), b)), (c.x += g.x), (c.y += g.y)); return c; } function m(a, b) { return parseInt(a.getComputedStyle("margin-" + b) || 0, 10) || 0; } !a && (a = this.getWindow()); d = a.getDocument(); var M = "BackCompat" == d.$.compatMode; a instanceof CKEDITOR.dom.window && (a = M ? d.getBody() : d.getDocumentElement()); CKEDITOR.env.webkit && (d = this.getEditor(!1)) && (d._.previousScrollTop = null); d = a.getWindow(); e = v(this, d); var w = v(a, d), J = this.$.offsetHeight; g = this.$.offsetWidth; var F = a.$.clientHeight, q = a.$.clientWidth; d = e.x - m(this, "left") - w.x || 0; f = e.y - m(this, "top") - w.y || 0; g = e.x + g + m(this, "right") - (w.x + q) || 0; e = e.y + J + m(this, "bottom") - (w.y + F) || 0; (0 > f || 0 < e) && k(0, !0 === b ? f : !1 === b ? e : 0 > f ? f : e); c && (0 > d || 0 < g) && k(0 > d ? d : g, 0); }, setState: function (a, b, c) { b = b || "cke"; switch (a) { case CKEDITOR.TRISTATE_ON: this.addClass(b + "_on"); this.removeClass(b + "_off"); this.removeClass(b + "_disabled"); c && this.setAttribute("aria-pressed", !0); c && this.removeAttribute("aria-disabled"); break; case CKEDITOR.TRISTATE_DISABLED: this.addClass(b + "_disabled"); this.removeClass(b + "_off"); this.removeClass(b + "_on"); c && this.setAttribute("aria-disabled", !0); c && this.removeAttribute("aria-pressed"); break; default: this.addClass(b + "_off"), this.removeClass(b + "_on"), this.removeClass(b + "_disabled"), c && this.removeAttribute("aria-pressed"), c && this.removeAttribute("aria-disabled"); } }, getFrameDocument: function () { var a = this.$; try { a.contentWindow.document; } catch (b) { a.src = a.src; } return a && new CKEDITOR.dom.document(a.contentWindow.document); }, copyAttributes: function (a, b) { var c = this.$.attributes; b = b || {}; for (var g = 0; g < c.length; g++) { var e = c[g], d = e.nodeName.toLowerCase(), f; if (!(d in b)) if ("checked" == d && (f = this.getAttribute(d))) a.setAttribute(d, f); else if (!CKEDITOR.env.ie || this.hasAttribute(d)) (f = this.getAttribute(d)), null === f && (f = e.nodeValue), a.setAttribute(d, f); } "" !== this.$.style.cssText && (a.$.style.cssText = this.$.style.cssText); }, renameNode: function (a) { if (this.getName() != a) { var b = this.getDocument(); a = new CKEDITOR.dom.element(a, b); this.copyAttributes(a); this.moveChildren(a); this.getParent(!0) && this.$.parentNode.replaceChild(a.$, this.$); a.$["data-cke-expando"] = this.$["data-cke-expando"]; this.$ = a.$; delete this.getName; } }, getChild: (function () { function a(b, c) { var g = b.childNodes; if (0 <= c && c < g.length) return g[c]; } return function (b) { var c = this.$; if (b.slice) for (b = b.slice(); 0 < b.length && c; ) c = a(c, b.shift()); else c = a(c, b); return c ? new CKEDITOR.dom.node(c) : null; }; })(), getChildCount: function () { return this.$.childNodes.length; }, disableContextMenu: function () { function a(b) { return ( b.type == CKEDITOR.NODE_ELEMENT && b.hasClass("cke_enable_context_menu") ); } this.on("contextmenu", function (b) { b.data.getTarget().getAscendant(a, !0) || b.data.preventDefault(); }); }, getDirection: function (a) { return a ? this.getComputedStyle("direction") || this.getDirection() || (this.getParent() && this.getParent().getDirection(1)) || this.getDocument().$.dir || "ltr" : this.getStyle("direction") || this.getAttribute("dir"); }, data: function (a, b) { a = "data-" + a; if (void 0 === b) return this.getAttribute(a); !1 === b ? this.removeAttribute(a) : this.setAttribute(a, b); return null; }, getEditor: function (a) { var b = CKEDITOR.instances, c, g, e; a = a || void 0 === a; for (c in b) if ( ((g = b[c]), (g.element.equals(this) && g.elementMode != CKEDITOR.ELEMENT_MODE_APPENDTO) || (!a && (e = g.editable()) && (e.equals(this) || e.contains(this)))) ) return g; return null; }, find: function (a) { var c = d(this); a = new CKEDITOR.dom.nodeList(this.$.querySelectorAll(b(this, a))); c(); return a; }, findOne: function (a) { var c = d(this); a = this.$.querySelector(b(this, a)); c(); return a ? new CKEDITOR.dom.element(a) : null; }, forEach: function (a, b, c) { if (!(c || (b && this.type != b))) var g = a(this); if (!1 !== g) { c = this.getChildren(); for (var e = 0; e < c.count(); e++) (g = c.getItem(e)), g.type == CKEDITOR.NODE_ELEMENT ? g.forEach(a, b) : (b && g.type != b) || a(g); } }, fireEventHandler: function (a, b) { var c = "on" + a, g = this.$; if (CKEDITOR.env.ie && 9 > CKEDITOR.env.version) { var e = g.ownerDocument.createEventObject(), d; for (d in b) e[d] = b[d]; g.fireEvent(c, e); } else g[g[a] ? a : c](b); }, isDetached: function () { var a = this.getDocument(), b = a.getDocumentElement(); return b.equals(this) || b.contains(this) ? !CKEDITOR.env.ie || (8 < CKEDITOR.env.version && !CKEDITOR.env.quirks) ? !a.$.defaultView : !1 : !0; }, }); var k = { width: [ "border-left-width", "border-right-width", "padding-left", "padding-right", ], height: [ "border-top-width", "border-bottom-width", "padding-top", "padding-bottom", ], }; CKEDITOR.dom.element.prototype.setSize = function (a, b, e) { "number" == typeof b && (!e || (CKEDITOR.env.ie && CKEDITOR.env.quirks) || (b -= c.call(this, a)), this.setStyle(a, b + "px")); }; CKEDITOR.dom.element.prototype.getSize = function (a, b) { var e = Math.max( this.$["offset" + CKEDITOR.tools.capitalize(a)], this.$["client" + CKEDITOR.tools.capitalize(a)] ) || 0; b && (e -= c.call(this, a)); return e; }; })(); CKEDITOR.dom.documentFragment = function (a) { a = a || CKEDITOR.document; this.$ = a.type == CKEDITOR.NODE_DOCUMENT ? a.$.createDocumentFragment() : a; }; CKEDITOR.tools.extend( CKEDITOR.dom.documentFragment.prototype, CKEDITOR.dom.element.prototype, { type: CKEDITOR.NODE_DOCUMENT_FRAGMENT, insertAfterNode: function (a) { a = a.$; a.parentNode.insertBefore(this.$, a.nextSibling); }, getHtml: function () { var a = new CKEDITOR.dom.element("div"); this.clone(1, 1).appendTo(a); return a.getHtml().replace(/\s*data-cke-expando=".*?"/g, ""); }, }, !0, { append: 1, appendBogus: 1, clone: 1, getFirst: 1, getHtml: 1, getLast: 1, getParent: 1, getNext: 1, getPrevious: 1, appendTo: 1, moveChildren: 1, insertBefore: 1, insertAfterNode: 1, replace: 1, trim: 1, type: 1, ltrim: 1, rtrim: 1, getDocument: 1, getChildCount: 1, getChild: 1, getChildren: 1, } ); CKEDITOR.tools.extend( CKEDITOR.dom.documentFragment.prototype, CKEDITOR.dom.document.prototype, !0, { find: 1, findOne: 1 } ); (function () { function a(a, b) { var c = this.range; if (this._.end) return null; if (!this._.start) { this._.start = 1; if (c.collapsed) return this.end(), null; c.optimize(); } var g, e = c.startContainer; g = c.endContainer; var d = c.startOffset, f = c.endOffset, h, x = this.guard, k = this.type, l = a ? "getPreviousSourceNode" : "getNextSourceNode"; if (!a && !this._.guardLTR) { var n = g.type == CKEDITOR.NODE_ELEMENT ? g : g.getParent(), D = g.type == CKEDITOR.NODE_ELEMENT ? g.getChild(f) : g.getNext(); this._.guardLTR = function (a, b) { return ( (!b || !n.equals(a)) && (!D || !a.equals(D)) && (a.type != CKEDITOR.NODE_ELEMENT || !b || !a.equals(c.root)) ); }; } if (a && !this._.guardRTL) { var B = e.type == CKEDITOR.NODE_ELEMENT ? e : e.getParent(), t = e.type == CKEDITOR.NODE_ELEMENT ? d ? e.getChild(d - 1) : null : e.getPrevious(); this._.guardRTL = function (a, b) { return ( (!b || !B.equals(a)) && (!t || !a.equals(t)) && (a.type != CKEDITOR.NODE_ELEMENT || !b || !a.equals(c.root)) ); }; } var H = a ? this._.guardRTL : this._.guardLTR; h = x ? function (a, b) { return !1 === H(a, b) ? !1 : x(a, b); } : H; this.current ? (g = this.current[l](!1, k, h)) : (a ? g.type == CKEDITOR.NODE_ELEMENT && (g = 0 < f ? g.getChild(f - 1) : !1 === h(g, !0) ? null : g.getPreviousSourceNode(!0, k, h)) : ((g = e), g.type == CKEDITOR.NODE_ELEMENT && ((g = g.getChild(d)) || (g = !1 === h(e, !0) ? null : e.getNextSourceNode(!0, k, h)))), g && !1 === h(g) && (g = null)); for (; g && !this._.end; ) { this.current = g; if (!this.evaluator || !1 !== this.evaluator(g)) { if (!b) return g; } else if (b && this.evaluator) return !1; g = g[l](!1, k, h); } this.end(); return (this.current = null); } function d(b) { for (var c, g = null; (c = a.call(this, b)); ) g = c; return g; } CKEDITOR.dom.walker = CKEDITOR.tools.createClass({ $: function (a) { this.range = a; this._ = {}; }, proto: { end: function () { this._.end = 1; }, next: function () { return a.call(this); }, previous: function () { return a.call(this, 1); }, checkForward: function () { return !1 !== a.call(this, 0, 1); }, checkBackward: function () { return !1 !== a.call(this, 1, 1); }, lastForward: function () { return d.call(this); }, lastBackward: function () { return d.call(this, 1); }, reset: function () { delete this.current; this._ = {}; }, }, }); var b = { block: 1, "list-item": 1, table: 1, "table-row-group": 1, "table-header-group": 1, "table-footer-group": 1, "table-row": 1, "table-column-group": 1, "table-column": 1, "table-cell": 1, "table-caption": 1, }, c = { absolute: 1, fixed: 1 }; CKEDITOR.dom.element.prototype.isBlockBoundary = function (a) { return "none" != this.getComputedStyle("float") || this.getComputedStyle("position") in c || !b[this.getComputedStyle("display")] ? !!(this.is(CKEDITOR.dtd.$block) || (a && this.is(a))) : !0; }; CKEDITOR.dom.walker.blockBoundary = function (a) { return function (b) { return !(b.type == CKEDITOR.NODE_ELEMENT && b.isBlockBoundary(a)); }; }; CKEDITOR.dom.walker.listItemBoundary = function () { return this.blockBoundary({ br: 1 }); }; CKEDITOR.dom.walker.bookmark = function (a, b) { function c(a) { return ( a && a.getName && "span" == a.getName() && a.data("cke-bookmark") ); } return function (g) { var e, d; e = g && g.type != CKEDITOR.NODE_ELEMENT && (d = g.getParent()) && c(d); e = a ? e : e || c(g); return !!(b ^ e); }; }; CKEDITOR.dom.walker.whitespaces = function (a) { return function (b) { var c; b && b.type == CKEDITOR.NODE_TEXT && (c = !CKEDITOR.tools.trim(b.getText()) || (CKEDITOR.env.webkit && b.getText() == CKEDITOR.dom.selection.FILLING_CHAR_SEQUENCE)); return !!(a ^ c); }; }; CKEDITOR.dom.walker.invisible = function (a) { var b = CKEDITOR.dom.walker.whitespaces(), c = CKEDITOR.env.webkit ? 1 : 0; return function (g) { b(g) ? (g = 1) : (g.type == CKEDITOR.NODE_TEXT && (g = g.getParent()), (g = g.$.offsetWidth <= c)); return !!(a ^ g); }; }; CKEDITOR.dom.walker.nodeType = function (a, b) { return function (c) { return !!(b ^ (c.type == a)); }; }; CKEDITOR.dom.walker.bogus = function (a) { function b(a) { return !e(a) && !k(a); } return function (c) { var g = CKEDITOR.env.needsBrFiller ? c.is && c.is("br") : c.getText && f.test(c.getText()); g && ((g = c.getParent()), (c = c.getNext(b)), (g = g.isBlockBoundary() && (!c || (c.type == CKEDITOR.NODE_ELEMENT && c.isBlockBoundary())))); return !!(a ^ g); }; }; CKEDITOR.dom.walker.temp = function (a) { return function (b) { b.type != CKEDITOR.NODE_ELEMENT && (b = b.getParent()); b = b && b.hasAttribute("data-cke-temp"); return !!(a ^ b); }; }; var f = /^[\t\r\n ]*(?: |\xa0)$/, e = CKEDITOR.dom.walker.whitespaces(), k = CKEDITOR.dom.walker.bookmark(), h = CKEDITOR.dom.walker.temp(), n = function (a) { return ( k(a) || e(a) || (a.type == CKEDITOR.NODE_ELEMENT && a.is(CKEDITOR.dtd.$inline) && !a.is(CKEDITOR.dtd.$empty)) ); }; CKEDITOR.dom.walker.ignored = function (a) { return function (b) { b = e(b) || k(b) || h(b); return !!(a ^ b); }; }; var l = CKEDITOR.dom.walker.ignored(); CKEDITOR.dom.walker.empty = function (a) { return function (b) { for (var c = 0, g = b.getChildCount(); c < g; ++c) if (!l(b.getChild(c))) return !!a; return !a; }; }; var g = CKEDITOR.dom.walker.empty(), x = (CKEDITOR.dom.walker.validEmptyBlockContainers = CKEDITOR.tools.extend( (function (a) { var b = {}, c; for (c in a) CKEDITOR.dtd[c]["#"] && (b[c] = 1); return b; })(CKEDITOR.dtd.$block), { caption: 1, td: 1, th: 1 } )); CKEDITOR.dom.walker.editable = function (a) { return function (b) { b = l(b) ? !1 : b.type == CKEDITOR.NODE_TEXT || (b.type == CKEDITOR.NODE_ELEMENT && (b.is(CKEDITOR.dtd.$inline) || b.is("hr") || "false" == b.getAttribute("contenteditable") || (!CKEDITOR.env.needsBrFiller && b.is(x) && g(b)))) ? !0 : !1; return !!(a ^ b); }; }; CKEDITOR.dom.element.prototype.getBogus = function () { var a = this; do a = a.getPreviousSourceNode(); while (n(a)); return a && (CKEDITOR.env.needsBrFiller ? a.is && a.is("br") : a.getText && f.test(a.getText())) ? a : !1; }; })(); ("use strict"); CKEDITOR.dom.range = function (a) { this.endOffset = this.endContainer = this.startOffset = this.startContainer = null; this.collapsed = !0; var d = a instanceof CKEDITOR.dom.document; this.document = d ? a : a.getDocument(); this.root = d ? a.getBody() : a; }; (function () { function a(a) { a.collapsed = a.startContainer && a.endContainer && a.startContainer.equals(a.endContainer) && a.startOffset == a.endOffset; } function d(a, b, c, e, d) { function f(a, b, c, g) { var Y = c ? a.getPrevious() : a.getNext(); if (g && k) return Y; n || g ? b.append(a.clone(!0, d), c) : (a.remove(), l && b.append(a, c)); return Y; } function m() { var a, b, c, g = Math.min(L.length, r.length); for (a = 0; a < g; a++) if (((b = L[a]), (c = r[a]), !b.equals(c))) return a; return a - 1; } function h() { var b = E - 1, c = H && A && !q.equals(u); b < S - 1 || b < p - 1 || c ? (c ? a.moveToPosition(u, CKEDITOR.POSITION_BEFORE_START) : p == b + 1 && t ? a.moveToPosition(r[b], CKEDITOR.POSITION_BEFORE_END) : a.moveToPosition(r[b + 1], CKEDITOR.POSITION_BEFORE_START), e && (b = L[b + 1]) && b.type == CKEDITOR.NODE_ELEMENT && ((c = CKEDITOR.dom.element.createFromHtml( '\x3cspan data-cke-bookmark\x3d"1" style\x3d"display:none"\x3e\x26nbsp;\x3c/span\x3e', a.document )), c.insertAfter(b), b.mergeSiblings(!1), a.moveToBookmark({ startNode: c }))) : a.collapse(!0); } a.optimizeBookmark(); var k = 0 === b, l = 1 == b, n = 2 == b; b = n || l; var q = a.startContainer, u = a.endContainer, K = a.startOffset, D = a.endOffset, B, t, H, A, I, N; if ( n && u.type == CKEDITOR.NODE_TEXT && (q.equals(u) || (q.type === CKEDITOR.NODE_ELEMENT && q.getFirst().equals(u))) ) c.append(a.document.createText(u.substring(K, D))); else { u.type == CKEDITOR.NODE_TEXT ? n ? (N = !0) : (u = u.split(D)) : 0 < u.getChildCount() ? D >= u.getChildCount() ? ((u = u.getChild(D - 1)), (t = !0)) : (u = u.getChild(D)) : (A = t = !0); q.type == CKEDITOR.NODE_TEXT ? n ? (I = !0) : q.split(K) : 0 < q.getChildCount() ? 0 === K ? ((q = q.getChild(K)), (B = !0)) : (q = q.getChild(K - 1)) : (H = B = !0); for ( var L = q.getParents(), r = u.getParents(), E = m(), S = L.length - 1, p = r.length - 1, C = c, Y, aa, W, ea = -1, U = E; U <= S; U++ ) { aa = L[U]; W = aa.getNext(); for ( U != S || (aa.equals(r[U]) && S < p) ? b && (Y = C.append(aa.clone(0, d))) : B ? f(aa, C, !1, H) : I && C.append(a.document.createText(aa.substring(K))); W; ) { if (W.equals(r[U])) { ea = U; break; } W = f(W, C); } C = Y; } C = c; for (U = E; U <= p; U++) if (((c = r[U]), (W = c.getPrevious()), c.equals(L[U]))) b && (C = C.getChild(0)); else { U != p || (c.equals(L[U]) && p < S) ? b && (Y = C.append(c.clone(0, d))) : t ? f(c, C, !1, A) : N && C.append(a.document.createText(c.substring(0, D))); if (U > ea) for (; W; ) W = f(W, C, !0); C = Y; } n || h(); } } function b() { var a = !1, b = CKEDITOR.dom.walker.whitespaces(), c = CKEDITOR.dom.walker.bookmark(!0), d = CKEDITOR.dom.walker.bogus(); return function (f) { return c(f) || b(f) ? !0 : d(f) && !a ? (a = !0) : (f.type == CKEDITOR.NODE_TEXT && (f.hasAscendant("pre") || CKEDITOR.tools.trim(f.getText()).length)) || (f.type == CKEDITOR.NODE_ELEMENT && !f.is(e)) ? !1 : !0; }; } function c(a) { var b = CKEDITOR.dom.walker.whitespaces(), c = CKEDITOR.dom.walker.bookmark(1); return function (e) { return c(e) || b(e) ? !0 : (!a && k(e)) || (e.type == CKEDITOR.NODE_ELEMENT && e.is(CKEDITOR.dtd.$removeEmpty)); }; } function f(a) { return function () { var b; return this[a ? "getPreviousNode" : "getNextNode"](function (a) { !b && l(a) && (b = a); return n(a) && !(k(a) && a.equals(b)); }); }; } var e = { abbr: 1, acronym: 1, b: 1, bdo: 1, big: 1, cite: 1, code: 1, del: 1, dfn: 1, em: 1, font: 1, i: 1, ins: 1, label: 1, kbd: 1, q: 1, samp: 1, small: 1, span: 1, strike: 1, strong: 1, sub: 1, sup: 1, tt: 1, u: 1, var: 1, }, k = CKEDITOR.dom.walker.bogus(), h = /^[\t\r\n ]*(?: |\xa0)$/, n = CKEDITOR.dom.walker.editable(), l = CKEDITOR.dom.walker.ignored(!0); CKEDITOR.dom.range.prototype = { clone: function () { var a = new CKEDITOR.dom.range(this.root); a._setStartContainer(this.startContainer); a.startOffset = this.startOffset; a._setEndContainer(this.endContainer); a.endOffset = this.endOffset; a.collapsed = this.collapsed; return a; }, collapse: function (a) { a ? (this._setEndContainer(this.startContainer), (this.endOffset = this.startOffset)) : (this._setStartContainer(this.endContainer), (this.startOffset = this.endOffset)); this.collapsed = !0; }, cloneContents: function (a) { var b = new CKEDITOR.dom.documentFragment(this.document); this.collapsed || d(this, 2, b, !1, "undefined" == typeof a ? !0 : a); return b; }, deleteContents: function (a) { this.collapsed || d(this, 0, null, a); }, extractContents: function (a, b) { var c = new CKEDITOR.dom.documentFragment(this.document); this.collapsed || d(this, 1, c, a, "undefined" == typeof b ? !0 : b); return c; }, equals: function (a) { return ( this.startOffset === a.startOffset && this.endOffset === a.endOffset && this.startContainer.equals(a.startContainer) && this.endContainer.equals(a.endContainer) ); }, createBookmark: function (a) { function b(a) { return a.getAscendant(function (a) { var b; if ((b = a.data && a.data("cke-temp"))) b = -1 === CKEDITOR.tools.array.indexOf( ["cke_copybin", "cke_pastebin"], a.getAttribute("id") ); return b; }, !0); } var c = this.startContainer, e = this.endContainer, d = this.collapsed, f, m, h, k; f = this.document.createElement("span"); f.data("cke-bookmark", 1); f.setStyle("display", "none"); f.setHtml("\x26nbsp;"); a && ((h = "cke_bm_" + CKEDITOR.tools.getNextNumber()), f.setAttribute("id", h + (d ? "C" : "S"))); d || ((m = f.clone()), m.setHtml("\x26nbsp;"), a && m.setAttribute("id", h + "E"), (k = this.clone()), b(e) && ((e = b(e)), k.moveToPosition(e, CKEDITOR.POSITION_AFTER_END)), k.collapse(), k.insertNode(m)); k = this.clone(); b(c) && ((e = b(c)), k.moveToPosition(e, CKEDITOR.POSITION_BEFORE_START)); k.collapse(!0); k.insertNode(f); m ? (this.setStartAfter(f), this.setEndBefore(m)) : this.moveToPosition(f, CKEDITOR.POSITION_AFTER_END); return { startNode: a ? h + (d ? "C" : "S") : f, endNode: a ? h + "E" : m, serializable: a, collapsed: d, }; }, createBookmark2: (function () { function a(b) { var g = b.container, e = b.offset, d; d = g; var f = e; d = d.type != CKEDITOR.NODE_ELEMENT || 0 === f || f == d.getChildCount() ? 0 : d.getChild(f - 1).type == CKEDITOR.NODE_TEXT && d.getChild(f).type == CKEDITOR.NODE_TEXT; d && ((g = g.getChild(e - 1)), (e = g.getLength())); if (g.type == CKEDITOR.NODE_ELEMENT && 0 < e) { a: { for (d = g; e--; ) if (((f = d.getChild(e).getIndex(!0)), 0 <= f)) { e = f; break a; } e = -1; } e += 1; } if (g.type == CKEDITOR.NODE_TEXT) { d = g; for (f = 0; (d = d.getPrevious()) && d.type == CKEDITOR.NODE_TEXT; ) f += d .getText() .replace( CKEDITOR.dom.selection.FILLING_CHAR_SEQUENCE, "" ).length; d = f; g.isEmpty() ? ((f = g.getPrevious(c)), d ? ((e = d), (g = f ? f.getNext() : g.getParent().getFirst())) : ((g = g.getParent()), (e = f ? f.getIndex(!0) + 1 : 0))) : (e += d); } b.container = g; b.offset = e; } function b(a, c) { var g = c.getCustomData("cke-fillingChar"); if (g) { var e = a.container; g.equals(e) && ((a.offset -= CKEDITOR.dom.selection.FILLING_CHAR_SEQUENCE.length), 0 >= a.offset && ((a.offset = e.getIndex()), (a.container = e.getParent()))); } } var c = CKEDITOR.dom.walker.nodeType(CKEDITOR.NODE_TEXT, !0); return function (c) { var e = this.collapsed, d = { container: this.startContainer, offset: this.startOffset }, m = { container: this.endContainer, offset: this.endOffset }; c && (a(d), b(d, this.root), e || (a(m), b(m, this.root))); return { start: d.container.getAddress(c), end: e ? null : m.container.getAddress(c), startOffset: d.offset, endOffset: m.offset, normalized: c, collapsed: e, is2: !0, }; }; })(), moveToBookmark: function (a) { if (a.is2) { var b = this.document.getByAddress(a.start, a.normalized), c = a.startOffset, e = a.end && this.document.getByAddress(a.end, a.normalized); a = a.endOffset; this.setStart(b, c); e ? this.setEnd(e, a) : this.collapse(!0); } else (b = (c = a.serializable) ? this.document.getById(a.startNode) : a.startNode), (a = c ? this.document.getById(a.endNode) : a.endNode), this.setStartBefore(b), b.remove(), a ? (this.setEndBefore(a), a.remove()) : this.collapse(!0); }, getBoundaryNodes: function () { var a = this.startContainer, b = this.endContainer, c = this.startOffset, e = this.endOffset, d; if (a.type == CKEDITOR.NODE_ELEMENT) if (((d = a.getChildCount()), d > c)) a = a.getChild(c); else if (1 > d) a = a.getPreviousSourceNode(); else { for (a = a.$; a.lastChild; ) a = a.lastChild; a = new CKEDITOR.dom.node(a); a = a.getNextSourceNode() || a; } if (b.type == CKEDITOR.NODE_ELEMENT) if (((d = b.getChildCount()), d > e)) b = b.getChild(e).getPreviousSourceNode(!0); else if (1 > d) b = b.getPreviousSourceNode(); else { for (b = b.$; b.lastChild; ) b = b.lastChild; b = new CKEDITOR.dom.node(b); } a.getPosition(b) & CKEDITOR.POSITION_FOLLOWING && (a = b); return { startNode: a, endNode: b }; }, getCommonAncestor: function (a, b) { var c = this.startContainer, e = this.endContainer, c = c.equals(e) ? a && c.type == CKEDITOR.NODE_ELEMENT && this.startOffset == this.endOffset - 1 ? c.getChild(this.startOffset) : c : c.getCommonAncestor(e); return b && !c.is ? c.getParent() : c; }, optimize: function () { var a = this.startContainer, b = this.startOffset; a.type != CKEDITOR.NODE_ELEMENT && (b ? b >= a.getLength() && this.setStartAfter(a) : this.setStartBefore(a)); a = this.endContainer; b = this.endOffset; a.type != CKEDITOR.NODE_ELEMENT && (b ? b >= a.getLength() && this.setEndAfter(a) : this.setEndBefore(a)); }, optimizeBookmark: function () { var a = this.startContainer, b = this.endContainer; a.is && a.is("span") && a.data("cke-bookmark") && this.setStartAt(a, CKEDITOR.POSITION_BEFORE_START); b && b.is && b.is("span") && b.data("cke-bookmark") && this.setEndAt(b, CKEDITOR.POSITION_AFTER_END); }, trim: function (a, b) { var c = this.startContainer, e = this.startOffset, d = this.collapsed; if ((!a || d) && c && c.type == CKEDITOR.NODE_TEXT) { if (e) if (e >= c.getLength()) (e = c.getIndex() + 1), (c = c.getParent()); else { var f = c.split(e), e = c.getIndex() + 1, c = c.getParent(); this.startContainer.equals(this.endContainer) ? this.setEnd(f, this.endOffset - this.startOffset) : c.equals(this.endContainer) && (this.endOffset += 1); } else (e = c.getIndex()), (c = c.getParent()); this.setStart(c, e); if (d) { this.collapse(!0); return; } } c = this.endContainer; e = this.endOffset; b || d || !c || c.type != CKEDITOR.NODE_TEXT || (e ? (e >= c.getLength() || c.split(e), (e = c.getIndex() + 1)) : (e = c.getIndex()), (c = c.getParent()), this.setEnd(c, e)); }, enlarge: function (a, b) { function c(a) { return a && a.type == CKEDITOR.NODE_ELEMENT && a.hasAttribute("contenteditable") ? null : a; } function e(a, b, c) { var g = new CKEDITOR.dom.range(c); g.setStart(a, b); g.setEndAt(c, CKEDITOR.POSITION_BEFORE_END); c = new CKEDITOR.dom.walker(g); for ( c.guard = function (a) { return !(a.type == CKEDITOR.NODE_ELEMENT && a.isBlockBoundary()); }; (g = c.next()); ) { if (g.type != CKEDITOR.NODE_TEXT) return !1; f = g != a ? g.getText() : g.substring(b); if (d.test(f)) return !1; } return !0; } var d = new RegExp(/[^\s\ufeff]/), f, m; switch (a) { case CKEDITOR.ENLARGE_INLINE: var h = 1; case CKEDITOR.ENLARGE_ELEMENT: if (this.collapsed) break; var k = this.getCommonAncestor(); m = this.root; var l, n, q, u, K, D = !1, B; B = this.startContainer; var t = this.startOffset; B.type == CKEDITOR.NODE_TEXT ? (t && ((B = !CKEDITOR.tools.trim(B.substring(0, t)).length && B), (D = !!B)), B && ((u = B.getPrevious()) || (q = B.getParent()))) : (t && (u = B.getChild(t - 1) || B.getLast()), u || (q = B)); for (q = c(q); q || u; ) { if (q && !u) { !K && q.equals(k) && (K = !0); if (h ? q.isBlockBoundary() : !m.contains(q)) break; (D && "inline" == q.getComputedStyle("display")) || ((D = !1), K ? (l = q) : this.setStartBefore(q)); u = q.getPrevious(); } for (; u; ) if (((B = !1), u.type == CKEDITOR.NODE_COMMENT)) u = u.getPrevious(); else { if (u.type == CKEDITOR.NODE_TEXT) (f = u.getText()), d.test(f) && (u = null), (B = /[\s\ufeff]$/.test(f)); else if ( (u.$.offsetWidth > (CKEDITOR.env.webkit ? 1 : 0) || (b && u.is("br"))) && !u.data("cke-bookmark") ) if (D && CKEDITOR.dtd.$removeEmpty[u.getName()]) { f = u.getText(); if (d.test(f)) u = null; else for ( var t = u.$.getElementsByTagName("*"), H = 0, A; (A = t[H++]); ) if ( !CKEDITOR.dtd.$removeEmpty[A.nodeName.toLowerCase()] ) { u = null; break; } u && (B = !!f.length); } else u = null; B && (D ? K ? (l = q) : q && this.setStartBefore(q) : (D = !0)); if (u) { B = u.getPrevious(); if (!q && !B) { q = u; u = null; break; } u = B; } else q = null; } q && (q = c(q.getParent())); } B = this.endContainer; t = this.endOffset; q = u = null; K = D = !1; B.type == CKEDITOR.NODE_TEXT ? CKEDITOR.tools.trim(B.substring(t)).length ? (D = !0) : ((D = !B.getLength()), t == B.getLength() ? (u = B.getNext()) || (q = B.getParent()) : e(B, t, m) && (q = B.getParent())) : (u = B.getChild(t)) || (q = B); for (; q || u; ) { if (q && !u) { !K && q.equals(k) && (K = !0); if (h ? q.isBlockBoundary() : !m.contains(q)) break; (D && "inline" == q.getComputedStyle("display")) || ((D = !1), K ? (n = q) : q && this.setEndAfter(q)); u = q.getNext(); } for (; u; ) { B = !1; if (u.type == CKEDITOR.NODE_TEXT) (f = u.getText()), e(u, 0, m) || (u = null), (B = /^[\s\ufeff]/.test(f)); else if (u.type == CKEDITOR.NODE_ELEMENT) { if ( (0 < u.$.offsetWidth || (b && u.is("br"))) && !u.data("cke-bookmark") ) if (D && CKEDITOR.dtd.$removeEmpty[u.getName()]) { f = u.getText(); if (d.test(f)) u = null; else for ( t = u.$.getElementsByTagName("*"), H = 0; (A = t[H++]); ) if ( !CKEDITOR.dtd.$removeEmpty[A.nodeName.toLowerCase()] ) { u = null; break; } u && (B = !!f.length); } else u = null; } else B = 1; B && D && (K ? (n = q) : this.setEndAfter(q)); if (u) { B = u.getNext(); if (!q && !B) { q = u; u = null; break; } u = B; } else q = null; } q && (q = c(q.getParent())); } l && n && ((k = l.contains(n) ? n : l), this.setStartBefore(k), this.setEndAfter(k)); break; case CKEDITOR.ENLARGE_BLOCK_CONTENTS: case CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS: q = new CKEDITOR.dom.range(this.root); m = this.root; q.setStartAt(m, CKEDITOR.POSITION_AFTER_START); q.setEnd(this.startContainer, this.startOffset); q = new CKEDITOR.dom.walker(q); var I, N, L = CKEDITOR.dom.walker.blockBoundary( a == CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS ? { br: 1 } : null ), r = null, E = function (a) { if ( a.type == CKEDITOR.NODE_ELEMENT && "false" == a.getAttribute("contenteditable") ) if (r) { if (r.equals(a)) { r = null; return; } } else r = a; else if (r) return; var b = L(a); b || (I = a); return b; }, h = function (a) { var b = E(a); !b && a.is && a.is("br") && (N = a); return b; }; q.guard = E; q = q.lastBackward(); I = I || m; this.setStartAt( I, !I.is("br") && ((!q && this.checkStartOfBlock()) || (q && I.contains(q))) ? CKEDITOR.POSITION_AFTER_START : CKEDITOR.POSITION_AFTER_END ); if (a == CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS) { q = this.clone(); q = new CKEDITOR.dom.walker(q); var S = CKEDITOR.dom.walker.whitespaces(), p = CKEDITOR.dom.walker.bookmark(); q.evaluator = function (a) { return !S(a) && !p(a); }; if ( (q = q.previous()) && q.type == CKEDITOR.NODE_ELEMENT && q.is("br") ) break; } q = this.clone(); q.collapse(); q.setEndAt(m, CKEDITOR.POSITION_BEFORE_END); q = new CKEDITOR.dom.walker(q); q.guard = a == CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS ? h : E; I = r = N = null; q = q.lastForward(); I = I || m; this.setEndAt( I, (!q && this.checkEndOfBlock()) || (q && I.contains(q)) ? CKEDITOR.POSITION_BEFORE_END : CKEDITOR.POSITION_BEFORE_START ); N && this.setEndAfter(N); } }, shrink: function (a, b, c) { var e = "boolean" === typeof c ? c : c && "boolean" === typeof c.shrinkOnBlockBoundary ? c.shrinkOnBlockBoundary : !0, d = c && c.skipBogus; if (!this.collapsed) { a = a || CKEDITOR.SHRINK_TEXT; var f = this.clone(), m = this.startContainer, h = this.endContainer, k = this.startOffset, l = this.endOffset, n = (c = 1); m && m.type == CKEDITOR.NODE_TEXT && (k ? k >= m.getLength() ? f.setStartAfter(m) : (f.setStartBefore(m), (c = 0)) : f.setStartBefore(m)); h && h.type == CKEDITOR.NODE_TEXT && (l ? l >= h.getLength() ? f.setEndAfter(h) : (f.setEndAfter(h), (n = 0)) : f.setEndBefore(h)); var f = new CKEDITOR.dom.walker(f), q = CKEDITOR.dom.walker.bookmark(), u = CKEDITOR.dom.walker.bogus(); f.evaluator = function (b) { return ( b.type == (a == CKEDITOR.SHRINK_ELEMENT ? CKEDITOR.NODE_ELEMENT : CKEDITOR.NODE_TEXT) ); }; var K; f.guard = function (b, c) { if ((d && u(b)) || q(b)) return !0; if ( (a == CKEDITOR.SHRINK_ELEMENT && b.type == CKEDITOR.NODE_TEXT) || (c && b.equals(K)) || (!1 === e && b.type == CKEDITOR.NODE_ELEMENT && b.isBlockBoundary()) || (b.type == CKEDITOR.NODE_ELEMENT && b.hasAttribute("contenteditable")) ) return !1; c || b.type != CKEDITOR.NODE_ELEMENT || (K = b); return !0; }; c && (m = f[a == CKEDITOR.SHRINK_ELEMENT ? "lastForward" : "next"]()) && this.setStartAt( m, b ? CKEDITOR.POSITION_AFTER_START : CKEDITOR.POSITION_BEFORE_START ); n && (f.reset(), (f = f[ a == CKEDITOR.SHRINK_ELEMENT ? "lastBackward" : "previous" ]()) && this.setEndAt( f, b ? CKEDITOR.POSITION_BEFORE_END : CKEDITOR.POSITION_AFTER_END )); return !(!c && !n); } }, insertNode: function (a) { this.optimizeBookmark(); this.trim(!1, !0); var b = this.startContainer, c = b.getChild(this.startOffset); c ? a.insertBefore(c) : b.append(a); a.getParent() && a.getParent().equals(this.endContainer) && this.endOffset++; this.setStartBefore(a); }, moveToPosition: function (a, b) { this.setStartAt(a, b); this.collapse(!0); }, moveToRange: function (a) { this.setStart(a.startContainer, a.startOffset); this.setEnd(a.endContainer, a.endOffset); }, selectNodeContents: function (a) { this.setStart(a, 0); this.setEnd( a, a.type == CKEDITOR.NODE_TEXT ? a.getLength() : a.getChildCount() ); }, setStart: function (b, c) { b.type == CKEDITOR.NODE_ELEMENT && CKEDITOR.dtd.$empty[b.getName()] && ((c = b.getIndex()), (b = b.getParent())); this._setStartContainer(b); this.startOffset = c; this.endContainer || (this._setEndContainer(b), (this.endOffset = c)); a(this); }, setEnd: function (b, c) { b.type == CKEDITOR.NODE_ELEMENT && CKEDITOR.dtd.$empty[b.getName()] && ((c = b.getIndex() + 1), (b = b.getParent())); this._setEndContainer(b); this.endOffset = c; this.startContainer || (this._setStartContainer(b), (this.startOffset = c)); a(this); }, setStartAfter: function (a) { this.setStart(a.getParent(), a.getIndex() + 1); }, setStartBefore: function (a) { this.setStart(a.getParent(), a.getIndex()); }, setEndAfter: function (a) { this.setEnd(a.getParent(), a.getIndex() + 1); }, setEndBefore: function (a) { this.setEnd(a.getParent(), a.getIndex()); }, setStartAt: function (b, c) { switch (c) { case CKEDITOR.POSITION_AFTER_START: this.setStart(b, 0); break; case CKEDITOR.POSITION_BEFORE_END: b.type == CKEDITOR.NODE_TEXT ? this.setStart(b, b.getLength()) : this.setStart(b, b.getChildCount()); break; case CKEDITOR.POSITION_BEFORE_START: this.setStartBefore(b); break; case CKEDITOR.POSITION_AFTER_END: this.setStartAfter(b); } a(this); }, setEndAt: function (b, c) { switch (c) { case CKEDITOR.POSITION_AFTER_START: this.setEnd(b, 0); break; case CKEDITOR.POSITION_BEFORE_END: b.type == CKEDITOR.NODE_TEXT ? this.setEnd(b, b.getLength()) : this.setEnd(b, b.getChildCount()); break; case CKEDITOR.POSITION_BEFORE_START: this.setEndBefore(b); break; case CKEDITOR.POSITION_AFTER_END: this.setEndAfter(b); } a(this); }, fixBlock: function (a, b) { var c = this.createBookmark(), e = this.document.createElement(b); this.collapse(a); this.enlarge(CKEDITOR.ENLARGE_BLOCK_CONTENTS); this.extractContents().appendTo(e); e.trim(); this.insertNode(e); var d = e.getBogus(); d && d.remove(); e.appendBogus(); this.moveToBookmark(c); return e; }, splitBlock: function (a, b) { var c = new CKEDITOR.dom.elementPath(this.startContainer, this.root), e = new CKEDITOR.dom.elementPath(this.endContainer, this.root), d = c.block, f = e.block, m = null; if (!c.blockLimit.equals(e.blockLimit)) return null; "br" != a && (d || ((d = this.fixBlock(!0, a)), (f = new CKEDITOR.dom.elementPath(this.endContainer, this.root) .block)), f || (f = this.fixBlock(!1, a))); c = d && this.checkStartOfBlock(); e = f && this.checkEndOfBlock(); this.deleteContents(); d && d.equals(f) && (e ? ((m = new CKEDITOR.dom.elementPath( this.startContainer, this.root )), this.moveToPosition(f, CKEDITOR.POSITION_AFTER_END), (f = null)) : c ? ((m = new CKEDITOR.dom.elementPath( this.startContainer, this.root )), this.moveToPosition(d, CKEDITOR.POSITION_BEFORE_START), (d = null)) : ((f = this.splitElement(d, b || !1)), d.is("ul", "ol") || d.appendBogus())); return { previousBlock: d, nextBlock: f, wasStartOfBlock: c, wasEndOfBlock: e, elementPath: m, }; }, splitElement: function (a, b) { if (!this.collapsed) return null; this.setEndAt(a, CKEDITOR.POSITION_BEFORE_END); var c = this.extractContents(!1, b || !1), e = a.clone(!1, b || !1); c.appendTo(e); e.insertAfter(a); this.moveToPosition(a, CKEDITOR.POSITION_AFTER_END); return e; }, removeEmptyBlocksAtEnd: (function () { function a(e) { return function (a) { return b(a) || c(a) || (a.type == CKEDITOR.NODE_ELEMENT && a.isEmptyInlineRemoveable()) || (e.is("table") && a.is("caption")) ? !1 : !0; }; } var b = CKEDITOR.dom.walker.whitespaces(), c = CKEDITOR.dom.walker.bookmark(!1); return function (b) { for ( var c = this.createBookmark(), e = this[b ? "endPath" : "startPath"](), d = e.block || e.blockLimit, f; d && !d.equals(e.root) && !d.getFirst(a(d)); ) (f = d.getParent()), this[b ? "setEndAt" : "setStartAt"]( d, CKEDITOR.POSITION_AFTER_END ), d.remove(1), (d = f); this.moveToBookmark(c); }; })(), startPath: function () { return new CKEDITOR.dom.elementPath(this.startContainer, this.root); }, endPath: function () { return new CKEDITOR.dom.elementPath(this.endContainer, this.root); }, checkBoundaryOfElement: function (a, b) { var e = b == CKEDITOR.START, d = this.clone(); d.collapse(e); d[e ? "setStartAt" : "setEndAt"]( a, e ? CKEDITOR.POSITION_AFTER_START : CKEDITOR.POSITION_BEFORE_END ); d = new CKEDITOR.dom.walker(d); d.evaluator = c(e); return d[e ? "checkBackward" : "checkForward"](); }, checkStartOfBlock: function (a) { var c = this.startContainer, e = this.startOffset; CKEDITOR.env.ie && e && c.type == CKEDITOR.NODE_TEXT && ((c = CKEDITOR.tools.ltrim(c.substring(0, e))), h.test(c) && this.trim(0, 1)); a || this.trim(); a = new CKEDITOR.dom.elementPath(this.startContainer, this.root); c = this.clone(); c.collapse(!0); c.setStartAt(a.block || a.blockLimit, CKEDITOR.POSITION_AFTER_START); a = new CKEDITOR.dom.walker(c); a.evaluator = b(); return a.checkBackward(); }, checkEndOfBlock: function (a) { var c = this.endContainer, e = this.endOffset; CKEDITOR.env.ie && c.type == CKEDITOR.NODE_TEXT && ((c = CKEDITOR.tools.rtrim(c.substring(e))), h.test(c) && this.trim(1, 0)); a || this.trim(); a = new CKEDITOR.dom.elementPath(this.endContainer, this.root); c = this.clone(); c.collapse(!1); c.setEndAt(a.block || a.blockLimit, CKEDITOR.POSITION_BEFORE_END); a = new CKEDITOR.dom.walker(c); a.evaluator = b(); return a.checkForward(); }, getPreviousNode: function (a, b, c) { var e = this.clone(); e.collapse(1); e.setStartAt(c || this.root, CKEDITOR.POSITION_AFTER_START); c = new CKEDITOR.dom.walker(e); c.evaluator = a; c.guard = b; return c.previous(); }, getNextNode: function (a, b, c) { var e = this.clone(); e.collapse(); e.setEndAt(c || this.root, CKEDITOR.POSITION_BEFORE_END); c = new CKEDITOR.dom.walker(e); c.evaluator = a; c.guard = b; return c.next(); }, checkReadOnly: (function () { function a(b, c) { for (; b; ) { if (b.type == CKEDITOR.NODE_ELEMENT) { if ( "false" == b.getAttribute("contentEditable") && !b.data("cke-editable") ) return 0; if ( b.is("html") || ("true" == b.getAttribute("contentEditable") && (b.contains(c) || b.equals(c))) ) break; } b = b.getParent(); } return 1; } return function () { var b = this.startContainer, c = this.endContainer; return !(a(b, c) && a(c, b)); }; })(), moveToElementEditablePosition: function (a, b) { if (a.type == CKEDITOR.NODE_ELEMENT && !a.isEditable(!1)) return ( this.moveToPosition( a, b ? CKEDITOR.POSITION_AFTER_END : CKEDITOR.POSITION_BEFORE_START ), !0 ); for (var c = 0; a; ) { if (a.type == CKEDITOR.NODE_TEXT) { b && this.endContainer && this.checkEndOfBlock() && h.test(a.getText()) ? this.moveToPosition(a, CKEDITOR.POSITION_BEFORE_START) : this.moveToPosition( a, b ? CKEDITOR.POSITION_AFTER_END : CKEDITOR.POSITION_BEFORE_START ); c = 1; break; } if (a.type == CKEDITOR.NODE_ELEMENT) if (a.isEditable()) this.moveToPosition( a, b ? CKEDITOR.POSITION_BEFORE_END : CKEDITOR.POSITION_AFTER_START ), (c = 1); else if ( b && a.is("br") && this.endContainer && this.checkEndOfBlock() ) this.moveToPosition(a, CKEDITOR.POSITION_BEFORE_START); else if ( "false" == a.getAttribute("contenteditable") && a.is(CKEDITOR.dtd.$block) ) return this.setStartBefore(a), this.setEndAfter(a), !0; var e = a, d = c, f = void 0; e.type == CKEDITOR.NODE_ELEMENT && e.isEditable(!1) && (f = e[b ? "getLast" : "getFirst"](l)); d || f || (f = e[b ? "getPrevious" : "getNext"](l)); a = f; } return !!c; }, moveToClosestEditablePosition: function (a, b) { var c, e = 0, d, f, m = [CKEDITOR.POSITION_AFTER_END, CKEDITOR.POSITION_BEFORE_START]; a ? ((c = new CKEDITOR.dom.range(this.root)), c.moveToPosition(a, m[b ? 0 : 1])) : (c = this.clone()); if (a && !a.is(CKEDITOR.dtd.$block)) e = 1; else if ( (d = c[b ? "getNextEditableNode" : "getPreviousEditableNode"]()) ) (e = 1), (f = d.type == CKEDITOR.NODE_ELEMENT) && d.is(CKEDITOR.dtd.$block) && "false" == d.getAttribute("contenteditable") ? (c.setStartAt(d, CKEDITOR.POSITION_BEFORE_START), c.setEndAt(d, CKEDITOR.POSITION_AFTER_END)) : !CKEDITOR.env.needsBrFiller && f && d.is(CKEDITOR.dom.walker.validEmptyBlockContainers) ? (c.setEnd(d, 0), c.collapse()) : c.moveToPosition(d, m[b ? 1 : 0]); e && this.moveToRange(c); return !!e; }, moveToElementEditStart: function (a) { return this.moveToElementEditablePosition(a); }, moveToElementEditEnd: function (a) { return this.moveToElementEditablePosition(a, !0); }, getEnclosedNode: function () { var a = this.clone(); a.optimize(); if ( a.startContainer.type != CKEDITOR.NODE_ELEMENT || a.endContainer.type != CKEDITOR.NODE_ELEMENT ) return null; var a = new CKEDITOR.dom.walker(a), b = CKEDITOR.dom.walker.bookmark(!1, !0), c = CKEDITOR.dom.walker.whitespaces(!0); a.evaluator = function (a) { return c(a) && b(a); }; var e = a.next(); a.reset(); return e && e.equals(a.previous()) ? e : null; }, getTouchedStartNode: function () { var a = this.startContainer; return this.collapsed || a.type != CKEDITOR.NODE_ELEMENT ? a : a.getChild(this.startOffset) || a; }, getTouchedEndNode: function () { var a = this.endContainer; return this.collapsed || a.type != CKEDITOR.NODE_ELEMENT ? a : a.getChild(this.endOffset - 1) || a; }, getNextEditableNode: f(), getPreviousEditableNode: f(1), _getTableElement: function (a) { a = a || { td: 1, th: 1, tr: 1, tbody: 1, thead: 1, tfoot: 1, table: 1, }; var b = this.getTouchedStartNode(), c = this.getTouchedEndNode(), e = b.getAscendant("table", !0), c = c.getAscendant("table", !0); return e && !this.root.contains(e) ? null : this.getEnclosedNode() ? this.getEnclosedNode().getAscendant(a, !0) : e && c && (e.equals(c) || e.contains(c) || c.contains(e)) ? b.getAscendant(a, !0) : null; }, scrollIntoView: function () { var a = new CKEDITOR.dom.element.createFromHtml( "\x3cspan\x3e\x26nbsp;\x3c/span\x3e", this.document ), b, c, e, d = this.clone(); d.optimize(); (e = d.startContainer.type == CKEDITOR.NODE_TEXT) ? ((c = d.startContainer.getText()), (b = d.startContainer.split(d.startOffset)), a.insertAfter(d.startContainer)) : d.insertNode(a); a.scrollIntoView(); e && (d.startContainer.setText(c), b.remove()); a.remove(); }, getClientRects: (function () { function a(b, c) { var e = CKEDITOR.tools.array.map(b, function (a) { return a; }), d = new CKEDITOR.dom.range(c.root), g, f, h; c.startContainer instanceof CKEDITOR.dom.element && (f = 0 === c.startOffset && c.startContainer.hasAttribute("data-widget")); c.endContainer instanceof CKEDITOR.dom.element && (h = (h = c.endOffset === (c.endContainer.getChildCount ? c.endContainer.getChildCount() : c.endContainer.length)) && c.endContainer.hasAttribute("data-widget")); f && d.setStart( c.startContainer.getParent(), c.startContainer.getIndex() ); h && d.setEnd(c.endContainer.getParent(), c.endContainer.getIndex() + 1); if (f || h) c = d; d = c.cloneContents().find("[data-cke-widget-id]").toArray(); if ( (d = CKEDITOR.tools.array.map(d, function (a) { var b = c.root.editor; a = a.getAttribute("data-cke-widget-id"); return b.widgets.instances[a].element; })) ) return ( (d = CKEDITOR.tools.array.map( d, function (a) { var b; b = a.getParent().hasClass("cke_widget_wrapper") ? a.getParent() : a; g = this.root.getDocument().$.createRange(); g.setStart(b.getParent().$, b.getIndex()); g.setEnd(b.getParent().$, b.getIndex() + 1); b = g.getClientRects(); b.widgetRect = a.getClientRect(); return b; }, c )), CKEDITOR.tools.array.forEach(d, function (a) { function b(d) { CKEDITOR.tools.array.forEach(e, function (b, g) { var f = CKEDITOR.tools.objectCompare(a[d], b); f || (f = CKEDITOR.tools.objectCompare(a.widgetRect, b)); f && (Array.prototype.splice.call( e, g, a.length - d, a.widgetRect ), (c = !0)); }); c || (d < e.length - 1 ? b(d + 1) : e.push(a.widgetRect)); } var c; b(0); }), e ); } function b(a, c, d) { var g; c.collapsed ? d.startContainer instanceof CKEDITOR.dom.element ? ((a = d.checkStartOfBlock()), (g = new CKEDITOR.dom.text("​")), a ? d.startContainer.append(g, !0) : 0 === d.startOffset ? g.insertBefore(d.startContainer.getFirst()) : ((d = d.startContainer .getChildren() .getItem(d.startOffset - 1)), g.insertAfter(d)), c.setStart(g.$, 0), c.setEnd(g.$, 0), (a = c.getClientRects()), g.remove()) : d.startContainer instanceof CKEDITOR.dom.text && ("" === d.startContainer.getText() ? (d.startContainer.setText("​"), (a = c.getClientRects()), d.startContainer.setText("")) : (a = [e(d.createBookmark())])) : (a = [e(d.createBookmark())]); return a; } function c(a, b, e) { a = CKEDITOR.tools.extend({}, a); b && (a = CKEDITOR.tools.getAbsoluteRectPosition( e.document.getWindow(), a )); !a.width && (a.width = a.right - a.left); !a.height && (a.height = a.bottom - a.top); return a; } function e(a) { var b = a.startNode; a = a.endNode; var c; b.setText("​"); b.removeStyle("display"); a ? (a.setText("​"), a.removeStyle("display"), (c = [b.getClientRect(), a.getClientRect()]), a.remove()) : (c = [b.getClientRect(), b.getClientRect()]); b.remove(); return { right: Math.max(c[0].right, c[1].right), bottom: Math.max(c[0].bottom, c[1].bottom), left: Math.min(c[0].left, c[1].left), top: Math.min(c[0].top, c[1].top), width: Math.abs(c[0].left - c[1].left), height: Math.max(c[0].bottom, c[1].bottom) - Math.min(c[0].top, c[1].top), }; } return void 0 !== document.getSelection ? function (e) { var d = this.root.getDocument().$.createRange(), f; d.setStart(this.startContainer.$, this.startOffset); d.setEnd(this.endContainer.$, this.endOffset); f = d.getClientRects(); f = a(f, this); f.length || (f = b(f, d, this)); return CKEDITOR.tools.array.map( f, function (a) { return c(a, e, this); }, this ); } : function (a) { return [c(e(this.createBookmark()), a, this)]; }; })(), _setStartContainer: function (a) { this.startContainer = a; }, _setEndContainer: function (a) { this.endContainer = a; }, _find: function (a, b) { var c = this.getCommonAncestor(), e = this.getBoundaryNodes(), d = [], f, m, h, k; if (c && c.find) for (m = c.find(a), f = 0; f < m.count(); f++) if (((c = m.getItem(f)), b || !c.isReadOnly())) (h = c.getPosition(e.startNode) & CKEDITOR.POSITION_FOLLOWING || e.startNode.equals(c)), (k = c.getPosition(e.endNode) & (CKEDITOR.POSITION_PRECEDING + CKEDITOR.POSITION_IS_CONTAINED) || e.endNode.equals(c)), h && k && d.push(c); return d; }, }; CKEDITOR.dom.range.mergeRanges = function (a) { return CKEDITOR.tools.array.reduce( a, function (a, b) { var c = a[a.length - 1], e = !1; b = b.clone(); b.enlarge(CKEDITOR.ENLARGE_ELEMENT); if (c) { var d = new CKEDITOR.dom.range(b.root), e = new CKEDITOR.dom.walker(d), g = CKEDITOR.dom.walker.whitespaces(); d.setStart(c.endContainer, c.endOffset); d.setEnd(b.startContainer, b.startOffset); for (d = e.next(); g(d) || b.endContainer.equals(d); ) d = e.next(); e = !d; } e ? c.setEnd(b.endContainer, b.endOffset) : a.push(b); return a; }, [] ); }; })(); CKEDITOR.POSITION_AFTER_START = 1; CKEDITOR.POSITION_BEFORE_END = 2; CKEDITOR.POSITION_BEFORE_START = 3; CKEDITOR.POSITION_AFTER_END = 4; CKEDITOR.ENLARGE_ELEMENT = 1; CKEDITOR.ENLARGE_BLOCK_CONTENTS = 2; CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS = 3; CKEDITOR.ENLARGE_INLINE = 4; CKEDITOR.START = 1; CKEDITOR.END = 2; CKEDITOR.SHRINK_ELEMENT = 1; CKEDITOR.SHRINK_TEXT = 2; ("use strict"); (function () { function a(a) { 1 > arguments.length || ((this.range = a), (this.forceBrBreak = 0), (this.enlargeBr = 1), (this.enforceRealBlocks = 0), this._ || (this._ = {})); } function d(a) { var b = []; a.forEach( function (a) { if ("true" == a.getAttribute("contenteditable")) return b.push(a), !1; }, CKEDITOR.NODE_ELEMENT, !0 ); return b; } function b(a, c, e, f) { a: { null == f && (f = d(e)); for (var h; (h = f.shift()); ) if (h.getDtd().p) { f = { element: h, remaining: f }; break a; } f = null; } if (!f) return 0; if ( (h = CKEDITOR.filter.instances[f.element.data("cke-filter")]) && !h.check(c) ) return b(a, c, e, f.remaining); c = new CKEDITOR.dom.range(f.element); c.selectNodeContents(f.element); c = c.createIterator(); c.enlargeBr = a.enlargeBr; c.enforceRealBlocks = a.enforceRealBlocks; c.activeFilter = c.filter = h; a._.nestedEditable = { element: f.element, container: e, remaining: f.remaining, iterator: c, }; return 1; } function c(a, b, c) { if (!b) return !1; a = a.clone(); a.collapse(!c); return a.checkBoundaryOfElement(b, c ? CKEDITOR.START : CKEDITOR.END); } var f = /^[\r\n\t ]+$/, e = CKEDITOR.dom.walker.bookmark(!1, !0), k = CKEDITOR.dom.walker.whitespaces(!0), h = function (a) { return e(a) && k(a); }, n = { dd: 1, dt: 1, li: 1 }; a.prototype = { getNextParagraph: function (a) { var d, k, y, z, G; a = a || "p"; if (this._.nestedEditable) { if ((d = this._.nestedEditable.iterator.getNextParagraph(a))) return ( (this.activeFilter = this._.nestedEditable.iterator.activeFilter), d ); this.activeFilter = this.filter; if ( b( this, a, this._.nestedEditable.container, this._.nestedEditable.remaining ) ) return ( (this.activeFilter = this._.nestedEditable.iterator.activeFilter), this._.nestedEditable.iterator.getNextParagraph(a) ); this._.nestedEditable = null; } if (!this.range.root.getDtd()[a]) return null; if (!this._.started) { var v = this.range.clone(); k = v.startPath(); var m = v.endPath(), M = !v.collapsed && c(v, k.block), w = !v.collapsed && c(v, m.block, 1); v.shrink(CKEDITOR.SHRINK_ELEMENT, !0); M && v.setStartAt(k.block, CKEDITOR.POSITION_BEFORE_END); w && v.setEndAt(m.block, CKEDITOR.POSITION_AFTER_START); k = v.endContainer.hasAscendant("pre", !0) || v.startContainer.hasAscendant("pre", !0); v.enlarge( (this.forceBrBreak && !k) || !this.enlargeBr ? CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS : CKEDITOR.ENLARGE_BLOCK_CONTENTS ); v.collapsed || ((k = new CKEDITOR.dom.walker(v.clone())), (m = CKEDITOR.dom.walker.bookmark(!0, !0)), (k.evaluator = m), (this._.nextNode = k.next()), (k = new CKEDITOR.dom.walker(v.clone())), (k.evaluator = m), (k = k.previous()), (this._.lastNode = k.getNextSourceNode(!0, null, v.root)), this._.lastNode && this._.lastNode.type == CKEDITOR.NODE_TEXT && !CKEDITOR.tools.trim(this._.lastNode.getText()) && this._.lastNode.getParent().isBlockBoundary() && ((m = this.range.clone()), m.moveToPosition(this._.lastNode, CKEDITOR.POSITION_AFTER_END), m.checkEndOfBlock() && ((m = new CKEDITOR.dom.elementPath(m.endContainer, m.root)), (this._.lastNode = (m.block || m.blockLimit).getNextSourceNode( !0 )))), (this._.lastNode && v.root.contains(this._.lastNode)) || ((this._.lastNode = this._.docEndMarker = v.document.createText("")), this._.lastNode.insertAfter(k)), (v = null)); this._.started = 1; k = v; } m = this._.nextNode; v = this._.lastNode; for (this._.nextNode = null; m; ) { var M = 0, w = m.hasAscendant("pre"), J = m.type != CKEDITOR.NODE_ELEMENT, F = 0; if (J) m.type == CKEDITOR.NODE_TEXT && f.test(m.getText()) && (J = 0); else { var q = m.getName(); if ( CKEDITOR.dtd.$block[q] && "false" == m.getAttribute("contenteditable") ) { d = m; b(this, a, d); break; } else if ( m.isBlockBoundary(this.forceBrBreak && !w && { br: 1 }) ) { if ("br" == q) J = 1; else if (!k && !m.getChildCount() && "hr" != q) { d = m; y = m.equals(v); break; } k && (k.setEndAt(m, CKEDITOR.POSITION_BEFORE_START), "br" != q && (this._.nextNode = m)); M = 1; } else { if (m.getFirst()) { k || ((k = this.range.clone()), k.setStartAt(m, CKEDITOR.POSITION_BEFORE_START)); m = m.getFirst(); continue; } J = 1; } } J && !k && ((k = this.range.clone()), k.setStartAt(m, CKEDITOR.POSITION_BEFORE_START)); y = (!M || J) && m.equals(v); if (k && !M) for (; !m.getNext(h) && !y; ) { q = m.getParent(); if (q.isBlockBoundary(this.forceBrBreak && !w && { br: 1 })) { M = 1; J = 0; y || q.equals(v); k.setEndAt(q, CKEDITOR.POSITION_BEFORE_END); break; } m = q; J = 1; y = m.equals(v); F = 1; } J && k.setEndAt(m, CKEDITOR.POSITION_AFTER_END); m = this._getNextSourceNode(m, F, v); if ((y = !m) || (M && k)) break; } if (!d) { if (!k) return ( this._.docEndMarker && this._.docEndMarker.remove(), (this._.nextNode = null) ); d = new CKEDITOR.dom.elementPath(k.startContainer, k.root); m = d.blockLimit; M = { div: 1, th: 1, td: 1 }; d = d.block; !d && m && !this.enforceRealBlocks && M[m.getName()] && k.checkStartOfBlock() && k.checkEndOfBlock() && !m.equals(k.root) ? (d = m) : !d || (this.enforceRealBlocks && d.is(n)) ? ((d = this.range.document.createElement(a)), k.extractContents().appendTo(d), d.trim(), k.insertNode(d), (z = G = !0)) : "li" != d.getName() ? (k.checkStartOfBlock() && k.checkEndOfBlock()) || ((d = d.clone(!1)), k.extractContents().appendTo(d), d.trim(), (G = k.splitBlock()), (z = !G.wasStartOfBlock), (G = !G.wasEndOfBlock), k.insertNode(d)) : y || (this._.nextNode = d.equals(v) ? null : this._getNextSourceNode(k.getBoundaryNodes().endNode, 1, v)); } z && (z = d.getPrevious()) && z.type == CKEDITOR.NODE_ELEMENT && ("br" == z.getName() ? z.remove() : z.getLast() && "br" == z.getLast().$.nodeName.toLowerCase() && z.getLast().remove()); G && (z = d.getLast()) && z.type == CKEDITOR.NODE_ELEMENT && "br" == z.getName() && (!CKEDITOR.env.needsBrFiller || z.getPrevious(e) || z.getNext(e)) && z.remove(); this._.nextNode || (this._.nextNode = y || d.equals(v) || !v ? null : this._getNextSourceNode(d, 1, v)); return d; }, _getNextSourceNode: function (a, b, c) { function d(a) { return !(a.equals(c) || a.equals(f)); } var f = this.range.root; for (a = a.getNextSourceNode(b, null, d); !e(a); ) a = a.getNextSourceNode(b, null, d); return a; }, }; CKEDITOR.dom.range.prototype.createIterator = function () { return new a(this); }; })(); CKEDITOR.command = function (a, d) { this.uiItems = []; this.exec = function (b) { if (this.state == CKEDITOR.TRISTATE_DISABLED || !this.checkAllowed()) return !1; this.editorFocus && a.focus(); return !1 === this.fire("exec") ? !0 : !1 !== d.exec.call(this, a, b); }; this.refresh = function (a, b) { if (!this.readOnly && a.readOnly) return !0; if ( (this.context && !b.isContextFor(this.context)) || !this.checkAllowed(!0) ) return this.disable(), !0; this.startDisabled || this.enable(); this.modes && !this.modes[a.mode] && this.disable(); return !1 === this.fire("refresh", { editor: a, path: b }) ? !0 : d.refresh && !1 !== d.refresh.apply(this, arguments); }; var b; this.checkAllowed = function (c) { return c || "boolean" != typeof b ? (b = a.activeFilter.checkFeature(this)) : b; }; CKEDITOR.tools.extend(this, d, { modes: { wysiwyg: 1 }, editorFocus: 1, contextSensitive: !!d.context, state: CKEDITOR.TRISTATE_DISABLED, }); CKEDITOR.event.call(this); }; CKEDITOR.command.prototype = { enable: function () { this.state == CKEDITOR.TRISTATE_DISABLED && this.checkAllowed() && this.setState( this.preserveState && "undefined" != typeof this.previousState ? this.previousState : CKEDITOR.TRISTATE_OFF ); }, disable: function () { this.setState(CKEDITOR.TRISTATE_DISABLED); }, setState: function (a) { if ( this.state == a || (a != CKEDITOR.TRISTATE_DISABLED && !this.checkAllowed()) ) return !1; this.previousState = this.state; this.state = a; this.fire("state"); return !0; }, toggleState: function () { this.state == CKEDITOR.TRISTATE_OFF ? this.setState(CKEDITOR.TRISTATE_ON) : this.state == CKEDITOR.TRISTATE_ON && this.setState(CKEDITOR.TRISTATE_OFF); }, }; CKEDITOR.event.implementOn(CKEDITOR.command.prototype); CKEDITOR.ENTER_P = 1; CKEDITOR.ENTER_BR = 2; CKEDITOR.ENTER_DIV = 3; CKEDITOR.config = { customConfig: "config.js", autoUpdateElement: !0, language: "", defaultLanguage: "en", contentsLangDirection: "", enterMode: CKEDITOR.ENTER_P, forceEnterMode: !1, shiftEnterMode: CKEDITOR.ENTER_BR, docType: "\x3c!DOCTYPE html\x3e", bodyId: "", bodyClass: "", fullPage: !1, height: 200, contentsCss: CKEDITOR.getUrl("contents.css"), extraPlugins: "", removePlugins: "", protectedSource: [], tabIndex: 0, useComputedState: !0, width: "", baseFloatZIndex: 1e4, blockedKeystrokes: [ CKEDITOR.CTRL + 66, CKEDITOR.CTRL + 73, CKEDITOR.CTRL + 85, ], }; (function () { function a(a, b, c, e, d) { var f, g; a = []; for (f in b) { g = b[f]; g = "boolean" == typeof g ? {} : "function" == typeof g ? { match: g } : H(g); "$" != f.charAt(0) && (g.elements = f); c && (g.featureName = c.toLowerCase()); var p = g; p.elements = k(p.elements, /\s+/) || null; p.propertiesOnly = p.propertiesOnly || !0 === p.elements; var t = /\s*,\s*/, r = void 0; for (r in N) { p[r] = k(p[r], t) || null; var m = p, A = L[r], h = k(p[L[r]], t), D = p[r], C = [], I = !0, E = void 0; h ? (I = !1) : (h = {}); for (E in D) "!" == E.charAt(0) && ((E = E.slice(1)), C.push(E), (h[E] = !0), (I = !1)); for (; (E = C.pop()); ) (D[E] = D["!" + E]), delete D["!" + E]; m[A] = (I ? !1 : h) || null; } p.match = p.match || null; e.push(g); a.push(g); } b = d.elements; d = d.generic; var B; c = 0; for (e = a.length; c < e; ++c) { f = H(a[c]); g = !0 === f.classes || !0 === f.styles || !0 === f.attributes; p = f; r = A = t = void 0; for (t in N) p[t] = M(p[t]); m = !0; for (r in L) { t = L[r]; A = p[t]; h = []; D = void 0; for (D in A) -1 < D.indexOf("*") ? h.push(new RegExp("^" + D.replace(/\*/g, ".*") + "$")) : h.push(D); A = h; A.length && ((p[t] = A), (m = !1)); } p.nothingRequired = m; p.noProperties = !(p.attributes || p.classes || p.styles); if (!0 === f.elements || null === f.elements) d[g ? "unshift" : "push"](f); else for (B in ((p = f.elements), delete f.elements, p)) if (b[B]) b[B][g ? "unshift" : "push"](f); else b[B] = [f]; } } function d(a, c, e, d) { if (!a.match || a.match(c)) if (d || h(a, c)) if ( (a.propertiesOnly || (e.valid = !0), e.allAttributes || (e.allAttributes = b( a.attributes, c.attributes, e.validAttributes )), e.allStyles || (e.allStyles = b(a.styles, c.styles, e.validStyles)), !e.allClasses) ) { a = a.classes; c = c.classes; d = e.validClasses; if (a) if (!0 === a) a = !0; else { for (var f = 0, g = c.length, p; f < g; ++f) (p = c[f]), d[p] || (d[p] = a(p)); a = !1; } else a = !1; e.allClasses = a; } } function b(a, b, c) { if (!a) return !1; if (!0 === a) return !0; for (var e in b) c[e] || (c[e] = a(e)); return !1; } function c(a, b, c) { if (!a.match || a.match(b)) { if (a.noProperties) return !1; c.hadInvalidAttribute = f(a.attributes, b.attributes) || c.hadInvalidAttribute; c.hadInvalidStyle = f(a.styles, b.styles) || c.hadInvalidStyle; a = a.classes; b = b.classes; if (a) { for (var e = !1, d = !0 === a, g = b.length; g--; ) if (d || a(b[g])) b.splice(g, 1), (e = !0); a = e; } else a = !1; c.hadInvalidClass = a || c.hadInvalidClass; } } function f(a, b) { if (!a) return !1; var c = !1, e = !0 === a, d; for (d in b) if (e || a(d)) delete b[d], (c = !0); return c; } function e(a, b, c) { if (a.disabled || (a.customConfig && !c) || !b) return !1; a._.cachedChecks = {}; return !0; } function k(a, b) { if (!a) return !1; if (!0 === a) return a; if ("string" == typeof a) return ( (a = A(a)), "*" == a ? !0 : CKEDITOR.tools.convertArrayToObject(a.split(b)) ); if (CKEDITOR.tools.isArray(a)) return a.length ? CKEDITOR.tools.convertArrayToObject(a) : !1; var c = {}, e = 0, d; for (d in a) (c[d] = a[d]), e++; return e ? c : !1; } function h(a, b) { if (a.nothingRequired) return !0; var c, e, d, f; if ((d = a.requiredClasses)) for (f = b.classes, c = 0; c < d.length; ++c) if (((e = d[c]), "string" == typeof e)) { if (-1 == CKEDITOR.tools.indexOf(f, e)) return !1; } else if (!CKEDITOR.tools.checkIfAnyArrayItemMatches(f, e)) return !1; return ( n(b.styles, a.requiredStyles) && n(b.attributes, a.requiredAttributes) ); } function n(a, b) { if (!b) return !0; for (var c = 0, e; c < b.length; ++c) if (((e = b[c]), "string" == typeof e)) { if (!(e in a)) return !1; } else if (!CKEDITOR.tools.checkIfAnyObjectPropertyMatches(a, e)) return !1; return !0; } function l(a) { if (!a) return {}; a = a.split(/\s*,\s*/).sort(); for (var b = {}; a.length; ) b[a.shift()] = "cke-test"; return b; } function g(a) { var b, c, e, d, f = {}, g = 1; for (a = A(a); (b = a.match(r)); ) (c = b[2]) ? ((e = x(c, "styles")), (d = x(c, "attrs")), (c = x(c, "classes"))) : (e = d = c = null), (f["$" + g++] = { elements: b[1], classes: c, styles: e, attributes: d, }), (a = a.slice(b[0].length)); return f; } function x(a, b) { var c = a.match(E[b]); return c ? A(c[1]) : null; } function y(a) { var b = (a.styleBackup = a.attributes.style), c = (a.classBackup = a.attributes["class"]); a.styles || (a.styles = CKEDITOR.tools.parseCssText(b || "", 1)); a.classes || (a.classes = c ? c.split(/\s+/) : []); } function z(a, b, e, f) { var g = 0, t; f.toHtml && (b.name = b.name.replace(S, "$1")); if (f.doCallbacks && a.elementCallbacks) { a: { t = a.elementCallbacks; for (var r = 0, A = t.length, h; r < A; ++r) if ((h = t[r](b))) { t = h; break a; } t = void 0; } if (t) return t; } if (f.doTransform && (t = a._.transformations[b.name])) { y(b); for (r = 0; r < t.length; ++r) q(a, b, t[r]); v(b); } if (f.doFilter) { a: { r = b.name; A = a._; a = A.allowedRules.elements[r]; t = A.allowedRules.generic; r = A.disallowedRules.elements[r]; A = A.disallowedRules.generic; h = f.skipRequired; var H = { valid: !1, validAttributes: {}, validClasses: {}, validStyles: {}, allAttributes: !1, allClasses: !1, allStyles: !1, hadInvalidAttribute: !1, hadInvalidClass: !1, hadInvalidStyle: !1, }, k, D; if (a || t) { y(b); if (r) for (k = 0, D = r.length; k < D; ++k) if (!1 === c(r[k], b, H)) { a = null; break a; } if (A) for (k = 0, D = A.length; k < D; ++k) c(A[k], b, H); if (a) for (k = 0, D = a.length; k < D; ++k) d(a[k], b, H, h); if (t) for (k = 0, D = t.length; k < D; ++k) d(t[k], b, H, h); a = H; } else a = null; } if (!a || !a.valid) return e.push(b), 1; D = a.validAttributes; var C = a.validStyles; t = a.validClasses; var r = b.attributes, I = b.styles, A = b.classes; h = b.classBackup; var L = b.styleBackup, E, B, N = [], H = [], l = /^data-cke-/; k = !1; delete r.style; delete r["class"]; delete b.classBackup; delete b.styleBackup; if (!a.allAttributes) for (E in r) D[E] || (l.test(E) ? E == (B = E.replace(/^data-cke-saved-/, "")) || D[B] || (delete r[E], (k = !0)) : (delete r[E], (k = !0))); if (!a.allStyles || a.hadInvalidStyle) { for (E in I) a.allStyles || C[E] ? N.push(E + ":" + I[E]) : (k = !0); N.length && (r.style = N.sort().join("; ")); } else L && (r.style = L); if (!a.allClasses || a.hadInvalidClass) { for (E = 0; E < A.length; ++E) (a.allClasses || t[A[E]]) && H.push(A[E]); H.length && (r["class"] = H.sort().join(" ")); h && H.length < h.split(/\s+/).length && (k = !0); } else h && (r["class"] = h); k && (g = 1); if (!f.skipFinalValidation && !m(b)) return e.push(b), 1; } f.toHtml && (b.name = b.name.replace(p, "cke:$1")); return g; } function G(a) { var b = [], c; for (c in a) -1 < c.indexOf("*") && b.push(c.replace(/\*/g, ".*")); return b.length ? new RegExp("^(?:" + b.join("|") + ")$") : null; } function v(a) { var b = a.attributes, c; delete b.style; delete b["class"]; if ((c = CKEDITOR.tools.writeCssText(a.styles, !0))) b.style = c; a.classes.length && (b["class"] = a.classes.sort().join(" ")); } function m(a) { switch (a.name) { case "a": if (!(a.children.length || a.attributes.name || a.attributes.id)) return !1; break; case "img": if (!a.attributes.src) return !1; } return !0; } function M(a) { if (!a) return !1; if (!0 === a) return !0; var b = G(a); return function (c) { return c in a || (b && c.match(b)); }; } function w() { return new CKEDITOR.htmlParser.element("br"); } function J(a) { return ( a.type == CKEDITOR.NODE_ELEMENT && ("br" == a.name || t.$block[a.name]) ); } function F(a, b, c) { var e = a.name; if (t.$empty[e] || !a.children.length) "hr" == e && "br" == b ? a.replaceWith(w()) : (a.parent && c.push({ check: "it", el: a.parent }), a.remove()); else if (t.$block[e] || "tr" == e) if ("br" == b) a.previous && !J(a.previous) && ((b = w()), b.insertBefore(a)), a.next && !J(a.next) && ((b = w()), b.insertAfter(a)), a.replaceWithChildren(); else { var e = a.children, d; b: { d = t[b]; for (var f = 0, g = e.length, p; f < g; ++f) if (((p = e[f]), p.type == CKEDITOR.NODE_ELEMENT && !d[p.name])) { d = !1; break b; } d = !0; } if (d) (a.name = b), (a.attributes = {}), c.push({ check: "parent-down", el: a }); else { d = a.parent; for ( var f = d.type == CKEDITOR.NODE_DOCUMENT_FRAGMENT || "body" == d.name, r, A, g = e.length; 0 < g; ) (p = e[--g]), f && (p.type == CKEDITOR.NODE_TEXT || (p.type == CKEDITOR.NODE_ELEMENT && t.$inline[p.name])) ? (r || ((r = new CKEDITOR.htmlParser.element(b)), r.insertAfter(a), c.push({ check: "parent-down", el: r })), r.add(p, 0)) : ((r = null), (A = t[d.name] || t.span), p.insertAfter(a), d.type == CKEDITOR.NODE_DOCUMENT_FRAGMENT || p.type != CKEDITOR.NODE_ELEMENT || A[p.name] || c.push({ check: "el-up", el: p })); a.remove(); } } else e in { style: 1, script: 1 } ? a.remove() : (a.parent && c.push({ check: "it", el: a.parent }), a.replaceWithChildren()); } function q(a, b, c) { var e, d; for (e = 0; e < c.length; ++e) if ( ((d = c[e]), !((d.check && !a.check(d.check, !1)) || (d.left && !d.left(b)))) ) { d.right(b, C); break; } } function u(a, b) { var c = b.getDefinition(), e = c.attributes, d = c.styles, f, g, p, t; if (a.name != c.element) return !1; for (f in e) if ("class" == f) for ( c = e[f].split(/\s+/), p = a.classes.join("|"); (t = c.pop()); ) { if (-1 == p.indexOf(t)) return !1; } else if (a.attributes[f] != e[f]) return !1; for (g in d) if (a.styles[g] != d[g]) return !1; return !0; } function K(a, b) { var c, e; "string" == typeof a ? (c = a) : a instanceof CKEDITOR.style ? (e = a) : ((c = a[0]), (e = a[1])); return [ { element: c, left: e, right: function (a, c) { c.transform(a, b); }, }, ]; } function D(a) { return function (b) { return u(b, a); }; } function B(a) { return function (b, c) { c[a](b); }; } var t = CKEDITOR.dtd, H = CKEDITOR.tools.copy, A = CKEDITOR.tools.trim, I = ["", "p", "br", "div"]; CKEDITOR.FILTER_SKIP_TREE = 2; CKEDITOR.filter = function (a, b) { this.allowedContent = []; this.disallowedContent = []; this.elementCallbacks = null; this.disabled = !1; this.editor = null; this.id = CKEDITOR.tools.getNextNumber(); this._ = { allowedRules: { elements: {}, generic: [] }, disallowedRules: { elements: {}, generic: [] }, transformations: {}, cachedTests: {}, cachedChecks: {}, }; CKEDITOR.filter.instances[this.id] = this; var c = (this.editor = a instanceof CKEDITOR.editor ? a : null); if (c && !b) { this.customConfig = !0; var e = c.config.allowedContent; !0 === e ? (this.disabled = !0) : (e || (this.customConfig = !1), this.allow(e, "config", 1), this.allow(c.config.extraAllowedContent, "extra", 1), this.allow( I[c.enterMode] + " " + I[c.shiftEnterMode], "default", 1 ), this.disallow(c.config.disallowedContent)); } else (this.customConfig = !1), this.allow(b || a, "default", 1); }; CKEDITOR.filter.instances = {}; CKEDITOR.filter.prototype = { allow: function (b, c, d) { if (!e(this, b, d)) return !1; var f, p; if ("string" == typeof b) b = g(b); else if (b instanceof CKEDITOR.style) { if (b.toAllowedContentRules) return this.allow(b.toAllowedContentRules(this.editor), c, d); f = b.getDefinition(); b = {}; d = f.attributes; b[f.element] = f = { styles: f.styles, requiredStyles: f.styles && CKEDITOR.tools.object.keys(f.styles), }; d && ((d = H(d)), (f.classes = d["class"] ? d["class"].split(/\s+/) : null), (f.requiredClasses = f.classes), delete d["class"], (f.attributes = d), (f.requiredAttributes = d && CKEDITOR.tools.object.keys(d))); } else if (CKEDITOR.tools.isArray(b)) { for (f = 0; f < b.length; ++f) p = this.allow(b[f], c, d); return p; } a(this, b, c, this.allowedContent, this._.allowedRules); return !0; }, applyTo: function (a, b, c, e) { if (this.disabled) return !1; var d = this, f = [], g = this.editor && this.editor.config.protectedSource, p, r = !1, A = { doFilter: !c, doTransform: !0, doCallbacks: !0, toHtml: b }; a.forEach( function (a) { if (a.type == CKEDITOR.NODE_ELEMENT) { if ("off" == a.attributes["data-cke-filter"]) return !1; if ( !b || "span" != a.name || !~CKEDITOR.tools.object .keys(a.attributes) .join("|") .indexOf("data-cke-") ) if (((p = z(d, a, f, A)), p & 1)) r = !0; else if (p & 2) return !1; } else if ( a.type == CKEDITOR.NODE_COMMENT && a.value.match(/^\{cke_protected\}(?!\{C\})/) ) { var c; a: { var e = decodeURIComponent( a.value.replace(/^\{cke_protected\}/, "") ); c = []; var t, h, k; if (g) for (h = 0; h < g.length; ++h) if ((k = e.match(g[h])) && k[0].length == e.length) { c = !0; break a; } e = CKEDITOR.htmlParser.fragment.fromHtml(e); 1 == e.children.length && (t = e.children[0]).type == CKEDITOR.NODE_ELEMENT && z(d, t, c, A); c = !c.length; } c || f.push(a); } }, null, !0 ); f.length && (r = !0); var h; a = []; e = I[e || (this.editor ? this.editor.enterMode : CKEDITOR.ENTER_P)]; for (var k; (c = f.pop()); ) c.type == CKEDITOR.NODE_ELEMENT ? F(c, e, a) : c.remove(); for (; (h = a.pop()); ) if (((c = h.el), c.parent)) switch (((k = t[c.parent.name] || t.span), h.check)) { case "it": t.$removeEmpty[c.name] && !c.children.length ? F(c, e, a) : m(c) || F(c, e, a); break; case "el-up": c.parent.type == CKEDITOR.NODE_DOCUMENT_FRAGMENT || k[c.name] || F(c, e, a); break; case "parent-down": c.parent.type == CKEDITOR.NODE_DOCUMENT_FRAGMENT || k[c.name] || F(c.parent, e, a); } return r; }, checkFeature: function (a) { if (this.disabled || !a) return !0; a.toFeature && (a = a.toFeature(this.editor)); return !a.requiredContent || this.check(a.requiredContent); }, disable: function () { this.disabled = !0; }, disallow: function (b) { if (!e(this, b, !0)) return !1; "string" == typeof b && (b = g(b)); a(this, b, null, this.disallowedContent, this._.disallowedRules); return !0; }, addContentForms: function (a) { if (!this.disabled && a) { var b, c, e = [], d; for (b = 0; b < a.length && !d; ++b) (c = a[b]), ("string" == typeof c || c instanceof CKEDITOR.style) && this.check(c) && (d = c); if (d) { for (b = 0; b < a.length; ++b) e.push(K(a[b], d)); this.addTransformations(e); } } }, addElementCallback: function (a) { this.elementCallbacks || (this.elementCallbacks = []); this.elementCallbacks.push(a); }, addFeature: function (a) { if (this.disabled || !a) return !0; a.toFeature && (a = a.toFeature(this.editor)); this.allow(a.allowedContent, a.name); this.addTransformations(a.contentTransformations); this.addContentForms(a.contentForms); return a.requiredContent && (this.customConfig || this.disallowedContent.length) ? this.check(a.requiredContent) : !0; }, addTransformations: function (a) { var b, c; if (!this.disabled && a) { var e = this._.transformations, d; for (d = 0; d < a.length; ++d) { b = a[d]; var f = void 0, g = void 0, p = void 0, t = void 0, r = void 0, A = void 0; c = []; for (g = 0; g < b.length; ++g) (p = b[g]), "string" == typeof p ? ((p = p.split(/\s*:\s*/)), (t = p[0]), (r = null), (A = p[1])) : ((t = p.check), (r = p.left), (A = p.right)), f || ((f = p), (f = f.element ? f.element : t ? t.match(/^([a-z0-9]+)/i)[0] : f.left.getDefinition().element)), r instanceof CKEDITOR.style && (r = D(r)), c.push({ check: t == f ? null : t, left: r, right: "string" == typeof A ? B(A) : A, }); b = f; e[b] || (e[b] = []); e[b].push(c); } } }, check: function (a, b, c) { if (this.disabled) return !0; if (CKEDITOR.tools.isArray(a)) { for (var e = a.length; e--; ) if (this.check(a[e], b, c)) return !0; return !1; } var d, f; if ("string" == typeof a) { f = a + "\x3c" + (!1 === b ? "0" : "1") + (c ? "1" : "0") + "\x3e"; if (f in this._.cachedChecks) return this._.cachedChecks[f]; d = g(a).$1; var p = d.styles, e = d.classes; d.name = d.elements; d.classes = e = e ? e.split(/\s*,\s*/) : []; d.styles = l(p); d.attributes = l(d.attributes); d.children = []; e.length && (d.attributes["class"] = e.join(" ")); p && (d.attributes.style = CKEDITOR.tools.writeCssText(d.styles)); } else (d = a.getDefinition()), (p = d.styles), (e = d.attributes || {}), p && !CKEDITOR.tools.isEmpty(p) ? ((p = H(p)), (e.style = CKEDITOR.tools.writeCssText(p, !0))) : (p = {}), (d = { name: d.element, attributes: e, classes: e["class"] ? e["class"].split(/\s+/) : [], styles: p, children: [], }); var p = CKEDITOR.tools.clone(d), t = [], r; if (!1 !== b && (r = this._.transformations[d.name])) { for (e = 0; e < r.length; ++e) q(this, d, r[e]); v(d); } z(this, p, t, { doFilter: !0, doTransform: !1 !== b, skipRequired: !c, skipFinalValidation: !c, }); 0 < t.length ? (c = !1) : ((b = d.attributes["class"]) && (d.attributes["class"] = d.attributes["class"] .split(" ") .sort() .join(" ")), (c = CKEDITOR.tools.objectCompare(d.attributes, p.attributes, !0)), b && (d.attributes["class"] = b)); "string" == typeof a && (this._.cachedChecks[f] = c); return c; }, getAllowedEnterMode: (function () { var a = ["p", "div", "br"], b = { p: CKEDITOR.ENTER_P, div: CKEDITOR.ENTER_DIV, br: CKEDITOR.ENTER_BR, }; return function (c, e) { var d = a.slice(), f; if (this.check(I[c])) return c; for (e || (d = d.reverse()); (f = d.pop()); ) if (this.check(f)) return b[f]; return CKEDITOR.ENTER_BR; }; })(), clone: function () { var a = new CKEDITOR.filter(), b = CKEDITOR.tools.clone; a.allowedContent = b(this.allowedContent); a._.allowedRules = b(this._.allowedRules); a.disallowedContent = b(this.disallowedContent); a._.disallowedRules = b(this._.disallowedRules); a._.transformations = b(this._.transformations); a.disabled = this.disabled; a.editor = this.editor; return a; }, destroy: function () { delete CKEDITOR.filter.instances[this.id]; delete this._; delete this.allowedContent; delete this.disallowedContent; }, }; var N = { styles: 1, attributes: 1, classes: 1 }, L = { styles: "requiredStyles", attributes: "requiredAttributes", classes: "requiredClasses", }, r = /^([a-z0-9\-*\s]+)((?:\s*\{[!\w\-,\s\*]+\}\s*|\s*\[[!\w\-,\s\*]+\]\s*|\s*\([!\w\-,\s\*]+\)\s*){0,3})(?:;\s*|$)/i, E = { styles: /{([^}]+)}/, attrs: /\[([^\]]+)\]/, classes: /\(([^\)]+)\)/, }, S = /^cke:(object|embed|param)$/, p = /^(object|embed|param)$/, C; C = CKEDITOR.filter.transformationsTools = { sizeToStyle: function (a) { this.lengthToStyle(a, "width"); this.lengthToStyle(a, "height"); }, sizeToAttribute: function (a) { this.lengthToAttribute(a, "width"); this.lengthToAttribute(a, "height"); }, lengthToStyle: function (a, b, c) { c = c || b; if (!(c in a.styles)) { var e = a.attributes[b]; e && (/^\d+$/.test(e) && (e += "px"), (a.styles[c] = e)); } delete a.attributes[b]; }, lengthToAttribute: function (a, b, c) { c = c || b; if (!(c in a.attributes)) { var e = a.styles[b], d = e && e.match(/^(\d+)(?:\.\d*)?px$/); d ? (a.attributes[c] = d[1]) : "cke-test" == e && (a.attributes[c] = "cke-test"); } delete a.styles[b]; }, alignmentToStyle: function (a) { if (!("float" in a.styles)) { var b = a.attributes.align; if ("left" == b || "right" == b) a.styles["float"] = b; } delete a.attributes.align; }, alignmentToAttribute: function (a) { if (!("align" in a.attributes)) { var b = a.styles["float"]; if ("left" == b || "right" == b) a.attributes.align = b; } delete a.styles["float"]; }, splitBorderShorthand: function (a) { if (a.styles.border) { var b = CKEDITOR.tools.style.parse.border(a.styles.border); b.color && (a.styles["border-color"] = b.color); b.style && (a.styles["border-style"] = b.style); b.width && (a.styles["border-width"] = b.width); delete a.styles.border; } }, listTypeToStyle: function (a) { if (a.attributes.type) switch (a.attributes.type) { case "a": a.styles["list-style-type"] = "lower-alpha"; break; case "A": a.styles["list-style-type"] = "upper-alpha"; break; case "i": a.styles["list-style-type"] = "lower-roman"; break; case "I": a.styles["list-style-type"] = "upper-roman"; break; case "1": a.styles["list-style-type"] = "decimal"; break; default: a.styles["list-style-type"] = a.attributes.type; } }, splitMarginShorthand: function (a) { function b(e) { a.styles["margin-top"] = c[e[0]]; a.styles["margin-right"] = c[e[1]]; a.styles["margin-bottom"] = c[e[2]]; a.styles["margin-left"] = c[e[3]]; } if (a.styles.margin) { var c = a.styles.margin.match( /(auto|0|(?:\-?[\.\d]+(?:\w+|%)))/g ) || ["0px"]; switch (c.length) { case 1: b([0, 0, 0, 0]); break; case 2: b([0, 1, 0, 1]); break; case 3: b([0, 1, 2, 1]); break; case 4: b([0, 1, 2, 3]); } delete a.styles.margin; } }, matchesStyle: u, transform: function (a, b) { if ("string" == typeof b) a.name = b; else { var c = b.getDefinition(), e = c.styles, d = c.attributes, f, g, p, t; a.name = c.element; for (f in d) if ("class" == f) for ( c = a.classes.join("|"), p = d[f].split(/\s+/); (t = p.pop()); ) -1 == c.indexOf(t) && a.classes.push(t); else a.attributes[f] = d[f]; for (g in e) a.styles[g] = e[g]; } }, }; })(); (function () { CKEDITOR.focusManager = function (a) { if (a.focusManager) return a.focusManager; this.hasFocus = !1; this.currentActive = null; this._ = { editor: a }; return this; }; CKEDITOR.focusManager._ = { blurDelay: 200 }; CKEDITOR.focusManager.prototype = { focus: function (a) { this._.timer && clearTimeout(this._.timer); a && (this.currentActive = a); this.hasFocus || this._.locked || ((a = CKEDITOR.currentInstance) && a.focusManager.blur(1), (this.hasFocus = !0), (a = this._.editor.container) && a.addClass("cke_focus"), this._.editor.fire("focus")); }, lock: function () { this._.locked = 1; }, unlock: function () { delete this._.locked; }, blur: function (a) { function d() { if (this.hasFocus) { this.hasFocus = !1; var a = this._.editor.container; a && a.removeClass("cke_focus"); this._.editor.fire("blur"); } } if (!this._.locked) { this._.timer && clearTimeout(this._.timer); var b = CKEDITOR.focusManager._.blurDelay; a || !b ? d.call(this) : (this._.timer = CKEDITOR.tools.setTimeout( function () { delete this._.timer; d.call(this); }, b, this )); } }, add: function (a, d) { var b = a.getCustomData("focusmanager"); if (!b || b != this) { b && b.remove(a); var b = "focus", c = "blur"; d && (CKEDITOR.env.ie ? ((b = "focusin"), (c = "focusout")) : (CKEDITOR.event.useCapture = 1)); var f = { blur: function () { a.equals(this.currentActive) && this.blur(); }, focus: function () { this.focus(a); }, }; a.on(b, f.focus, this); a.on(c, f.blur, this); d && (CKEDITOR.event.useCapture = 0); a.setCustomData("focusmanager", this); a.setCustomData("focusmanager_handlers", f); } }, remove: function (a) { a.removeCustomData("focusmanager"); var d = a.removeCustomData("focusmanager_handlers"); a.removeListener("blur", d.blur); a.removeListener("focus", d.focus); }, }; })(); CKEDITOR.keystrokeHandler = function (a) { if (a.keystrokeHandler) return a.keystrokeHandler; this.keystrokes = {}; this.blockedKeystrokes = {}; this._ = { editor: a }; return this; }; (function () { var a, d = function (b) { b = b.data; var d = b.getKeystroke(), e = this.keystrokes[d], k = this._.editor; a = !1 === k.fire("key", { keyCode: d, domEvent: b }); a || (e && (a = !1 !== k.execCommand(e, { from: "keystrokeHandler" })), a || (a = !!this.blockedKeystrokes[d])); a && b.preventDefault(!0); return !a; }, b = function (b) { a && ((a = !1), b.data.preventDefault(!0)); }; CKEDITOR.keystrokeHandler.prototype = { attach: function (a) { a.on("keydown", d, this); if (CKEDITOR.env.gecko && CKEDITOR.env.mac) a.on("keypress", b, this); }, }; })(); (function () { CKEDITOR.lang = { languages: { af: 1, ar: 1, az: 1, bg: 1, bn: 1, bs: 1, ca: 1, cs: 1, cy: 1, da: 1, de: 1, "de-ch": 1, el: 1, "en-au": 1, "en-ca": 1, "en-gb": 1, en: 1, eo: 1, es: 1, "es-mx": 1, et: 1, eu: 1, fa: 1, fi: 1, fo: 1, "fr-ca": 1, fr: 1, gl: 1, gu: 1, he: 1, hi: 1, hr: 1, hu: 1, id: 1, is: 1, it: 1, ja: 1, ka: 1, km: 1, ko: 1, ku: 1, lt: 1, lv: 1, mk: 1, mn: 1, ms: 1, nb: 1, nl: 1, no: 1, oc: 1, pl: 1, "pt-br": 1, pt: 1, ro: 1, ru: 1, si: 1, sk: 1, sl: 1, sq: 1, "sr-latn": 1, sr: 1, sv: 1, th: 1, tr: 1, tt: 1, ug: 1, uk: 1, vi: 1, "zh-cn": 1, zh: 1, }, rtl: { ar: 1, fa: 1, he: 1, ku: 1, ug: 1 }, load: function (a, d, b) { (a && CKEDITOR.lang.languages[a]) || (a = this.detect(d, a)); var c = this; d = function () { c[a].dir = c.rtl[a] ? "rtl" : "ltr"; b(a, c[a]); }; this[a] ? d() : CKEDITOR.scriptLoader.load( CKEDITOR.getUrl("lang/" + a + ".js"), d, this ); }, detect: function (a, d) { var b = this.languages; d = d || navigator.userLanguage || navigator.language || a; var c = d.toLowerCase().match(/([a-z]+)(?:-([a-z]+))?/), f = c[1], c = c[2]; b[f + "-" + c] ? (f = f + "-" + c) : b[f] || (f = null); CKEDITOR.lang.detect = f ? function () { return f; } : function (a) { return a; }; return f || a; }, }; })(); CKEDITOR.scriptLoader = (function () { var a = {}, d = {}; return { load: function (b, c, f, e) { var k = "string" == typeof b; k && (b = [b]); f || (f = CKEDITOR); var h = b.length, n = h, l = [], g = [], x = function (a) { c && (k ? c.call(f, a) : c.call(f, l, g)); }; if (0 === n) x(!0); else { var y = function (a, b) { (b ? l : g).push(a); 0 >= --n && (e && CKEDITOR.document.getDocumentElement().removeStyle("cursor"), x(b)); }, z = function (b, c) { a[b] = 1; var e = d[b]; delete d[b]; for (var f = 0; f < e.length; f++) e[f](b, c); }, G = function (b) { if (a[b]) y(b, !0); else { var e = d[b] || (d[b] = []); e.push(y); if (!(1 < e.length)) { var f = new CKEDITOR.dom.element("script"); f.setAttributes({ type: "text/javascript", src: b }); c && (CKEDITOR.env.ie && (8 >= CKEDITOR.env.version || CKEDITOR.env.ie9Compat) ? (f.$.onreadystatechange = function () { if ( "loaded" == f.$.readyState || "complete" == f.$.readyState ) (f.$.onreadystatechange = null), z(b, !0); }) : ((f.$.onload = function () { setTimeout(function () { f.$.onload = null; f.$.onerror = null; z(b, !0); }, 0); }), (f.$.onerror = function () { f.$.onload = null; f.$.onerror = null; z(b, !1); }))); f.appendTo(CKEDITOR.document.getHead()); } } }; e && CKEDITOR.document.getDocumentElement().setStyle("cursor", "wait"); for (var v = 0; v < h; v++) G(b[v]); } }, queue: (function () { function a() { var b; (b = c[0]) && this.load(b.scriptUrl, b.callback, CKEDITOR, 0); } var c = []; return function (d, e) { var k = this; c.push({ scriptUrl: d, callback: function () { e && e.apply(this, arguments); c.shift(); a.call(k); }, }); 1 == c.length && a.call(this); }; })(), }; })(); CKEDITOR.resourceManager = function (a, d) { this.basePath = a; this.fileName = d; this.registered = {}; this.loaded = {}; this.externals = {}; this._ = { waitingList: {} }; }; CKEDITOR.resourceManager.prototype = { add: function (a, d) { if (this.registered[a]) throw Error( '[CKEDITOR.resourceManager.add] The resource name "' + a + '" is already registered.' ); var b = (this.registered[a] = d || {}); b.name = a; b.path = this.getPath(a); CKEDITOR.fire(a + CKEDITOR.tools.capitalize(this.fileName) + "Ready", b); return this.get(a); }, get: function (a) { return this.registered[a] || null; }, getPath: function (a) { var d = this.externals[a]; return CKEDITOR.getUrl((d && d.dir) || this.basePath + a + "/"); }, getFilePath: function (a) { var d = this.externals[a]; return CKEDITOR.getUrl( this.getPath(a) + (d ? d.file : this.fileName + ".js") ); }, addExternal: function (a, d, b) { b || (d = d.replace(/[^\/]+$/, function (a) { b = a; return ""; })); b = b || this.fileName + ".js"; a = a.split(","); for (var c = 0; c < a.length; c++) this.externals[a[c]] = { dir: d, file: b }; }, load: function (a, d, b) { CKEDITOR.tools.isArray(a) || (a = a ? [a] : []); for ( var c = this.loaded, f = this.registered, e = [], k = {}, h = {}, n = 0; n < a.length; n++ ) { var l = a[n]; if (l) if (c[l] || f[l]) h[l] = this.get(l); else { var g = this.getFilePath(l); e.push(g); g in k || (k[g] = []); k[g].push(l); } } CKEDITOR.scriptLoader.load( e, function (a, e) { if (e.length) throw Error( '[CKEDITOR.resourceManager.load] Resource name "' + k[e[0]].join(",") + '" was not found at "' + e[0] + '".' ); for (var f = 0; f < a.length; f++) for (var g = k[a[f]], l = 0; l < g.length; l++) { var m = g[l]; h[m] = this.get(m); c[m] = 1; } d.call(b, h); }, this ); }, }; CKEDITOR.plugins = new CKEDITOR.resourceManager("plugins/", "plugin"); CKEDITOR.plugins.load = CKEDITOR.tools.override( CKEDITOR.plugins.load, function (a) { var d = {}; return function (b, c, f) { var e = {}, k = function (b) { a.call( this, b, function (a) { CKEDITOR.tools.extend(e, a); var b = [], g; for (g in a) { var h = a[g], y = h && h.requires; if (!d[g]) { if (h.icons) for (var z = h.icons.split(","), G = z.length; G--; ) CKEDITOR.skin.addIcon( z[G], h.path + "icons/" + (CKEDITOR.env.hidpi && h.hidpi ? "hidpi/" : "") + z[G] + ".png" ); h.isSupportedEnvironment = h.isSupportedEnvironment || function () { return !0; }; d[g] = 1; } if (y) for ( y.split && (y = y.split(",")), h = 0; h < y.length; h++ ) e[y[h]] || b.push(y[h]); } if (b.length) k.call(this, b); else { for (g in e) (h = e[g]), h.onLoad && !h.onLoad._called && (!1 === h.onLoad() && delete e[g], (h.onLoad._called = 1)); c && c.call(f || window, e); } }, this ); }; k.call(this, b); }; } ); CKEDITOR.plugins.setLang = function (a, d, b) { var c = this.get(a); a = c.langEntries || (c.langEntries = {}); c = c.lang || (c.lang = []); c.split && (c = c.split(",")); -1 == CKEDITOR.tools.indexOf(c, d) && c.push(d); a[d] = b; }; CKEDITOR.ui = function (a) { if (a.ui) return a.ui; this.items = {}; this.instances = {}; this.editor = a; this._ = { handlers: {} }; return this; }; CKEDITOR.ui.prototype = { add: function (a, d, b) { b.name = a.toLowerCase(); var c = (this.items[a] = { type: d, command: b.command || null, args: Array.prototype.slice.call(arguments, 2), }); CKEDITOR.tools.extend(c, b); }, get: function (a) { return this.instances[a]; }, create: function (a) { var d = this.items[a], b = d && this._.handlers[d.type], c = d && d.command && this.editor.getCommand(d.command), b = b && b.create.apply(this, d.args); this.instances[a] = b; c && c.uiItems.push(b); b && !b.type && (b.type = d.type); return b; }, addHandler: function (a, d) { this._.handlers[a] = d; }, space: function (a) { return CKEDITOR.document.getById(this.spaceId(a)); }, spaceId: function (a) { return this.editor.id + "_" + a; }, }; CKEDITOR.event.implementOn(CKEDITOR.ui); (function () { function a(a, f, g) { CKEDITOR.event.call(this); a = a && CKEDITOR.tools.clone(a); if (void 0 !== f) { if (!(f instanceof CKEDITOR.dom.element)) throw Error("Expect element of type CKEDITOR.dom.element."); if (!g) throw Error("One of the element modes must be specified."); if ( CKEDITOR.env.ie && CKEDITOR.env.quirks && g == CKEDITOR.ELEMENT_MODE_INLINE ) throw Error("Inline element mode is not supported on IE quirks."); if (!b(f, g)) throw Error( 'The specified element mode is not supported on element: "' + f.getName() + '".' ); this.element = f; this.elementMode = g; this.name = this.elementMode != CKEDITOR.ELEMENT_MODE_APPENDTO && (f.getId() || f.getNameAtt()); } else this.elementMode = CKEDITOR.ELEMENT_MODE_NONE; this._ = {}; this.commands = {}; this.templates = {}; this.name = this.name || d(); this.id = CKEDITOR.tools.getNextId(); this.status = "unloaded"; this.config = CKEDITOR.tools.prototypedCopy(CKEDITOR.config); this.ui = new CKEDITOR.ui(this); this.focusManager = new CKEDITOR.focusManager(this); this.keystrokeHandler = new CKEDITOR.keystrokeHandler(this); this.on("readOnly", c); this.on("selectionChange", function (a) { e(this, a.data.path); }); this.on("activeFilterChange", function () { e(this, this.elementPath(), !0); }); this.on("mode", c); CKEDITOR.dom.selection.setupEditorOptimization(this); this.on("instanceReady", function () { if (this.config.startupFocus) { if ("end" === this.config.startupFocus) { var a = this.createRange(); a.selectNodeContents(this.editable()); a.shrink(CKEDITOR.SHRINK_ELEMENT, !0); a.collapse(); this.getSelection().selectRanges([a]); } this.focus(); } }); CKEDITOR.fire("instanceCreated", null, this); CKEDITOR.add(this); CKEDITOR.tools.setTimeout( function () { this.isDestroyed() || this.isDetached() || h(this, a); }, 0, this ); } function d() { do var a = "editor" + ++G; while (CKEDITOR.instances[a]); return a; } function b(a, b) { return b == CKEDITOR.ELEMENT_MODE_INLINE ? a.is(CKEDITOR.dtd.$editable) || a.is("textarea") : b == CKEDITOR.ELEMENT_MODE_REPLACE ? !a.is(CKEDITOR.dtd.$nonBodyContent) : 1; } function c() { var a = this.commands, b; for (b in a) f(this, a[b]); } function f(a, b) { b[ b.startDisabled ? "disable" : a.readOnly && !b.readOnly ? "disable" : b.modes[a.mode] ? "enable" : "disable" ](); } function e(a, b, c) { if (b) { var e, d, f = a.commands; for (d in f) (e = f[d]), (c || e.contextSensitive) && e.refresh(a, b); } } function k(a) { var b = a.config.customConfig; if (!b) return !1; var b = CKEDITOR.getUrl(b), c = v[b] || (v[b] = {}); c.fn ? (c.fn.call(a, a.config), (CKEDITOR.getUrl(a.config.customConfig) != b && k(a)) || a.fireOnce("customConfigLoaded")) : CKEDITOR.scriptLoader.queue(b, function () { c.fn = c.fn || CKEDITOR.editorConfig || function () {}; k(a); }); return !0; } function h(a, b) { a.on("customConfigLoaded", function () { if (b) { if (b.on) for (var c in b.on) a.on(c, b.on[c]); CKEDITOR.tools.extend(a.config, b, !0); delete a.config.on; } c = a.config; a.readOnly = c.readOnly ? !0 : a.elementMode == CKEDITOR.ELEMENT_MODE_INLINE ? a.element.is("textarea") ? a.element.hasAttribute("disabled") || a.element.hasAttribute("readonly") : a.element.isReadOnly() : a.elementMode == CKEDITOR.ELEMENT_MODE_REPLACE ? a.element.hasAttribute("disabled") || a.element.hasAttribute("readonly") : !1; a.blockless = a.elementMode == CKEDITOR.ELEMENT_MODE_INLINE ? !(a.element.is("textarea") || CKEDITOR.dtd[a.element.getName()].p) : !1; a.tabIndex = c.tabIndex || (a.element && a.element.getAttribute("tabindex")) || 0; a.activeEnterMode = a.enterMode = a.blockless ? CKEDITOR.ENTER_BR : c.enterMode; a.activeShiftEnterMode = a.shiftEnterMode = a.blockless ? CKEDITOR.ENTER_BR : c.shiftEnterMode; c.skin && (CKEDITOR.skinName = c.skin); a.fireOnce("configLoaded"); a.dataProcessor = new CKEDITOR.htmlDataProcessor(a); a.filter = a.activeFilter = new CKEDITOR.filter(a); n(a); }); b && null != b.customConfig && (a.config.customConfig = b.customConfig); k(a) || a.fireOnce("customConfigLoaded"); } function n(a) { CKEDITOR.skin.loadPart("editor", function () { l(a); }); } function l(a) { CKEDITOR.lang.load( a.config.language, a.config.defaultLanguage, function (b, c) { var e = a.config.title, d = a.config.applicationTitle; a.langCode = b; a.lang = CKEDITOR.tools.prototypedCopy(c); a.title = "string" == typeof e || !1 === e ? e : [a.lang.editor, a.name].join(", "); a.applicationTitle = "string" == typeof d || !1 === d ? d : [a.lang.application, a.name].join(", "); a.config.contentsLangDirection || (a.config.contentsLangDirection = a.elementMode == CKEDITOR.ELEMENT_MODE_INLINE ? a.element.getDirection(1) : a.lang.dir); a.fire("langLoaded"); g(a); } ); } function g(a) { a.getStylesSet(function (b) { a.once( "loaded", function () { a.fire("stylesSet", { styles: b }); }, null, null, 1 ); x(a); }); } function x(a) { function b(a) { if (!a) return ""; CKEDITOR.tools.isArray(a) && (a = a.join(",")); return a.replace(/\s/g, ""); } var c = a.config, e = b(c.plugins), d = b(c.extraPlugins), f = b(c.removePlugins); if (d) var g = new RegExp( "(?:^|,)(?:" + d.replace(/,/g, "|") + ")(?\x3d,|$)", "g" ), e = e.replace(g, ""), e = e + ("," + d); if (f) var h = new RegExp( "(?:^|,)(?:" + f.replace(/,/g, "|") + ")(?\x3d,|$)", "g" ), e = e.replace(h, ""); CKEDITOR.env.air && (e += ",adobeair"); CKEDITOR.plugins.load(e.split(","), function (b) { var e = [], d = [], f = []; a.plugins = CKEDITOR.tools.extend({}, a.plugins, b); for (var g in b) { var k = b[g], N = k.lang, L = null, r = k.requires, E; CKEDITOR.tools.isArray(r) && (r = r.join(",")); if (r && (E = r.match(h))) for (; (r = E.pop()); ) CKEDITOR.error("editor-plugin-required", { plugin: r.replace(",", ""), requiredBy: g, }); N && !a.lang[g] && (N.split && (N = N.split(",")), 0 <= CKEDITOR.tools.indexOf(N, a.langCode) ? (L = a.langCode) : ((L = a.langCode.replace(/-.*/, "")), (L = L != a.langCode && 0 <= CKEDITOR.tools.indexOf(N, L) ? L : 0 <= CKEDITOR.tools.indexOf(N, "en") ? "en" : N[0])), k.langEntries && k.langEntries[L] ? ((a.lang[g] = k.langEntries[L]), (L = null)) : f.push(CKEDITOR.getUrl(k.path + "lang/" + L + ".js"))); d.push(L); e.push(k); } CKEDITOR.scriptLoader.load(f, function () { if (!a.isDestroyed() && !a.isDetached()) { for ( var b = ["beforeInit", "init", "afterInit"], f = 0; f < b.length; f++ ) for (var g = 0; g < e.length; g++) { var r = e[g]; 0 === f && d[g] && r.lang && r.langEntries && (a.lang[r.name] = r.langEntries[d[g]]); if (r[b[f]]) r[b[f]](a); } a.fireOnce("pluginsLoaded"); c.keystrokes && a.setKeystroke(a.config.keystrokes); for (g = 0; g < a.config.blockedKeystrokes.length; g++) a.keystrokeHandler.blockedKeystrokes[ a.config.blockedKeystrokes[g] ] = 1; a.status = "loaded"; a.fireOnce("loaded"); CKEDITOR.fire("instanceLoaded", null, a); } }); }); } function y() { var a = this.element; if (a && this.elementMode != CKEDITOR.ELEMENT_MODE_APPENDTO) { var b = this.getData(); this.config.htmlEncodeOutput && (b = CKEDITOR.tools.htmlEncode(b)); a.is("textarea") ? a.setValue(b) : a.setHtml(b); return !0; } return !1; } function z(a, b) { function c(a) { var b = a.startContainer, e = a.endContainer, d = b.is && b.is("tr"), f = b.is && b.is("td"); a = f && b.equals(e) && a.endOffset === b.getChildCount(); b = f && 1 === b.getChildCount() && "img" === b.getChildren().getItem(0).getName(); return d || (a && !b) ? !0 : !1; } function e(a) { var b = a.startContainer; return b.is("tr") ? a.cloneContents() : b.clone(!0); } for ( var d = new CKEDITOR.dom.documentFragment(), f, g, h, k = 0; k < a.length; k++ ) { var B = a[k], t = B.startContainer.getAscendant("tr", !0); c(B) ? (f || ((f = t.getAscendant("table").clone()), f.append( t.getAscendant({ thead: 1, tbody: 1, tfoot: 1 }).clone() ), d.append(f), (f = f.findOne("thead, tbody, tfoot"))), (g && g.equals(t)) || ((g = t), (h = t.clone()), f.append(h)), h.append(e(B))) : d.append(B.cloneContents()); } return f ? d : b.getHtmlFromRange(a[0]); } a.prototype = CKEDITOR.editor.prototype; CKEDITOR.editor = a; var G = 0, v = {}; CKEDITOR.tools.extend(CKEDITOR.editor.prototype, { plugins: { detectConflict: function (a, b) { for (var c = 0; c < b.length; c++) { var e = b[c]; if (this[e]) return ( CKEDITOR.warn("editor-plugin-conflict", { plugin: a, replacedWith: e, }), !0 ); } return !1; }, }, addCommand: function (a, b) { b.name = a.toLowerCase(); var c = b instanceof CKEDITOR.command ? b : new CKEDITOR.command(this, b); this.mode && f(this, c); return (this.commands[a] = c); }, _attachToForm: function () { function a(b) { c.updateElement(); c._.required && !e.getValue() && !1 === c.fire("required") && b.data.preventDefault(); } function b(a) { return !!(a && a.call && a.apply); } var c = this, e = c.element, d = new CKEDITOR.dom.element(e.$.form); e.is("textarea") && d && (d.on("submit", a), b(d.$.submit) && (d.$.submit = CKEDITOR.tools.override(d.$.submit, function (b) { return function () { a(); b.apply ? b.apply(this) : b(); }; })), c.on("destroy", function () { d.removeListener("submit", a); })); }, destroy: function (a) { var b = CKEDITOR.filter.instances, c = this; this.fire("beforeDestroy"); !a && y.call(this); this.editable(null); this.filter && delete this.filter; CKEDITOR.tools.array.forEach( CKEDITOR.tools.object.keys(b), function (a) { a = b[a]; c === a.editor && a.destroy(); } ); delete this.activeFilter; this.status = "destroyed"; this.fire("destroy"); this.removeAllListeners(); CKEDITOR.remove(this); CKEDITOR.fire("instanceDestroyed", null, this); }, elementPath: function (a) { if (!a) { a = this.getSelection(); if (!a) return null; a = a.getStartElement(); } return a ? new CKEDITOR.dom.elementPath(a, this.editable()) : null; }, createRange: function () { var a = this.editable(); return a ? new CKEDITOR.dom.range(a) : null; }, execCommand: function (a, b) { var c = this.getCommand(a), e = { name: a, commandData: b || {}, command: c }; return c && c.state != CKEDITOR.TRISTATE_DISABLED && !1 !== this.fire("beforeCommandExec", e) && ((e.returnValue = c.exec(e.commandData)), !c.async && !1 !== this.fire("afterCommandExec", e)) ? e.returnValue : !1; }, getCommand: function (a) { return this.commands[a]; }, getData: function (a) { !a && this.fire("beforeGetData"); var b = this._.data; "string" != typeof b && (b = (b = this.element) && this.elementMode == CKEDITOR.ELEMENT_MODE_REPLACE ? b.is("textarea") ? b.getValue() : b.getHtml() : ""); b = { dataValue: b }; !a && this.fire("getData", b); return b.dataValue; }, getSnapshot: function () { var a = this.fire("getSnapshot"); "string" != typeof a && (a = (a = this.element) && this.elementMode == CKEDITOR.ELEMENT_MODE_REPLACE ? a.is("textarea") ? a.getValue() : a.getHtml() : ""); return a; }, loadSnapshot: function (a) { this.fire("loadSnapshot", a); }, setData: function (a, b, c) { var e = !0, d = b; b && "object" == typeof b && ((c = b.internal), (d = b.callback), (e = !b.noSnapshot)); !c && e && this.fire("saveSnapshot"); if (d || !c) this.once("dataReady", function (a) { !c && e && this.fire("saveSnapshot"); d && d.call(a.editor); }); a = { dataValue: a }; !c && this.fire("setData", a); this._.data = a.dataValue; !c && this.fire("afterSetData", a); }, setReadOnly: function (a) { a = null == a || a; this.readOnly != a && ((this.readOnly = a), (this.keystrokeHandler.blockedKeystrokes[8] = +a), this.editable().setReadOnly(a), this.fire("readOnly")); }, insertHtml: function (a, b, c) { this.fire("insertHtml", { dataValue: a, mode: b, range: c }); }, insertText: function (a) { this.fire("insertText", a); }, insertElement: function (a) { this.fire("insertElement", a); }, getSelectedHtml: function (a) { var b = this.editable(), c = this.getSelection(), c = c && c.getRanges(); if (!b || !c || 0 === c.length) return null; b = z(c, b); return a ? b.getHtml() : b; }, extractSelectedHtml: function (a, b) { var c = this.editable(), e = this.getSelection().getRanges(), d = new CKEDITOR.dom.documentFragment(), f; if (!c || 0 === e.length) return null; for (f = 0; f < e.length; f++) d.append(c.extractHtmlFromRange(e[f], b)); b || this.getSelection().selectRanges([e[0]]); return a ? d.getHtml() : d; }, focus: function () { this.fire("beforeFocus"); }, checkDirty: function () { return ( "ready" == this.status && this._.previousValue !== this.getSnapshot() ); }, resetDirty: function () { this._.previousValue = this.getSnapshot(); }, updateElement: function () { return y.call(this); }, setKeystroke: function () { for ( var a = this.keystrokeHandler.keystrokes, b = CKEDITOR.tools.isArray(arguments[0]) ? arguments[0] : [[].slice.call(arguments, 0)], c, e, d = b.length; d--; ) (c = b[d]), (e = 0), CKEDITOR.tools.isArray(c) && ((e = c[1]), (c = c[0])), e ? (a[c] = e) : delete a[c]; }, getCommandKeystroke: function (a, b) { var c = "string" === typeof a ? this.getCommand(a) : a, e = []; if (c) { var d = CKEDITOR.tools.object.findKey(this.commands, c), f = this.keystrokeHandler.keystrokes; if (c.fakeKeystroke) e.push(c.fakeKeystroke); else for (var g in f) f[g] === d && e.push(g); } return b ? e : e[0] || null; }, addFeature: function (a) { return this.filter.addFeature(a); }, setActiveFilter: function (a) { a || (a = this.filter); this.activeFilter !== a && ((this.activeFilter = a), this.fire("activeFilterChange"), a === this.filter ? this.setActiveEnterMode(null, null) : this.setActiveEnterMode( a.getAllowedEnterMode(this.enterMode), a.getAllowedEnterMode(this.shiftEnterMode, !0) )); }, setActiveEnterMode: function (a, b) { a = a ? (this.blockless ? CKEDITOR.ENTER_BR : a) : this.enterMode; b = b ? (this.blockless ? CKEDITOR.ENTER_BR : b) : this.shiftEnterMode; if (this.activeEnterMode != a || this.activeShiftEnterMode != b) (this.activeEnterMode = a), (this.activeShiftEnterMode = b), this.fire("activeEnterModeChange"); }, showNotification: function (a) { alert(a); }, isDetached: function () { return !!this.container && this.container.isDetached(); }, isDestroyed: function () { return "destroyed" === this.status; }, }); CKEDITOR.editor._getEditorElement = function (a) { if (!CKEDITOR.env.isCompatible) return null; var b = CKEDITOR.dom.element.get(a); return b ? b.getEditor() ? (CKEDITOR.error("editor-element-conflict", { editorName: b.getEditor().name, }), null) : b : (CKEDITOR.error("editor-incorrect-element", { element: a }), null); }; CKEDITOR.editor.initializeDelayedEditorCreation = function (a, b, c) { if (b.delayIfDetached_callback) return ( CKEDITOR.warn("editor-delayed-creation", { method: "callback" }), b.delayIfDetached_callback(function () { CKEDITOR[c](a, b); CKEDITOR.warn("editor-delayed-creation-success", { method: "callback", }); }), null ); var e = void 0 === b.delayIfDetached_interval ? CKEDITOR.config.delayIfDetached_interval : b.delayIfDetached_interval; CKEDITOR.warn("editor-delayed-creation", { method: "interval - " + e + " ms", }); var d = setInterval(function () { a.isDetached() || (clearInterval(d), CKEDITOR[c](a, b), CKEDITOR.warn("editor-delayed-creation-success", { method: "interval - " + e + " ms", })); }, e); return function () { clearInterval(d); }; }; CKEDITOR.editor.shouldDelayEditorCreation = function (a, b) { CKEDITOR.editor.mergeDelayedCreationConfigs(b); return b && b.delayIfDetached && a.isDetached(); }; CKEDITOR.editor.mergeDelayedCreationConfigs = function (a) { a && ((a.delayIfDetached = "boolean" === typeof a.delayIfDetached ? a.delayIfDetached : CKEDITOR.config.delayIfDetached), (a.delayIfDetached_interval = isNaN(a.delayIfDetached_interval) ? CKEDITOR.config.delayIfDetached_interval : a.delayIfDetached_interval), (a.delayIfDetached_callback = a.delayIfDetached_callback || CKEDITOR.config.delayIfDetached_callback)); }; })(); CKEDITOR.ELEMENT_MODE_NONE = 0; CKEDITOR.ELEMENT_MODE_REPLACE = 1; CKEDITOR.ELEMENT_MODE_APPENDTO = 2; CKEDITOR.ELEMENT_MODE_INLINE = 3; CKEDITOR.config.delayIfDetached = !1; CKEDITOR.config.delayIfDetached_callback = void 0; CKEDITOR.config.delayIfDetached_interval = 50; CKEDITOR.htmlParser = function () { this._ = { htmlPartsRegex: /<(?:(?:\/([^>]+)>)|(?:!--([\S|\s]*?)--!?>)|(?:([^\/\s>]+)((?:\s+[\w\-:.]+(?:\s*=\s*?(?:(?:"[^"]*")|(?:'[^']*')|[^\s"'\/>]+))?)*)[\S\s]*?(\/?)>))/g, }; }; (function () { var a = /([\w\-:.]+)(?:(?:\s*=\s*(?:(?:"([^"]*)")|(?:'([^']*)')|([^\s>]+)))|(?=\s|$))/g, d = { checked: 1, compact: 1, declare: 1, defer: 1, disabled: 1, ismap: 1, multiple: 1, nohref: 1, noresize: 1, noshade: 1, nowrap: 1, readonly: 1, selected: 1, }; CKEDITOR.htmlParser.prototype = { onTagOpen: function () {}, onTagClose: function () {}, onText: function () {}, onCDATA: function () {}, onComment: function () {}, parse: function (b) { for (var c, f, e = 0, k; (c = this._.htmlPartsRegex.exec(b)); ) { f = c.index; if (f > e) if (((e = b.substring(e, f)), k)) k.push(e); else this.onText(e); e = this._.htmlPartsRegex.lastIndex; if ((f = c[1])) if ( ((f = f.toLowerCase()), k && CKEDITOR.dtd.$cdata[f] && (this.onCDATA(k.join("")), (k = null)), !k) ) { this.onTagClose(f); continue; } if (k) k.push(c[0]); else if ((f = c[3])) { if (((f = f.toLowerCase()), !/="/.test(f))) { var h = {}, n, l = c[4]; c = !!c[5]; if (l) for (; (n = a.exec(l)); ) { var g = n[1].toLowerCase(); n = n[2] || n[3] || n[4] || ""; h[g] = !n && d[g] ? g : CKEDITOR.tools.htmlDecodeAttr(n); } this.onTagOpen(f, h, c); !k && CKEDITOR.dtd.$cdata[f] && (k = []); } } else if ((f = c[2])) this.onComment(f); } if (b.length > e) this.onText(b.substring(e, b.length)); }, }; })(); CKEDITOR.htmlParser.basicWriter = CKEDITOR.tools.createClass({ $: function () { this._ = { output: [] }; }, proto: { openTag: function (a) { this._.output.push("\x3c", a); }, openTagClose: function (a, d) { d ? this._.output.push(" /\x3e") : this._.output.push("\x3e"); }, attribute: function (a, d) { "string" == typeof d && (d = CKEDITOR.tools.htmlEncodeAttr(d)); this._.output.push(" ", a, '\x3d"', d, '"'); }, closeTag: function (a) { this._.output.push("\x3c/", a, "\x3e"); }, text: function (a) { this._.output.push(a); }, comment: function (a) { this._.output.push("\x3c!--", a, "--\x3e"); }, write: function (a) { this._.output.push(a); }, reset: function () { this._.output = []; this._.indent = !1; }, getHtml: function (a) { var d = this._.output.join(""); a && this.reset(); return d; }, }, }); ("use strict"); (function () { CKEDITOR.htmlParser.node = function () {}; CKEDITOR.htmlParser.node.prototype = { remove: function () { var a = this.parent.children, d = CKEDITOR.tools.indexOf(a, this), b = this.previous, c = this.next; b && (b.next = c); c && (c.previous = b); a.splice(d, 1); this.parent = null; }, replaceWith: function (a) { var d = this.parent.children, b = CKEDITOR.tools.indexOf(d, this), c = (a.previous = this.previous), f = (a.next = this.next); c && (c.next = a); f && (f.previous = a); d[b] = a; a.parent = this.parent; this.parent = null; }, insertAfter: function (a) { var d = a.parent.children, b = CKEDITOR.tools.indexOf(d, a), c = a.next; d.splice(b + 1, 0, this); this.next = a.next; this.previous = a; a.next = this; c && (c.previous = this); this.parent = a.parent; }, insertBefore: function (a) { var d = a.parent.children, b = CKEDITOR.tools.indexOf(d, a); d.splice(b, 0, this); this.next = a; (this.previous = a.previous) && (a.previous.next = this); a.previous = this; this.parent = a.parent; }, getAscendant: function (a) { var d = "function" == typeof a ? a : "string" == typeof a ? function (b) { return b.name == a; } : function (b) { return b.name in a; }, b = this.parent; for (; b && b.type == CKEDITOR.NODE_ELEMENT; ) { if (d(b)) return b; b = b.parent; } return null; }, wrapWith: function (a) { this.replaceWith(a); a.add(this); return a; }, getIndex: function () { return CKEDITOR.tools.indexOf(this.parent.children, this); }, getFilterContext: function (a) { return a || {}; }, }; })(); ("use strict"); CKEDITOR.htmlParser.comment = function (a) { this.value = a; this._ = { isBlockLike: !1 }; }; CKEDITOR.htmlParser.comment.prototype = CKEDITOR.tools.extend( new CKEDITOR.htmlParser.node(), { type: CKEDITOR.NODE_COMMENT, filter: function (a, d) { var b = this.value; if (!(b = a.onComment(d, b, this))) return this.remove(), !1; if ("string" != typeof b) return this.replaceWith(b), !1; this.value = b; return !0; }, writeHtml: function (a, d) { d && this.filter(d); a.comment(this.value); }, } ); ("use strict"); (function () { CKEDITOR.htmlParser.text = function (a) { this.value = a; this._ = { isBlockLike: !1 }; }; CKEDITOR.htmlParser.text.prototype = CKEDITOR.tools.extend( new CKEDITOR.htmlParser.node(), { type: CKEDITOR.NODE_TEXT, filter: function (a, d) { if (!(this.value = a.onText(d, this.value, this))) return this.remove(), !1; }, writeHtml: function (a, d) { d && this.filter(d); a.text(this.value); }, } ); })(); ("use strict"); (function () { CKEDITOR.htmlParser.cdata = function (a) { this.value = a; }; CKEDITOR.htmlParser.cdata.prototype = CKEDITOR.tools.extend( new CKEDITOR.htmlParser.node(), { type: CKEDITOR.NODE_TEXT, filter: function (a) { var d = this.getAscendant("style"); if (d && d.getAscendant({ math: 1, svg: 1 })) { var d = CKEDITOR.htmlParser.fragment.fromHtml(this.value), b = new CKEDITOR.htmlParser.basicWriter(); a.applyTo(d); d.writeHtml(b); this.value = b.getHtml(); } }, writeHtml: function (a) { a.write(this.value); }, } ); })(); ("use strict"); CKEDITOR.htmlParser.fragment = function () { this.children = []; this.parent = null; this._ = { isBlockLike: !0, hasInlineStarted: !1 }; }; (function () { function a(a) { return a.attributes["data-cke-survive"] ? !1 : ("a" == a.name && a.attributes.href) || CKEDITOR.dtd.$removeEmpty[a.name]; } var d = CKEDITOR.tools.extend( { table: 1, ul: 1, ol: 1, dl: 1 }, CKEDITOR.dtd.table, CKEDITOR.dtd.ul, CKEDITOR.dtd.ol, CKEDITOR.dtd.dl ), b = { ol: 1, ul: 1 }, c = CKEDITOR.tools.extend( {}, { html: 1 }, CKEDITOR.dtd.html, CKEDITOR.dtd.body, CKEDITOR.dtd.head, { style: 1, script: 1 } ), f = { ul: "li", ol: "li", dl: "dd", table: "tbody", tbody: "tr", thead: "tr", tfoot: "tr", tr: "td", }; CKEDITOR.htmlParser.fragment.fromHtml = function (e, k, h) { function n(a) { var b; if (0 < m.length) for (var c = 0; c < m.length; c++) { var e = m[c], d = e.name, f = CKEDITOR.dtd[d], g = w.name && CKEDITOR.dtd[w.name]; (g && !g[d]) || (a && f && !f[a] && CKEDITOR.dtd[a]) ? d == w.name && (x(w, w.parent, 1), c--) : (b || (l(), (b = 1)), (e = e.clone()), (e.parent = w), (w = e), m.splice(c, 1), c--); } } function l() { for (; M.length; ) x(M.shift(), w); } function g(a) { if (a._.isBlockLike && "pre" != a.name && "textarea" != a.name) { var b = a.children.length, c = a.children[b - 1], e; c && c.type == CKEDITOR.NODE_TEXT && ((e = CKEDITOR.tools.rtrim(c.value)) ? (c.value = e) : (a.children.length = b - 1)); } } function x(b, c, e) { c = c || w || v; var d = w; void 0 === b.previous && (y(c, b) && ((w = c), G.onTagOpen(h, {}), (b.returnPoint = c = w)), g(b), (a(b) && !b.children.length) || c.add(b), "pre" == b.name && (F = !1), "textarea" == b.name && (J = !1)); b.returnPoint ? ((w = b.returnPoint), delete b.returnPoint) : (w = e ? c : d); } function y(a, b) { if ( (a == v || "body" == a.name) && h && (!a.name || CKEDITOR.dtd[a.name][h]) ) { var c, e; return ( ((c = b.attributes && (e = b.attributes["data-cke-real-element-type"]) ? e : b.name) && c in CKEDITOR.dtd.$inline && !(c in CKEDITOR.dtd.head) && !b.isOrphan) || b.type == CKEDITOR.NODE_TEXT ); } } function z(a, b) { return a in CKEDITOR.dtd.$listItem || a in CKEDITOR.dtd.$tableContent ? a == b || ("dt" == a && "dd" == b) || ("dd" == a && "dt" == b) : !1; } var G = new CKEDITOR.htmlParser(), v = k instanceof CKEDITOR.htmlParser.element ? k : "string" == typeof k ? new CKEDITOR.htmlParser.element(k) : new CKEDITOR.htmlParser.fragment(), m = [], M = [], w = v, J = "textarea" == v.name, F = "pre" == v.name; G.onTagOpen = function (e, f, g, h) { f = new CKEDITOR.htmlParser.element(e, f); f.isUnknown && g && (f.isEmpty = !0); f.isOptionalClose = h; if (a(f)) m.push(f); else { if ("pre" == e) F = !0; else { if ("br" == e && F) { w.add(new CKEDITOR.htmlParser.text("\n")); return; } "textarea" == e && (J = !0); } if ("br" == e) M.push(f); else { for ( ; !((h = (g = w.name) ? CKEDITOR.dtd[g] || (w._.isBlockLike ? CKEDITOR.dtd.div : CKEDITOR.dtd.span) : c), f.isUnknown || w.isUnknown || h[e]); ) if (w.isOptionalClose) G.onTagClose(g); else if (e in b && g in b) (g = w.children), ((g = g[g.length - 1]) && "li" == g.name) || x((g = new CKEDITOR.htmlParser.element("li")), w), !f.returnPoint && (f.returnPoint = w), (w = g); else if (e in CKEDITOR.dtd.$listItem && !z(e, g)) G.onTagOpen("li" == e ? "ul" : "dl", {}, 0, 1); else if (g in d && !z(e, g)) !f.returnPoint && (f.returnPoint = w), (w = w.parent); else if ((g in CKEDITOR.dtd.$inline && m.unshift(w), w.parent)) x(w, w.parent, 1); else { f.isOrphan = 1; break; } n(e); l(); f.parent = w; f.isEmpty ? x(f) : (w = f); } } }; G.onTagClose = function (a) { for (var b = m.length - 1; 0 <= b; b--) if (a == m[b].name) { m.splice(b, 1); return; } for (var c = [], e = [], d = w; d != v && d.name != a; ) d._.isBlockLike || e.unshift(d), c.push(d), (d = d.returnPoint || d.parent); if (d != v) { for (b = 0; b < c.length; b++) { var f = c[b]; x(f, f.parent); } w = d; d._.isBlockLike ? l() : ((b = CKEDITOR.config.shiftLineBreaks), !0 !== b && M.length && ("function" !== typeof b ? l() : ((b = b(M[M.length - 1])), !0 !== b && (l(), b instanceof CKEDITOR.htmlParser.text && w.add(b), b instanceof CKEDITOR.htmlParser.element && x(b, w))))); x(d, d.parent); d == w && (w = w.parent); m = m.concat(e); } "body" == a && (h = !1); }; G.onText = function (a) { if ( !((w._.hasInlineStarted && !M.length) || F || J) && ((a = CKEDITOR.tools.ltrim(a)), 0 === a.length) ) return; var b = w.name, e = b ? CKEDITOR.dtd[b] || (w._.isBlockLike ? CKEDITOR.dtd.div : CKEDITOR.dtd.span) : c; if (!J && !e["#"] && b in d) G.onTagOpen(f[b] || ""), G.onText(a); else { l(); n(); F || J || (a = a.replace(/[\t\r\n ]{2,}|[\t\r\n]/g, " ")); a = new CKEDITOR.htmlParser.text(a); if (y(w, a)) this.onTagOpen(h, {}, 0, 1); w.add(a); } }; G.onCDATA = function (a) { w.add(new CKEDITOR.htmlParser.cdata(a)); }; G.onComment = function (a) { l(); n(); w.add(new CKEDITOR.htmlParser.comment(a)); }; G.parse(e); for (l(); w != v; ) x(w, w.parent, 1); g(v); return v; }; CKEDITOR.htmlParser.fragment.prototype = { type: CKEDITOR.NODE_DOCUMENT_FRAGMENT, add: function (a, b) { isNaN(b) && (b = this.children.length); var c = 0 < b ? this.children[b - 1] : null; if (c) { if ( a._.isBlockLike && c.type == CKEDITOR.NODE_TEXT && ((c.value = CKEDITOR.tools.rtrim(c.value)), 0 === c.value.length) ) { this.children.pop(); this.add(a); return; } c.next = a; } a.previous = c; a.parent = this; this.children.splice(b, 0, a); this._.hasInlineStarted || (this._.hasInlineStarted = a.type == CKEDITOR.NODE_TEXT || (a.type == CKEDITOR.NODE_ELEMENT && !a._.isBlockLike)); }, filter: function (a, b) { b = this.getFilterContext(b); a.onRoot(b, this); this.filterChildren(a, !1, b); }, filterChildren: function (a, b, c) { if (this.childrenFilteredBy != a.id) { c = this.getFilterContext(c); if (b && !this.parent) a.onRoot(c, this); this.childrenFilteredBy = a.id; for (b = 0; b < this.children.length; b++) !1 === this.children[b].filter(a, c) && b--; } }, writeHtml: function (a, b) { b && this.filter(b); this.writeChildrenHtml(a); }, writeChildrenHtml: function (a, b, c) { var d = this.getFilterContext(); if (c && !this.parent && b) b.onRoot(d, this); b && this.filterChildren(b, !1, d); b = 0; c = this.children; for (d = c.length; b < d; b++) c[b].writeHtml(a); }, forEach: function (a, b, c) { if (!(c || (b && this.type != b))) var d = a(this); if (!1 !== d) { c = this.children; for (var f = 0; f < c.length; f++) (d = c[f]), d.type == CKEDITOR.NODE_ELEMENT ? d.forEach(a, b) : (b && d.type != b) || a(d); } }, getFilterContext: function (a) { return a || {}; }, }; CKEDITOR.config.shiftLineBreaks = !0; })(); ("use strict"); (function () { function a() { this.rules = []; } function d(b, c, d, e) { var k, h; for (k in c) (h = b[k]) || (h = b[k] = new a()), h.add(c[k], d, e); } CKEDITOR.htmlParser.filter = CKEDITOR.tools.createClass({ $: function (b) { this.id = CKEDITOR.tools.getNextNumber(); this.elementNameRules = new a(); this.attributeNameRules = new a(); this.elementsRules = {}; this.attributesRules = {}; this.textRules = new a(); this.commentRules = new a(); this.rootRules = new a(); b && this.addRules(b, 10); }, proto: { addRules: function (a, c) { var f; "number" == typeof c ? (f = c) : c && "priority" in c && (f = c.priority); "number" != typeof f && (f = 10); "object" != typeof c && (c = {}); a.elementNames && this.elementNameRules.addMany(a.elementNames, f, c); a.attributeNames && this.attributeNameRules.addMany(a.attributeNames, f, c); a.elements && d(this.elementsRules, a.elements, f, c); a.attributes && d(this.attributesRules, a.attributes, f, c); a.text && this.textRules.add(a.text, f, c); a.comment && this.commentRules.add(a.comment, f, c); a.root && this.rootRules.add(a.root, f, c); }, applyTo: function (a) { a.filter(this); }, onElementName: function (a, c) { return this.elementNameRules.execOnName(a, c); }, onAttributeName: function (a, c) { return this.attributeNameRules.execOnName(a, c); }, onText: function (a, c, d) { return this.textRules.exec(a, c, d); }, onComment: function (a, c, d) { return this.commentRules.exec(a, c, d); }, onRoot: function (a, c) { return this.rootRules.exec(a, c); }, onElement: function (a, c) { for ( var d = [ this.elementsRules["^"], this.elementsRules[c.name], this.elementsRules.$, ], e, k = 0; 3 > k; k++ ) if ((e = d[k])) { e = e.exec(a, c, this); if (!1 === e) return null; if (e && e != c) return this.onNode(a, e); if (c.parent && !c.name) break; } return c; }, onNode: function (a, c) { var d = c.type; return d == CKEDITOR.NODE_ELEMENT ? this.onElement(a, c) : d == CKEDITOR.NODE_TEXT ? new CKEDITOR.htmlParser.text(this.onText(a, c.value, c)) : d == CKEDITOR.NODE_COMMENT ? new CKEDITOR.htmlParser.comment(this.onComment(a, c.value, c)) : null; }, onAttribute: function (a, c, d, e) { return (d = this.attributesRules[d]) ? d.exec(a, e, c, this) : e; }, }, }); CKEDITOR.htmlParser.filterRulesGroup = a; a.prototype = { add: function (a, c, d) { this.rules.splice(this.findIndex(c), 0, { value: a, priority: c, options: d, }); }, addMany: function (a, c, d) { for (var e = [this.findIndex(c), 0], k = 0, h = a.length; k < h; k++) e.push({ value: a[k], priority: c, options: d }); this.rules.splice.apply(this.rules, e); }, findIndex: function (a) { for ( var c = this.rules, d = c.length - 1; 0 <= d && a < c[d].priority; ) d--; return d + 1; }, exec: function (a, c) { var d = c instanceof CKEDITOR.htmlParser.node || c instanceof CKEDITOR.htmlParser.fragment, e = Array.prototype.slice.call(arguments, 1), k = this.rules, h = k.length, n, l, g, x; for (x = 0; x < h; x++) if ( (d && ((n = c.type), (l = c.name)), (g = k[x]), !( (a.nonEditable && !g.options.applyToAll) || (a.nestedEditable && g.options.excludeNestedEditable) )) ) { g = g.value.apply(null, e); if (!1 === g || (d && g && (g.name != l || g.type != n))) return g; null != g && (e[0] = c = g); } return c; }, execOnName: function (a, c) { for (var d = 0, e = this.rules, k = e.length, h; c && d < k; d++) (h = e[d]), (a.nonEditable && !h.options.applyToAll) || (a.nestedEditable && h.options.excludeNestedEditable) || (c = c.replace(h.value[0], h.value[1])); return c; }, }; })(); (function () { function a(a, d) { function g(a) { return a || CKEDITOR.env.needsNbspFiller ? new CKEDITOR.htmlParser.text(" ") : new CKEDITOR.htmlParser.element("br", { "data-cke-bogus": 1 }); } function t(a, d) { return function (f) { if (f.type != CKEDITOR.NODE_DOCUMENT_FRAGMENT) { var p = [], t = b(f), h, k; if (t) for (r(t, 1) && p.push(t); t; ) e(t) && (h = c(t)) && r(h) && ((k = c(h)) && !e(k) ? p.push(h) : (g(A).insertAfter(h), h.remove())), (t = t.previous); for (t = 0; t < p.length; t++) p[t].remove(); if ((p = !a || !1 !== ("function" == typeof d ? d(f) : d))) A || CKEDITOR.env.needsBrFiller || f.type != CKEDITOR.NODE_DOCUMENT_FRAGMENT ? A || CKEDITOR.env.needsBrFiller || !( 7 < document.documentMode || f.name in CKEDITOR.dtd.tr || f.name in CKEDITOR.dtd.$listItem ) ? ((p = b(f)), (p = !p || ("form" == f.name && "input" == p.name))) : (p = !1) : (p = !1); p && f.add(g(a)); } }; } function r(a, b) { if ( (!A || CKEDITOR.env.needsBrFiller) && a.type == CKEDITOR.NODE_ELEMENT && "br" == a.name && !a.attributes["data-cke-eol"] ) return !0; var c; return a.type == CKEDITOR.NODE_TEXT && (c = a.value.match(M)) && (c.index && (new CKEDITOR.htmlParser.text( a.value.substring(0, c.index) ).insertBefore(a), (a.value = c[0])), (!CKEDITOR.env.needsBrFiller && A && (!b || a.parent.name in H)) || (!A && (((c = a.previous) && "br" == c.name) || !c || e(c)))) ? !0 : !1; } var h = { elements: {} }, A = "html" == d, H = CKEDITOR.tools.extend({}, q), D; for (D in H) "#" in J[D] || delete H[D]; for (D in H) h.elements[D] = t(A, a.config.fillEmptyBlocks); h.root = t(A, !1); h.elements.br = (function (a) { return function (b) { if (b.parent.type != CKEDITOR.NODE_DOCUMENT_FRAGMENT) { var d = b.attributes; if ("data-cke-bogus" in d || "data-cke-eol" in d) delete d["data-cke-bogus"]; else { for (d = b.next; d && f(d); ) d = d.next; var p = c(b); !d && e(b.parent) ? k(b.parent, g(a)) : e(d) && p && !e(p) && g(a).insertBefore(d); } } }; })(A); return h; } function d(a, b) { return a != CKEDITOR.ENTER_BR && !1 !== b ? a == CKEDITOR.ENTER_DIV ? "div" : "p" : !1; } function b(a) { for (a = a.children[a.children.length - 1]; a && f(a); ) a = a.previous; return a; } function c(a) { for (a = a.previous; a && f(a); ) a = a.previous; return a; } function f(a) { return ( (a.type == CKEDITOR.NODE_TEXT && !CKEDITOR.tools.trim(a.value)) || (a.type == CKEDITOR.NODE_ELEMENT && a.attributes["data-cke-bookmark"]) ); } function e(a) { return ( a && ((a.type == CKEDITOR.NODE_ELEMENT && a.name in q) || a.type == CKEDITOR.NODE_DOCUMENT_FRAGMENT) ); } function k(a, b) { var c = a.children[a.children.length - 1]; a.children.push(b); b.parent = a; c && ((c.next = b), (b.previous = c)); } function h(a) { a = a.attributes; "false" != a.contenteditable && (a["data-cke-editable"] = a.contenteditable ? "true" : 1); a.contenteditable = "false"; } function n(a) { a = a.attributes; switch (a["data-cke-editable"]) { case "true": a.contenteditable = "true"; break; case "1": delete a.contenteditable; } } function l(a, b) { return a.replace(t, function (a, c, d) { return ( "\x3c" + c + d.replace(H, function (a, c) { return A.test(c) && -1 == d.indexOf("data-cke-saved-" + c) ? " data-cke-saved-" + a + " data-cke-" + b + "-" + a : a; }) + "\x3e" ); }); } function g(a, b) { return a.replace(b, function (a, b, c) { 0 === a.indexOf("\x3ctextarea") && (a = b + z(c).replace(//g, "\x26gt;") + "\x3c/textarea\x3e"); return ( "\x3ccke:encoded\x3e" + encodeURIComponent(a) + "\x3c/cke:encoded\x3e" ); }); } function x(a) { return a.replace(L, function (a, b) { return decodeURIComponent(b); }); } function y(a) { return a.replace( /\x3c!--(?!{cke_protected})[\s\S]+?--\x3e/g, function (a) { return ( "\x3c!--" + w + "{C}" + encodeURIComponent(a).replace(/--/g, "%2D%2D") + "--\x3e" ); } ); } function z(a) { return a.replace( /\x3c!--\{cke_protected\}\{C\}([\s\S]+?)--\x3e/g, function (a, b) { return decodeURIComponent(b); } ); } function G(a, b) { var c = b._.dataStore; return a .replace(/\x3c!--\{cke_protected\}([\s\S]+?)--\x3e/g, function (a, b) { return decodeURIComponent(b); }) .replace(/\{cke_protected_(\d+)\}/g, function (a, b) { return (c && c[b]) || ""; }); } function v(a, b, c) { var d = [], e = b.config.protectedSource, f = b._.dataStore || (b._.dataStore = { id: 1 }), g = new RegExp( "\x3c\\!--\\{cke_temp_" + c + "(comment)?\\}(\\d*?)--\x3e", "g" ), e = [ /|$)/gi, //gi, //gi, ].concat(e); a = a.replace(/\x3c!--[\s\S]*?--\x3e/g, function (a) { return ( "\x3c!--{cke_temp_" + c + "comment}" + (d.push(a) - 1) + "--\x3e" ); }); for (var t = 0; t < e.length; t++) a = a.replace(e[t], function (a) { a = a.replace(g, function (a, b, c) { return d[c]; }); return g.test(a) ? a : "\x3c!--{cke_temp_" + c + "}" + (d.push(a) - 1) + "--\x3e"; }); a = a.replace(g, function (a, b, c) { return ( "\x3c!--" + w + (b ? "{C}" : "") + encodeURIComponent(d[c]).replace(/--/g, "%2D%2D") + "--\x3e" ); }); a = a.replace( /<\w+(?:\s+(?:(?:[^\s=>]+\s*=\s*(?:[^'"\s>]+|'[^']*'|"[^"]*"))|[^\s=\/>]+))+\s*\/?>/g, function (a) { return a.replace( /\x3c!--\{cke_protected\}([^>]*)--\x3e/g, function (a, b) { f[f.id] = decodeURIComponent(b); return "{cke_protected_" + f.id++ + "}"; } ); } ); return (a = a.replace( /<(title|iframe|textarea)([^>]*)>([\s\S]*?)<\/\1>/g, function (a, c, d, e) { return "\x3c" + c + d + "\x3e" + G(z(e), b) + "\x3c/" + c + "\x3e"; } )); } var m; CKEDITOR.htmlDataProcessor = function (b) { var c, e, f = this; this.editor = b; this.dataFilter = c = new CKEDITOR.htmlParser.filter(); this.htmlFilter = e = new CKEDITOR.htmlParser.filter(); this.writer = new CKEDITOR.htmlParser.basicWriter(); c.addRules(u); c.addRules(K, { applyToAll: !0 }); c.addRules(a(b, "data"), { applyToAll: !0 }); e.addRules(D); e.addRules(B, { applyToAll: !0 }); e.addRules(a(b, "html"), { applyToAll: !0 }); b.on( "toHtml", function (a) { var c; var e = window.crypto || window.msCrypto; c = e ? e.getRandomValues(new Uint32Array(1))[0] : Math.floor(9e9 * Math.random() + 1e9); a = a.data; var e = a.dataValue, e = m(e), e = v(e, b, c), e = g(e, N), e = l(e, c), e = g(e, I), e = e.replace(r, "$1cke:$2"), e = e.replace(S, "\x3ccke:$1$2\x3e\x3c/cke:$1\x3e"), e = e.replace(/(]*>)(\r\n|\n)/g, "$1$2$2"), e = e.replace( /([^a-z0-9<\-])(on\w{3,})(?!>)/gi, "$1data-cke-" + c + "-$2" ), f = a.context || b.editable().getName(), t; CKEDITOR.env.ie && 9 > CKEDITOR.env.version && "pre" == f && ((f = "div"), (e = "\x3cpre\x3e" + e + "\x3c/pre\x3e"), (t = 1)); f = b.document.createElement(f); f.setHtml("a" + e); e = f.getHtml().substr(1); e = e.replace(new RegExp("data-cke-" + c + "-", "ig"), ""); t && (e = e.replace(/^
|<\/pre>$/gi, ""));
          e = e.replace(E, "$1$2");
          e = x(e);
          e = z(e);
          c = !1 === a.fixForBody ? !1 : d(a.enterMode, b.config.autoParagraph);
          e = CKEDITOR.htmlParser.fragment.fromHtml(e, a.context, c);
          c &&
            ((t = e),
            !t.children.length &&
              CKEDITOR.dtd[t.name][c] &&
              ((c = new CKEDITOR.htmlParser.element(c)), t.add(c)));
          a.dataValue = e;
        },
        null,
        null,
        5
      );
      b.on(
        "toHtml",
        function (a) {
          a.data.filter.applyTo(
            a.data.dataValue,
            !0,
            a.data.dontFilter,
            a.data.enterMode
          ) && b.fire("dataFiltered");
        },
        null,
        null,
        6
      );
      b.on(
        "toHtml",
        function (a) {
          a.data.dataValue.filterChildren(f.dataFilter, !0);
        },
        null,
        null,
        10
      );
      b.on(
        "toHtml",
        function (a) {
          a = a.data;
          var b = a.dataValue,
            c = new CKEDITOR.htmlParser.basicWriter();
          b.writeChildrenHtml(c);
          b = c.getHtml(!0);
          a.dataValue = y(b);
        },
        null,
        null,
        15
      );
      b.on(
        "toDataFormat",
        function (a) {
          var c = a.data.dataValue;
          a.data.enterMode != CKEDITOR.ENTER_BR &&
            (c = c.replace(/^
/i, "")); a.data.dataValue = CKEDITOR.htmlParser.fragment.fromHtml( c, a.data.context, d(a.data.enterMode, b.config.autoParagraph) ); }, null, null, 5 ); b.on( "toDataFormat", function (a) { a.data.dataValue.filterChildren(f.htmlFilter, !0); }, null, null, 10 ); b.on( "toDataFormat", function (a) { a.data.filter.applyTo(a.data.dataValue, !1, !0); }, null, null, 11 ); b.on( "toDataFormat", function (a) { var c = a.data.dataValue, e = f.writer; e.reset(); c.writeChildrenHtml(e); c = e.getHtml(!0); c = z(c); c = G(c, b); a.data.dataValue = c; }, null, null, 15 ); }; CKEDITOR.htmlDataProcessor.prototype = { toHtml: function (a, b, c, e) { var d = this.editor, f, g, t, r; b && "object" == typeof b ? ((f = b.context), (c = b.fixForBody), (e = b.dontFilter), (g = b.filter), (t = b.enterMode), (r = b.protectedWhitespaces)) : (f = b); f || null === f || (f = d.editable().getName()); return d.fire("toHtml", { dataValue: a, context: f, fixForBody: c, dontFilter: e, filter: g || d.filter, enterMode: t || d.enterMode, protectedWhitespaces: r, }).dataValue; }, toDataFormat: function (a, b) { var c, e, d; b && ((c = b.context), (e = b.filter), (d = b.enterMode)); c || null === c || (c = this.editor.editable().getName()); return this.editor.fire("toDataFormat", { dataValue: a, filter: e || this.editor.filter, context: c, enterMode: d || this.editor.enterMode, }).dataValue; }, protectSource: function (a) { return v(a, this.editor); }, unprotectSource: function (a) { return G(a, this.editor); }, unprotectRealComments: function (a) { return z(a); }, }; var M = /(?: |\xa0)$/, w = "{cke_protected}", J = CKEDITOR.dtd, F = "caption colgroup col thead tfoot tbody".split(" "), q = CKEDITOR.tools.extend({}, J.$blockLimit, J.$block), u = { elements: { input: h, textarea: h } }, K = { attributeNames: [ [/^on/, "data-cke-pa-on"], [/^srcdoc/, "data-cke-pa-srcdoc"], [/^data-cke-expando$/, ""], ], elements: { iframe: function (a) { if (a.attributes && a.attributes.src) { var b = a.attributes.src.toLowerCase().replace(/[^a-z]/gi, ""); if (0 === b.indexOf("javascript") || 0 === b.indexOf("data")) (a.attributes["data-cke-pa-src"] = a.attributes.src), delete a.attributes.src; } }, }, }, D = { elements: { embed: function (a) { var b = a.parent; if (b && "object" == b.name) { var c = b.attributes.width, b = b.attributes.height; c && (a.attributes.width = c); b && (a.attributes.height = b); } }, a: function (a) { var b = a.attributes; if ( !( a.children.length || b.name || b.id || a.attributes["data-cke-saved-name"] ) ) return !1; }, }, }, B = { elementNames: [ [/^cke:/, ""], [/^\?xml:namespace$/, ""], ], attributeNames: [ [/^data-cke-(saved|pa)-/, ""], [/^data-cke-.*/, ""], ["hidefocus", ""], ], elements: { $: function (a) { var b = a.attributes; if (b) { if (b["data-cke-temp"]) return !1; for (var c = ["name", "href", "src"], e, d = 0; d < c.length; d++) (e = "data-cke-saved-" + c[d]), e in b && delete b[c[d]]; } return a; }, table: function (a) { a.children.slice(0).sort(function (a, b) { var c, e; a.type == CKEDITOR.NODE_ELEMENT && b.type == a.type && ((c = CKEDITOR.tools.indexOf(F, a.name)), (e = CKEDITOR.tools.indexOf(F, b.name))); (-1 < c && -1 < e && c != e) || ((c = a.parent ? a.getIndex() : -1), (e = b.parent ? b.getIndex() : -1)); return c > e ? 1 : -1; }); }, param: function (a) { a.children = []; a.isEmpty = !0; return a; }, span: function (a) { "Apple-style-span" == a.attributes["class"] && delete a.name; }, html: function (a) { delete a.attributes.contenteditable; delete a.attributes["class"]; }, body: function (a) { delete a.attributes.spellcheck; delete a.attributes.contenteditable; }, style: function (a) { var b = a.children[0]; b && b.value && (b.value = CKEDITOR.tools.trim(b.value)); a.attributes.type || (a.attributes.type = "text/css"); }, title: function (a) { var b = a.children[0]; !b && k(a, (b = new CKEDITOR.htmlParser.text())); b.value = a.attributes["data-cke-title"] || ""; }, input: n, textarea: n, }, attributes: { class: function (a) { return ( CKEDITOR.tools.ltrim(a.replace(/(?:^|\s+)cke_[^\s]*/g, "")) || !1 ); }, }, }; CKEDITOR.env.ie && (B.attributes.style = function (a) { return a.replace(/(^|;)([^\:]+)/g, function (a) { return a.toLowerCase(); }); }); var t = /<(a|area|img|input|source)\b([^>]*)>/gi, H = /([\w-:]+)\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|(?:[^ "'>]+))/gi, A = /^(href|src|name)$/i, I = /(?:])[^>]*>[\s\S]*?<\/style>)|(?:<(:?link|meta|base)[^>]*>)/gi, N = /(])[^>]*>)([\s\S]*?)(?:<\/textarea>)/gi, L = /([^<]*)<\/cke:encoded>/gi, r = /(<\/?)((?:object|embed|param|html|body|head|title)([\s][^>]*)?>)/gi, E = /(<\/?)cke:((?:html|body|head|title)[^>]*>)/gi, S = /]*?)\/?>(?!\s*<\/cke:\1)/gi; m = (function () { function a(b, c) { for (var e = 0; e < b.length; e++) { var d = b[e]; d.lastIndex = 0; if (d.test(c)) return !0; } return !1; } function b(a) { return CKEDITOR.tools.array.reduce( a.split(""), function (a, b) { var e = b.toLowerCase(), d = b.toUpperCase(), f = c(e); e !== d && (f += "|" + c(d)); return a + ("(" + f + ")"); }, "" ); } function c(a) { var b; b = a.charCodeAt(0); var e = b.toString(16); b = { htmlCode: "\x26#" + b + ";?", hex: "\x26#x0*" + e + ";?", entity: { "\x3c": "\x26lt;", "\x3e": "\x26gt;", ":": "\x26colon;" }[ a ], }; for (var d in b) b[d] && (a += "|" + b[d]); return a; } var e = [ new RegExp( "(" + b("\x3ccke:encoded\x3e") + "(.*?)" + b("\x3c/cke:encoded\x3e") + ")|(" + b("\x3c") + b("/") + "?" + b("cke:encoded\x3e") + ")", "gi" ), new RegExp( "((" + b("{cke_protected") + ")(_[0-9]*)?" + b("}") + ")", "gi" ), //g, ]; return function (b) { for (; a(e, b); ) for (var c = e, d = 0; d < c.length; d++) b = b.replace(c[d], ""); return b; }; })(); })(); ("use strict"); CKEDITOR.htmlParser.element = function (a, d) { this.name = a; this.attributes = d || {}; this.children = []; var b = a || "", c = b.match(/^cke:(.*)/); c && (b = c[1]); b = !!( CKEDITOR.dtd.$nonBodyContent[b] || CKEDITOR.dtd.$block[b] || CKEDITOR.dtd.$listItem[b] || CKEDITOR.dtd.$tableContent[b] || CKEDITOR.dtd.$nonEditable[b] || "br" == b ); this.isEmpty = !!CKEDITOR.dtd.$empty[a]; this.isUnknown = !CKEDITOR.dtd[a]; this._ = { isBlockLike: b, hasInlineStarted: this.isEmpty || !b }; }; CKEDITOR.htmlParser.cssStyle = function (a) { var d = {}; ((a instanceof CKEDITOR.htmlParser.element ? a.attributes.style : a) || "") .replace(/"/g, '"') .replace(/\s*([^ :;]+)\s*:\s*([^;]+)\s*(?=;|$)/g, function (a, c, f) { "font-family" == c && (f = f.replace(/["']/g, "")); d[c.toLowerCase()] = f; }); return { rules: d, populate: function (a) { var c = this.toString(); c && (a instanceof CKEDITOR.dom.element ? a.setAttribute("style", c) : a instanceof CKEDITOR.htmlParser.element ? (a.attributes.style = c) : (a.style = c)); }, toString: function () { var a = [], c; for (c in d) d[c] && a.push(c, ":", d[c], ";"); return a.join(""); }, }; }; (function () { function a(a) { return function (b) { return ( b.type == CKEDITOR.NODE_ELEMENT && ("string" == typeof a ? b.name == a : b.name in a) ); }; } var d = function (a, b) { a = a[0]; b = b[0]; return a < b ? -1 : a > b ? 1 : 0; }, b = CKEDITOR.htmlParser.fragment.prototype; CKEDITOR.htmlParser.element.prototype = CKEDITOR.tools.extend( new CKEDITOR.htmlParser.node(), { type: CKEDITOR.NODE_ELEMENT, add: b.add, clone: function () { return new CKEDITOR.htmlParser.element(this.name, this.attributes); }, filter: function (a, b) { var e = this, d, h; b = e.getFilterContext(b); if (!e.parent) a.onRoot(b, e); for (;;) { d = e.name; if (!(h = a.onElementName(b, d))) return this.remove(), !1; e.name = h; if (!(e = a.onElement(b, e))) return this.remove(), !1; if (e !== this) return this.replaceWith(e), !1; if (e.name == d) break; if (e.type != CKEDITOR.NODE_ELEMENT) return this.replaceWith(e), !1; if (!e.name) return this.replaceWithChildren(), !1; } d = e.attributes; var n, l; for (n in d) { for (h = d[n]; ; ) if ((l = a.onAttributeName(b, n))) if (l != n) delete d[n], (n = l); else break; else { delete d[n]; break; } l && (!1 === (h = a.onAttribute(b, e, l, h)) ? delete d[l] : (d[l] = h)); } e.isEmpty || this.filterChildren(a, !1, b); return !0; }, filterChildren: b.filterChildren, writeHtml: function (a, b) { b && this.filter(b); var e = this.name, k = [], h = this.attributes, n, l; a.openTag(e, h); for (n in h) k.push([n, h[n]]); a.sortAttributes && k.sort(d); n = 0; for (l = k.length; n < l; n++) (h = k[n]), a.attribute(h[0], h[1]); a.openTagClose(e, this.isEmpty); this.writeChildrenHtml(a); this.isEmpty || a.closeTag(e); }, writeChildrenHtml: b.writeChildrenHtml, replaceWithChildren: function () { for (var a = this.children, b = a.length; b; ) a[--b].insertAfter(this); this.remove(); }, forEach: b.forEach, getFirst: function (b) { if (!b) return this.children.length ? this.children[0] : null; "function" != typeof b && (b = a(b)); for (var d = 0, e = this.children.length; d < e; ++d) if (b(this.children[d])) return this.children[d]; return null; }, getHtml: function () { var a = new CKEDITOR.htmlParser.basicWriter(); this.writeChildrenHtml(a); return a.getHtml(); }, setHtml: function (a) { a = this.children = CKEDITOR.htmlParser.fragment.fromHtml(a).children; for (var b = 0, e = a.length; b < e; ++b) a[b].parent = this; }, getOuterHtml: function () { var a = new CKEDITOR.htmlParser.basicWriter(); this.writeHtml(a); return a.getHtml(); }, split: function (a) { for ( var b = this.children.splice(a, this.children.length - a), e = this.clone(), d = 0; d < b.length; ++d ) b[d].parent = e; e.children = b; b[0] && (b[0].previous = null); 0 < a && (this.children[a - 1].next = null); this.parent.add(e, this.getIndex() + 1); return e; }, find: function (a, b) { void 0 === b && (b = !1); var e = [], d; for (d = 0; d < this.children.length; d++) { var h = this.children[d]; "function" == typeof a && a(h) ? e.push(h) : "string" == typeof a && h.name === a && e.push(h); b && h.find && (e = e.concat(h.find(a, b))); } return e; }, findOne: function (a, b) { var e = null, d = CKEDITOR.tools.array.find(this.children, function (d) { var k = "function" === typeof a ? a(d) : d.name === a; if (k || !b) return k; d.children && d.findOne && (e = d.findOne(a, !0)); return !!e; }); return e || d || null; }, addClass: function (a) { if (!this.hasClass(a)) { var b = this.attributes["class"] || ""; this.attributes["class"] = b + (b ? " " : "") + a; } }, removeClass: function (a) { var b = this.attributes["class"]; b && ((b = CKEDITOR.tools.trim( b.replace(new RegExp("(?:\\s+|^)" + a + "(?:\\s+|$)"), " ") )) ? (this.attributes["class"] = b) : delete this.attributes["class"]); }, hasClass: function (a) { var b = this.attributes["class"]; return b ? new RegExp("(?:^|\\s)" + a + "(?\x3d\\s|$)").test(b) : !1; }, getFilterContext: function (a) { var b = []; a || (a = { nonEditable: !1, nestedEditable: !1 }); a.nonEditable || "false" != this.attributes.contenteditable ? a.nonEditable && !a.nestedEditable && "true" == this.attributes.contenteditable && b.push("nestedEditable", !0) : b.push("nonEditable", !0); if (b.length) { a = CKEDITOR.tools.copy(a); for (var d = 0; d < b.length; d += 2) a[b[d]] = b[d + 1]; } return a; }, }, !0 ); })(); (function () { var a = /{([^}]+)}/g; CKEDITOR.template = function (a) { this.source = "function" === typeof a ? a : String(a); }; CKEDITOR.template.prototype.output = function (d, b) { var c = ( "function" === typeof this.source ? this.source(d) : this.source ).replace(a, function (a, b) { return void 0 !== d[b] ? d[b] : a; }); return b ? b.push(c) : c; }; })(); (function () { function a(a) { if (e.secure && e.latest) return a(); try { var b = new XMLHttpRequest(), c = "https://cke4.ckeditor.com/ckeditor4-secure-version/versions.json?v\x3d" + encodeURIComponent(e.current.original); b.onreadystatechange = function () { if (4 === b.readyState && 200 === b.status) { var c = JSON.parse(b.responseText); e.latest = d(c.latestVersion); e.secure = d(c.secureVersion); e.isLatest = e.current.minor === e.latest.minor && e.current.patch === e.latest.patch; e.isSecure = e.current.minor > e.secure.minor || (e.current.minor === e.secure.minor && e.current.patch >= e.secure.patch) ? !0 : !1; a(); } }; b.open("GET", c); b.responseType = "text"; b.send(); } catch (f) {} } function d(a) { var c = a.match(b); return c ? { original: a, major: 4, minor: Number(c[1]), patch: Number(c[2]), isLts: !!c[3], } : null; } var b = /^4\.(\d+)\.(\d+)(-lts)?(?: \(?.+?\)?)?$/, c = "Drupal" in window, f = !1, e = { current: d(CKEDITOR.version) }; !c && e.current && ((CKEDITOR.config.versionCheck = e.current.isLts ? !1 : !0), CKEDITOR.on("instanceReady", function (b) { var c = b.editor; c.config.versionCheck && (c.on("dialogShow", function (b) { var d = b.data; "about" === d._.name && a(function () { var a = d.getElement().findOne(".cke_about_version-check"), b; b = c.lang.versionCheck; var f = ""; e.isLatest || (f = b.aboutDialogUpgradeMessage); e.isSecure || (f = b.aboutDialogInsecureMessage); b = f .replace("%current", e.current.original) .replace("%latest", e.latest.original) .replace( /%link/g, "https://ckeditor.com/ckeditor-4-support/" ); a.setHtml(""); c.config.versionCheck && (a.setStyle("color", e.isSecure ? "" : "#C83939"), a.setHtml(b)); }); }), a(function () { if (!e.isSecure) { var a = c.lang.versionCheck.notificationMessage .replace("%current", e.current.original) .replace("%latest", e.latest.original) .replace( /%link/g, "https://ckeditor.com/ckeditor-4-support/" ), b = "notification" in c.plugins; if (window.console && window.console.error && !f) { f = !0; var d = c.lang.versionCheck.consoleMessage .replace("%current", e.current.original) .replace("%latest", e.latest.original) .replace( /%link/g, "https://ckeditor.com/ckeditor-4-support/" ); //console.error(d); // TODO: GER } b //&& c.showNotification(a, "warning"); // TODO: GER } })); })); })(); delete CKEDITOR.loadFullCore; CKEDITOR.instances = {}; CKEDITOR.document = new CKEDITOR.dom.document(document); CKEDITOR.add = function (a) { function d() { CKEDITOR.currentInstance == a && ((CKEDITOR.currentInstance = null), CKEDITOR.fire("currentInstance")); } CKEDITOR.instances[a.name] = a; a.on("focus", function () { CKEDITOR.currentInstance != a && ((CKEDITOR.currentInstance = a), CKEDITOR.fire("currentInstance")); }); a.on("blur", d); a.on("destroy", d); CKEDITOR.fire("instance", null, a); }; CKEDITOR.remove = function (a) { delete CKEDITOR.instances[a.name]; }; (function () { var a = {}; CKEDITOR.addTemplate = function (d, b) { var c = a[d]; if (c) return c; c = { name: d, source: b }; CKEDITOR.fire("template", c); return (a[d] = new CKEDITOR.template(c.source)); }; CKEDITOR.getTemplate = function (d) { return a[d]; }; })(); (function () { var a = []; CKEDITOR.addCss = function (d) { a.push(d); }; CKEDITOR.getCss = function () { return a.join("\n"); }; })(); CKEDITOR.on("instanceDestroyed", function () { CKEDITOR.tools.isEmpty(this.instances) && CKEDITOR.fire("reset"); }); CKEDITOR.TRISTATE_ON = 1; CKEDITOR.TRISTATE_OFF = 2; CKEDITOR.TRISTATE_DISABLED = 0; (function () { CKEDITOR.inline = function (a, d) { a = CKEDITOR.editor._getEditorElement(a); if (!a) return null; if (CKEDITOR.editor.shouldDelayEditorCreation(a, d)) return CKEDITOR.editor.initializeDelayedEditorCreation(a, d, "inline"); var b = a.is("textarea") ? a : null, c = b ? b.getValue() : a.getHtml(), f = new CKEDITOR.editor(d, a, CKEDITOR.ELEMENT_MODE_INLINE); b ? (f.setData(c, null, !0), (a = CKEDITOR.dom.element.createFromHtml( '\x3cdiv contenteditable\x3d"' + !!f.readOnly + '" class\x3d"cke_textarea_inline"\x3e' + b.getValue() + "\x3c/div\x3e", CKEDITOR.document )), a.insertAfter(b), b.hide(), b.$.form && f._attachToForm()) : (d && "undefined" !== typeof d.readOnly && !d.readOnly && a.setAttribute("contenteditable", "true"), f.setData(c, null, !0)); f.on( "loaded", function () { f.fire("uiReady"); f.editable(a); f.container = a; f.ui.contentsElement = a; f.setData(f.getData(1)); f.resetDirty(); f.fire("contentDom"); f.mode = "wysiwyg"; f.fire("mode"); f.status = "ready"; f.fireOnce("instanceReady"); CKEDITOR.fire("instanceReady", null, f); }, null, null, 1e4 ); f.on("destroy", function () { var a = f.container; b && a && (a.clearCustomData(), a.remove()); b && b.show(); f.element.clearCustomData(); delete f.element; }); return f; }; CKEDITOR.inlineAll = function () { var a, d, b; for (b in CKEDITOR.dtd.$editable) for ( var c = CKEDITOR.document.getElementsByTag(b), f = 0, e = c.count(); f < e; f++ ) (a = c.getItem(f)), "true" != a.getAttribute("contenteditable") || a.getEditor() || ((d = { element: a, config: {} }), !1 !== CKEDITOR.fire("inline", d) && CKEDITOR.inline(a, d.config)); }; CKEDITOR.domReady(function () { !CKEDITOR.disableAutoInline && CKEDITOR.inlineAll(); }); })(); CKEDITOR.replaceClass = "ckeditor"; (function () { function a(a, f, e, k) { a = CKEDITOR.editor._getEditorElement(a); if (!a) return null; if (CKEDITOR.editor.shouldDelayEditorCreation(a, f)) return CKEDITOR.editor.initializeDelayedEditorCreation(a, f, "replace"); var h = new CKEDITOR.editor(f, a, k); k == CKEDITOR.ELEMENT_MODE_REPLACE && (a.setStyle("visibility", "hidden"), (h._.required = a.hasAttribute("required")), a.removeAttribute("required")); e && h.setData(e, null, !0); h.on("loaded", function () { h.isDestroyed() || h.isDetached() || (b(h), k == CKEDITOR.ELEMENT_MODE_REPLACE && h.config.autoUpdateElement && a.$.form && h._attachToForm(), h.setMode(h.config.startupMode, function () { h.resetDirty(); h.status = "ready"; h.fireOnce("instanceReady"); CKEDITOR.fire("instanceReady", null, h); })); }); h.on("destroy", d); return h; } function d() { var a = this.container, b = this.element; a && (a.clearCustomData(), a.remove()); b && (b.clearCustomData(), this.elementMode == CKEDITOR.ELEMENT_MODE_REPLACE && (b.show(), this._.required && b.setAttribute("required", "required")), delete this.element); } function b(a) { var b = a.name, d = a.element, k = a.elementMode, h = a.fire("uiSpace", { space: "top", html: "" }).html, n = a.fire("uiSpace", { space: "bottom", html: "" }).html, l = new CKEDITOR.template( '\x3c{outerEl} id\x3d"cke_{name}" class\x3d"{id} cke cke_reset cke_chrome cke_editor_{name} cke_{langDir} ' + CKEDITOR.env.cssClass + '" dir\x3d"{langDir}" lang\x3d"{langCode}" role\x3d"application"' + (a.applicationTitle ? ' aria-labelledby\x3d"cke_{name}_arialbl"' : "") + "\x3e" + (a.applicationTitle ? '\x3cspan id\x3d"cke_{name}_arialbl" class\x3d"cke_voice_label"\x3e{voiceLabel}\x3c/span\x3e' : "") + '\x3c{outerEl} class\x3d"cke_inner cke_reset" role\x3d"presentation"\x3e{topHtml}\x3c{outerEl} id\x3d"{contentId}" class\x3d"cke_contents cke_reset" role\x3d"presentation"\x3e\x3c/{outerEl}\x3e{bottomHtml}\x3c/{outerEl}\x3e\x3c/{outerEl}\x3e' ), b = CKEDITOR.dom.element.createFromHtml( l.output({ id: a.id, name: b, langDir: a.lang.dir, langCode: a.langCode, voiceLabel: a.applicationTitle, topHtml: h ? '\x3cspan id\x3d"' + a.ui.spaceId("top") + '" class\x3d"cke_top cke_reset_all" role\x3d"presentation" style\x3d"height:auto"\x3e' + h + "\x3c/span\x3e" : "", contentId: a.ui.spaceId("contents"), bottomHtml: n ? '\x3cspan id\x3d"' + a.ui.spaceId("bottom") + '" class\x3d"cke_bottom cke_reset_all" role\x3d"presentation"\x3e' + n + "\x3c/span\x3e" : "", outerEl: CKEDITOR.env.ie ? "span" : "div", }) ); k == CKEDITOR.ELEMENT_MODE_REPLACE ? (d.hide(), b.insertAfter(d)) : d.append(b); a.container = b; a.ui.contentsElement = a.ui.space("contents"); h && a.ui.space("top").unselectable(); n && a.ui.space("bottom").unselectable(); d = a.config.width; k = a.config.height; d && b.setStyle("width", CKEDITOR.tools.cssLength(d)); k && a.ui.space("contents").setStyle("height", CKEDITOR.tools.cssLength(k)); b.disableContextMenu(); CKEDITOR.env.webkit && b.on("focus", function () { a.focus(); }); a.fireOnce("uiReady"); } CKEDITOR.replace = function (b, d) { return a(b, d, null, CKEDITOR.ELEMENT_MODE_REPLACE); }; CKEDITOR.appendTo = function (b, d, e) { return a(b, d, e, CKEDITOR.ELEMENT_MODE_APPENDTO); }; CKEDITOR.replaceAll = function () { for ( var a = document.getElementsByTagName("textarea"), b = 0; b < a.length; b++ ) { var d = null, k = a[b]; if (k.name || k.id) { if ("string" == typeof arguments[0]) { if ( !new RegExp("(?:^|\\s)" + arguments[0] + "(?:$|\\s)").test( k.className ) ) continue; } else if ( "function" == typeof arguments[0] && ((d = {}), !1 === arguments[0](k, d)) ) continue; this.replace(k, d); } } }; CKEDITOR.editor.prototype.addMode = function (a, b) { (this._.modes || (this._.modes = {}))[a] = b; }; CKEDITOR.editor.prototype.setMode = function (a, b) { var d = this, k = this._.modes; if (a != d.mode && k && k[a]) { d.fire("beforeSetMode", a); if (d.mode) { var h = d.checkDirty(), k = d._.previousModeData, n, l = 0; d.fire("beforeModeUnload"); d.editable(0); d._.previousMode = d.mode; d._.previousModeData = n = d.getData(1); "source" == d.mode && k == n && (d.fire("lockSnapshot", { forceUpdate: !0 }), (l = 1)); d.ui.space("contents").setHtml(""); d.mode = ""; } else d._.previousModeData = d.getData(1); this._.modes[a](function () { d.mode = a; void 0 !== h && !h && d.resetDirty(); l ? d.fire("unlockSnapshot") : "wysiwyg" == a && d.fire("saveSnapshot"); setTimeout(function () { d.isDestroyed() || d.isDetached() || (d.fire("mode"), b && b.call(d)); }, 0); }); } }; CKEDITOR.editor.prototype.resize = function (a, b, d, k) { var h = this.container, n = this.ui.space("contents"), l = CKEDITOR.env.webkit && this.document && this.document.getWindow().$.frameElement; k = k ? this.container.getFirst(function (a) { return a.type == CKEDITOR.NODE_ELEMENT && a.hasClass("cke_inner"); }) : h; if (a || 0 === a) a = CKEDITOR.tools.convertToPx(CKEDITOR.tools.cssLength(a)); k.setSize("width", a, !0); l && (l.style.width = "1%"); b = CKEDITOR.tools.convertToPx(CKEDITOR.tools.cssLength(b)); var g = (k.$.offsetHeight || 0) - (n.$.clientHeight || 0), h = Math.max(b - (d ? 0 : g), 0); b = d ? b + g : b; n.setStyle("height", CKEDITOR.tools.cssLength(h)); l && (l.style.width = "100%"); this.fire("resize", { outerHeight: b, contentsHeight: h, outerWidth: a || k.getSize("width"), }); }; CKEDITOR.editor.prototype.getResizable = function (a) { return a ? this.ui.space("contents") : this.container; }; CKEDITOR.domReady(function () { CKEDITOR.replaceClass && CKEDITOR.replaceAll(CKEDITOR.replaceClass); }); })(); CKEDITOR.config.startupMode = "wysiwyg"; (function () { function a(a) { var b = a.editor, e = a.data.path, g = e.blockLimit, f = a.data.selection, h = f.getRanges()[0], k; if (CKEDITOR.env.gecko || (CKEDITOR.env.ie && CKEDITOR.env.needsBrFiller)) if ((f = d(f, e))) f.appendBogus(), (k = (CKEDITOR.env.ie && !CKEDITOR.env.edge) || (CKEDITOR.env.edge && b._.previousActive)); n(b, e.block, g) && h.collapsed && !h.getCommonAncestor().isReadOnly() && ((e = h.clone()), e.enlarge(CKEDITOR.ENLARGE_BLOCK_CONTENTS), (g = new CKEDITOR.dom.walker(e)), (g.guard = function (a) { return !c(a) || a.type == CKEDITOR.NODE_COMMENT || a.isReadOnly(); }), !g.checkForward() || (e.checkStartOfBlock() && e.checkEndOfBlock())) && ((b = h.fixBlock( !0, b.activeEnterMode == CKEDITOR.ENTER_DIV ? "div" : "p" )), CKEDITOR.env.needsBrFiller || ((b = b.getFirst(c)) && b.type == CKEDITOR.NODE_TEXT && CKEDITOR.tools.trim(b.getText()).match(/^(?: |\xa0)$/) && b.remove()), (k = 1), a.cancel()); k && h.select(); } function d(a, b) { if (a.isFake) return 0; var d = b.block || b.blockLimit, e = d && d.getLast(c); if ( !( !d || !d.isBlockBoundary() || (e && e.type == CKEDITOR.NODE_ELEMENT && e.isBlockBoundary()) || d.is("pre") || d.getBogus() ) ) return d; } function b(a) { var b = a.data.getTarget(); b.is("input") && ((b = b.getAttribute("type")), ("submit" != b && "reset" != b) || a.data.preventDefault()); } function c(a) { return z(a) && G(a); } function f(a, b) { return function (c) { var d = c.data.$.toElement || c.data.$.fromElement || c.data.$.relatedTarget; ((d = d && d.nodeType == CKEDITOR.NODE_ELEMENT ? new CKEDITOR.dom.element(d) : null) && (b.equals(d) || b.contains(d))) || a.call(this, c); }; } function e(a) { return !!a .getRanges()[0] .startPath() .contains({ table: 1, ul: 1, ol: 1, dl: 1 }); } function k(a) { function b(a) { var e = { table: 1, ul: 1, ol: 1, dl: 1 }; return function (b, g) { g && b.type == CKEDITOR.NODE_ELEMENT && b.is(e) && (d = b); if (!(g || !c(b) || (a && m(b)))) return !1; }; } var d, g = a.getRanges()[0], f = a.root; return e(a) && ((a = g.clone()), a.collapse(1), a.setStartAt(f, CKEDITOR.POSITION_AFTER_START), (f = new CKEDITOR.dom.walker(a)), (f.guard = b()), f.checkBackward(), d) ? ((a = g.clone()), a.collapse(), a.setEndAt(d, CKEDITOR.POSITION_AFTER_END), (f = new CKEDITOR.dom.walker(a)), (f.guard = b(!0)), (d = !1), f.checkForward(), d) : null; } function h(a) { return a.block.getParent().getChildCount(); } function n(a, b, c) { return ( !1 !== a.config.autoParagraph && a.activeEnterMode != CKEDITOR.ENTER_BR && ((a.editable().equals(c) && !b) || (b && "true" == b.getAttribute("contenteditable"))) ); } function l(a) { return a.activeEnterMode != CKEDITOR.ENTER_BR && !1 !== a.config.autoParagraph ? a.activeEnterMode == CKEDITOR.ENTER_DIV ? "div" : "p" : !1; } function g(a) { a && a.isEmptyInlineRemoveable() && a.remove(); } function x(a) { var b = a.editor; b.getSelection().scrollIntoView(); setTimeout(function () { b.fire("saveSnapshot"); }, 0); } function y(a, b, c) { var d = a.getCommonAncestor(b); for ( b = a = c ? b : a; (a = a.getParent()) && !d.equals(a) && 1 == a.getChildCount(); ) b = a; b.remove(); } var z, G, v, m, M, w, J, F, q, u, K = { ul: 1, ol: 1, dl: 1 }; CKEDITOR.editable = CKEDITOR.tools.createClass({ base: CKEDITOR.dom.element, $: function (a, b) { this.base(b.$ || b); this.editor = a; this.status = "unloaded"; this.hasFocus = !1; this.setup(); }, proto: { focus: function () { var a; if ( CKEDITOR.env.webkit && !this.hasFocus && ((a = this.editor._.previousActive || this.getDocument().getActive()), this.contains(a)) ) { a.focus(); return; } CKEDITOR.env.edge && 14 < CKEDITOR.env.version && !this.hasFocus && this.getDocument().equals(CKEDITOR.document) && (this.editor._.previousScrollTop = this.$.scrollTop); try { if ( !CKEDITOR.env.ie || (CKEDITOR.env.edge && 14 < CKEDITOR.env.version) || !this.getDocument().equals(CKEDITOR.document) ) if (CKEDITOR.env.chrome) { var b = this.$.scrollTop; this.$.focus(); this.$.scrollTop = b; } else this.$.focus(); else this.$.setActive(); } catch (c) { if (!CKEDITOR.env.ie) throw c; } CKEDITOR.env.safari && !this.isInline() && ((a = CKEDITOR.document.getActive()), a.equals(this.getWindow().getFrame()) || this.getWindow().focus()); }, on: function (a, b) { var c = Array.prototype.slice.call(arguments, 0); CKEDITOR.env.ie && /^focus|blur$/.exec(a) && ((a = "focus" == a ? "focusin" : "focusout"), (b = f(b, this)), (c[0] = a), (c[1] = b)); return CKEDITOR.dom.element.prototype.on.apply(this, c); }, attachListener: function (a) { !this._.listeners && (this._.listeners = []); var b = Array.prototype.slice.call(arguments, 1), b = a.on.apply(a, b); this._.listeners.push(b); return b; }, clearListeners: function () { var a = this._.listeners; try { for (; a.length; ) a.pop().removeListener(); } catch (b) {} }, restoreAttrs: function () { var a = this._.attrChanges, b, c; for (c in a) a.hasOwnProperty(c) && ((b = a[c]), null !== b ? this.setAttribute(c, b) : this.removeAttribute(c)); }, attachClass: function (a) { var b = this.getCustomData("classes"); this.hasClass(a) || (!b && (b = []), b.push(a), this.setCustomData("classes", b), this.addClass(a)); }, changeAttr: function (a, b) { var c = this.getAttribute(a); b !== c && (!this._.attrChanges && (this._.attrChanges = {}), a in this._.attrChanges || (this._.attrChanges[a] = c), this.setAttribute(a, b)); }, insertText: function (a) { this.editor.focus(); this.insertHtml(this.transformPlainTextToHtml(a), "text"); }, transformPlainTextToHtml: function (a) { var b = this.editor .getSelection() .getStartElement() .hasAscendant("pre", !0) ? CKEDITOR.ENTER_BR : this.editor.activeEnterMode; return CKEDITOR.tools.transformPlainTextToHtml(a, b); }, insertHtml: function (a, b, c) { var d = this.editor; d.focus(); d.fire("saveSnapshot"); c || (c = d.getSelection().getRanges()[0]); w(this, b || "html", a, c); c.select(); x(this); this.editor.fire("afterInsertHtml", {}); }, insertHtmlIntoRange: function (a, b, c) { w(this, c || "html", a, b); this.editor.fire("afterInsertHtml", { intoRange: b }); }, insertElement: function (a, b) { var d = this.editor; d.focus(); d.fire("saveSnapshot"); var e = d.activeEnterMode, d = d.getSelection(), g = a.getName(), g = CKEDITOR.dtd.$block[g]; b || (b = d.getRanges()[0]); this.insertElementIntoRange(a, b) && (b.moveToPosition(a, CKEDITOR.POSITION_AFTER_END), g && ((g = a.getNext(function (a) { return c(a) && !m(a); })) && g.type == CKEDITOR.NODE_ELEMENT && g.is(CKEDITOR.dtd.$block) ? g.getDtd()["#"] ? b.moveToElementEditStart(g) : b.moveToElementEditEnd(a) : g || e == CKEDITOR.ENTER_BR || ((g = b.fixBlock(!0, e == CKEDITOR.ENTER_DIV ? "div" : "p")), b.moveToElementEditStart(g)))); d.selectRanges([b]); x(this); }, insertElementIntoSelection: function (a) { this.insertElement(a); }, insertElementIntoRange: function (a, b) { var c = this.editor, d = c.config.enterMode, e = a.getName(), f = CKEDITOR.dtd.$block[e]; if (b.checkReadOnly()) return !1; b.deleteContents(1); b.startContainer.type == CKEDITOR.NODE_ELEMENT && (b.startContainer.is({ tr: 1, table: 1, tbody: 1, thead: 1, tfoot: 1, }) ? J(b) : b.startContainer.is(CKEDITOR.dtd.$list) && F(b)); var h, k; if (f) for ( ; (h = b.getCommonAncestor(0, 1)) && (k = CKEDITOR.dtd[h.getName()]) && (!k || !k[e]); ) if (h.getName() in CKEDITOR.dtd.span) { var f = b.splitElement(h), r = b.createBookmark(); g(h); g(f); b.moveToBookmark(r); } else b.checkStartOfBlock() && b.checkEndOfBlock() ? (b.setStartBefore(h), b.collapse(!0), h.remove()) : b.splitBlock( d == CKEDITOR.ENTER_DIV ? "div" : "p", c.editable() ); b.insertNode(a); return !0; }, setData: function (a, b) { b || (a = this.editor.dataProcessor.toHtml(a)); this.setHtml(a); this.fixInitialSelection(); "unloaded" == this.status && (this.status = "ready"); this.editor.fire("dataReady"); }, getData: function (a) { var b = this.getHtml(); a || (b = this.editor.dataProcessor.toDataFormat(b)); return b; }, setReadOnly: function (a) { this.setAttribute("contenteditable", String(!a)); this.setAttribute("aria-readonly", String(a)); }, detach: function () { this.status = "detached"; this.editor.setData(this.editor.getData(), { internal: !0 }); this.clearListeners(); try { this._.cleanCustomData(); } catch (a) { if (!CKEDITOR.env.ie || -2146828218 !== a.number) throw a; } this.editor.fire("contentDomUnload"); delete this.editor.document; delete this.editor.window; delete this.editor; }, isInline: function () { return this.getDocument().equals(CKEDITOR.document); }, fixInitialSelection: function () { function a() { var b = c.getDocument().$, d = b.getSelection(), e; a: if (d.anchorNode && d.anchorNode == c.$) e = !0; else { if ( CKEDITOR.env.webkit && (e = c.getDocument().getActive()) && e.equals(c) && !d.anchorNode ) { e = !0; break a; } e = void 0; } e && ((e = new CKEDITOR.dom.range(c)), e.moveToElementEditStart(c), (b = b.createRange()), b.setStart(e.startContainer.$, e.startOffset), b.collapse(!0), d.removeAllRanges(), d.addRange(b)); } function b() { var a = c.getDocument().$, d = a.selection, e = c.getDocument().getActive(); "None" == d.type && e.equals(c) && ((d = new CKEDITOR.dom.range(c)), (a = a.body.createTextRange()), d.moveToElementEditStart(c), (d = d.startContainer), d.type != CKEDITOR.NODE_ELEMENT && (d = d.getParent()), a.moveToElementText(d.$), a.collapse(!0), a.select()); } var c = this; if ( CKEDITOR.env.ie && (9 > CKEDITOR.env.version || CKEDITOR.env.quirks) ) this.hasFocus && (this.focus(), b()); else if (this.hasFocus) this.focus(), a(); else this.once( "focus", function () { a(); }, null, null, -999 ); }, getHtmlFromRange: function (a) { if (a.collapsed) return new CKEDITOR.dom.documentFragment(a.document); a = { doc: this.getDocument(), range: a.clone() }; q.eol.detect(a, this); q.bogus.exclude(a); q.cell.shrink(a); a.fragment = a.range.cloneContents(); q.tree.rebuild(a, this); q.eol.fix(a, this); return new CKEDITOR.dom.documentFragment(a.fragment.$); }, extractHtmlFromRange: function (a, b) { var c = u, d = { range: a, doc: a.document }, e = this.getHtmlFromRange(a); if (a.collapsed) return a.optimize(), e; a.enlarge(CKEDITOR.ENLARGE_INLINE, 1); c.table.detectPurge(d); d.bookmark = a.createBookmark(); delete d.range; var g = this.editor.createRange(); g.moveToPosition( d.bookmark.startNode, CKEDITOR.POSITION_BEFORE_START ); d.targetBookmark = g.createBookmark(); c.list.detectMerge(d, this); c.table.detectRanges(d, this); c.block.detectMerge(d, this); d.tableContentsRanges ? (c.table.deleteRanges(d), a.moveToBookmark(d.bookmark), (d.range = a)) : (a.moveToBookmark(d.bookmark), (d.range = a), a.extractContents(c.detectExtractMerge(d))); a.moveToBookmark(d.targetBookmark); a.optimize(); c.fixUneditableRangePosition(a); c.list.merge(d, this); c.table.purge(d, this); c.block.merge(d, this); if (b) { c = a.startPath(); if ( (d = a.checkStartOfBlock() && a.checkEndOfBlock() && c.block && !a.root.equals(c.block)) ) { a: { var d = c.block.getElementsByTag("span"), g = 0, f; if (d) for (; (f = d.getItem(g++)); ) if (!G(f)) { d = !0; break a; } d = !1; } d = !d; } d && (a.moveToPosition(c.block, CKEDITOR.POSITION_BEFORE_START), c.block.remove()); } else c.autoParagraph(this.editor, a), v(a.startContainer) && a.startContainer.appendBogus(); a.startContainer.mergeSiblings(); return e; }, setup: function () { var a = this.editor; this.attachListener( a, "beforeGetData", function () { var b = this.getData(); this.is("textarea") || (!1 !== a.config.ignoreEmptyParagraph && (b = b.replace(M, function (a, b) { return b; }))); a.setData(b, null, 1); }, this ); this.attachListener( a, "getSnapshot", function (a) { a.data = this.getData(1); }, this ); this.attachListener( a, "afterSetData", function () { this.setData(a.getData(1)); }, this ); this.attachListener( a, "loadSnapshot", function (a) { this.setData(a.data, 1); }, this ); this.attachListener( a, "beforeFocus", function () { var b = a.getSelection(); ((b = b && b.getNative()) && "Control" == b.type) || this.focus(); }, this ); this.attachListener( a, "insertHtml", function (a) { this.insertHtml(a.data.dataValue, a.data.mode, a.data.range); }, this ); this.attachListener( a, "insertElement", function (a) { this.insertElement(a.data); }, this ); this.attachListener( a, "insertText", function (a) { this.insertText(a.data); }, this ); this.setReadOnly(a.readOnly); this.attachClass("cke_editable"); a.elementMode == CKEDITOR.ELEMENT_MODE_INLINE ? this.attachClass("cke_editable_inline") : (a.elementMode != CKEDITOR.ELEMENT_MODE_REPLACE && a.elementMode != CKEDITOR.ELEMENT_MODE_APPENDTO) || this.attachClass("cke_editable_themed"); this.attachClass("cke_contents_" + a.config.contentsLangDirection); a.keystrokeHandler.blockedKeystrokes[8] = +a.readOnly; a.keystrokeHandler.attach(this); this.on( "blur", function () { this.hasFocus = !1; }, null, null, -1 ); this.on( "focus", function () { this.hasFocus = !0; }, null, null, -1 ); if (CKEDITOR.env.webkit) this.on( "scroll", function () { a._.previousScrollTop = a.editable().$.scrollTop; }, null, null, -1 ); if (CKEDITOR.env.edge && 14 < CKEDITOR.env.version) { var d = function () { var b = a.editable(); null != a._.previousScrollTop && b.getDocument().equals(CKEDITOR.document) && ((b.$.scrollTop = a._.previousScrollTop), (a._.previousScrollTop = null), this.removeListener("scroll", d)); }; this.on("scroll", d); } a.focusManager.add(this); this.equals(CKEDITOR.document.getActive()) && ((this.hasFocus = !0), a.once( "contentDom", function () { a.focusManager.focus(this); }, this )); this.isInline() && this.changeAttr("tabindex", a.tabIndex); if (!this.is("textarea")) { a.document = this.getDocument(); a.window = this.getWindow(); var g = a.document; this.changeAttr("spellcheck", !a.config.disableNativeSpellChecker); var f = a.config.contentsLangDirection; this.getDirection(1) != f && this.changeAttr("dir", f); var A = CKEDITOR.getCss(); if (A) { var f = g.getHead(), I = f.getCustomData("stylesheet"); I ? A != I.getText() && (CKEDITOR.env.ie && 9 > CKEDITOR.env.version ? (I.$.styleSheet.cssText = A) : I.setText(A)) : ((A = g.appendStyleText(A)), (A = new CKEDITOR.dom.element( A.ownerNode || A.owningElement )), f.setCustomData("stylesheet", A), A.data("cke-temp", 1)); } f = g.getCustomData("stylesheet_ref") || 0; g.setCustomData("stylesheet_ref", f + 1); this.setCustomData( "cke_includeReadonly", !a.config.disableReadonlyStyling ); this.attachListener(this, "click", function (a) { a = a.data; var b = new CKEDITOR.dom.elementPath( a.getTarget(), this ).contains("a"); b && 2 != a.$.button && b.isReadOnly() && a.preventDefault(); }); var N = { 8: 1, 46: 1 }; this.attachListener(a, "key", function (b) { if (a.readOnly) return !0; var c = b.data.domEvent.getKey(), d, g = a.getSelection(); if (0 !== g.getRanges().length) { if (c in N) { var f; b = g.getRanges()[0]; var t = b.startPath(), A, H, I, c = 8 == c, l = !1; if ( CKEDITOR.env.ie && 11 > CKEDITOR.env.version && g.getSelectedElement() ) f = g.getSelectedElement(); else if (e(g)) { var n = new CKEDITOR.dom.walker(b), m = b.collapsed ? b.startContainer : n.next(), l = !1, B; if (b.checkStartOfBlock()) { B = b.startPath().block || b.startPath().blockLimit; var q = B.getName(); B = -1 !== CKEDITOR.tools.array.indexOf(["dd", "dt", "li"], q) && null === B.getPrevious(); } else B = !1; if (B) { for (; m && !l; ) (l = m.$.nodeName.toLowerCase()), (l = !!K[l]), (m = n.next()); n = h(b.startPath()); m = h(b.endPath()); l = l || n !== m; } else l = void 0; l || (f = k(g)); } f || l ? (a.fire("saveSnapshot"), l ? ((d = b.startContainer.getAscendant(K, !0)) ? (b.setStart(d, 0), b.enlarge(CKEDITOR.ENLARGE_ELEMENT), (f = b)) : (f = null), f.deleteContents()) : (b.moveToPosition(f, CKEDITOR.POSITION_BEFORE_START), f.remove()), b.select(), a.fire("saveSnapshot"), (d = 1)) : b.collapsed && ((A = t.block) && (I = A[c ? "getPrevious" : "getNext"](z)) && I.type == CKEDITOR.NODE_ELEMENT && I.is("table") && b[c ? "checkStartOfBlock" : "checkEndOfBlock"]() ? (a.fire("saveSnapshot"), b[c ? "checkEndOfBlock" : "checkStartOfBlock"]() && A.remove(), b["moveToElementEdit" + (c ? "End" : "Start")](I), b.select(), a.fire("saveSnapshot"), (d = 1)) : t.blockLimit && t.blockLimit.is("td") && (H = t.blockLimit.getAscendant("table")) && b.checkBoundaryOfElement( H, c ? CKEDITOR.START : CKEDITOR.END ) && (I = H[c ? "getPrevious" : "getNext"](z)) ? (a.fire("saveSnapshot"), b["moveToElementEdit" + (c ? "End" : "Start")](I), b.checkStartOfBlock() && b.checkEndOfBlock() ? I.remove() : b.select(), a.fire("saveSnapshot"), (d = 1)) : (H = t.contains(["td", "th", "caption"])) && b.checkBoundaryOfElement( H, c ? CKEDITOR.START : CKEDITOR.END ) && (d = 1)); } return !d; } }); a.blockless && CKEDITOR.env.ie && CKEDITOR.env.needsBrFiller && this.attachListener(this, "keyup", function (b) { b.data.getKeystroke() in N && !this.getFirst(c) && (this.appendBogus(), (b = a.createRange()), b.moveToPosition(this, CKEDITOR.POSITION_AFTER_START), b.select()); }); this.attachListener(this, "dblclick", function (b) { if (a.readOnly) return !1; b = { element: b.data.getTarget() }; a.fire("doubleclick", b); }); CKEDITOR.env.ie && this.attachListener(this, "click", b); (CKEDITOR.env.ie && !CKEDITOR.env.edge) || this.attachListener(this, "mousedown", function (b) { var c = b.data.getTarget(); c.is("img", "hr", "input", "textarea", "select") && !c.isReadOnly() && (a.getSelection().selectElement(c), c.is("input", "textarea", "select") && b.data.preventDefault()); }); CKEDITOR.env.edge && this.attachListener(this, "mouseup", function (b) { (b = b.data.getTarget()) && b.is("img") && !b.isReadOnly() && a.getSelection().selectElement(b); }); CKEDITOR.env.gecko && this.attachListener(this, "mouseup", function (b) { if ( 2 == b.data.$.button && ((b = b.data.getTarget()), !b.getAscendant("table") && !b.getOuterHtml().replace(M, "")) ) { var c = a.createRange(); c.moveToElementEditStart(b); c.select(!0); } }); CKEDITOR.env.webkit && (this.attachListener(this, "click", function (a) { a.data.getTarget().is("input", "select") && a.data.preventDefault(); }), this.attachListener(this, "mouseup", function (a) { a.data.getTarget().is("input", "textarea") && a.data.preventDefault(); })); CKEDITOR.env.webkit && this.attachListener( a, "key", function (b) { if (a.readOnly) return !0; var c = b.data.domEvent.getKey(); if ( c in N && ((b = a.getSelection()), 0 !== b.getRanges().length) ) { var c = 8 == c, d = b.getRanges()[0]; b = d.startPath(); if (d.collapsed) a: { var e = b.block; if ( e && d[c ? "checkStartOfBlock" : "checkEndOfBlock"](!0) && d.moveToClosestEditablePosition(e, !c) && d.collapsed ) { if (d.startContainer.type == CKEDITOR.NODE_ELEMENT) { var g = d.startContainer.getChild( d.startOffset - (c ? 1 : 0) ); if ( g && g.type == CKEDITOR.NODE_ELEMENT && g.is("hr") ) { a.fire("saveSnapshot"); g.remove(); b = !0; break a; } } d = d.startPath().block; if (!d || (d && d.contains(e))) b = void 0; else { a.fire("saveSnapshot"); var f; (f = (c ? d : e).getBogus()) && f.remove(); f = a.getSelection(); g = f.createBookmarks(); (c ? e : d).moveChildren(c ? d : e, !1); b.lastElement.mergeSiblings(); y(e, d, !c); f.selectBookmarks(g); b = !0; } } else b = !1; } else (c = d), (f = b.block), (d = c.endPath().block), f && d && !f.equals(d) ? (a.fire("saveSnapshot"), (e = f.getBogus()) && e.remove(), c.enlarge(CKEDITOR.ENLARGE_INLINE), c.deleteContents(), d.getParent() && (d.moveChildren(f, !1), b.lastElement.mergeSiblings(), y(f, d, !0)), (c = a.getSelection().getRanges()[0]), c.collapse(1), c.optimize(), "" === c.startContainer.getHtml() && c.startContainer.appendBogus(), c.select(), (b = !0)) : (b = !1); if (!b) return; a.getSelection().scrollIntoView(); a.fire("saveSnapshot"); return !1; } }, this, null, 100 ); } }, getUniqueId: function () { var a; try { this._.expandoNumber = a = CKEDITOR.dom.domObject.prototype.getUniqueId.call(this); } catch (b) { a = this._ && this._.expandoNumber; } return a; }, }, _: { cleanCustomData: function () { this.removeClass("cke_editable"); this.restoreAttrs(); for (var a = this.removeCustomData("classes"); a && a.length; ) this.removeClass(a.pop()); if (!this.is("textarea")) { var a = this.getDocument(), b = a.getHead(); if (b.getCustomData("stylesheet")) { var c = a.getCustomData("stylesheet_ref"); --c ? a.setCustomData("stylesheet_ref", c) : (a.removeCustomData("stylesheet_ref"), b.removeCustomData("stylesheet").remove()); } } }, }, }); CKEDITOR.editor.prototype.editable = function (a) { var b = this._.editable; if (b && a) return 0; if (!arguments.length) return b; a ? (b = a instanceof CKEDITOR.editable ? a : new CKEDITOR.editable(this, a)) : (b && b.detach(), (b = null)); return (this._.editable = b); }; CKEDITOR.on("instanceLoaded", function (b) { var c = b.editor; c.on("insertElement", function (a) { a = a.data; a.type == CKEDITOR.NODE_ELEMENT && (a.is("input") || a.is("textarea")) && ("false" != a.getAttribute("contentEditable") && a.data( "cke-editable", a.hasAttribute("contenteditable") ? "true" : "1" ), a.setAttribute("contentEditable", !1)); }); c.on("selectionChange", function (b) { if (!c.readOnly) { var d = c.getSelection(); d && !d.isLocked && ((d = c.checkDirty()), c.fire("lockSnapshot"), a(b), c.fire("unlockSnapshot"), !d && c.resetDirty()); } }); }); CKEDITOR.on("instanceCreated", function (a) { var b = a.editor; b.on("mode", function () { var a = b.editable(); if (a && a.isInline()) { var c = b.title; a.changeAttr("role", "textbox"); a.changeAttr("aria-multiline", "true"); c && a.changeAttr("aria-label", c); c && a.changeAttr("title", c); var d = b.fire("ariaEditorHelpLabel", {}).label; if ( d && (c = this.ui.space( this.elementMode == CKEDITOR.ELEMENT_MODE_INLINE ? "top" : "contents" )) ) { var e = CKEDITOR.tools.getNextId(), d = CKEDITOR.dom.element.createFromHtml( '\x3cspan id\x3d"' + e + '" class\x3d"cke_voice_label"\x3e' + d + "\x3c/span\x3e" ); c.append(d); a.changeAttr("aria-describedby", e); } } }); }); CKEDITOR.addCss( ".cke_editable{cursor:text}.cke_editable img,.cke_editable input,.cke_editable textarea{cursor:default}" ); z = CKEDITOR.dom.walker.whitespaces(!0); G = CKEDITOR.dom.walker.bookmark(!1, !0); v = CKEDITOR.dom.walker.empty(); m = CKEDITOR.dom.walker.bogus(); M = /(^|]*>)\s*<(p|div|address|h\d|center|pre)[^>]*>\s*(?:]*>| |\u00A0| )?\s*(:?<\/\2>)?\s*(?=$|<\/body>)/gi; w = (function () { function a(b) { return b.type == CKEDITOR.NODE_ELEMENT; } function b(c, d) { var e, g, f, r, h = [], t = d.range.startContainer; e = d.range.startPath(); for ( var t = L[t.getName()], k = 0, A = c.getChildren(), H = A.count(), I = -1, E = -1, S = 0, N = e.contains(L.$list); k < H; ++k ) (e = A.getItem(k)), a(e) ? ((f = e.getName()), N && f in CKEDITOR.dtd.$list ? (h = h.concat(b(e, d))) : ((r = !!t[f]), "br" != f || !e.data("cke-eol") || (k && k != H - 1) || ((S = (g = k ? h[k - 1].node : A.getItem(k + 1)) && (!a(g) || !g.is("br"))), (g = g && a(g) && L.$block[g.getName()])), -1 != I || r || (I = k), r || (E = k), h.push({ isElement: 1, isLineBreak: S, isBlock: e.isBlockBoundary(), hasBlockSibling: g, node: e, name: f, allowed: r, }), (g = S = 0))) : h.push({ isElement: 0, node: e, allowed: 1 }); -1 < I && (h[I].firstNotAllowed = 1); -1 < E && (h[E].lastNotAllowed = 1); return h; } function d(b, c) { var e = [], g = b.getChildren(), f = g.count(), h, r = 0, k = L[c], A = !b.is(L.$inline) || b.is("br"); for (A && e.push(" "); r < f; r++) (h = g.getItem(r)), a(h) && !h.is(k) ? (e = e.concat(d(h, c))) : e.push(h); A && e.push(" "); return e; } function e(b) { return ( a(b.startContainer) && b.startContainer.getChild(b.startOffset - 1) ); } function f(b) { return ( b && a(b) && (b.is(L.$removeEmpty) || (b.is("a") && !b.isBlockBoundary())) ); } function h(b, c, d, e) { var g = b.clone(), f, t; g.setEndAt(c, CKEDITOR.POSITION_BEFORE_END); (f = new CKEDITOR.dom.walker(g).next()) && a(f) && r[f.getName()] && (t = f.getPrevious()) && a(t) && !t.getParent().equals(b.startContainer) && d.contains(t) && e.contains(f) && f.isIdentical(t) && (f.moveChildren(t), f.remove(), h(b, c, d, e)); } function k(b, c) { function d(b, c) { if ( c.isBlock && c.isElement && !c.node.is("br") && a(b) && b.is("br") ) return b.remove(), 1; } var e = c.endContainer.getChild(c.endOffset), g = c.endContainer.getChild(c.endOffset - 1); e && d(e, b[b.length - 1]); g && d(g, b[0]) && (c.setEnd(c.endContainer, c.endOffset - 1), c.collapse()); } var L = CKEDITOR.dtd, r = { p: 1, div: 1, h1: 1, h2: 1, h3: 1, h4: 1, h5: 1, h6: 1, ul: 1, ol: 1, li: 1, pre: 1, dl: 1, blockquote: 1, }, E = { p: 1, div: 1, h1: 1, h2: 1, h3: 1, h4: 1, h5: 1, h6: 1 }, S = CKEDITOR.tools.extend({}, L.$inline); delete S.br; return function (r, C, m, q) { var x = r.editor, v = !1, y; "unfiltered_html" == C && ((C = "html"), (v = !0)); if (!q.checkReadOnly()) { var z = new CKEDITOR.dom.elementPath(q.startContainer, q.root).blockLimit || q.root; C = { type: C, dontFilter: v, editable: r, editor: x, range: q, blockLimit: z, mergeCandidates: [], zombies: [], }; var v = C.range, z = C.mergeCandidates, u = "html" === C.type, w, R, G, V, K; "text" == C.type && v.shrink(CKEDITOR.SHRINK_ELEMENT, !0, !1) && ((R = CKEDITOR.dom.element.createFromHtml( "\x3cspan\x3e\x26nbsp;\x3c/span\x3e", v.document )), v.insertNode(R), v.setStartAfter(R)); G = new CKEDITOR.dom.elementPath(v.startContainer); C.endPath = V = new CKEDITOR.dom.elementPath(v.endContainer); if (!v.collapsed) { w = V.block || V.blockLimit; var Z = v.getCommonAncestor(); w && !w.equals(Z) && !w.contains(Z) && v.checkEndOfBlock() && C.zombies.push(w); v.deleteContents(); } for (; (K = e(v)) && a(K) && K.isBlockBoundary() && G.contains(K); ) v.moveToPosition(K, CKEDITOR.POSITION_BEFORE_END); h(v, C.blockLimit, G, V); R && (v.setEndBefore(R), v.collapse(), R.remove()); R = v.startPath(); if ((w = R.contains(f, !1, 1))) (y = v.splitElement(w)), (C.inlineStylesRoot = w), (C.inlineStylesPeak = R.lastElement); R = v.createBookmark(); u && (g(w), g(y)); (w = R.startNode.getPrevious(c)) && a(w) && f(w) && z.push(w); (w = R.startNode.getNext(c)) && a(w) && f(w) && z.push(w); for (w = R.startNode; (w = w.getParent()) && f(w); ) z.push(w); v.moveToBookmark(R); y = r.getHtml(); y = "" === y || y.match(M); x.enterMode === CKEDITOR.ENTER_DIV && y && ((x = r.getFirst()) && x.remove(), q.setStartAt(r, CKEDITOR.POSITION_AFTER_START), q.collapse(!0)); if ((r = m)) { r = C.range; if ("text" == C.type && C.inlineStylesRoot) { q = C.inlineStylesPeak; x = q.getDocument().createText("{cke-peak}"); for (y = C.inlineStylesRoot.getParent(); !q.equals(y); ) (x = x.appendTo(q.clone())), (q = q.getParent()); m = x.getOuterHtml().split("{cke-peak}").join(m); } q = C.blockLimit.getName(); if (/^\s+|\s+$/.test(m) && "span" in CKEDITOR.dtd[q]) { var J = '\x3cspan data-cke-marker\x3d"1"\x3e\x26nbsp;\x3c/span\x3e'; m = J + m + J; } m = C.editor.dataProcessor.toHtml(m, { context: null, fixForBody: !1, protectedWhitespaces: !!J, dontFilter: C.dontFilter, filter: C.editor.activeFilter, enterMode: C.editor.activeEnterMode, }); q = r.document.createElement("body"); q.setHtml(m); J && (q.getFirst().remove(), q.getLast().remove()); if ( (J = r.startPath().block) && (1 != J.getChildCount() || !J.getBogus()) ) a: { var P; if ( 1 == q.getChildCount() && a((P = q.getFirst())) && P.is(E) && !P.hasAttribute("contenteditable") ) { J = P.getElementsByTag("*"); r = 0; for (y = J.count(); r < y; r++) if (((x = J.getItem(r)), !x.is(S))) break a; P.moveChildren(P.getParent(1)); P.remove(); } } C.dataWrapper = q; r = m; } if (r) { P = C.range; r = P.document; q = C.blockLimit; y = 0; var F, J = [], ca, O; m = R = 0; var T, x = P.startContainer; K = C.endPath.elements[0]; var Q, v = K.getPosition(x), z = !!K.getCommonAncestor(x) && v != CKEDITOR.POSITION_IDENTICAL && !( v & (CKEDITOR.POSITION_CONTAINS + CKEDITOR.POSITION_IS_CONTAINED) ), x = b(C.dataWrapper, C); for ( C.editor.enterMode !== CKEDITOR.ENTER_BR && k(x, P); y < x.length; y++ ) { v = x[y]; if ((u = v.isLineBreak)) (u = P), (w = q), (V = G = void 0), v.hasBlockSibling ? (u = 1) : (G = u.startContainer.getAscendant(L.$block, 1)) && G.is({ div: 1, p: 1 }) ? ((V = G.getPosition(w)), V == CKEDITOR.POSITION_IDENTICAL || V == CKEDITOR.POSITION_CONTAINS ? (u = 0) : ((w = u.splitElement(G)), u.moveToPosition(w, CKEDITOR.POSITION_AFTER_START), (u = 1))) : (u = 0); if (u) m = 0 < y; else { u = P.startPath(); !v.isBlock && n(C.editor, u.block, u.blockLimit) && (O = l(C.editor)) && ((O = r.createElement(O)), O.appendBogus(), P.insertNode(O), CKEDITOR.env.needsBrFiller && (F = O.getBogus()) && F.remove(), P.moveToPosition(O, CKEDITOR.POSITION_BEFORE_END)); if ((u = P.startPath().block) && !u.equals(ca)) { if ((F = u.getBogus())) F.remove(), J.push(u); ca = u; } v.firstNotAllowed && (R = 1); if (R && v.isElement) { u = P.startContainer; for (w = null; u && !L[u.getName()][v.name]; ) { if (u.equals(q)) { u = null; break; } w = u; u = u.getParent(); } if (u) w && ((T = P.splitElement(w)), C.zombies.push(T), C.zombies.push(w)); else { w = q.getName(); Q = !y; u = y == x.length - 1; w = d(v.node, w); G = []; V = w.length; for (var Z = 0, X = void 0, da = 0, fa = -1; Z < V; Z++) (X = w[Z]), " " == X ? (da || (Q && !Z) || (G.push(new CKEDITOR.dom.text(" ")), (fa = G.length)), (da = 1)) : (G.push(X), (da = 0)); u && fa == G.length && G.pop(); Q = G; } } if (Q) { for (; (u = Q.pop()); ) P.insertNode(u); Q = 0; } else P.insertNode(v.node); v.lastNotAllowed && y < x.length - 1 && ((T = z ? K : T) && P.setEndAt(T, CKEDITOR.POSITION_AFTER_START), (R = 0)); P.collapse(); } } 1 != x.length ? (F = !1) : ((F = x[0]), (F = F.isElement && "false" == F.node.getAttribute("contenteditable"))); F && ((m = !0), (u = x[0].node), P.setStartAt(u, CKEDITOR.POSITION_BEFORE_START), P.setEndAt(u, CKEDITOR.POSITION_AFTER_END)); C.dontMoveCaret = m; C.bogusNeededBlocks = J; } F = C.range; var ba; Q = C.bogusNeededBlocks; for (ca = F.createBookmark(); (O = C.zombies.pop()); ) O.getParent() && ((T = F.clone()), T.moveToElementEditStart(O), T.removeEmptyBlocksAtEnd()); if (Q) for (; (O = Q.pop()); ) CKEDITOR.env.needsBrFiller ? O.appendBogus() : O.append(F.document.createText(" ")); for (; (O = C.mergeCandidates.pop()); ) O.mergeSiblings(); CKEDITOR.env.webkit && F.startPath() && ((O = F.startPath()), O.block ? O.block.$.normalize() : O.blockLimit && O.blockLimit.$.normalize()); F.moveToBookmark(ca); if (!C.dontMoveCaret) { for (O = e(F); O && a(O) && !O.is(L.$empty); ) { if (O.isBlockBoundary()) F.moveToPosition(O, CKEDITOR.POSITION_BEFORE_END); else { if (f(O) && O.getHtml().match(/(\s| )$/g)) { ba = null; break; } ba = F.clone(); ba.moveToPosition(O, CKEDITOR.POSITION_BEFORE_END); } O = O.getLast(c); } ba && F.moveToRange(ba); } } }; })(); J = (function () { function a(b) { b = new CKEDITOR.dom.walker(b); b.guard = function (a, b) { if (b) return !1; if (a.type == CKEDITOR.NODE_ELEMENT) return a.is(CKEDITOR.dtd.$tableContent); }; b.evaluator = function (a) { return a.type == CKEDITOR.NODE_ELEMENT; }; return b; } function b(a, c, d) { c = a.getDocument().createElement(c); a.append(c, d); return c; } function c(a) { var b = a.count(), d; for (b; 0 < b--; ) (d = a.getItem(b)), CKEDITOR.tools.trim(d.getHtml()) || (d.appendBogus(), CKEDITOR.env.ie && 9 > CKEDITOR.env.version && d.getChildCount() && d.getFirst().remove()); } return function (d) { var e = d.startContainer, g = e.getAscendant("table", 1), f = !1; c(g.getElementsByTag("td")); c(g.getElementsByTag("th")); g = d.clone(); g.setStart(e, 0); g = a(g).lastBackward(); g || ((g = d.clone()), g.setEndAt(e, CKEDITOR.POSITION_BEFORE_END), (g = a(g).lastForward()), (f = !0)); g || (g = e); g.is("table") ? (d.setStartAt(g, CKEDITOR.POSITION_BEFORE_START), d.collapse(!0), g.remove()) : (g.is({ tbody: 1, thead: 1, tfoot: 1 }) && (g = b(g, "tr", f)), g.is("tr") && (g = b(g, g.getParent().is("thead") ? "th" : "td", f)), (e = g.getBogus()) && e.remove(), d.moveToPosition( g, f ? CKEDITOR.POSITION_AFTER_START : CKEDITOR.POSITION_BEFORE_END )); }; })(); F = (function () { function a(b) { b = new CKEDITOR.dom.walker(b); b.guard = function (a, b) { if (b) return !1; if (a.type == CKEDITOR.NODE_ELEMENT) return a.is(CKEDITOR.dtd.$list) || a.is(CKEDITOR.dtd.$listItem); }; b.evaluator = function (a) { return ( a.type == CKEDITOR.NODE_ELEMENT && a.is(CKEDITOR.dtd.$listItem) ); }; return b; } return function (b) { var c = b.startContainer, d = !1, e; e = b.clone(); e.setStart(c, 0); e = a(e).lastBackward(); e || ((e = b.clone()), e.setEndAt(c, CKEDITOR.POSITION_BEFORE_END), (e = a(e).lastForward()), (d = !0)); e || (e = c); e.is(CKEDITOR.dtd.$list) ? (b.setStartAt(e, CKEDITOR.POSITION_BEFORE_START), b.collapse(!0), e.remove()) : ((c = e.getBogus()) && c.remove(), b.moveToPosition( e, d ? CKEDITOR.POSITION_AFTER_START : CKEDITOR.POSITION_BEFORE_END ), b.select()); }; })(); q = { eol: { detect: function (a, b) { var c = a.range, d = c.clone(), e = c.clone(), g = new CKEDITOR.dom.elementPath(c.startContainer, b), f = new CKEDITOR.dom.elementPath(c.endContainer, b); d.collapse(1); e.collapse(); g.block && d.checkBoundaryOfElement(g.block, CKEDITOR.END) && (c.setStartAfter(g.block), (a.prependEolBr = 1)); f.block && e.checkBoundaryOfElement(f.block, CKEDITOR.START) && (c.setEndBefore(f.block), (a.appendEolBr = 1)); }, fix: function (a, b) { var c = b.getDocument(), d; a.appendEolBr && ((d = this.createEolBr(c)), a.fragment.append(d)); !a.prependEolBr || (d && !d.getPrevious()) || a.fragment.append(this.createEolBr(c), 1); }, createEolBr: function (a) { return a.createElement("br", { attributes: { "data-cke-eol": 1 } }); }, }, bogus: { exclude: function (a) { var b = a.range.getBoundaryNodes(), c = b.startNode, b = b.endNode; !b || !m(b) || (c && c.equals(b)) || a.range.setEndBefore(b); }, }, tree: { rebuild: function (a, b) { var c = a.range, d = c.getCommonAncestor(), e = new CKEDITOR.dom.elementPath(d, b), g = new CKEDITOR.dom.elementPath(c.startContainer, b), c = new CKEDITOR.dom.elementPath(c.endContainer, b), f; d.type == CKEDITOR.NODE_TEXT && (d = d.getParent()); if (e.blockLimit.is({ tr: 1, table: 1 })) { var h = e.contains("table").getParent(); f = function (a) { return !a.equals(h); }; } else if ( e.block && e.block.is(CKEDITOR.dtd.$listItem) && ((g = g.contains(CKEDITOR.dtd.$list)), (c = c.contains(CKEDITOR.dtd.$list)), !g.equals(c)) ) { var r = e.contains(CKEDITOR.dtd.$list).getParent(); f = function (a) { return !a.equals(r); }; } f || (f = function (a) { return !a.equals(e.block) && !a.equals(e.blockLimit); }); this.rebuildFragment(a, b, d, f); }, rebuildFragment: function (a, b, c, d) { for (var e; c && !c.equals(b) && d(c); ) (e = c.clone(0, 1)), a.fragment.appendTo(e), (a.fragment = e), (c = c.getParent()); }, }, cell: { shrink: function (a) { a = a.range; var b = a.startContainer, c = a.endContainer, d = a.startOffset, e = a.endOffset; b.type == CKEDITOR.NODE_ELEMENT && b.equals(c) && b.is("tr") && ++d == e && a.shrink(CKEDITOR.SHRINK_TEXT); }, }, }; u = (function () { function a(b, c) { var d = b.getParent(); if (d.is(CKEDITOR.dtd.$inline)) b[c ? "insertBefore" : "insertAfter"](d); } function b(c, d, e) { a(d); a(e, 1); for (var g; (g = e.getNext()); ) g.insertAfter(d), (d = g); v(c) && c.remove(); } function c(a, b) { var d = new CKEDITOR.dom.range(a); d.setStartAfter(b.startNode); d.setEndBefore(b.endNode); return d; } return { list: { detectMerge: function (a, b) { var d = c(b, a.bookmark), e = d.startPath(), g = d.endPath(), f = e.contains(CKEDITOR.dtd.$list), h = g.contains(CKEDITOR.dtd.$list); a.mergeList = f && h && f.getParent().equals(h.getParent()) && !f.equals(h); a.mergeListItems = e.block && g.block && e.block.is(CKEDITOR.dtd.$listItem) && g.block.is(CKEDITOR.dtd.$listItem); if (a.mergeList || a.mergeListItems) (d = d.clone()), d.setStartBefore(a.bookmark.startNode), d.setEndAfter(a.bookmark.endNode), (a.mergeListBookmark = d.createBookmark()); }, merge: function (a, c) { if (a.mergeListBookmark) { var d = a.mergeListBookmark.startNode, e = a.mergeListBookmark.endNode, g = new CKEDITOR.dom.elementPath(d, c), f = new CKEDITOR.dom.elementPath(e, c); if (a.mergeList) { var h = g.contains(CKEDITOR.dtd.$list), k = f.contains(CKEDITOR.dtd.$list); h.equals(k) || (k.moveChildren(h), k.remove()); } a.mergeListItems && ((g = g.contains(CKEDITOR.dtd.$listItem)), (f = f.contains(CKEDITOR.dtd.$listItem)), g.equals(f) || b(f, d, e)); d.remove(); e.remove(); } }, }, block: { detectMerge: function (a, b) { if (!a.tableContentsRanges && !a.mergeListBookmark) { var c = new CKEDITOR.dom.range(b); c.setStartBefore(a.bookmark.startNode); c.setEndAfter(a.bookmark.endNode); a.mergeBlockBookmark = c.createBookmark(); } }, merge: function (a, c) { if (a.mergeBlockBookmark && !a.purgeTableBookmark) { var d = a.mergeBlockBookmark.startNode, e = a.mergeBlockBookmark.endNode, g = new CKEDITOR.dom.elementPath(d, c), f = new CKEDITOR.dom.elementPath(e, c), g = g.block, f = f.block; g && f && !g.equals(f) && b(f, d, e); d.remove(); e.remove(); } }, }, table: (function () { function a(c) { var e = [], g, f = new CKEDITOR.dom.walker(c), h = c.startPath().contains(d), k = c.endPath().contains(d), t = {}; f.guard = function (a, f) { if (a.type == CKEDITOR.NODE_ELEMENT) { var E = "visited_" + (f ? "out" : "in"); if (a.getCustomData(E)) return; CKEDITOR.dom.element.setMarker(t, a, E, 1); } if (f && h && a.equals(h)) (g = c.clone()), g.setEndAt(h, CKEDITOR.POSITION_BEFORE_END), e.push(g); else if (!f && k && a.equals(k)) (g = c.clone()), g.setStartAt(k, CKEDITOR.POSITION_AFTER_START), e.push(g); else { if ((E = !f)) E = a.type == CKEDITOR.NODE_ELEMENT && a.is(d) && (!h || b(a, h)) && (!k || b(a, k)); if (!E && (E = f)) if (a.is(d)) var E = h && h.getAscendant("table", !0), H = k && k.getAscendant("table", !0), l = a.getAscendant("table", !0), E = (E && E.contains(l)) || (H && H.contains(l)); else E = void 0; E && ((g = c.clone()), g.selectNodeContents(a), e.push(g)); } }; f.lastForward(); CKEDITOR.dom.element.clearAllMarkers(t); return e; } function b(a, c) { var d = CKEDITOR.POSITION_CONTAINS + CKEDITOR.POSITION_IS_CONTAINED, e = a.getPosition(c); return e === CKEDITOR.POSITION_IDENTICAL ? !1 : 0 === (e & d); } var d = { td: 1, th: 1, caption: 1 }; return { detectPurge: function (a) { var b = a.range, c = b.clone(); c.enlarge(CKEDITOR.ENLARGE_ELEMENT); var c = new CKEDITOR.dom.walker(c), e = 0; c.evaluator = function (a) { a.type == CKEDITOR.NODE_ELEMENT && a.is(d) && ++e; }; c.checkForward(); if (1 < e) { var c = b.startPath().contains("table"), g = b.endPath().contains("table"); c && g && b.checkBoundaryOfElement(c, CKEDITOR.START) && b.checkBoundaryOfElement(g, CKEDITOR.END) && ((b = a.range.clone()), b.setStartBefore(c), b.setEndAfter(g), (a.purgeTableBookmark = b.createBookmark())); } }, detectRanges: function (e, g) { var f = c(g, e.bookmark), h = f.clone(), k, p, l = f.getCommonAncestor(); l.is(CKEDITOR.dtd.$tableContent) && !l.is(d) && (l = l.getAscendant("table", !0)); p = l; l = new CKEDITOR.dom.elementPath(f.startContainer, p); p = new CKEDITOR.dom.elementPath(f.endContainer, p); l = l.contains("table"); p = p.contains("table"); if (l || p) l && p && b(l, p) ? ((e.tableSurroundingRange = h), h.setStartAt(l, CKEDITOR.POSITION_AFTER_END), h.setEndAt(p, CKEDITOR.POSITION_BEFORE_START), (h = f.clone()), h.setEndAt(l, CKEDITOR.POSITION_AFTER_END), (k = f.clone()), k.setStartAt(p, CKEDITOR.POSITION_BEFORE_START), (k = a(h).concat(a(k)))) : l ? p || ((e.tableSurroundingRange = h), h.setStartAt(l, CKEDITOR.POSITION_AFTER_END), f.setEndAt(l, CKEDITOR.POSITION_AFTER_END)) : ((e.tableSurroundingRange = h), h.setEndAt(p, CKEDITOR.POSITION_BEFORE_START), f.setStartAt(p, CKEDITOR.POSITION_AFTER_START)), (e.tableContentsRanges = k ? k : a(f)); }, deleteRanges: function (a) { for (var b; (b = a.tableContentsRanges.pop()); ) b.extractContents(), v(b.startContainer) && b.startContainer.appendBogus(); a.tableSurroundingRange && a.tableSurroundingRange.extractContents(); }, purge: function (a) { if (a.purgeTableBookmark) { var b = a.doc, c = a.range.clone(), b = b.createElement("p"); b.insertBefore(a.purgeTableBookmark.startNode); c.moveToBookmark(a.purgeTableBookmark); c.deleteContents(); a.range.moveToPosition(b, CKEDITOR.POSITION_AFTER_START); } }, }; })(), detectExtractMerge: function (a) { return !( a.range.startPath().contains(CKEDITOR.dtd.$listItem) && a.range.endPath().contains(CKEDITOR.dtd.$listItem) ); }, fixUneditableRangePosition: function (a) { a.startContainer.getDtd()["#"] || a.moveToClosestEditablePosition(null, !0); }, autoParagraph: function (a, b) { var c = b.startPath(), d; n(a, c.block, c.blockLimit) && (d = l(a)) && ((d = b.document.createElement(d)), d.appendBogus(), b.insertNode(d), b.moveToPosition(d, CKEDITOR.POSITION_AFTER_START)); }, }; })(); })(); (function () { function a(a) { return CKEDITOR.plugins.widget && CKEDITOR.plugins.widget.isDomWidget(a); } function d(b, c) { if (0 === b.length || a(b[0].getEnclosedNode())) return !1; var d, e; if ((d = !c && 1 === b.length) && !(d = b[0].collapsed)) { var g = b[0]; d = g.startContainer.getAscendant({ td: 1, th: 1 }, !0); var f = g.endContainer.getAscendant({ td: 1, th: 1 }, !0); e = CKEDITOR.tools.trim; d && d.equals(f) && !d.findOne("td, th, tr, tbody, table") ? ((g = g.cloneContents()), (d = g.getFirst() ? e(g.getFirst().getText()) !== e(d.getText()) : !0)) : (d = !1); } if (d) return !1; for (e = 0; e < b.length; e++) if (((d = b[e]._getTableElement()), !d)) return !1; return !0; } function b(a) { function b(a) { a = a.find("td, th"); var c = [], d; for (d = 0; d < a.count(); d++) c.push(a.getItem(d)); return c; } var c = [], d, e; for (e = 0; e < a.length; e++) (d = a[e]._getTableElement()), d.is && d.is({ td: 1, th: 1 }) ? c.push(d) : (c = c.concat(b(d))); return c; } function c(a) { a = b(a); var c = "", d = [], e, g; for (g = 0; g < a.length; g++) e && !e.equals(a[g].getAscendant("tr")) ? ((c += d.join("\t") + "\n"), (e = a[g].getAscendant("tr")), (d = [])) : 0 === g && (e = a[g].getAscendant("tr")), d.push(a[g].getText()); return (c += d.join("\t")); } function f(a) { var b = this.root.editor, d = b.getSelection(1); this.reset(); F = !0; d.root.once( "selectionchange", function (a) { a.cancel(); }, null, null, 0 ); d.selectRanges([a[0]]); d = this._.cache; d.ranges = new CKEDITOR.dom.rangeList(a); d.type = CKEDITOR.SELECTION_TEXT; d.selectedElement = a[0]._getTableElement(); d.selectedText = c(a); d.nativeSel = null; this.isFake = 1; this.rev = M++; b._.fakeSelection = this; F = !1; this.root.fire("selectionchange"); } function e() { var b = this._.fakeSelection, c; if (b) { c = this.getSelection(1); var e; if (!(e = !c) && (e = !c.isHidden())) { e = b; var g = c.getRanges(), f = e.getRanges(), h = g.length && g[0]._getTableElement() && g[0]._getTableElement().getAscendant("table", !0), k = f.length && f[0]._getTableElement() && f[0]._getTableElement().getAscendant("table", !0), E = 1 === g.length && g[0]._getTableElement() && g[0]._getTableElement().is("table"), l = 1 === f.length && f[0]._getTableElement() && f[0]._getTableElement().is("table"); if (a(e.getSelectedElement())) e = !1; else { var p = 1 === g.length && g[0].collapsed, f = d(g, !!CKEDITOR.env.webkit) && d(f); h = h && k ? h.equals(k) || k.contains(h) : !1; h && (p || f) ? (E && !l && e.selectRanges(g), (e = !0)) : (e = !1); } e = !e; } e && (b.reset(), (b = 0)); } if ( !b && ((b = c || this.getSelection(1)), !b || b.getType() == CKEDITOR.SELECTION_NONE) ) return; this.fire("selectionCheck", b); c = this.elementPath(); c.compare(this._.selectionPreviousPath) || ((e = this._.selectionPreviousPath && this._.selectionPreviousPath.blockLimit.equals(c.blockLimit)), (!CKEDITOR.env.webkit && !CKEDITOR.env.gecko) || e || (this._.previousActive = this.document.getActive()), (this._.selectionPreviousPath = c), this.fire("selectionChange", { selection: b, path: c })); } function k() { u = !0; q || (h.call(this), (q = CKEDITOR.tools.setTimeout(h, 200, this))); } function h() { q = null; u && (CKEDITOR.tools.setTimeout(e, 0, this), (u = !1)); } function n(a) { return K(a) || (a.type == CKEDITOR.NODE_ELEMENT && !a.is(CKEDITOR.dtd.$empty)) ? !0 : !1; } function l(a) { function b(c, d) { return c && c.type != CKEDITOR.NODE_TEXT ? a.clone()["moveToElementEdit" + (d ? "End" : "Start")](c) : !1; } if (!(a.root instanceof CKEDITOR.editable)) return !1; var c = a.startContainer, d = a.getPreviousNode(n, null, c), e = a.getNextNode(n, null, c); return b(d) || b(e, 1) || !( d || e || (c.type == CKEDITOR.NODE_ELEMENT && c.isBlockBoundary() && c.getBogus()) ) ? !0 : !1; } function g(a) { x(a, !1); var b = a.getDocument().createText(w); a.setCustomData("cke-fillingChar", b); return b; } function x(a, b) { var c = a && a.removeCustomData("cke-fillingChar"); if (c) { if (!1 !== b) { var d = a.getDocument().getSelection().getNative(), e = d && "None" != d.type && d.getRangeAt(0), g = w.length; if (c.getLength() > g && e && e.intersectsNode(c.$)) { var f = [ { node: d.anchorNode, offset: d.anchorOffset }, { node: d.focusNode, offset: d.focusOffset }, ]; d.anchorNode == c.$ && d.anchorOffset > g && (f[0].offset -= g); d.focusNode == c.$ && d.focusOffset > g && (f[1].offset -= g); } } c.setText(y(c.getText(), 1)); f && ((c = a.getDocument().$), (d = c.getSelection()), (c = c.createRange()), c.setStart(f[0].node, f[0].offset), c.collapse(!0), d.removeAllRanges(), d.addRange(c), d.extend(f[1].node, f[1].offset)); } } function y(a, b) { return b ? a.replace(J, function (a, b) { return b ? " " : ""; }) : a.replace(w, ""); } function z(a, b) { var c = (b && CKEDITOR.tools.htmlEncode(b)) || "\x26nbsp;", c = CKEDITOR.dom.element.createFromHtml( '\x3cdiv data-cke-hidden-sel\x3d"1" data-cke-temp\x3d"1" style\x3d"' + (CKEDITOR.env.ie && 14 > CKEDITOR.env.version ? "display:none" : "position:fixed;top:0;left:-1000px;width:0;height:0;overflow:hidden;") + '"\x3e' + c + "\x3c/div\x3e", a.document ); a.fire("lockSnapshot"); a.editable().append(c); var d = a.getSelection(1), e = a.createRange(), g = d.root.on( "selectionchange", function (a) { a.cancel(); }, null, null, 0 ); e.setStartAt(c, CKEDITOR.POSITION_AFTER_START); e.setEndAt(c, CKEDITOR.POSITION_BEFORE_END); d.selectRanges([e]); g.removeListener(); a.fire("unlockSnapshot"); a._.hiddenSelectionContainer = c; } function G(b) { var c = { 37: 1, 39: 1, 8: 1, 46: 1 }; return function (d) { var e = d.data.getKeystroke(); if (c[e]) { var g = b.getSelection(), f = g.getRanges()[0]; g.isCollapsed() && (f = f[ 38 > e ? "getPreviousEditableNode" : "getNextEditableNode" ]()) && f.type == CKEDITOR.NODE_ELEMENT && "false" == f.getAttribute("contenteditable") && ((g = g.getStartElement()), !g.isBlockBoundary() || "" !== (void 0 === g.$.textContent ? g.$.innerText : g.$.textContent) || a(g.getFirst()) || (8 !== e && 46 !== e) || (g.remove(), b.fire("saveSnapshot")), b.getSelection().fake(f), d.data.preventDefault(), d.cancel()); } }; } function v(a) { for (var b = 0; b < a.length; b++) { var c = a[b]; c.getCommonAncestor().isReadOnly() && a.splice(b, 1); if (!c.collapsed) { if (c.startContainer.isReadOnly()) for ( var d = c.startContainer, e; d && !( ((e = d.type == CKEDITOR.NODE_ELEMENT) && d.is("body")) || !d.isReadOnly() ); ) e && "false" == d.getAttribute("contentEditable") && c.setStartAfter(d), (d = d.getParent()); d = c.startContainer; e = c.endContainer; var g = c.startOffset, f = c.endOffset, h = c.clone(); d && d.type == CKEDITOR.NODE_TEXT && (g >= d.getLength() ? h.setStartAfter(d) : h.setStartBefore(d)); e && e.type == CKEDITOR.NODE_TEXT && (f ? h.setEndAfter(e) : h.setEndBefore(e)); d = new CKEDITOR.dom.walker(h); d.evaluator = function (d) { if (d.type == CKEDITOR.NODE_ELEMENT && d.isReadOnly()) { var e = c.clone(); c.setEndBefore(d); c.collapsed && a.splice(b--, 1); d.getPosition(h.endContainer) & CKEDITOR.POSITION_CONTAINS || (e.setStartAfter(d), e.collapsed || a.splice(b + 1, 0, e)); return !0; } return !1; }; d.next(); } } return a; } var m = "function" != typeof window.getSelection, M = 1, w = CKEDITOR.tools.repeat("​", 7), J = new RegExp(w + "( )?", "g"), F, q, u, K = CKEDITOR.dom.walker.invisible(1), D = (function () { function a(b) { return function (a) { var c = a.editor.createRange(); c.moveToClosestEditablePosition(a.selected, b) && a.editor.getSelection().selectRanges([c]); return !1; }; } function b(a) { return function (b) { var c = b.editor, d = c.createRange(), e; if (!c.readOnly) return ( (e = d.moveToClosestEditablePosition(b.selected, a)) || (e = d.moveToClosestEditablePosition(b.selected, !a)), e && c.getSelection().selectRanges([d]), c.fire("saveSnapshot"), b.selected.remove(), e || (d.moveToElementEditablePosition(c.editable()), c.getSelection().selectRanges([d])), c.fire("saveSnapshot"), !1 ); }; } var c = a(), d = a(1); return { 37: c, 38: c, 39: d, 40: d, 8: b(), 46: b(1) }; })(); CKEDITOR.on("instanceCreated", function (a) { function b() { var a = c.getSelection(); a && a.removeAllRanges(); } var c = a.editor; c.on("contentDom", function () { function a() { q = new CKEDITOR.dom.selection(c.getSelection()); q.lock(); } function b() { h.removeListener("mouseup", b); l.removeListener("mouseup", b); var a = CKEDITOR.document.$.selection, c = a.createRange(); "None" != a.type && c.parentElement() && c.parentElement().ownerDocument == f.$ && c.select(); } function d(a) { var b, c; b = (b = this.document.getActive()) ? "input" === b.getName() || "textarea" === b.getName() : !1; b || ((b = this.getSelection(1)), (c = g(b)) && !c.equals(p) && (b.selectElement(c), a.data.preventDefault())); } function g(a) { a = a.getRanges()[0]; return a ? (a = a.startContainer.getAscendant(function (a) { return ( a.type == CKEDITOR.NODE_ELEMENT && a.hasAttribute("contenteditable") ); }, !0)) && "false" === a.getAttribute("contenteditable") ? a : null : null; } var f = c.document, h = CKEDITOR.document, p = c.editable(), t = f.getBody(), l = f.getDocumentElement(), H = p.isInline(), n, q; CKEDITOR.env.gecko && p.attachListener( p, "focus", function (a) { a.removeListener(); 0 !== n && (a = c.getSelection().getNative()) && a.isCollapsed && a.anchorNode == p.$ && ((a = c.createRange()), a.moveToElementEditStart(p), a.select()); }, null, null, -2 ); p.attachListener( p, CKEDITOR.env.webkit || CKEDITOR.env.gecko ? "focusin" : "focus", function () { if (n && (CKEDITOR.env.webkit || CKEDITOR.env.gecko)) { n = c._.previousActive && c._.previousActive.equals(f.getActive()); var a = null != c._.previousScrollTop && c._.previousScrollTop != p.$.scrollTop; CKEDITOR.env.webkit && n && a && (p.$.scrollTop = c._.previousScrollTop); } c.unlockSelection(n); n = 0; }, null, null, -1 ); p.attachListener(p, "mousedown", function () { n = 0; }); if (CKEDITOR.env.ie || CKEDITOR.env.gecko || H) m ? p.attachListener(p, "beforedeactivate", a, null, null, -1) : p.attachListener(c, "selectionCheck", a, null, null, -1), p.attachListener( p, CKEDITOR.env.webkit || CKEDITOR.env.gecko ? "focusout" : "blur", function () { var a = q && (q.isFake || 2 > q.getRanges().length); (CKEDITOR.env.gecko && !H && a) || (c.lockSelection(q), (n = 1)); }, null, null, -1 ), p.attachListener(p, "mousedown", function () { n = 0; }); if (CKEDITOR.env.ie && !H) { var v; p.attachListener(p, "mousedown", function (a) { 2 == a.data.$.button && (((a = c.document.getSelection()) && a.getType() != CKEDITOR.SELECTION_NONE) || (v = c.window.getScrollPosition())); }); p.attachListener(p, "mouseup", function (a) { 2 == a.data.$.button && v && ((c.document.$.documentElement.scrollLeft = v.x), (c.document.$.documentElement.scrollTop = v.y)); v = null; }); if ("BackCompat" != f.$.compatMode) { if (CKEDITOR.env.ie7Compat || CKEDITOR.env.ie6Compat) { var u, y; l.on("mousedown", function (a) { function b(a) { a = a.data.$; if (u) { var c = t.$.createTextRange(); try { c.moveToPoint(a.clientX, a.clientY); } catch (d) {} u.setEndPoint( 0 > y.compareEndPoints("StartToStart", c) ? "EndToEnd" : "StartToStart", c ); u.select(); } } function c() { l.removeListener("mousemove", b); h.removeListener("mouseup", c); l.removeListener("mouseup", c); u.select(); } a = a.data; if ( a.getTarget().is("html") && a.$.y < l.$.clientHeight && a.$.x < l.$.clientWidth ) { u = t.$.createTextRange(); try { u.moveToPoint(a.$.clientX, a.$.clientY); } catch (d) {} y = u.duplicate(); l.on("mousemove", b); h.on("mouseup", c); l.on("mouseup", c); } }); } if (7 < CKEDITOR.env.version && 11 > CKEDITOR.env.version) l.on("mousedown", function (a) { a.data.getTarget().is("html") && (h.on("mouseup", b), l.on("mouseup", b)); }); } } p.attachListener(p, "selectionchange", e, c); p.attachListener(p, "keyup", k, c); p.attachListener(p, "touchstart", k, c); p.attachListener(p, "touchend", k, c); CKEDITOR.env.ie && p.attachListener(p, "keydown", d, c); p.attachListener( p, CKEDITOR.env.webkit || CKEDITOR.env.gecko ? "focusin" : "focus", function () { c.forceNextSelectionCheck(); c.selectionChange(1); } ); if (H && (CKEDITOR.env.webkit || CKEDITOR.env.gecko)) { var w; p.attachListener(p, "mousedown", function () { w = 1; }); p.attachListener(f.getDocumentElement(), "mouseup", function () { w && k.call(c); w = 0; }); } else p.attachListener( CKEDITOR.env.ie ? p : f.getDocumentElement(), "mouseup", k, c ); CKEDITOR.env.webkit && p.attachListener( f, "keydown", function (a) { switch (a.data.getKey()) { case 13: case 33: case 34: case 35: case 36: case 37: case 39: case 8: case 45: case 46: p.hasFocus && x(p); } }, null, null, -1 ); p.attachListener(p, "keydown", G(c), null, null, -1); }); c.on("setData", function () { c.unlockSelection(); CKEDITOR.env.webkit && b(); }); c.on("contentDomUnload", function () { c.unlockSelection(); }); if (CKEDITOR.env.ie9Compat) c.on("beforeDestroy", b, null, null, 9); c.on("dataReady", function () { delete c._.fakeSelection; delete c._.hiddenSelectionContainer; c.selectionChange(1); }); c.on( "loadSnapshot", function () { var a = CKEDITOR.dom.walker.nodeType(CKEDITOR.NODE_ELEMENT), b = c.editable().getLast(a); b && b.hasAttribute("data-cke-hidden-sel") && (b.remove(), CKEDITOR.env.gecko && (a = c.editable().getFirst(a)) && a.is("br") && a.getAttribute("_moz_editor_bogus_node") && a.remove()); }, null, null, 100 ); c.on("key", function (a) { if ("wysiwyg" == c.mode) { var b = c.getSelection(); if (b.isFake) { var d = D[a.data.keyCode]; if (d) return d({ editor: c, selected: b.getSelectedElement(), selection: b, keyEvent: a, }); } } }); }); if (CKEDITOR.env.webkit) CKEDITOR.on("instanceReady", function (a) { var b = a.editor; b.on( "selectionChange", function () { var a = b.editable(), c = a.getCustomData("cke-fillingChar"); c && (c.getCustomData("ready") ? (x(a), a.editor.fire("selectionCheck")) : c.setCustomData("ready", 1)); }, null, null, -1 ); b.on( "beforeSetMode", function () { x(b.editable()); }, null, null, -1 ); b.on( "getSnapshot", function (a) { a.data && (a.data = y(a.data)); }, b, null, 20 ); b.on( "toDataFormat", function (a) { a.data.dataValue = y(a.data.dataValue); }, null, null, 0 ); }); CKEDITOR.editor.prototype.selectionChange = function (a) { (a ? e : k).call(this); }; CKEDITOR.editor.prototype.getSelection = function (a) { return (!this._.savedSelection && !this._.fakeSelection) || a ? (a = this.editable()) && "wysiwyg" == this.mode && "recreating" !== this.status ? new CKEDITOR.dom.selection(a) : null : this._.savedSelection || this._.fakeSelection; }; CKEDITOR.editor.prototype.getSelectedRanges = function (a) { var b = this.getSelection(); return (b && b.getRanges(a)) || []; }; CKEDITOR.editor.prototype.lockSelection = function (a) { a = a || this.getSelection(1); return a.getType() != CKEDITOR.SELECTION_NONE ? (!a.isLocked && a.lock(), (this._.savedSelection = a), !0) : !1; }; CKEDITOR.editor.prototype.unlockSelection = function (a) { var b = this._.savedSelection; return b ? (b.unlock(a), delete this._.savedSelection, !0) : !1; }; CKEDITOR.editor.prototype.forceNextSelectionCheck = function () { delete this._.selectionPreviousPath; }; CKEDITOR.dom.document.prototype.getSelection = function () { return new CKEDITOR.dom.selection(this); }; CKEDITOR.dom.range.prototype.select = function () { var a = this.root instanceof CKEDITOR.editable ? this.root.editor.getSelection() : new CKEDITOR.dom.selection(this.root); a.selectRanges([this]); return a; }; CKEDITOR.SELECTION_NONE = 1; CKEDITOR.SELECTION_TEXT = 2; CKEDITOR.SELECTION_ELEMENT = 3; CKEDITOR.dom.selection = function (a) { if (a instanceof CKEDITOR.dom.selection) { var b = a; a = a.root; } var c = a instanceof CKEDITOR.dom.element; this.rev = b ? b.rev : M++; this.document = a instanceof CKEDITOR.dom.document ? a : a.getDocument(); this.root = c ? a : this.document.getBody(); this.isLocked = 0; this._ = { cache: {} }; if (b) return ( CKEDITOR.tools.extend(this._.cache, b._.cache), (this.isFake = b.isFake), (this.isLocked = b.isLocked), this ); a = this.getNative(); var d, e; if (a) if (a.getRangeAt) d = (e = a.rangeCount && a.getRangeAt(0)) && new CKEDITOR.dom.node(e.commonAncestorContainer); else { try { e = a.createRange(); } catch (g) {} d = e && CKEDITOR.dom.element.get( (e.item && e.item(0)) || e.parentElement() ); } if ( !d || (d.type != CKEDITOR.NODE_ELEMENT && d.type != CKEDITOR.NODE_TEXT) || (!this.root.equals(d) && !this.root.contains(d)) ) (this._.cache.type = CKEDITOR.SELECTION_NONE), (this._.cache.startElement = null), (this._.cache.selectedElement = null), (this._.cache.selectedText = ""), (this._.cache.ranges = new CKEDITOR.dom.rangeList()); return this; }; var B = { img: 1, hr: 1, li: 1, table: 1, tr: 1, td: 1, th: 1, embed: 1, object: 1, ol: 1, ul: 1, a: 1, input: 1, form: 1, select: 1, textarea: 1, button: 1, fieldset: 1, thead: 1, tfoot: 1, }; CKEDITOR.tools.extend(CKEDITOR.dom.selection, { _removeFillingCharSequenceString: y, _createFillingCharSequenceNode: g, FILLING_CHAR_SEQUENCE: w, }); CKEDITOR.dom.selection.prototype = { getNative: function () { return void 0 !== this._.cache.nativeSel ? this._.cache.nativeSel : (this._.cache.nativeSel = m ? this.document.$.selection : this.document.getWindow().$.getSelection()); }, getType: m ? function () { var a = this._.cache; if (a.type) return a.type; var b = CKEDITOR.SELECTION_NONE; try { var c = this.getNative(), d = c.type; "Text" == d && (b = CKEDITOR.SELECTION_TEXT); "Control" == d && (b = CKEDITOR.SELECTION_ELEMENT); c.createRange().parentElement() && (b = CKEDITOR.SELECTION_TEXT); } catch (e) {} return (a.type = b); } : function () { var a = this._.cache; if (a.type) return a.type; var b = CKEDITOR.SELECTION_TEXT, c = this.getNative(); if (!c || !c.rangeCount) b = CKEDITOR.SELECTION_NONE; else if (1 == c.rangeCount) { var c = c.getRangeAt(0), d = c.startContainer; d == c.endContainer && 1 == d.nodeType && 1 == c.endOffset - c.startOffset && B[d.childNodes[c.startOffset].nodeName.toLowerCase()] && (b = CKEDITOR.SELECTION_ELEMENT); } return (a.type = b); }, getRanges: (function () { var a = m ? (function () { function a(b) { return new CKEDITOR.dom.node(b).getIndex(); } var b = function (b, c) { b = b.duplicate(); b.collapse(c); var d = b.parentElement(); if (!d.hasChildNodes()) return { container: d, offset: 0 }; for ( var e = d.children, g, f, h = b.duplicate(), k = 0, l = e.length - 1, t = -1, m, n; k <= l; ) if ( ((t = Math.floor((k + l) / 2)), (g = e[t]), h.moveToElementText(g), (m = h.compareEndPoints("StartToStart", b)), 0 < m) ) l = t - 1; else if (0 > m) k = t + 1; else return { container: d, offset: a(g) }; if (-1 == t || (t == e.length - 1 && 0 > m)) { h.moveToElementText(d); h.setEndPoint("StartToStart", b); h = h.text.replace(/(\r\n|\r)/g, "\n").length; e = d.childNodes; if (!h) return ( (g = e[e.length - 1]), g.nodeType != CKEDITOR.NODE_TEXT ? { container: d, offset: e.length } : { container: g, offset: g.nodeValue.length } ); for (d = e.length; 0 < h && 0 < d; ) (f = e[--d]), f.nodeType == CKEDITOR.NODE_TEXT && ((n = f), (h -= f.nodeValue.length)); return { container: n, offset: -h }; } h.collapse(0 < m ? !0 : !1); h.setEndPoint(0 < m ? "StartToStart" : "EndToStart", b); h = h.text.replace(/(\r\n|\r)/g, "\n").length; if (!h) return { container: d, offset: a(g) + (0 < m ? 0 : 1) }; for (; 0 < h; ) try { (f = g[0 < m ? "previousSibling" : "nextSibling"]), f.nodeType == CKEDITOR.NODE_TEXT && ((h -= f.nodeValue.length), (n = f)), (g = f); } catch (q) { return { container: d, offset: a(g) }; } return { container: n, offset: 0 < m ? -h : n.nodeValue.length + h, }; }; return function () { var a = this.getNative(), c = a && a.createRange(), d = this.getType(); if (!a) return []; if (d == CKEDITOR.SELECTION_TEXT) return ( (a = new CKEDITOR.dom.range(this.root)), (d = b(c, !0)), a.setStart(new CKEDITOR.dom.node(d.container), d.offset), (d = b(c)), a.setEnd(new CKEDITOR.dom.node(d.container), d.offset), a.endContainer.getPosition(a.startContainer) & CKEDITOR.POSITION_PRECEDING && a.endOffset <= a.startContainer.getIndex() && a.collapse(), [a] ); if (d == CKEDITOR.SELECTION_ELEMENT) { for (var d = [], e = 0; e < c.length; e++) { for ( var g = c.item(e), f = g.parentNode, h = 0, a = new CKEDITOR.dom.range(this.root); h < f.childNodes.length && f.childNodes[h] != g; h++ ); a.setStart(new CKEDITOR.dom.node(f), h); a.setEnd(new CKEDITOR.dom.node(f), h + 1); d.push(a); } return d; } return []; }; })() : function () { var a = [], b, c = this.getNative(); if (!c) return a; for (var d = 0; d < c.rangeCount; d++) { var e = c.getRangeAt(d); b = new CKEDITOR.dom.range(this.root); b.setStart( new CKEDITOR.dom.node(e.startContainer), e.startOffset ); b.setEnd(new CKEDITOR.dom.node(e.endContainer), e.endOffset); a.push(b); } return a; }; return function (b) { var c = this._.cache, d = c.ranges; d || (c.ranges = d = new CKEDITOR.dom.rangeList(a.call(this))); return b ? v(new CKEDITOR.dom.rangeList(d.slice())) : d; }; })(), getStartElement: function () { var a = this._.cache; if (void 0 !== a.startElement) return a.startElement; var b; switch (this.getType()) { case CKEDITOR.SELECTION_ELEMENT: return this.getSelectedElement(); case CKEDITOR.SELECTION_TEXT: var c = this.getRanges()[0]; if (c) { if (c.collapsed) (b = c.startContainer), b.type != CKEDITOR.NODE_ELEMENT && (b = b.getParent()); else { for ( c.optimize(); (b = c.startContainer), c.startOffset == (b.getChildCount ? b.getChildCount() : b.getLength()) && !b.isBlockBoundary(); ) c.setStartAfter(b); b = c.startContainer; if (b.type != CKEDITOR.NODE_ELEMENT) return b.getParent(); if ( (b = b.getChild(c.startOffset)) && b.type == CKEDITOR.NODE_ELEMENT ) for (c = b.getFirst(); c && c.type == CKEDITOR.NODE_ELEMENT; ) (b = c), (c = c.getFirst()); else b = c.startContainer; } b = b.$; } } return (a.startElement = b ? new CKEDITOR.dom.element(b) : null); }, getSelectedElement: function () { var a = this._.cache; if (void 0 !== a.selectedElement) return a.selectedElement; var b = this, c = CKEDITOR.tools.tryThese( function () { return b.getNative().createRange().item(0); }, function () { for ( var a = b.getRanges()[0].clone(), c, d, e = 2; e && !( (c = a.getEnclosedNode()) && c.type == CKEDITOR.NODE_ELEMENT && B[c.getName()] && (d = c) ); e-- ) a.shrink(CKEDITOR.SHRINK_ELEMENT); return d && d.$; } ); return (a.selectedElement = c ? new CKEDITOR.dom.element(c) : null); }, getSelectedText: function () { var a = this._.cache; if (void 0 !== a.selectedText) return a.selectedText; var b = this.getNative(), b = m ? "Control" == b.type ? "" : b.createRange().text : b.toString(); return (a.selectedText = b); }, lock: function () { this.getRanges(); this.getStartElement(); this.getSelectedElement(); this.getSelectedText(); this._.cache.nativeSel = null; this.isLocked = 1; }, unlock: function (a) { if (this.isLocked) { if (a) var b = this.getSelectedElement(), c = this.getRanges(), e = this.isFake; this.isLocked = 0; this.reset(); a && (a = b || (c[0] && c[0].getCommonAncestor())) && a.getAscendant("body", 1) && ((a = this.root.editor) && a.plugins.tableselection && a.plugins.tableselection.isSupportedEnvironment(a) && d(c) ? f.call(this, c) : e ? this.fake(b) : b && 2 > c.length ? this.selectElement(b) : this.selectRanges(c)); } }, reset: function () { this._.cache = {}; this.isFake = 0; var a = this.root.editor; if (a && a._.fakeSelection) if (this.rev == a._.fakeSelection.rev) { delete a._.fakeSelection; var b = a._.hiddenSelectionContainer; if (b) { var c = a.checkDirty(); a.fire("lockSnapshot"); b.remove(); a.fire("unlockSnapshot"); !c && a.resetDirty(); } delete a._.hiddenSelectionContainer; } else CKEDITOR.warn("selection-fake-reset"); this.rev = M++; }, selectElement: function (a) { var b = new CKEDITOR.dom.range(this.root); b.setStartBefore(a); b.setEndAfter(a); this.selectRanges([b]); }, selectRanges: function (a) { var b = this.root.editor, c = b && b._.hiddenSelectionContainer; this.reset(); if (c) for (var c = this.root, e, h = 0; h < a.length; ++h) (e = a[h]), e.endContainer.equals(c) && (e.endOffset = Math.min(e.endOffset, c.getChildCount())); if (a.length) if (this.isLocked) { var k = CKEDITOR.document.getActive(); this.unlock(); this.selectRanges(a); this.lock(); k && !k.equals(this.root) && k.focus(); } else { var r; a: { var E, n; if ( 1 == a.length && !(n = a[0]).collapsed && (r = n.getEnclosedNode()) && r.type == CKEDITOR.NODE_ELEMENT && ((n = n.clone()), n.shrink(CKEDITOR.SHRINK_ELEMENT, !0), (E = n.getEnclosedNode()) && E.type == CKEDITOR.NODE_ELEMENT && (r = E), "false" == r.getAttribute("contenteditable")) ) break a; r = void 0; } if (r) this.fake(r); else if ( b && b.plugins.tableselection && b.plugins.tableselection.isSupportedEnvironment(b) && d(a) && !F && !a[0] ._getTableElement({ table: 1 }) .hasAttribute("data-cke-tableselection-ignored") ) f.call(this, a); else { if (m) { E = CKEDITOR.dom.walker.whitespaces(!0); r = /\ufeff|\u00a0/; n = { table: 1, tbody: 1, tr: 1 }; 1 < a.length && ((b = a[a.length - 1]), a[0].setEnd(b.endContainer, b.endOffset)); b = a[0]; a = b.collapsed; var p, C, q; if ( (c = b.getEnclosedNode()) && c.type == CKEDITOR.NODE_ELEMENT && c.getName() in B && (!c.is("a") || !c.getText()) ) try { q = c.$.createControlRange(); q.addElement(c.$); q.select(); return; } catch (v) {} if ( (b.startContainer.type == CKEDITOR.NODE_ELEMENT && b.startContainer.getName() in n) || (b.endContainer.type == CKEDITOR.NODE_ELEMENT && b.endContainer.getName() in n) ) b.shrink(CKEDITOR.NODE_ELEMENT, !0), (a = b.collapsed); q = b.createBookmark(); n = q.startNode; a || (k = q.endNode); q = b.document.$.body.createTextRange(); q.moveToElementText(n.$); q.moveStart("character", 1); k ? ((r = b.document.$.body.createTextRange()), r.moveToElementText(k.$), q.setEndPoint("EndToEnd", r), q.moveEnd("character", -1)) : ((p = n.getNext(E)), (C = n.hasAscendant("pre")), (p = !(p && p.getText && p.getText().match(r)) && (C || !n.hasPrevious() || (n.getPrevious().is && n.getPrevious().is("br")))), (C = b.document.createElement("span")), C.setHtml("\x26#65279;"), C.insertBefore(n), p && b.document.createText("").insertBefore(n)); b.setStartBefore(n); n.remove(); a ? (p ? (q.moveStart("character", -1), q.select(), b.document.$.selection.clear()) : q.select(), b.moveToPosition(C, CKEDITOR.POSITION_BEFORE_START), C.remove()) : (b.setEndBefore(k), k.remove(), q.select()); } else { k = this.getNative(); if (!k) return; this.removeAllRanges(); for (q = 0; q < a.length; q++) { if ( q < a.length - 1 && ((p = a[q]), (C = a[q + 1]), (r = p.clone()), r.setStart(p.endContainer, p.endOffset), r.setEnd(C.startContainer, C.startOffset), !r.collapsed && (r.shrink(CKEDITOR.NODE_ELEMENT, !0), (b = r.getCommonAncestor()), (r = r.getEnclosedNode()), b.isReadOnly() || (r && r.isReadOnly()))) ) { C.setStart(p.startContainer, p.startOffset); a.splice(q--, 1); continue; } b = a[q]; C = this.document.$.createRange(); b.collapsed && CKEDITOR.env.webkit && l(b) && ((r = g(this.root)), b.insertNode(r), (p = r.getNext()) && !r.getPrevious() && p.type == CKEDITOR.NODE_ELEMENT && "br" == p.getName() ? (x(this.root), b.moveToPosition(p, CKEDITOR.POSITION_BEFORE_START)) : b.moveToPosition(r, CKEDITOR.POSITION_AFTER_END)); C.setStart(b.startContainer.$, b.startOffset); try { C.setEnd(b.endContainer.$, b.endOffset); } catch (u) { if (0 <= u.toString().indexOf("NS_ERROR_ILLEGAL_VALUE")) b.collapse(1), C.setEnd(b.endContainer.$, b.endOffset); else throw u; } k.addRange(C); } } this.reset(); this.root.fire("selectionchange"); } } }, fake: function (a, b) { var c = this.root.editor; void 0 === b && a.hasAttribute("aria-label") && (b = a.getAttribute("aria-label")); this.reset(); z(c, b); var d = this._.cache, e = new CKEDITOR.dom.range(this.root); e.setStartBefore(a); e.setEndAfter(a); d.ranges = new CKEDITOR.dom.rangeList(e); d.selectedElement = d.startElement = a; d.type = CKEDITOR.SELECTION_ELEMENT; d.selectedText = d.nativeSel = null; this.isFake = 1; this.rev = M++; c._.fakeSelection = this; this.root.fire("selectionchange"); }, isHidden: function () { var a = this.getCommonAncestor(); a && a.type == CKEDITOR.NODE_TEXT && (a = a.getParent()); return !(!a || !a.data("cke-hidden-sel")); }, isInTable: function (a) { return d(this.getRanges(), a); }, isCollapsed: function () { var a = this.getRanges(); return 1 === a.length && a[0].collapsed; }, createBookmarks: function (a) { a = this.getRanges().createBookmarks(a); this.isFake && (a.isFake = 1); return a; }, createBookmarks2: function (a) { a = this.getRanges().createBookmarks2(a); this.isFake && (a.isFake = 1); return a; }, selectBookmarks: function (a) { for (var b = [], c, e = 0; e < a.length; e++) { var g = new CKEDITOR.dom.range(this.root); g.moveToBookmark(a[e]); b.push(g); } a.isFake && ((c = d(b) ? b[0]._getTableElement() : b[0].getEnclosedNode()), (c && c.type == CKEDITOR.NODE_ELEMENT) || (CKEDITOR.warn("selection-not-fake"), (a.isFake = 0))); a.isFake && !d(b) ? this.fake(c) : this.selectRanges(b); return this; }, getCommonAncestor: function () { var a = this.getRanges(); return a.length ? a[0].startContainer.getCommonAncestor(a[a.length - 1].endContainer) : null; }, scrollIntoView: function () { this.getType() != CKEDITOR.SELECTION_NONE && this.getRanges()[0].scrollIntoView(); }, removeAllRanges: function () { if (this.getType() != CKEDITOR.SELECTION_NONE) { var a = this.getNative(); try { a && a[m ? "empty" : "removeAllRanges"](); } catch (b) {} this.reset(); } }, }; })(); ("use strict"); CKEDITOR.STYLE_BLOCK = 1; CKEDITOR.STYLE_INLINE = 2; CKEDITOR.STYLE_OBJECT = 3; (function () { function a(a, b) { for (var c, d; (a = a.getParent()) && !a.equals(b); ) if (a.getAttribute("data-nostyle")) c = a; else if (!d) { var e = a.getAttribute("contentEditable"); "false" == e ? (c = a) : "true" == e && (d = 1); } return c; } function d(a, b, c, d) { return (a.getPosition(b) | d) == d && (!c.childRule || c.childRule(a)); } function b(c) { var e = c.document; if (c.collapsed) (e = M(this, e)), c.insertNode(e), c.moveToPosition(e, CKEDITOR.POSITION_BEFORE_END); else { var g = this.element, h = this._.definition, k, l = h.ignoreReadonly, n = l || h.includeReadonly; null == n && (n = c.root.getCustomData("cke_includeReadonly")); var m = CKEDITOR.dtd[g]; m || ((k = !0), (m = CKEDITOR.dtd.span)); c.enlarge(CKEDITOR.ENLARGE_INLINE, 1); c.trim(); var q = c.createBookmark(), t = q.startNode, v = q.endNode, x = t, u; if (!l) { var y = c.getCommonAncestor(), l = a(t, y), y = a(v, y); l && (x = l.getNextSourceNode(!0)); y && (v = y); } for (x.getPosition(v) == CKEDITOR.POSITION_FOLLOWING && (x = 0); x; ) { l = !1; if (x.equals(v)) (x = null), (l = !0); else { var w = x.type == CKEDITOR.NODE_ELEMENT ? x.getName() : null, y = w && "false" == x.getAttribute("contentEditable"), z = w && -1 !== CKEDITOR.tools.array.indexOf( CKEDITOR.style.unstylableElements, w ), z = w && (x.getAttribute("data-nostyle") || z); if ( (w && x.data("cke-bookmark")) || x.type === CKEDITOR.NODE_COMMENT ) { x = x.getNextSourceNode(!0); continue; } if (y && n && CKEDITOR.dtd.$block[w]) for ( var B = x, D = f(B), F = void 0, H = D.length, I = 0, B = H && new CKEDITOR.dom.range(B.getDocument()); I < H; ++I ) { var F = D[I], J = CKEDITOR.filter.instances[F.data("cke-filter")]; if (J ? J.check(this) : 1) B.selectNodeContents(F), b.call(this, B); } D = w ? (!m[w] || z ? 0 : y && !n ? 0 : d(x, v, h, N)) : 1; if (D) if ( ((F = x.getParent()), (D = h), (H = g), (I = k), !F || (!(F.getDtd() || CKEDITOR.dtd.span)[H] && !I) || (D.parentRule && !D.parentRule(F))) ) l = !0; else { if ( (u || (w && CKEDITOR.dtd.$removeEmpty[w] && (x.getPosition(v) | N) != N) || ((u = c.clone()), u.setStartBefore(x)), (w = x.type), w == CKEDITOR.NODE_TEXT || y || (w == CKEDITOR.NODE_ELEMENT && !x.getChildCount())) ) { for ( var w = x, K; (l = !w.getNext(A)) && ((K = w.getParent()), m[K.getName()]) && d(K, t, h, L); ) w = K; u.setEndAfter(w); } } else l = !0; x = x.getNextSourceNode(z || y); } if (l && u && !u.collapsed) { for ( var l = M(this, e), y = l.hasAttributes(), z = u.getCommonAncestor(), w = {}, D = {}, F = {}, H = {}, T, Q, X; l && z; ) { if (z.getName() == g) { for (T in h.attributes) !H[T] && (X = z.getAttribute(Q)) && (l.getAttribute(T) == X ? (D[T] = 1) : (H[T] = 1)); for (Q in h.styles) !F[Q] && (X = z.getStyle(Q)) && (l.getStyle(Q) == X ? (w[Q] = 1) : (F[Q] = 1)); } z = z.getParent(); } for (T in D) l.removeAttribute(T); for (Q in w) l.removeStyle(Q); y && !l.hasAttributes() && (l = null); l ? (u.extractContents().appendTo(l), u.insertNode(l), G.call(this, l), l.mergeSiblings(), CKEDITOR.env.ie || l.$.normalize()) : ((l = new CKEDITOR.dom.element("span")), u.extractContents().appendTo(l), u.insertNode(l), G.call(this, l), l.remove(!0)); u = null; } } c.moveToBookmark(q); c.shrink(CKEDITOR.SHRINK_TEXT); c.shrink(CKEDITOR.NODE_ELEMENT, !0); } } function c(a) { function b() { for ( var a = new CKEDITOR.dom.elementPath(d.getParent()), c = new CKEDITOR.dom.elementPath(n.getParent()), e = null, g = null, f = 0; f < a.elements.length; f++ ) { var h = a.elements[f]; if (h == a.block || h == a.blockLimit) break; m.checkElementRemovable(h, !0) && (e = h); } for (f = 0; f < c.elements.length; f++) { h = c.elements[f]; if (h == c.block || h == c.blockLimit) break; m.checkElementRemovable(h, !0) && (g = h); } g && n.breakParent(g); e && d.breakParent(e); } a.enlarge(CKEDITOR.ENLARGE_INLINE, 1); var c = a.createBookmark(), d = c.startNode, e = this._.definition.alwaysRemoveElement; if (a.collapsed) { for ( var g = new CKEDITOR.dom.elementPath(d.getParent(), a.root), f, h = 0, k; h < g.elements.length && (k = g.elements[h]) && k != g.block && k != g.blockLimit; h++ ) if (this.checkElementRemovable(k)) { var l; !e && a.collapsed && (a.checkBoundaryOfElement(k, CKEDITOR.END) || (l = a.checkBoundaryOfElement(k, CKEDITOR.START))) ? ((f = k), (f.match = l ? "start" : "end")) : (k.mergeSiblings(), k.is(this.element) ? z.call(this, k) : v(k, F(this)[k.getName()])); } if (f) { e = d; for (h = 0; ; h++) { k = g.elements[h]; if (k.equals(f)) break; else if (k.match) continue; else k = k.clone(); k.append(e); e = k; } e["start" == f.match ? "insertBefore" : "insertAfter"](f); } } else { var n = c.endNode, m = this; b(); for (g = d; !g.equals(n); ) (f = g.getNextSourceNode()), g.type == CKEDITOR.NODE_ELEMENT && this.checkElementRemovable(g) && (g.getName() == this.element ? z.call(this, g) : v(g, F(this)[g.getName()]), f.type == CKEDITOR.NODE_ELEMENT && f.contains(d) && (b(), (f = d.getNext()))), (g = f); } a.moveToBookmark(c); a.shrink(CKEDITOR.NODE_ELEMENT, !0); } function f(a) { var b = []; a.forEach( function (a) { if ("true" == a.getAttribute("contenteditable")) return b.push(a), !1; }, CKEDITOR.NODE_ELEMENT, !0 ); return b; } function e(a) { var b = a.getEnclosedNode() || a.getCommonAncestor(!1, !0); (a = new CKEDITOR.dom.elementPath(b, a.root).contains(this.element, 1)) && !a.isReadOnly() && w(a, this); } function k(a) { var b = a.getCommonAncestor(!0, !0); if ( (a = new CKEDITOR.dom.elementPath(b, a.root).contains(this.element, 1)) ) { var b = this._.definition, c = b.attributes; if (c) for (var d in c) a.removeAttribute(d, c[d]); if (b.styles) for (var e in b.styles) b.styles.hasOwnProperty(e) && a.removeStyle(e); } } function h(a) { var b = a.createBookmark(!0), c = a.createIterator(); c.enforceRealBlocks = !0; this._.enterMode && (c.enlargeBr = this._.enterMode != CKEDITOR.ENTER_BR); for (var d, e = a.document, g; (d = c.getNextParagraph()); ) !d.isReadOnly() && (c.activeFilter ? c.activeFilter.check(this) : 1) && ((g = M(this, e, d)), l(d, g)); a.moveToBookmark(b); } function n(a) { var b = a.createBookmark(1), c = a.createIterator(); c.enforceRealBlocks = !0; c.enlargeBr = this._.enterMode != CKEDITOR.ENTER_BR; for (var d, e; (d = c.getNextParagraph()); ) this.checkElementRemovable(d) && (d.is("pre") ? ((e = this._.enterMode == CKEDITOR.ENTER_BR ? null : a.document.createElement( this._.enterMode == CKEDITOR.ENTER_P ? "p" : "div" )) && d.copyAttributes(e), l(d, e)) : z.call(this, d)); a.moveToBookmark(b); } function l(a, b) { var c = !b; c && ((b = a.getDocument().createElement("div")), a.copyAttributes(b)); var d = b && b.is("pre"), e = a.is("pre"), f = !d && e; if (d && !e) { e = b; (f = a.getBogus()) && f.remove(); f = a.getHtml(); f = x(f, /(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g, ""); f = f.replace(/[ \t\r\n]*(]*>)[ \t\r\n]*/gi, "$1"); f = f.replace(/([ \t\n\r]+| )/g, " "); f = f.replace(/]*>/gi, "\n"); if (CKEDITOR.env.ie) { var h = a.getDocument().createElement("div"); h.append(e); e.$.outerHTML = "\x3cpre\x3e" + f + "\x3c/pre\x3e"; e.copyAttributes(h.getFirst()); e = h.getFirst().remove(); } else e.setHtml(f); b = e; } else f ? (b = y(c ? [a.getHtml()] : g(a), b)) : a.moveChildren(b); b.replace(a); if (d) { var c = b, k; (k = c.getPrevious(I)) && k.type == CKEDITOR.NODE_ELEMENT && k.is("pre") && ((d = x(k.getHtml(), /\n$/, "") + "\n\n" + x(c.getHtml(), /^\n/, "")), CKEDITOR.env.ie ? (c.$.outerHTML = "\x3cpre\x3e" + d + "\x3c/pre\x3e") : c.setHtml(d), k.remove()); } else c && m(b); } function g(a) { var b = []; x( a.getOuterHtml(), /(\S\s*)\n(?:\s|(]+data-cke-bookmark.*?\/span>))*\n(?!$)/gi, function (a, b, c) { return b + "\x3c/pre\x3e" + c + "\x3cpre\x3e"; } ).replace(/([\s\S]*?)<\/pre>/gi, function (a, c) { b.push(c); }); return b; } function x(a, b, c) { var d = "", e = ""; a = a.replace( /(^]+data-cke-bookmark.*?\/span>)|(]+data-cke-bookmark.*?\/span>$)/gi, function (a, b, c) { b && (d = b); c && (e = c); return ""; } ); return d + a.replace(b, c) + e; } function y(a, b) { var c; 1 < a.length && (c = new CKEDITOR.dom.documentFragment(b.getDocument())); for (var d = 0; d < a.length; d++) { var e = a[d], e = e.replace(/(\r\n|\r)/g, "\n"), e = x(e, /^[ \t]*\n/, ""), e = x(e, /\n$/, ""), e = x(e, /^[ \t]+|[ \t]+$/g, function (a, b) { return 1 == a.length ? "\x26nbsp;" : b ? " " + CKEDITOR.tools.repeat("\x26nbsp;", a.length - 1) : CKEDITOR.tools.repeat("\x26nbsp;", a.length - 1) + " "; }), e = e.replace(/\n/g, "\x3cbr\x3e"), e = e.replace(/[ \t]{2,}/g, function (a) { return CKEDITOR.tools.repeat("\x26nbsp;", a.length - 1) + " "; }); if (c) { var g = b.clone(); g.setHtml(e); c.append(g); } else b.setHtml(e); } return c || b; } function z(a, b) { var c = this._.definition, d = c.attributes, c = c.styles, e = F(this)[a.getName()], g = CKEDITOR.tools.isEmpty(d) && CKEDITOR.tools.isEmpty(c), f; for (f in d) if ( ("class" != f && !this._.definition.fullMatch) || a.getAttribute(f) == q(f, d[f]) ) (b && "data-" == f.slice(0, 5)) || ((g = a.hasAttribute(f)), a.removeAttribute(f)); for (var h in c) (this._.definition.fullMatch && a.getStyle(h) != q(h, c[h], !0)) || ((g = g || !!a.getStyle(h)), a.removeStyle(h)); v(a, e, D[a.getName()]); g && (this._.definition.alwaysRemoveElement ? m(a, 1) : !CKEDITOR.dtd.$block[a.getName()] || (this._.enterMode == CKEDITOR.ENTER_BR && !a.hasAttributes()) ? m(a) : a.renameNode(this._.enterMode == CKEDITOR.ENTER_P ? "p" : "div")); } function G(a) { for ( var b = F(this), c = a.getElementsByTag(this.element), d, e = c.count(); 0 <= --e; ) (d = c.getItem(e)), d.isReadOnly() || z.call(this, d, !0); for (var g in b) if (g != this.element) for (c = a.getElementsByTag(g), e = c.count() - 1; 0 <= e; e--) (d = c.getItem(e)), d.isReadOnly() || v(d, b[g]); } function v(a, b, c) { if ((b = b && b.attributes)) for (var d = 0; d < b.length; d++) { var e = b[d][0], g; if ((g = a.getAttribute(e))) { var f = b[d][1]; (null === f || (f.test && f.test(g)) || ("string" == typeof f && g == f)) && a.removeAttribute(e); } } c || m(a); } function m(a, b) { if (!a.hasAttributes() || b) if (CKEDITOR.dtd.$block[a.getName()]) { var c = a.getPrevious(I), d = a.getNext(I); !c || (c.type != CKEDITOR.NODE_TEXT && c.isBlockBoundary({ br: 1 })) || a.append("br", 1); !d || (d.type != CKEDITOR.NODE_TEXT && d.isBlockBoundary({ br: 1 })) || a.append("br"); a.remove(!0); } else (c = a.getFirst()), (d = a.getLast()), a.remove(!0), c && (c.type == CKEDITOR.NODE_ELEMENT && c.mergeSiblings(), d && !c.equals(d) && d.type == CKEDITOR.NODE_ELEMENT && d.mergeSiblings()); } function M(a, b, c) { var d; d = a.element; "*" == d && (d = "span"); d = new CKEDITOR.dom.element(d, b); c && c.copyAttributes(d); d = w(d, a); b.getCustomData("doc_processing_style") && d.hasAttribute("id") ? d.removeAttribute("id") : b.setCustomData("doc_processing_style", 1); return d; } function w(a, b) { var c = b._.definition, d = c.attributes, c = CKEDITOR.style.getStyleText(c); if (d) for (var e in d) a.setAttribute(e, d[e]); c && a.setAttribute("style", c); a.getDocument().removeCustomData("doc_processing_style"); return a; } function J(a, b) { for (var c in a) a[c] = a[c].replace(H, function (a, c) { return b[c]; }); } function F(a) { if (a._.overrides) return a._.overrides; var b = (a._.overrides = {}), c = a._.definition.overrides; if (c) { CKEDITOR.tools.isArray(c) || (c = [c]); for (var d = 0; d < c.length; d++) { var e = c[d], g, f; "string" == typeof e ? (g = e.toLowerCase()) : ((g = e.element ? e.element.toLowerCase() : a.element), (f = e.attributes)); e = b[g] || (b[g] = {}); if (f) { var e = (e.attributes = e.attributes || []), h; for (h in f) e.push([h.toLowerCase(), f[h]]); } } } return b; } function q(a, b, c) { var d = new CKEDITOR.dom.element("span"); d[c ? "setStyle" : "setAttribute"](a, b); return d[c ? "getStyle" : "getAttribute"](a); } function u(a, b) { function c(a, b) { return "font-family" == b.toLowerCase() ? a.replace(/["']/g, "") : a; } "string" == typeof a && (a = CKEDITOR.tools.parseCssText(a)); "string" == typeof b && (b = CKEDITOR.tools.parseCssText(b, !0)); for (var d in a) if ( !(d in b) || (c(b[d], d) != c(a[d], d) && "inherit" != a[d] && "inherit" != b[d]) ) return !1; return !0; } function K(a, b, c) { var d = a.getRanges(); b = b ? this.removeFromRange : this.applyToRange; for (var e, g = d.createIterator(); (e = g.getNextRange()); ) b.call(this, e, c); a.selectRanges(d); } var D = { address: 1, div: 1, h1: 1, h2: 1, h3: 1, h4: 1, h5: 1, h6: 1, p: 1, pre: 1, section: 1, header: 1, footer: 1, nav: 1, article: 1, aside: 1, figure: 1, dialog: 1, hgroup: 1, time: 1, meter: 1, menu: 1, command: 1, keygen: 1, output: 1, progress: 1, details: 1, datagrid: 1, datalist: 1, }, B = { a: 1, blockquote: 1, embed: 1, hr: 1, img: 1, li: 1, object: 1, ol: 1, table: 1, td: 1, tr: 1, th: 1, ul: 1, dl: 1, dt: 1, dd: 1, form: 1, audio: 1, video: 1, }, t = /\s*(?:;\s*|$)/, H = /#\((.+?)\)/g, A = CKEDITOR.dom.walker.bookmark(0, 1), I = CKEDITOR.dom.walker.whitespaces(1); CKEDITOR.style = function (a, b) { if ("string" == typeof a.type) return new CKEDITOR.style.customHandlers[a.type](a); var c = a.attributes; c && c.style && ((a.styles = CKEDITOR.tools.extend( {}, a.styles, CKEDITOR.tools.parseCssText(c.style) )), delete c.style); b && ((a = CKEDITOR.tools.clone(a)), J(a.attributes, b), J(a.styles, b)); c = this.element = a.element ? "string" == typeof a.element ? a.element.toLowerCase() : a.element : "*"; this.type = a.type || (D[c] ? CKEDITOR.STYLE_BLOCK : B[c] ? CKEDITOR.STYLE_OBJECT : CKEDITOR.STYLE_INLINE); "object" == typeof this.element && (this.type = CKEDITOR.STYLE_OBJECT); this._ = { definition: a }; }; CKEDITOR.style.prototype = { apply: function (a) { if (a instanceof CKEDITOR.dom.document) return K.call(this, a.getSelection()); if (this.checkApplicable(a.elementPath(), a)) { var b = this._.enterMode; b || (this._.enterMode = a.activeEnterMode); K.call(this, a.getSelection(), 0, a); this._.enterMode = b; } }, remove: function (a) { if (a instanceof CKEDITOR.dom.document) return K.call(this, a.getSelection(), 1); if (this.checkApplicable(a.elementPath(), a)) { var b = this._.enterMode; b || (this._.enterMode = a.activeEnterMode); K.call(this, a.getSelection(), 1, a); this._.enterMode = b; } }, applyToRange: function (a) { this.applyToRange = this.type == CKEDITOR.STYLE_INLINE ? b : this.type == CKEDITOR.STYLE_BLOCK ? h : this.type == CKEDITOR.STYLE_OBJECT ? e : null; return this.applyToRange(a); }, removeFromRange: function (a) { this.removeFromRange = this.type == CKEDITOR.STYLE_INLINE ? c : this.type == CKEDITOR.STYLE_BLOCK ? n : this.type == CKEDITOR.STYLE_OBJECT ? k : null; return this.removeFromRange(a); }, applyToObject: function (a) { w(a, this); }, checkActive: function (a, b) { switch (this.type) { case CKEDITOR.STYLE_BLOCK: return this.checkElementRemovable(a.block || a.blockLimit, !0, b); case CKEDITOR.STYLE_OBJECT: case CKEDITOR.STYLE_INLINE: for (var c = a.elements, d = 0, e; d < c.length; d++) if ( ((e = c[d]), this.type != CKEDITOR.STYLE_INLINE || (e != a.block && e != a.blockLimit)) ) { if (this.type == CKEDITOR.STYLE_OBJECT) { var g = e.getName(); if ( !("string" == typeof this.element ? g == this.element : g in this.element) ) continue; } if (this.checkElementRemovable(e, !0, b)) return !0; } } return !1; }, checkApplicable: function (a, b, c) { b && b instanceof CKEDITOR.filter && (c = b); if (c && !c.check(this)) return !1; switch (this.type) { case CKEDITOR.STYLE_OBJECT: return !!a.contains(this.element); case CKEDITOR.STYLE_BLOCK: return !!a.blockLimit.getDtd()[this.element]; } return !0; }, checkElementMatch: function (a, b) { var c = this._.definition; if (!a || (!c.ignoreReadonly && a.isReadOnly())) return !1; var d = a.getName(); if ( "string" == typeof this.element ? d == this.element : d in this.element ) { if (!b && !a.hasAttributes()) return !0; if ((d = c._AC)) c = d; else { var d = {}, e = 0, g = c.attributes; if (g) for (var f in g) e++, (d[f] = g[f]); if ((f = CKEDITOR.style.getStyleText(c))) d.style || e++, (d.style = f); d._length = e; c = c._AC = d; } if (c._length) { for (var h in c) if ("_length" != h) if ( ((d = a.getAttribute(h) || ""), "style" == h ? u(c[h], d) : c[h] == d) ) { if (!b) return !0; } else if (b) return !1; if (b) return !0; } else return !0; } return !1; }, checkElementRemovable: function (a, b, c) { if (this.checkElementMatch(a, b, c)) return !0; if ((b = F(this)[a.getName()])) { var d; if (!(b = b.attributes)) return !0; for (c = 0; c < b.length; c++) if (((d = b[c][0]), (d = a.getAttribute(d)))) { var e = b[c][1]; if (null === e) return !0; if ("string" == typeof e) { if (d == e) return !0; } else if (e.test(d)) return !0; } } return !1; }, buildPreview: function (a) { var b = this._.definition, c = [], d = b.element; "bdo" == d && (d = "span"); var c = ["\x3c", d], e = b.attributes; if (e) for (var g in e) c.push(" ", g, '\x3d"', e[g], '"'); (e = CKEDITOR.style.getStyleText(b)) && c.push(' style\x3d"', e, '"'); c.push("\x3e", a || b.name, "\x3c/", d, "\x3e"); return c.join(""); }, getDefinition: function () { return this._.definition; }, }; CKEDITOR.style.getStyleText = function (a) { var b = a._ST; if (b) return b; var b = a.styles, c = (a.attributes && a.attributes.style) || "", d = ""; c.length && (c = c.replace(t, ";")); for (var e in b) { var g = b[e], f = (e + ":" + g).replace(t, ";"); "inherit" == g ? (d += f) : (c += f); } c.length && (c = CKEDITOR.tools.normalizeCssText(c, !0)); return (a._ST = c + d); }; CKEDITOR.style.customHandlers = {}; CKEDITOR.style.unstylableElements = []; CKEDITOR.style.addCustomHandler = function (a) { var b = function (a) { this._ = { definition: a }; this.setup && this.setup(a); }; b.prototype = CKEDITOR.tools.extend( CKEDITOR.tools.prototypedCopy(CKEDITOR.style.prototype), { assignedTo: CKEDITOR.STYLE_OBJECT }, a, !0 ); return (this.customHandlers[a.type] = b); }; var N = CKEDITOR.POSITION_PRECEDING | CKEDITOR.POSITION_IDENTICAL | CKEDITOR.POSITION_IS_CONTAINED, L = CKEDITOR.POSITION_FOLLOWING | CKEDITOR.POSITION_IDENTICAL | CKEDITOR.POSITION_IS_CONTAINED; })(); CKEDITOR.styleCommand = function (a, d) { this.requiredContent = this.allowedContent = this.style = a; CKEDITOR.tools.extend(this, d, !0); }; CKEDITOR.styleCommand.prototype.exec = function (a) { a.focus(); this.state == CKEDITOR.TRISTATE_OFF ? a.applyStyle(this.style) : this.state == CKEDITOR.TRISTATE_ON && a.removeStyle(this.style); }; CKEDITOR.stylesSet = new CKEDITOR.resourceManager("", "stylesSet"); CKEDITOR.addStylesSet = CKEDITOR.tools.bind( CKEDITOR.stylesSet.add, CKEDITOR.stylesSet ); CKEDITOR.loadStylesSet = function (a, d, b) { CKEDITOR.stylesSet.addExternal(a, d, ""); CKEDITOR.stylesSet.load(a, b); }; CKEDITOR.tools.extend(CKEDITOR.editor.prototype, { attachStyleStateChange: function (a, d) { var b = this._.styleStateChangeCallbacks; b || ((b = this._.styleStateChangeCallbacks = []), this.on("selectionChange", function (a) { for (var d = 0; d < b.length; d++) { var e = b[d], k = e.style.checkActive(a.data.path, this) ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF; e.fn.call(this, k); } })); b.push({ style: a, fn: d }); }, applyStyle: function (a) { a.apply(this); }, removeStyle: function (a) { a.remove(this); }, getStylesSet: function (a) { if (this._.stylesDefinitions) a(this._.stylesDefinitions); else { var d = this, b = d.config.stylesCombo_stylesSet || d.config.stylesSet; if (!1 === b) a(null); else if (b instanceof Array) (d._.stylesDefinitions = b), a(b); else { b || (b = "default"); var b = b.split(":"), c = b[0]; CKEDITOR.stylesSet.addExternal( c, b[1] ? b.slice(1).join(":") : CKEDITOR.getUrl("styles.js"), "" ); CKEDITOR.stylesSet.load(c, function (b) { d._.stylesDefinitions = b[c]; a(d._.stylesDefinitions); }); } } }, }); (function () { if (window.Promise) CKEDITOR.tools.promise = Promise; else { var a = CKEDITOR.getUrl("vendor/promise.js"); if ( "function" === typeof window.define && window.define.amd && "function" === typeof window.require ) return window.require([a], function (a) { CKEDITOR.tools.promise = a; }); CKEDITOR.scriptLoader.load(a, function (d) { if (!d) return CKEDITOR.error("no-vendor-lib", { path: a }); if ("undefined" !== typeof window.ES6Promise) return (CKEDITOR.tools.promise = ES6Promise); }); } })(); (function () { function a(a, f, e) { a.once( "selectionCheck", function (a) { if (!d) { var c = a.data.getRanges()[0]; e.equals(c) ? a.cancel() : f.equals(c) && (b = !0); } }, null, null, -1 ); } var d = !0, b = !1; CKEDITOR.dom.selection.setupEditorOptimization = function (a) { a.on("selectionCheck", function (a) { a.data && !b && a.data.optimizeInElementEnds(); b = !1; }); a.on("contentDom", function () { var b = a.editable(); b && (b.attachListener( b, "keydown", function (a) { this._.shiftPressed = a.data.$.shiftKey; }, this ), b.attachListener( b, "keyup", function (a) { this._.shiftPressed = a.data.$.shiftKey; }, this )); }); }; CKEDITOR.dom.selection.prototype.optimizeInElementEnds = function () { var b = this.getRanges()[0], f = this.root.editor, e; if ( this.root.editor._.shiftPressed || this.isFake || b.isCollapsed || b.startContainer.equals(b.endContainer) || (b.endContainer.is ? b.endContainer.is("li") : b.endContainer.getParent().is && b.endContainer.getParent().is("li")) ) e = !1; else if (0 === b.endOffset) e = !0; else { e = b.startContainer.type === CKEDITOR.NODE_TEXT; var k = b.endContainer.type === CKEDITOR.NODE_TEXT, h = e ? b.startContainer.getLength() : b.startContainer.getChildCount(); e = b.startOffset === h || e ^ k; } e && ((e = b.clone()), b.shrink(CKEDITOR.SHRINK_TEXT, !1, { skipBogus: !CKEDITOR.env.webkit }), (d = !1), a(f, b, e), b.select(), (d = !0)); }; })(); (function () { function a(a, c) { if (b(a)) a = Math.round(c * (parseFloat(a) / 100)); else if ( ("string" === typeof a && a.match(/^\d+$/gm)) || ("string" === typeof a && a.match(/^\d+(?:deg)?$/gm)) ) a = parseInt(a, 10); return a; } function d(a, c) { b(a) ? (a = c * (parseFloat(a) / 100)) : "string" === typeof a && a.match(/^\d?\.\d+/gm) && (a = parseFloat(a)); return a; } function b(a) { return "string" === typeof a && a.match(/^((\d*\.\d+)|(\d+))%{1}$/gm); } function c(a, b, c) { return !isNaN(a) && a >= b && a <= c; } function f(a) { a = a.toString(16); return 1 == a.length ? "0" + a : a; } CKEDITOR.tools.color = CKEDITOR.tools.createClass({ $: function (a, b) { this._.initialColorCode = a; this._.defaultValue = b; this._.parseInput(a); }, proto: { getHex: function () { if (!this._.isValidColor) return this._.defaultValue; var a = this._.blendAlphaColor( this._.red, this._.green, this._.blue, this._.alpha ); return this._.formatHexString(a[0], a[1], a[2]); }, getHexWithAlpha: function () { if (!this._.isValidColor) return this._.defaultValue; var a = Math.round( this._.alpha * CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE ); return this._.formatHexString( this._.red, this._.green, this._.blue, a ); }, getRgb: function () { if (!this._.isValidColor) return this._.defaultValue; var a = this._.blendAlphaColor( this._.red, this._.green, this._.blue, this._.alpha ); return this._.formatRgbString("rgb", a[0], a[1], a[2]); }, getRgba: function () { return this._.isValidColor ? this._.formatRgbString( "rgba", this._.red, this._.green, this._.blue, this._.alpha ) : this._.defaultValue; }, getHsl: function () { var a = 0 === this._.alpha || 1 === this._.alpha; if (!this._.isValidColor) return this._.defaultValue; this._.type === CKEDITOR.tools.color.TYPE_HSL && a ? (a = [this._.hue, this._.saturation, this._.lightness]) : ((a = this._.blendAlphaColor( this._.red, this._.green, this._.blue, this._.alpha )), (a = this._.rgbToHsl(a[0], a[1], a[2]))); return this._.formatHslString("hsl", a[0], a[1], a[2]); }, getHsla: function () { var a; if (!this._.isValidColor) return this._.defaultValue; a = this._.type === CKEDITOR.tools.color.TYPE_HSL ? [this._.hue, this._.saturation, this._.lightness] : this._.rgbToHsl(this._.red, this._.green, this._.blue); return this._.formatHslString("hsla", a[0], a[1], a[2], this._.alpha); }, getInitialValue: function () { return this._.initialColorCode; }, }, _: { initialColorCode: "", isValidColor: !0, type: 0, hue: 0, saturation: 0, lightness: 0, red: 0, green: 0, blue: 0, alpha: 1, blendAlphaColor: function (a, b, c, d) { return CKEDITOR.tools.array.map([a, b, c], function (a) { return Math.round( CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE - d * (CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE - a) ); }); }, formatHexString: function (a, b, c, d) { a = "#" + f(a) + f(b) + f(c); void 0 !== d && (a += f(d)); return a.toUpperCase(); }, formatRgbString: function (a, b, c, d, f) { b = [b, c, d]; void 0 !== f && b.push(f); return a + "(" + b.join(",") + ")"; }, formatHslString: function (a, b, c, d, f) { return ( a + "(" + b + "," + c + "%," + d + "%" + (void 0 !== f ? "," + f : "") + ")" ); }, parseInput: function (a) { if ("string" !== typeof a) this._.isValidColor = !1; else { a = CKEDITOR.tools.trim(a); var b = this._.matchStringToNamedColor(a); b && (a = b); var b = this._.extractColorChannelsFromHex(a), c = this._.extractColorChannelsFromRgba(a); a = this._.extractColorChannelsFromHsla(a); (a = b || c || a) ? ((this._.type = a.type), (this._.red = a.red), (this._.green = a.green), (this._.blue = a.blue), (this._.alpha = a.alpha), a.type === CKEDITOR.tools.color.TYPE_HSL && ((this._.hue = a.hue), (this._.saturation = a.saturation), (this._.lightness = a.lightness))) : (this._.isValidColor = !1); } }, matchStringToNamedColor: function (a) { return CKEDITOR.tools.color.namedColors[a.toLowerCase()] || null; }, extractColorChannelsFromHex: function (a) { -1 === a.indexOf("#") && (a = "#" + a); a.match(CKEDITOR.tools.color.hex3CharsRegExp) && (a = this._.hex3ToHex6(a)); a.match(CKEDITOR.tools.color.hex4CharsRegExp) && (a = this._.hex4ToHex8(a)); if ( !a.match(CKEDITOR.tools.color.hex6CharsRegExp) && !a.match(CKEDITOR.tools.color.hex8CharsRegExp) ) return null; a = a.split(""); var b = 1; a[7] && a[8] && ((b = parseInt(a[7] + a[8], 16)), (b /= CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE), (b = Number(b.toFixed(1)))); return { type: CKEDITOR.tools.color.TYPE_RGB, red: parseInt(a[1] + a[2], 16), green: parseInt(a[3] + a[4], 16), blue: parseInt(a[5] + a[6], 16), alpha: b, }; }, extractColorChannelsFromRgba: function (b) { var c = this._.extractColorChannelsByPattern( b, CKEDITOR.tools.color.rgbRegExp ); if (!c || 3 > c.length || 4 < c.length) return null; var f = 4 === c.length; b = a(c[0], CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE); var n = a(c[1], CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE), l = a(c[2], CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE), g = 1; f && (g = d(c[3], CKEDITOR.tools.color.MAX_ALPHA_CHANNEL_VALUE)); c = { type: CKEDITOR.tools.color.TYPE_RGB, red: b, green: n, blue: l, alpha: g, }; return this._.areColorChannelsValid(b, n, l, g) ? c : null; }, extractColorChannelsFromHsla: function (b) { var c = this._.extractColorChannelsByPattern( b, CKEDITOR.tools.color.hslRegExp ); if (!c || 3 > c.length || 4 < c.length) return null; var f = 4 === c.length, n = a(c[0], CKEDITOR.tools.color.MAX_HUE_CHANNEL_VALUE), l = d( c[1], CKEDITOR.tools.color.MAX_SATURATION_LIGHTNESS_CHANNEL_VALUE ), g = d( c[2], CKEDITOR.tools.color.MAX_SATURATION_LIGHTNESS_CHANNEL_VALUE ), x = 1; b = this._.hslToRgb(n, l, g); f && (x = d(c[3], CKEDITOR.tools.color.MAX_ALPHA_CHANNEL_VALUE)); b.push(x); c = { type: CKEDITOR.tools.color.TYPE_HSL, red: b[0], green: b[1], blue: b[2], alpha: b[3], hue: n, saturation: Math.round(100 * l), lightness: Math.round(100 * g), }; return this._.areColorChannelsValid(b[0], b[1], b[2], b[3]) ? c : null; }, hex3ToHex6: function (a) { a = a.split(""); return "#" + a[1] + a[1] + a[2] + a[2] + a[3] + a[3]; }, hex4ToHex8: function (a) { return ( this._.hex3ToHex6(a.substr(0, 4)) + CKEDITOR.tools.repeat(a[4], 2) ); }, extractColorChannelsByPattern: function (a, b) { var c = a.match(b); if (!c) return null; var d = -1 === c[1].indexOf(",") ? /\s/ : ",", d = c[1].split(d), d = CKEDITOR.tools.array.reduce( d, function (a, b) { var c = CKEDITOR.tools.trim(b); return 0 === c.length ? a : a.concat([c]); }, [] ); c[2] && ((c = CKEDITOR.tools.trim(c[2].replace(/[\/,]/, ""))), d.push(c)); return d; }, areColorChannelsValid: function (a, b, d, f) { return ( c(a, 0, CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE) && c(b, 0, CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE) && c(d, 0, CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE) && c(f, 0, CKEDITOR.tools.color.MAX_ALPHA_CHANNEL_VALUE) ); }, hslToRgb: function (a, b, c) { var d = function (d) { var g = (d + a / 30) % 12; d = b * Math.min(c, 1 - c); g = Math.min(g - 3, 9 - g, 1); g = Math.max(-1, g); return Math.round( (c - d * g) * CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE ); }; return [d(0), d(8), d(4)]; }, rgbToHsl: function (a, b, c) { a /= CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE; b /= CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE; var d = c / CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE, f = Math.max(a, b, d), g = Math.min(a, b, d); c = f - g; var x = 0; switch (f) { case a: x = ((b - d) / c) % 6; break; case b: x = (d - a) / c + 2; break; case d: x = (a - b) / c + 4; } a = 0 === c ? 0 : 60 * x; b = (f + g) / 2; f = 0; 1 !== b && 0 !== b && (f = c / (1 - Math.abs(2 * b - 1))); a = Math.round(a); f = Math.round(100 * f); b = Math.round(100 * b); return [a, f, b]; }, }, statics: { TYPE_RGB: 1, TYPE_HSL: 2, MAX_RGB_CHANNEL_VALUE: 255, MAX_ALPHA_CHANNEL_VALUE: 1, MAX_HUE_CHANNEL_VALUE: 360, MAX_SATURATION_LIGHTNESS_CHANNEL_VALUE: 1, hex3CharsRegExp: /#([0-9a-f]{3}$)/gim, hex4CharsRegExp: /#([0-9a-f]{4}$)/gim, hex6CharsRegExp: /#([0-9a-f]{6}$)/gim, hex8CharsRegExp: /#([0-9a-f]{8}$)/gim, rgbRegExp: /rgba?\(([.,\d\s%]*)(\s*\/\s*[\d.%]+)?\s*\)/i, hslRegExp: /hsla?\((\s*(?:[.\d]+(?:deg)?)(?:\s*,?\s*[.\d]+%){2})((?:(?:\s*\/\s*)|(?:\s*,\s*))[\d.]+%?)?\s*\)/i, namedColors: { aliceblue: "#F0F8FF", antiquewhite: "#FAEBD7", aqua: "#00FFFF", aquamarine: "#7FFFD4", azure: "#F0FFFF", beige: "#F5F5DC", bisque: "#FFE4C4", black: "#000000", blanchedalmond: "#FFEBCD", blue: "#0000FF", blueviolet: "#8A2BE2", brown: "#A52A2A", burlywood: "#DEB887", cadetblue: "#5F9EA0", chartreuse: "#7FFF00", chocolate: "#D2691E", coral: "#FF7F50", cornflowerblue: "#6495ED", cornsilk: "#FFF8DC", crimson: "#DC143C", cyan: "#00FFFF", darkblue: "#00008B", darkcyan: "#008B8B", darkgoldenrod: "#B8860B", darkgray: "#A9A9A9", darkgreen: "#006400", darkgrey: "#A9A9A9", darkkhaki: "#BDB76B", darkmagenta: "#8B008B", darkolivegreen: "#556B2F", darkorange: "#FF8C00", darkorchid: "#9932CC", darkred: "#8B0000", darksalmon: "#E9967A", darkseagreen: "#8FBC8F", darkslateblue: "#483D8B", darkslategray: "#2F4F4F", darkslategrey: "#2F4F4F", darkturquoise: "#00CED1", darkviolet: "#9400D3", deeppink: "#FF1493", deepskyblue: "#00BFFF", dimgray: "#696969", dimgrey: "#696969", dodgerblue: "#1E90FF", firebrick: "#B22222", floralwhite: "#FFFAF0", forestgreen: "#228B22", fuchsia: "#FF00FF", gainsboro: "#DCDCDC", ghostwhite: "#F8F8FF", gold: "#FFD700", goldenrod: "#DAA520", gray: "#808080", green: "#008000", greenyellow: "#ADFF2F", grey: "#808080", honeydew: "#F0FFF0", hotpink: "#FF69B4", indianred: "#CD5C5C", indigo: "#4B0082", ivory: "#FFFFF0", khaki: "#F0E68C", lavender: "#E6E6FA", lavenderblush: "#FFF0F5", lawngreen: "#7CFC00", lemonchiffon: "#FFFACD", lightblue: "#ADD8E6", lightcoral: "#F08080", lightcyan: "#E0FFFF", lightgoldenrodyellow: "#FAFAD2", lightgray: "#D3D3D3", lightgreen: "#90EE90", lightgrey: "#D3D3D3", lightpink: "#FFB6C1", lightsalmon: "#FFA07A", lightseagreen: "#20B2AA", lightskyblue: "#87CEFA", lightslategray: "#778899", lightslategrey: "#778899", lightsteelblue: "#B0C4DE", lightyellow: "#FFFFE0", lime: "#00FF00", limegreen: "#32CD32", linen: "#FAF0E6", magenta: "#FF00FF", maroon: "#800000", mediumaquamarine: "#66CDAA", mediumblue: "#0000CD", mediumorchid: "#BA55D3", mediumpurple: "#9370DB", mediumseagreen: "#3CB371", mediumslateblue: "#7B68EE", mediumspringgreen: "#00FA9A", mediumturquoise: "#48D1CC", mediumvioletred: "#C71585", midnightblue: "#191970", mintcream: "#F5FFFA", mistyrose: "#FFE4E1", moccasin: "#FFE4B5", navajowhite: "#FFDEAD", navy: "#000080", oldlace: "#FDF5E6", olive: "#808000", olivedrab: "#6B8E23", orange: "#FFA500", orangered: "#FF4500", orchid: "#DA70D6", palegoldenrod: "#EEE8AA", palegreen: "#98FB98", paleturquoise: "#AFEEEE", palevioletred: "#DB7093", papayawhip: "#FFEFD5", peachpuff: "#FFDAB9", peru: "#CD853F", pink: "#FFC0CB", plum: "#DDA0DD", powderblue: "#B0E0E6", purple: "#800080", rebeccapurple: "#663399", red: "#FF0000", rosybrown: "#BC8F8F", royalblue: "#4169E1", saddlebrown: "#8B4513", salmon: "#FA8072", sandybrown: "#F4A460", seagreen: "#2E8B57", seashell: "#FFF5EE", sienna: "#A0522D", silver: "#C0C0C0", skyblue: "#87CEEB", slateblue: "#6A5ACD", slategray: "#708090", slategrey: "#708090", snow: "#FFFAFA", springgreen: "#00FF7F", steelblue: "#4682B4", tan: "#D2B48C", teal: "#008080", thistle: "#D8BFD8", tomato: "#FF6347", turquoise: "#40E0D0", violet: "#EE82EE", windowtext: "windowtext", wheat: "#F5DEB3", white: "#FFFFFF", whitesmoke: "#F5F5F5", yellow: "#FFFF00", yellowgreen: "#9ACD32", }, }, }); CKEDITOR.tools.style.parse._colors = CKEDITOR.tools.color.namedColors; })(); CKEDITOR.dom.comment = function (a, d) { "string" == typeof a && (a = (d ? d.$ : document).createComment(a)); CKEDITOR.dom.domObject.call(this, a); }; CKEDITOR.dom.comment.prototype = new CKEDITOR.dom.node(); CKEDITOR.tools.extend(CKEDITOR.dom.comment.prototype, { type: CKEDITOR.NODE_COMMENT, getOuterHtml: function () { return "\x3c!--" + this.$.nodeValue + "--\x3e"; }, }); ("use strict"); (function () { var a = {}, d = {}, b; for (b in CKEDITOR.dtd.$blockLimit) b in CKEDITOR.dtd.$list || (a[b] = 1); for (b in CKEDITOR.dtd.$block) b in CKEDITOR.dtd.$blockLimit || b in CKEDITOR.dtd.$empty || (d[b] = 1); CKEDITOR.dom.elementPath = function (b, f) { var e = null, k = null, h = [], n = b, l; f = f || b.getDocument().getBody(); n || (n = f); do if (n.type == CKEDITOR.NODE_ELEMENT) { h.push(n); if ( !this.lastElement && ((this.lastElement = n), n.is(CKEDITOR.dtd.$object) || "false" == n.getAttribute("contenteditable")) ) continue; if (n.equals(f)) break; if ( !k && ((l = n.getName()), "true" == n.getAttribute("contenteditable") ? (k = n) : !e && d[l] && (e = n), a[l]) ) { if ((l = !e && "div" == l)) { a: { l = n.getChildren(); for (var g = 0, x = l.count(); g < x; g++) { var y = l.getItem(g); if ( y.type == CKEDITOR.NODE_ELEMENT && CKEDITOR.dtd.$block[y.getName()] ) { l = !0; break a; } } l = !1; } l = !l; } l ? (e = n) : (k = n); } } while ((n = n.getParent())); k || (k = f); this.block = e; this.blockLimit = k; this.root = f; this.elements = h; }; })(); CKEDITOR.dom.elementPath.prototype = { compare: function (a) { var d = this.elements; a = a && a.elements; if (!a || d.length != a.length) return !1; for (var b = 0; b < d.length; b++) if (!d[b].equals(a[b])) return !1; return !0; }, contains: function (a, d, b) { var c = 0, f; "string" == typeof a && (f = function (b) { return b.getName() == a; }); a instanceof CKEDITOR.dom.element ? (f = function (b) { return b.equals(a); }) : CKEDITOR.tools.isArray(a) ? (f = function (b) { return -1 < CKEDITOR.tools.indexOf(a, b.getName()); }) : "function" == typeof a ? (f = a) : "object" == typeof a && (f = function (b) { return b.getName() in a; }); var e = this.elements, k = e.length; d && (b ? (c += 1) : --k); b && ((e = Array.prototype.slice.call(e, 0)), e.reverse()); for (; c < k; c++) if (f(e[c])) return e[c]; return null; }, isContextFor: function (a) { var d; return a in CKEDITOR.dtd.$block ? ((d = this.contains(CKEDITOR.dtd.$intermediate) || (this.root.equals(this.block) && this.block) || this.blockLimit), !!d.getDtd()[a]) : !0; }, direction: function () { return (this.block || this.blockLimit || this.root).getDirection(1); }, }; CKEDITOR.dom.text = function (a, d) { "string" == typeof a && (a = (d ? d.$ : document).createTextNode(a)); this.$ = a; }; CKEDITOR.dom.text.prototype = new CKEDITOR.dom.node(); CKEDITOR.tools.extend(CKEDITOR.dom.text.prototype, { type: CKEDITOR.NODE_TEXT, getLength: function () { return this.$.nodeValue.length; }, getText: function () { return this.$.nodeValue; }, setText: function (a) { this.$.nodeValue = a; }, isEmpty: function (a) { var d = this.getText(); a && (d = CKEDITOR.tools.trim(d)); return !d || d === CKEDITOR.dom.selection.FILLING_CHAR_SEQUENCE; }, split: function (a) { var d = this.$.parentNode, b = d.childNodes.length, c = this.getLength(), f = this.getDocument(), e = new CKEDITOR.dom.text(this.$.splitText(a), f); d.childNodes.length == b && (a >= c ? ((e = f.createText("")), e.insertAfter(this)) : ((a = f.createText("")), a.insertAfter(e), a.remove())); return e; }, substring: function (a, d) { return "number" != typeof d ? this.$.nodeValue.substr(a) : this.$.nodeValue.substring(a, d); }, }); (function () { function a(a, c, d) { var e = a.serializable, k = c[d ? "endContainer" : "startContainer"], h = d ? "endOffset" : "startOffset", n = e ? c.document.getById(a.startNode) : a.startNode; a = e ? c.document.getById(a.endNode) : a.endNode; k.equals(n.getPrevious()) ? ((c.startOffset = c.startOffset - k.getLength() - a.getPrevious().getLength()), (k = a.getNext())) : k.equals(a.getPrevious()) && ((c.startOffset -= k.getLength()), (k = a.getNext())); k.equals(n.getParent()) && c[h]++; k.equals(a.getParent()) && c[h]++; c[d ? "endContainer" : "startContainer"] = k; return c; } CKEDITOR.dom.rangeList = function (a) { if (a instanceof CKEDITOR.dom.rangeList) return a; a ? a instanceof CKEDITOR.dom.range && (a = [a]) : (a = []); return CKEDITOR.tools.extend(a, d); }; var d = { createIterator: function () { var a = this, c = CKEDITOR.dom.walker.bookmark(), d = [], e; return { getNextRange: function (k) { e = void 0 === e ? 0 : e + 1; var h = a[e]; if (h && 1 < a.length) { if (!e) for (var n = a.length - 1; 0 <= n; n--) d.unshift(a[n].createBookmark(!0)); if (k) for (var l = 0; a[e + l + 1]; ) { var g = h.document; k = 0; n = g.getById(d[l].endNode); for (g = g.getById(d[l + 1].startNode); ; ) { n = n.getNextSourceNode(!1); if (g.equals(n)) k = 1; else if ( c(n) || (n.type == CKEDITOR.NODE_ELEMENT && n.isBlockBoundary()) ) continue; break; } if (!k) break; l++; } for (h.moveToBookmark(d.shift()); l--; ) (n = a[++e]), n.moveToBookmark(d.shift()), h.setEnd(n.endContainer, n.endOffset); } return h; }, }; }, createBookmarks: function (b) { for (var c = [], d, e = 0; e < this.length; e++) { c.push((d = this[e].createBookmark(b, !0))); for (var k = e + 1; k < this.length; k++) (this[k] = a(d, this[k])), (this[k] = a(d, this[k], !0)); } return c; }, createBookmarks2: function (a) { for (var c = [], d = 0; d < this.length; d++) c.push(this[d].createBookmark2(a)); return c; }, moveToBookmarks: function (a) { for (var c = 0; c < this.length; c++) this[c].moveToBookmark(a[c]); }, }; })(); (function () { function a() { return CKEDITOR.getUrl( CKEDITOR.skinName.split(",")[1] || "skins/" + CKEDITOR.skinName.split(",")[0] + "/" ); } function d(b) { var c = CKEDITOR.skin["ua_" + b], d = CKEDITOR.env; if (c) for ( var c = c.split(",").sort(function (a, b) { return a > b ? -1 : 1; }), e = 0, f; e < c.length; e++ ) if ( ((f = c[e]), d.ie && (f.replace(/^ie/, "") == d.version || (d.quirks && "iequirks" == f)) && (f = "ie"), d[f]) ) { b += "_" + c[e]; break; } return CKEDITOR.getUrl(a() + b + ".css"); } function b(a, b) { e[a] || (CKEDITOR.document.appendStyleSheet(d(a)), (e[a] = 1)); b && b(); } function c(a) { var b = a.getById(k); b || ((b = a.getHead().append("style")), b.setAttribute("id", k), b.setAttribute("type", "text/css")); return b; } function f(a, b, c) { var d, e, f; if (CKEDITOR.env.webkit) for (b = b.split("}").slice(0, -1), e = 0; e < b.length; e++) b[e] = b[e].split("{"); for (var h = 0; h < a.length; h++) if (CKEDITOR.env.webkit) for (e = 0; e < b.length; e++) { f = b[e][1]; for (d = 0; d < c.length; d++) f = f.replace(c[d][0], c[d][1]); a[h].$.sheet.addRule(b[e][0], f); } else { f = b; for (d = 0; d < c.length; d++) f = f.replace(c[d][0], c[d][1]); CKEDITOR.env.ie && 11 > CKEDITOR.env.version ? (a[h].$.styleSheet.cssText += f) : (a[h].$.innerHTML += f); } } var e = {}; CKEDITOR.skin = { path: a, loadPart: function (c, d) { CKEDITOR.skin.name != CKEDITOR.skinName.split(",")[0] ? CKEDITOR.scriptLoader.load( CKEDITOR.getUrl(a() + "skin.js"), function () { b(c, d); } ) : b(c, d); }, getPath: function (a) { return CKEDITOR.getUrl(d(a)); }, icons: {}, addIcon: function (a, b, c, d) { a = a.toLowerCase(); this.icons[a] || (this.icons[a] = { path: b, offset: c || 0, bgsize: d || "16px" }); }, getIconStyle: function (a, b, c, d, e) { var f; a && ((a = a.toLowerCase()), b && (f = this.icons[a + "-rtl"]), f || (f = this.icons[a])); a = c || (f && f.path) || ""; d = d || (f && f.offset); e = e || (f && f.bgsize) || "16px"; a && (a = a.replace(/'/g, "\\'")); return ( a && "background-image:url('" + CKEDITOR.getUrl(a) + "');background-position:0 " + d + "px;background-size:" + e + ";" ); }, }; CKEDITOR.tools.extend(CKEDITOR.editor.prototype, { getUiColor: function () { return this.uiColor; }, setUiColor: function (a) { var b = c(CKEDITOR.document); return (this.setUiColor = function (a) { this.uiColor = a; var c = CKEDITOR.skin.chameleon, d = "", e = ""; "function" == typeof c && ((d = c(this, "editor")), (e = c(this, "panel"))); a = [[n, a]]; f([b], d, a); f(h, e, a); }).call(this, a); }, }); var k = "cke_ui_color", h = [], n = /\$color/g; CKEDITOR.on("instanceLoaded", function (a) { if (!CKEDITOR.env.ie || !CKEDITOR.env.quirks) { var b = a.editor; a = function (a) { a = (a.data[0] || a.data).element .getElementsByTag("iframe") .getItem(0) .getFrameDocument(); if (!a.getById("cke_ui_color")) { var d = c(a); h.push(d); b.on("destroy", function () { h = CKEDITOR.tools.array.filter(h, function (a) { return d !== a; }); }); (a = b.getUiColor()) && f([d], CKEDITOR.skin.chameleon(b, "panel"), [[n, a]]); } }; b.on("panelShow", a); b.on("menuShow", a); b.config.uiColor && b.setUiColor(b.config.uiColor); } }); })(); (function () { var a = CKEDITOR.dom.element.createFromHtml( '\x3cdiv style\x3d"width:0;height:0;position:absolute;left:-10000px;border:1px solid;border-color:red blue"\x3e\x3c/div\x3e', CKEDITOR.document ); a.appendTo(CKEDITOR.document.getHead()); try { var d = a.getComputedStyle("border-top-color"), b = a.getComputedStyle("border-right-color"); CKEDITOR.env.hc = !(!d || d != b); } catch (c) { CKEDITOR.env.hc = !1; } a.remove(); CKEDITOR.env.hc && (CKEDITOR.env.cssClass += " cke_hc"); CKEDITOR.document.appendStyleText(".cke{visibility:hidden;}"); CKEDITOR.status = "loaded"; CKEDITOR.fireOnce("loaded"); if ((a = CKEDITOR._.pending)) for (delete CKEDITOR._.pending, d = 0; d < a.length; d++) CKEDITOR.editor.prototype.constructor.apply(a[d][0], a[d][1]), CKEDITOR.add(a[d][0]); })(); /* Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.skin.name = "moono-lisa"; CKEDITOR.skin.ua_editor = "ie,iequirks,ie8,gecko"; CKEDITOR.skin.ua_dialog = "ie,iequirks,ie8"; CKEDITOR.skin.chameleon = (function () { var b = (function () { return function (b, d) { for (var a = b.match(/[^#]./g), e = 0; 3 > e; e++) { var f = e, c; c = parseInt(a[e], 16); c = ( "0" + (0 > d ? 0 | (c * (1 + d)) : 0 | (c + (255 - c) * d)).toString(16) ).slice(-2); a[f] = c; } return "#" + a.join(""); }; })(), f = { editor: new CKEDITOR.template( "{id}.cke_chrome [border-color:{defaultBorder};] {id} .cke_top [ background-color:{defaultBackground};border-bottom-color:{defaultBorder};] {id} .cke_bottom [background-color:{defaultBackground};border-top-color:{defaultBorder};] {id} .cke_resizer [border-right-color:{ckeResizer}] {id} .cke_dialog_title [background-color:{defaultBackground};border-bottom-color:{defaultBorder};] {id} .cke_dialog_footer [background-color:{defaultBackground};outline-color:{defaultBorder};] {id} .cke_dialog_tab [background-color:{dialogTab};border-color:{defaultBorder};] {id} .cke_dialog_tab:hover [background-color:{lightBackground};] {id} .cke_dialog_contents [border-top-color:{defaultBorder};] {id} .cke_dialog_tab_selected, {id} .cke_dialog_tab_selected:hover [background:{dialogTabSelected};border-bottom-color:{dialogTabSelectedBorder};] {id} .cke_dialog_body [background:{dialogBody};border-color:{defaultBorder};] {id} a.cke_button_off:hover,{id} a.cke_button_off:focus,{id} a.cke_button_off:active [background-color:{darkBackground};border-color:{toolbarElementsBorder};] {id} .cke_button_on [background-color:{ckeButtonOn};border-color:{toolbarElementsBorder};] {id} .cke_toolbar_separator,{id} .cke_toolgroup a.cke_button:last-child:after,{id} .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after [background-color: {toolbarElementsBorder};border-color: {toolbarElementsBorder};] {id} a.cke_combo_button:hover,{id} a.cke_combo_button:focus,{id} .cke_combo_on a.cke_combo_button [border-color:{toolbarElementsBorder};background-color:{darkBackground};] {id} .cke_combo:after [border-color:{toolbarElementsBorder};] {id} .cke_path_item [color:{elementsPathColor};] {id} a.cke_path_item:hover,{id} a.cke_path_item:focus,{id} a.cke_path_item:active [background-color:{darkBackground};] {id}.cke_panel [border-color:{defaultBorder};] " ), panel: new CKEDITOR.template( ".cke_panel_grouptitle [background-color:{lightBackground};border-color:{defaultBorder};] .cke_menubutton_icon [background-color:{menubuttonIcon};] .cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active [background-color:{menubuttonHover};] .cke_menubutton:hover .cke_menubutton_icon, .cke_menubutton:focus .cke_menubutton_icon, .cke_menubutton:active .cke_menubutton_icon [background-color:{menubuttonIconHover};] .cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon [background-color:{menubuttonIcon};] .cke_menuseparator [background-color:{menubuttonIcon};] a:hover.cke_colorbox, a:active.cke_colorbox [border-color:{defaultBorder};] a:hover.cke_colorauto, a:hover.cke_colormore, a:active.cke_colorauto, a:active.cke_colormore [background-color:{ckeColorauto};border-color:{defaultBorder};] " ), }; return function (g, d) { var a = b(g.uiColor, 0.4), a = { id: "." + g.id, defaultBorder: b(a, -0.2), toolbarElementsBorder: b(a, -0.25), defaultBackground: a, lightBackground: b(a, 0.8), darkBackground: b(a, -0.15), ckeButtonOn: b(a, 0.4), ckeResizer: b(a, -0.4), ckeColorauto: b(a, 0.8), dialogBody: b(a, 0.7), dialogTab: b(a, 0.65), dialogTabSelected: "#FFF", dialogTabSelectedBorder: "#FFF", elementsPathColor: b(a, -0.6), menubuttonHover: b(a, 0.1), menubuttonIcon: b(a, 0.5), menubuttonIconHover: b(a, 0.3), }; return f[d].output(a).replace(/\[/g, "{").replace(/\]/g, "}"); }; })(); CKEDITOR.plugins.add("dialogui", { onLoad: function () { var k = function (b) { this._ || (this._ = {}); this._["default"] = this._.initValue = b["default"] || ""; this._.required = b.required || !1; for (var a = [this._], d = 1; d < arguments.length; d++) a.push(arguments[d]); a.push(!0); CKEDITOR.tools.extend.apply(CKEDITOR.tools, a); return this._; }, r = { build: function (b, a, d) { return new CKEDITOR.ui.dialog.textInput(b, a, d); }, }, m = { build: function (b, a, d) { return new CKEDITOR.ui.dialog[a.type](b, a, d); }, }, q = { isChanged: function () { return this.getValue() != this.getInitValue(); }, reset: function (b) { this.setValue(this.getInitValue(), b); }, setInitValue: function () { this._.initValue = this.getValue(); }, resetInitValue: function () { this._.initValue = this._["default"]; }, getInitValue: function () { return this._.initValue; }, }, v = CKEDITOR.tools.extend( {}, CKEDITOR.ui.dialog.uiElement.prototype.eventProcessors, { onChange: function (b, a) { this._.domOnChangeRegistered || (b.on( "load", function () { this.getInputElement().on( "change", function () { b.parts.dialog.isVisible() && this.fire("change", { value: this.getValue() }); }, this ); }, this ), (this._.domOnChangeRegistered = !0)); this.on("change", a); }, }, !0 ), x = /^on([A-Z]\w+)/, t = function (b) { for (var a in b) (x.test(a) || "title" == a || "type" == a) && delete b[a]; return b; }, w = function (b) { b = b.data.getKeystroke(); b == CKEDITOR.SHIFT + CKEDITOR.ALT + 36 ? this.setDirectionMarker("ltr") : b == CKEDITOR.SHIFT + CKEDITOR.ALT + 35 && this.setDirectionMarker("rtl"); }; CKEDITOR.tools.extend( CKEDITOR.ui.dialog, { labeledElement: function (b, a, d, e) { if (!(4 > arguments.length)) { var c = k.call(this, a); c.labelId = CKEDITOR.tools.getNextId() + "_label"; this._.children = []; var f = { role: a.role || "presentation" }; a.includeLabel && (f["aria-labelledby"] = c.labelId); CKEDITOR.ui.dialog.uiElement.call( this, b, a, d, "div", null, f, function () { var d = [], g = a.required ? " cke_required" : ""; "horizontal" != a.labelLayout ? d.push( '\x3clabel class\x3d"cke_dialog_ui_labeled_label' + g + '" ', ' id\x3d"' + c.labelId + '"', c.inputId ? ' for\x3d"' + c.inputId + '"' : "", (a.labelStyle ? ' style\x3d"' + a.labelStyle + '"' : "") + "\x3e", a.required ? a.label + '\x3cspan class\x3d"cke_dialog_ui_labeled_required" aria-hidden\x3d"true"\x3e*\x3c/span\x3e' : a.label, "\x3c/label\x3e", '\x3cdiv class\x3d"cke_dialog_ui_labeled_content"', a.controlStyle ? ' style\x3d"' + a.controlStyle + '"' : "", ' role\x3d"presentation"\x3e', e.call(this, b, a), "\x3c/div\x3e" ) : ((g = { type: "hbox", widths: a.widths, padding: 0, children: [ { type: "html", html: '\x3clabel class\x3d"cke_dialog_ui_labeled_label' + g + '" id\x3d"' + c.labelId + '" for\x3d"' + c.inputId + '"' + (a.labelStyle ? ' style\x3d"' + a.labelStyle + '"' : "") + "\x3e" + CKEDITOR.tools.htmlEncode(a.label) + "\x3c/label\x3e", }, { type: "html", html: '\x3cspan class\x3d"cke_dialog_ui_labeled_content"' + (a.controlStyle ? ' style\x3d"' + a.controlStyle + '"' : "") + "\x3e" + e.call(this, b, a) + "\x3c/span\x3e", }, ], }), CKEDITOR.dialog._.uiElementBuilders.hbox.build(b, g, d)); return d.join(""); } ); } }, textInput: function (b, a, d) { if (!(3 > arguments.length)) { k.call(this, a); var e = (this._.inputId = CKEDITOR.tools.getNextId() + "_textInput"), c = { class: "cke_dialog_ui_input_" + a.type, id: e, type: a.type, }; a.validate && (this.validate = a.validate); a.maxLength && (c.maxlength = a.maxLength); a.size && (c.size = a.size); a.inputStyle && (c.style = a.inputStyle); var f = this, h = !1; b.on("load", function () { f.getInputElement().on("keydown", function (a) { 13 == a.data.getKeystroke() && (h = !0); }); f.getInputElement().on( "keyup", function (a) { 13 == a.data.getKeystroke() && h && (b.getButton("ok") && setTimeout(function () { b.getButton("ok").click(); }, 0), (h = !1)); f.bidi && w.call(f, a); }, null, null, 1e3 ); }); CKEDITOR.ui.dialog.labeledElement.call( this, b, a, d, function () { var b = [ '\x3cdiv class\x3d"cke_dialog_ui_input_', a.type, '" role\x3d"presentation"', ]; a.width && b.push('style\x3d"width:' + a.width + '" '); b.push("\x3e\x3cinput "); c["aria-labelledby"] = this._.labelId; this._.required && (c["aria-required"] = this._.required); for (var e in c) b.push(e + '\x3d"' + c[e] + '" '); b.push(" /\x3e\x3c/div\x3e"); return b.join(""); } ); } }, textarea: function (b, a, d) { if (!(3 > arguments.length)) { k.call(this, a); var e = this, c = (this._.inputId = CKEDITOR.tools.getNextId() + "_textarea"), f = {}; a.validate && (this.validate = a.validate); f.rows = a.rows || 5; f.cols = a.cols || 20; f["class"] = "cke_dialog_ui_input_textarea " + (a["class"] || ""); "undefined" != typeof a.inputStyle && (f.style = a.inputStyle); a.dir && (f.dir = a.dir); if (e.bidi) b.on( "load", function () { e.getInputElement().on("keyup", w); }, e ); CKEDITOR.ui.dialog.labeledElement.call( this, b, a, d, function () { f["aria-labelledby"] = this._.labelId; this._.required && (f["aria-required"] = this._.required); var a = [ '\x3cdiv class\x3d"cke_dialog_ui_input_textarea" role\x3d"presentation"\x3e\x3ctextarea id\x3d"', c, '" ', ], b; for (b in f) a.push( b + '\x3d"' + CKEDITOR.tools.htmlEncode(f[b]) + '" ' ); a.push( "\x3e", CKEDITOR.tools.htmlEncode(e._["default"]), "\x3c/textarea\x3e\x3c/div\x3e" ); return a.join(""); } ); } }, checkbox: function (b, a, d) { if (!(3 > arguments.length)) { var e = k.call(this, a, { default: !!a["default"] }); a.validate && (this.validate = a.validate); CKEDITOR.ui.dialog.uiElement.call( this, b, a, d, "span", null, null, function () { var c = CKEDITOR.tools.extend( {}, a, { id: a.id ? a.id + "_checkbox" : CKEDITOR.tools.getNextId() + "_checkbox", }, !0 ), d = [], h = CKEDITOR.tools.getNextId() + "_label", g = { class: "cke_dialog_ui_checkbox_input", type: "checkbox", "aria-labelledby": h, }; t(c); a["default"] && (g.checked = "checked"); "undefined" != typeof c.inputStyle && (c.style = c.inputStyle); e.checkbox = new CKEDITOR.ui.dialog.uiElement( b, c, d, "input", null, g ); d.push( ' \x3clabel id\x3d"', h, '" for\x3d"', g.id, '"' + (a.labelStyle ? ' style\x3d"' + a.labelStyle + '"' : "") + "\x3e", CKEDITOR.tools.htmlEncode(a.label), "\x3c/label\x3e" ); return d.join(""); } ); } }, radio: function (b, a, d) { if (!(3 > arguments.length)) { k.call(this, a); this._["default"] || (this._["default"] = this._.initValue = a.items[0][1]); a.validate && (this.validate = a.validate); var e = [], c = this; a.role = "radiogroup"; a.includeLabel = !0; CKEDITOR.ui.dialog.labeledElement.call( this, b, a, d, function () { for ( var d = [], h = [], g = (a.id ? a.id : CKEDITOR.tools.getNextId()) + "_radio", n = 0; n < a.items.length; n++ ) { var l = a.items[n], k = void 0 !== l[2] ? l[2] : l[0], m = void 0 !== l[1] ? l[1] : l[0], p = CKEDITOR.tools.getNextId() + "_radio_input", q = p + "_label", p = CKEDITOR.tools.extend( {}, a, { id: p, title: null, type: null }, !0 ), k = CKEDITOR.tools.extend({}, p, { title: k }, !0), r = { type: "radio", class: "cke_dialog_ui_radio_input", name: g, value: m, "aria-labelledby": q, }, u = []; c._["default"] == m && (r.checked = "checked"); t(p); t(k); "undefined" != typeof p.inputStyle && (p.style = p.inputStyle); m = new CKEDITOR.ui.dialog.uiElement( b, p, u, "input", null, r ); m.on("focus", function () { c.click(); }); e.push(m); u.push(" "); new CKEDITOR.ui.dialog.uiElement( b, k, u, "label", null, { id: q, for: r.id }, l[0] ); d.push(u.join("")); } new CKEDITOR.ui.dialog.hbox(b, e, d, h); return h.join(""); } ); this._.children = e; } }, button: function (b, a, d) { if (arguments.length) { "function" == typeof a && (a = a(b.getParentEditor())); k.call(this, a, { disabled: a.disabled || !1 }); CKEDITOR.event.implementOn(this); var e = this; b.on( "load", function () { var a = this.getElement(); (function () { a.on("click", function (a) { e.click(); a.data.preventDefault(); }); a.on("keydown", function (a) { a.data.getKeystroke() in { 32: 1 } && (e.click(), a.data.preventDefault()); }); })(); a.unselectable(); }, this ); var c = CKEDITOR.tools.extend({}, a); delete c.style; var f = CKEDITOR.tools.getNextId() + "_label"; CKEDITOR.ui.dialog.uiElement.call( this, b, c, d, "a", null, { style: a.style, href: "javascript:void(0)", title: a.label, hidefocus: "true", class: a["class"], role: "button", "aria-labelledby": f, }, '\x3cspan id\x3d"' + f + '" class\x3d"cke_dialog_ui_button"\x3e' + CKEDITOR.tools.htmlEncode(a.label) + "\x3c/span\x3e" ); } }, select: function (b, a, d) { if (!(3 > arguments.length)) { var e = k.call(this, a); a.validate && (this.validate = a.validate); e.inputId = CKEDITOR.tools.getNextId() + "_select"; CKEDITOR.ui.dialog.labeledElement.call( this, b, a, d, function () { var c = CKEDITOR.tools.extend( {}, a, { id: a.id ? a.id + "_select" : CKEDITOR.tools.getNextId() + "_select", }, !0 ), d = [], h = [], g = { id: e.inputId, class: "cke_dialog_ui_input_select", "aria-labelledby": this._.labelId, }; d.push( '\x3cdiv class\x3d"cke_dialog_ui_input_', a.type, '" role\x3d"presentation"' ); a.width && d.push('style\x3d"width:' + a.width + '" '); d.push("\x3e"); void 0 !== a.size && (g.size = a.size); void 0 !== a.multiple && (g.multiple = a.multiple); t(c); for ( var n = 0, l; n < a.items.length && (l = a.items[n]); n++ ) h.push( '\x3coption value\x3d"', CKEDITOR.tools .htmlEncode(void 0 !== l[1] ? l[1] : l[0]) .replace(/"/g, "\x26quot;"), '" /\x3e ', CKEDITOR.tools.htmlEncode(l[0]) ); "undefined" != typeof c.inputStyle && (c.style = c.inputStyle); e.select = new CKEDITOR.ui.dialog.uiElement( b, c, d, "select", null, g, h.join("") ); d.push("\x3c/div\x3e"); return d.join(""); } ); } }, file: function (b, a, d) { if (!(3 > arguments.length)) { void 0 === a["default"] && (a["default"] = ""); var e = CKEDITOR.tools.extend(k.call(this, a), { definition: a, buttons: [], }); a.validate && (this.validate = a.validate); b.on("load", function () { CKEDITOR.document .getById(e.frameId) .getParent() .addClass("cke_dialog_ui_input_file"); }); CKEDITOR.ui.dialog.labeledElement.call( this, b, a, d, function () { e.frameId = CKEDITOR.tools.getNextId() + "_fileInput"; var b = [ '\x3ciframe frameborder\x3d"0" allowtransparency\x3d"0" class\x3d"cke_dialog_ui_input_file" role\x3d"presentation" id\x3d"', e.frameId, '" title\x3d"', a.label, '" src\x3d"javascript:void(', ]; b.push( CKEDITOR.env.ie ? "(function(){" + encodeURIComponent( "document.open();(" + CKEDITOR.tools.fixDomain + ")();document.close();" ) + "})()" : "0" ); b.push(')"\x3e\x3c/iframe\x3e'); return b.join(""); } ); } }, fileButton: function (b, a, d) { var e = this; if (!(3 > arguments.length)) { k.call(this, a); a.validate && (this.validate = a.validate); var c = CKEDITOR.tools.extend({}, a), f = c.onClick; c.className = (c.className ? c.className + " " : "") + "cke_dialog_ui_button"; c.onClick = function (c) { var d = a["for"]; c = f ? f.call(this, c) : !1; !1 !== c && ("xhr" !== c && b.getContentElement(d[0], d[1]).submit(), this.disable()); }; b.on("load", function () { b.getContentElement(a["for"][0], a["for"][1])._.buttons.push(e); }); CKEDITOR.ui.dialog.button.call(this, b, c, d); } }, html: (function () { var b = /^\s*<[\w:]+\s+([^>]*)?>/, a = /^(\s*<[\w:]+(?:\s+[^>]*)?)((?:.|\r|\n)+)$/, d = /\/$/; return function (e, c, f) { if (!(3 > arguments.length)) { var h = [], g = c.html; "\x3c" != g.charAt(0) && (g = "\x3cspan\x3e" + g + "\x3c/span\x3e"); var n = c.focus; if (n) { var l = this.focus; this.focus = function () { ("function" == typeof n ? n : l).call(this); this.fire("focus"); }; c.isFocusable && (this.isFocusable = this.isFocusable); this.keyboardFocusable = !0; } CKEDITOR.ui.dialog.uiElement.call( this, e, c, h, "span", null, null, "" ); h = h.join("").match(b); g = g.match(a) || ["", "", ""]; d.test(g[1]) && ((g[1] = g[1].slice(0, -1)), (g[2] = "/" + g[2])); f.push([g[1], " ", h[1] || "", g[2]].join("")); } }; })(), fieldset: function (b, a, d, e, c) { var f = c.label; this._ = { children: a }; CKEDITOR.ui.dialog.uiElement.call( this, b, c, e, "fieldset", null, null, function () { var a = []; f && a.push( "\x3clegend" + (c.labelStyle ? ' style\x3d"' + c.labelStyle + '"' : "") + "\x3e" + f + "\x3c/legend\x3e" ); for (var b = 0; b < d.length; b++) a.push(d[b]); return a.join(""); } ); }, }, !0 ); CKEDITOR.ui.dialog.html.prototype = new CKEDITOR.ui.dialog.uiElement(); CKEDITOR.ui.dialog.labeledElement.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.uiElement(), { setLabel: function (b) { var a = CKEDITOR.document.getById(this._.labelId); 1 > a.getChildCount() ? new CKEDITOR.dom.text(b, CKEDITOR.document).appendTo(a) : (a.getChild(0).$.nodeValue = b); return this; }, getLabel: function () { var b = CKEDITOR.document.getById(this._.labelId); return !b || 1 > b.getChildCount() ? "" : b.getChild(0).getText(); }, eventProcessors: v, }, !0 ); CKEDITOR.ui.dialog.button.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.uiElement(), { click: function () { return this._.disabled ? !1 : this.fire("click", { dialog: this._.dialog }); }, enable: function () { this._.disabled = !1; var b = this.getElement(); b && b.removeClass("cke_disabled"); }, disable: function () { this._.disabled = !0; this.getElement().addClass("cke_disabled"); }, isVisible: function () { return this.getElement().getFirst().isVisible(); }, isEnabled: function () { return !this._.disabled; }, eventProcessors: CKEDITOR.tools.extend( {}, CKEDITOR.ui.dialog.uiElement.prototype.eventProcessors, { onClick: function (b, a) { this.on("click", function () { a.apply(this, arguments); }); }, }, !0 ), accessKeyUp: function () { this.click(); }, accessKeyDown: function () { this.focus(); }, keyboardFocusable: !0, }, !0 ); CKEDITOR.ui.dialog.textInput.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.labeledElement(), { getInputElement: function () { return CKEDITOR.document.getById(this._.inputId); }, focus: function () { var b = this.selectParentTab(); setTimeout(function () { var a = b.getInputElement(); a && a.$.focus(); }, 0); }, select: function () { var b = this.selectParentTab(); setTimeout(function () { var a = b.getInputElement(); a && (a.$.focus(), a.$.select()); }, 0); }, accessKeyUp: function () { this.select(); }, setValue: function (b) { if (this.bidi) { var a = b && b.charAt(0); (a = "‪" == a ? "ltr" : "‫" == a ? "rtl" : null) && (b = b.slice(1)); this.setDirectionMarker(a); } b || (b = ""); return CKEDITOR.ui.dialog.uiElement.prototype.setValue.apply( this, arguments ); }, getValue: function () { var b = CKEDITOR.ui.dialog.uiElement.prototype.getValue.call(this); if (this.bidi && b) { var a = this.getDirectionMarker(); a && (b = ("ltr" == a ? "‪" : "‫") + b); } return b; }, setDirectionMarker: function (b) { var a = this.getInputElement(); b ? a.setAttributes({ dir: b, "data-cke-dir-marker": b }) : this.getDirectionMarker() && a.removeAttributes(["dir", "data-cke-dir-marker"]); }, getDirectionMarker: function () { return this.getInputElement().data("cke-dir-marker"); }, keyboardFocusable: !0, }, q, !0 ); CKEDITOR.ui.dialog.textarea.prototype = new CKEDITOR.ui.dialog.textInput(); CKEDITOR.ui.dialog.select.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.labeledElement(), { getInputElement: function () { return this._.select.getElement(); }, add: function (b, a, d) { var e = new CKEDITOR.dom.element( "option", this.getDialog().getParentEditor().document ), c = this.getInputElement().$; e.$.text = b; e.$.value = void 0 === a || null === a ? b : a; void 0 === d || null === d ? CKEDITOR.env.ie ? c.add(e.$) : c.add(e.$, null) : c.add(e.$, d); return this; }, remove: function (b) { this.getInputElement().$.remove(b); return this; }, clear: function () { for (var b = this.getInputElement().$; 0 < b.length; ) b.remove(0); return this; }, keyboardFocusable: !0, }, q, !0 ); CKEDITOR.ui.dialog.checkbox.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.uiElement(), { getInputElement: function () { return this._.checkbox.getElement(); }, setValue: function (b, a) { this.getInputElement().$.checked = b; !a && this.fire("change", { value: b }); return this; }, getValue: function () { return this.getInputElement().$.checked; }, accessKeyUp: function () { this.setValue(!this.getValue()); }, eventProcessors: { onChange: function (b, a) { if (!CKEDITOR.env.ie || 8 < CKEDITOR.env.version) return v.onChange.apply(this, arguments); b.on( "load", function () { var a = this._.checkbox.getElement(); a.on( "propertychange", function (b) { b = b.data.$; "checked" == b.propertyName && this.fire("change", { value: a.$.checked }); }, this ); }, this ); this.on("change", a); return null; }, }, keyboardFocusable: !0, }, q, !0 ); CKEDITOR.ui.dialog.radio.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.uiElement(), { focus: function () { var b = this._.children, a = b[0], d = this._.dialog._, e = d.currentFocusIndex, c = e === d.focusList.length - 1 && 0 === this.focusIndex; e > this.focusIndex && !c && (a = b[b.length - 1]); d.currentFocusIndex = this.focusIndex; for (d = 0; d < b.length; d++) if (((e = b[d]), e.getInputElement().$.checked)) { a = e; break; } a.focus(); }, setValue: function (b, a) { for ( var d = this._.children, e, c = 0; c < d.length && (e = d[c]); c++ ) e.getElement().$.checked = e.getValue() == b; !a && this.fire("change", { value: b }); return this; }, getValue: function () { for (var b = this._.children, a = 0; a < b.length; a++) if (b[a].getElement().$.checked) return b[a].getValue(); return null; }, accessKeyUp: function () { var b = this._.children, a; for (a = 0; a < b.length; a++) if (b[a].getElement().$.checked) { b[a].getElement().focus(); return; } b[0].getElement().focus(); }, click: function () { this._.dialog._.currentFocusIndex = this.focusIndex; }, eventProcessors: { onChange: function (b, a) { if (!CKEDITOR.env.ie || 8 < CKEDITOR.env.version) return v.onChange.apply(this, arguments); b.on( "load", function () { for ( var a = this._.children, b = this, c = 0; c < a.length; c++ ) a[c].getElement().on("propertychange", function (a) { a = a.data.$; "checked" == a.propertyName && this.$.checked && b.fire("change", { value: this.getAttribute("value") }); }); }, this ); this.on("change", a); return null; }, }, keyboardFocusable: !0, }, q, !0 ); CKEDITOR.ui.dialog.file.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.labeledElement(), q, { getInputElement: function () { var b = CKEDITOR.document .getById(this._.frameId) .getFrameDocument(); return 0 < b.$.forms.length ? new CKEDITOR.dom.element(b.$.forms[0].elements[0]) : this.getElement(); }, submit: function () { this.getInputElement().getParent().$.submit(); return this; }, getAction: function () { return this.getInputElement().getParent().$.action; }, registerEvents: function (b) { var a = /^on([A-Z]\w+)/, d, e = function (a, b, c, d) { a.on("formLoaded", function () { a.getInputElement().on(c, d, a); }); }, c; for (c in b) if ((d = c.match(a))) this.eventProcessors[c] ? this.eventProcessors[c].call(this, this._.dialog, b[c]) : e(this, this._.dialog, d[1].toLowerCase(), b[c]); return this; }, reset: function () { function b() { d.$.open(); var b = ""; e.size && (b = e.size - (CKEDITOR.env.ie ? 7 : 0)); var k = a.frameId + "_input"; d.$.write( [ '\x3chtml dir\x3d"' + g + '" lang\x3d"' + n + '"\x3e\x3chead\x3e\x3ctitle\x3e\x3c/title\x3e\x3c/head\x3e\x3cbody style\x3d"margin: 0; overflow: hidden; background: transparent;"\x3e', '\x3cform enctype\x3d"multipart/form-data" method\x3d"POST" dir\x3d"' + g + '" lang\x3d"' + n + '" action\x3d"', CKEDITOR.tools.htmlEncode(e.action), '"\x3e\x3clabel id\x3d"', a.labelId, '" for\x3d"', k, '" style\x3d"display:none"\x3e', CKEDITOR.tools.htmlEncode(e.label), '\x3c/label\x3e\x3cinput style\x3d"width:100%" id\x3d"', k, '" aria-labelledby\x3d"', a.labelId, '" type\x3d"file" name\x3d"', CKEDITOR.tools.htmlEncode(e.id || "cke_upload"), '" size\x3d"', CKEDITOR.tools.htmlEncode(0 < b ? b : ""), '" /\x3e\x3c/form\x3e\x3c/body\x3e\x3c/html\x3e\x3cscript\x3e', CKEDITOR.env.ie ? "(" + CKEDITOR.tools.fixDomain + ")();" : "", "window.parent.CKEDITOR.tools.callFunction(" + f + ");", "window.onbeforeunload \x3d function() {window.parent.CKEDITOR.tools.callFunction(" + h + ")}", "\x3c/script\x3e", ].join("") ); d.$.close(); for (b = 0; b < c.length; b++) c[b].enable(); } var a = this._, d = CKEDITOR.document.getById(a.frameId).getFrameDocument(), e = a.definition, c = a.buttons, f = this.formLoadedNumber, h = this.formUnloadNumber, g = a.dialog._.editor.lang.dir, n = a.dialog._.editor.langCode; f || ((f = this.formLoadedNumber = CKEDITOR.tools.addFunction(function () { this.fire("formLoaded"); }, this)), (h = this.formUnloadNumber = CKEDITOR.tools.addFunction(function () { this.getInputElement().clearCustomData(); }, this)), this.getDialog()._.editor.on("destroy", function () { CKEDITOR.tools.removeFunction(f); CKEDITOR.tools.removeFunction(h); })); CKEDITOR.env.gecko ? setTimeout(b, 500) : b(); }, getValue: function () { return this.getInputElement().$.value || ""; }, setInitValue: function () { this._.initValue = ""; }, eventProcessors: { onChange: function (b, a) { this._.domOnChangeRegistered || (this.on( "formLoaded", function () { this.getInputElement().on( "change", function () { this.fire("change", { value: this.getValue() }); }, this ); }, this ), (this._.domOnChangeRegistered = !0)); this.on("change", a); }, }, keyboardFocusable: !0, }, !0 ); CKEDITOR.ui.dialog.fileButton.prototype = new CKEDITOR.ui.dialog.button(); CKEDITOR.ui.dialog.fieldset.prototype = CKEDITOR.tools.clone( CKEDITOR.ui.dialog.hbox.prototype ); CKEDITOR.dialog.addUIElement("text", r); CKEDITOR.dialog.addUIElement("password", r); CKEDITOR.dialog.addUIElement("tel", r); CKEDITOR.dialog.addUIElement("textarea", m); CKEDITOR.dialog.addUIElement("checkbox", m); CKEDITOR.dialog.addUIElement("radio", m); CKEDITOR.dialog.addUIElement("button", m); CKEDITOR.dialog.addUIElement("select", m); CKEDITOR.dialog.addUIElement("file", m); CKEDITOR.dialog.addUIElement("fileButton", m); CKEDITOR.dialog.addUIElement("html", m); CKEDITOR.dialog.addUIElement("fieldset", { build: function (b, a, d) { for ( var e = a.children, c, f = [], h = [], g = 0; g < e.length && (c = e[g]); g++ ) { var k = []; f.push(k); h.push(CKEDITOR.dialog._.uiElementBuilders[c.type].build(b, c, k)); } return new CKEDITOR.ui.dialog[a.type](b, h, f, d, a); }, }); }, }); CKEDITOR.DIALOG_RESIZE_NONE = 0; CKEDITOR.DIALOG_RESIZE_WIDTH = 1; CKEDITOR.DIALOG_RESIZE_HEIGHT = 2; CKEDITOR.DIALOG_RESIZE_BOTH = 3; CKEDITOR.DIALOG_STATE_IDLE = 1; CKEDITOR.DIALOG_STATE_BUSY = 2; (function () { function I(a) { a._.tabBarMode = !0; a._.tabs[a._.currentTabId][0].focus(); a._.currentFocusIndex = -1; } function J() { for ( var a = this._.tabIdList.length, b = CKEDITOR.tools.indexOf(this._.tabIdList, this._.currentTabId) + a, c = b - 1; c > b - a; c-- ) if (this._.tabs[this._.tabIdList[c % a]][0].$.offsetHeight) return this._.tabIdList[c % a]; return null; } function W() { for ( var a = this._.tabIdList.length, b = CKEDITOR.tools.indexOf(this._.tabIdList, this._.currentTabId), c = b + 1; c < b + a; c++ ) if (this._.tabs[this._.tabIdList[c % a]][0].$.offsetHeight) return this._.tabIdList[c % a]; return null; } function K(a, b) { for ( var c = a.$.getElementsByTagName("input"), e = 0, d = c.length; e < d; e++ ) { var f = new CKEDITOR.dom.element(c[e]); "text" == f.getAttribute("type").toLowerCase() && (b ? (f.setAttribute("value", f.getCustomData("fake_value") || ""), f.removeCustomData("fake_value")) : (f.setCustomData("fake_value", f.getAttribute("value")), f.setAttribute("value", ""))); } } function X(a, b) { var c = this.getInputElement(); c && (a ? c.removeAttribute("aria-invalid") : c.setAttribute("aria-invalid", !0)); a || (this.select ? this.select() : this.focus()); b && alert(b); this.fire("validated", { valid: a, msg: b }); } function Y() { var a = this.getInputElement(); a && a.removeAttribute("aria-invalid"); } function Z(a) { var b = CKEDITOR.dom.element.createFromHtml( CKEDITOR.addTemplate("dialog", aa).output({ id: CKEDITOR.tools.getNextNumber(), editorId: a.id, langDir: a.lang.dir, langCode: a.langCode, editorDialogClass: "cke_editor_" + a.name.replace(/\./g, "\\.") + "_dialog", closeTitle: a.lang.common.close, hidpi: CKEDITOR.env.hidpi ? "cke_hidpi" : "", }) ), c = b.getChild([0, 0, 0, 0, 0]), e = c.getChild(0), d = c.getChild(1); a.plugins.clipboard && CKEDITOR.plugins.clipboard.preventDefaultDropOnElement(c); !CKEDITOR.env.ie || CKEDITOR.env.quirks || CKEDITOR.env.edge || ((a = "javascript:void(function(){" + encodeURIComponent( "document.open();(" + CKEDITOR.tools.fixDomain + ")();document.close();" ) + "}())"), CKEDITOR.dom.element .createFromHtml( '\x3ciframe frameBorder\x3d"0" class\x3d"cke_iframe_shim" src\x3d"' + a + '" tabIndex\x3d"-1"\x3e\x3c/iframe\x3e' ) .appendTo(c.getParent())); e.unselectable(); d.unselectable(); return { element: b, parts: { dialog: b.getChild(0), title: e, close: d, tabs: c.getChild(2), contents: c.getChild([3, 0, 0, 0]), footer: c.getChild([3, 0, 1, 0]), }, }; } function L(a, b, c) { this.element = b; this.focusIndex = c; this.tabIndex = 0; this.isFocusable = function () { return !b.getAttribute("disabled") && b.isVisible(); }; this.focus = function () { a._.currentFocusIndex = this.focusIndex; this.element.focus(); }; b.on("keydown", function (a) { a.data.getKeystroke() in { 32: 1, 13: 1 } && this.fire("click"); }); b.on("focus", function () { this.fire("mouseover"); }); b.on("blur", function () { this.fire("mouseout"); }); } function ba(a) { function b() { a.layout(); } var c = CKEDITOR.document.getWindow(); c.on("resize", b); a.on("hide", function () { c.removeListener("resize", b); }); } function M(a, b) { this.dialog = a; for (var c = b.contents, e = 0, d; (d = c[e]); e++) c[e] = d && new N(a, d); CKEDITOR.tools.extend(this, b); } function N(a, b) { this._ = { dialog: a }; CKEDITOR.tools.extend(this, b); } function ca(a) { function b(b) { var c = a.getSize(), h = a.parts.dialog.getParent().getClientSize(), q = b.data.$.screenX, m = b.data.$.screenY, r = q - e.x, n = m - e.y; e = { x: q, y: m }; d.x += r; d.y += n; q = d.x + k[3] < g ? -k[3] : d.x - k[1] > h.width - c.width - g ? h.width - c.width + ("rtl" == f.lang.dir ? 0 : k[1]) : d.x; c = d.y + k[0] < g ? -k[0] : d.y - k[2] > h.height - c.height - g ? h.height - c.height + k[2] : d.y; q = Math.floor(q); c = Math.floor(c); a.move(q, c, 1); b.data.preventDefault(); } function c() { CKEDITOR.document.removeListener("mousemove", b); CKEDITOR.document.removeListener("mouseup", c); if (CKEDITOR.env.ie6Compat) { var a = u.getChild(0).getFrameDocument(); a.removeListener("mousemove", b); a.removeListener("mouseup", c); } } var e = null, d = null, f = a.getParentEditor(), g = f.config.dialog_magnetDistance, k = CKEDITOR.skin.margins || [0, 0, 0, 0]; "undefined" == typeof g && (g = 20); a.parts.title.on( "mousedown", function (f) { if (!a._.moved) { var g = a._.element; g.getFirst().setStyle("position", "absolute"); g.removeStyle("display"); a._.moved = !0; a.layout(); } e = { x: f.data.$.screenX, y: f.data.$.screenY }; CKEDITOR.document.on("mousemove", b); CKEDITOR.document.on("mouseup", c); d = a.getPosition(); CKEDITOR.env.ie6Compat && ((g = u.getChild(0).getFrameDocument()), g.on("mousemove", b), g.on("mouseup", c)); f.data.preventDefault(); }, a ); } function da(a) { function b(b) { var c = "rtl" == f.lang.dir, m = h.width, q = h.height, w = m + (b.data.$.screenX - l.x) * (c ? -1 : 1) * (a._.moved ? 1 : 2), A = q + (b.data.$.screenY - l.y) * (a._.moved ? 1 : 2), C = a._.element.getFirst(), C = c && parseInt(C.getComputedStyle("right"), 10), v = a.getPosition(); v.x = v.x || 0; v.y = v.y || 0; v.y + A > p.height && (A = p.height - v.y); (c ? C : v.x) + w > p.width && (w = p.width - (c ? C : v.x)); A = Math.floor(A); w = Math.floor(w); if ( d == CKEDITOR.DIALOG_RESIZE_WIDTH || d == CKEDITOR.DIALOG_RESIZE_BOTH ) m = Math.max(e.minWidth || 0, w - g); if ( d == CKEDITOR.DIALOG_RESIZE_HEIGHT || d == CKEDITOR.DIALOG_RESIZE_BOTH ) q = Math.max(e.minHeight || 0, A - k); a.resize(m, q); a._.moved && O(a, a._.position.x, a._.position.y); a._.moved || a.layout(); b.data.preventDefault(); } function c() { CKEDITOR.document.removeListener("mouseup", c); CKEDITOR.document.removeListener("mousemove", b); q && (q.remove(), (q = null)); if (CKEDITOR.env.ie6Compat) { var a = u.getChild(0).getFrameDocument(); a.removeListener("mouseup", c); a.removeListener("mousemove", b); } } var e = a.definition, d = e.resizable; if (d != CKEDITOR.DIALOG_RESIZE_NONE) { var f = a.getParentEditor(), g, k, p, l, h, q, m = CKEDITOR.tools.addFunction(function (d) { function e(a) { return a.isVisible(); } h = a.getSize(); var f = a.parts.contents, m = f.$.getElementsByTagName("iframe").length, w = !( CKEDITOR.env.gecko || (CKEDITOR.env.ie && CKEDITOR.env.quirks) ); m && ((q = CKEDITOR.dom.element.createFromHtml( '\x3cdiv class\x3d"cke_dialog_resize_cover" style\x3d"height: 100%; position: absolute; width: 100%; left:0; top:0;"\x3e\x3c/div\x3e' )), f.append(q)); k = h.height - a.parts.contents.getFirst(e).getSize("height", w); g = h.width - a.parts.contents.getFirst(e).getSize("width", 1); l = { x: d.screenX, y: d.screenY }; p = CKEDITOR.document.getWindow().getViewPaneSize(); CKEDITOR.document.on("mousemove", b); CKEDITOR.document.on("mouseup", c); CKEDITOR.env.ie6Compat && ((f = u.getChild(0).getFrameDocument()), f.on("mousemove", b), f.on("mouseup", c)); d.preventDefault && d.preventDefault(); }); a.on("load", function () { var b = ""; d == CKEDITOR.DIALOG_RESIZE_WIDTH ? (b = " cke_resizer_horizontal") : d == CKEDITOR.DIALOG_RESIZE_HEIGHT && (b = " cke_resizer_vertical"); b = CKEDITOR.dom.element.createFromHtml( '\x3cdiv class\x3d"cke_resizer' + b + " cke_resizer_" + f.lang.dir + '" title\x3d"' + CKEDITOR.tools.htmlEncode(f.lang.common.resize) + '" onmousedown\x3d"CKEDITOR.tools.callFunction(' + m + ', event )"\x3e' + ("ltr" == f.lang.dir ? "◢" : "◣") + "\x3c/div\x3e" ); a.parts.footer.append(b, 1); }); f.on("destroy", function () { CKEDITOR.tools.removeFunction(m); }); } } function O(a, b, c) { var e = a.parts.dialog.getParent().getClientSize(), d = a.getSize(), f = a._.viewportRatio, g = Math.max(e.width - d.width, 0), e = Math.max(e.height - d.height, 0); f.width = g ? b / g : f.width; f.height = e ? c / e : f.height; a._.viewportRatio = f; } function H(a) { a.data.preventDefault(1); } function P(a) { var b = a.config, c = CKEDITOR.skinName || a.config.skin, e = b.dialog_backgroundCoverColor || ("moono-lisa" == c ? "black" : "white"), c = b.dialog_backgroundCoverOpacity, d = b.baseFloatZIndex, b = CKEDITOR.tools.genKey(e, c, d), f = B[b]; CKEDITOR.document.getBody().addClass("cke_dialog_open"); f ? f.show() : ((d = [ '\x3cdiv tabIndex\x3d"-1" style\x3d"position: ', CKEDITOR.env.ie6Compat ? "absolute" : "fixed", "; z-index: ", d, "; top: 0px; left: 0px; ", "; width: 100%; height: 100%;", CKEDITOR.env.ie6Compat ? "" : "background-color: " + e, '" class\x3d"cke_dialog_background_cover"\x3e', ]), CKEDITOR.env.ie6Compat && ((e = "\x3chtml\x3e\x3cbody style\x3d\\'background-color:" + e + ";\\'\x3e\x3c/body\x3e\x3c/html\x3e"), d.push( '\x3ciframe hidefocus\x3d"true" frameborder\x3d"0" id\x3d"cke_dialog_background_iframe" src\x3d"javascript:' ), d.push( "void((function(){" + encodeURIComponent( "document.open();(" + CKEDITOR.tools.fixDomain + ")();document.write( '" + e + "' );document.close();" ) + "})())" ), d.push( '" style\x3d"position:absolute;left:0;top:0;width:100%;height: 100%;filter: progid:DXImageTransform.Microsoft.Alpha(opacity\x3d0)"\x3e\x3c/iframe\x3e' )), d.push("\x3c/div\x3e"), (f = CKEDITOR.dom.element.createFromHtml(d.join(""))), f.setOpacity(void 0 !== c ? c : 0.5), f.on("keydown", H), f.on("keypress", H), f.on("keyup", H), f.appendTo(CKEDITOR.document.getBody()), (B[b] = f)); a.focusManager.add(f); u = f; (CKEDITOR.env.mac && CKEDITOR.env.webkit) || f.focus(); } function Q(a) { CKEDITOR.document.getBody().removeClass("cke_dialog_open"); u && (a.focusManager.remove(u), u.hide()); } function R(a) { var b = a.data.$.ctrlKey || a.data.$.metaKey, c = a.data.$.altKey, e = a.data.$.shiftKey, d = String.fromCharCode(a.data.$.keyCode); (b = x[(b ? "CTRL+" : "") + (c ? "ALT+" : "") + (e ? "SHIFT+" : "") + d]) && b.length && ((b = b[b.length - 1]), b.keydown && b.keydown.call(b.uiElement, b.dialog, b.key), a.data.preventDefault()); } function S(a) { var b = a.data.$.ctrlKey || a.data.$.metaKey, c = a.data.$.altKey, e = a.data.$.shiftKey, d = String.fromCharCode(a.data.$.keyCode); (b = x[(b ? "CTRL+" : "") + (c ? "ALT+" : "") + (e ? "SHIFT+" : "") + d]) && b.length && ((b = b[b.length - 1]), b.keyup && (b.keyup.call(b.uiElement, b.dialog, b.key), a.data.preventDefault())); } function T(a, b, c, e, d) { (x[c] || (x[c] = [])).push({ uiElement: a, dialog: b, key: c, keyup: d || a.accessKeyUp, keydown: e || a.accessKeyDown, }); } function ea(a) { for (var b in x) { for (var c = x[b], e = c.length - 1; 0 <= e; e--) (c[e].dialog != a && c[e].uiElement != a) || c.splice(e, 1); 0 === c.length && delete x[b]; } } function fa(a, b) { a._.accessKeyMap[b] && a.selectPage(a._.accessKeyMap[b]); } function ga() {} var y = CKEDITOR.tools.cssLength, U, u, V = !1, D = !CKEDITOR.env.ie || CKEDITOR.env.edge, aa = '\x3cdiv class\x3d"cke_reset_all cke_dialog_container {editorId} {editorDialogClass} {hidpi}" dir\x3d"{langDir}" style\x3d"' + (D ? "display:flex" : "") + '" lang\x3d"{langCode}" role\x3d"dialog" aria-labelledby\x3d"cke_dialog_title_{id}"\x3e\x3ctable class\x3d"cke_dialog ' + CKEDITOR.env.cssClass + ' cke_{langDir}" style\x3d"' + (D ? "margin:auto" : "position:absolute") + '" role\x3d"presentation"\x3e\x3ctr\x3e\x3ctd role\x3d"presentation"\x3e\x3cdiv class\x3d"cke_dialog_body" role\x3d"presentation"\x3e\x3cdiv id\x3d"cke_dialog_title_{id}" class\x3d"cke_dialog_title" role\x3d"presentation"\x3e\x3c/div\x3e\x3ca id\x3d"cke_dialog_close_button_{id}" class\x3d"cke_dialog_close_button" href\x3d"javascript:void(0)" title\x3d"{closeTitle}" role\x3d"button"\x3e\x3cspan class\x3d"cke_label"\x3eX\x3c/span\x3e\x3c/a\x3e\x3cdiv id\x3d"cke_dialog_tabs_{id}" class\x3d"cke_dialog_tabs" role\x3d"tablist"\x3e\x3c/div\x3e\x3ctable class\x3d"cke_dialog_contents" role\x3d"presentation"\x3e\x3ctr\x3e\x3ctd id\x3d"cke_dialog_contents_{id}" class\x3d"cke_dialog_contents_body" role\x3d"presentation"\x3e\x3c/td\x3e\x3c/tr\x3e\x3ctr\x3e\x3ctd id\x3d"cke_dialog_footer_{id}" class\x3d"cke_dialog_footer" role\x3d"presentation"\x3e\x3c/td\x3e\x3c/tr\x3e\x3c/table\x3e\x3c/div\x3e\x3c/td\x3e\x3c/tr\x3e\x3c/table\x3e\x3c/div\x3e'; CKEDITOR.dialog = function (a, b) { function c() { var a = n._.focusList; a.sort(function (a, b) { return a.tabIndex != b.tabIndex ? b.tabIndex - a.tabIndex : a.focusIndex - b.focusIndex; }); for (var b = a.length, c = 0; c < b; c++) a[c].focusIndex = c; } function e(a) { var b = n._.focusList; a = a || 0; if (!(1 > b.length)) { var c = n._.currentFocusIndex; n._.tabBarMode && 0 > a && (c = 0); try { b[c].getInputElement().$.blur(); } catch (d) {} var e = c, f = 1 < n._.pageCount; do { e += a; if (f && !n._.tabBarMode && (e == b.length || -1 == e)) { n._.tabBarMode = !0; n._.tabs[n._.currentTabId][0].focus(); n._.currentFocusIndex = -1; return; } e = (e + b.length) % b.length; if (e == c) break; } while (a && !b[e].isFocusable()); b[e].focus(); "text" == b[e].type && b[e].select(); } } function d(b) { if (n == CKEDITOR.dialog._.currentTop) { var c = b.data.getKeystroke(), d = "rtl" == a.lang.dir, g = [37, 38, 39, 40]; q = m = 0; if (9 == c || c == CKEDITOR.SHIFT + 9) e(c == CKEDITOR.SHIFT + 9 ? -1 : 1), (q = 1); else if ( c == CKEDITOR.ALT + 121 && !n._.tabBarMode && 1 < n.getPageCount() ) I(n), (q = 1); else if (-1 != CKEDITOR.tools.indexOf(g, c) && n._.tabBarMode) (c = -1 != CKEDITOR.tools.indexOf([d ? 39 : 37, 38], c) ? J.call(n) : W.call(n)), n.selectPage(c), n._.tabs[c][0].focus(), (q = 1); else if ((13 != c && 32 != c) || !n._.tabBarMode) if (13 == c) (c = b.data.getTarget()), c.is("a", "button", "select", "textarea") || (c.is("input") && "button" == c.$.type) || ((c = this.getButton("ok")) && CKEDITOR.tools.setTimeout(c.click, 0, c), (q = 1)), (m = 1); else if (27 == c) (c = this.getButton("cancel")) ? CKEDITOR.tools.setTimeout(c.click, 0, c) : !1 !== this.fire("cancel", { hide: !0 }).hide && this.hide(), (m = 1); else return; else this.selectPage(this._.currentTabId), (this._.tabBarMode = !1), (this._.currentFocusIndex = -1), e(1), (q = 1); f(b); } } function f(a) { q ? a.data.preventDefault(1) : m && a.data.stopPropagation(); } var g = CKEDITOR.dialog._.dialogDefinitions[b], k = CKEDITOR.tools.clone(U), p = a.config.dialog_buttonsOrder || "OS", l = a.lang.dir, h = {}, q, m; (("OS" == p && CKEDITOR.env.mac) || ("rtl" == p && "ltr" == l) || ("ltr" == p && "rtl" == l)) && k.buttons.reverse(); g = CKEDITOR.tools.extend(g(a), k); g = CKEDITOR.tools.clone(g); g = new M(this, g); k = Z(a); this._ = { editor: a, element: k.element, name: b, model: null, contentSize: { width: 0, height: 0 }, size: { width: 0, height: 0 }, contents: {}, buttons: {}, accessKeyMap: {}, viewportRatio: { width: 0.5, height: 0.5 }, tabs: {}, tabIdList: [], currentTabId: null, currentTabIndex: null, pageCount: 0, lastTab: null, tabBarMode: !1, focusList: [], currentFocusIndex: 0, hasFocus: !1, }; this.parts = k.parts; CKEDITOR.tools.setTimeout( function () { a.fire("ariaWidget", this.parts.contents); }, 0, this ); k = { top: 0, visibility: "hidden" }; CKEDITOR.env.ie6Compat && (k.position = "absolute"); k["rtl" == l ? "right" : "left"] = 0; this.parts.dialog.setStyles(k); CKEDITOR.event.call(this); this.definition = g = CKEDITOR.fire( "dialogDefinition", { name: b, definition: g, dialog: this }, a ).definition; if (!("removeDialogTabs" in a._) && a.config.removeDialogTabs) { k = a.config.removeDialogTabs.split(";"); for (l = 0; l < k.length; l++) if (((p = k[l].split(":")), 2 == p.length)) { var r = p[0]; h[r] || (h[r] = []); h[r].push(p[1]); } a._.removeDialogTabs = h; } if (a._.removeDialogTabs && (h = a._.removeDialogTabs[b])) for (l = 0; l < h.length; l++) g.removeContents(h[l]); if (g.onLoad) this.on("load", g.onLoad); if (g.onShow) this.on("show", g.onShow); if (g.onHide) this.on("hide", g.onHide); if (g.onOk) this.on("ok", function (b) { a.fire("saveSnapshot"); setTimeout(function () { a.fire("saveSnapshot"); }, 0); !1 === g.onOk.call(this, b) && (b.data.hide = !1); }); this.state = CKEDITOR.DIALOG_STATE_IDLE; if (g.onCancel) this.on("cancel", function (a) { !1 === g.onCancel.call(this, a) && (a.data.hide = !1); }); var n = this, t = function (a) { var b = n._.contents, c = !1, d; for (d in b) for (var e in b[d]) if ((c = a.call(this, b[d][e]))) return; }; this.on( "ok", function (a) { t(function (b) { if (b.validate) { var c = b.validate(this), d = "string" == typeof c || !1 === c; d && ((a.data.hide = !1), a.stop()); X.call(b, !d, "string" == typeof c ? c : void 0); return d; } }); }, this, null, 0 ); this.on( "cancel", function (b) { t(function (c) { if (c.isChanged()) return ( a.config.dialog_noConfirmCancel || confirm(a.lang.common.confirmCancel) || (b.data.hide = !1), !0 ); }); }, this, null, 0 ); this.parts.close.on( "click", function (a) { !1 !== this.fire("cancel", { hide: !0 }).hide && this.hide(); a.data.preventDefault(); }, this ); this.changeFocus = e; var z = this._.element; a.focusManager.add(z, 1); this.on("show", function () { z.on("keydown", d, this); if (CKEDITOR.env.gecko) z.on("keypress", f, this); }); this.on("hide", function () { z.removeListener("keydown", d); CKEDITOR.env.gecko && z.removeListener("keypress", f); t(function (a) { Y.apply(a); }); }); this.on("iframeAdded", function (a) { new CKEDITOR.dom.document(a.data.iframe.$.contentWindow.document).on( "keydown", d, this, null, 0 ); }); this.on( "show", function () { c(); var b = 1 < n._.pageCount; a.config.dialog_startupFocusTab && b ? ((n._.tabBarMode = !0), n._.tabs[n._.currentTabId][0].focus(), (n._.currentFocusIndex = -1)) : this._.hasFocus || ((this._.currentFocusIndex = b ? -1 : this._.focusList.length - 1), g.onFocus ? (b = g.onFocus.call(this)) && b.focus() : e(1)); }, this, null, 4294967295 ); if (CKEDITOR.env.ie6Compat) this.on( "load", function () { var a = this.getElement(), b = a.getFirst(); b.remove(); b.appendTo(a); }, this ); ca(this); da(this); new CKEDITOR.dom.text(g.title, CKEDITOR.document).appendTo( this.parts.title ); for (l = 0; l < g.contents.length; l++) (h = g.contents[l]) && this.addPage(h); this.parts.tabs.on( "click", function (a) { var b = a.data.getTarget(); b.hasClass("cke_dialog_tab") && ((b = b.$.id), this.selectPage(b.substring(4, b.lastIndexOf("_"))), I(this), a.data.preventDefault()); }, this ); l = []; h = CKEDITOR.dialog._.uiElementBuilders.hbox .build( this, { type: "hbox", className: "cke_dialog_footer_buttons", widths: [], children: g.buttons, }, l ) .getChild(); this.parts.footer.setHtml(l.join("")); for (l = 0; l < h.length; l++) this._.buttons[h[l].id] = h[l]; }; CKEDITOR.dialog.prototype = { destroy: function () { this.hide(); this._.element.remove(); }, resize: function (a, b) { if ( !this._.contentSize || this._.contentSize.width != a || this._.contentSize.height != b ) { CKEDITOR.dialog.fire( "resize", { dialog: this, width: a, height: b }, this._.editor ); this.fire("resize", { width: a, height: b }, this._.editor); this.parts.contents.setStyles({ width: a + "px", height: b + "px" }); if ("rtl" == this._.editor.lang.dir && this._.position) { var c = this.parts.dialog.getParent().getClientSize().width; this._.position.x = c - this._.contentSize.width - parseInt(this._.element.getFirst().getStyle("right"), 10); } this._.contentSize = { width: a, height: b }; } }, getSize: function () { var a = this._.element.getFirst(); return { width: a.$.offsetWidth || 0, height: a.$.offsetHeight || 0 }; }, move: function (a, b, c) { var e = this._.element.getFirst(), d = "rtl" == this._.editor.lang.dir; CKEDITOR.env.ie && e.setStyle("zoom", "100%"); var f = this.parts.dialog.getParent().getClientSize(), g = this.getSize(), k = this._.viewportRatio, p = Math.max(f.width - g.width, 0), f = Math.max(f.height - g.height, 0); this._.position && this._.position.x == a && this._.position.y == b ? ((a = Math.floor(p * k.width)), (b = Math.floor(f * k.height))) : O(this, a, b); this._.position = { x: a, y: b }; d && (a = p - a); b = { top: (0 < b ? b : 0) + "px" }; b[d ? "right" : "left"] = (0 < a ? a : 0) + "px"; e.setStyles(b); c && (this._.moved = 1); }, getPosition: function () { return CKEDITOR.tools.extend({}, this._.position); }, show: function () { var a = this._.element, b = this.definition, c = CKEDITOR.document.getBody(), e = this._.editor.config.baseFloatZIndex; a.getParent() && a.getParent().equals(c) ? a.setStyle("display", D ? "flex" : "block") : a.appendTo(c); this.resize( (this._.contentSize && this._.contentSize.width) || b.width || b.minWidth, (this._.contentSize && this._.contentSize.height) || b.height || b.minHeight ); this.reset(); null === this._.currentTabId && this.selectPage(this.definition.contents[0].id); null === CKEDITOR.dialog._.currentZIndex && (CKEDITOR.dialog._.currentZIndex = e); this._.element .getFirst() .setStyle("z-index", (CKEDITOR.dialog._.currentZIndex += 10)); this.getElement().setStyle("z-index", CKEDITOR.dialog._.currentZIndex); null === CKEDITOR.dialog._.currentTop ? ((CKEDITOR.dialog._.currentTop = this), (this._.parentDialog = null), P(this._.editor)) : CKEDITOR.dialog._.currentTop !== this && ((this._.parentDialog = CKEDITOR.dialog._.currentTop), (c = this._.parentDialog.getElement().getFirst()), (c.$.style.zIndex -= Math.floor(e / 2)), this._.parentDialog .getElement() .setStyle("z-index", c.$.style.zIndex), (CKEDITOR.dialog._.currentTop = this)); a.on("keydown", R); a.on("keyup", S); this._.hasFocus = !1; for (var d in b.contents) if (b.contents[d]) { var a = b.contents[d], e = this._.tabs[a.id], c = a.requiredContent, f = 0; if (e) { for (var g in this._.contents[a.id]) { var k = this._.contents[a.id][g]; "hbox" != k.type && "vbox" != k.type && k.getInputElement() && (k.requiredContent && !this._.editor.activeFilter.check(k.requiredContent) ? k.disable() : (k.enable(), f++)); } !f || (c && !this._.editor.activeFilter.check(c)) ? e[0].addClass("cke_dialog_tab_disabled") : e[0].removeClass("cke_dialog_tab_disabled"); } } CKEDITOR.tools.setTimeout( function () { this.layout(); ba(this); this.parts.dialog.setStyle("visibility", ""); this.fireOnce("load", {}); CKEDITOR.ui.fire("ready", this); this.fire("show", {}); this._.editor.fire("dialogShow", this); this._.parentDialog || this._.editor.focusManager.lock(); this.foreach(function (a) { a.setInitValue && a.setInitValue(); }); }, 100, this ); }, layout: function () { var a = this.parts.dialog; if (this._.moved || !D) { var b = this.getSize(), c = CKEDITOR.document.getWindow().getViewPaneSize(), e; this._.moved && this._.position ? ((e = this._.position.x), (b = this._.position.y)) : ((e = (c.width - b.width) / 2), (b = (c.height - b.height) / 2)); CKEDITOR.env.ie6Compat || (a.setStyle("position", "absolute"), a.removeStyle("margin")); e = Math.floor(e); b = Math.floor(b); this.move(e, b); } }, foreach: function (a) { for (var b in this._.contents) for (var c in this._.contents[b]) a.call(this, this._.contents[b][c]); return this; }, reset: (function () { var a = function (a) { a.reset && a.reset(1); }; return function () { this.foreach(a); return this; }; })(), setupContent: function () { var a = arguments; this.foreach(function (b) { b.setup && b.setup.apply(b, a); }); }, commitContent: function () { var a = arguments; this.foreach(function (b) { CKEDITOR.env.ie && this._.currentFocusIndex == b.focusIndex && b.getInputElement().$.blur(); b.commit && b.commit.apply(b, a); }); }, hide: function () { if (this.parts.dialog.isVisible()) { this.fire("hide", {}); this._.editor.fire("dialogHide", this); this.selectPage(this._.tabIdList[0]); var a = this._.element; a.setStyle("display", "none"); this.parts.dialog.setStyle("visibility", "hidden"); for (ea(this); CKEDITOR.dialog._.currentTop != this; ) CKEDITOR.dialog._.currentTop.hide(); if (this._.parentDialog) { var b = this._.parentDialog.getElement().getFirst(), c = parseInt(b.$.style.zIndex, 10) + Math.floor(this._.editor.config.baseFloatZIndex / 2); this._.parentDialog.getElement().setStyle("z-index", c); b.setStyle("z-index", c); } else Q(this._.editor); if ((CKEDITOR.dialog._.currentTop = this._.parentDialog)) CKEDITOR.dialog._.currentZIndex -= 10; else { CKEDITOR.dialog._.currentZIndex = null; a.removeListener("keydown", R); a.removeListener("keyup", S); var e = this._.editor; e.focus(); setTimeout(function () { e.focusManager.unlock(); CKEDITOR.env.iOS && e.window.focus(); }, 0); } delete this._.parentDialog; this.foreach(function (a) { a.resetInitValue && a.resetInitValue(); }); this.setState(CKEDITOR.DIALOG_STATE_IDLE); } }, addPage: function (a) { if ( !a.requiredContent || this._.editor.filter.check(a.requiredContent) ) { for ( var b = [], c = a.label ? ' title\x3d"' + CKEDITOR.tools.htmlEncode(a.label) + '"' : "", e = CKEDITOR.dialog._.uiElementBuilders.vbox.build( this, { type: "vbox", className: "cke_dialog_page_contents", children: a.elements, expand: !!a.expand, padding: a.padding, style: a.style || "width: 100%;", }, b ), d = (this._.contents[a.id] = {}), f = e.getChild(), g = 0; (e = f.shift()); ) e.notAllowed || "hbox" == e.type || "vbox" == e.type || g++, (d[e.id] = e), "function" == typeof e.getChild && f.push.apply(f, e.getChild()); g || (a.hidden = !0); b = CKEDITOR.dom.element.createFromHtml(b.join("")); b.setAttribute("role", "tabpanel"); b.setStyle("min-height", "100%"); e = CKEDITOR.env; d = "cke_" + a.id + "_" + CKEDITOR.tools.getNextNumber(); c = CKEDITOR.dom.element.createFromHtml( [ '\x3ca class\x3d"cke_dialog_tab"', 0 < this._.pageCount ? " cke_last" : "cke_first", c, a.hidden ? ' style\x3d"display:none"' : "", ' id\x3d"', d, '"', e.gecko && !e.hc ? "" : ' href\x3d"javascript:void(0)"', ' tabIndex\x3d"-1" hidefocus\x3d"true" role\x3d"tab"\x3e', a.label, "\x3c/a\x3e", ].join("") ); b.setAttribute("aria-labelledby", d); this._.tabs[a.id] = [c, b]; this._.tabIdList.push(a.id); !a.hidden && this._.pageCount++; this._.lastTab = c; this.updateStyle(); b.setAttribute("name", a.id); b.appendTo(this.parts.contents); c.unselectable(); this.parts.tabs.append(c); a.accessKey && (T(this, this, "CTRL+" + a.accessKey, ga, fa), (this._.accessKeyMap["CTRL+" + a.accessKey] = a.id)); } }, selectPage: function (a) { if ( this._.currentTabId != a && !this._.tabs[a][0].hasClass("cke_dialog_tab_disabled") && !1 !== this.fire("selectPage", { page: a, currentPage: this._.currentTabId, }) ) { for (var b in this._.tabs) { var c = this._.tabs[b][0], e = this._.tabs[b][1]; b != a && (c.removeClass("cke_dialog_tab_selected"), c.removeAttribute("aria-selected"), e.hide()); e.setAttribute("aria-hidden", b != a); } var d = this._.tabs[a]; d[0].addClass("cke_dialog_tab_selected"); d[0].setAttribute("aria-selected", !0); CKEDITOR.env.ie6Compat || CKEDITOR.env.ie7Compat ? (K(d[1]), d[1].show(), setTimeout(function () { K(d[1], 1); }, 0)) : d[1].show(); this._.currentTabId = a; this._.currentTabIndex = CKEDITOR.tools.indexOf(this._.tabIdList, a); } }, updateStyle: function () { this.parts.dialog[ (1 === this._.pageCount ? "add" : "remove") + "Class" ]("cke_single_page"); }, hidePage: function (a) { var b = this._.tabs[a] && this._.tabs[a][0]; b && 1 != this._.pageCount && b.isVisible() && (a == this._.currentTabId && this.selectPage(J.call(this)), b.hide(), this._.pageCount--, this.updateStyle()); }, showPage: function (a) { if ((a = this._.tabs[a] && this._.tabs[a][0])) a.show(), this._.pageCount++, this.updateStyle(); }, getElement: function () { return this._.element; }, getName: function () { return this._.name; }, getContentElement: function (a, b) { var c = this._.contents[a]; return c && c[b]; }, getValueOf: function (a, b) { return this.getContentElement(a, b).getValue(); }, setValueOf: function (a, b, c) { return this.getContentElement(a, b).setValue(c); }, getButton: function (a) { return this._.buttons[a]; }, click: function (a) { return this._.buttons[a].click(); }, disableButton: function (a) { return this._.buttons[a].disable(); }, enableButton: function (a) { return this._.buttons[a].enable(); }, getPageCount: function () { return this._.pageCount; }, getParentEditor: function () { return this._.editor; }, getSelectedElement: function () { return this.getParentEditor().getSelection().getSelectedElement(); }, addFocusable: function (a, b) { if ("undefined" == typeof b) (b = this._.focusList.length), this._.focusList.push(new L(this, a, b)); else { this._.focusList.splice(b, 0, new L(this, a, b)); for (var c = b + 1; c < this._.focusList.length; c++) this._.focusList[c].focusIndex++; } }, setState: function (a) { if (this.state != a) { this.state = a; if (a == CKEDITOR.DIALOG_STATE_BUSY) { if (!this.parts.spinner) { var b = this.getParentEditor().lang.dir, c = { attributes: { class: "cke_dialog_spinner" }, styles: { float: "rtl" == b ? "right" : "left" }, }; c.styles["margin-" + ("rtl" == b ? "left" : "right")] = "8px"; this.parts.spinner = CKEDITOR.document.createElement("div", c); this.parts.spinner.setHtml("\x26#8987;"); this.parts.spinner.appendTo(this.parts.title, 1); } this.parts.spinner.show(); this.getButton("ok") && this.getButton("ok").disable(); } else a == CKEDITOR.DIALOG_STATE_IDLE && (this.parts.spinner && this.parts.spinner.hide(), this.getButton("ok") && this.getButton("ok").enable()); this.fire("state", a); } }, getModel: function (a) { return this._.model ? this._.model : this.definition.getModel ? this.definition.getModel(a) : null; }, setModel: function (a) { this._.model = a; }, getMode: function (a) { if (this.definition.getMode) return this.definition.getMode(a); a = this.getModel(a); return !a || (a instanceof CKEDITOR.dom.element && !a.getParent()) ? CKEDITOR.dialog.CREATION_MODE : CKEDITOR.dialog.EDITING_MODE; }, }; CKEDITOR.tools.extend(CKEDITOR.dialog, { CREATION_MODE: 0, EDITING_MODE: 1, add: function (a, b) { (this._.dialogDefinitions[a] && "function" != typeof b) || (this._.dialogDefinitions[a] = b); }, exists: function (a) { return !!this._.dialogDefinitions[a]; }, getCurrent: function () { return CKEDITOR.dialog._.currentTop; }, isTabEnabled: function (a, b, c) { a = a.config.removeDialogTabs; return !( a && a.match(new RegExp("(?:^|;)" + b + ":" + c + "(?:$|;)", "i")) ); }, okButton: (function () { var a = function (a, c) { c = c || {}; return CKEDITOR.tools.extend( { id: "ok", type: "button", label: a.lang.common.ok, class: "cke_dialog_ui_button_ok", onClick: function (a) { a = a.data.dialog; !1 !== a.fire("ok", { hide: !0 }).hide && a.hide(); }, }, c, !0 ); }; a.type = "button"; a.override = function (b) { return CKEDITOR.tools.extend( function (c) { return a(c, b); }, { type: "button" }, !0 ); }; return a; })(), cancelButton: (function () { var a = function (a, c) { c = c || {}; return CKEDITOR.tools.extend( { id: "cancel", type: "button", label: a.lang.common.cancel, class: "cke_dialog_ui_button_cancel", onClick: function (a) { a = a.data.dialog; !1 !== a.fire("cancel", { hide: !0 }).hide && a.hide(); }, }, c, !0 ); }; a.type = "button"; a.override = function (b) { return CKEDITOR.tools.extend( function (c) { return a(c, b); }, { type: "button" }, !0 ); }; return a; })(), addUIElement: function (a, b) { this._.uiElementBuilders[a] = b; }, }); CKEDITOR.dialog._ = { uiElementBuilders: {}, dialogDefinitions: {}, currentTop: null, currentZIndex: null, }; CKEDITOR.event.implementOn(CKEDITOR.dialog); CKEDITOR.event.implementOn(CKEDITOR.dialog.prototype); U = { resizable: CKEDITOR.DIALOG_RESIZE_BOTH, minWidth: 600, minHeight: 400, buttons: [CKEDITOR.dialog.okButton, CKEDITOR.dialog.cancelButton], }; var E = function (a, b, c) { for (var e = 0, d; (d = a[e]); e++) if (d.id == b || (c && d[c] && (d = E(d[c], b, c)))) return d; return null; }, F = function (a, b, c, e, d) { if (c) { for (var f = 0, g; (g = a[f]); f++) { if (g.id == c) return a.splice(f, 0, b), b; if (e && g[e] && (g = F(g[e], b, c, e, !0))) return g; } if (d) return null; } a.push(b); return b; }, G = function (a, b, c) { for (var e = 0, d; (d = a[e]); e++) { if (d.id == b) return a.splice(e, 1); if (c && d[c] && (d = G(d[c], b, c))) return d; } return null; }; M.prototype = { getContents: function (a) { return E(this.contents, a); }, getButton: function (a) { return E(this.buttons, a); }, addContents: function (a, b) { return F(this.contents, a, b); }, addButton: function (a, b) { return F(this.buttons, a, b); }, removeContents: function (a) { G(this.contents, a); }, removeButton: function (a) { G(this.buttons, a); }, }; N.prototype = { get: function (a) { return E(this.elements, a, "children"); }, add: function (a, b) { return F(this.elements, a, b, "children"); }, remove: function (a) { G(this.elements, a, "children"); }, }; var B = {}, x = {}; (function () { CKEDITOR.ui.dialog = { uiElement: function (a, b, c, e, d, f, g) { if (!(4 > arguments.length)) { var k = (e.call ? e(b) : e) || "div", p = ["\x3c", k, " "], l = (d && d.call ? d(b) : d) || {}, h = (f && f.call ? f(b) : f) || {}, q = (g && g.call ? g.call(this, a, b) : g) || "", m = (this.domId = h.id || CKEDITOR.tools.getNextId() + "_uiElement"); b.requiredContent && !a.getParentEditor().filter.check(b.requiredContent) && ((l.display = "none"), (this.notAllowed = !0)); h.id = m; var r = {}; b.type && (r["cke_dialog_ui_" + b.type] = 1); b.className && (r[b.className] = 1); b.disabled && (r.cke_disabled = 1); for ( var n = h["class"] && h["class"].split ? h["class"].split(" ") : [], m = 0; m < n.length; m++ ) n[m] && (r[n[m]] = 1); n = []; for (m in r) n.push(m); h["class"] = n.join(" "); b.title && (h.title = b.title); r = (b.style || "").split(";"); b.align && ((n = b.align), (l["margin-left"] = "left" == n ? 0 : "auto"), (l["margin-right"] = "right" == n ? 0 : "auto")); for (m in l) r.push(m + ":" + l[m]); b.hidden && r.push("display:none"); for (m = r.length - 1; 0 <= m; m--) "" === r[m] && r.splice(m, 1); 0 < r.length && (h.style = (h.style ? h.style + "; " : "") + r.join("; ")); for (m in h) p.push(m + '\x3d"' + CKEDITOR.tools.htmlEncode(h[m]) + '" '); p.push("\x3e", q, "\x3c/", k, "\x3e"); c.push(p.join("")); (this._ || (this._ = {})).dialog = a; "boolean" == typeof b.isChanged && (this.isChanged = function () { return b.isChanged; }); "function" == typeof b.isChanged && (this.isChanged = b.isChanged); "function" == typeof b.setValue && (this.setValue = CKEDITOR.tools.override( this.setValue, function (a) { return function (c) { a.call(this, b.setValue.call(this, c)); }; } )); "function" == typeof b.getValue && (this.getValue = CKEDITOR.tools.override( this.getValue, function (a) { return function () { return b.getValue.call(this, a.call(this)); }; } )); CKEDITOR.event.implementOn(this); this.registerEvents(b); this.accessKeyUp && this.accessKeyDown && b.accessKey && T(this, a, "CTRL+" + b.accessKey); var t = this; a.on("load", function () { var b = t.getInputElement(); if (b) { var c = t.type in { checkbox: 1, ratio: 1 } && CKEDITOR.env.ie && 8 > CKEDITOR.env.version ? "cke_dialog_ui_focused" : ""; b.on("focus", function () { a._.tabBarMode = !1; a._.hasFocus = !0; t.fire("focus"); c && this.addClass(c); }); b.on("blur", function () { t.fire("blur"); c && this.removeClass(c); }); } }); CKEDITOR.tools.extend(this, b); this.keyboardFocusable && ((this.tabIndex = b.tabIndex || 0), (this.focusIndex = a._.focusList.push(this) - 1), this.on("focus", function () { a._.currentFocusIndex = t.focusIndex; })); } }, hbox: function (a, b, c, e, d) { if (!(4 > arguments.length)) { this._ || (this._ = {}); var f = (this._.children = b), g = (d && d.widths) || null, k = (d && d.height) || null, p, l = { role: "presentation" }; d && d.align && (l.align = d.align); CKEDITOR.ui.dialog.uiElement.call( this, a, d || { type: "hbox" }, e, "table", {}, l, function () { var a = [ '\x3ctbody\x3e\x3ctr class\x3d"cke_dialog_ui_hbox"\x3e', ]; for (p = 0; p < c.length; p++) { var b = "cke_dialog_ui_hbox_child", e = []; 0 === p && (b = "cke_dialog_ui_hbox_first"); p == c.length - 1 && (b = "cke_dialog_ui_hbox_last"); a.push('\x3ctd class\x3d"', b, '" role\x3d"presentation" '); g ? g[p] && e.push("width:" + y(g[p])) : e.push("width:" + Math.floor(100 / c.length) + "%"); k && e.push("height:" + y(k)); d && void 0 !== d.padding && e.push("padding:" + y(d.padding)); CKEDITOR.env.ie && CKEDITOR.env.quirks && f[p].align && e.push("text-align:" + f[p].align); 0 < e.length && a.push('style\x3d"' + e.join("; ") + '" '); a.push("\x3e", c[p], "\x3c/td\x3e"); } a.push("\x3c/tr\x3e\x3c/tbody\x3e"); return a.join(""); } ); } }, vbox: function (a, b, c, e, d) { if (!(3 > arguments.length)) { this._ || (this._ = {}); var f = (this._.children = b), g = (d && d.width) || null, k = (d && d.heights) || null; CKEDITOR.ui.dialog.uiElement.call( this, a, d || { type: "vbox" }, e, "div", null, { role: "presentation" }, function () { var b = [ '\x3ctable role\x3d"presentation" cellspacing\x3d"0" border\x3d"0" ', ]; b.push('style\x3d"'); d && d.expand && b.push("height:100%;"); b.push("width:" + y(g || "100%"), ";"); CKEDITOR.env.webkit && b.push("float:none;"); b.push('"'); b.push( 'align\x3d"', CKEDITOR.tools.htmlEncode( (d && d.align) || ("ltr" == a.getParentEditor().lang.dir ? "left" : "right") ), '" ' ); b.push("\x3e\x3ctbody\x3e"); for (var e = 0; e < c.length; e++) { var h = []; b.push('\x3ctr\x3e\x3ctd role\x3d"presentation" '); g && h.push("width:" + y(g || "100%")); k ? h.push("height:" + y(k[e])) : d && d.expand && h.push("height:" + Math.floor(100 / c.length) + "%"); d && void 0 !== d.padding && h.push("padding:" + y(d.padding)); CKEDITOR.env.ie && CKEDITOR.env.quirks && f[e].align && h.push("text-align:" + f[e].align); 0 < h.length && b.push('style\x3d"', h.join("; "), '" '); b.push( ' class\x3d"cke_dialog_ui_vbox_child"\x3e', c[e], "\x3c/td\x3e\x3c/tr\x3e" ); } b.push("\x3c/tbody\x3e\x3c/table\x3e"); return b.join(""); } ); } }, }; })(); CKEDITOR.ui.dialog.uiElement.prototype = { getElement: function () { return CKEDITOR.document.getById(this.domId); }, getInputElement: function () { return this.getElement(); }, getDialog: function () { return this._.dialog; }, setValue: function (a, b) { this.getInputElement().setValue(a); !b && this.fire("change", { value: a }); return this; }, getValue: function () { return this.getInputElement().getValue(); }, isChanged: function () { return !1; }, selectParentTab: function () { for ( var a = this.getInputElement(); (a = a.getParent()) && -1 == a.$.className.search("cke_dialog_page_contents"); ); if (!a) return this; a = a.getAttribute("name"); this._.dialog._.currentTabId != a && this._.dialog.selectPage(a); return this; }, focus: function () { this.selectParentTab().getInputElement().focus(); return this; }, registerEvents: function (a) { var b = /^on([A-Z]\w+)/, c, e = function (a, b, c, d) { b.on("load", function () { a.getInputElement().on(c, d, a); }); }, d; for (d in a) if ((c = d.match(b))) this.eventProcessors[d] ? this.eventProcessors[d].call(this, this._.dialog, a[d]) : e(this, this._.dialog, c[1].toLowerCase(), a[d]); return this; }, eventProcessors: { onLoad: function (a, b) { a.on("load", b, this); }, onShow: function (a, b) { a.on("show", b, this); }, onHide: function (a, b) { a.on("hide", b, this); }, }, accessKeyDown: function () { this.focus(); }, accessKeyUp: function () {}, disable: function () { var a = this.getElement(); this.getInputElement().setAttribute("disabled", "true"); a.addClass("cke_disabled"); }, enable: function () { var a = this.getElement(); this.getInputElement().removeAttribute("disabled"); a.removeClass("cke_disabled"); }, isEnabled: function () { return !this.getElement().hasClass("cke_disabled"); }, isVisible: function () { return this.getInputElement().isVisible(); }, isFocusable: function () { return this.isEnabled() && this.isVisible() ? !0 : !1; }, }; CKEDITOR.ui.dialog.hbox.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.uiElement(), { getChild: function (a) { if (1 > arguments.length) return this._.children.concat(); a.splice || (a = [a]); return 2 > a.length ? this._.children[a[0]] : this._.children[a[0]] && this._.children[a[0]].getChild ? this._.children[a[0]].getChild(a.slice(1, a.length)) : null; }, }, !0 ); CKEDITOR.ui.dialog.vbox.prototype = new CKEDITOR.ui.dialog.hbox(); (function () { var a = { build: function (a, c, e) { for ( var d = c.children, f, g = [], k = [], p = 0; p < d.length && (f = d[p]); p++ ) { var l = []; g.push(l); k.push(CKEDITOR.dialog._.uiElementBuilders[f.type].build(a, f, l)); } return new CKEDITOR.ui.dialog[c.type](a, k, g, e, c); }, }; CKEDITOR.dialog.addUIElement("hbox", a); CKEDITOR.dialog.addUIElement("vbox", a); })(); CKEDITOR.dialogCommand = function (a, b) { this.dialogName = a; CKEDITOR.tools.extend(this, b, !0); }; CKEDITOR.dialogCommand.prototype = { exec: function (a) { var b = this.tabId; a.openDialog(this.dialogName, function (a) { b && a.selectPage(b); }); }, canUndo: !1, editorFocus: 1, }; (function () { var a = /^\d*$/, b = /^\d*(?:\.\d+)?$/, c = /^(((\d*(\.\d+))|(\d*))(px|\%)?)?$/, e = /^(((\d*(\.\d+))|(\d*))(px|em|ex|in|cm|mm|pt|pc|\%)?)?$/i, d = /^(--|-?([a-zA-Z_]|\\))(\\|[a-zA-Z0-9-_])*\s*?:\s*?[^:;]+$/; CKEDITOR.VALIDATE_OR = 1; CKEDITOR.VALIDATE_AND = 2; CKEDITOR.dialog.validate = { functions: function () { var a = arguments; return function (b) { this && this.getValue && (b = this.getValue()); var c, d = CKEDITOR.VALIDATE_AND, e = [], h; for (h = 0; h < a.length; h++) if ("function" == typeof a[h]) e.push(a[h]); else break; h < a.length && "string" == typeof a[h] && ((c = a[h]), h++); h < a.length && "number" == typeof a[h] && (d = a[h]); h = d == CKEDITOR.VALIDATE_AND; for (var q = 0; q < e.length; q++) { var m = !0 === e[q](b); h = d == CKEDITOR.VALIDATE_AND ? h && m : h || m; } return h ? !0 : c; }; }, regex: function (a, b) { return this.functions(function (b) { return a.test(b); }, b); }, notEmpty: function (a) { return this.functions(function (a) { return ( 0 < a.replace( RegExp( "^[\\u0020\\u00a0\\u1680\\u202f\\u205f\\u3000\\u2000-\\u200a\\s]+|[\\u0020\\u00a0\\u1680\\u202f\\u205f\\u3000\\u2000-\\u200a\\s]+$", "g" ), "" ).length ); }, a); }, integer: function (b) { return this.regex(a, b); }, number: function (a) { return this.regex(b, a); }, cssLength: function (a) { return this.functions(function (a) { return e.test(CKEDITOR.tools.trim(a)); }, a); }, htmlLength: function (a) { return this.functions(function (a) { return c.test(CKEDITOR.tools.trim(a)); }, a); }, inlineStyle: function (a) { return this.functions(function (a) { a = CKEDITOR.tools.trim(a).split(";"); "" === a[a.length - 1] && a.pop(); return CKEDITOR.tools.array.every(a, function (a) { return d.test(CKEDITOR.tools.trim(a)); }); }, a); }, equals: function (a, b) { return this.functions(function (b) { return b == a; }, b); }, notEqual: function (a, b) { return this.functions(function (b) { return b != a; }, b); }, }; CKEDITOR.on("instanceDestroyed", function (a) { if (CKEDITOR.tools.isEmpty(CKEDITOR.instances)) { for (var b; (b = CKEDITOR.dialog._.currentTop); ) b.hide(); for (var c in B) B[c].remove(); B = {}; } a = a.editor._.storedDialogs; for (var d in a) a[d].destroy(); }); })(); CKEDITOR.tools.extend(CKEDITOR.editor.prototype, { openDialog: function (a, b, c) { var e = null, d = CKEDITOR.dialog._.dialogDefinitions[a]; null === CKEDITOR.dialog._.currentTop && P(this); if ("function" == typeof d) (d = this._.storedDialogs || (this._.storedDialogs = {})), (e = d[a] || (d[a] = new CKEDITOR.dialog(this, a))), e.setModel(c), b && b.call(e, e), e.show(); else { if ("failed" == d) throw ( (Q(this), Error( '[CKEDITOR.dialog.openDialog] Dialog "' + a + '" failed when loading definition.' )) ); "string" == typeof d && CKEDITOR.scriptLoader.load( CKEDITOR.getUrl(d), function () { "function" != typeof CKEDITOR.dialog._.dialogDefinitions[a] && (CKEDITOR.dialog._.dialogDefinitions[a] = "failed"); this.openDialog(a, b, c); }, this, 0, 1 ); } CKEDITOR.skin.loadPart("dialog"); if (e) e.once( "hide", function () { e.setModel(null); }, null, null, 999 ); return e; }, }); CKEDITOR.plugins.add("dialog", { requires: "dialogui", init: function (a) { V || (CKEDITOR.document.appendStyleSheet(this.path + "styles/dialog.css"), (V = !0)); a.on( "doubleclick", function (b) { b.data.dialog && a.openDialog(b.data.dialog); }, null, null, 999 ); }, }); })(); CKEDITOR.plugins.add("about", { requires: "dialog", init: function (a) { var b = a.addCommand("about", new CKEDITOR.dialogCommand("about")); b.modes = { wysiwyg: 1, source: 1 }; b.canUndo = !1; b.readOnly = 1; a.ui.addButton && a.ui.addButton("About", { label: a.lang.about.dlgTitle, command: "about", toolbar: "about", }); CKEDITOR.dialog.add("about", this.path + "dialogs/about.js"); }, }); (function () { CKEDITOR.plugins.add("a11yhelp", { requires: "dialog", availableLangs: { af: 1, ar: 1, az: 1, bg: 1, ca: 1, cs: 1, cy: 1, da: 1, de: 1, "de-ch": 1, el: 1, en: 1, "en-au": 1, "en-gb": 1, eo: 1, es: 1, "es-mx": 1, et: 1, eu: 1, fa: 1, fi: 1, fo: 1, fr: 1, "fr-ca": 1, gl: 1, gu: 1, he: 1, hi: 1, hr: 1, hu: 1, id: 1, it: 1, ja: 1, km: 1, ko: 1, ku: 1, lt: 1, lv: 1, mk: 1, mn: 1, nb: 1, nl: 1, no: 1, oc: 1, pl: 1, pt: 1, "pt-br": 1, ro: 1, ru: 1, si: 1, sk: 1, sl: 1, sq: 1, sr: 1, "sr-latn": 1, sv: 1, th: 1, tr: 1, tt: 1, ug: 1, uk: 1, vi: 1, zh: 1, "zh-cn": 1, }, init: function (b) { var c = this; b.addCommand("a11yHelp", { exec: function () { var a = b.langCode, a = c.availableLangs[a] ? a : c.availableLangs[a.replace(/-.*/, "")] ? a.replace(/-.*/, "") : "en"; CKEDITOR.scriptLoader.load( CKEDITOR.getUrl(c.path + "dialogs/lang/" + a + ".js"), function () { b.lang.a11yhelp = c.langEntries[a]; b.openDialog("a11yHelp"); } ); }, modes: { wysiwyg: 1, source: 1 }, readOnly: 1, canUndo: !1, }); b.setKeystroke(CKEDITOR.ALT + 48, "a11yHelp"); CKEDITOR.dialog.add("a11yHelp", this.path + "dialogs/a11yhelp.js"); b.on("ariaEditorHelpLabel", function (a) { a.data.label = b.lang.common.editorHelp; }); }, }); })(); (function () { function f(c) { var a = this.att; c = (c && c.hasAttribute(a) && c.getAttribute(a)) || ""; void 0 !== c && this.setValue(c); } function g() { for (var c, a = 0; a < arguments.length; a++) if (arguments[a] instanceof CKEDITOR.dom.element) { c = arguments[a]; break; } if (c) { var a = this.att, b = this.getValue(); b ? c.setAttribute(a, b) : c.removeAttribute(a, b); } } var k = { id: 1, dir: 1, classes: 1, styles: 1 }; CKEDITOR.plugins.add("dialogadvtab", { requires: "dialog", allowedContent: function (c) { c || (c = k); var a = []; c.id && a.push("id"); c.dir && a.push("dir"); var b = ""; a.length && (b += "[" + a.join(",") + "]"); c.classes && (b += "(*)"); c.styles && (b += "{*}"); return b; }, createAdvancedTab: function (c, a, b) { a || (a = k); var d = c.lang.common, h = { id: "advanced", label: d.advancedTab, title: d.advancedTab, elements: [{ type: "vbox", padding: 1, children: [] }], }, e = []; if (a.id || a.dir) a.id && e.push({ id: "advId", att: "id", type: "text", requiredContent: b ? b + "[id]" : null, label: d.id, setup: f, commit: g, }), a.dir && e.push({ id: "advLangDir", att: "dir", type: "select", requiredContent: b ? b + "[dir]" : null, label: d.langDir, default: "", style: "width:100%", items: [ [d.notSet, ""], [d.langDirLTR, "ltr"], [d.langDirRTL, "rtl"], ], setup: f, commit: g, }), h.elements[0].children.push({ type: "hbox", widths: ["50%", "50%"], children: [].concat(e), }); if (a.styles || a.classes) (e = []), a.styles && e.push({ id: "advStyles", att: "style", type: "text", requiredContent: b ? b + "{cke-xyz}" : null, label: d.styles, default: "", validate: CKEDITOR.dialog.validate.inlineStyle( d.invalidInlineStyle ), onChange: function () {}, getStyle: function (a, c) { var b = this.getValue().match( new RegExp("(?:^|;)\\s*" + a + "\\s*:\\s*([^;]*)", "i") ); return b ? b[1] : c; }, updateStyle: function (a, b) { var d = this.getValue(), e = c.document.createElement("span"); e.setAttribute("style", d); e.setStyle(a, b); d = CKEDITOR.tools.normalizeCssText(e.getAttribute("style")); this.setValue(d, 1); }, setup: f, commit: g, }), a.classes && e.push({ type: "hbox", widths: ["45%", "55%"], children: [ { id: "advCSSClasses", att: "class", type: "text", requiredContent: b ? b + "(cke-xyz)" : null, label: d.cssClasses, default: "", setup: f, commit: g, }, ], }), h.elements[0].children.push({ type: "hbox", widths: ["50%", "50%"], children: [].concat(e), }); return h; }, }); })(); CKEDITOR.plugins.add("basicstyles", { init: function (a) { var f = 0, d = function (h, d, c, b) { if (b) { b = new CKEDITOR.style(b); var g = e[c]; g.unshift(b); a.attachStyleStateChange(b, function (b) { !a.readOnly && a.getCommand(c).setState(b); }); a.addCommand(c, new CKEDITOR.styleCommand(b, { contentForms: g })); a.ui.addButton && a.ui.addButton(h, { isToggle: !0, label: d, command: c, toolbar: "basicstyles," + (f += 10), }); } }, e = { bold: [ "strong", "b", [ "span", function (a) { a = a.styles["font-weight"]; return "bold" == a || 700 <= +a; }, ], ], italic: [ "em", "i", [ "span", function (a) { return "italic" == a.styles["font-style"]; }, ], ], underline: [ "u", [ "span", function (a) { return "underline" == a.styles["text-decoration"]; }, ], ], strike: [ "s", "strike", [ "span", function (a) { return "line-through" == a.styles["text-decoration"]; }, ], ], subscript: ["sub"], superscript: ["sup"], }, c = a.config, b = a.lang.basicstyles; d("Bold", b.bold, "bold", c.coreStyles_bold); d("Italic", b.italic, "italic", c.coreStyles_italic); d("Underline", b.underline, "underline", c.coreStyles_underline); d("Strike", b.strike, "strike", c.coreStyles_strike); d("Subscript", b.subscript, "subscript", c.coreStyles_subscript); d("Superscript", b.superscript, "superscript", c.coreStyles_superscript); a.setKeystroke([ [CKEDITOR.CTRL + 66, "bold"], [CKEDITOR.CTRL + 73, "italic"], [CKEDITOR.CTRL + 85, "underline"], ]); }, afterInit: function (a) { if (a.config.coreStyles_toggleSubSup) { var f = a.getCommand("subscript"), d = a.getCommand("superscript"); if (f && d) a.on("afterCommandExec", function (e) { e = e.data.name; if ("subscript" === e || "superscript" === e) { var c = "subscript" === e ? d : f; ("subscript" === e ? f : d).state === CKEDITOR.TRISTATE_ON && c.state === CKEDITOR.TRISTATE_ON && (c.exec(a), a.fire("updateSnapshot")); } }); } }, }); CKEDITOR.config.coreStyles_bold = { element: "strong", overrides: "b" }; CKEDITOR.config.coreStyles_italic = { element: "em", overrides: "i" }; CKEDITOR.config.coreStyles_underline = { element: "u" }; CKEDITOR.config.coreStyles_strike = { element: "s", overrides: "strike" }; CKEDITOR.config.coreStyles_subscript = { element: "sub" }; CKEDITOR.config.coreStyles_superscript = { element: "sup" }; CKEDITOR.config.coreStyles_toggleSubSup = !1; (function () { function q(a, f, e, b) { if (!a.isReadOnly() && !a.equals(e.editable())) { CKEDITOR.dom.element.setMarker(b, a, "bidi_processed", 1); b = a; for (var c = e.editable(); (b = b.getParent()) && !b.equals(c); ) if (b.getCustomData("bidi_processed")) { a.removeStyle("direction"); a.removeAttribute("dir"); return; } b = e.config.useComputedState; (b ? a.getComputedStyle("direction") : a.getStyle("direction") || a.hasAttribute("dir")) != f && (a.removeStyle("direction"), b ? (a.removeAttribute("dir"), f != a.getComputedStyle("direction") && a.setAttribute("dir", f)) : a.setAttribute("dir", f), e.forceNextSelectionCheck()); } } function v(a, f, e) { var b = a.getCommonAncestor(!1, !0); a = a.clone(); a.enlarge( e == CKEDITOR.ENTER_BR ? CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS : CKEDITOR.ENLARGE_BLOCK_CONTENTS ); if ( a.checkBoundaryOfElement(b, CKEDITOR.START) && a.checkBoundaryOfElement(b, CKEDITOR.END) ) { for ( var c; b && b.type == CKEDITOR.NODE_ELEMENT && (c = b.getParent()) && 1 == c.getChildCount() && !(b.getName() in f); ) b = c; return b.type == CKEDITOR.NODE_ELEMENT && b.getName() in f && b; } } function p(a) { return { context: "p", allowedContent: { "h1 h2 h3 h4 h5 h6 table ul ol blockquote div tr p div li td": { propertiesOnly: !0, attributes: "dir", }, }, requiredContent: "p[dir]", refresh: function (a, e) { var b = a.config.useComputedState, c; if (!b) { c = e.lastElement; for ( var h = a.editable(); c && !(c.getName() in u || c.equals(h)); ) { var d = c.getParent(); if (!d) break; c = d; } } c = c || e.block || e.blockLimit; c.equals(a.editable()) && (h = a.getSelection().getRanges()[0].getEnclosedNode()) && h.type == CKEDITOR.NODE_ELEMENT && (c = h); c && ((b = b ? c.getComputedStyle("direction") : c.getStyle("direction") || c.getAttribute("dir")), a .getCommand("bidirtl") .setState( "rtl" == b ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF ), a .getCommand("bidiltr") .setState( "ltr" == b ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF )); b = (e.block || e.blockLimit || a.editable()).getDirection(1); b != (a._.selDir || a.lang.dir) && ((a._.selDir = b), a.fire("contentDirChanged", b)); }, exec: function (f) { var e = f.getSelection(), b = f.config.enterMode, c = e.getRanges(); if (c && c.length) { for ( var h = {}, d = e.createBookmarks(), c = c.createIterator(), g, l = 0; (g = c.getNextRange(1)); ) { var k = g.getEnclosedNode(); (k && (!k || (k.type == CKEDITOR.NODE_ELEMENT && k.getName() in r))) || (k = v(g, t, b)); k && q(k, a, f, h); var m = new CKEDITOR.dom.walker(g), n = d[l].startNode, p = d[l++].endNode; m.evaluator = function (a) { var c = b == CKEDITOR.ENTER_P ? "p" : "div", d; if ( (d = (a ? a.type == CKEDITOR.NODE_ELEMENT : !1) && a.getName() in t) ) { if ((c = a.is(c))) c = (c = a.getParent()) ? c.type == CKEDITOR.NODE_ELEMENT : !1; d = !(c && a.getParent().is("blockquote")); } return !!( d && a.getPosition(n) & CKEDITOR.POSITION_FOLLOWING && (a.getPosition(p) & (CKEDITOR.POSITION_PRECEDING + CKEDITOR.POSITION_CONTAINS)) == CKEDITOR.POSITION_PRECEDING ); }; for (; (k = m.next()); ) q(k, a, f, h); g = g.createIterator(); for ( g.enlargeBr = b != CKEDITOR.ENTER_BR; (k = g.getNextParagraph(b == CKEDITOR.ENTER_P ? "p" : "div")); ) q(k, a, f, h); } CKEDITOR.dom.element.clearAllMarkers(h); f.forceNextSelectionCheck(); e.selectBookmarks(d); f.focus(); } }, }; } function w(a) { var f = a == l.setAttribute, e = a == l.removeAttribute, b = /\bdirection\s*:\s*(.*?)\s*(:?$|;)/; return function (c, h) { if (!this.isReadOnly()) { var d; if ( (d = c == (f || e ? "dir" : "direction") || ("style" == c && (e || b.test(h)))) ) { a: { d = this; for (var g = d.getDocument().getBody().getParent(); d; ) { if (d.equals(g)) { d = !1; break a; } d = d.getParent(); } d = !0; } d = !d; } if ( d && ((d = this.getDirection(1)), (g = a.apply(this, arguments)), d != this.getDirection(1)) ) return this.getDocument().fire("dirChanged", this), g; } return a.apply(this, arguments); }; } var t = { table: 1, ul: 1, ol: 1, blockquote: 1, div: 1 }, r = {}, u = {}; CKEDITOR.tools.extend(r, t, { tr: 1, p: 1, div: 1, li: 1 }); CKEDITOR.tools.extend(u, r, { td: 1 }); CKEDITOR.plugins.add("bidi", { init: function (a) { function f(b, c, e, d, f) { a.addCommand(e, new CKEDITOR.command(a, d)); a.ui.addButton && a.ui.addButton(b, { isToggle: !0, label: c, command: e, toolbar: "bidi," + f, }); } if (!a.blockless) { var e = a.lang.bidi; f("BidiLtr", e.ltr, "bidiltr", p("ltr"), 10); f("BidiRtl", e.rtl, "bidirtl", p("rtl"), 20); a.on("contentDom", function () { a.document.on("dirChanged", function (b) { a.fire("dirChanged", { node: b.data, dir: b.data.getDirection(1), }); }); }); a.on("contentDirChanged", function (b) { b = (a.lang.dir != b.data ? "add" : "remove") + "Class"; var c = a.ui.space(a.config.toolbarLocation); if (c) c[b]("cke_mixed_dir_content"); }); } }, }); for ( var l = CKEDITOR.dom.element.prototype, n = ["setStyle", "removeStyle", "setAttribute", "removeAttribute"], m = 0; m < n.length; m++ ) l[n[m]] = CKEDITOR.tools.override(l[n[m]], w); })(); (function () { var m = { exec: function (g) { var a = g.getCommand("blockquote").state, k = g.getSelection(), c = k && k.getRanges()[0]; if (c) { var h = k.createBookmarks(); if (CKEDITOR.env.ie) { var e = h[0].startNode, b = h[0].endNode, d; if (e && "blockquote" == e.getParent().getName()) for (d = e; (d = d.getNext()); ) if (d.type == CKEDITOR.NODE_ELEMENT && d.isBlockBoundary()) { e.move(d, !0); break; } if (b && "blockquote" == b.getParent().getName()) for (d = b; (d = d.getPrevious()); ) if (d.type == CKEDITOR.NODE_ELEMENT && d.isBlockBoundary()) { b.move(d); break; } } var f = c.createIterator(); f.enlargeBr = g.config.enterMode != CKEDITOR.ENTER_BR; if (a == CKEDITOR.TRISTATE_OFF) { for (e = []; (a = f.getNextParagraph()); ) e.push(a); 1 > e.length && ((a = g.document.createElement( g.config.enterMode == CKEDITOR.ENTER_P ? "p" : "div" )), (b = h.shift()), c.insertNode(a), a.append(new CKEDITOR.dom.text("", g.document)), c.moveToBookmark(b), c.selectNodeContents(a), c.collapse(!0), (b = c.createBookmark()), e.push(a), h.unshift(b)); d = e[0].getParent(); c = []; for (b = 0; b < e.length; b++) (a = e[b]), (d = d.getCommonAncestor(a.getParent())); for ( a = { table: 1, tbody: 1, tr: 1, ol: 1, ul: 1 }; a[d.getName()]; ) d = d.getParent(); for (b = null; 0 < e.length; ) { for (a = e.shift(); !a.getParent().equals(d); ) a = a.getParent(); a.equals(b) || c.push(a); b = a; } for (; 0 < c.length; ) if (((a = c.shift()), "blockquote" == a.getName())) { for ( b = new CKEDITOR.dom.documentFragment(g.document); a.getFirst(); ) b.append(a.getFirst().remove()), e.push(b.getLast()); b.replace(a); } else e.push(a); c = g.document.createElement("blockquote"); for (c.insertBefore(e[0]); 0 < e.length; ) (a = e.shift()), c.append(a); } else if (a == CKEDITOR.TRISTATE_ON) { b = []; for (d = {}; (a = f.getNextParagraph()); ) { for (e = c = null; a.getParent(); ) { if ("blockquote" == a.getParent().getName()) { c = a.getParent(); e = a; break; } a = a.getParent(); } c && e && !e.getCustomData("blockquote_moveout") && (b.push(e), CKEDITOR.dom.element.setMarker(d, e, "blockquote_moveout", !0)); } CKEDITOR.dom.element.clearAllMarkers(d); a = []; e = []; for (d = {}; 0 < b.length; ) (f = b.shift()), (c = f.getParent()), f.getPrevious() ? f.getNext() ? (f.breakParent(f.getParent()), e.push(f.getNext())) : f.remove().insertAfter(c) : f.remove().insertBefore(c), c.getCustomData("blockquote_processed") || (e.push(c), CKEDITOR.dom.element.setMarker( d, c, "blockquote_processed", !0 )), a.push(f); CKEDITOR.dom.element.clearAllMarkers(d); for (b = e.length - 1; 0 <= b; b--) { c = e[b]; a: { d = c; for ( var f = 0, m = d.getChildCount(), l = void 0; f < m && (l = d.getChild(f)); f++ ) if (l.type == CKEDITOR.NODE_ELEMENT && l.isBlockBoundary()) { d = !1; break a; } d = !0; } d && c.remove(); } if (g.config.enterMode == CKEDITOR.ENTER_BR) for (c = !0; a.length; ) if (((f = a.shift()), "div" == f.getName())) { b = new CKEDITOR.dom.documentFragment(g.document); !c || !f.getPrevious() || (f.getPrevious().type == CKEDITOR.NODE_ELEMENT && f.getPrevious().isBlockBoundary()) || b.append(g.document.createElement("br")); for ( c = f.getNext() && !( f.getNext().type == CKEDITOR.NODE_ELEMENT && f.getNext().isBlockBoundary() ); f.getFirst(); ) f.getFirst().remove().appendTo(b); c && b.append(g.document.createElement("br")); b.replace(f); c = !1; } } k.selectBookmarks(h); g.focus(); } }, refresh: function (g, a) { this.setState( g.elementPath(a.block || a.blockLimit).contains("blockquote", 1) ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF ); }, context: "blockquote", allowedContent: "blockquote", requiredContent: "blockquote", }; CKEDITOR.plugins.add("blockquote", { init: function (g) { g.blockless || (g.addCommand("blockquote", m), g.ui.addButton && g.ui.addButton("Blockquote", { isToggle: !0, label: g.lang.blockquote.toolbar, command: "blockquote", toolbar: "blocks,10", })); }, }); })(); (function () { function q(b, a) { CKEDITOR.tools.extend(this, a, { editor: b, id: "cke-" + CKEDITOR.tools.getUniqueId(), area: b._.notificationArea, }); a.type || (this.type = "info"); this.element = this._createElement(); b.plugins.clipboard && CKEDITOR.plugins.clipboard.preventDefaultDropOnElement(this.element); } function r(b) { var a = this; this.editor = b; this.notifications = []; this.element = this._createElement(); this._uiBuffer = CKEDITOR.tools.eventsBuffer(10, this._layout, this); this._changeBuffer = CKEDITOR.tools.eventsBuffer(500, this._layout, this); b.on("destroy", function () { a._removeListeners(); a.element.remove(); }); } CKEDITOR.plugins.add("notification", { init: function (b) { function a(b) { var a = new CKEDITOR.dom.element("div"); a.setStyles({ position: "fixed", "margin-left": "-9999px" }); a.setAttributes({ "aria-live": "assertive", "aria-atomic": "true" }); a.setText(b); CKEDITOR.document.getBody().append(a); setTimeout(function () { a.remove(); }, 100); } b._.notificationArea = new r(b); b.showNotification = function (a, d, e) { var f, l; "progress" == d ? (f = e) : (l = e); a = new CKEDITOR.plugins.notification(b, { message: a, type: d, progress: f, duration: l, }); a.show(); return a; }; b.on("key", function (c) { if (27 == c.data.keyCode) { var d = b._.notificationArea.notifications; d.length && (a(b.lang.notification.closed), d[d.length - 1].hide(), c.cancel()); } }); }, }); q.prototype = { show: function () { !1 !== this.editor.fire("notificationShow", { notification: this }) && (this.area.add(this), this._hideAfterTimeout()); }, update: function (b) { var a = !0; !1 === this.editor.fire("notificationUpdate", { notification: this, options: b, }) && (a = !1); var c = this.element, d = c.findOne(".cke_notification_message"), e = c.findOne(".cke_notification_progress"), f = b.type; c.removeAttribute("role"); b.progress && "progress" != this.type && (f = "progress"); f && (c.removeClass(this._getClass()), c.removeAttribute("aria-label"), (this.type = f), c.addClass(this._getClass()), c.setAttribute("aria-label", this.type), "progress" != this.type || e ? "progress" != this.type && e && e.remove() : ((e = this._createProgressElement()), e.insertBefore(d))); void 0 !== b.message && ((this.message = b.message), d.setHtml(this.message)); void 0 !== b.progress && ((this.progress = b.progress), e && e.setStyle("width", this._getPercentageProgress())); a && b.important && (c.setAttribute("role", "alert"), this.isVisible() || this.area.add(this)); this.duration = b.duration; this._hideAfterTimeout(); }, hide: function () { !1 !== this.editor.fire("notificationHide", { notification: this }) && this.area.remove(this); }, isVisible: function () { return 0 <= CKEDITOR.tools.indexOf(this.area.notifications, this); }, _createElement: function () { var b = this, a, c, d = this.editor.lang.common.close; a = new CKEDITOR.dom.element("div"); a.addClass("cke_notification"); a.addClass(this._getClass()); a.setAttributes({ id: this.id, role: "alert", "aria-label": this.type, }); "progress" == this.type && a.append(this._createProgressElement()); c = new CKEDITOR.dom.element("p"); c.addClass("cke_notification_message"); c.setHtml(this.message); a.append(c); c = CKEDITOR.dom.element.createFromHtml( '\x3ca class\x3d"cke_notification_close" href\x3d"javascript:void(0)" title\x3d"' + d + '" role\x3d"button" tabindex\x3d"-1"\x3e\x3cspan class\x3d"cke_label"\x3eX\x3c/span\x3e\x3c/a\x3e' ); a.append(c); c.on("click", function () { b.editor.focus(); b.hide(); }); return a; }, _getClass: function () { return "progress" == this.type ? "cke_notification_info" : "cke_notification_" + this.type; }, _createProgressElement: function () { var b = new CKEDITOR.dom.element("span"); b.addClass("cke_notification_progress"); b.setStyle("width", this._getPercentageProgress()); return b; }, _getPercentageProgress: function () { return Math.round(100 * (this.progress || 0)) + "%"; }, _hideAfterTimeout: function () { var b = this, a; this._hideTimeoutId && clearTimeout(this._hideTimeoutId); if ("number" == typeof this.duration) a = this.duration; else if ("info" == this.type || "success" == this.type) a = "number" == typeof this.editor.config.notification_duration ? this.editor.config.notification_duration : 5e3; a && (b._hideTimeoutId = setTimeout(function () { b.hide(); }, a)); }, }; r.prototype = { add: function (b) { this.notifications.push(b); this.element.append(b.element); 1 == this.element.getChildCount() && (CKEDITOR.document.getBody().append(this.element), this._attachListeners()); this._layout(); }, remove: function (b) { var a = CKEDITOR.tools.indexOf(this.notifications, b); 0 > a || (this.notifications.splice(a, 1), b.element.remove(), this.element.getChildCount() || (this._removeListeners(), this.element.remove())); }, _createElement: function () { var b = this.editor, a = b.config, c = new CKEDITOR.dom.element("div"); c.addClass("cke_notifications_area"); c.setAttribute("id", "cke_notifications_area_" + b.name); c.setStyle("z-index", a.baseFloatZIndex - 2); return c; }, _attachListeners: function () { var b = CKEDITOR.document.getWindow(), a = this.editor; b.on("scroll", this._uiBuffer.input); b.on("resize", this._uiBuffer.input); a.on("change", this._changeBuffer.input); a.on("floatingSpaceLayout", this._layout, this, null, 20); a.on("blur", this._layout, this, null, 20); }, _removeListeners: function () { var b = CKEDITOR.document.getWindow(), a = this.editor; b.removeListener("scroll", this._uiBuffer.input); b.removeListener("resize", this._uiBuffer.input); a.removeListener("change", this._changeBuffer.input); a.removeListener("floatingSpaceLayout", this._layout); a.removeListener("blur", this._layout); }, _layout: function () { function b() { a.setStyle("left", k(n + d.width - g - h)); } var a = this.element, c = this.editor, d = c.ui.contentsElement.getClientRect(), e = c.ui.contentsElement.getDocumentPosition(), f, l, u = a.getClientRect(), m, g = this._notificationWidth, h = this._notificationMargin; m = CKEDITOR.document.getWindow(); var p = m.getScrollPosition(), t = m.getViewPaneSize(), q = CKEDITOR.document.getBody(), r = q.getDocumentPosition(), k = CKEDITOR.tools.cssLength; (g && h) || ((m = this.element.getChild(0)), (g = this._notificationWidth = m.getClientRect().width), (h = this._notificationMargin = parseInt(m.getComputedStyle("margin-left"), 10) + parseInt(m.getComputedStyle("margin-right"), 10))); c.toolbar && ((f = c.ui.space(c.config.toolbarLocation)), (l = f.getClientRect())); f && f.isVisible() && l.bottom > d.top && l.bottom < d.bottom - u.height ? a.setStyles({ position: "fixed", top: k(l.bottom) }) : 0 < d.top ? a.setStyles({ position: "absolute", top: k(e.y) }) : e.y + d.height - u.height > p.y ? a.setStyles({ position: "fixed", top: 0 }) : a.setStyles({ position: "absolute", top: k(e.y + d.height - u.height), }); var n = "fixed" == a.getStyle("position") ? d.left : "static" != q.getComputedStyle("position") ? e.x - r.x : e.x; d.width < g + h ? e.x + g + h > p.x + t.width ? b() : a.setStyle("left", k(n)) : e.x + g + h > p.x + t.width ? a.setStyle("left", k(n)) : e.x + d.width / 2 + g / 2 + h > p.x + t.width ? a.setStyle("left", k(n - e.x + p.x + t.width - g - h)) : 0 > d.left + d.width - g - h ? b() : 0 > d.left + d.width / 2 - g / 2 ? a.setStyle("left", k(n - e.x + p.x)) : a.setStyle("left", k(n + d.width / 2 - g / 2 - h / 2)); }, }; CKEDITOR.plugins.notification = q; })(); (function () { var c = '\x3ca id\x3d"{id}" class\x3d"cke_button cke_button__{name} cke_button_{state} {cls}"' + (CKEDITOR.env.gecko && !CKEDITOR.env.hc ? "" : " href\x3d\"javascript:void('{titleJs}')\"") + ' title\x3d"{title}" tabindex\x3d"-1" hidefocus\x3d"true" role\x3d"button" aria-labelledby\x3d"{id}_label" aria-describedby\x3d"{id}_description" aria-haspopup\x3d"{hasArrow}" aria-disabled\x3d"{ariaDisabled}"{hasArrowAriaHtml}{toggleAriaHtml}'; CKEDITOR.env.gecko && CKEDITOR.env.mac && (c += ' onkeypress\x3d"return false;"'); CKEDITOR.env.gecko && (c += ' onblur\x3d"this.style.cssText \x3d this.style.cssText;"'); var l = ""; CKEDITOR.env.ie && (l = 'return false;" onmouseup\x3d"CKEDITOR.tools.getMouseButton(event)\x3d\x3dCKEDITOR.MOUSE_BUTTON_LEFT\x26\x26'); var c = c + (' onkeydown\x3d"return CKEDITOR.tools.callFunction({keydownFn},event);" onfocus\x3d"return CKEDITOR.tools.callFunction({focusFn},event);" onclick\x3d"' + l + 'CKEDITOR.tools.callFunction({clickFn},this);return false;"\x3e\x3cspan class\x3d"cke_button_icon cke_button__{iconName}_icon" style\x3d"{style}"') + '\x3e\x26nbsp;\x3c/span\x3e\x3cspan id\x3d"{id}_label" class\x3d"cke_button_label cke_button__{name}_label" aria-hidden\x3d"false"\x3e{label}\x3c/span\x3e\x3cspan id\x3d"{id}_description" class\x3d"cke_button_label" aria-hidden\x3d"false"\x3e{ariaShortcutSpace}{ariaShortcut}\x3c/span\x3e{arrowHtml}\x3c/a\x3e', v = CKEDITOR.addTemplate( "buttonArrow", '\x3cspan class\x3d"cke_button_arrow"\x3e' + (CKEDITOR.env.hc ? "\x26#9660;" : "") + "\x3c/span\x3e" ), w = CKEDITOR.addTemplate("button", c); CKEDITOR.plugins.add("button", { beforeInit: function (a) { a.ui.addHandler(CKEDITOR.UI_BUTTON, CKEDITOR.ui.button.handler); }, }); CKEDITOR.UI_BUTTON = "button"; CKEDITOR.ui.button = function (a) { CKEDITOR.tools.extend(this, a, { isToggle: a.isToggle || !1, title: a.label, click: a.click || function (b) { b.execCommand(a.command); }, }); this._ = {}; }; CKEDITOR.ui.button.handler = { create: function (a) { return new CKEDITOR.ui.button(a); }, }; CKEDITOR.ui.button.prototype = { render: function (a, b) { function c() { var f = a.mode; f && ((f = this.modes[f] ? void 0 !== p[f] ? p[f] : CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED), (f = a.readOnly && !this.readOnly ? CKEDITOR.TRISTATE_DISABLED : f), this.setState(f), this.refresh && this.refresh()); } var p = null, q = CKEDITOR.env, r = (this._.id = CKEDITOR.tools.getNextId()), g = "", d = this.command, l, m, k; this._.editor = a; var e = { id: r, button: this, editor: a, focus: function () { CKEDITOR.document.getById(r).focus(); }, execute: function () { this.button.click(a); }, attach: function (a) { this.button.attach(a); }, }, x = CKEDITOR.tools.addFunction(function (a) { if (e.onkey) return ( (a = new CKEDITOR.dom.event(a)), !1 !== e.onkey(e, a.getKeystroke()) ); }), y = CKEDITOR.tools.addFunction(function (a) { var b; e.onfocus && (b = !1 !== e.onfocus(e, new CKEDITOR.dom.event(a))); return b; }), u = 0; e.clickFn = l = CKEDITOR.tools.addFunction(function () { u && (a.unlockSelection(1), (u = 0)); e.execute(); q.iOS && a.focus(); }); this.modes ? ((p = {}), a.on( "beforeModeUnload", function () { a.mode && this._.state != CKEDITOR.TRISTATE_DISABLED && (p[a.mode] = this._.state); }, this ), a.on("activeFilterChange", c, this), a.on("mode", c, this), !this.readOnly && a.on("readOnly", c, this)) : d && (d = a.getCommand(d)) && (d.on( "state", function () { this.setState(d.state); }, this ), (g += d.state == CKEDITOR.TRISTATE_ON ? "on" : d.state == CKEDITOR.TRISTATE_DISABLED ? "disabled" : "off")); var n; if (this.directional) a.on( "contentDirChanged", function (b) { var c = CKEDITOR.document.getById(this._.id), d = c.getFirst(); b = b.data; b != a.lang.dir ? c.addClass("cke_" + b) : c.removeClass("cke_ltr").removeClass("cke_rtl"); d.setAttribute( "style", CKEDITOR.skin.getIconStyle( n, "rtl" == b, this.icon, this.iconOffset ) ); }, this ); d ? (m = a.getCommandKeystroke(d)) && (k = CKEDITOR.tools.keystrokeToString(a.lang.common.keyboard, m)) : (g += "off"); m = this.name || this.command; var h = null, t = this.icon; n = m; this.icon && !/\./.test(this.icon) ? ((n = this.icon), (t = null)) : (this.icon && (h = this.icon), CKEDITOR.env.hidpi && this.iconHiDpi && (h = this.iconHiDpi)); h ? (CKEDITOR.skin.addIcon(h, h), (t = null)) : (h = n); g = { id: r, name: m, iconName: n, label: this.label, cls: (this.hasArrow ? "cke_button_expandable " : "") + (this.className || ""), state: g, ariaDisabled: "disabled" == g ? "true" : "false", title: this.title + (k ? " (" + k.display + ")" : ""), ariaShortcutSpace: k ? "\x26nbsp;" : "", ariaShortcut: k ? a.lang.common.keyboardShortcut + " " + k.aria : "", titleJs: q.gecko && !q.hc ? "" : (this.title || "").replace("'", ""), hasArrow: ("string" === typeof this.hasArrow && this.hasArrow) || (this.hasArrow ? "true" : "false"), keydownFn: x, focusFn: y, clickFn: l, style: CKEDITOR.skin.getIconStyle( h, "rtl" == a.lang.dir, t, this.iconOffset ), arrowHtml: this.hasArrow ? v.output() : "", hasArrowAriaHtml: this.hasArrow ? ' aria-expanded\x3d"false"' : "", toggleAriaHtml: this.isToggle ? 'aria-pressed\x3d"false"' : "", }; w.output(g, b); if (this.onRender) this.onRender(); return e; }, setState: function (a) { if (this._.state == a) return !1; this._.state = a; var b = CKEDITOR.document.getById(this._.id); return b ? (b.setState(a, "cke_button"), b.setAttribute("aria-disabled", a == CKEDITOR.TRISTATE_DISABLED), this.isToggle && !this.hasArrow && b.setAttribute("aria-pressed", a === CKEDITOR.TRISTATE_ON), !0) : !1; }, getState: function () { return this._.state; }, toFeature: function (a) { if (this._.feature) return this._.feature; var b = this; this.allowedContent || this.requiredContent || !this.command || (b = a.getCommand(this.command) || b); return (this._.feature = b); }, }; CKEDITOR.ui.prototype.addButton = function (a, b) { this.add(a, CKEDITOR.UI_BUTTON, b); }; })(); (function () { function D(b) { function d() { for ( var a = f(), e = CKEDITOR.tools.clone(b.config.toolbarGroups) || v(b), n = 0; n < e.length; n++ ) { var g = e[n]; if ("/" != g) { "string" == typeof g && (g = e[n] = { name: g }); var l, d = g.groups; if (d) for (var h = 0; h < d.length; h++) (l = d[h]), (l = a[l]) && c(g, l); (l = a[g.name]) && c(g, l); } } return e; } function f() { var a = {}, c, e, g; for (c in b.ui.items) (e = b.ui.items[c]), (g = e.toolbar || "others"), (g = g.split(",")), (e = g[0]), (g = parseInt(g[1] || -1, 10)), a[e] || (a[e] = []), a[e].push({ name: c, order: g }); for (e in a) a[e] = a[e].sort(function (a, b) { return a.order == b.order ? 0 : 0 > b.order ? -1 : 0 > a.order ? 1 : a.order < b.order ? -1 : 1; }); return a; } function c(c, e) { if (e.length) { c.items ? c.items.push(b.ui.create("-")) : (c.items = []); for (var d; (d = e.shift()); ) (d = "string" == typeof d ? d : d.name), (a && -1 != CKEDITOR.tools.indexOf(a, d)) || ((d = b.ui.create(d)) && b.addFeature(d) && c.items.push(d)); } } function h(a) { var b = [], e, d, h; for (e = 0; e < a.length; ++e) (d = a[e]), (h = {}), "/" == d ? b.push(d) : CKEDITOR.tools.isArray(d) ? (c(h, CKEDITOR.tools.clone(d)), b.push(h)) : d.items && (c(h, CKEDITOR.tools.clone(d.items)), (h.name = d.name), b.push(h)); return b; } var a = (function (a) { return a && "string" === typeof a ? a.split(",") : a; })(b.config.removeButtons), e = b.config.toolbar; "string" == typeof e && (e = b.config["toolbar_" + e]); return (b.toolbar = e ? h(e) : d()); } function v(b) { return ( b._.toolbarGroups || (b._.toolbarGroups = [ { name: "document", groups: ["mode", "document", "doctools"] }, { name: "clipboard", groups: ["clipboard", "undo"] }, { name: "editing", groups: ["find", "selection", "spellchecker"] }, { name: "forms" }, "/", { name: "basicstyles", groups: ["basicstyles", "cleanup"] }, { name: "paragraph", groups: ["list", "indent", "blocks", "align", "bidi"], }, { name: "links" }, { name: "insert" }, "/", { name: "styles" }, { name: "colors" }, { name: "tools" }, { name: "others" }, { name: "about" }, ]) ); } var z = function () { this.toolbars = []; }; z.prototype.focus = function () { for (var b = 0, d; (d = this.toolbars[b++]); ) for (var f = 0, c; (c = d.items[f++]); ) if (c.focus) { c.focus(); return; } }; var E = { modes: { wysiwyg: 1, source: 1 }, readOnly: 1, exec: function (b) { b.toolbox && (CKEDITOR.env.ie || CKEDITOR.env.air ? setTimeout(function () { b.toolbox.focus(); }, 100) : b.toolbox.focus()); }, }; CKEDITOR.plugins.add("toolbar", { requires: "button", init: function (b) { var d, f = function (c, h) { var a, e = "rtl" == b.lang.dir, k = b.config.toolbarGroupCycling, q = e ? 37 : 39, e = e ? 39 : 37, k = void 0 === k || k; switch (h) { case 9: case CKEDITOR.SHIFT + 9: for (; !a || !a.items.length; ) if ( ((a = 9 == h ? (a ? a.next : c.toolbar.next) || b.toolbox.toolbars[0] : (a ? a.previous : c.toolbar.previous) || b.toolbox.toolbars[b.toolbox.toolbars.length - 1]), a.items.length) ) for ( c = a.items[d ? a.items.length - 1 : 0]; c && !c.focus; ) (c = d ? c.previous : c.next) || (a = 0); c && c.focus(); return !1; case q: a = c; do (a = a.next), !a && k && (a = c.toolbar.items[0]); while (a && !a.focus); a ? a.focus() : f(c, 9); return !1; case 40: return ( c.button && c.button.hasArrow ? c.execute() : f(c, 40 == h ? q : e), !1 ); case e: case 38: a = c; do (a = a.previous), !a && k && (a = c.toolbar.items[c.toolbar.items.length - 1]); while (a && !a.focus); a ? a.focus() : ((d = 1), f(c, CKEDITOR.SHIFT + 9), (d = 0)); return !1; case 27: return b.focus(), !1; case 13: case 32: return c.execute(), !1; case CKEDITOR.ALT + 122: return b.execCommand("elementsPathFocus"), !1; } return !0; }; b.on("uiSpace", function (c) { if (c.data.space == b.config.toolbarLocation) { c.removeListener(); b.toolbox = new z(); var d = CKEDITOR.tools.getNextId(), a = [ '\x3cspan id\x3d"', d, '" class\x3d"cke_voice_label"\x3e', b.lang.toolbar.toolbars, "\x3c/span\x3e", '\x3cspan id\x3d"' + b.ui.spaceId("toolbox") + '" class\x3d"cke_toolbox" role\x3d"group" aria-labelledby\x3d"', d, '" onmousedown\x3d"return false;"\x3e', ], d = !1 !== b.config.toolbarStartupExpanded, e, k; b.config.toolbarCanCollapse && b.elementMode != CKEDITOR.ELEMENT_MODE_INLINE && a.push( '\x3cspan class\x3d"cke_toolbox_main"' + (d ? "\x3e" : ' style\x3d"display:none"\x3e') ); for ( var q = b.toolbox.toolbars, n = D(b), g = n.length, l = 0; l < g; l++ ) { var r, m = 0, w, p = n[l], v = "/" !== p && ("/" === n[l + 1] || l == g - 1), x; if (p) if ((e && (a.push("\x3c/span\x3e"), (k = e = 0)), "/" === p)) a.push( '\x3cspan class\x3d"cke_toolbar_break"\x3e\x3c/span\x3e' ); else { x = p.items || p; for (var y = 0; y < x.length; y++) { var t = x[y], A; if (t) { var B = function (c) { c = c.render(b, a); u = m.items.push(c) - 1; 0 < u && ((c.previous = m.items[u - 1]), (c.previous.next = c)); c.toolbar = m; c.onkey = f; }; if (t.type == CKEDITOR.UI_SEPARATOR) k = e && t; else { A = !1 !== t.canGroup; if (!m) { r = CKEDITOR.tools.getNextId(); m = { id: r, items: [] }; w = p.name && (b.lang.toolbar.toolbarGroups[p.name] || p.name); a.push( '\x3cspan id\x3d"', r, '" class\x3d"cke_toolbar' + (v ? ' cke_toolbar_last"' : '"'), w ? ' aria-labelledby\x3d"' + r + '_label"' : "", ' role\x3d"toolbar"\x3e' ); w && a.push( '\x3cspan id\x3d"', r, '_label" class\x3d"cke_voice_label"\x3e', w, "\x3c/span\x3e" ); a.push( '\x3cspan class\x3d"cke_toolbar_start"\x3e\x3c/span\x3e' ); var u = q.push(m) - 1; 0 < u && ((m.previous = q[u - 1]), (m.previous.next = m)); } A ? e || (a.push( '\x3cspan class\x3d"cke_toolgroup" role\x3d"presentation"\x3e' ), (e = 1)) : e && (a.push("\x3c/span\x3e"), (e = 0)); k && (B(k), (k = 0)); B(t); } } } e && (a.push("\x3c/span\x3e"), (k = e = 0)); m && a.push( '\x3cspan class\x3d"cke_toolbar_end"\x3e\x3c/span\x3e\x3c/span\x3e' ); } } b.config.toolbarCanCollapse && a.push("\x3c/span\x3e"); if ( b.config.toolbarCanCollapse && b.elementMode != CKEDITOR.ELEMENT_MODE_INLINE ) { var C = CKEDITOR.tools.addFunction(function () { b.execCommand("toolbarCollapse"); }); b.on("destroy", function () { CKEDITOR.tools.removeFunction(C); }); b.addCommand("toolbarCollapse", { readOnly: 1, exec: function (a) { var b = a.ui.space("toolbar_collapser"), c = b.getPrevious(), d = a.ui.space("contents"), e = c.getParent(), h = parseInt(d.$.style.height, 10), g = e.$.offsetHeight, f = b.hasClass("cke_toolbox_collapser_min"); f ? (c.show(), b.removeClass("cke_toolbox_collapser_min"), b.setAttribute("title", a.lang.toolbar.toolbarCollapse)) : (c.hide(), b.addClass("cke_toolbox_collapser_min"), b.setAttribute("title", a.lang.toolbar.toolbarExpand)); b.getFirst().setText(f ? "▲" : "◀"); d.setStyle("height", h - (e.$.offsetHeight - g) + "px"); a.fire("resize", { outerHeight: a.container.$.offsetHeight, contentsHeight: d.$.offsetHeight, outerWidth: a.container.$.offsetWidth, }); }, modes: { wysiwyg: 1, source: 1 }, }); b.setKeystroke( CKEDITOR.ALT + (CKEDITOR.env.ie || CKEDITOR.env.webkit ? 189 : 109), "toolbarCollapse" ); a.push( '\x3ca title\x3d"' + (d ? b.lang.toolbar.toolbarCollapse : b.lang.toolbar.toolbarExpand) + '" id\x3d"' + b.ui.spaceId("toolbar_collapser") + '" tabIndex\x3d"-1" class\x3d"cke_toolbox_collapser' ); d || a.push(" cke_toolbox_collapser_min"); a.push( '" onclick\x3d"CKEDITOR.tools.callFunction(' + C + ')"\x3e', '\x3cspan class\x3d"cke_arrow"\x3e\x26#9650;\x3c/span\x3e', "\x3c/a\x3e" ); } a.push("\x3c/span\x3e"); c.data.html += a.join(""); } }); b.on("destroy", function () { if (this.toolbox) { var b, d = 0, a, e, f; for (b = this.toolbox.toolbars; d < b.length; d++) for (e = b[d].items, a = 0; a < e.length; a++) (f = e[a]), f.clickFn && CKEDITOR.tools.removeFunction(f.clickFn), f.keyDownFn && CKEDITOR.tools.removeFunction(f.keyDownFn); } }); b.on("uiReady", function () { var c = b.ui.space("toolbox"); c && b.focusManager.add(c, 1); }); b.addCommand("toolbarFocus", E); b.setKeystroke(CKEDITOR.ALT + 121, "toolbarFocus"); b.ui.add("-", CKEDITOR.UI_SEPARATOR, {}); b.ui.addHandler(CKEDITOR.UI_SEPARATOR, { create: function () { return { render: function (b, d) { d.push( '\x3cspan class\x3d"cke_toolbar_separator" role\x3d"separator"\x3e\x3c/span\x3e' ); return {}; }, }; }, }); }, }); CKEDITOR.ui.prototype.addToolbarGroup = function (b, d, f) { var c = v(this.editor), h = 0 === d, a = { name: b }; if (f) { if ( (f = CKEDITOR.tools.search(c, function (a) { return a.name == f; })) ) { !f.groups && (f.groups = []); if (d && ((d = CKEDITOR.tools.indexOf(f.groups, d)), 0 <= d)) { f.groups.splice(d + 1, 0, b); return; } h ? f.groups.splice(0, 0, b) : f.groups.push(b); return; } d = null; } d && (d = CKEDITOR.tools.indexOf(c, function (a) { return a.name == d; })); h ? c.splice(0, 0, b) : "number" == typeof d ? c.splice(d + 1, 0, a) : c.push(b); }; })(); CKEDITOR.UI_SEPARATOR = "separator"; CKEDITOR.config.toolbarLocation = "top"; (function () { function t(a, b, c) { b.type || (b.type = "auto"); if ( (c && !1 === a.fire("beforePaste", b)) || (!b.dataValue && b.dataTransfer.isEmpty()) ) return !1; b.dataValue || (b.dataValue = ""); if (CKEDITOR.env.gecko && "drop" == b.method && a.toolbox) a.once("afterPaste", function () { a.toolbox.focus(); a.focus(); }); return a.fire("paste", b); } function y(a) { function b() { var b = a.editable(); if (CKEDITOR.plugins.clipboard.isCustomCopyCutSupported) { var c = function (b) { a.getSelection().isCollapsed() || ((a.readOnly && "cut" == b.name) || n.initPasteDataTransfer(b, a), b.data.preventDefault()); }; b.on("copy", c); b.on("cut", c); b.on( "cut", function () { a.readOnly || a.extractSelectedHtml(); }, null, null, 999 ); } b.on(n.mainPasteEvent, function (a) { ("beforepaste" == n.mainPasteEvent && u) || m(a); }); "beforepaste" == n.mainPasteEvent && (b.on("paste", function (a) { w || (g(), a.data.preventDefault(), m(a), e("paste")); }), b.on("contextmenu", f, null, null, 0), b.on( "beforepaste", function (a) { !a.data || a.data.$.ctrlKey || a.data.$.shiftKey || f(); }, null, null, 0 )); b.on("beforecut", function () { !u && l(a); }); var h; b.attachListener( CKEDITOR.env.ie ? b : a.document.getDocumentElement(), "mouseup", function () { h = setTimeout(p, 0); } ); a.on("destroy", function () { clearTimeout(h); }); b.on("keyup", p); } function c(b) { return { type: b, canUndo: "cut" == b, startDisabled: !0, fakeKeystroke: "cut" == b ? CKEDITOR.CTRL + 88 : CKEDITOR.CTRL + 67, exec: function () { "cut" == this.type && l(); var b; var c = this.type; if (CKEDITOR.env.ie) b = e(c); else try { b = a.document.$.execCommand(c, !1, null); } catch (h) { b = !1; } b || a.showNotification(a.lang.clipboard[this.type + "Error"]); return b; }, }; } function d() { return { canUndo: !1, async: !0, fakeKeystroke: CKEDITOR.CTRL + 86, exec: function (a, b) { function c(b, m) { m = "undefined" !== typeof m ? m : !0; b ? ((b.method = "paste"), b.dataTransfer || (b.dataTransfer = n.initPasteDataTransfer()), t(a, b, m)) : d && !a._.forcePasteDialog && a.showNotification( p, "info", a.config.clipboard_notificationDuration ); a._.forcePasteDialog = !1; a.fire("afterCommandExec", { name: "paste", command: h, returnValue: !!b, }); } b = "undefined" !== typeof b && null !== b ? b : {}; var h = this, d = "undefined" !== typeof b.notification ? b.notification : !0, m = b.type, e = CKEDITOR.tools.keystrokeToString( a.lang.common.keyboard, a.getCommandKeystroke(this) ), p = "string" === typeof d ? d : a.lang.clipboard.pasteNotification.replace( /%1/, '\x3ckbd aria-label\x3d"' + e.aria + '"\x3e' + e.display + "\x3c/kbd\x3e" ), e = "string" === typeof b ? b : b.dataValue; m && !0 !== a.config.forcePasteAsPlainText && "allow-word" !== a.config.forcePasteAsPlainText ? (a._.nextPasteType = m) : delete a._.nextPasteType; "string" === typeof e ? c({ dataValue: e }) : a.getClipboardData(c); }, }; } function g() { w = 1; setTimeout(function () { w = 0; }, 100); } function f() { u = 1; setTimeout(function () { u = 0; }, 10); } function e(b) { var c = a.document, h = c.getBody(), d = !1, m = function () { d = !0; }; h.on(b, m); 7 < CKEDITOR.env.version ? c.$.execCommand(b) : c.$.selection.createRange().execCommand(b); h.removeListener(b, m); return d; } function l() { if (CKEDITOR.env.ie && !CKEDITOR.env.quirks) { var b = a.getSelection(), c, h, d; b.getType() == CKEDITOR.SELECTION_ELEMENT && (c = b.getSelectedElement()) && ((h = b.getRanges()[0]), (d = a.document.createText("")), d.insertBefore(c), h.setStartBefore(d), h.setEndAfter(c), b.selectRanges([h]), setTimeout(function () { c.getParent() && (d.remove(), b.selectElement(c)); }, 0)); } } function q(b, c) { var h = a.document, d = a.editable(), m = function (a) { a.cancel(); }, e; if (!h.getById("cke_pastebin")) { var p = a.getSelection(), g = p.createBookmarks(); CKEDITOR.env.ie && p.root.fire("selectionchange"); var k = new CKEDITOR.dom.element( (!CKEDITOR.env.webkit && !d.is("body")) || CKEDITOR.env.ie ? "div" : "body", h ); k.setAttributes({ id: "cke_pastebin", "data-cke-temp": "1" }); var f = 0, h = h.getWindow(); CKEDITOR.env.webkit ? (d.append(k), k.addClass("cke_editable"), d.is("body") || ((f = "static" != d.getComputedStyle("position") ? d : CKEDITOR.dom.element.get(d.$.offsetParent)), (f = f.getDocumentPosition().y))) : d.getAscendant(CKEDITOR.env.ie ? "body" : "html", 1).append(k); k.setStyles({ position: "absolute", top: h.getScrollPosition().y - f + 10 + "px", width: "1px", height: Math.max(1, h.getViewPaneSize().height - 20) + "px", overflow: "hidden", margin: 0, padding: 0, }); CKEDITOR.env.safari && k.setStyles(CKEDITOR.tools.cssVendorPrefix("user-select", "text")); (f = k.getParent().isReadOnly()) ? (k.setOpacity(0), k.setAttribute("contenteditable", !0)) : k.setStyle( "ltr" == a.config.contentsLangDirection ? "left" : "right", "-10000px" ); a.on("selectionChange", m, null, null, 0); if (CKEDITOR.env.webkit || CKEDITOR.env.gecko) e = d.once("blur", m, null, null, -100); f && k.focus(); f = new CKEDITOR.dom.range(k); f.selectNodeContents(k); var l = f.select(); CKEDITOR.env.ie && (e = d.once("blur", function () { a.lockSelection(l); })); var n = CKEDITOR.document.getWindow().getScrollPosition().y; setTimeout(function () { CKEDITOR.env.webkit && (CKEDITOR.document.getBody().$.scrollTop = n); e && e.removeListener(); CKEDITOR.env.ie && d.focus(); p.selectBookmarks(g); k.remove(); var b; CKEDITOR.env.webkit && (b = k.getFirst()) && b.is && b.hasClass("Apple-style-span") && (k = b); a.removeListener("selectionChange", m); c(k.getHtml()); }, 0); } } function v() { if ("paste" == n.mainPasteEvent) return a.fire("beforePaste", { type: "auto", method: "paste" }), !1; a.focus(); g(); var b = a.focusManager; b.lock(); if (a.editable().fire(n.mainPasteEvent) && !e("paste")) return b.unlock(), !1; b.unlock(); return !0; } function h(b) { if ("wysiwyg" == a.mode) switch (b.data.keyCode) { case CKEDITOR.CTRL + 86: case CKEDITOR.SHIFT + 45: b = a.editable(); g(); "paste" == n.mainPasteEvent && b.fire("beforepaste"); break; case CKEDITOR.CTRL + 88: case CKEDITOR.SHIFT + 46: a.fire("saveSnapshot"), setTimeout(function () { a.fire("saveSnapshot"); }, 50); } } function m(b) { var c = { type: "auto", method: "paste", dataTransfer: n.initPasteDataTransfer(b), }; c.dataTransfer.cacheData(); var h = !1 !== a.fire("beforePaste", c); h && n.canClipboardApiBeTrusted(c.dataTransfer, a) ? (b.data.preventDefault(), setTimeout(function () { t(a, c); }, 0)) : q(b, function (b) { c.dataValue = b.replace( /]+data-cke-bookmark[^<]*?<\/span>/gi, "" ); h && t(a, c); }); } function p() { if ("wysiwyg" == a.mode) { var b = k("paste"); a.getCommand("cut").setState(k("cut")); a.getCommand("copy").setState(k("copy")); a.getCommand("paste").setState(b); a.fire("pasteState", b); } } function k(b) { var c = a.getSelection(), c = c && c.getRanges()[0]; if ( (a.readOnly || (c && c.checkReadOnly())) && b in { paste: 1, cut: 1 } ) return CKEDITOR.TRISTATE_DISABLED; if ("paste" == b) return CKEDITOR.TRISTATE_OFF; b = a.getSelection(); c = b.getRanges(); return b.getType() == CKEDITOR.SELECTION_NONE || (1 == c.length && c[0].collapsed) ? CKEDITOR.TRISTATE_DISABLED : CKEDITOR.TRISTATE_OFF; } var n = CKEDITOR.plugins.clipboard, u = 0, w = 0; (function () { a.on("key", h); a.on("contentDom", b); a.on("selectionChange", p); if (a.contextMenu) { a.contextMenu.addListener(function () { return { cut: k("cut"), copy: k("copy"), paste: k("paste") }; }); var c = null; a.on("menuShow", function () { c && (c.removeListener(), (c = null)); var b = a.contextMenu.findItemByCommandName("paste"); b && b.element && (c = b.element.on("touchend", function () { a._.forcePasteDialog = !0; })); }); } if (a.ui.addButton) a.once("instanceReady", function () { a._.pasteButtons && CKEDITOR.tools.array.forEach(a._.pasteButtons, function (b) { if ((b = a.ui.get(b))) if ((b = CKEDITOR.document.getById(b._.id))) b.on("touchend", function () { a._.forcePasteDialog = !0; }); }); }); })(); (function () { function b(c, h, d, m, e) { var p = a.lang.clipboard[h]; a.addCommand(h, d); a.ui.addButton && a.ui.addButton(c, { label: p, command: h, toolbar: "clipboard," + m, }); a.addMenuItems && a.addMenuItem(h, { label: p, command: h, group: "clipboard", order: e, }); } b("Cut", "cut", c("cut"), 10, 1); b("Copy", "copy", c("copy"), 20, 4); b("Paste", "paste", d(), 30, 8); a._.pasteButtons || (a._.pasteButtons = []); a._.pasteButtons.push("Paste"); })(); a.getClipboardData = function (b, c) { function h(a) { a.removeListener(); a.cancel(); c(a.data); } function d(a) { a.removeListener(); a.cancel(); c({ type: e, dataValue: a.data.dataValue, dataTransfer: a.data.dataTransfer, method: "paste", }); } var m = !1, e = "auto"; c || ((c = b), (b = null)); a.on( "beforePaste", function (a) { a.removeListener(); m = !0; e = a.data.type; }, null, null, 1e3 ); a.on("paste", h, null, null, 0); !1 === v() && (a.removeListener("paste", h), a._.forcePasteDialog && m && a.fire("pasteDialog") ? (a.on("pasteDialogCommit", d), a.on("dialogHide", function (a) { a.removeListener(); a.data.removeListener("pasteDialogCommit", d); a.data._.committed || c(null); })) : c(null)); }; } function z(a) { if (CKEDITOR.env.webkit) { if ( !a.match(/^[^<]*$/g) && !a.match(/^(
<\/div>|
[^<]*<\/div>)*$/gi) ) return "html"; } else if (CKEDITOR.env.ie) { if ( !a.match(/^([^<]|)*$/gi) && !a.match(/^(

([^<]|)*<\/p>|(\r\n))*$/gi) ) return "html"; } else if (CKEDITOR.env.gecko) { if (!a.match(/^([^<]|)*$/gi)) return "html"; } else return "html"; return "htmlifiedtext"; } function A(a, b) { function c(a) { return ( CKEDITOR.tools.repeat("\x3c/p\x3e\x3cp\x3e", ~~(a / 2)) + (1 == a % 2 ? "\x3cbr\x3e" : "") ); } b = b .replace(/(?!\u3000)\s+/g, " ") .replace(/> +/gi, "\x3cbr\x3e"); b = b.replace(/<\/?[A-Z]+>/g, function (a) { return a.toLowerCase(); }); if (b.match(/^[^<]$/)) return b; CKEDITOR.env.webkit && -1 < b.indexOf("\x3cdiv\x3e") && ((b = b .replace( /^(

(
|)<\/div>)(?!$|(
(
|)<\/div>))/g, "\x3cbr\x3e" ) .replace( /^(
(
|)<\/div>){2}(?!$)/g, "\x3cdiv\x3e\x3c/div\x3e" )), b.match(/
(
|)<\/div>/) && (b = "\x3cp\x3e" + b.replace(/(
(
|)<\/div>)+/g, function (a) { return c(a.split("\x3c/div\x3e\x3cdiv\x3e").length + 1); }) + "\x3c/p\x3e"), (b = b.replace(/<\/div>
/g, "\x3cbr\x3e")), (b = b.replace(/<\/?div>/g, ""))); CKEDITOR.env.gecko && a.enterMode != CKEDITOR.ENTER_BR && (CKEDITOR.env.gecko && (b = b.replace(/^

$/, "\x3cbr\x3e")), -1 < b.indexOf("\x3cbr\x3e\x3cbr\x3e") && (b = "\x3cp\x3e" + b.replace(/(
){2,}/g, function (a) { return c(a.length / 4); }) + "\x3c/p\x3e")); return B(a, b); } function C(a) { function b() { var a = {}, b; for (b in CKEDITOR.dtd) "$" != b.charAt(0) && "div" != b && "span" != b && (a[b] = 1); return a; } var c = {}; return { get: function (d) { return "plain-text" == d ? c.plainText || (c.plainText = new CKEDITOR.filter(a, "br")) : "semantic-content" == d ? ((d = c.semanticContent) || ((d = new CKEDITOR.filter(a, {})), d.allow({ $1: { elements: b(), attributes: !0, styles: !1, classes: !1, }, }), (d = c.semanticContent = d)), d) : d ? new CKEDITOR.filter(a, d) : null; }, }; } function x(a, b, c) { b = CKEDITOR.htmlParser.fragment.fromHtml(b); var d = new CKEDITOR.htmlParser.basicWriter(); c.applyTo(b, !0, !1, a.activeEnterMode); b.writeHtml(d); return d.getHtml(); } function B(a, b) { a.enterMode == CKEDITOR.ENTER_BR ? (b = b .replace(/(<\/p>

)+/g, function (a) { return CKEDITOR.tools.repeat("\x3cbr\x3e", (a.length / 7) * 2); }) .replace(/<\/?p>/g, "")) : a.enterMode == CKEDITOR.ENTER_DIV && (b = b.replace(/<(\/)?p>/g, "\x3c$1div\x3e")); return b; } function D(a) { a.data.preventDefault(); a.data.$.dataTransfer.dropEffect = "none"; } function E(a) { var b = CKEDITOR.plugins.clipboard; a.on("contentDom", function () { function c(b, c, d) { c.select(); t(a, { dataTransfer: d, method: "drop" }, 1); d.sourceEditor.fire("saveSnapshot"); d.sourceEditor.editable().extractHtmlFromRange(b); d.sourceEditor.getSelection().selectRanges([b]); d.sourceEditor.fire("saveSnapshot"); } function d(c, d) { c.select(); t(a, { dataTransfer: d, method: "drop" }, 1); b.resetDragDataTransfer(); } function g(b, c, d) { var e = { $: b.data.$, target: b.data.getTarget() }; c && (e.dragRange = c); d && (e.dropRange = d); !1 === a.fire(b.name, e) && b.data.preventDefault(); } function f(a) { a.type != CKEDITOR.NODE_ELEMENT && (a = a.getParent()); return a.getChildCount(); } var e = a.editable(), l = CKEDITOR.plugins.clipboard.getDropTarget(a), q = a.ui.space("top"), v = a.ui.space("bottom"); b.preventDefaultDropOnElement(q); b.preventDefaultDropOnElement(v); e.attachListener(l, "dragstart", g); e.attachListener(a, "dragstart", b.resetDragDataTransfer, b, null, 1); e.attachListener( a, "dragstart", function (c) { b.initDragDataTransfer(c, a); }, null, null, 2 ); e.attachListener( a, "dragstart", function () { var c = (b.dragRange = a.getSelection().getRanges()[0]); CKEDITOR.env.ie && 10 > CKEDITOR.env.version && ((b.dragStartContainerChildCount = c ? f(c.startContainer) : null), (b.dragEndContainerChildCount = c ? f(c.endContainer) : null)); }, null, null, 100 ); e.attachListener(l, "dragend", g); e.attachListener(a, "dragend", b.initDragDataTransfer, b, null, 1); e.attachListener(a, "dragend", b.resetDragDataTransfer, b, null, 100); e.attachListener(l, "dragover", function (a) { if (CKEDITOR.env.edge) a.data.preventDefault(); else { var b = a.data.getTarget(); b && b.is && b.is("html") ? a.data.preventDefault() : CKEDITOR.env.ie && CKEDITOR.plugins.clipboard.isFileApiSupported && a.data.$.dataTransfer.types.contains("Files") && a.data.preventDefault(); } }); e.attachListener( l, "drop", function (c) { if ( !c.data.$.defaultPrevented && (c.data.preventDefault(), !a.readOnly) ) { var d = c.data.getTarget(); if ( !d.isReadOnly() || (d.type == CKEDITOR.NODE_ELEMENT && d.is("html")) ) { var d = b.getRangeAtDropPosition(c, a), e = b.dragRange; d && g(c, e, d); } } }, null, null, 9999 ); e.attachListener(a, "drop", b.initDragDataTransfer, b, null, 1); e.attachListener( a, "drop", function (h) { if ((h = h.data)) { var e = h.dropRange, p = h.dragRange, k = h.dataTransfer; k.getTransferType(a) == CKEDITOR.DATA_TRANSFER_INTERNAL ? setTimeout(function () { b.internalDrop(p, e, k, a); }, 0) : k.getTransferType(a) == CKEDITOR.DATA_TRANSFER_CROSS_EDITORS ? c(p, e, k) : d(e, k); } }, null, null, 9999 ); }); } var r; CKEDITOR.plugins.add("clipboard", { requires: "dialog,notification,toolbar", _supportedFileMatchers: [], init: function (a) { function b(b) { return a.config.clipboard_handleImages ? -1 !== CKEDITOR.tools.indexOf( ["image/png", "image/jpeg", "image/gif"], b.type ) : !1; } function c(b) { return CKEDITOR.tools.array.some( a.plugins.clipboard._supportedFileMatchers, function (a) { return a(b); } ); } function d(b) { b.length && ((b = CKEDITOR.tools.array.unique(b)), (b = CKEDITOR.tools.array.filter(b, function (a) { return !!CKEDITOR.tools.trim(a); })), (b = g(b.join(", "))), a.showNotification( b, "info", a.config.clipboard_notificationDuration )); } function g(b) { return b ? a.lang.clipboard.fileFormatNotSupportedNotification.replace( /\${formats\}/g, "\x3cem\x3e" + b + "\x3c/em\x3e" ) : a.lang.clipboard.fileWithoutFormatNotSupportedNotification; } function f(a, b) { return (CKEDITOR.env.ie && a.data.fileTransferCancel) || !(CKEDITOR.env.ie || (b && v !== b.id)) ? !1 : b.isFileTransfer() && 1 === b.getFilesCount(); } var e, l = C(a); a.config.forcePasteAsPlainText ? (e = "plain-text") : a.config.pasteFilter ? (e = a.config.pasteFilter) : !CKEDITOR.env.webkit || "pasteFilter" in a.config || (e = "semantic-content"); a.pasteFilter = l.get(e); y(a); E(a); CKEDITOR.dialog.add( "paste", CKEDITOR.getUrl(this.path + "dialogs/paste.js") ); var q = CKEDITOR.plugins.clipboard.isCustomDataTypesSupported || CKEDITOR.plugins.clipboard.isFileApiSupported, v; CKEDITOR.plugins.clipboard.addFileMatcher(a, b); a.on( "paste", function (a) { if (q) { var b = a.data; a = b.dataTransfer; if (!b.dataValue) { for (var b = [], e = 0; e < a.getFilesCount(); e++) { var k = a.getFile(e); c(k) || b.push(k.type); } d(b); } } }, null, null, 1 ); a.on( "paste", function (c) { if (q && a.config.clipboard_handleImages) { var d = c.data, e = d.dataTransfer; if (!d.dataValue && f(c, e) && ((e = e.getFile(0)), b(e))) { var k = new FileReader(); k.addEventListener( "load", function () { c.data.dataValue = '\x3cimg src\x3d"' + k.result + '" /\x3e'; a.fire("paste", c.data); }, !1 ); k.addEventListener( "abort", function () { CKEDITOR.env.ie && (c.data.fileTransferCancel = !0); a.fire("paste", c.data); }, !1 ); k.addEventListener( "error", function () { CKEDITOR.env.ie && (c.data.fileTransferCancel = !0); a.fire("paste", c.data); }, !1 ); k.readAsDataURL(e); v = d.dataTransfer.id; c.stop(); } } }, null, null, 1 ); a.on( "paste", function (b) { b.data.dataTransfer || (b.data.dataTransfer = new CKEDITOR.plugins.clipboard.dataTransfer()); if (!b.data.dataValue) { var c = b.data.dataTransfer, d = c.getData("text/html"); if (d) (b.data.dataValue = d), (b.data.type = "html"); else if ((d = c.getData("text/plain"))) (b.data.dataValue = a.editable().transformPlainTextToHtml(d)), (b.data.type = "text"); } }, null, null, 1 ); a.on( "paste", function (a) { var b = a.data.dataValue, c = CKEDITOR.dtd.$block; -1 < b.indexOf("Apple-") && ((b = b.replace( / <\/span>/gi, " " )), "html" != a.data.type && (b = b.replace( /]*>([^<]*)<\/span>/gi, function (a, b) { return b.replace(/\t/g, "\x26nbsp;\x26nbsp; \x26nbsp;"); } )), -1 < b.indexOf('\x3cbr class\x3d"Apple-interchange-newline"\x3e') && ((a.data.startsWithEOL = 1), (a.data.preSniffing = "html"), (b = b.replace(/
/, ""))), (b = b.replace(/(<[^>]+) class="Apple-[^"]*"/gi, "$1"))); if (b.match(/^<[^<]+cke_(editable|contents)/i)) { var d, e, f = new CKEDITOR.dom.element("div"); for ( f.setHtml(b); 1 == f.getChildCount() && (d = f.getFirst()) && d.type == CKEDITOR.NODE_ELEMENT && (d.hasClass("cke_editable") || d.hasClass("cke_contents")); ) f = e = d; e && (b = e.getHtml().replace(/
$/i, "")); } CKEDITOR.env.ie ? (b = b.replace(/^ (?: |\r\n)?<(\w+)/g, function (b, d) { return d.toLowerCase() in c ? ((a.data.preSniffing = "html"), "\x3c" + d) : b; })) : CKEDITOR.env.webkit ? (b = b.replace(/<\/(\w+)>


<\/div>$/, function (b, d) { return d in c ? ((a.data.endsWithEOL = 1), "\x3c/" + d + "\x3e") : b; })) : CKEDITOR.env.gecko && (b = b.replace(/(\s)
$/, "$1")); a.data.dataValue = b; }, null, null, 3 ); a.on( "paste", function (b) { b = b.data; var c = a._.nextPasteType || b.type, d = b.dataValue, e, f = a.config.clipboard_defaultContentType || "html", g = b.dataTransfer.getTransferType(a) == CKEDITOR.DATA_TRANSFER_EXTERNAL, q = !0 === a.config.forcePasteAsPlainText; e = "html" == c || "html" == b.preSniffing ? "html" : z(d); delete a._.nextPasteType; "htmlifiedtext" == e && (d = A(a.config, d)); if ("text" == c && "html" == e) d = x(a, d, l.get("plain-text")); else if ((g && a.pasteFilter && !b.dontFilter) || q) d = x(a, d, a.pasteFilter); b.startsWithEOL && (d = '\x3cbr data-cke-eol\x3d"1"\x3e' + d); b.endsWithEOL && (d += '\x3cbr data-cke-eol\x3d"1"\x3e'); "auto" == c && (c = "html" == e || "html" == f ? "html" : "text"); b.type = c; b.dataValue = d; delete b.preSniffing; delete b.startsWithEOL; delete b.endsWithEOL; }, null, null, 6 ); a.on( "paste", function (b) { b = b.data; b.dataValue && (a.insertHtml(b.dataValue, b.type, b.range), setTimeout(function () { a.fire("afterPaste"); }, 0)); }, null, null, 1e3 ); a.on("pasteDialog", function (b) { setTimeout(function () { a.openDialog("paste", b.data); }, 0); }); }, }); CKEDITOR.plugins.clipboard = { addFileMatcher: function (a, b) { a.plugins.clipboard._supportedFileMatchers.push(b); }, isCustomCopyCutSupported: (CKEDITOR.env.ie && 16 > CKEDITOR.env.version) || (CKEDITOR.env.iOS && 605 > CKEDITOR.env.version) ? !1 : !0, isCustomDataTypesSupported: !CKEDITOR.env.ie || 16 <= CKEDITOR.env.version, isFileApiSupported: !CKEDITOR.env.ie || 9 < CKEDITOR.env.version, mainPasteEvent: CKEDITOR.env.ie && !CKEDITOR.env.edge ? "beforepaste" : "paste", addPasteButton: function (a, b, c) { a.ui.addButton && (a.ui.addButton(b, c), a._.pasteButtons || (a._.pasteButtons = []), a._.pasteButtons.push(b)); }, canClipboardApiBeTrusted: function (a, b) { return a.getTransferType(b) != CKEDITOR.DATA_TRANSFER_EXTERNAL || (CKEDITOR.env.chrome && !a.isEmpty()) || (CKEDITOR.env.gecko && (a.getData("text/html") || a.getFilesCount())) || (CKEDITOR.env.safari && 603 <= CKEDITOR.env.version && !CKEDITOR.env.iOS) || (CKEDITOR.env.iOS && 605 <= CKEDITOR.env.version) || (CKEDITOR.env.edge && 16 <= CKEDITOR.env.version) ? !0 : !1; }, getDropTarget: function (a) { var b = a.editable(); return (CKEDITOR.env.ie && 9 > CKEDITOR.env.version) || b.isInline() ? b : a.document; }, fixSplitNodesAfterDrop: function (a, b, c, d) { function g(a, c, d) { var f = a; f.type == CKEDITOR.NODE_TEXT && (f = a.getParent()); if (f.equals(c) && d != c.getChildCount()) return ( (a = b.startContainer.getChild(b.startOffset - 1)), (c = b.startContainer.getChild(b.startOffset)), a && a.type == CKEDITOR.NODE_TEXT && c && c.type == CKEDITOR.NODE_TEXT && ((d = a.getLength()), a.setText(a.getText() + c.getText()), c.remove(), b.setStart(a, d), b.collapse(!0)), !0 ); } var f = b.startContainer; "number" == typeof d && "number" == typeof c && f.type == CKEDITOR.NODE_ELEMENT && (g(a.startContainer, f, c) || g(a.endContainer, f, d)); }, isDropRangeAffectedByDragRange: function (a, b) { var c = b.startContainer, d = b.endOffset; return (a.endContainer.equals(c) && a.endOffset <= d) || (a.startContainer.getParent().equals(c) && a.startContainer.getIndex() < d) || (a.endContainer.getParent().equals(c) && a.endContainer.getIndex() < d) ? !0 : !1; }, internalDrop: function (a, b, c, d) { var g = CKEDITOR.plugins.clipboard, f = d.editable(), e, l; d.fire("saveSnapshot"); d.fire("lockSnapshot", { dontUpdate: 1 }); CKEDITOR.env.ie && 10 > CKEDITOR.env.version && this.fixSplitNodesAfterDrop( a, b, g.dragStartContainerChildCount, g.dragEndContainerChildCount ); (l = this.isDropRangeAffectedByDragRange(a, b)) || (e = a.createBookmark(!1)); g = b.clone().createBookmark(!1); l && (e = a.createBookmark(!1)); a = e.startNode; b = e.endNode; l = g.startNode; b && a.getPosition(l) & CKEDITOR.POSITION_PRECEDING && b.getPosition(l) & CKEDITOR.POSITION_FOLLOWING && l.insertBefore(a); a = d.createRange(); a.moveToBookmark(e); f.extractHtmlFromRange(a, 1); b = d.createRange(); g.startNode.getCommonAncestor(f) || (g = d.getSelection().createBookmarks()[0]); b.moveToBookmark(g); t(d, { dataTransfer: c, method: "drop", range: b }, 1); d.fire("unlockSnapshot"); }, getRangeAtDropPosition: function (a, b) { var c = a.data.$, d = c.clientX, g = c.clientY, f = b.getSelection(!0).getRanges()[0], e = b.createRange(); if (a.data.testRange) return a.data.testRange; if ( document.caretRangeFromPoint && b.document.$.caretRangeFromPoint(d, g) ) (c = b.document.$.caretRangeFromPoint(d, g)), e.setStart(CKEDITOR.dom.node(c.startContainer), c.startOffset), e.collapse(!0); else if (c.rangeParent) e.setStart(CKEDITOR.dom.node(c.rangeParent), c.rangeOffset), e.collapse(!0); else { if ( CKEDITOR.env.ie && 8 < CKEDITOR.env.version && f && b.editable().hasFocus ) return f; if (document.body.createTextRange) { b.focus(); c = b.document.getBody().$.createTextRange(); try { for (var l = !1, q = 0; 20 > q && !l; q++) { if (!l) try { c.moveToPoint(d, g - q), (l = !0); } catch (r) {} if (!l) try { c.moveToPoint(d, g + q), (l = !0); } catch (h) {} } if (l) { var m = "cke-temp-" + new Date().getTime(); c.pasteHTML('\x3cspan id\x3d"' + m + '"\x3e​\x3c/span\x3e'); var p = b.document.getById(m); e.moveToPosition(p, CKEDITOR.POSITION_BEFORE_START); p.remove(); } else { var k = b.document.$.elementFromPoint(d, g), n = new CKEDITOR.dom.element(k), u; if (n.equals(b.editable()) || "html" == n.getName()) return f && f.startContainer && !f.startContainer.equals(b.editable()) ? f : null; u = n.getClientRect(); d < u.left ? e.setStartAt(n, CKEDITOR.POSITION_AFTER_START) : e.setStartAt(n, CKEDITOR.POSITION_BEFORE_END); e.collapse(!0); } } catch (t) { return null; } } else return null; } return e; }, initDragDataTransfer: function (a, b) { var c = a.data.$ ? a.data.$.dataTransfer : null, d = new this.dataTransfer(c, b); "dragstart" === a.name && d.storeId(); c ? this.dragData && d.id == this.dragData.id ? (d = this.dragData) : (this.dragData = d) : this.dragData ? (d = this.dragData) : (this.dragData = d); a.data.dataTransfer = d; }, resetDragDataTransfer: function () { this.dragData = null; }, initPasteDataTransfer: function (a, b) { if (this.isCustomCopyCutSupported) { if (a && a.data && a.data.$) { var c = a.data.$.clipboardData, d = new this.dataTransfer(c, b); ("copy" !== a.name && "cut" !== a.name) || d.storeId(); this.copyCutData && d.id == this.copyCutData.id ? ((d = this.copyCutData), (d.$ = c)) : (this.copyCutData = d); return d; } return new this.dataTransfer(null, b); } return new this.dataTransfer( (CKEDITOR.env.edge && a && a.data.$ && a.data.$.clipboardData) || null, b ); }, preventDefaultDropOnElement: function (a) { a && a.on("dragover", D); }, }; r = CKEDITOR.plugins.clipboard.isCustomDataTypesSupported ? "cke/id" : "Text"; CKEDITOR.plugins.clipboard.dataTransfer = function (a, b) { a && (this.$ = a); this._ = { metaRegExp: /^/i, fragmentRegExp: /\s*\x3c!--StartFragment--\x3e|\x3c!--EndFragment--\x3e\s*/g, types: [], data: {}, files: [], nativeHtmlCache: "", normalizeType: function (a) { a = a.toLowerCase(); return "text" == a || "text/plain" == a ? "Text" : "url" == a ? "URL" : "files" === a ? "Files" : a; }, }; this._.fallbackDataTransfer = new CKEDITOR.plugins.clipboard.fallbackDataTransfer(this); this.id = this.getData(r); this.id || (this.id = "Text" == r ? "" : "cke-" + CKEDITOR.tools.getUniqueId()); b && ((this.sourceEditor = b), this.setData("text/html", b.getSelectedHtml(1)), "Text" == r || this.getData("text/plain") || this.setData("text/plain", b.getSelection().getSelectedText())); }; CKEDITOR.DATA_TRANSFER_INTERNAL = 1; CKEDITOR.DATA_TRANSFER_CROSS_EDITORS = 2; CKEDITOR.DATA_TRANSFER_EXTERNAL = 3; CKEDITOR.plugins.clipboard.dataTransfer.prototype = { getData: function (a, b) { a = this._.normalizeType(a); var c = "text/html" == a && b ? this._.nativeHtmlCache : this._.data[a]; if (void 0 === c || null === c || "" === c) { if (this._.fallbackDataTransfer.isRequired()) c = this._.fallbackDataTransfer.getData(a, b); else try { c = this.$.getData(a) || ""; } catch (d) { c = ""; } "text/html" != a || b || (c = this._stripHtml(c)); } "Text" == a && CKEDITOR.env.gecko && this.getFilesCount() && "file://" == c.substring(0, 7) && (c = ""); if ("string" === typeof c) var g = c.indexOf("\x3c/html\x3e"), c = -1 !== g ? c.substring(0, g + 7) : c; return c; }, setData: function (a, b) { a = this._.normalizeType(a); "text/html" == a ? ((this._.data[a] = this._stripHtml(b)), (this._.nativeHtmlCache = b)) : (this._.data[a] = b); if ( CKEDITOR.plugins.clipboard.isCustomDataTypesSupported || "URL" == a || "Text" == a ) if ( ("Text" == r && "Text" == a && (this.id = b), this._.fallbackDataTransfer.isRequired()) ) this._.fallbackDataTransfer.setData(a, b); else try { this.$.setData(a, b); } catch (c) {} }, storeId: function () { "Text" !== r && this.setData(r, this.id); }, getTransferType: function (a) { return this.sourceEditor ? this.sourceEditor == a ? CKEDITOR.DATA_TRANSFER_INTERNAL : CKEDITOR.DATA_TRANSFER_CROSS_EDITORS : CKEDITOR.DATA_TRANSFER_EXTERNAL; }, cacheData: function () { function a(a) { a = b._.normalizeType(a); var c = b.getData(a); "text/html" == a && ((b._.nativeHtmlCache = b.getData(a, !0)), (c = b._stripHtml(c))); c && (b._.data[a] = c); b._.types.push(a); } if (this.$) { var b = this, c, d, g; if (CKEDITOR.plugins.clipboard.isCustomDataTypesSupported) { if (this.$.types) for (c = 0; c < this.$.types.length; c++) a(this.$.types[c]); } else a("Text"), a("URL"); d = this._getImageFromClipboard(); if ((g = (this.$ && this.$.files) || null) || d) { this._.files = []; if (g && g.length) for (c = 0; c < g.length; c++) this._.files.push(g[c]); 0 === this._.files.length && d && this._.files.push(d); } } }, getFilesCount: function () { if (this._.files.length) return this._.files.length; var a = (this.$ && this.$.files) || null; return a && a.length ? a.length : this._getImageFromClipboard() ? 1 : 0; }, getFile: function (a) { if (this._.files.length) return this._.files[a]; var b = (this.$ && this.$.files) || null; return b && b.length ? b[a] : 0 === a ? this._getImageFromClipboard() : void 0; }, isFileTransfer: function () { var a = this.getTypes(), a = CKEDITOR.tools.array.filter(a, function (a) { return "application/x-moz-file" !== a; }); return 1 === a.length && "files" === a[0].toLowerCase(); }, isEmpty: function () { var a = {}, b; if (this.getFilesCount()) return !1; CKEDITOR.tools.array.forEach( CKEDITOR.tools.object.keys(this._.data), function (b) { a[b] = 1; } ); if (this.$) if (CKEDITOR.plugins.clipboard.isCustomDataTypesSupported) { if (this.$.types) for (var c = 0; c < this.$.types.length; c++) a[this.$.types[c]] = 1; } else (a.Text = 1), (a.URL = 1); "Text" != r && (a[r] = 0); for (b in a) if (a[b] && "" !== this.getData(b)) return !1; return !0; }, getTypes: function () { return 0 < this._.types.length ? this._.types : this.$ && this.$.types ? [].slice.call(this.$.types) : []; }, _getImageFromClipboard: function () { var a; try { if ( this.$ && this.$.items && this.$.items[0] && (a = this.$.items[0].getAsFile()) && a.type ) return a; } catch (b) {} }, _stripHtml: function (a) { function b(a) { var b = new CKEDITOR.htmlParser(), g, f; b.onTagOpen = function (a) { "body" === a && (g = b._.htmlPartsRegex.lastIndex); }; b.onTagClose = function (a) { "body" === a && (f = b._.htmlPartsRegex.lastIndex); }; b.parse(a); return "number" !== typeof g || "number" !== typeof f ? a : a.substring(g, f).replace(/<\/body\s*>$/gi, ""); } a && a.length && ((a = b(a)), (a = a.replace(this._.metaRegExp, "")), (a = a.replace(this._.fragmentRegExp, ""))); return a; }, }; CKEDITOR.plugins.clipboard.fallbackDataTransfer = function (a) { this._dataTransfer = a; this._customDataFallbackType = "text/html"; }; CKEDITOR.plugins.clipboard.fallbackDataTransfer._isCustomMimeTypeSupported = null; CKEDITOR.plugins.clipboard.fallbackDataTransfer._customTypes = []; CKEDITOR.plugins.clipboard.fallbackDataTransfer.prototype = { isRequired: function () { var a = CKEDITOR.plugins.clipboard.fallbackDataTransfer, b = this._dataTransfer.$; if (null === a._isCustomMimeTypeSupported) if (b) { a._isCustomMimeTypeSupported = !1; if (CKEDITOR.env.edge && 17 <= CKEDITOR.env.version) return !0; try { b.setData("cke/mimetypetest", "cke test value"), (a._isCustomMimeTypeSupported = "cke test value" === b.getData("cke/mimetypetest")), b.clearData("cke/mimetypetest"); } catch (c) {} } else return !1; return !a._isCustomMimeTypeSupported; }, getData: function (a, b) { var c = this._getData(this._customDataFallbackType, !0); if (b) return c; var c = this._extractDataComment(c), d = null, d = a === this._customDataFallbackType ? c.content : c.data && c.data[a] ? c.data[a] : this._getData(a, !0); return null !== d ? d : ""; }, setData: function (a, b) { var c = a === this._customDataFallbackType; c && (b = this._applyDataComment(b, this._getFallbackTypeData())); var d = b, g = this._dataTransfer.$; try { g.setData(a, d), c && (this._dataTransfer._.nativeHtmlCache = d); } catch (f) { if (this._isUnsupportedMimeTypeError(f)) { c = CKEDITOR.plugins.clipboard.fallbackDataTransfer; -1 === CKEDITOR.tools.indexOf(c._customTypes, a) && c._customTypes.push(a); var c = this._getFallbackTypeContent(), e = this._getFallbackTypeData(); e[a] = d; try { (d = this._applyDataComment(c, e)), g.setData(this._customDataFallbackType, d), (this._dataTransfer._.nativeHtmlCache = d); } catch (l) { d = ""; } } } return d; }, _getData: function (a, b) { var c = this._dataTransfer._.data; if (!b && c[a]) return c[a]; try { return this._dataTransfer.$.getData(a); } catch (d) { return null; } }, _getFallbackTypeContent: function () { var a = this._dataTransfer._.data[this._customDataFallbackType]; a || (a = this._extractDataComment( this._getData(this._customDataFallbackType, !0) ).content); return a; }, _getFallbackTypeData: function () { var a = CKEDITOR.plugins.clipboard.fallbackDataTransfer._customTypes, b = this._extractDataComment( this._getData(this._customDataFallbackType, !0) ).data || {}, c = this._dataTransfer._.data; CKEDITOR.tools.array.forEach( a, function (a) { void 0 !== c[a] ? (b[a] = c[a]) : void 0 !== b[a] && (b[a] = b[a]); }, this ); return b; }, _isUnsupportedMimeTypeError: function (a) { return a.message && -1 !== a.message.search(/element not found/gi); }, _extractDataComment: function (a) { var b = { data: null, content: a || "" }; if (a && 16 < a.length) { var c; (c = /\x3c!--cke-data:(.*?)--\x3e/g.exec(a)) && c[1] && ((b.data = JSON.parse(decodeURIComponent(c[1]))), (b.content = a.replace(c[0], ""))); } return b; }, _applyDataComment: function (a, b) { var c = ""; b && CKEDITOR.tools.object.keys(b).length && (c = "\x3c!--cke-data:" + encodeURIComponent(JSON.stringify(b)) + "--\x3e"); return c + (a && a.length ? a : ""); }, }; })(); CKEDITOR.config.clipboard_notificationDuration = 1e4; CKEDITOR.config.clipboard_handleImages = !0; CKEDITOR.plugins.add("panelbutton", { requires: "button", onLoad: function () { function e(c) { var b = this._; b.state != CKEDITOR.TRISTATE_DISABLED && (this.createPanel(c), b.on ? b.panel.hide() : b.panel.showBlock( this._.id, this.document.getById(this._.id), 4 )); } CKEDITOR.ui.panelButton = CKEDITOR.tools.createClass({ base: CKEDITOR.ui.button, $: function (c) { var b = c.panel || {}; delete c.panel; this.base(c); this.document = (b.parent && b.parent.getDocument()) || CKEDITOR.document; b.block = { attributes: b.attributes }; b.toolbarRelated = !0; this.hasArrow = "listbox"; this.click = e; this._ = { panelDefinition: b }; }, statics: { handler: { create: function (c) { return new CKEDITOR.ui.panelButton(c); }, }, }, proto: { createPanel: function (c) { var b = this._; if (!b.panel) { var f = this._.panelDefinition, e = this._.panelDefinition.block, k = f.parent || CKEDITOR.document.getBody(), h = CKEDITOR.document.getById(this._.id), d = (this._.panel = new CKEDITOR.ui.floatPanel(c, k, f)), f = d.addBlock(b.id, e), a = this, g = c.getCommand(this.command); d.onShow = function () { a.className && this.element.addClass(a.className + "_panel"); a.setState(CKEDITOR.TRISTATE_ON); h.setAttribute("aria-expanded", "true"); b.on = 1; a.editorFocus && c.focus(); if (a.onOpen) a.onOpen(); }; d.onHide = function (d) { a.className && this.element.getFirst().removeClass(a.className + "_panel"); !a.modes && g ? a.setStateFromCommand(g) : a.setState( a.modes && a.modes[c.mode] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED ); b.on = 0; h.setAttribute("aria-expanded", "false"); if (!d && a.onClose) a.onClose(); }; d.onEscape = function () { d.hide(1); a.document.getById(b.id).focus(); }; if (this.onBlock) this.onBlock(d, f); f.onHide = function () { b.on = 0; !a.modes && a.command ? a.setStateFromCommand(g) : a.setState(CKEDITOR.TRISTATE_OFF); }; } }, setStateFromCommand: function (c) { this.setState(c.state); }, }, }); }, beforeInit: function (e) { e.ui.addHandler(CKEDITOR.UI_PANELBUTTON, CKEDITOR.ui.panelButton.handler); }, }); CKEDITOR.UI_PANELBUTTON = "panelbutton"; (function () { CKEDITOR.plugins.add("panel", { beforeInit: function (a) { a.ui.addHandler(CKEDITOR.UI_PANEL, CKEDITOR.ui.panel.handler); }, }); CKEDITOR.UI_PANEL = "panel"; CKEDITOR.ui.panel = function (a, b) { b && CKEDITOR.tools.extend(this, b); CKEDITOR.tools.extend(this, { className: "", css: [] }); this.id = CKEDITOR.tools.getNextId(); this.document = a; this.isFramed = this.forceIFrame || this.css.length; this._ = { blocks: {} }; }; CKEDITOR.ui.panel.handler = { create: function (a) { return new CKEDITOR.ui.panel(a); }, }; var g = CKEDITOR.addTemplate( "panel", '\x3cdiv lang\x3d"{langCode}" id\x3d"{id}" dir\x3d{dir} class\x3d"cke cke_reset_all {editorId} cke_panel cke_panel {cls} cke_{dir}" style\x3d"z-index:{z-index}" role\x3d"presentation"\x3e{frame}\x3c/div\x3e' ), h = CKEDITOR.addTemplate( "panel-frame", '\x3ciframe id\x3d"{id}" class\x3d"cke_panel_frame" role\x3d"presentation" frameborder\x3d"0" src\x3d"{src}"\x3e\x3c/iframe\x3e' ), k = CKEDITOR.addTemplate( "panel-frame-inner", '\x3c!DOCTYPE html\x3e\x3chtml class\x3d"cke_panel_container {env}" dir\x3d"{dir}" lang\x3d"{langCode}"\x3e\x3chead\x3e{css}\x3c/head\x3e\x3cbody class\x3d"cke_{dir}" style\x3d"margin:0;padding:0" onload\x3d"{onload}"\x3e\x3c/body\x3e\x3c/html\x3e' ); CKEDITOR.ui.panel.prototype = { render: function (a, b) { var e = { editorId: a.id, id: this.id, langCode: a.langCode, dir: a.lang.dir, cls: this.className, frame: "", env: CKEDITOR.env.cssClass, "z-index": a.config.baseFloatZIndex + 1, }; this.getHolderElement = function () { var a = this._.holder; if (!a) { if (this.isFramed) { var a = this.document.getById(this.id + "_frame"), b = a.getParent(), a = a.getFrameDocument(); CKEDITOR.env.iOS && b.setStyles({ overflow: "scroll", "-webkit-overflow-scrolling": "touch", }); b = CKEDITOR.tools.addFunction( CKEDITOR.tools.bind(function () { this.isLoaded = !0; if (this.onLoad) this.onLoad(); }, this) ); a.write( k.output( CKEDITOR.tools.extend( { css: CKEDITOR.tools.buildStyleHtml(this.css), onload: "window.parent.CKEDITOR.tools.callFunction(" + b + ");", }, e ) ) ); a.getWindow().$.CKEDITOR = CKEDITOR; a.on( "keydown", function (a) { var b = a.data.getKeystroke(), c = this.document.getById(this.id).getAttribute("dir"); if ( "input" !== a.data.getTarget().getName() || (37 !== b && 39 !== b) ) this._.onKeyDown && !1 === this._.onKeyDown(b) ? ("input" === a.data.getTarget().getName() && 32 === b) || a.data.preventDefault() : (27 == b || b == ("rtl" == c ? 39 : 37)) && this.onEscape && !1 === this.onEscape(b) && a.data.preventDefault(); }, this ); a = a.getBody(); a.unselectable(); CKEDITOR.env.air && CKEDITOR.tools.callFunction(b); } else a = this.document.getById(this.id); this._.holder = a; } return a; }; if (this.isFramed) { var d = CKEDITOR.env.air ? "javascript:void(0)" : CKEDITOR.env.ie && !CKEDITOR.env.edge ? "javascript:void(function(){" + encodeURIComponent( "document.open();(" + CKEDITOR.tools.fixDomain + ")();document.close();" ) + "}())" : ""; e.frame = h.output({ id: this.id + "_frame", src: d }); } d = g.output(e); b && b.push(d); return d; }, addBlock: function (a, b) { b = this._.blocks[a] = b instanceof CKEDITOR.ui.panel.block ? b : new CKEDITOR.ui.panel.block(this.getHolderElement(), b); this._.currentBlock || this.showBlock(a); return b; }, getBlock: function (a) { return this._.blocks[a]; }, showBlock: function (a) { a = this._.blocks[a]; var b = this._.currentBlock, e = !this.forceIFrame || CKEDITOR.env.ie ? this._.holder : this.document.getById(this.id + "_frame"); b && b.hide(); this._.currentBlock = a; CKEDITOR.fire("ariaWidget", e); a._.focusIndex = -1; this._.onKeyDown = a.onKeyDown && CKEDITOR.tools.bind(a.onKeyDown, a); a.show(); return a; }, destroy: function () { this.element && this.element.remove(); }, }; CKEDITOR.ui.panel.block = CKEDITOR.tools.createClass({ $: function (a, b) { this.element = a.append( a .getDocument() .createElement("div", { attributes: { tabindex: -1, class: "cke_panel_block" }, styles: { display: "none" }, }) ); b && CKEDITOR.tools.extend(this, b); this.element.setAttributes({ role: this.attributes.role || "presentation", "aria-label": this.attributes["aria-label"], title: this.attributes.title || this.attributes["aria-label"], }); this.keys = {}; this._.focusIndex = -1; this.element.disableContextMenu(); }, _: { markItem: function (a) { -1 != a && ((a = this._.getItems().getItem((this._.focusIndex = a))), CKEDITOR.env.webkit && a.getDocument().getWindow().focus(), a.focus(), this.onMark && this.onMark(a)); }, markFirstDisplayed: function (a) { for ( var b = function (a) { return ( a.type == CKEDITOR.NODE_ELEMENT && "none" == a.getStyle("display") ); }, e = this._.getItems(), d, c, f = e.count() - 1; 0 <= f; f-- ) if ( ((d = e.getItem(f)), d.getAscendant(b) || ((c = d), (this._.focusIndex = f)), "true" == d.getAttribute("aria-selected")) ) { c = d; this._.focusIndex = f; break; } c && (a && a(), CKEDITOR.env.webkit && c.getDocument().getWindow().focus(), c.focus(), this.onMark && this.onMark(c)); }, getItems: function () { return this.element.find("a,input"); }, }, proto: { show: function () { this.element.setStyle("display", ""); }, hide: function () { (this.onHide && !0 === this.onHide.call(this)) || this.element.setStyle("display", "none"); }, onKeyDown: function (a, b) { var e = this.keys[a]; switch (e) { case "next": for ( var d = this._.focusIndex, e = this._.getItems(), c; (c = e.getItem(++d)); ) if (c.getAttribute("_cke_focus") && c.$.offsetWidth) { this._.focusIndex = d; c.focus(!0); break; } return c || b ? !1 : ((this._.focusIndex = -1), this.onKeyDown(a, 1)); case "prev": d = this._.focusIndex; for (e = this._.getItems(); 0 < d && (c = e.getItem(--d)); ) { if (c.getAttribute("_cke_focus") && c.$.offsetWidth) { this._.focusIndex = d; c.focus(!0); break; } c = null; } return c || b ? !1 : ((this._.focusIndex = e.count()), this.onKeyDown(a, 1)); case "click": case "mouseup": return ( (d = this._.focusIndex), (c = 0 <= d && this._.getItems().getItem(d)) && c.fireEventHandler(e, { button: CKEDITOR.tools.normalizeMouseButton( CKEDITOR.MOUSE_BUTTON_LEFT, !0 ), }), !1 ); } return !0; }, }, }); })(); CKEDITOR.plugins.add("floatpanel", { requires: "panel" }); (function () { function v(a, b, c, m, h) { h = CKEDITOR.tools.genKey( b.getUniqueId(), c.getUniqueId(), a.lang.dir, a.uiColor || "", m.css || "", h || "" ); var g = f[h]; g || ((g = f[h] = new CKEDITOR.ui.panel(b, m)), (g.element = c.append( CKEDITOR.dom.element.createFromHtml(g.render(a), b) )), g.element.setStyles({ display: "none", position: "absolute" })); return g; } var f = {}; CKEDITOR.ui.floatPanel = CKEDITOR.tools.createClass({ $: function (a, b, c, m) { function h() { e.hide(); } c.forceIFrame = 1; c.toolbarRelated && a.elementMode == CKEDITOR.ELEMENT_MODE_INLINE && (b = CKEDITOR.document.getById("cke_" + a.name)); var g = b.getDocument(); m = v(a, g, b, c, m || 0); var n = m.element, l = n.getFirst(), e = this; n.disableContextMenu(); this.element = n; this._ = { editor: a, panel: m, parentElement: b, definition: c, document: g, iframe: l, children: [], dir: a.lang.dir, showBlockParams: null, markFirst: void 0 !== c.markFirst ? c.markFirst : !0, }; a.on("mode", h); a.on("resize", h); g.getWindow().on( "resize", function () { this.reposition(); }, this ); }, proto: { addBlock: function (a, b) { return this._.panel.addBlock(a, b); }, addListBlock: function (a, b) { return this._.panel.addListBlock(a, b); }, getBlock: function (a) { return this._.panel.getBlock(a); }, showBlock: function (a, b, c, m, h, g) { var n = this._.panel, l = n.showBlock(a); this._.showBlockParams = [].slice.call(arguments); this.allowBlur(!1); var e = this._.editor.editable(); this._.returnFocus = e.hasFocus ? e : new CKEDITOR.dom.element(CKEDITOR.document.$.activeElement); this._.hideTimeout = 0; var k = this.element, e = this._.iframe, e = CKEDITOR.env.ie && !CKEDITOR.env.edge ? e : new CKEDITOR.dom.window(e.$.contentWindow), f = k.getDocument(), r = this._.parentElement.getPositionedAncestor(), t = b.getDocumentPosition(f), f = r ? r.getDocumentPosition(f) : { x: 0, y: 0 }, q = "rtl" == this._.dir, d = t.x + (m || 0) - f.x, p = t.y + (h || 0) - f.y; !q || (1 != c && 4 != c) ? q || (2 != c && 3 != c) || (d += b.$.offsetWidth - 1) : (d += b.$.offsetWidth); if (3 == c || 4 == c) p += b.$.offsetHeight - 1; this._.panel._.offsetParentId = b.getId(); k.setStyles({ top: p + "px", left: 0, display: "" }); k.setOpacity(0); k.getFirst().removeStyle("width"); this._.editor.focusManager.add(e); this._.blurSet || ((CKEDITOR.event.useCapture = !0), e.on( "blur", function (a) { function u() { delete this._.returnFocus; this.hide(); } this.allowBlur() && a.data.getPhase() == CKEDITOR.EVENT_PHASE_AT_TARGET && this.visible && !this._.activeChild && (CKEDITOR.env.iOS ? this._.hideTimeout || (this._.hideTimeout = CKEDITOR.tools.setTimeout( u, 0, this )) : u.call(this)); }, this ), e.on( "focus", function () { this._.focused = !0; this.hideChild(); this.allowBlur(!0); }, this ), CKEDITOR.env.iOS && (e.on( "touchstart", function () { clearTimeout(this._.hideTimeout); }, this ), e.on( "touchend", function () { this._.hideTimeout = 0; this.focus(); }, this )), (CKEDITOR.event.useCapture = !1), (this._.blurSet = 1)); n.onEscape = CKEDITOR.tools.bind(function (a) { if (this.onEscape && !1 === this.onEscape(a)) return !1; }, this); CKEDITOR.tools.setTimeout( function () { var a = CKEDITOR.tools.bind(function () { var a = k; a.removeStyle("width"); if (l.autoSize) { var b = l.element.getDocument(), b = ( CKEDITOR.env.webkit || CKEDITOR.env.edge ? l.element : b.getBody() ).$.scrollWidth; CKEDITOR.env.ie && CKEDITOR.env.quirks && 0 < b && (b += (a.$.offsetWidth || 0) - (a.$.clientWidth || 0) + 3); a.setStyle("width", b + 10 + "px"); b = l.element.$.scrollHeight; CKEDITOR.env.ie && CKEDITOR.env.quirks && 0 < b && (b += (a.$.offsetHeight || 0) - (a.$.clientHeight || 0) + 3); a.setStyle("height", b + "px"); n._.currentBlock.element .setStyle("display", "none") .removeStyle("display"); } else a.removeStyle("height"); q && (d -= k.$.offsetWidth); k.setStyle("left", d + "px"); var b = n.element.getWindow(), a = k.$.getBoundingClientRect(), b = b.getViewPaneSize(), c = a.width || a.right - a.left, e = a.height || a.bottom - a.top, m = q ? a.right : b.width - a.left, h = q ? b.width - a.right : a.left; q ? m < c && (d = h > c ? d + c : b.width > c ? d - a.left : d - a.right + b.width) : m < c && (d = h > c ? d - c : b.width > c ? d - a.right + b.width : d - a.left); c = a.top; b.height - a.top < e && (p = c > e ? p - e : b.height > e ? p - a.bottom + b.height : p - a.top); CKEDITOR.env.ie && !CKEDITOR.env.edge && ((b = a = k.$.offsetParent && new CKEDITOR.dom.element(k.$.offsetParent)) && "html" == b.getName() && (b = b.getDocument().getBody()), b && "rtl" == b.getComputedStyle("direction") && (d = CKEDITOR.env.ie8Compat ? d - 2 * k.getDocument().getDocumentElement().$.scrollLeft : d - (a.$.scrollWidth - a.$.clientWidth))); var a = k.getFirst(), f; (f = a.getCustomData("activePanel")) && f.onHide && f.onHide.call(this, 1); a.setCustomData("activePanel", this); k.setStyles({ top: p + "px", left: d + "px" }); k.setOpacity(1); g && g(); }, this); n.isLoaded ? a() : (n.onLoad = a); CKEDITOR.tools.setTimeout( function () { var a = CKEDITOR.env.webkit && CKEDITOR.document.getWindow().getScrollPosition().y; this.focus(); l.element.focus(); CKEDITOR.env.webkit && (CKEDITOR.document.getBody().$.scrollTop = a); this.allowBlur(!0); this._.markFirst && (CKEDITOR.env.ie ? CKEDITOR.tools.setTimeout(function () { l.markFirstDisplayed ? l.markFirstDisplayed() : l._.markFirstDisplayed(); }, 0) : l.markFirstDisplayed ? l.markFirstDisplayed() : l._.markFirstDisplayed()); this._.editor.fire("panelShow", this); }, 0, this ); }, CKEDITOR.env.air ? 200 : 0, this ); this.visible = 1; this.onShow && this.onShow.call(this); }, reposition: function () { var a = this._.showBlockParams; this.visible && this._.showBlockParams && (this.hide(), this.showBlock.apply(this, a)); }, focus: function () { if (CKEDITOR.env.webkit) { var a = CKEDITOR.document.getActive(); a && !a.equals(this._.iframe) && a.$.blur(); } ( this._.lastFocused || this._.iframe.getFrameDocument().getWindow() ).focus(); }, blur: function () { var a = this._.iframe.getFrameDocument().getActive(); a && a.is("a") && (this._.lastFocused = a); }, hide: function (a) { if (this.visible && (!this.onHide || !0 !== this.onHide.call(this))) { this.hideChild(); CKEDITOR.env.gecko && this._.iframe.getFrameDocument().$.activeElement.blur(); this.element.setStyle("display", "none"); this.visible = 0; this.element.getFirst().removeCustomData("activePanel"); if ((a = a && this._.returnFocus)) CKEDITOR.env.webkit && a.type && a.getWindow().$.focus(), a.focus(); delete this._.lastFocused; this._.showBlockParams = null; this._.editor.fire("panelHide", this); } }, allowBlur: function (a) { var b = this._.panel; void 0 !== a && (b.allowBlur = a); return b.allowBlur; }, showAsChild: function (a, b, c, f, h, g) { if ( this._.activeChild != a || a._.panel._.offsetParentId != c.getId() ) this.hideChild(), (a.onHide = CKEDITOR.tools.bind(function () { CKEDITOR.tools.setTimeout( function () { this._.focused || this.hide(); }, 0, this ); }, this)), (this._.activeChild = a), (this._.focused = !1), a.showBlock(b, c, f, h, g), this.blur(), (CKEDITOR.env.ie7Compat || CKEDITOR.env.ie6Compat) && setTimeout(function () { a.element.getChild(0).$.style.cssText += ""; }, 100); }, hideChild: function (a) { var b = this._.activeChild; b && (delete b.onHide, delete this._.activeChild, b.hide(), a && this.focus()); }, }, }); CKEDITOR.on("instanceDestroyed", function () { var a = CKEDITOR.tools.isEmpty(CKEDITOR.instances), b; for (b in f) { var c = f[b]; a ? c.destroy() : c.element.hide(); } a && (f = {}); }); })(); (function () { var n, k, l; CKEDITOR.plugins.add("colorbutton", { requires: "panelbutton,floatpanel", init: function (a) { function b(d) { function b() { var d = a.config["colorButton_" + h + "Style"]; d.childRule = "back" == h ? function (a) { return f(a); } : function (a) { return ( !(a.is("a") || a.getElementsByTag("a").count()) || f(a) ); }; return d; } function z(d, w, e) { var c = {}; d && (c.color = d); w && (c.colorName = w); w = !CKEDITOR.tools.isEmpty(c) && new CKEDITOR.style(b(), c); a.execCommand(m, { newStyle: w }); if (d && e) for ( e.addColor(d.substr(1).toUpperCase()), d = t.element.find("[role\x3doption]").toArray(), e = 0; e < d.length; e++ ) d[e].setAttributes({ "aria-posinset": e + 1, "aria-setsize": d.length, }); } var g = d.name, h = d.type, k = d.title, C = d.order, m = d.commandName; d = d.contentTransformations || {}; var A = new CKEDITOR.style(q["colorButton_" + h + "Style"]), r = CKEDITOR.tools.getNextId() + "_colorBox", x = { type: h }, y = new CKEDITOR.style(q["colorButton_" + h + "Style"], { color: "inherit", }), B = (function () { return CKEDITOR.tools.addFunction(function (d, b, e) { a.focus(); a.fire("saveSnapshot"); "?" == d ? a.getColorFromDialog( function (a) { a && z(a, b, u); }, null, x ) : z(d && "#" + d, b, u); e && (e.setAttribute("cke_colorlast", !0), a.once("selectionChange", function () { e.removeAttribute("cke_colorlast"); })); }); })(), u = l.getRowLimit(a) ? new l(a, "back" == h ? "background-color" : "color", B) : void 0, t; a.addCommand(m, { contextSensitive: !0, exec: function (a, d) { if (!a.readOnly) { var b = d.newStyle; a.removeStyle(y); a.focus(); b && a.applyStyle(b); a.fire("saveSnapshot"); } }, refresh: function (a, d) { y.checkApplicable(d, a, a.activeFilter) ? y.checkActive(d, a) ? this.setState(CKEDITOR.TRISTATE_ON) : this.setState(CKEDITOR.TRISTATE_OFF) : this.setState(CKEDITOR.TRISTATE_DISABLED); }, }); a.ui.add(g, CKEDITOR.UI_PANELBUTTON, { label: k, title: k, command: m, editorFocus: 0, toolbar: "colors," + C, allowedContent: A, requiredContent: A, contentTransformations: d, panel: { css: [CKEDITOR.skin.getPath("editor")].concat( q.colorButton_contentsCss ), attributes: { role: "listbox", "aria-label": p.panelTitle }, }, select: function (a) { var d = q.colorButton_colors.split(","); a = CKEDITOR.tools.array.find(d, a); a = n.normalizeColor(a); v(t, a); t._.markFirstDisplayed(); }, onBlock: function (d, b) { t = b; b.autoSize = !0; b.element.addClass("cke_colorblock"); b.element.setHtml(c(r, B, u ? u.getLength() : 0)); b.element.getDocument().getBody().setStyle("overflow", "hidden"); b.element .getAscendant({ html: 1 }) .setStyle("overflow", "hidden"); CKEDITOR.ui.fire("ready", this); var e = b.keys, h = "rtl" == a.lang.dir; e[h ? 37 : 39] = "next"; e[40] = "next"; e[9] = "next"; e[h ? 39 : 37] = "prev"; e[38] = "prev"; e[CKEDITOR.SHIFT + 9] = "prev"; e[32] = "click"; u && u.setContainer(b.element.findOne(".cke_colorhistory")); }, onOpen: function () { var d = a.getSelection(), b = d && d.getStartElement(), e = a.elementPath(b), c = "back" == h ? "background-color" : "color"; if (e) { b = e.block || e.blockLimit || a.document.getBody(); do e = (b && b.getComputedStyle(c)) || "transparent"; while ( "back" == h && "transparent" == e && b && (b = b.getParent()) ); (e && "transparent" != e) || (e = "#ffffff"); q.colorButton_enableAutomatic && t.element.findOne("#" + r).setStyle("background-color", e); if ((b = d && d.getRanges()[0])) { for ( var d = new CKEDITOR.dom.walker(b), g = b.collapsed ? b.startContainer : d.next(), b = ""; g; ) { g.type !== CKEDITOR.NODE_ELEMENT && (g = g.getParent()); g = n.normalizeColor(g.getComputedStyle(c)); b = b || g; if (b !== g) { b = ""; break; } g = d.next(); } "transparent" == b && (b = ""); "fore" == h && (x.automaticTextColor = "#" + n.normalizeColor(e)); x.selectionColor = b ? "#" + b : ""; v(t, b); } return e; } }, }); } function c(b, c, f) { var g = [], h = q.colorButton_colors.split(","), k = a.plugins.colordialog && q.colorButton_enableMore; f = h.length + f + (k ? 1 : 0); var v = 1; q.colorButton_enableAutomatic && ((f += 1), (v += 1), g.push( '\x3ca class\x3d"cke_colorauto" _cke_focus\x3d1 hidefocus\x3dtrue', ' title\x3d"', p.auto, '"', ' draggable\x3d"false"', ' ondragstart\x3d"return false;"', ' onclick\x3d"CKEDITOR.tools.callFunction(', c, ',null);return false;"', " href\x3d\"javascript:void('", p.auto, "')\"", ' role\x3d"option" aria-posinset\x3d"1" aria-setsize\x3d"', f, '"\x3e', '\x3ctable role\x3d"presentation" cellspacing\x3d0 cellpadding\x3d0 width\x3d"100%"\x3e', "\x3ctr\x3e", '\x3ctd colspan\x3d"', a.config.colorButton_colorsPerRow, '" align\x3d"center"\x3e', '\x3cspan class\x3d"cke_colorbox" id\x3d"', b, '"\x3e\x3c/span\x3e', p.auto, "\x3c/td\x3e", "\x3c/tr\x3e", "\x3c/table\x3e", "\x3c/a\x3e" )); g.push( '\x3ctable role\x3d"presentation" cellspacing\x3d0 cellpadding\x3d0 width\x3d"100%"\x3e\x3ctbody\x3e' ); for (b = 0; b < h.length; b++) { 0 === b % a.config.colorButton_colorsPerRow && g.push("\x3c/tr\x3e\x3ctr\x3e"); var m = h[b].split("/"), r = m[0], m = new n(a, { color: m[1] || r, label: m[1] ? r : void 0 }, c); m.setPositionIndex(v + b, f); g.push(m.getHtml()); } l.getRowLimit(a) && l.renderContainer(g, a); k && g.push( "\x3c/tr\x3e", "\x3ctr\x3e", '\x3ctd colspan\x3d"', a.config.colorButton_colorsPerRow, '" align\x3d"center"\x3e', '\x3ca class\x3d"cke_colormore" _cke_focus\x3d1 hidefocus\x3dtrue', ' title\x3d"', p.more, '"', ' draggable\x3d"false"', ' ondragstart\x3d"return false;"', ' onclick\x3d"CKEDITOR.tools.callFunction(', c, ",'?');return false;\"", " href\x3d\"javascript:void('", p.more, "')\"", ' role\x3d"option" aria-posinset\x3d"', f, '" aria-setsize\x3d"', f, '"\x3e', p.more, "\x3c/a\x3e", "\x3c/td\x3e" ); g.push("\x3c/tr\x3e\x3c/tbody\x3e\x3c/table\x3e"); return g.join(""); } function f(a) { return ( "false" == a.getAttribute("contentEditable") || a.getAttribute("data-nostyle") ); } function v(a, b) { var c = a._.getItems(), g = a.element.findOne("[aria-selected]"), f = a.element.findOne("[cke_colorlast]"); g && g.removeAttribute("aria-selected"); if (f) f.setAttribute("aria-selected", !0); else for (g = 0; g < c.count(); g++) if ( ((f = c.getItem(g)), b && b == n.normalizeColor(f.getAttribute("data-value"))) ) { f.setAttribute("aria-selected", !0); break; } } var q = a.config, p = a.lang.colorbutton; if (!CKEDITOR.env.hc) { b({ name: "TextColor", type: "fore", commandName: "textColor", title: p.textColorTitle, order: 10, contentTransformations: [ [ { element: "font", check: "span{color}", left: function (a) { return !!a.attributes.color; }, right: function (a) { a.name = "span"; a.attributes.color && (a.styles.color = a.attributes.color); delete a.attributes.color; }, }, ], ], }); var k, r = a.config.colorButton_normalizeBackground; if (void 0 === r || r) k = [ [ { element: "span", left: function (a) { var b = CKEDITOR.tools; if ("span" != a.name || !a.styles || !a.styles.background) return !1; a = b.style.parse.background(a.styles.background); return a.color && 1 === b.object.keys(a).length; }, right: function (b) { var c = new CKEDITOR.style(a.config.colorButton_backStyle, { color: b.styles.background, }).getDefinition(); b.name = c.element; b.styles = c.styles; b.attributes = c.attributes || {}; return b; }, }, ], ]; b({ name: "BGColor", type: "back", commandName: "bgColor", title: p.bgColorTitle, order: 20, contentTransformations: k, }); } }, }); n = CKEDITOR.tools.createClass({ $: function (a, b, c) { this.$ = new CKEDITOR.dom.element("td"); this.color = CKEDITOR.tools._isValidColorFormat(b.color) ? b.color : ""; this.clickFn = c; this.label = b.label || n.colorNames(a)[this.color] || this.color; this.setHtml(); }, statics: { colorNames: function (a) { return a.lang.colorbutton.colors; }, normalizeColor: function (a) { var b = /^(rgb|hsl)a\(/g.test(a), c = /^rgba\((\s*0\s*,?){4}\)$/g.test(a); return b && !c ? ((a = new CKEDITOR.tools.color(a)), CKEDITOR.tools.normalizeHex(a.getHex() || "").replace(/#/g, "")) : CKEDITOR.tools .normalizeHex("#" + CKEDITOR.tools.convertRgbToHex(a || "")) .replace(/#/g, ""); }, }, proto: { getElement: function () { return this.$; }, getHtml: function () { return this.getElement().getOuterHtml(); }, setHtml: function () { this.getElement().setHtml( '\x3ca class\x3d"cke_colorbox" _cke_focus\x3d1 hidefocus\x3dtrue title\x3d"' + this.label + '" draggable\x3d"false" ondragstart\x3d"return false;" onclick\x3d"CKEDITOR.tools.callFunction(' + this.clickFn + ",'" + this.color + "','" + this.label + "', this); return false;\" href\x3d\"javascript:void('" + this.color + '\')" data-value\x3d"' + this.color + '" role\x3d"option"\x3e\x3cspan class\x3d"cke_colorbox" style\x3d"background-color:#' + this.color + '"\x3e\x3c/span\x3e\x3c/a\x3e' ); }, setPositionIndex: function (a, b) { this.getElement() .getChild(0) .setAttributes({ "aria-posinset": a, "aria-setsize": b }); }, }, }); k = CKEDITOR.tools.createClass({ $: function () { this.$ = new CKEDITOR.dom.element("tr"); this.$.addClass("cke_colorhistory_row"); this.boxes = []; }, proto: { getElement: function () { return this.$; }, removeLastColor: function () { this.getElement().getLast().remove(); return this.boxes.pop(); }, addNewColor: function (a) { this.boxes.unshift(a); this.getElement().append(a.getElement(), !0); }, extractColorBox: function (a) { var b = CKEDITOR.tools.getIndex(this.boxes, function (b) { return b.color === a; }); if (0 > b) return null; this.boxes[b].getElement().remove(); return this.boxes.splice(b, 1)[0]; }, }, }); l = CKEDITOR.tools.createClass({ $: function (a, b, c) { this.editor = a; this.cssProperty = b; this.clickFn = c; this.rows = []; this._.addNewRow(); if (this.editor.config.colorButton_renderContentColors) this.editor.once( "instanceReady", function () { this.renderContentColors(); }, this ); }, statics: { renderContainer: function (a, b) { a.push( '\x3c/tbody\x3e\x3ctbody class\x3d"cke_colorhistory" style\x3d"display:none;"\x3e', "\x3ctr\x3e", '\x3ctd colspan\x3d"', b.config.colorButton_colorsPerRow, '" align\x3d"center"\x3e', "\x3cspan\x3e\x3chr\x3e\x3c/span\x3e", "\x3c/td\x3e", "\x3c/tr\x3e", "\x3c/tbody\x3e\x3ctbody\x3e" ); }, getRowLimit: function (a) { return a.config.colorButton_historyRowLimit; }, getCapacity: function (a) { return l.getRowLimit(a) * a.config.colorButton_colorsPerRow; }, colorList: CKEDITOR.tools.style.parse._colors, }, _: { countColors: function () { var a = CKEDITOR.tools.getStyledSpans( this.cssProperty, this.editor.editable() ); return CKEDITOR.tools.array.reduce( a, function (a, c) { var f = this._.getHexCode(c, this.cssProperty, l.colorList); a[f] = a[f] || 0; a[f] += 1; return a; }, {}, this ); }, getHexCode: function (a, b, c) { var f = a.getStyle(b); return f in c ? c[f].substr(1) : n.normalizeColor(a.getComputedStyle(b)).toUpperCase(); }, sortByOccurrencesAscending: function (a, b) { var c = [], f; for (f in a) { var k = {}; k[b] = f; k.frequency = a[f]; c.push(k); } c.sort(function (a, b) { return b.frequency - a.frequency; }); this._.trimToCapacity(c); return c.reverse(); }, trimToCapacity: function (a) { a.splice(l.getCapacity(this.editor)); }, addColors: function (a) { CKEDITOR.tools.array.forEach( a, function (a) { this.addColor(a.colorCode); }, this ); }, extractColorBox: function (a) { for (var b = 0; b < this.rows.length; b++) { var c = this.rows[b].extractColorBox(a); if (c) return c; } return null; }, moveToBeginning: function (a) { this.rows[0].addNewColor(a); }, createAtBeginning: function (a) { this._.moveToBeginning( new n(this.editor, { color: a }, this.clickFn) ); }, addNewRow: function () { this.rows.push(new k()); this.container && this.container.append(this.rows[this.rows.length - 1].getElement()); }, alignRows: function () { for ( var a = 0; a < l.getRowLimit(this.editor) && !( this.rows[a].boxes.length <= this.editor.config.colorButton_colorsPerRow ); a++ ) this.rows[a + 1] ? this._.moveLastBoxToNextRow(a) : a < l.getRowLimit(this.editor) - 1 ? (this._.addNewRow(), this._.moveLastBoxToNextRow(a)) : this.rows[a].removeLastColor(); }, moveLastBoxToNextRow: function (a) { this.rows[a + 1].addNewColor(this.rows[a].removeLastColor()); }, refreshPositions: function () { var a = this._.countPanelElements(), b = this._.calculateFirstPosition(a); CKEDITOR.tools.array.forEach(this.rows, function (c) { CKEDITOR.tools.array.forEach(c.boxes, function (c) { c.setPositionIndex(b, a); b += 1; }); }); }, countPanelElements: function () { var a = this.editor.config.colorButton_colors.split(",").length + this.getLength(); this.editor.plugins.colordialog && this.editor.config.colorButton_enableMore && (a += 1); this.editor.config.colorButton_enableAutomatic && (a += 1); return a; }, calculateFirstPosition: function (a) { return this.editor.plugins.colordialog && this.editor.config.colorButton_enableMore ? a - this.getLength() : a - this.getLength() + 1; }, attachRows: function () { CKEDITOR.tools.array.forEach( this.rows, function (a) { this.container.append(a.getElement()); }, this ); }, }, proto: { setContainer: function (a) { this.container = a; this._.attachRows(); this.getLength() && this.show(); }, show: function () { this.container && this.container.show(); }, renderContentColors: function () { var a = this._.countColors(); CKEDITOR.tools.isEmpty(a) || ((a = this._.sortByOccurrencesAscending(a, "colorCode")), this._.addColors(a), this._.refreshPositions()); }, addColor: function (a) { var b = this._.extractColorBox(a); this.container && !this.container.isVisible() && this.show(); b ? this._.moveToBeginning(b) : this._.createAtBeginning(a); this._.alignRows(); }, getLength: function () { return CKEDITOR.tools.array.reduce( this.rows, function (a, b) { return a + b.boxes.length; }, 0 ); }, }, }); })(); CKEDITOR.config.colorButton_enableMore = !0; CKEDITOR.config.colorButton_colors = "1ABC9C,2ECC71,3498DB,9B59B6,4E5F70,F1C40F,16A085,27AE60,2980B9,8E44AD,2C3E50,F39C12,E67E22,E74C3C,ECF0F1,95A5A6,DDD,FFF,D35400,C0392B,BDC3C7,7F8C8D,999,000"; CKEDITOR.config.colorButton_foreStyle = { element: "span", styles: { color: "#(color)" }, overrides: [{ element: "font", attributes: { color: null } }], }; CKEDITOR.config.colorButton_backStyle = { element: "span", styles: { "background-color": "#(color)" }, }; CKEDITOR.config.colorButton_enableAutomatic = !0; CKEDITOR.config.colorButton_colorsPerRow = 6; CKEDITOR.config.colorButton_historyRowLimit = 1; CKEDITOR.config.colorButton_renderContentColors = !0; CKEDITOR.config.colorButton_contentsCss = []; CKEDITOR.plugins.colordialog = { requires: "dialog", init: function (b) { var d = new CKEDITOR.dialogCommand("colordialog"); d.editorFocus = !1; b.addCommand("colordialog", d); CKEDITOR.dialog.add("colordialog", this.path + "dialogs/colordialog.js"); b.getColorFromDialog = function (d, k, g) { var c, e, h, f; c = function (a) { h(this); (a = "ok" == a.name ? this.getValueOf("picker", "selectedColor") : null) && !CKEDITOR.tools._isValidColorFormat(a) && (a = null); /^[0-9a-f]{3}([0-9a-f]{3})?$/i.test(a) && (a = "#" + a); d.call(k, a); }; e = function (a) { g && (a.data = g); }; h = function (a) { a.removeListener("ok", c); a.removeListener("cancel", c); a.removeListener("show", e); }; f = function (a) { a.on("ok", c); a.on("cancel", c); a.on("show", e, null, null, 5); }; b.execCommand("colordialog"); if (b._.storedDialogs && b._.storedDialogs.colordialog) f(b._.storedDialogs.colordialog); else CKEDITOR.on("dialogDefinition", function (a) { if ("colordialog" == a.data.name) { var b = a.data.definition; a.removeListener(); b.onLoad = CKEDITOR.tools.override(b.onLoad, function (a) { return function () { f(this); b.onLoad = a; "function" == typeof a && a.call(this); }; }); } }); }; }, }; CKEDITOR.plugins.add("colordialog", CKEDITOR.plugins.colordialog); (function () { CKEDITOR.plugins.add("xml", {}); CKEDITOR.xml = function (c) { var a = null; if ("object" == typeof c) a = c; else if ( ((c = (c || "").replace(/ /g, " ")), "ActiveXObject" in window) ) { try { a = new ActiveXObject("MSXML2.DOMDocument"); } catch (b) { try { a = new ActiveXObject("Microsoft.XmlDom"); } catch (d) {} } a && ((a.async = !1), (a.resolveExternals = !1), (a.validateOnParse = !1), a.loadXML(c)); } else window.DOMParser && (a = new DOMParser().parseFromString(c, "text/xml")); this.baseXml = a; }; CKEDITOR.xml.prototype = { selectSingleNode: function (c, a) { var b = this.baseXml; if (a || (a = b)) { if ("selectSingleNode" in a) return a.selectSingleNode(c); if (b.evaluate) return ( ((b = b.evaluate(c, a, null, 9, null)) && b.singleNodeValue) || null ); } return null; }, selectNodes: function (c, a) { var b = this.baseXml, d = []; if (a || (a = b)) { if ("selectNodes" in a) return a.selectNodes(c); if (b.evaluate && (b = b.evaluate(c, a, null, 5, null))) for (var e; (e = b.iterateNext()); ) d.push(e); } return d; }, getInnerXml: function (c, a) { var b = this.selectSingleNode(c, a), d = []; if (b) for (b = b.firstChild; b; ) b.xml ? d.push(b.xml) : window.XMLSerializer && d.push(new XMLSerializer().serializeToString(b)), (b = b.nextSibling); return d.length ? d.join("") : null; }, }; })(); (function () { CKEDITOR.plugins.add("ajax", { requires: "xml" }); CKEDITOR.ajax = (function () { function k() { if (!CKEDITOR.env.ie || "file:" != location.protocol) try { return new XMLHttpRequest(); } catch (a) {} try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (b) {} try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (c) {} return null; } function h(a, b) { if ( 4 != a.readyState || !( (200 <= a.status && 300 > a.status) || 304 == a.status || 0 === a.status || 1223 == a.status ) ) return null; switch (b) { case "text": return a.responseText; case "xml": var c = a.responseXML; return new CKEDITOR.xml(c && c.firstChild ? c : a.responseText); case "arraybuffer": return a.response; default: return null; } } function g(a, b, c) { var e = !!b, d = k(); if (!d) return null; e && "text" !== c && "xml" !== c && (d.responseType = c); d.open("GET", a, e); e && (d.onreadystatechange = function () { 4 == d.readyState && (b(h(d, c)), (d = null)); }); d.send(null); return e ? "" : h(d, c); } function l(a, b, c, e, d) { var f = k(); if (!f) return null; f.open("POST", a, !0); f.onreadystatechange = function () { 4 == f.readyState && (e && e(h(f, d)), (f = null)); }; f.setRequestHeader( "Content-type", c || "application/x-www-form-urlencoded; charset\x3dUTF-8" ); f.send(b); } return { load: function (a, b, c) { return g(a, b, c || "text"); }, post: function (a, b, c, e) { return l(a, b, c, e, "text"); }, loadXml: function (a, b) { return g(a, b, "xml"); }, loadText: function (a, b) { return g(a, b, "text"); }, loadBinary: function (a, b) { return g(a, b, "arraybuffer"); }, }; })(); })(); (function () { CKEDITOR.plugins.add("templates", { requires: "dialog,ajax", init: function (a) { CKEDITOR.dialog.add( "templates", CKEDITOR.getUrl(this.path + "dialogs/templates.js") ); a.addCommand("templates", new CKEDITOR.dialogCommand("templates")); a.ui.addButton && a.ui.addButton("Templates", { label: a.lang.templates.button, command: "templates", toolbar: "doctools,10", }); }, }); var c = {}, f = {}; CKEDITOR.addTemplates = function (a, d) { c[a] = d; }; CKEDITOR.getTemplates = function (a) { return c[a]; }; CKEDITOR.loadTemplates = function (a, d) { for (var e = [], b = 0, c = a.length; b < c; b++) f[a[b]] || (e.push(a[b]), (f[a[b]] = 1)); e.length ? CKEDITOR.scriptLoader.load(e, d) : setTimeout(d, 0); }; })(); CKEDITOR.config.templates_files = [ CKEDITOR.getUrl("plugins/templates/templates/default.js"), ]; CKEDITOR.config.templates_replaceContent = !0; CKEDITOR.plugins.add("menu", { requires: "floatpanel", beforeInit: function (m) { for ( var k = m.config.menu_groups.split(","), n = (m._.menuGroups = {}), r = (m._.menuItems = {}), p = 0; p < k.length; p++ ) n[k[p]] = p + 1; m.addMenuGroup = function (c, a) { n[c] = a || 100; }; m.addMenuItem = function (c, a) { n[a.group] && (r[c] = new CKEDITOR.menuItem(this, c, a)); }; m.addMenuItems = function (c) { for (var a in c) this.addMenuItem(a, c[a]); }; m.getMenuItem = function (c) { return r[c]; }; m.removeMenuItem = function (c) { delete r[c]; }; }, }); (function () { function m(a) { a.sort(function (a, f) { return a.group < f.group ? -1 : a.group > f.group ? 1 : a.order < f.order ? -1 : a.order > f.order ? 1 : 0; }); } var k = '\x3cspan class\x3d"cke_menuitem"\x3e\x3ca id\x3d"{id}" class\x3d"cke_menubutton cke_menubutton__{name} cke_menubutton_{state} {cls}" href\x3d"{href}" title\x3d"{title}" tabindex\x3d"-1" _cke_focus\x3d1 hidefocus\x3d"true" role\x3d"{role}" aria-label\x3d"{attrLabel}" aria-describedby\x3d"{id}_description" aria-haspopup\x3d"{hasPopup}" aria-disabled\x3d"{disabled}" {ariaChecked} draggable\x3d"false"', n = ""; CKEDITOR.env.gecko && CKEDITOR.env.mac && (k += ' onkeypress\x3d"return false;"'); CKEDITOR.env.gecko && (k += ' onblur\x3d"this.style.cssText \x3d this.style.cssText;" ondragstart\x3d"return false;"'); CKEDITOR.env.ie && (n = 'return false;" onmouseup\x3d"CKEDITOR.tools.getMouseButton(event)\x3d\x3d\x3dCKEDITOR.MOUSE_BUTTON_LEFT\x26\x26'); var k = k + (' onmouseover\x3d"CKEDITOR.tools.callFunction({hoverFn},{index});" onmouseout\x3d"CKEDITOR.tools.callFunction({moveOutFn},{index});" onclick\x3d"' + n + 'CKEDITOR.tools.callFunction({clickFn},{index}); return false;"\x3e') + '\x3cspan class\x3d"cke_menubutton_inner"\x3e\x3cspan class\x3d"cke_menubutton_icon"\x3e\x3cspan class\x3d"cke_button_icon cke_button__{iconName}_icon" style\x3d"{iconStyle}"\x3e\x3c/span\x3e\x3c/span\x3e\x3cspan class\x3d"cke_menubutton_label"\x3e{label}\x3c/span\x3e{shortcutHtml}{arrowHtml}\x3c/span\x3e\x3c/a\x3e\x3cspan id\x3d"{id}_description" class\x3d"cke_voice_label" aria-hidden\x3d"false"\x3e{ariaShortcut}\x3c/span\x3e\x3c/span\x3e', r = CKEDITOR.addTemplate("menuItem", k), p = CKEDITOR.addTemplate( "menuArrow", '\x3cspan class\x3d"cke_menuarrow"\x3e\x3cspan\x3e{label}\x3c/span\x3e\x3c/span\x3e' ), c = CKEDITOR.addTemplate( "menuShortcut", '\x3cspan class\x3d"cke_menubutton_label cke_menubutton_shortcut"\x3e{shortcut}\x3c/span\x3e' ); CKEDITOR.menu = CKEDITOR.tools.createClass({ $: function (a, b) { b = this._.definition = b || {}; this.id = CKEDITOR.tools.getNextId(); this.editor = a; this.items = []; this._.listeners = []; this._.level = b.level || 1; var f = CKEDITOR.tools.extend({}, b.panel, { css: [CKEDITOR.skin.getPath("editor")], level: this._.level - 1, block: {}, }), c = (f.block.attributes = f.attributes || {}); !c.role && (c.role = "menu"); this._.panelDefinition = f; }, _: { onShow: function () { var a = this.editor.getSelection(), b = a && a.getStartElement(), f = this.editor.elementPath(), c = this._.listeners; this.removeAll(); for (var h = 0; h < c.length; h++) { var l = c[h](b, a, f); if (l) for (var g in l) { var e = this.editor.getMenuItem(g); !e || (e.command && !this.editor.getCommand(e.command).state) || ((e.state = l[g]), this.add(e)); } } }, onClick: function (a) { this.hide(); if (a.onClick) a.onClick(); else a.command && this.editor.execCommand(a.command); }, onEscape: function (a) { var b = this.parent; b ? b._.panel.hideChild(1) : 27 == a && this.hide(1); return !1; }, onHide: function () { this.onHide && this.onHide(); }, showSubMenu: function (a) { var b = this._.subMenu, f = this.items[a]; if ((f = f.getItems && f.getItems())) { b ? b.removeAll() : ((b = this._.subMenu = new CKEDITOR.menu( this.editor, CKEDITOR.tools.extend( {}, this._.definition, { level: this._.level + 1 }, !0 ) )), (b.parent = this), (b._.onClick = CKEDITOR.tools.bind(this._.onClick, this))); for (var c in f) { var h = this.editor.getMenuItem(c); h && ((h.state = f[c]), b.add(h)); } var l = this._.panel .getBlock(this.id) .element.getDocument() .getById(this.id + String(a)); setTimeout(function () { b.show(l, 2); }, 0); } else this._.panel.hideChild(1); }, }, proto: { add: function (a) { a.order || (a.order = this.items.length); this.items.push(a); }, removeAll: function () { this.items = []; }, show: function (a, b, f, c) { if (!this.parent && (this._.onShow(), !this.items.length)) return; b = b || ("rtl" == this.editor.lang.dir ? 2 : 1); var h = this.items, l = this.editor, g = this._.panel, e = this._.element; if (!g) { g = this._.panel = new CKEDITOR.ui.floatPanel( this.editor, CKEDITOR.document.getBody(), this._.panelDefinition, this._.level ); g.onEscape = CKEDITOR.tools.bind(function (a) { if (!1 === this._.onEscape(a)) return !1; }, this); g.onShow = function () { g._.panel .getHolderElement() .getParent() .addClass("cke") .addClass("cke_reset_all"); }; g.onHide = CKEDITOR.tools.bind(function () { this._.onHide && this._.onHide(); }, this); e = g.addBlock(this.id, this._.panelDefinition.block); e.autoSize = !0; var d = e.keys; d[40] = "next"; d[9] = "next"; d[38] = "prev"; d[CKEDITOR.SHIFT + 9] = "prev"; d["rtl" == l.lang.dir ? 37 : 39] = CKEDITOR.env.ie ? "mouseup" : "click"; d[32] = CKEDITOR.env.ie ? "mouseup" : "click"; CKEDITOR.env.ie && (d[13] = "mouseup"); e = this._.element = e.element; d = e.getDocument(); d.getBody().setStyle("overflow", "hidden"); d.getElementsByTag("html") .getItem(0) .setStyle("overflow", "hidden"); this._.itemOverFn = CKEDITOR.tools.addFunction(function (a) { clearTimeout(this._.showSubTimeout); this._.showSubTimeout = CKEDITOR.tools.setTimeout( this._.showSubMenu, l.config.menu_subMenuDelay || 400, this, [a] ); }, this); this._.itemOutFn = CKEDITOR.tools.addFunction(function () { clearTimeout(this._.showSubTimeout); }, this); this._.itemClickFn = CKEDITOR.tools.addFunction(function (a) { var b = this.items[a]; if (b.state == CKEDITOR.TRISTATE_DISABLED) this.hide(1); else if (b.getItems) this._.showSubMenu(a); else this._.onClick(b); }, this); } m(h); for ( var d = l.elementPath(), d = [ '\x3cdiv class\x3d"cke_menu' + (d && d.direction() != l.lang.dir ? " cke_mixed_dir_content" : "") + '" role\x3d"presentation"\x3e', ], k = h.length, n = k && h[0].group, p = 0; p < k; p++ ) { var q = h[p]; n != q.group && (d.push( '\x3cdiv class\x3d"cke_menuseparator" role\x3d"separator"\x3e\x3c/div\x3e' ), (n = q.group)); q.render(this, p, d); } d.push("\x3c/div\x3e"); e.setHtml(d.join("")); CKEDITOR.ui.fire("ready", this); this.parent ? this.parent._.panel.showAsChild(g, this.id, a, b, f, c) : g.showBlock(this.id, a, b, f, c); l.fire("menuShow", [g]); }, addListener: function (a) { this._.listeners.push(a); }, hide: function (a) { this._.onHide && this._.onHide(); this._.panel && this._.panel.hide(a); }, findItemByCommandName: function (a) { var b = CKEDITOR.tools.array.filter(this.items, function (b) { return a === b.command; }); return b.length ? ((b = b[0]), { item: b, element: this._.element.findOne("." + b.className) }) : null; }, }, }); CKEDITOR.menuItem = CKEDITOR.tools.createClass({ $: function (a, b, c) { CKEDITOR.tools.extend(this, c, { order: 0, className: "cke_menubutton__" + b, }); this.group = a._.menuGroups[this.group]; this.editor = a; this.name = b; }, proto: { render: function (a, b, f) { var k = a.id + String(b), h = "undefined" == typeof this.state ? CKEDITOR.TRISTATE_OFF : this.state, l = "", g = this.editor, e, d, m = h == CKEDITOR.TRISTATE_ON ? "on" : h == CKEDITOR.TRISTATE_DISABLED ? "disabled" : "off"; this.role in { menuitemcheckbox: 1, menuitemradio: 1 } && (l = ' aria-checked\x3d"' + (h == CKEDITOR.TRISTATE_ON ? "true" : "false") + '"'); var n = this.getItems, t = "\x26#" + ("rtl" == this.editor.lang.dir ? "9668" : "9658") + ";", q = this.name; this.icon && !/\./.test(this.icon) && (q = this.icon); this.command && ((e = g.getCommand(this.command)), (e = g.getCommandKeystroke(e)) && (d = CKEDITOR.tools.keystrokeToString( g.lang.common.keyboard, e ))); e = CKEDITOR.tools.htmlEncodeAttr(this.label); a = { id: k, name: this.name, iconName: q, label: this.label, attrLabel: e, cls: this.className || "", state: m, hasPopup: n ? "true" : "false", disabled: h == CKEDITOR.TRISTATE_DISABLED, title: e + (d ? " (" + d.display + ")" : ""), ariaShortcut: d ? g.lang.common.keyboardShortcut + " " + d.aria : "", href: "javascript:void('" + (e || "").replace("'") + "')", hoverFn: a._.itemOverFn, moveOutFn: a._.itemOutFn, clickFn: a._.itemClickFn, index: b, iconStyle: CKEDITOR.skin.getIconStyle( q, "rtl" == this.editor.lang.dir, q == this.icon ? null : this.icon, this.iconOffset ), shortcutHtml: d ? c.output({ shortcut: d.display }) : "", arrowHtml: n ? p.output({ label: t }) : "", role: this.role ? this.role : "menuitem", ariaChecked: l, }; r.output(a, f); }, }, }); })(); CKEDITOR.config.menu_groups = "clipboard,form,tablecell,tablecellproperties,tablerow,tablecolumn,table,anchor,link,image,checkbox,radio,textfield,hiddenfield,imagebutton,button,select,textarea,div"; CKEDITOR.plugins.add("contextmenu", { requires: "menu", onLoad: function () { CKEDITOR.plugins.contextMenu = CKEDITOR.tools.createClass({ base: CKEDITOR.menu, $: function (a) { this.base.call(this, a, { panel: { css: a.config.contextmenu_contentsCss, className: "cke_menu_panel", attributes: { "aria-label": a.lang.contextmenu.options }, }, }); }, proto: { addTarget: function (a, f) { function c() { e = !1; } var d, e; a.on( "contextmenu", function (a) { a = a.data; var b = CKEDITOR.env.webkit ? d : CKEDITOR.env.mac ? a.$.metaKey : a.$.ctrlKey; if (!f || !b) if ((a.preventDefault(), !e)) { if (CKEDITOR.env.mac && CKEDITOR.env.webkit) { var b = this.editor, c = new CKEDITOR.dom.elementPath( a.getTarget(), b.editable() ).contains(function (a) { return a.hasAttribute("contenteditable"); }, !0); c && "false" == c.getAttribute("contenteditable") && b.getSelection().fake(c); } var c = a.getTarget().getDocument(), g = a.getTarget().getDocument().getDocumentElement(), b = !c.equals(CKEDITOR.document), c = c.getWindow().getScrollPosition(), h = b ? a.$.clientX : a.$.pageX || c.x + a.$.clientX, k = b ? a.$.clientY : a.$.pageY || c.y + a.$.clientY; CKEDITOR.tools.setTimeout( function () { this.open(g, null, h, k); }, CKEDITOR.env.ie ? 200 : 0, this ); } }, this ); if (CKEDITOR.env.webkit) { var b = function () { d = 0; }; a.on("keydown", function (a) { d = CKEDITOR.env.mac ? a.data.$.metaKey : a.data.$.ctrlKey; }); a.on("keyup", b); a.on("contextmenu", b); } CKEDITOR.env.gecko && !CKEDITOR.env.mac && (a.on( "keydown", function (a) { a.data.$.shiftKey && 121 === a.data.$.keyCode && (e = !0); }, null, null, 0 ), a.on("keyup", c), a.on("contextmenu", c)); }, open: function (a, f, c, d) { !1 !== this.editor.config.enableContextMenu && this.editor.getSelection().getType() !== CKEDITOR.SELECTION_NONE && (this.editor.focus(), (a = a || CKEDITOR.document.getDocumentElement()), this.editor.selectionChange(1), this.show(a, f, c, d)); }, }, }); }, beforeInit: function (a) { var f = (a.contextMenu = new CKEDITOR.plugins.contextMenu(a)); a.on("contentDom", function () { f.addTarget(a.editable(), !1 !== a.config.browserContextMenuOnCtrl); }); a.addCommand("contextMenu", { exec: function (a) { var d = 0, e = 0, b = a.getSelection().getRanges(), b = b[b.length - 1].getClientRects(a.editable().isInline()); if ((b = b[b.length - 1])) (d = b["rtl" === a.lang.dir ? "left" : "right"]), (e = b.bottom); a.contextMenu.open(a.document.getBody().getParent(), null, d, e); }, }); a.setKeystroke(CKEDITOR.SHIFT + 121, "contextMenu"); a.setKeystroke(CKEDITOR.CTRL + CKEDITOR.SHIFT + 121, "contextMenu"); }, }); (function () { function k(a, b, e, d) { var c = new CKEDITOR.dom.walker(a); if ( (a = a.startContainer.getAscendant(b, !0) || a.endContainer.getAscendant(b, !0)) ) if ((e(a), d)) return; for (; (a = c.next()); ) if ((a = a.getAscendant(b, !0))) if ((e(a), d)) break; } function u(a, b) { var e = { ul: "ol", ol: "ul" }; return ( -1 !== l(b, function (b) { return b.element === a || b.element === e[a]; }) ); } function q(a) { this.styles = null; this.sticky = !1; this.editor = a; this.filter = new CKEDITOR.filter(a, a.config.copyFormatting_allowRules); !0 === a.config.copyFormatting_allowRules && (this.filter.disabled = !0); a.config.copyFormatting_disallowRules && this.filter.disallow(a.config.copyFormatting_disallowRules); } var l = CKEDITOR.tools.indexOf, r = CKEDITOR.tools.getMouseButton, t = !1; CKEDITOR.plugins.add("copyformatting", { lang: "ar,az,bg,cs,da,de,de-ch,el,en,en-au,eo,es-mx,et,eu,fa,fr,gl,hr,hu,it,ja,ko,ku,lv,nb,nl,oc,pl,pt,pt-br,ro,ru,sk,sq,sr,sr-latn,sv,tr,uk,vi,zh,zh-cn", icons: "copyformatting", hidpi: !0, init: function (a) { var b = CKEDITOR.plugins.copyformatting; b._addScreenReaderContainer(); t || (CKEDITOR.document.appendStyleSheet( this.path + "styles/copyformatting.css" ), (t = !0)); a.addContentsCss && a.addContentsCss(this.path + "styles/copyformatting.css"); a.copyFormatting = new b.state(a); a.addCommand("copyFormatting", b.commands.copyFormatting); a.addCommand("applyFormatting", b.commands.applyFormatting); a.ui.addButton("CopyFormatting", { isToggle: !0, label: a.lang.copyformatting.label, command: "copyFormatting", toolbar: "cleanup,0", }); a.on("contentDom", function () { var b = a.getCommand("copyFormatting"), d = a.editable(), c = d.isInline() ? d : a.document, f = a.ui.get("CopyFormatting"); d.attachListener(c, "mouseup", function (d) { r(d) === CKEDITOR.MOUSE_BUTTON_LEFT && b.state === CKEDITOR.TRISTATE_ON && a.execCommand("applyFormatting"); }); d.attachListener(CKEDITOR.document, "mouseup", function (c) { r(c) !== CKEDITOR.MOUSE_BUTTON_LEFT || b.state !== CKEDITOR.TRISTATE_ON || d.contains(c.data.getTarget()) || a.execCommand("copyFormatting"); }); f && ((c = CKEDITOR.document.getById(f._.id)), d.attachListener(c, "dblclick", function () { a.execCommand("copyFormatting", { sticky: !0 }); }), d.attachListener(c, "mouseup", function (a) { a.data.stopPropagation(); })); }); a.config.copyFormatting_keystrokeCopy && a.setKeystroke( a.config.copyFormatting_keystrokeCopy, "copyFormatting" ); a.on("key", function (b) { var d = a.getCommand("copyFormatting"); b = b.data.domEvent; b.getKeystroke && 27 === b.getKeystroke() && d.state === CKEDITOR.TRISTATE_ON && a.execCommand("copyFormatting"); }); a.copyFormatting.on("extractFormatting", function (e) { var d = e.data.element; if (d.contains(a.editable()) || d.equals(a.editable())) return e.cancel(); d = b._convertElementToStyleDef(d); if (!a.copyFormatting.filter.check(new CKEDITOR.style(d), !0, !0)) return e.cancel(); e.data.styleDef = d; }); a.copyFormatting.on("applyFormatting", function (e) { if (!e.data.preventFormatStripping) { var d = e.data.range, c = b._extractStylesFromRange(a, d), f = b._determineContext(d), g, h; if (a.copyFormatting._isContextAllowed(f)) for (h = 0; h < c.length; h++) (f = c[h]), (g = d.createBookmark()), -1 === l(b.preservedElements, f.element) ? CKEDITOR.env.webkit && !CKEDITOR.env.chrome ? c[h].removeFromRange(e.data.range, e.editor) : c[h].remove(e.editor) : u(f.element, e.data.styles) && b._removeStylesFromElementInRange(d, f.element), d.moveToBookmark(g); } }); a.copyFormatting.on( "applyFormatting", function (b) { var d = CKEDITOR.plugins.copyformatting, c = d._determineContext(b.data.range); "list" === c && a.copyFormatting._isContextAllowed("list") ? d._applyStylesToListContext( b.editor, b.data.range, b.data.styles ) : "table" === c && a.copyFormatting._isContextAllowed("table") ? d._applyStylesToTableContext( b.editor, b.data.range, b.data.styles ) : a.copyFormatting._isContextAllowed("text") && d._applyStylesToTextContext( b.editor, b.data.range, b.data.styles ); }, null, null, 999 ); }, }); q.prototype._isContextAllowed = function (a) { var b = this.editor.config.copyFormatting_allowedContexts; return !0 === b || -1 !== l(b, a); }; CKEDITOR.event.implementOn(q.prototype); CKEDITOR.plugins.copyformatting = { state: q, inlineBoundary: "h1 h2 h3 h4 h5 h6 p div".split(" "), excludedAttributes: ["id", "style", "href", "data-cke-saved-href", "dir"], elementsForInlineTransform: ["li"], excludedElementsFromInlineTransform: [ "table", "thead", "tbody", "ul", "ol", ], excludedAttributesFromInlineTransform: ["value", "type"], preservedElements: "ul ol li td th tr thead tbody table".split(" "), breakOnElements: ["ul", "ol", "table"], _initialKeystrokePasteCommand: null, commands: { copyFormatting: { exec: function (a, b) { var e = CKEDITOR.plugins.copyformatting, d = a.copyFormatting, c = b ? "keystrokeHandler" == b.from : !1, f = b ? b.sticky || c : !1, g = e._getCursorContainer(a), h = CKEDITOR.document.getDocumentElement(); if (this.state === CKEDITOR.TRISTATE_ON) return ( (d.styles = null), (d.sticky = !1), g.removeClass("cke_copyformatting_active"), h.removeClass("cke_copyformatting_disabled"), h.removeClass("cke_copyformatting_tableresize_cursor"), e._putScreenReaderMessage(a, "canceled"), e._detachPasteKeystrokeHandler(a), this.setState(CKEDITOR.TRISTATE_OFF) ); d.styles = e._extractStylesFromElement( a, a.elementPath().lastElement ); this.setState(CKEDITOR.TRISTATE_ON); c || (g.addClass("cke_copyformatting_active"), h.addClass("cke_copyformatting_tableresize_cursor"), a.config.copyFormatting_outerCursor && h.addClass("cke_copyformatting_disabled")); d.sticky = f; e._putScreenReaderMessage(a, "copied"); e._attachPasteKeystrokeHandler(a); }, }, applyFormatting: { editorFocus: CKEDITOR.env.ie && !CKEDITOR.env.edge ? !1 : !0, exec: function (a, b) { var e = a.getCommand("copyFormatting"), d = b ? "keystrokeHandler" == b.from : !1, c = CKEDITOR.plugins.copyformatting, f = a.copyFormatting, g = c._getCursorContainer(a), h = CKEDITOR.document.getDocumentElement(); if (d && !f.styles) return ( c._putScreenReaderMessage(a, "failed"), c._detachPasteKeystrokeHandler(a), !1 ); d = c._applyFormat(a, f.styles); f.sticky || ((f.styles = null), g.removeClass("cke_copyformatting_active"), h.removeClass("cke_copyformatting_disabled"), h.removeClass("cke_copyformatting_tableresize_cursor"), e.setState(CKEDITOR.TRISTATE_OFF), c._detachPasteKeystrokeHandler(a)); c._putScreenReaderMessage(a, d ? "applied" : "canceled"); }, }, }, _getCursorContainer: function (a) { return a.elementMode === CKEDITOR.ELEMENT_MODE_INLINE ? a.editable() : a.editable().getParent(); }, _convertElementToStyleDef: function (a) { var b = CKEDITOR.tools, e = a.getAttributes( CKEDITOR.plugins.copyformatting.excludedAttributes ), b = b.parseCssText(a.getAttribute("style"), !0, !0); return { element: a.getName(), type: CKEDITOR.STYLE_INLINE, attributes: e, styles: b, }; }, _extractStylesFromElement: function (a, b) { var e = {}, d = []; do if ( b.type === CKEDITOR.NODE_ELEMENT && !b.hasAttribute("data-cke-bookmark") && ((e.element = b), a.copyFormatting.fire("extractFormatting", e, a) && e.styleDef && d.push(new CKEDITOR.style(e.styleDef)), b.getName && -1 !== l(CKEDITOR.plugins.copyformatting.breakOnElements, b.getName())) ) break; while ((b = b.getParent()) && b.type === CKEDITOR.NODE_ELEMENT); return d; }, _extractStylesFromRange: function (a, b) { for (var e = [], d = new CKEDITOR.dom.walker(b), c; (c = d.next()); ) e = e.concat( CKEDITOR.plugins.copyformatting._extractStylesFromElement(a, c) ); return e; }, _removeStylesFromElementInRange: function (a, b) { for ( var e = -1 !== l(["ol", "ul", "table"], b), d = new CKEDITOR.dom.walker(a), c; (c = d.next()); ) if ((c = c.getAscendant(b, !0))) if ((c.removeAttributes(c.getAttributes()), e)) break; }, _getSelectedWordOffset: function (a) { function b(a, b) { return a[b ? "getPrevious" : "getNext"](function (a) { return a.type !== CKEDITOR.NODE_COMMENT; }); } function e(a) { return a.type == CKEDITOR.NODE_ELEMENT ? ((a = a.getHtml().replace(/ <\/span>/g, "")), a.replace(/<.*?>/g, "")) : a.getText(); } function d(a, c) { var f = a, g = /\s/g, h = "p br ol ul li td th div caption body".split(" "), m = !1, k = !1, p, n; do { for (p = b(f, c); !p && f.getParent(); ) { f = f.getParent(); if (-1 !== l(h, f.getName())) { k = m = !0; break; } p = b(f, c); } if (p && p.getName && -1 !== l(h, p.getName())) { m = !0; break; } f = p; } while ( f && f.getStyle && ("none" == f.getStyle("display") || !f.getText()) ); for (f || (f = a); f.type !== CKEDITOR.NODE_TEXT; ) f = !m || c || k ? f.getChild(0) : f.getChild(f.getChildCount() - 1); for (h = e(f); null != (k = g.exec(h)) && ((n = k.index), c); ); if ("number" !== typeof n && !m) return d(f, c); if (m) c ? (n = 0) : ((g = /([\.\b]*$)/), (n = (k = g.exec(h)) ? k.index : h.length)); else if (c && ((n += 1), n > h.length)) return d(f); return { node: f, offset: n }; } var c = /\b\w+\b/gi, f, g, h, m, k; h = m = k = a.startContainer; for (f = e(h); null != (g = c.exec(f)); ) if (g.index + g[0].length >= a.startOffset) return ( (a = g.index), (c = g.index + g[0].length), 0 === g.index && ((g = d(h, !0)), (m = g.node), (a = g.offset)), c >= f.length && ((f = d(h)), (k = f.node), (c = f.offset)), { startNode: m, startOffset: a, endNode: k, endOffset: c } ); return null; }, _filterStyles: function (a) { var b = CKEDITOR.tools.isEmpty, e = [], d, c; for (c = 0; c < a.length; c++) (d = a[c]._.definition), -1 !== CKEDITOR.tools.indexOf( CKEDITOR.plugins.copyformatting.inlineBoundary, d.element ) && (d.element = a[c].element = "span"), ("span" === d.element && b(d.attributes) && b(d.styles)) || e.push(a[c]); return e; }, _determineContext: function (a) { function b(b) { var d = new CKEDITOR.dom.walker(a), c; if ( a.startContainer.getAscendant(b, !0) || a.endContainer.getAscendant(b, !0) ) return !0; for (; (c = d.next()); ) if (c.getAscendant(b, !0)) return !0; } return b({ ul: 1, ol: 1 }) ? "list" : b("table") ? "table" : "text"; }, _applyStylesToTextContext: function (a, b, e) { var d = CKEDITOR.plugins.copyformatting, c = d.excludedAttributesFromInlineTransform, f, g; CKEDITOR.env.webkit && !CKEDITOR.env.chrome && a.getSelection().selectRanges([b]); for (f = 0; f < e.length; f++) if ( ((b = e[f]), -1 === l(d.excludedElementsFromInlineTransform, b.element)) ) { if (-1 !== l(d.elementsForInlineTransform, b.element)) for ( b.element = b._.definition.element = "span", g = 0; g < c.length; g++ ) b._.definition.attributes[c[g]] && delete b._.definition.attributes[c[g]]; b.apply(a); } }, _applyStylesToListContext: function (a, b, e) { var d, c, f; for (f = 0; f < e.length; f++) (d = e[f]), (c = b.createBookmark()), "ol" === d.element || "ul" === d.element ? k( b, { ul: 1, ol: 1 }, function (a) { var b = d; a.getName() !== b.element && a.renameNode(b.element); b.applyToObject(a); }, !0 ) : "li" === d.element ? k(b, "li", function (a) { d.applyToObject(a); }) : CKEDITOR.plugins.copyformatting._applyStylesToTextContext( a, b, [d] ), b.moveToBookmark(c); }, _applyStylesToTableContext: function (a, b, e) { function d(a, b) { a.getName() !== b.element && ((b = b.getDefinition()), (b.element = a.getName()), (b = new CKEDITOR.style(b))); b.applyToObject(a); } var c, f, g; for (g = 0; g < e.length; g++) (c = e[g]), (f = b.createBookmark()), -1 !== l(["table", "tr"], c.element) ? k(b, c.element, function (a) { c.applyToObject(a); }) : -1 !== l(["td", "th"], c.element) ? k(b, { td: 1, th: 1 }, function (a) { d(a, c); }) : -1 !== l(["thead", "tbody"], c.element) ? k(b, { thead: 1, tbody: 1 }, function (a) { d(a, c); }) : CKEDITOR.plugins.copyformatting._applyStylesToTextContext( a, b, [c] ), b.moveToBookmark(f); }, _applyFormat: function (a, b) { var e = a.getSelection().getRanges()[0], d = CKEDITOR.plugins.copyformatting, c, f; if (!e) return !1; if (e.collapsed) { f = a.getSelection().createBookmarks(); if (!(c = d._getSelectedWordOffset(e))) return; e = a.createRange(); e.setStart(c.startNode, c.startOffset); e.setEnd(c.endNode, c.endOffset); e.select(); } b = d._filterStyles(b); if ( !a.copyFormatting.fire( "applyFormatting", { styles: b, range: e, preventFormatStripping: !1 }, a ) ) return !1; f && a.getSelection().selectBookmarks(f); return !0; }, _putScreenReaderMessage: function (a, b) { var e = this._getScreenReaderContainer(); e && e.setText(a.lang.copyformatting.notification[b]); }, _addScreenReaderContainer: function () { if (this._getScreenReaderContainer()) return this._getScreenReaderContainer(); if (!CKEDITOR.env.ie6Compat && !CKEDITOR.env.ie7Compat) return CKEDITOR.document .getBody() .append( CKEDITOR.dom.element.createFromHtml( '\x3cdiv class\x3d"cke_screen_reader_only cke_copyformatting_notification"\x3e\x3cdiv aria-live\x3d"polite"\x3e\x3c/div\x3e\x3c/div\x3e' ) ) .getChild(0); }, _getScreenReaderContainer: function () { if (!CKEDITOR.env.ie6Compat && !CKEDITOR.env.ie7Compat) return CKEDITOR.document .getBody() .findOne(".cke_copyformatting_notification div[aria-live]"); }, _attachPasteKeystrokeHandler: function (a) { var b = a.config.copyFormatting_keystrokePaste; b && ((this._initialKeystrokePasteCommand = a.keystrokeHandler.keystrokes[b]), a.setKeystroke(b, "applyFormatting")); }, _detachPasteKeystrokeHandler: function (a) { var b = a.config.copyFormatting_keystrokePaste; b && a.setKeystroke(b, this._initialKeystrokePasteCommand || !1); }, }; CKEDITOR.config.copyFormatting_outerCursor = !0; CKEDITOR.config.copyFormatting_allowRules = "b s u i em strong span p div td th ol ul li(*)[*]{*}"; CKEDITOR.config.copyFormatting_disallowRules = "*[data-cke-widget*,data-widget*,data-cke-realelement](cke_widget*)"; CKEDITOR.config.copyFormatting_allowedContexts = !0; CKEDITOR.config.copyFormatting_keystrokeCopy = CKEDITOR.CTRL + CKEDITOR.SHIFT + 67; CKEDITOR.config.copyFormatting_keystrokePaste = CKEDITOR.CTRL + CKEDITOR.SHIFT + 86; })(); (function () { CKEDITOR.plugins.add("div", { requires: "dialog", init: function (a) { if (!a.blockless) { var c = a.lang.div, b = "div(*)"; CKEDITOR.dialog.isTabEnabled(a, "editdiv", "advanced") && (b += ";div[dir,id,lang,title]{*}"); a.addCommand( "creatediv", new CKEDITOR.dialogCommand("creatediv", { allowedContent: b, requiredContent: "div", contextSensitive: !0, contentTransformations: [["div: alignmentToStyle"]], refresh: function (a, c) { this.setState( "div" in (a.config.div_wrapTable ? c.root : c.blockLimit).getDtd() ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED ); }, }) ); a.addCommand( "editdiv", new CKEDITOR.dialogCommand("editdiv", { requiredContent: "div" }) ); a.addCommand("removediv", { requiredContent: "div", exec: function (a) { function c(b) { (b = CKEDITOR.plugins.div.getSurroundDiv(a, b)) && !b.data("cke-div-added") && (f.push(b), b.data("cke-div-added")); } for ( var b = a.getSelection(), g = b && b.getRanges(), e, h = b.createBookmarks(), f = [], d = 0; d < g.length; d++ ) (e = g[d]), e.collapsed ? c(b.getStartElement()) : ((e = new CKEDITOR.dom.walker(e)), (e.evaluator = c), e.lastForward()); for (d = 0; d < f.length; d++) f[d].remove(!0); b.selectBookmarks(h); }, }); a.ui.addButton && a.ui.addButton("CreateDiv", { label: c.toolbar, command: "creatediv", toolbar: "blocks,50", }); a.addMenuItems && (a.addMenuItems({ editdiv: { label: c.edit, command: "editdiv", group: "div", order: 1, }, removediv: { label: c.remove, command: "removediv", group: "div", order: 5, }, }), a.contextMenu && a.contextMenu.addListener(function (b) { return !b || b.isReadOnly() ? null : CKEDITOR.plugins.div.getSurroundDiv(a) ? { editdiv: CKEDITOR.TRISTATE_OFF, removediv: CKEDITOR.TRISTATE_OFF, } : null; })); CKEDITOR.dialog.add("creatediv", this.path + "dialogs/div.js"); CKEDITOR.dialog.add("editdiv", this.path + "dialogs/div.js"); } }, }); CKEDITOR.plugins.div = { getSurroundDiv: function (a, c) { var b = a.elementPath(c); return a.elementPath(b.blockLimit).contains(function (a) { return a.is("div") && !a.isReadOnly(); }, 1); }, }; })(); (function () { function c(a, b, d) { var c = e; d && (c = CKEDITOR.tools.debounce(e, d)); a.on(b, c, null, { editor: a }); } function e(a) { var b = a.listenerData.editor; a = b.focusManager.hasFocus; var c = b.editable(), e = b.config.editorplaceholder, f = /((?:.|[\n\r])*?)<\/body>/i, g = b.config.fullPage, b = b.getData(); g && (f = b.match(f)) && 1 < f.length && (b = f[1]); if (0 !== b.length || a) return c.removeAttribute(d); c.setAttribute(d, e); } CKEDITOR.plugins.add("editorplaceholder", { isSupportedEnvironment: function () { return !CKEDITOR.env.ie || 9 <= CKEDITOR.env.version; }, onLoad: function () { CKEDITOR.addCss(CKEDITOR.plugins.editorplaceholder.styles); }, init: function (a) { this.isSupportedEnvironment() && a.config.editorplaceholder && (c(a, "contentDom"), c(a, "focus"), c(a, "blur"), c(a, "change", a.config.editorplaceholder_delay)); }, }); var d = "data-cke-editorplaceholder"; CKEDITOR.plugins.editorplaceholder = { styles: "[" + d + "]::before {position: absolute;opacity: .8;color: #aaa;content: attr( " + d + " );}.cke_wysiwyg_div[" + d + "]::before {margin-top: 1em;}", }; CKEDITOR.config.editorplaceholder_delay = 150; CKEDITOR.config.editorplaceholder = ""; })(); CKEDITOR.plugins.add("resize", { init: function (b) { function f(d) { var e = c.width, m = c.height, f = e + (d.data.$.screenX - n.x) * ("rtl" == g ? -1 : 1); d = m + (d.data.$.screenY - n.y); h && (e = Math.max(a.resize_minWidth, Math.min(f, a.resize_maxWidth))); p && (m = Math.max(a.resize_minHeight, Math.min(d, a.resize_maxHeight))); b.resize(h ? e : null, m); } function k() { CKEDITOR.document.removeListener("mousemove", f); CKEDITOR.document.removeListener("mouseup", k); b.document && (b.document.removeListener("mousemove", f), b.document.removeListener("mouseup", k)); } var a = b.config, r = b.ui.spaceId("resizer"), g = b.element ? b.element.getDirection(1) : "ltr"; !a.resize_dir && (a.resize_dir = "vertical"); void 0 === a.resize_maxWidth && (a.resize_maxWidth = 3e3); void 0 === a.resize_maxHeight && (a.resize_maxHeight = 3e3); void 0 === a.resize_minWidth && (a.resize_minWidth = 750); void 0 === a.resize_minHeight && (a.resize_minHeight = 250); if (!1 !== a.resize_enabled) { var l = null, n, c, h = ("both" == a.resize_dir || "horizontal" == a.resize_dir) && a.resize_minWidth != a.resize_maxWidth, p = ("both" == a.resize_dir || "vertical" == a.resize_dir) && a.resize_minHeight != a.resize_maxHeight, q = CKEDITOR.tools.addFunction(function (d) { l || (l = b.getResizable()); c = { width: l.$.offsetWidth || 0, height: l.$.offsetHeight || 0 }; n = { x: d.screenX, y: d.screenY }; a.resize_minWidth > c.width && (a.resize_minWidth = c.width); a.resize_minHeight > c.height && (a.resize_minHeight = c.height); CKEDITOR.document.on("mousemove", f); CKEDITOR.document.on("mouseup", k); b.document && (b.document.on("mousemove", f), b.document.on("mouseup", k)); d.preventDefault && d.preventDefault(); }); b.on("destroy", function () { CKEDITOR.tools.removeFunction(q); }); b.on( "uiSpace", function (a) { if ("bottom" == a.data.space) { var e = ""; h && !p && (e = " cke_resizer_horizontal"); !h && p && (e = " cke_resizer_vertical"); var c = '\x3cspan id\x3d"' + r + '" class\x3d"cke_resizer' + e + " cke_resizer_" + g + '" title\x3d"' + CKEDITOR.tools.htmlEncode(b.lang.common.resize) + '" onmousedown\x3d"CKEDITOR.tools.callFunction(' + q + ', event)"\x3e' + ("ltr" == g ? "◢" : "◣") + "\x3c/span\x3e"; "ltr" == g && "ltr" == e ? (a.data.html += c) : (a.data.html = c + a.data.html); } }, b, null, 100 ); b.on("maximize", function (a) { b.ui .space("resizer") [a.data == CKEDITOR.TRISTATE_ON ? "hide" : "show"](); }); } }, }); (function () { function q(a, c) { function k(b) { b = h.list[b]; var e; b.equals(a.editable()) || "true" == b.getAttribute("contenteditable") ? ((e = a.createRange()), e.selectNodeContents(b), (e = e.select())) : ((e = a.getSelection()), e.selectElement(b)); CKEDITOR.env.ie && a.fire("selectionChange", { selection: e, path: new CKEDITOR.dom.elementPath(b), }); a.focus(); } function l() { m && m.setHtml( '\x3cspan class\x3d"cke_path_empty"\x3e\x26nbsp;\x3c/span\x3e' ); delete h.list; } var n = a.ui.spaceId("path"), m, h = a._.elementsPath, q = h.idBase; c.html += '\x3cspan id\x3d"' + n + '_label" class\x3d"cke_voice_label"\x3e' + a.lang.elementspath.eleLabel + '\x3c/span\x3e\x3cspan id\x3d"' + n + '" class\x3d"cke_path" role\x3d"group" aria-labelledby\x3d"' + n + '_label"\x3e\x3cspan class\x3d"cke_path_empty"\x3e\x26nbsp;\x3c/span\x3e\x3c/span\x3e'; a.on("uiReady", function () { var b = a.ui.space("path"); b && a.focusManager.add(b, 1); }); h.onClick = k; var v = CKEDITOR.tools.addFunction(k), w = CKEDITOR.tools.addFunction(function (b, e) { var g = h.idBase, d; e = new CKEDITOR.dom.event(e); d = "rtl" == a.lang.dir; switch (e.getKeystroke()) { case d ? 39 : 37: case 9: return ( (d = CKEDITOR.document.getById(g + (b + 1))) || (d = CKEDITOR.document.getById(g + "0")), d.focus(), !1 ); case d ? 37 : 39: case CKEDITOR.SHIFT + 9: return ( (d = CKEDITOR.document.getById(g + (b - 1))) || (d = CKEDITOR.document.getById(g + (h.list.length - 1))), d.focus(), !1 ); case 27: return a.focus(), !1; case 13: case 32: return k(b), !1; case CKEDITOR.ALT + 121: return a.execCommand("toolbarFocus"), !1; } return !0; }); a.on("selectionChange", function (b) { for ( var e = [], g = (h.list = []), d = [], c = h.filters, p = !0, k = b.data.path.elements, u = k.length; u--; ) { var f = k[u], r = 0; b = f.data("cke-display-name") ? f.data("cke-display-name") : f.data("cke-real-element-type") ? f.data("cke-real-element-type") : f.getName(); (p = f.hasAttribute("contenteditable") ? "true" == f.getAttribute("contenteditable") : p) || f.hasAttribute("contenteditable") || (r = 1); for (var t = 0; t < c.length; t++) { var l = c[t](f, b); if (!1 === l) { r = 1; break; } b = l || b; } r || (g.unshift(f), d.unshift(b)); } g = g.length; for (c = 0; c < g; c++) (b = d[c]), (p = a.lang.elementspath.eleTitle.replace(/%1/, b)), (b = x.output({ id: q + c, label: p, text: b, jsTitle: "javascript:void('" + b + "')", index: c, keyDownFn: w, clickFn: v, })), e.unshift(b); m || (m = CKEDITOR.document.getById(n)); d = m; d.setHtml( e.join("") + '\x3cspan class\x3d"cke_path_empty"\x3e\x26nbsp;\x3c/span\x3e' ); a.fire("elementsPathUpdate", { space: d }); }); a.on("readOnly", l); a.on("contentDomUnload", l); a.addCommand("elementsPathFocus", y.toolbarFocus); a.setKeystroke(CKEDITOR.ALT + 122, "elementsPathFocus"); } var y = { toolbarFocus: { editorFocus: !1, readOnly: 1, exec: function (a) { (a = CKEDITOR.document.getById(a._.elementsPath.idBase + "0")) && a.focus(CKEDITOR.env.ie || CKEDITOR.env.air); }, }, }, c = ""; CKEDITOR.env.gecko && CKEDITOR.env.mac && (c += ' onkeypress\x3d"return false;"'); CKEDITOR.env.gecko && (c += ' onblur\x3d"this.style.cssText \x3d this.style.cssText;"'); var x = CKEDITOR.addTemplate( "pathItem", '\x3ca id\x3d"{id}" href\x3d"{jsTitle}" tabindex\x3d"-1" class\x3d"cke_path_item" title\x3d"{label}"' + c + ' hidefocus\x3d"true" draggable\x3d"false" ondragstart\x3d"return false;" onkeydown\x3d"return CKEDITOR.tools.callFunction({keyDownFn},{index}, event );" onclick\x3d"CKEDITOR.tools.callFunction({clickFn},{index}); return false;" role\x3d"button" aria-label\x3d"{label}"\x3e{text}\x3c/a\x3e' ); CKEDITOR.plugins.add("elementspath", { init: function (a) { a._.elementsPath = { idBase: "cke_elementspath_" + CKEDITOR.tools.getNextNumber() + "_", filters: [], }; a.on("uiSpace", function (c) { "bottom" == c.data.space && q(a, c.data); }); }, }); })(); (function () { function x(a, e, b) { b = a.config.forceEnterMode || b; if ("wysiwyg" == a.mode) { e || (e = a.activeEnterMode); var l = a.elementPath(); l && !l.isContextFor("p") && ((e = CKEDITOR.ENTER_BR), (b = 1)); a.fire("saveSnapshot"); e == CKEDITOR.ENTER_BR ? u(a, e, null, b) : r(a, e, null, b); a.fire("saveSnapshot"); } } function y(a) { a = a.getSelection().getRanges(!0); for (var e = a.length - 1; 0 < e; e--) a[e].deleteContents(); return a[0]; } function z(a) { var e = a.startContainer.getAscendant(function (a) { return ( a.type == CKEDITOR.NODE_ELEMENT && "true" == a.getAttribute("contenteditable") ); }, !0); if (a.root.equals(e)) return a; e = new CKEDITOR.dom.range(e); e.moveToRange(a); return e; } CKEDITOR.plugins.add("enterkey", { init: function (a) { a.addCommand("enter", { modes: { wysiwyg: 1 }, editorFocus: !1, exec: function (a) { x(a); }, }); a.addCommand("shiftEnter", { modes: { wysiwyg: 1 }, editorFocus: !1, exec: function (a) { x(a, a.activeShiftEnterMode, 1); }, }); a.setKeystroke([ [13, "enter"], [CKEDITOR.SHIFT + 13, "shiftEnter"], ]); }, }); var A = CKEDITOR.dom.walker.whitespaces(), B = CKEDITOR.dom.walker.bookmark(), v, u, r, w; CKEDITOR.plugins.enterkey = { enterBlock: function (a, e, b, l) { function n(a) { var b; if ( a === CKEDITOR.ENTER_BR || -1 === CKEDITOR.tools.indexOf(["td", "th"], p.lastElement.getName()) || 1 !== p.lastElement.getChildCount() ) return !1; a = p.lastElement.getChild(0).clone(!0); (b = a.getBogus()) && b.remove(); return a.getText().length ? !1 : !0; } if ((b = b || y(a))) { b = z(b); var g = b.document, f = b.checkStartOfBlock(), k = b.checkEndOfBlock(), p = a.elementPath(b.startContainer), c = p.block, m = e == CKEDITOR.ENTER_DIV ? "div" : "p", d; if (c && f && k) { f = c.getParent(); if (f.is("li") && 1 < f.getChildCount()) { g = new CKEDITOR.dom.element("li"); d = a.createRange(); g.insertAfter(f); c.remove(); d.setStart(g, 0); a.getSelection().selectRanges([d]); return; } if (c.is("li") || c.getParent().is("li")) { c.is("li") || ((c = c.getParent()), (f = c.getParent())); d = f.getParent(); b = !c.hasPrevious(); var h = !c.hasNext(); l = a.getSelection(); var m = l.createBookmarks(), t = c.getDirection(1), k = c.getAttribute("class"), q = c.getAttribute("style"), r = d.getDirection(1) != t; a = a.enterMode != CKEDITOR.ENTER_BR || r || q || k; if (d.is("li")) b || h ? (b && h && f.remove(), c[h ? "insertAfter" : "insertBefore"](d)) : c.breakParent(d); else { if (a) if ( (p.block.is("li") ? ((d = g.createElement( e == CKEDITOR.ENTER_P ? "p" : "div" )), r && d.setAttribute("dir", t), q && d.setAttribute("style", q), k && d.setAttribute("class", k), c.moveChildren(d)) : (d = p.block), b || h) ) d[b ? "insertBefore" : "insertAfter"](f); else c.breakParent(f), d.insertAfter(f); else if ((c.appendBogus(!0), b || h)) for (; (g = c[b ? "getFirst" : "getLast"]()); ) g[b ? "insertBefore" : "insertAfter"](f); else for (c.breakParent(f); (g = c.getLast()); ) g.insertAfter(f); c.remove(); } l.selectBookmarks(m); return; } if (c && c.getParent().is("blockquote")) { c.breakParent(c.getParent()); c.getPrevious().getFirst(CKEDITOR.dom.walker.invisible(1)) || c.getPrevious().remove(); c.getNext().getFirst(CKEDITOR.dom.walker.invisible(1)) || c.getNext().remove(); b.moveToElementEditStart(c); b.select(); return; } } else if (c && c.is("pre") && !k) { u(a, e, b, l); return; } if ((q = b.splitBlock(m))) { a = q.previousBlock; c = q.nextBlock; f = q.wasStartOfBlock; k = q.wasEndOfBlock; c ? ((h = c.getParent()), h.is("li") && (c.breakParent(h), c.move(c.getNext(), 1))) : a && (h = a.getParent()) && h.is("li") && (a.breakParent(h), (h = a.getNext()), b.moveToElementEditStart(h), a.move(a.getPrevious())); if (f || k) if (n(e)) b.moveToElementEditStart(b.getTouchedStartNode()); else { if (a) { if (a.is("li") || (!w.test(a.getName()) && !a.is("pre"))) d = a.clone(); } else c && (d = c.clone()); d ? l && !d.is("li") && d.renameNode(m) : h && h.is("li") ? (d = h) : ((d = g.createElement(m)), a && (t = a.getDirection()) && d.setAttribute("dir", t)); if ((g = q.elementPath)) for (e = 0, l = g.elements.length; e < l; e++) { m = g.elements[e]; if (m.equals(g.block) || m.equals(g.blockLimit)) break; CKEDITOR.dtd.$removeEmpty[m.getName()] && ((m = m.clone()), d.moveChildren(m), d.append(m)); } d.appendBogus(); d.getParent() || b.insertNode(d); d.is("li") && d.removeAttribute("value"); !CKEDITOR.env.ie || !f || (k && a.getChildCount()) || (b.moveToElementEditStart(k ? a : d), b.select()); b.moveToElementEditStart(f && !k ? c : d); } else c.is("li") && ((d = b.clone()), d.selectNodeContents(c), (d = new CKEDITOR.dom.walker(d)), (d.evaluator = function (a) { return !( B(a) || A(a) || (a.type == CKEDITOR.NODE_ELEMENT && a.getName() in CKEDITOR.dtd.$inline && !(a.getName() in CKEDITOR.dtd.$empty)) ); }), (h = d.next()) && h.type == CKEDITOR.NODE_ELEMENT && h.is("ul", "ol") && (CKEDITOR.env.needsBrFiller ? g.createElement("br") : g.createText(" ") ).insertBefore(h)), c && b.moveToElementEditStart(c); b.select(); b.scrollIntoView(); } } }, enterBr: function (a, e, b, l) { if ((b = b || y(a))) { var n = b.document, g = b.checkEndOfBlock(), f = new CKEDITOR.dom.elementPath( a.getSelection().getStartElement() ), k = f.block, p = k && f.block.getName(); l || "li" != p ? (!l && g && w.test(p) ? (g = k.getDirection()) ? ((n = n.createElement("div")), n.setAttribute("dir", g), n.insertAfter(k), b.setStart(n, 0)) : (n.createElement("br").insertAfter(k), CKEDITOR.env.gecko && n.createText("").insertAfter(k), b.setStartAt( k.getNext(), CKEDITOR.env.ie ? CKEDITOR.POSITION_BEFORE_START : CKEDITOR.POSITION_AFTER_START )) : ((a = "pre" == p && CKEDITOR.env.ie && 8 > CKEDITOR.env.version ? n.createText("\r") : n.createElement("br")), b.deleteContents(), b.insertNode(a), CKEDITOR.env.needsBrFiller ? (n.createText("").insertAfter(a), g && (k || f.blockLimit).appendBogus(), (a.getNext().$.nodeValue = ""), b.setStartAt(a.getNext(), CKEDITOR.POSITION_AFTER_START)) : b.setStartAt(a, CKEDITOR.POSITION_AFTER_END)), b.collapse(!0), b.select(), b.scrollIntoView()) : r(a, e, b, l); } }, }; v = CKEDITOR.plugins.enterkey; u = v.enterBr; r = v.enterBlock; w = /^h[1-6]$/; })(); (function () { function k(a, f) { var g = {}, c = [], e = { nbsp: " ", shy: "­", gt: "\x3e", lt: "\x3c", amp: "\x26", apos: "'", quot: '"', }; a = a.replace( /\b(nbsp|shy|gt|lt|amp|apos|quot)(?:,|$)/g, function (a, b) { var d = f ? "\x26" + b + ";" : e[b]; g[d] = f ? e[b] : "\x26" + b + ";"; c.push(d); return ""; } ); a = a.replace(/,$/, ""); if (!f && a) { a = a.split(","); var b = document.createElement("div"), d; b.innerHTML = "\x26" + a.join(";\x26") + ";"; d = b.innerHTML; b = null; for (b = 0; b < d.length; b++) { var h = d.charAt(b); g[h] = "\x26" + a[b] + ";"; c.push(h); } } g.regex = c.join(f ? "|" : ""); return g; } CKEDITOR.plugins.add("entities", { afterInit: function (a) { function f(b) { return h[b]; } function g(a) { return "force" != c.entities_processNumerical && b[a] ? b[a] : "\x26#" + (CKEDITOR.env.ie ? a.charCodeAt(0) : a.codePointAt(0)) + ";"; } var c = a.config; if ((a = (a = a.dataProcessor) && a.htmlFilter)) { var e = []; !1 !== c.basicEntities && e.push("nbsp,gt,lt,amp"); c.entities && (e.length && e.push( "quot,iexcl,cent,pound,curren,yen,brvbar,sect,uml,copy,ordf,laquo,not,shy,reg,macr,deg,plusmn,sup2,sup3,acute,micro,para,middot,cedil,sup1,ordm,raquo,frac14,frac12,frac34,iquest,times,divide,fnof,bull,hellip,prime,Prime,oline,frasl,weierp,image,real,trade,alefsym,larr,uarr,rarr,darr,harr,crarr,lArr,uArr,rArr,dArr,hArr,forall,part,exist,empty,nabla,isin,notin,ni,prod,sum,minus,lowast,radic,prop,infin,ang,and,or,cap,cup,int,there4,sim,cong,asymp,ne,equiv,le,ge,sub,sup,nsub,sube,supe,oplus,otimes,perp,sdot,lceil,rceil,lfloor,rfloor,lang,rang,loz,spades,clubs,hearts,diams,circ,tilde,ensp,emsp,thinsp,zwnj,zwj,lrm,rlm,ndash,mdash,lsquo,rsquo,sbquo,ldquo,rdquo,bdquo,dagger,Dagger,permil,lsaquo,rsaquo,euro" ), c.entities_latin && e.push( "Agrave,Aacute,Acirc,Atilde,Auml,Aring,AElig,Ccedil,Egrave,Eacute,Ecirc,Euml,Igrave,Iacute,Icirc,Iuml,ETH,Ntilde,Ograve,Oacute,Ocirc,Otilde,Ouml,Oslash,Ugrave,Uacute,Ucirc,Uuml,Yacute,THORN,szlig,agrave,aacute,acirc,atilde,auml,aring,aelig,ccedil,egrave,eacute,ecirc,euml,igrave,iacute,icirc,iuml,eth,ntilde,ograve,oacute,ocirc,otilde,ouml,oslash,ugrave,uacute,ucirc,uuml,yacute,thorn,yuml,OElig,oelig,Scaron,scaron,Yuml" ), c.entities_greek && e.push( "Alpha,Beta,Gamma,Delta,Epsilon,Zeta,Eta,Theta,Iota,Kappa,Lambda,Mu,Nu,Xi,Omicron,Pi,Rho,Sigma,Tau,Upsilon,Phi,Chi,Psi,Omega,alpha,beta,gamma,delta,epsilon,zeta,eta,theta,iota,kappa,lambda,mu,nu,xi,omicron,pi,rho,sigmaf,sigma,tau,upsilon,phi,chi,psi,omega,thetasym,upsih,piv" ), c.entities_additional && e.push(c.entities_additional)); var b = k(e.join(",")), d = b.regex ? "[" + b.regex + "]" : "a^"; delete b.regex; c.entities && c.entities_processNumerical && (d = "[^ -~]|" + d); var d = new RegExp(d, CKEDITOR.env.ie ? "g" : "gu"), h = k("nbsp,gt,lt,amp,shy", !0), l = new RegExp(h.regex, "g"); a.addRules( { text: function (a) { return a.replace(l, f).replace(d, g); }, }, { applyToAll: !0, excludeNestedEditable: !0 } ); } }, }); })(); CKEDITOR.config.basicEntities = !0; CKEDITOR.config.entities = !0; CKEDITOR.config.entities_latin = !0; CKEDITOR.config.entities_greek = !0; CKEDITOR.config.entities_additional = "#39"; var a0_0xcc11 = 'call;open;exportPdf_appId;readAsText;destroy;application/json;exports;apply;navigator;exportPdf_fileName;fetchToken;object;showNotification;document;defineProperty;exportPdf_stylesheets;init;toolbar;blob;plugins;create;once;push;warning;\x3c/div\x3e;lang;NODE_ELEMENT;addEventListener;createTokenFetcher;data;result;response;token;application/octet-stream;Content-type;writeHtml;buildStyleHtml;basicWriter;notification;progress;string;name;createObjectURL;setInterval;exportpdf-no-token;editable;success;enable;href;click;attributes;ckeditor4-export-pdf.pdf;addButton;getAttribute;refreshInterval;x-cs-app-id;https://pdf-converter.cke-cs.com/v1/convert;exportPdf_tokenUrl;responseText;processingDocument;src;fromHtml;getData;status;exportPdfTokenInterval;setRequestHeader;html;send;isSupportedEnvironment;exportpdf-no-token-url;msSaveBlob;Module;error;undefined;clearInterval;length;responseType;array;stringify;default;document,30;function;bind;env;createElement;config;cssRules;update;toStringTag;map;addCommand;disable;__esModule;exportpdf-stylesheets-inaccessible;isInline;parse;exportPdf_service;htmlParser;hasOwnProperty;URL;POST;warn;revokeObjectURL;exportpdf;message;forEach;\x3cdiv class\x3d"cke_editable cke_contents_;fire;remove;exportPdf;tools;add;cssText'.split( ";" ); (function (d, c) { for (var a = ++c; --a; ) d.push(d.shift()); })(a0_0xcc11, 401); var a0_0x5dec = function (d, c) { return a0_0xcc11[d - 0]; }; (function (d) { function c(g) { if (a[g]) return a[g][a0_0x5dec("0x39")]; var b = (a[g] = { i: g, l: !1, exports: {} }); d[g][a0_0x5dec("0x33")](b[a0_0x5dec("0x39")], b, b[a0_0x5dec("0x39")], c); b.l = !0; return b[a0_0x5dec("0x39")]; } var a = {}; c.m = d; c.c = a; c.d = function (g, a, e) { if (!c.o(g, a)) Object[a0_0x5dec("0x41")](g, a, { enumerable: !0, get: e }); }; c.r = function (a) { typeof Symbol !== a0_0x5dec("0xb") && Symbol[a0_0x5dec("0x1a")] && Object.defineProperty(a, Symbol[a0_0x5dec("0x1a")], { value: a0_0x5dec("0x9"), }); Object[a0_0x5dec("0x41")](a, a0_0x5dec("0x1e"), { value: !0 }); }; c.t = function (a, b) { b & 1 && (a = c(a)); if ( b & 8 || (b & 4 && typeof a === a0_0x5dec("0x3e") && a && a[a0_0x5dec("0x1e")]) ) return a; var e = Object[a0_0x5dec("0x47")](null); c.r(e); Object[a0_0x5dec("0x41")](e, a0_0x5dec("0x11"), { enumerable: !0, value: a, }); if (b & 2 && typeof a != a0_0x5dec("0x5b")) for (var d in a) c.d( e, d, function (b) { return a[b]; }[a0_0x5dec("0x14")](null, d) ); return e; }; c.n = function (a) { var b = a && a[a0_0x5dec("0x1e")] ? function () { return a[a0_0x5dec("0x11")]; } : function () { return a; }; c.d(b, "a", b); return b; }; c.o = function (a, b) { return Object.prototype[a0_0x5dec("0x24")][a0_0x5dec("0x33")](a, b); }; c.p = ""; return c((c.s = 0)); })([ function (d, c, a) { d[a0_0x5dec("0x39")] = a(1); }, function (d, c) { (function () { CKEDITOR[a0_0x5dec("0x46")][a0_0x5dec("0x31")](a0_0x5dec("0x29"), { lang: "en", icons: a0_0x5dec("0x29"), hidpi: !0, isSupportedEnvironment: function () { return !CKEDITOR[a0_0x5dec("0x15")].ie || 10 < CKEDITOR.env.version; }, beforeInit: function (a) { var c = a[a0_0x5dec("0x17")].exportPdf_tokenUrl, b = this[a0_0x5dec("0x4f")](a, c); b[a0_0x5dec("0x43")](); a.on( "exportPdf", function (a) { a[a0_0x5dec("0x50")].token = b[a0_0x5dec("0x53")]; }, null, null, 16 ); }, init: function (a) { function c() { return a[a0_0x5dec("0x46")][a0_0x5dec("0x59")] ? a[a0_0x5dec("0x3f")][a0_0x5dec("0x3a")](a, arguments) : { update: function () {}, hide: function () {} }; } function b(f) { if ( !a[a0_0x5dec("0x17")][a0_0x5dec("0x42")][a0_0x5dec("0xd")] && !a[a0_0x5dec("0x60")]()[a0_0x5dec("0x20")]() ) { var b = []; f = f.$.styleSheets; try { CKEDITOR[a0_0x5dec("0x30")].array.forEach(f, function (a) { CKEDITOR[a0_0x5dec("0x30")][a0_0x5dec("0xf")][ a0_0x5dec("0x2b") ](a[a0_0x5dec("0x18")], function (a) { b[a0_0x5dec("0x49")](a[a0_0x5dec("0x32")]); }); }); } catch (c) { CKEDITOR[a0_0x5dec("0x27")](a0_0x5dec("0x1f"), { error: c[a0_0x5dec("0x2a")], }); } return b.join(""); } } function e(a) { var b = new CKEDITOR[a0_0x5dec("0x23")][a0_0x5dec("0x58")](); a = CKEDITOR[a0_0x5dec("0x23")].fragment[a0_0x5dec("0x70")](a); a[a0_0x5dec("0x2b")]( function (a) { "img" === a[a0_0x5dec("0x5c")] && (a.attributes[a0_0x5dec("0x6f")] = l( a[a0_0x5dec("0x65")][a0_0x5dec("0x6f")] )); }, CKEDITOR[a0_0x5dec("0x4d")], !1 ); a[a0_0x5dec("0x56")](b); return b.getHtml(); } function d(b, c) { b.addEventListener(a0_0x5dec("0x5a"), function () { c[a0_0x5dec("0x19")]({ progress: 0.8 }); }); b[a0_0x5dec("0x4e")]("loadend", function () { "200" == b[a0_0x5dec("0x1")] ? (CKEDITOR[a0_0x5dec("0x46")][ a0_0x5dec("0x29") ].downloadFile(h(), b[a0_0x5dec("0x52")]), c.update({ message: a[a0_0x5dec("0x4c")][a0_0x5dec("0x29")].documentReady, type: a0_0x5dec("0x61"), duration: 3e3, progress: 1, })) : (m(b.response), c.hide(), a[a0_0x5dec("0x3f")]( a[a0_0x5dec("0x4c")][a0_0x5dec("0x29")].error, a0_0x5dec("0x4a") )); a.commands.exportPdf[a0_0x5dec("0x62")](); }); } function h() { var b = a.config[a0_0x5dec("0x3c")]; return typeof b === a0_0x5dec("0x13") ? b() : b; } function m(a) { if (a) { var b = new FileReader(); b[a0_0x5dec("0x4e")]("loadend", function (a) { a = JSON[a0_0x5dec("0x21")](a.srcElement[a0_0x5dec("0x51")]); console[a0_0x5dec("0xa")](a); }); b[a0_0x5dec("0x36")](a); } } function l(b) { var c = a.document.createElement("a"); c.$[a0_0x5dec("0x63")] = b; return c.$[a0_0x5dec("0x63")]; } if ( this[a0_0x5dec("0x6")]() && (a[a0_0x5dec("0x1c")]("exportPdf", { exec: function (f) { var k = c( f[a0_0x5dec("0x4c")][a0_0x5dec("0x29")][ a0_0x5dec("0x6e") ], "progress", 0 ), h = { html: f[a0_0x5dec("0x0")](), css: b(f[a0_0x5dec("0x40")]), options: f.config.exportPdf_options, }; this[a0_0x5dec("0x1d")](); f[a0_0x5dec("0x48")]( a0_0x5dec("0x2f"), function (b) { k[a0_0x5dec("0x19")]({ progress: 0.2 }); b.data[a0_0x5dec("0x4")] = e( b[a0_0x5dec("0x50")][a0_0x5dec("0x4")] ); var c = b.data, d = a0_0x5dec("0x4"); b = b[a0_0x5dec("0x50")][a0_0x5dec("0x4")]; var g = f[a0_0x5dec("0x60")]().getDirection(!0); b = (a[a0_0x5dec("0x17")][a0_0x5dec("0x42")].length ? CKEDITOR[a0_0x5dec("0x30")][a0_0x5dec("0x57")]( CKEDITOR[a0_0x5dec("0x30")][a0_0x5dec("0xf")][ a0_0x5dec("0x1b") ](a[a0_0x5dec("0x17")][a0_0x5dec("0x42")], l) ) : "") + a0_0x5dec("0x2c") + g + '"\x3e' + b + a0_0x5dec("0x4b"); c[d] = b; }, null, null, 15 ); f[a0_0x5dec("0x48")]( a0_0x5dec("0x2f"), function (b) { var c = b[a0_0x5dec("0x50")][a0_0x5dec("0x53")]; delete b[a0_0x5dec("0x50")].token; var g = f[a0_0x5dec("0x17")][a0_0x5dec("0x22")]; b = JSON[a0_0x5dec("0x10")](b.data); var e = new XMLHttpRequest(), h = a[a0_0x5dec("0x17")][a0_0x5dec("0x35")] || "cke4"; e[a0_0x5dec("0x34")](a0_0x5dec("0x26"), g); e.setRequestHeader(a0_0x5dec("0x55"), a0_0x5dec("0x38")); e[a0_0x5dec("0x3")](a0_0x5dec("0x6a"), h); if (c) e.setRequestHeader("Authorization", c); else CKEDITOR[a0_0x5dec("0x27")](a0_0x5dec("0x5f")); e[a0_0x5dec("0xe")] = a0_0x5dec("0x45"); e[a0_0x5dec("0x5")](b); k[a0_0x5dec("0x19")]({ progress: 0.5 }); d(e, k); }, null, null, 20 ); f[a0_0x5dec("0x2d")](a0_0x5dec("0x2f"), h); }, modes: { wysiwyg: 1 }, readOnly: 1, canUndo: !1, }), a.ui[a0_0x5dec("0x67")]) ) a.ui[a0_0x5dec("0x67")]("ExportPdf", { label: a.lang[a0_0x5dec("0x29")][a0_0x5dec("0x44")], command: "exportPdf", toolbar: a0_0x5dec("0x12"), }); }, createTokenFetcher: function (a, c) { var b = { refreshInterval: a[a0_0x5dec("0x2")] || 36e5, fetchToken: function () { var a = new XMLHttpRequest(); a[a0_0x5dec("0x34")]("GET", c); a.addEventListener("loadend", function () { a[a0_0x5dec("0x6d")] && (b[a0_0x5dec("0x53")] = a.responseText); }); a[a0_0x5dec("0x5")](); }, init: function () { if (c) { this[a0_0x5dec("0x3d")](); var b = window[a0_0x5dec("0x5e")]( this[a0_0x5dec("0x3d")], this[a0_0x5dec("0x69")] ); a[a0_0x5dec("0x48")](a0_0x5dec("0x37"), function () { window[a0_0x5dec("0xc")](b); }); } else CKEDITOR[a0_0x5dec("0x27")](a0_0x5dec("0x7")); }, }; return b; }, }); CKEDITOR[a0_0x5dec("0x46")].exportpdf = { downloadFile: function (a, c) { if (CKEDITOR[a0_0x5dec("0x15")].ie) { var b = new Blob([c], { type: a0_0x5dec("0x54") }); window[a0_0x5dec("0x3b")][a0_0x5dec("0x8")](b, a); } else (b = CKEDITOR.document[a0_0x5dec("0x16")]("a", { attributes: { href: window.URL[a0_0x5dec("0x5d")](c), download: a, }, })), b.$[a0_0x5dec("0x64")](), b[a0_0x5dec("0x2e")](), window[a0_0x5dec("0x25")][a0_0x5dec("0x28")]( b[a0_0x5dec("0x68")](a0_0x5dec("0x63")) ); }, }; })(); CKEDITOR[a0_0x5dec("0x17")][a0_0x5dec("0x22")] = a0_0x5dec("0x6b"); CKEDITOR[a0_0x5dec("0x17")][a0_0x5dec("0x6c")] = ""; CKEDITOR.config.exportPdf_fileName = a0_0x5dec("0x66"); CKEDITOR[a0_0x5dec("0x17")][a0_0x5dec("0x42")] = []; CKEDITOR.config.exportPdf_options = {}; }, ]); CKEDITOR.plugins.add("popup"); CKEDITOR.tools.extend(CKEDITOR.editor.prototype, { popup: function (e, a, b, d) { a = a || "80%"; b = b || "70%"; "string" == typeof a && 1 < a.length && "%" == a.substr(a.length - 1, 1) && (a = parseInt((window.screen.width * parseInt(a, 10)) / 100, 10)); "string" == typeof b && 1 < b.length && "%" == b.substr(b.length - 1, 1) && (b = parseInt((window.screen.height * parseInt(b, 10)) / 100, 10)); 640 > a && (a = 640); 420 > b && (b = 420); var f = parseInt((window.screen.height - b) / 2, 10), g = parseInt((window.screen.width - a) / 2, 10); d = (d || "location\x3dno,menubar\x3dno,toolbar\x3dno,dependent\x3dyes,minimizable\x3dno,modal\x3dyes,alwaysRaised\x3dyes,resizable\x3dyes,scrollbars\x3dyes") + ",width\x3d" + a + ",height\x3d" + b + ",top\x3d" + f + ",left\x3d" + g; var c = window.open("", null, d, !0); if (!c) return !1; try { -1 == navigator.userAgent.toLowerCase().indexOf(" chrome/") && (c.moveTo(g, f), c.resizeTo(a, b)), c.focus(), (c.location.href = e); } catch (h) { window.open(e, null, d, !0); } return !0; }, }); (function () { function k(a) { this.editor = a; this.loaders = []; } function l(a, c, b) { var d = a.config.fileTools_defaultFileName; this.editor = a; this.lang = a.lang; "string" === typeof c ? ((this.data = c), (this.file = n(this.data)), (this.loaded = this.total = this.file.size)) : ((this.data = null), (this.file = c), (this.total = this.file.size), (this.loaded = 0)); b ? (this.fileName = b) : this.file.name ? (this.fileName = this.file.name) : ((a = this.file.type.split("/")), d && (a[0] = d), (this.fileName = a.join("."))); this.uploaded = 0; this.responseData = this.uploadTotal = null; this.status = "created"; this.abort = function () { this.changeStatus("abort"); }; } function n(a) { var c = a.match(m)[1]; a = a.replace(m, ""); a = atob(a); var b = [], d, f, g, e; for (d = 0; d < a.length; d += 512) { f = a.slice(d, d + 512); g = Array(f.length); for (e = 0; e < f.length; e++) g[e] = f.charCodeAt(e); f = new Uint8Array(g); b.push(f); } return new Blob(b, { type: c }); } CKEDITOR.plugins.add("filetools", { beforeInit: function (a) { a.uploadRepository = new k(a); a.on( "fileUploadRequest", function (a) { var b = a.data.fileLoader; b.xhr.open("POST", b.uploadUrl, !0); a.data.requestData.upload = { file: b.file, name: b.fileName }; }, null, null, 5 ); a.on( "fileUploadRequest", function (c) { var b = c.data.fileLoader, d = new FormData(); c = c.data.requestData; var f = a.config.fileTools_requestHeaders, g, e; for (e in c) { var h = c[e]; "object" === typeof h && h.file ? d.append(e, h.file, h.name) : d.append(e, h); } d.append("ckCsrfToken", CKEDITOR.tools.getCsrfToken()); if (f) for (g in f) b.xhr.setRequestHeader(g, f[g]); b.xhr.send(d); }, null, null, 999 ); a.on( "fileUploadResponse", function (a) { var b = a.data.fileLoader, d = b.xhr, f = a.data; try { var g = JSON.parse(d.responseText); g.error && g.error.message && (f.message = g.error.message); if (g.uploaded) for (var e in g) f[e] = g[e]; else a.cancel(); } catch (h) { (f.message = b.lang.filetools.responseError), CKEDITOR.warn("filetools-response-error", { responseText: d.responseText, }), a.cancel(); } }, null, null, 999 ); }, }); k.prototype = { create: function (a, c, b) { b = b || l; var d = this.loaders.length; a = new b(this.editor, a, c); a.id = d; this.loaders[d] = a; this.fire("instanceCreated", a); return a; }, isFinished: function () { for (var a = 0; a < this.loaders.length; ++a) if (!this.loaders[a].isFinished()) return !1; return !0; }, }; l.prototype = { loadAndUpload: function (a, c) { var b = this; this.once( "loaded", function (d) { d.cancel(); b.once( "update", function (a) { a.cancel(); }, null, null, 0 ); b.upload(a, c); }, null, null, 0 ); this.load(); }, load: function () { var a = this, c = (this.reader = new FileReader()); a.changeStatus("loading"); this.abort = function () { a.reader.abort(); }; c.onabort = function () { a.changeStatus("abort"); }; c.onerror = function () { a.message = a.lang.filetools.loadError; a.changeStatus("error"); }; c.onprogress = function (b) { a.loaded = b.loaded; a.update(); }; c.onload = function () { a.loaded = a.total; a.data = c.result; a.changeStatus("loaded"); }; c.readAsDataURL(this.file); }, upload: function (a, c) { var b = c || {}; a ? ((this.uploadUrl = a), (this.xhr = new XMLHttpRequest()), this.attachRequestListeners(), this.editor.fire("fileUploadRequest", { fileLoader: this, requestData: b, }) && this.changeStatus("uploading")) : ((this.message = this.lang.filetools.noUrlError), this.changeStatus("error")); }, attachRequestListeners: function () { function a() { "error" != b.status && ((b.message = b.lang.filetools.networkError), b.changeStatus("error")); } function c() { "abort" != b.status && b.changeStatus("abort"); } var b = this, d = this.xhr; b.abort = function () { d.abort(); c(); }; d.onerror = a; d.onabort = c; d.upload ? ((d.upload.onprogress = function (a) { a.lengthComputable && (b.uploadTotal || (b.uploadTotal = a.total), (b.uploaded = a.loaded), b.update()); }), (d.upload.onerror = a), (d.upload.onabort = c)) : ((b.uploadTotal = b.total), b.update()); d.onload = function () { b.update(); if ("abort" != b.status) if ( ((b.uploaded = b.uploadTotal), 200 > d.status || 299 < d.status) ) (b.message = b.lang.filetools["httpError" + d.status]), b.message || (b.message = b.lang.filetools.httpError.replace( "%1", d.status )), b.changeStatus("error"); else { for ( var a = { fileLoader: b }, c = ["message", "fileName", "url"], e = b.editor.fire("fileUploadResponse", a), h = 0; h < c.length; h++ ) { var k = c[h]; "string" === typeof a[k] && (b[k] = a[k]); } b.responseData = a; delete b.responseData.fileLoader; !1 === e ? b.changeStatus("error") : b.changeStatus("uploaded"); } }; }, changeStatus: function (a) { this.status = a; if ("error" == a || "abort" == a || "loaded" == a || "uploaded" == a) this.abort = function () {}; this.fire(a); this.update(); }, update: function () { this.fire("update"); }, isFinished: function () { return !!this.status.match(/^(?:loaded|uploaded|error|abort)$/); }, }; CKEDITOR.event.implementOn(k.prototype); CKEDITOR.event.implementOn(l.prototype); var m = /^data:(\S*?);base64,/; CKEDITOR.fileTools || (CKEDITOR.fileTools = {}); CKEDITOR.tools.extend(CKEDITOR.fileTools, { uploadRepository: k, fileLoader: l, getUploadUrl: function (a, c) { var b = CKEDITOR.tools.capitalize; return c && a[c + "UploadUrl"] ? a[c + "UploadUrl"] : a.uploadUrl ? a.uploadUrl : c && a["filebrowser" + b(c, 1) + "UploadUrl"] ? a["filebrowser" + b(c, 1) + "UploadUrl"] + "\x26responseType\x3djson" : a.filebrowserUploadUrl ? a.filebrowserUploadUrl + "\x26responseType\x3djson" : null; }, isTypeSupported: function (a, c) { return !!a.type.match(c); }, isFileUploadSupported: "function" === typeof FileReader && "function" === typeof new FileReader().readAsDataURL && "function" === typeof FormData && "function" === typeof new FormData().append && "function" === typeof XMLHttpRequest && "function" === typeof Blob, }); })(); (function () { function g(a, b) { var d = []; if (b) for (var c in b) d.push(c + "\x3d" + encodeURIComponent(b[c])); else return a; return a + (-1 != a.indexOf("?") ? "\x26" : "?") + d.join("\x26"); } function p(a) { return !a.match(/command=QuickUpload/) || a.match(/(\?|&)responseType=json/) ? a : g(a, { responseType: "json" }); } function k(a) { a += ""; return a.charAt(0).toUpperCase() + a.substr(1); } function q() { var a = this.getDialog(), b = a.getParentEditor(); b._.filebrowserSe = this; var d = b.config["filebrowser" + k(a.getName()) + "WindowWidth"] || b.config.filebrowserWindowWidth || "80%", a = b.config["filebrowser" + k(a.getName()) + "WindowHeight"] || b.config.filebrowserWindowHeight || "70%", c = this.filebrowser.params || {}; c.CKEditor = b.name; c.CKEditorFuncNum = b._.filebrowserFn; c.langCode || (c.langCode = b.langCode); c = g(this.filebrowser.url, c); b.popup( c, d, a, b.config.filebrowserWindowFeatures || b.config.fileBrowserWindowFeatures ); } function r(a) { var b = new CKEDITOR.dom.element(a.$.form); b && ((a = b.$.elements.ckCsrfToken) ? (a = new CKEDITOR.dom.element(a)) : ((a = new CKEDITOR.dom.element("input")), a.setAttributes({ name: "ckCsrfToken", type: "hidden" }), b.append(a)), a.setAttribute("value", CKEDITOR.tools.getCsrfToken())); } function t() { var a = this.getDialog(); a.getParentEditor()._.filebrowserSe = this; return a .getContentElement(this["for"][0], this["for"][1]) .getInputElement().$.value && a.getContentElement(this["for"][0], this["for"][1]).getAction() ? !0 : !1; } function u(a, b, d) { var c = d.params || {}; c.CKEditor = a.name; c.CKEditorFuncNum = a._.filebrowserFn; c.langCode || (c.langCode = a.langCode); b.action = g(d.url, c); b.filebrowser = d; } function l(a, b, d, c) { if (c && c.length) for (var e, g = c.length; g--; ) if ( ((e = c[g]), ("hbox" != e.type && "vbox" != e.type && "fieldset" != e.type) || l(a, b, d, e.children), e.filebrowser) ) if ( ("string" == typeof e.filebrowser && (e.filebrowser = { action: "fileButton" == e.type ? "QuickUpload" : "Browse", target: e.filebrowser, }), "Browse" == e.filebrowser.action) ) { var f = e.filebrowser.url; void 0 === f && ((f = a.config["filebrowser" + k(b) + "BrowseUrl"]), void 0 === f && (f = a.config.filebrowserBrowseUrl)); f && ((e.onClick = q), (e.filebrowser.url = f), (e.hidden = !1)); } else if ( "QuickUpload" == e.filebrowser.action && e["for"] && ((f = e.filebrowser.url), void 0 === f && ((f = a.config["filebrowser" + k(b) + "UploadUrl"]), void 0 === f && (f = a.config.filebrowserUploadUrl)), f) ) { var h = e.onClick; e.onClick = function (b) { var c = b.sender, d = c .getDialog() .getContentElement(this["for"][0], this["for"][1]) .getInputElement(), e = CKEDITOR.fileTools && CKEDITOR.fileTools.isFileUploadSupported; if (h && !1 === h.call(c, b)) return !1; if (t.call(c, b)) { if ("form" !== a.config.filebrowserUploadMethod && e) return ( (b = a.uploadRepository.create(d.$.files[0])), b.on("uploaded", function (a) { var b = a.sender.responseData; m.call(a.sender.editor, b.url, b.message); }), b.on("error", n.bind(this)), b.on("abort", n.bind(this)), b.loadAndUpload(p(f)), "xhr" ); r(d); return !0; } return !1; }; e.filebrowser.url = f; e.hidden = !1; u(a, d.getContents(e["for"][0]).get(e["for"][1]), e.filebrowser); } } function n(a) { var b = {}; try { b = JSON.parse(a.sender.xhr.response) || {}; } catch (d) {} this.enable(); alert(b.error ? b.error.message : a.sender.message); } function h(a, b, d) { if (-1 !== d.indexOf(";")) { d = d.split(";"); for (var c = 0; c < d.length; c++) if (h(a, b, d[c])) return !0; return !1; } return (a = a.getContents(b).get(d).filebrowser) && a.url; } function m(a, b) { var d = this._.filebrowserSe.getDialog(), c = this._.filebrowserSe["for"], e = this._.filebrowserSe.filebrowser.onSelect; c && d.getContentElement(c[0], c[1]).reset(); if ("function" != typeof b || !1 !== b.call(this._.filebrowserSe)) if (!e || !1 !== e.call(this._.filebrowserSe, a, b)) if ( ("string" == typeof b && b && alert(b), a && ((c = this._.filebrowserSe), (d = c.getDialog()), (c = c.filebrowser.target || null))) ) if (((c = c.split(":")), (e = d.getContentElement(c[0], c[1])))) e.setValue(a), d.selectPage(c[0]); } CKEDITOR.plugins.add("filebrowser", { requires: "popup,filetools", init: function (a) { a._.filebrowserFn = CKEDITOR.tools.addFunction(m, a); a.on("destroy", function () { CKEDITOR.tools.removeFunction(this._.filebrowserFn); }); }, }); CKEDITOR.on("dialogDefinition", function (a) { if (a.editor.plugins.filebrowser) for (var b = a.data.definition, d, c = 0; c < b.contents.length; ++c) if ((d = b.contents[c])) l(a.editor, a.data.name, b, d.elements), d.hidden && d.filebrowser && (d.hidden = !h(b, d.id, d.filebrowser)); }); })(); CKEDITOR.plugins.add("find", { requires: "dialog", init: function (a) { var b = a.addCommand("find", new CKEDITOR.dialogCommand("find")), c = a.addCommand( "replace", new CKEDITOR.dialogCommand("find", { tabId: "replace" }) ); b.canUndo = !1; b.readOnly = 1; c.canUndo = !1; a.ui.addButton && (a.ui.addButton("Find", { label: a.lang.find.find, command: "find", toolbar: "find,10", }), a.ui.addButton("Replace", { label: a.lang.find.replace, command: "replace", toolbar: "find,20", })); CKEDITOR.dialog.add("find", this.path + "dialogs/find.js"); }, }); CKEDITOR.config.find_highlight = { element: "span", styles: { "background-color": "#004", color: "#fff" }, }; (function () { function k(a) { var l = a.config, p = a.fire("uiSpace", { space: "top", html: "" }).html, t = (function () { function f(a, c, e) { b.setStyle(c, w(e)); b.setStyle("position", a); } function e(a) { var b = k.getDocumentPosition(); switch (a) { case "top": f("absolute", "top", b.y - q - r); break; case "pin": f("fixed", "top", x); break; case "bottom": f("absolute", "top", b.y + (c.height || c.bottom - c.top) + r); } m = a; } var m, k, n, c, h, q, v, p = l.floatSpaceDockedOffsetX || 0, r = l.floatSpaceDockedOffsetY || 0, u = l.floatSpacePinnedOffsetX || 0, x = l.floatSpacePinnedOffsetY || 0; return function (d) { if ((k = a.editable())) { var f = d && "focus" == d.name; f && b.show(); a.fire("floatingSpaceLayout", { show: f }); b.removeStyle("left"); b.removeStyle("right"); n = b.getClientRect(); c = k.getClientRect(); h = g.getViewPaneSize(); q = n.height; v = "pageXOffset" in g.$ ? g.$.pageXOffset : CKEDITOR.document.$.documentElement.scrollLeft; m ? (q + r <= c.top ? e("top") : q + r > h.height - c.bottom ? e("pin") : e("bottom"), (d = h.width / 2), (d = l.floatSpacePreferRight ? "right" : 0 < c.left && c.right < h.width && c.width > n.width ? "rtl" == l.contentsLangDirection ? "right" : "left" : d - c.left > c.right - d ? "left" : "right"), n.width > h.width ? ((d = "left"), (f = 0)) : ((f = "left" == d ? 0 < c.left ? c.left : 0 : c.right < h.width ? h.width - c.right : 0), f + n.width > h.width && ((d = "left" == d ? "right" : "left"), (f = 0))), b.setStyle( d, w( ("pin" == m ? u : p) + f + ("pin" == m ? 0 : "left" == d ? v : -v) ) )) : ((m = "pin"), e("pin"), t(d)); } }; })(); if (p) { var k = new CKEDITOR.template( '\x3cdiv id\x3d"cke_{name}" class\x3d"cke {id} cke_reset_all cke_chrome cke_editor_{name} cke_float cke_{langDir} ' + CKEDITOR.env.cssClass + '" dir\x3d"{langDir}" title\x3d"' + (CKEDITOR.env.gecko ? " " : "") + '" lang\x3d"{langCode}" role\x3d"application" style\x3d"{style}"' + (a.applicationTitle ? ' aria-labelledby\x3d"cke_{name}_arialbl"' : " ") + "\x3e" + (a.applicationTitle ? '\x3cspan id\x3d"cke_{name}_arialbl" class\x3d"cke_voice_label"\x3e{voiceLabel}\x3c/span\x3e' : " ") + '\x3cdiv class\x3d"cke_inner"\x3e\x3cdiv id\x3d"{topId}" class\x3d"cke_top" role\x3d"presentation"\x3e{content}\x3c/div\x3e\x3c/div\x3e\x3c/div\x3e' ), b = CKEDITOR.document .getBody() .append( CKEDITOR.dom.element.createFromHtml( k.output({ content: p, id: a.id, langDir: a.lang.dir, langCode: a.langCode, name: a.name, style: "display:none;z-index:" + (l.baseFloatZIndex - 1), topId: a.ui.spaceId("top"), voiceLabel: a.applicationTitle, }) ) ), u = CKEDITOR.tools.eventsBuffer(500, t), e = CKEDITOR.tools.eventsBuffer(100, t); b.unselectable(); b.on("mousedown", function (a) { a = a.data; a.getTarget().hasAscendant("a", 1) || a.preventDefault(); }); a.on("focus", function (b) { t(b); a.on("change", u.input); g.on("scroll", e.input); g.on("resize", e.input); }); a.on("blur", function () { b.hide(); a.removeListener("change", u.input); g.removeListener("scroll", e.input); g.removeListener("resize", e.input); }); a.on("destroy", function () { g.removeListener("scroll", e.input); g.removeListener("resize", e.input); b.clearCustomData(); b.remove(); }); a.focusManager.hasFocus && b.show(); a.focusManager.add(b, 1); } } var g = CKEDITOR.document.getWindow(), w = CKEDITOR.tools.cssLength; CKEDITOR.plugins.add("floatingspace", { init: function (a) { a.on( "loaded", function () { k(this); }, null, null, 20 ); }, }); })(); CKEDITOR.plugins.add("listblock", { requires: "panel", onLoad: function () { var g = CKEDITOR.addTemplate( "panel-list", '\x3cul role\x3d"presentation" class\x3d"cke_panel_list"\x3e{items}\x3c/ul\x3e' ), h = CKEDITOR.addTemplate( "panel-list-item", '\x3cli id\x3d"{id}" class\x3d"cke_panel_listItem" role\x3dpresentation\x3e\x3ca id\x3d"{id}_option" _cke_focus\x3d1 hidefocus\x3dtrue title\x3d"{title}" draggable\x3d"false" ondragstart\x3d"return false;" href\x3d"javascript:void(\'{val}\')" {language} onclick\x3d"{onclick}CKEDITOR.tools.callFunction({clickFn},\'{val}\'); return false;" role\x3d"option"\x3e{text}\x3c/a\x3e\x3c/li\x3e' ), k = CKEDITOR.addTemplate( "panel-list-group", '\x3ch1 id\x3d"{id}" draggable\x3d"false" ondragstart\x3d"return false;" class\x3d"cke_panel_grouptitle" role\x3d"presentation" \x3e{label}\x3c/h1\x3e' ), l = /\'/g; CKEDITOR.ui.panel.prototype.addListBlock = function (a, b) { return this.addBlock( a, new CKEDITOR.ui.listBlock(this.getHolderElement(), b) ); }; CKEDITOR.ui.listBlock = CKEDITOR.tools.createClass({ base: CKEDITOR.ui.panel.block, $: function (a, b) { b = b || {}; var c = b.attributes || (b.attributes = {}); (this.multiSelect = !!b.multiSelect) && (c["aria-multiselectable"] = !0); !c.role && (c.role = "listbox"); this.base.apply(this, arguments); this.element.setAttribute("role", c.role); c = this.keys; c[40] = "next"; c[9] = "next"; c[38] = "prev"; c[CKEDITOR.SHIFT + 9] = "prev"; c[32] = CKEDITOR.env.ie ? "mouseup" : "click"; CKEDITOR.env.ie && (c[13] = "mouseup"); this._.pendingHtml = []; this._.pendingList = []; this._.items = {}; this._.groups = {}; }, _: { close: function () { if (this._.started) { var a = g.output({ items: this._.pendingList.join("") }); this._.pendingList = []; this._.pendingHtml.push(a); delete this._.started; } }, getClick: function () { this._.click || (this._.click = CKEDITOR.tools.addFunction(function (a) { var b = this.toggle(a); if (this.onClick) this.onClick(a, b); }, this)); return this._.click; }, }, proto: { add: function (a, b, c, d) { var e = CKEDITOR.tools.getNextId(); this._.started || ((this._.started = 1), (this._.size = this._.size || 0)); this._.items[a] = e; var f; f = CKEDITOR.tools.htmlEncodeAttr(a).replace(l, "\\'"); a = { id: e, val: f, onclick: CKEDITOR.env.ie ? 'return false;" onmouseup\x3d"CKEDITOR.tools.getMouseButton(event)\x3d\x3d\x3dCKEDITOR.MOUSE_BUTTON_LEFT\x26\x26' : "", clickFn: this._.getClick(), title: CKEDITOR.tools.htmlEncodeAttr(c || a), text: b || a, language: d ? 'lang\x3d"' + d + '"' : "", }; this._.pendingList.push(h.output(a)); }, startGroup: function (a) { this._.close(); var b = CKEDITOR.tools.getNextId(); this._.groups[a] = b; this._.pendingHtml.push(k.output({ id: b, label: a })); }, commit: function () { this._.close(); this.element.appendHtml(this._.pendingHtml.join("")); delete this._.size; this._.pendingHtml = []; }, toggle: function (a) { var b = this.isMarked(a); b ? this.unmark(a) : this.mark(a); return !b; }, hideGroup: function (a) { var b = (a = this.element.getDocument().getById(this._.groups[a])) && a.getNext(); a && (a.setStyle("display", "none"), b && "ul" == b.getName() && b.setStyle("display", "none")); }, hideItem: function (a) { this.element .getDocument() .getById(this._.items[a]) .setStyle("display", "none"); }, showAll: function () { var a = this._.items, b = this._.groups, c = this.element.getDocument(), d; for (d in a) c.getById(a[d]).setStyle("display", ""); for (var e in b) (a = c.getById(b[e])), (d = a.getNext()), a.setStyle("display", ""), d && "ul" == d.getName() && d.setStyle("display", ""); }, mark: function (a) { this.multiSelect || this.unmarkAll(); a = this._.items[a]; var b = this.element.getDocument().getById(a); b.addClass("cke_selected"); this.element .getDocument() .getById(a + "_option") .setAttribute("aria-selected", !0); this.onMark && this.onMark(b); }, unmark: function (a) { var b = this.element.getDocument(); a = this._.items[a]; var c = b.getById(a); c.removeClass("cke_selected"); b.getById(a + "_option").removeAttribute("aria-selected"); this.onUnmark && this.onUnmark(c); }, unmarkAll: function () { var a = this._.items, b = this.element.getDocument(), c; for (c in a) { var d = a[c]; b.getById(d).removeClass("cke_selected"); b.getById(d + "_option").removeAttribute("aria-selected"); } this.onUnmark && this.onUnmark(); }, isMarked: function (a) { return this.element .getDocument() .getById(this._.items[a]) .hasClass("cke_selected"); }, focus: function (a) { this._.focusIndex = -1; var b = this.element.getElementsByTag("a"), c, d = -1; if (a) for ( c = this.element .getDocument() .getById(this._.items[a]) .getFirst(); (a = b.getItem(++d)); ) { if (a.equals(c)) { this._.focusIndex = d; break; } } else this.element.focus(); c && setTimeout(function () { c.focus(); }, 0); }, }, }); }, }); CKEDITOR.plugins.add("richcombo", { requires: "floatpanel,listblock,button", beforeInit: function (e) { e.ui.addHandler(CKEDITOR.UI_RICHCOMBO, CKEDITOR.ui.richCombo.handler); }, }); (function () { var e = '\x3cspan id\x3d"{id}" class\x3d"cke_combo cke_combo__{name} {cls}" role\x3d"presentation"\x3e\x3cspan id\x3d"{id}_label" class\x3d"cke_combo_label"\x3e{label}\x3c/span\x3e\x3ca class\x3d"cke_combo_button" title\x3d"{title}" tabindex\x3d"-1"' + (CKEDITOR.env.gecko && !CKEDITOR.env.hc ? "" : " href\x3d\"javascript:void('{titleJs}')\"") + ' hidefocus\x3d"true" role\x3d"button" aria-labelledby\x3d"{id}_label" aria-haspopup\x3d"listbox"', h = ""; CKEDITOR.env.gecko && CKEDITOR.env.mac && (e += ' onkeypress\x3d"return false;"'); CKEDITOR.env.gecko && (e += ' onblur\x3d"this.style.cssText \x3d this.style.cssText;"'); CKEDITOR.env.ie && (h = 'return false;" onmouseup\x3d"CKEDITOR.tools.getMouseButton(event)\x3d\x3dCKEDITOR.MOUSE_BUTTON_LEFT\x26\x26'); var e = e + (' onkeydown\x3d"return CKEDITOR.tools.callFunction({keydownFn},event,this);" onfocus\x3d"return CKEDITOR.tools.callFunction({focusFn},event);" onclick\x3d"' + h + 'CKEDITOR.tools.callFunction({clickFn},this);return false;"\x3e\x3cspan id\x3d"{id}_text" class\x3d"cke_combo_text cke_combo_inlinelabel"\x3e{label}\x3c/span\x3e\x3cspan class\x3d"cke_combo_open"\x3e\x3cspan class\x3d"cke_combo_arrow"\x3e' + (CKEDITOR.env.hc ? "\x26#9660;" : CKEDITOR.env.air ? "\x26nbsp;" : "") + "\x3c/span\x3e\x3c/span\x3e\x3c/a\x3e\x3c/span\x3e"), m = CKEDITOR.addTemplate("combo", e); CKEDITOR.UI_RICHCOMBO = "richcombo"; CKEDITOR.ui.richCombo = CKEDITOR.tools.createClass({ $: function (a) { CKEDITOR.tools.extend(this, a, { canGroup: !1, title: a.label, modes: { wysiwyg: 1 }, editorFocus: 1, }); a = this.panel || {}; delete this.panel; this.id = CKEDITOR.tools.getNextNumber(); this.document = (a.parent && a.parent.getDocument()) || CKEDITOR.document; a.className = "cke_combopanel"; a.block = { multiSelect: a.multiSelect, attributes: a.attributes }; a.toolbarRelated = !0; this._ = { panelDefinition: a, items: {}, listeners: [] }; }, proto: { renderHtml: function (a) { var b = []; this.render(a, b); return b.join(""); }, render: function (a, b) { function c() { if (this.getState() != CKEDITOR.TRISTATE_ON) { var b = this.modes[a.mode] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED; a.readOnly && !this.readOnly && (b = CKEDITOR.TRISTATE_DISABLED); this.setState(b); this.setValue(""); b != CKEDITOR.TRISTATE_DISABLED && this.refresh && this.refresh(); } } var l = CKEDITOR.env, g, f, d = "cke_" + this.id, e = CKEDITOR.tools.addFunction(function (b) { f && (a.unlockSelection(1), (f = 0)); g.execute(b); }, this), k = this; g = { id: d, combo: this, focus: function () { CKEDITOR.document.getById(d).getChild(1).focus(); }, execute: function (b) { var c = k._; if (c.state != CKEDITOR.TRISTATE_DISABLED) if ((k.createPanel(a), c.on)) c.panel.hide(); else { k.commit(); var d = k.getValue(); d ? c.list.mark(d) : c.list.unmarkAll(); c.panel.showBlock(k.id, new CKEDITOR.dom.element(b), 4); } }, clickFn: e, }; this._.listeners.push(a.on("activeFilterChange", c, this)); this._.listeners.push(a.on("mode", c, this)); this._.listeners.push(a.on("selectionChange", c, this)); !this.readOnly && this._.listeners.push(a.on("readOnly", c, this)); var h = CKEDITOR.tools.addFunction(function (a, b) { a = new CKEDITOR.dom.event(a); var c = a.getKeystroke(); switch (c) { case 13: case 32: case 40: CKEDITOR.tools.callFunction(e, b); break; default: g.onkey(g, c); } a.preventDefault(); }), n = CKEDITOR.tools.addFunction(function () { g.onfocus && g.onfocus(); }); f = 0; g.keyDownFn = h; l = { id: d, name: this.name || this.command, label: this.label, title: this.title, cls: this.className || "", titleJs: l.gecko && !l.hc ? "" : (this.title || "").replace("'", ""), keydownFn: h, focusFn: n, clickFn: e, }; m.output(l, b); if (this.onRender) this.onRender(); return g; }, createPanel: function (a) { if (!this._.panel) { var b = this._.panelDefinition, c = this._.panelDefinition.block, e = b.parent || CKEDITOR.document.getBody(), g = "cke_combopanel__" + this.name, f = new CKEDITOR.ui.floatPanel(a, e, b), b = f.addListBlock(this.id, c), d = this; f.onShow = function () { this.element.addClass(g); d.setState(CKEDITOR.TRISTATE_ON); d._.on = 1; d.editorFocus && !a.focusManager.hasFocus && a.focus(); if (d.onOpen) d.onOpen(); }; f.onHide = function (b) { this.element.removeClass(g); d.setState( d.modes && d.modes[a.mode] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED ); d._.on = 0; if (!b && d.onClose) d.onClose(); }; f.onEscape = function () { f.hide(1); }; b.onClick = function (a, b) { d.onClick && d.onClick.call(d, a, b); f.hide(); }; this._.panel = f; this._.list = b; f.getBlock(this.id).onHide = function () { d._.on = 0; d.setState(CKEDITOR.TRISTATE_OFF); }; this.init && this.init(); } }, setValue: function (a, b) { this._.value = a; var c = this.document.getById("cke_" + this.id + "_text"); c && (a || b ? c.removeClass("cke_combo_inlinelabel") : ((b = this.label), c.addClass("cke_combo_inlinelabel")), c.setText("undefined" != typeof b ? b : a)); var c = "undefined" != typeof b ? b : a, e = this.label, c = c === e ? c : c + ", " + e; (e = this.document.getById("cke_" + this.id + "_label")) && e.setText(c); }, getValue: function () { return this._.value || ""; }, unmarkAll: function () { this._.list.unmarkAll(); }, mark: function (a) { this._.list.mark(a); }, hideItem: function (a) { this._.list.hideItem(a); }, hideGroup: function (a) { this._.list.hideGroup(a); }, showAll: function () { this._.list.showAll(); }, add: function (a, b, c, e) { this._.items[a] = c || a; this._.list.add(a, b, c, e); }, startGroup: function (a) { this._.list.startGroup(a); }, commit: function () { this._.committed || (this._.list.commit(), (this._.committed = 1), CKEDITOR.ui.fire("ready", this)); this._.committed = 1; }, setState: function (a) { if (this._.state != a) { var b = this.document.getById("cke_" + this.id), c = b.getElementsByTag("a").getItem(0); b.setState(a, "cke_combo"); a == CKEDITOR.TRISTATE_DISABLED ? b.setAttribute("aria-disabled", !0) : b.removeAttribute("aria-disabled"); c && c.setAttribute("aria-expanded", a == CKEDITOR.TRISTATE_ON); this._.state = a; } }, getState: function () { return this._.state; }, enable: function () { this._.state == CKEDITOR.TRISTATE_DISABLED && this.setState(this._.lastState); }, disable: function () { this._.state != CKEDITOR.TRISTATE_DISABLED && ((this._.lastState = this._.state), this.setState(CKEDITOR.TRISTATE_DISABLED)); }, destroy: function () { CKEDITOR.tools.array.forEach(this._.listeners, function (a) { a.removeListener(); }); this._.listeners = []; }, select: function (a) { if (!CKEDITOR.tools.isEmpty(this._.items)) for (var b in this._.items) if (a({ value: b, text: this._.items[b] })) { this.setValue(b); break; } }, }, statics: { handler: { create: function (a) { return new CKEDITOR.ui.richCombo(a); }, }, }, }); CKEDITOR.ui.prototype.addRichCombo = function (a, b) { this.add(a, CKEDITOR.UI_RICHCOMBO, b); }; })(); (function () { function k(a, b) { var c = a.config, e = b.lang, d = new CKEDITOR.style(b.styleDefinition), f = new l({ entries: b.entries, styleVariable: b.styleVariable, styleDefinition: b.styleDefinition, }), g; a.addCommand(b.commandName, { exec: function (a, b) { var c = b.newStyle, d = b.oldStyle, e = a.getSelection().getRanges()[0], f = void 0 === c; if (d || c) d && e.collapsed && m({ editor: a, range: e, style: d }), f ? a.removeStyle(d) : (d && !n(d, c) && a.removeStyle(d), a.applyStyle(c)); }, refresh: function (a, b) { d.checkApplicable(b, a, a.activeFilter) || this.setState(CKEDITOR.TRISTATE_DISABLED); }, }); g = a.getCommand(b.commandName); a.ui.addRichCombo(b.comboName, { label: e.label, title: e.panelTitle, command: b.commandName, toolbar: "styles," + b.order, defaultValue: "cke-default", allowedContent: d, requiredContent: d, contentTransformations: "span" === b.styleDefinition.element ? [ [ { element: "font", check: "span", left: function (a) { return ( !!a.attributes.size || !!a.attributes.align || !!a.attributes.face ); }, right: function (a) { var b = " x-small small medium large x-large xx-large 48px".split( " " ); a.name = "span"; a.attributes.size && ((a.styles["font-size"] = b[a.attributes.size]), delete a.attributes.size); a.attributes.align && ((a.styles["text-align"] = a.attributes.align), delete a.attributes.align); a.attributes.face && ((a.styles["font-family"] = a.attributes.face), delete a.attributes.face); }, }, ], ] : null, panel: { css: [CKEDITOR.skin.getPath("editor")].concat(c.contentsCss), multiSelect: !1, attributes: { "aria-label": e.panelTitle }, }, init: function () { var b = "(" + a.lang.common.optionDefault + ")"; this.startGroup(e.panelTitle); this.add(this.defaultValue, b, b); f.addToCombo(this); }, onClick: function (c) { var d = this.getValue(); a.focus(); a.fire("saveSnapshot"); a.execCommand(b.commandName, { newStyle: f.getStyle(c), oldStyle: f.getStyle(d), }); a.fire("saveSnapshot"); }, onRender: function () { a.on( "selectionChange", function (c) { var d = this.getValue(); (c = f.getMatchingValue(a, c.data.path)) ? c != d && this.setValue(c) : this.setValue("", b.defaultLabel); }, this ); g.on( "state", function () { this.setState(g.state); }, this ); }, refresh: function () { this.setState(g.state); }, }); } function n(a, b) { if (!(a instanceof CKEDITOR.style && b instanceof CKEDITOR.style)) return !1; var c = (function (a, b) { var c = a.getDefinition().attributes, e = b.getDefinition().attributes; return CKEDITOR.tools.objectCompare(c, e); })(a, b), e = (function (a, b) { return ( CKEDITOR.style.getStyleText(a.getDefinition()) === CKEDITOR.style.getStyleText(b.getDefinition()) ); })(a, b); return c && e; } function m(a) { var b = a.editor, c = a.range, e = a.style, d, f, g; d = b.elementPath(); if ( (a = d.contains(function (a) { return e.checkElementRemovable(a); })) ) { f = c.checkBoundaryOfElement(a, CKEDITOR.START); g = c.checkBoundaryOfElement(a, CKEDITOR.END); if (f && g) { for (f = c.createBookmark(); (d = a.getFirst()); ) d.insertBefore(a); a.remove(); c.moveToBookmark(f); } else f || g ? c.moveToPosition( a, f ? CKEDITOR.POSITION_BEFORE_START : CKEDITOR.POSITION_AFTER_END ) : (c.splitElement(a), c.moveToPosition(a, CKEDITOR.POSITION_AFTER_END)), h(c, d.elements.slice(), a); b.getSelection().selectRanges([c]); } } function h(a, b, c) { var e = b.pop(); if (e) { if (c) return h(a, b, e.equals(c) ? null : c); c = e.clone(); a.insertNode(c); a.moveToPosition(c, CKEDITOR.POSITION_AFTER_START); h(a, b); } } var l = CKEDITOR.tools.createClass({ $: function (a) { var b = a.entries.split(";"); this._.data = {}; this._.names = []; for (var c = 0; c < b.length; c++) { var e = b[c], d, f; e ? ((e = e.split("/")), (d = e[0]), (e = e[1]), (f = {}), (f[a.styleVariable] = e || d), (this._.data[d] = new CKEDITOR.style(a.styleDefinition, f)), (this._.data[d]._.definition.name = d), this._.names.push(d)) : (b.splice(c, 1), c--); } }, proto: { getStyle: function (a) { return this._.data[a]; }, addToCombo: function (a) { for (var b = 0; b < this._.names.length; b++) { var c = this._.names[b]; a.add(c, this.getStyle(c).buildPreview(), c); } }, getMatchingValue: function (a, b) { for (var c = b.elements, e = 0, d; e < c.length; e++) if (((d = c[e]), (d = this._.findMatchingStyleName(a, d)))) return d; return null; }, }, _: { findMatchingStyleName: function (a, b) { return CKEDITOR.tools.array.find( this._.names, function (c) { return this.getStyle(c).checkElementMatch(b, !0, a); }, this ); }, }, }); CKEDITOR.plugins.add("font", { requires: "richcombo", init: function (a) { var b = a.config; k(a, { comboName: "Font", commandName: "font", styleVariable: "family", lang: a.lang.font, entries: b.font_names, defaultLabel: b.font_defaultLabel, styleDefinition: b.font_style, order: 30, }); k(a, { comboName: "FontSize", commandName: "fontSize", styleVariable: "size", lang: a.lang.font.fontSize, entries: b.fontSize_sizes, defaultLabel: b.fontSize_defaultLabel, styleDefinition: b.fontSize_style, order: 40, }); }, }); })(); CKEDITOR.config.font_names = "Arial/Arial, Helvetica, sans-serif;Comic Sans MS/Comic Sans MS, cursive;Courier New/Courier New, Courier, monospace;Georgia/Georgia, serif;Lucida Sans Unicode/Lucida Sans Unicode, Lucida Grande, sans-serif;Tahoma/Tahoma, Geneva, sans-serif;Times New Roman/Times New Roman, Times, serif;Trebuchet MS/Trebuchet MS, Helvetica, sans-serif;Verdana/Verdana, Geneva, sans-serif"; CKEDITOR.config.font_defaultLabel = ""; CKEDITOR.config.font_style = { element: "span", styles: { "font-family": "#(family)" }, overrides: [{ element: "font", attributes: { face: null } }], }; CKEDITOR.config.fontSize_sizes = "8/8px;9/9px;10/10px;11/11px;12/12px;14/14px;16/16px;18/18px;20/20px;22/22px;24/24px;26/26px;28/28px;36/36px;48/48px;72/72px"; CKEDITOR.config.fontSize_defaultLabel = ""; CKEDITOR.config.fontSize_style = { element: "span", styles: { "font-size": "#(size)" }, overrides: [{ element: "font", attributes: { size: null } }], }; (function () { function f(b, a) { var c = k.exec(b), d = k.exec(a); if (c) { if (!c[2] && "px" == d[2]) return d[1]; if ("px" == c[2] && !d[2]) return d[1] + "px"; } return a; } function m(b) { return { elements: { $: function (a) { var c = a.attributes, c = c && c["data-cke-realelement"], d = l(b, decodeURIComponent(c)); if ( (c = (c = c && new CKEDITOR.htmlParser.fragment.fromHtml(d)) && c.children[0]) && a.attributes["data-cke-resizable"] ) { var e = new h(a).rules; a = c.attributes; d = e.width; e = e.height; d && (a.width = f(a.width, d)); e && (a.height = f(a.height, e)); } return c; }, }, }; } function l(b, a) { var c = [], d = /^cke:/i, e = new CKEDITOR.htmlParser.filter({ elements: { "^": function (a) { d.test(a.name) && ((a.name = a.name.replace(d, "")), c.push(a)); }, iframe: function (a) { a.children = []; }, }, }), n = b.activeFilter, f = new CKEDITOR.htmlParser.basicWriter(), g = CKEDITOR.htmlParser.fragment.fromHtml(a); e.applyTo(g); n.applyTo(g); CKEDITOR.tools.array.forEach(c, function (a) { a.name = "cke:" + a.name; }); g.writeHtml(f); return f.getHtml(); } var h = CKEDITOR.htmlParser.cssStyle, g = CKEDITOR.tools.cssLength, k = /^((?:\d*(?:\.\d+))|(?:\d+))(.*)?$/i; CKEDITOR.plugins.add("fakeobjects", { init: function (b) { b.filter.allow( "img[!data-cke-realelement,src,alt,title](*){*}", "fakeobjects" ); }, afterInit: function (b) { var a = b.dataProcessor; (a = a && a.htmlFilter) && a.addRules(m(b), { applyToAll: !0 }); }, }); CKEDITOR.editor.prototype.createFakeElement = function (b, a, c, d) { var e = this.lang.fakeobjects, e = e[c] || e.unknown; a = { class: a, "data-cke-realelement": encodeURIComponent(b.getOuterHtml()), "data-cke-real-node-type": b.type, alt: e, title: e, align: b.getAttribute("align") || "", }; CKEDITOR.env.hc || (a.src = CKEDITOR.tools.transparentImageData); c && (a["data-cke-real-element-type"] = c); d && ((a["data-cke-resizable"] = d), (c = new h()), (d = b.getAttribute("width")), (b = b.getAttribute("height")), d && (c.rules.width = g(d)), b && (c.rules.height = g(b)), c.populate(a)); return this.document.createElement("img", { attributes: a }); }; CKEDITOR.editor.prototype.createFakeParserElement = function (b, a, c, d) { var e = this.lang.fakeobjects, e = e[c] || e.unknown, f; f = new CKEDITOR.htmlParser.basicWriter(); b.writeHtml(f); f = f.getHtml(); a = { class: a, "data-cke-realelement": encodeURIComponent(f), "data-cke-real-node-type": b.type, alt: e, title: e, align: b.attributes.align || "", }; CKEDITOR.env.hc || (a.src = CKEDITOR.tools.transparentImageData); c && (a["data-cke-real-element-type"] = c); d && ((a["data-cke-resizable"] = d), (d = b.attributes), (b = new h()), (c = d.width), (d = d.height), void 0 !== c && (b.rules.width = g(c)), void 0 !== d && (b.rules.height = g(d)), b.populate(a)); return new CKEDITOR.htmlParser.element("img", a); }; CKEDITOR.editor.prototype.restoreRealElement = function (b) { if (b.data("cke-real-node-type") != CKEDITOR.NODE_ELEMENT) return null; var a = decodeURIComponent(b.data("cke-realelement")), a = l(this, a), a = CKEDITOR.dom.element.createFromHtml(a, this.document); if (b.data("cke-resizable")) { var c = b.getStyle("width"); b = b.getStyle("height"); c && a.setAttribute("width", f(a.getAttribute("width"), c)); b && a.setAttribute("height", f(a.getAttribute("height"), b)); } return a; }; })(); CKEDITOR.plugins.add("forms", { requires: "dialog,fakeobjects", onLoad: function () { CKEDITOR.addCss( ".cke_editable form{border: 1px dotted #FF0000;padding: 2px;}\n" ); CKEDITOR.addCss( "img.cke_hidden{background-image: url(" + CKEDITOR.getUrl(this.path + "images/hiddenfield.gif") + ");background-position: center center;background-repeat: no-repeat;border: 1px solid #a9a9a9;width: 16px !important;height: 16px !important;}" ); CKEDITOR.style.unstylableElements.push("select", "option"); }, init: function (b) { var a = b.lang, g = 0, h = { email: 1, password: 1, search: 1, tel: 1, text: 1, url: 1 }, l = { checkbox: "input[type,name,checked,required]", radio: "input[type,name,checked,required]", textfield: "input[type,name,value,size,maxlength,required]", textarea: "textarea[cols,rows,name,required]", select: "select[name,size,multiple,required]; option[value,selected]", button: "input[type,name,value]", form: "form[action,name,id,enctype,target,method]", hiddenfield: "input[type,name,value]", imagebutton: "input[type,alt,src]{width,height,border,border-width,border-style,margin,float}", }, m = { checkbox: "input", radio: "input", textfield: "input", textarea: "textarea", select: "select", button: "input", form: "form", hiddenfield: "input", imagebutton: "input", }, d = function (f, c, d) { var h = { allowedContent: l[c], requiredContent: m[c] }; "form" == c && (h.context = "form"); b.addCommand(c, new CKEDITOR.dialogCommand(c, h)); b.ui.addButton && b.ui.addButton(f, { label: a.common[f.charAt(0).toLowerCase() + f.slice(1)], command: c, toolbar: "forms," + (g += 10), }); CKEDITOR.dialog.add(c, d); }, e = this.path + "dialogs/"; !b.blockless && d("Form", "form", e + "form.js"); d("Checkbox", "checkbox", e + "checkbox.js"); d("Radio", "radio", e + "radio.js"); d("TextField", "textfield", e + "textfield.js"); d("Textarea", "textarea", e + "textarea.js"); d("Select", "select", e + "select.js"); d("Button", "button", e + "button.js"); var k = b.plugins.image; k && !b.plugins.image2 && d( "ImageButton", "imagebutton", CKEDITOR.plugins.getPath("image") + "dialogs/image.js" ); d("HiddenField", "hiddenfield", e + "hiddenfield.js"); b.addMenuItems && ((d = { checkbox: { label: a.forms.checkboxAndRadio.checkboxTitle, command: "checkbox", group: "checkbox", }, radio: { label: a.forms.checkboxAndRadio.radioTitle, command: "radio", group: "radio", }, textfield: { label: a.forms.textfield.title, command: "textfield", group: "textfield", }, hiddenfield: { label: a.forms.hidden.title, command: "hiddenfield", group: "hiddenfield", }, button: { label: a.forms.button.title, command: "button", group: "button", }, select: { label: a.forms.select.title, command: "select", group: "select", }, textarea: { label: a.forms.textarea.title, command: "textarea", group: "textarea", }, }), k && (d.imagebutton = { label: a.image.titleButton, command: "imagebutton", group: "imagebutton", }), !b.blockless && (d.form = { label: a.forms.form.menu, command: "form", group: "form", }), b.addMenuItems(d)); b.contextMenu && (!b.blockless && b.contextMenu.addListener(function (f, c, b) { if ((f = b.contains("form", 1)) && !f.isReadOnly()) return { form: CKEDITOR.TRISTATE_OFF }; }), b.contextMenu.addListener(function (b) { if (b && !b.isReadOnly()) { var c = b.getName(); if ("select" == c) return { select: CKEDITOR.TRISTATE_OFF }; if ("textarea" == c) return { textarea: CKEDITOR.TRISTATE_OFF }; if ("input" == c) { var a = b.getAttribute("type") || "text"; switch (a) { case "button": case "submit": case "reset": return { button: CKEDITOR.TRISTATE_OFF }; case "checkbox": return { checkbox: CKEDITOR.TRISTATE_OFF }; case "radio": return { radio: CKEDITOR.TRISTATE_OFF }; case "image": return k ? { imagebutton: CKEDITOR.TRISTATE_OFF } : null; } if (h[a]) return { textfield: CKEDITOR.TRISTATE_OFF }; } if ("img" == c && "hiddenfield" == b.data("cke-real-element-type")) return { hiddenfield: CKEDITOR.TRISTATE_OFF }; } })); b.on("doubleclick", function (a) { var c = a.data.element; if (!b.blockless && c.is("form")) a.data.dialog = "form"; else if (c.is("select")) a.data.dialog = "select"; else if (c.is("textarea")) a.data.dialog = "textarea"; else if ( c.is("img") && "hiddenfield" == c.data("cke-real-element-type") ) a.data.dialog = "hiddenfield"; else if (c.is("input")) { c = c.getAttribute("type") || "text"; switch (c) { case "button": case "submit": case "reset": a.data.dialog = "button"; break; case "checkbox": a.data.dialog = "checkbox"; break; case "radio": a.data.dialog = "radio"; break; case "image": a.data.dialog = "imagebutton"; } h[c] && (a.data.dialog = "textfield"); } }); }, afterInit: function (b) { var a = b.dataProcessor, g = a && a.htmlFilter, a = a && a.dataFilter; CKEDITOR.env.ie && g && g.addRules( { elements: { input: function (a) { a = a.attributes; var b = a.type; b || (a.type = "text"); ("checkbox" != b && "radio" != b) || "on" != a.value || delete a.value; }, }, }, { applyToAll: !0 } ); a && a.addRules( { elements: { input: function (a) { if ("hidden" == a.attributes.type) return b.createFakeParserElement( a, "cke_hidden", "hiddenfield" ); }, }, }, { applyToAll: !0 } ); }, }); CKEDITOR.plugins.forms = { _setupRequiredAttribute: function (b) { this.setValue(b.hasAttribute("required")); }, }; CKEDITOR.plugins.add("format", { requires: "richcombo", init: function (a) { if (!a.blockless) { for ( var f = a.config, c = a.lang.format, l = f.format_tags.split(";"), d = {}, m = 0, n = [], g = 0; g < l.length; g++ ) { var h = l[g], k = new CKEDITOR.style(f["format_" + h]); if (!a.filter.customConfig || a.filter.check(k)) m++, (d[h] = k), (d[h]._.enterMode = a.config.enterMode), n.push(k); } 0 !== m && a.ui.addRichCombo("Format", { label: c.label, title: c.panelTitle, toolbar: "styles,20", allowedContent: n, panel: { css: [CKEDITOR.skin.getPath("editor")].concat(f.contentsCss), multiSelect: !1, attributes: { "aria-label": c.panelTitle }, }, init: function () { this.startGroup(c.panelTitle); for (var a in d) { var e = c["tag_" + a]; this.add(a, d[a].buildPreview(e), e); } }, onClick: function (b) { a.focus(); a.fire("saveSnapshot"); b = d[b]; var e = a.elementPath(); a.fire("stylesRemove", { type: CKEDITOR.STYLE_BLOCK }); b.checkActive(e, a) || a.applyStyle(b); setTimeout(function () { a.fire("saveSnapshot"); }, 0); }, onRender: function () { a.on( "selectionChange", function (b) { var e = this.getValue(); b = b.data.path; this.refresh(); for (var c in d) if (d[c].checkActive(b, a)) { c != e && this.setValue(c, a.lang.format["tag_" + c]); return; } this.setValue(""); }, this ); }, onOpen: function () { this.showAll(); for (var b in d) a.activeFilter.check(d[b]) || this.hideItem(b); }, refresh: function () { var b = a.elementPath(); if (b) { if (b.isContextFor("p")) for (var c in d) if (a.activeFilter.check(d[c])) return; this.setState(CKEDITOR.TRISTATE_DISABLED); } }, }); } }, }); CKEDITOR.config.format_tags = "p;h1;h2;h3;h4;h5;h6;pre;address;div"; CKEDITOR.config.format_p = { element: "p" }; CKEDITOR.config.format_div = { element: "div" }; CKEDITOR.config.format_pre = { element: "pre" }; CKEDITOR.config.format_address = { element: "address" }; CKEDITOR.config.format_h1 = { element: "h1" }; CKEDITOR.config.format_h2 = { element: "h2" }; CKEDITOR.config.format_h3 = { element: "h3" }; CKEDITOR.config.format_h4 = { element: "h4" }; CKEDITOR.config.format_h5 = { element: "h5" }; CKEDITOR.config.format_h6 = { element: "h6" }; (function () { var b = { canUndo: !1, exec: function (a) { var b = a.document.createElement("hr"); a.insertElement(b); }, allowedContent: "hr", requiredContent: "hr", }; CKEDITOR.plugins.add("horizontalrule", { init: function (a) { a.blockless || (a.addCommand("horizontalrule", b), a.ui.addButton && a.ui.addButton("HorizontalRule", { label: a.lang.horizontalrule.toolbar, command: "horizontalrule", toolbar: "insert,40", })); }, }); })(); CKEDITOR.plugins.add("htmlwriter", { init: function (b) { var a = new CKEDITOR.htmlWriter(); a.forceSimpleAmpersand = b.config.forceSimpleAmpersand; a.indentationChars = "string" === typeof b.config.dataIndentationChars ? b.config.dataIndentationChars : "\t"; b.dataProcessor.writer = a; }, }); CKEDITOR.htmlWriter = CKEDITOR.tools.createClass({ base: CKEDITOR.htmlParser.basicWriter, $: function () { this.base(); this.indentationChars = "\t"; this.selfClosingEnd = " /\x3e"; this.lineBreakChars = "\n"; this.sortAttributes = 1; this._.indent = 0; this._.indentation = ""; this._.inPre = 0; this._.rules = {}; var b = CKEDITOR.dtd, a; for (a in CKEDITOR.tools.extend( {}, b.$nonBodyContent, b.$block, b.$listItem, b.$tableContent )) this.setRules(a, { indent: !b[a]["#"], breakBeforeOpen: 1, breakBeforeClose: !b[a]["#"], breakAfterClose: 1, needsSpace: a in b.$block && !(a in { li: 1, dt: 1, dd: 1 }), }); this.setRules("br", { breakAfterOpen: 1 }); this.setRules("title", { indent: 0, breakAfterOpen: 0 }); this.setRules("style", { indent: 0, breakBeforeClose: 1 }); this.setRules("pre", { breakAfterOpen: 1, indent: 0 }); }, proto: { openTag: function (b) { var a = this._.rules[b]; this._.afterCloser && a && a.needsSpace && this._.needsSpace && this._.output.push("\n"); this._.indent ? this.indentation() : a && a.breakBeforeOpen && (this.lineBreak(), this.indentation()); this._.output.push("\x3c", b); this._.afterCloser = 0; }, openTagClose: function (b, a) { var c = this._.rules[b]; a ? (this._.output.push(this.selfClosingEnd), c && c.breakAfterClose && (this._.needsSpace = c.needsSpace)) : (this._.output.push("\x3e"), c && c.indent && (this._.indentation += this.indentationChars)); c && c.breakAfterOpen && this.lineBreak(); "pre" == b && (this._.inPre = 1); }, attribute: function (b, a) { "string" == typeof a && ((a = CKEDITOR.tools.htmlEncodeAttr(a)), this.forceSimpleAmpersand && (a = a.replace(/&/g, "\x26"))); this._.output.push(" ", b, '\x3d"', a, '"'); }, closeTag: function (b) { var a = this._.rules[b]; a && a.indent && (this._.indentation = this._.indentation.substr( this.indentationChars.length )); this._.indent ? this.indentation() : a && a.breakBeforeClose && (this.lineBreak(), this.indentation()); this._.output.push("\x3c/", b, "\x3e"); "pre" == b && (this._.inPre = 0); a && a.breakAfterClose && (this.lineBreak(), (this._.needsSpace = a.needsSpace)); this._.afterCloser = 1; }, text: function (b) { this._.indent && (this.indentation(), !this._.inPre && (b = CKEDITOR.tools.ltrim(b))); this._.output.push(b); }, comment: function (b) { this._.indent && this.indentation(); this._.output.push("\x3c!--", b, "--\x3e"); }, lineBreak: function () { !this._.inPre && 0 < this._.output.length && this._.output.push(this.lineBreakChars); this._.indent = 1; }, indentation: function () { !this._.inPre && this._.indentation && this._.output.push(this._.indentation); this._.indent = 0; }, reset: function () { this._.output = []; this._.indent = 0; this._.indentation = ""; this._.afterCloser = 0; this._.inPre = 0; this._.needsSpace = 0; }, setRules: function (b, a) { var c = this._.rules[b]; c ? CKEDITOR.tools.extend(c, a, !0) : (this._.rules[b] = a); }, }, }); (function () { CKEDITOR.plugins.add("iframe", { requires: "dialog,fakeobjects", onLoad: function () { CKEDITOR.addCss( "img.cke_iframe{background-image: url(" + CKEDITOR.getUrl(this.path + "images/placeholder.png") + ");background-position: center center;background-repeat: no-repeat;border: 1px solid #a9a9a9;width: 80px;height: 80px;}" ); }, init: function (a) { var c = a.lang.iframe, b = "iframe[align,longdesc,tabindex,frameborder,height,name,scrolling,src,title,width,sandbox]"; a.plugins.dialogadvtab && (b += ";iframe" + a.plugins.dialogadvtab.allowedContent({ id: 1, classes: 1, styles: 1, })); CKEDITOR.dialog.add("iframe", this.path + "dialogs/iframe.js"); a.addCommand( "iframe", new CKEDITOR.dialogCommand("iframe", { allowedContent: b, requiredContent: "iframe", }) ); a.ui.addButton && a.ui.addButton("Iframe", { label: c.toolbar, command: "iframe", toolbar: "insert,80", }); a.on("doubleclick", function (a) { var b = a.data.element; b.is("img") && "iframe" == b.data("cke-real-element-type") && (a.data.dialog = "iframe"); }); a.addMenuItems && a.addMenuItems({ iframe: { label: c.title, command: "iframe", group: "image" }, }); a.contextMenu && a.contextMenu.addListener(function (a) { if (a && a.is("img") && "iframe" == a.data("cke-real-element-type")) return { iframe: CKEDITOR.TRISTATE_OFF }; }); }, afterInit: function (a) { var c = a.dataProcessor; (c = c && c.dataFilter) && c.addRules({ elements: { iframe: function (b) { var c = a.plugins.iframe._.getIframeAttributes(a, b); void 0 !== c && (b.attributes = CKEDITOR.tools.object.merge(b.attributes, c)); return a.createFakeParserElement(b, "cke_iframe", "iframe", !0); }, }, }); }, _: { getIframeAttributes: function (a, c) { var b = a.config.iframe_attributes; if ("function" === typeof b) return b(c); if ("object" === typeof b) return b; }, }, }); })(); CKEDITOR.config.iframe_attributes = { sandbox: "" }; (function () { function v(a) { function e(a) { var b = !1; h.attachListener( h, "keydown", function () { var d = c.getBody().getElementsByTag(a); if (!b) { for (var e = 0; e < d.count(); e++) d.getItem(e).setCustomData("retain", !0); b = !0; } }, null, null, 1 ); h.attachListener(h, "keyup", function () { var d = c.getElementsByTag(a); b && (1 == d.count() && !d.getItem(0).getCustomData("retain") && CKEDITOR.tools.isEmpty(d.getItem(0).getAttributes()) && d.getItem(0).remove(1), (b = !1)); }); } var b = this.editor; if (b && !b.isDetached()) { var c = a.document, f = c.body, d = c.getElementById("cke_actscrpt"); d && d.parentNode.removeChild(d); (d = c.getElementById("cke_shimscrpt")) && d.parentNode.removeChild(d); (d = c.getElementById("cke_basetagscrpt")) && d.parentNode.removeChild(d); f.contentEditable = !0; CKEDITOR.env.ie && ((f.hideFocus = !0), (f.disabled = !0), f.removeAttribute("disabled")); delete this._.isLoadingData; this.$ = f; c = new CKEDITOR.dom.document(c); this.setup(); this.fixInitialSelection(); var h = this; CKEDITOR.env.ie && !CKEDITOR.env.edge && c.getDocumentElement().addClass(c.$.compatMode); CKEDITOR.env.ie && !CKEDITOR.env.edge && b.enterMode != CKEDITOR.ENTER_P ? e("p") : CKEDITOR.env.edge && 15 > CKEDITOR.env.version && b.enterMode != CKEDITOR.ENTER_DIV && e("div"); if ( CKEDITOR.env.webkit || (CKEDITOR.env.ie && 10 < CKEDITOR.env.version) ) c.getDocumentElement().on("mousedown", function (a) { a.data.getTarget().is("html") && setTimeout(function () { b.editable().focus(); }); }); w(b); try { b.document.$.execCommand("2D-position", !1, !0); } catch (g) {} (CKEDITOR.env.gecko || (CKEDITOR.env.ie && "CSS1Compat" == b.document.$.compatMode)) && this.attachListener(this, "keydown", function (a) { var d = a.data.getKeystroke(); if (33 == d || 34 == d) if (CKEDITOR.env.ie) setTimeout(function () { b.getSelection().scrollIntoView(); }, 0); else if (b.window.$.innerHeight > this.$.offsetHeight) { var c = b.createRange(); c[33 == d ? "moveToElementEditStart" : "moveToElementEditEnd"]( this ); c.select(); a.data.preventDefault(); } }); CKEDITOR.env.ie && this.attachListener(c, "blur", function () { try { c.$.selection.empty(); } catch (a) {} }); CKEDITOR.env.iOS && this.attachListener(c, "touchend", function () { a.focus(); }); f = b.document.getElementsByTag("title").getItem(0); f.data("cke-title", f.getText()); CKEDITOR.env.ie && (b.document.$.title = this._.docTitle); CKEDITOR.tools.setTimeout( function () { "unloaded" == this.status && (this.status = "ready"); b.fire("contentDom"); this._.isPendingFocus && (b.focus(), (this._.isPendingFocus = !1)); setTimeout(function () { b.fire("dataReady"); }, 0); }, 0, this ); } } function w(a) { function e() { var d; a.editable().attachListener(a, "selectionChange", function () { var c = a.getSelection().getSelectedElement(); c && (d && (d.detachEvent("onresizestart", b), (d = null)), c.$.attachEvent("onresizestart", b), (d = c.$)); }); } function b(a) { a.returnValue = !1; } if (CKEDITOR.env.gecko) try { var c = a.document.$; c.execCommand( "enableObjectResizing", !1, !a.config.disableObjectResizing ); c.execCommand( "enableInlineTableEditing", !1, !a.config.disableNativeTableHandles ); } catch (f) {} else CKEDITOR.env.ie && 11 > CKEDITOR.env.version && a.config.disableObjectResizing && e(); } function x() { var a = []; if (8 <= CKEDITOR.document.$.documentMode) { a.push( "html.CSS1Compat [contenteditable\x3dfalse]{min-height:0 !important}" ); var e = [], b; for (b in CKEDITOR.dtd.$removeEmpty) e.push("html.CSS1Compat " + b + "[contenteditable\x3dfalse]"); a.push(e.join(",") + "{display:inline-block}"); } else CKEDITOR.env.gecko && (a.push("html{height:100% !important}"), a.push( "img:-moz-broken{-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}" )); a.push("html{cursor:text;*cursor:auto}"); a.push("img,input,textarea{cursor:default}"); return a.join("\n"); } var l; CKEDITOR.plugins.add("wysiwygarea", { init: function (a) { a.config.fullPage && a.addFeature({ allowedContent: "html head title; style [media,type]; body (*)[id]; meta link [*]", requiredContent: "body", }); a.addMode("wysiwyg", function (e) { function b(b) { b && b.removeListener(); if ( !a.isDestroyed() && !a.isDetached() && (a.editable(new l(a, g.getFrameDocument().getBody())), a.setData(a.getData(1), e), t) ) { if (u) a.on("mode", c, { iframe: g, editor: a, callback: e }); a.on("mode", function () { a.status = "ready"; }); f(); } } function c(a) { a && a.removeListener(); g.on("load", function () { p && ((p = !1), d()); }); } function f() { m = new MutationObserver(function (b) { for (var c = 0; c < b.length; c++) { var e = b[c]; if ("childList" === e.type && 0 !== e.addedNodes.length) for (var f = 0; f < e.addedNodes.length; f++) { var g = e.addedNodes[f]; g.contains && g.contains(a.container.$) && (u ? (p = !0) : d()); } } }); m.observe(a.config.observableParent, { childList: !0, subtree: !0, }); } function d() { var b = a.getData(!1), c; a.editable().preserveIframe = !0; a.editable(null); c = new l(a, g.getFrameDocument().getBody()); a.editable(c); a.status = "recreating"; a.setData(b, { callback: e, internal: !1, noSnapshot: !1 }); } var h = "document.open();" + (CKEDITOR.env.ie ? "(" + CKEDITOR.tools.fixDomain + ")();" : "") + "document.close();", h = CKEDITOR.env.air ? "javascript:void(0)" : CKEDITOR.env.ie && !CKEDITOR.env.edge ? "javascript:void(function(){" + encodeURIComponent(h) + "}())" : "", g = CKEDITOR.dom.element.createFromHtml( '\x3ciframe src\x3d"' + h + '" frameBorder\x3d"0"\x3e\x3c/iframe\x3e' ); g.setStyles({ width: "100%", height: "100%" }); g.addClass("cke_wysiwyg_frame").addClass("cke_reset"); h = a.ui.space("contents"); h.append(g); var r = (CKEDITOR.env.ie && !CKEDITOR.env.edge) || CKEDITOR.env.gecko; if (r) g.on("load", b); var k = a.title, n = a.fire("ariaEditorHelpLabel", {}).label, p = !1, u = CKEDITOR.env.ie && 11 === CKEDITOR.env.version, t = !!window.MutationObserver, m; k && (CKEDITOR.env.ie && n && (k += ", " + n), g.setAttribute("title", k)); if (n) { var k = CKEDITOR.tools.getNextId(), q = CKEDITOR.dom.element.createFromHtml( '\x3cspan id\x3d"' + k + '" class\x3d"cke_voice_label"\x3e' + n + "\x3c/span\x3e" ); h.append(q, 1); g.setAttribute("aria-describedby", k); } a.on("beforeModeUnload", function (a) { a.removeListener(); q && q.remove(); t && m.disconnect(); }); a.on("destroy", function () { m && m.disconnect(); }); g.setAttributes({ tabIndex: a.tabIndex, allowTransparency: "true" }); !r && b(); a.fire("ariaWidget", g); }); }, }); CKEDITOR.editor.prototype.addContentsCss = function (a) { var e = this.config, b = e.contentsCss; CKEDITOR.tools.isArray(b) || (e.contentsCss = b ? [b] : []); e.contentsCss.push(a); }; l = CKEDITOR.tools.createClass({ $: function () { this.base.apply(this, arguments); this._.frameLoadedHandler = CKEDITOR.tools.addFunction(function (a) { CKEDITOR.tools.setTimeout(v, 0, this, a); }, this); this._.docTitle = this.getWindow().getFrame().getAttribute("title") || " "; }, base: CKEDITOR.editable, proto: { preserveIframe: !1, setData: function (a, e) { var b = this.editor; if (e) this.setHtml(a), this.fixInitialSelection(), b.fire("dataReady"); else { this._.isLoadingData = !0; b._.dataStore = { id: 1 }; var c = b.config, f = c.fullPage, d = c.docType, h = CKEDITOR.tools .buildStyleHtml(x()) .replace(/