/* Tiny PowerPaste plugin
*
* Copyright 2010-2019 Tiny Technologies LLC. All rights reserved.
*
* Version: 4.0.1-317
*/
!function (y) { "use strict"; var n = function (e) { return parseInt(e, 10) }, r = function (e, t, n) { return { major: e, minor: t, patch: n } }, o = function (e) { var t = /([0-9]+)\.([0-9]+)\.([0-9]+)(?:(\-.+)?)/.exec(e); return t ? r(n(t[1]), n(t[2]), n(t[3])) : r(0, 0, 0) }, i = function (e, t) { var n = e - t; return 0 === n ? 0 : 0 < n ? 1 : -1 }, c = function (e, t) { return -1 === function (e, t) { var n = i(e.major, t.major); if (0 !== n) return n; var r = i(e.minor, t.minor); if (0 !== r) return r; var o = i(e.patch, t.patch); return 0 !== o ? o : 0 }((n = e) ? o([(r = n).majorVersion, r.minorVersion].join(".").split(".").slice(0, 3).join(".")) : null, o(t)); var n, r }, e = function (r, o) { return function () { for (var e = [], t = 0; t < arguments.length; t++)e[t] = arguments[t]; var n = r.console; n && o in n && n[o].apply(n, arguments) } }, t = { log: e(window, "log"), error: e(window, "error"), warn: e(window, "warm") }, s = { register: function (e, t) { e.addCommand("mceTogglePlainTextPaste", t.toggle) } }, l = function (e) { return e.getParam("powerpaste_block_drop", !1, "boolean") }, a = function (e) { return void 0 !== e.settings.images_upload_url }, f = function (e) { return e.getParam("paste_as_text", !1) }, u = function (e, t) { e.dom.bind(t, "drop dragstart dragend dragover dragenter dragleave dragdrop draggesture", function (e) { e.preventDefault(), e.stopImmediatePropagation() }) }, d = function (t) { t.on("init", function (e) { u(t, t.getBody()), t.inline || u(t, t.getDoc()) }) }, C = function () { for (var e = [], t = 0; t < arguments.length; t++)e[t] = arguments[t] }, g = function (n, r) { return function () { for (var e = [], t = 0; t < arguments.length; t++)e[t] = arguments[t]; return n(r.apply(null, e)) } }, v = function (e) { return function () { return e } }, m = function (e) { return e }; function N(r) { for (var o = [], e = 1; e < arguments.length; e++)o[e - 1] = arguments[e]; return function () { for (var e = [], t = 0; t < arguments.length; t++)e[t] = arguments[t]; var n = o.concat(e); return r.apply(null, n) } } var p, h, b, x, T, E = function (e) { return function () { throw new Error(e) } }, w = v(!1), I = v(!0), S = w, L = I, D = function () { return O }, O = (x = { fold: function (e, t) { return e() }, is: S, isSome: S, isNone: L, getOr: b = function (e) { return e }, getOrThunk: h = function (e) { return e() }, getOrDie: function (e) { throw new Error(e || "error: getOrDie called on none.") }, getOrNull: function () { return null }, getOrUndefined: function () { }, or: b, orThunk: h, map: D, ap: D, each: function () { }, bind: D, flatten: D, exists: S, forall: L, filter: D, equals: p = function (e) { return e.isNone() }, equals_: p, toArray: function () { return [] }, toString: v("none()") }, Object.freeze && Object.freeze(x), x), A = function (n) { var e = function () { return n }, t = function () { return o }, r = function (e) { return e(n) }, o = { fold: function (e, t) { return t(n) }, is: function (e) { return n === e }, isSome: L, isNone: S, getOr: e, getOrThunk: e, getOrDie: e, getOrNull: e, getOrUndefined: e, or: t, orThunk: t, map: function (e) { return A(e(n)) }, ap: function (e) { return e.fold(D, function (e) { return A(e(n)) }) }, each: function (e) { e(n) }, bind: r, flatten: e, exists: r, forall: r, filter: function (e) { return e(n) ? o : O }, equals: function (e) { return e.is(n) }, equals_: function (e, t) { return e.fold(S, function (e) { return t(n, e) }) }, toArray: function () { return [n] }, toString: function () { return "some(" + n + ")" } }; return o }, _ = { some: A, none: D, from: function (e) { return null == e ? O : A(e) } }, P = function (t) { return function (e) { return function (e) { if (null === e) return "null"; var t = typeof e; return "object" === t && Array.prototype.isPrototypeOf(e) ? "array" : "object" === t && String.prototype.isPrototypeOf(e) ? "string" : t }(e) === t } }, k = P("string"), M = P("object"), R = P("array"), F = P("boolean"), j = P("function"), U = P("number"), B = void 0 === (T = Array.prototype.indexOf) ? function (e, t) { return z(e, t) } : function (e, t) { return T.call(e, t) }, Y = function (e, t) { return -1 < B(e, t) }, H = function (e, t) { return G(e, t).isSome() }, W = function (e, t) { for (var n = e.length, r = new Array(n), o = 0; o < n; o++) { var i = e[o]; r[o] = t(i, o, e) } return r }, q = function (e, t) { for (var n = 0, r = e.length; n < r; n++)t(e[n], n, e) }, $ = function (e, t) { for (var n = [], r = 0, o = e.length; r < o; r++) { var i = e[r]; t(i, r, e) && n.push(i) } return n }, V = function (e, t, n) { return q(e, function (e) { n = t(n, e) }), n }, X = function (e, t) { for (var n = 0, r = e.length; n < r; n++) { var o = e[n]; if (t(o, n, e)) return _.some(o) } return _.none() }, G = function (e, t) { for (var n = 0, r = e.length; n < r; n++)if (t(e[n], n, e)) return _.some(n); return _.none() }, z = function (e, t) { for (var n = 0, r = e.length; n < r; ++n)if (e[n] === t) return n; return -1 }, K = Array.prototype.push, Z = function (e) { for (var t = [], n = 0, r = e.length; n < r; ++n) { if (!Array.prototype.isPrototypeOf(e[n])) throw new Error("Arr.flatten item " + n + " was not an array, input: " + e); K.apply(t, e[n]) } return t }, J = function (e, t) { var n = W(e, t); return Z(n) }, Q = function (e, t) { for (var n = 0, r = e.length; n < r; ++n)if (!0 !== t(e[n], n, e)) return !1; return !0 }, ee = Array.prototype.slice, te = (j(Array.from) && Array.from, Object.keys), ne = function (e, t) { for (var n = te(e), r = 0, o = n.length; r < o; r++) { var i = n[r]; t(e[i], i, e) } }, re = function (e, r) { return oe(e, function (e, t, n) { return { k: t, v: r(e, t, n) } }) }, oe = function (r, o) { var i = {}; return ne(r, function (e, t) { var n = o(e, t, r); i[n.k] = n.v }), i }, ie = function (e) { return n = function (e) { return e }, r = [], ne(e, function (e, t) { r.push(n(e, t)) }), r; var n, r }, ae = function (e) { return te(e).length }, ue = function (a) { if (!R(a)) throw new Error("cases must be an array"); if (0 === a.length) throw new Error("there must be at least one case"); var u = [], n = {}; return q(a, function (e, r) { var t = te(e); if (1 !== t.length) throw new Error("one and only one name per case"); var o = t[0], i = e[o]; if (void 0 !== n[o]) throw new Error("duplicate key detected:" + o); if ("cata" === o) throw new Error("cannot have a case named cata (sorry)"); if (!R(i)) throw new Error("case arguments must be an array"); u.push(o), n[o] = function () { var e = arguments.length; if (e !== i.length) throw new Error("Wrong number of arguments to case " + o + ". Expected " + i.length + " (" + i + "), got " + e); for (var n = new Array(e), t = 0; t < n.length; t++)n[t] = arguments[t]; return { fold: function () { if (arguments.length !== a.length) throw new Error("Wrong number of arguments to fold. Expected " + a.length + ", got " + arguments.length); return arguments[r].apply(null, n) }, match: function (e) { var t = te(e); if (u.length !== t.length) throw new Error("Wrong number of arguments to match. Expected: " + u.join(",") + "\nActual: " + t.join(",")); if (!Q(u, function (e) { return Y(t, e) })) throw new Error("Not all branches were specified when using match. Specified: " + t.join(", ") + "\nRequired: " + u.join(", ")); return e[o].apply(null, n) }, log: function (e) { console.log(e, { constructors: u, constructor: o, params: n }) } } } }), n }, ce = Object.prototype.hasOwnProperty, se = function (a) { return function () { for (var e = new Array(arguments.length), t = 0; t < e.length; t++)e[t] = arguments[t]; if (0 === e.length) throw new Error("Can't merge zero objects"); for (var n = {}, r = 0; r < e.length; r++) { var o = e[r]; for (var i in o) ce.call(o, i) && (n[i] = a(n[i], o[i])) } return n } }, le = se(function (e, t) { return M(e) && M(t) ? le(e, t) : t }), fe = se(function (e, t) { return t }), de = ue([{ blob: ["id", "imageresult", "objurl"] }, { url: ["id", "url", "raw"] }]), me = fe(de, { cata: function (e, t, n) { return e.fold(t, n) } }); function pe(e, t) { return ve(y.document.createElement("canvas"), e, t) } function ge(e) { return e.getContext("2d") } function ve(e, t, n) { return e.width = t, e.height = n, e } var he = { create: pe, clone: function (e) { var t; return ge(t = pe(e.width, e.height)).drawImage(e, 0, 0), t }, resize: ve, get2dContext: ge, get3dContext: function (e) { var t = null; try { t = e.getContext("webgl") || e.getContext("experimental-webgl") } catch (e) { } return t || (t = null), t } }, ye = { getWidth: function (e) { return e.naturalWidth || e.width }, getHeight: function (e) { return e.naturalHeight || e.height } }, be = window.Promise ? window.Promise : function () { var e = function (e) { if ("object" != typeof this) throw new TypeError("Promises must be constructed via new"); if ("function" != typeof e) throw new TypeError("not a function"); this._state = null, this._value = null, this._deferreds = [], s(e, n(o, this), n(a, this)) }, t = e.immediateFn || "function" == typeof window.setImmediate && window.setImmediate || function (e) { y.setTimeout(e, 1) }; function n(e, t) { return function () { e.apply(t, arguments) } } var r = Array.isArray || function (e) { return "[object Array]" === Object.prototype.toString.call(e) }; function i(n) { var r = this; null !== this._state ? t(function () { var e = r._state ? n.onFulfilled : n.onRejected; if (null !== e) { var t; try { t = e(r._value) } catch (e) { return void n.reject(e) } n.resolve(t) } else (r._state ? n.resolve : n.reject)(r._value) }) : this._deferreds.push(n) } function o(e) { try { if (e === this) throw new TypeError("A promise cannot be resolved with itself."); if (e && ("object" == typeof e || "function" == typeof e)) { var t = e.then; if ("function" == typeof t) return void s(n(t, e), n(o, this), n(a, this)) } this._state = !0, this._value = e, u.call(this) } catch (e) { a.call(this, e) } } function a(e) { this._state = !1, this._value = e, u.call(this) } function u() { for (var e = 0, t = this._deferreds.length; e < t; e++)i.call(this, this._deferreds[e]); this._deferreds = null } function c(e, t, n, r) { this.onFulfilled = "function" == typeof e ? e : null, this.onRejected = "function" == typeof t ? t : null, this.resolve = n, this.reject = r } function s(e, t, n) { var r = !1; try { e(function (e) { r || (r = !0, t(e)) }, function (e) { r || (r = !0, n(e)) }) } catch (e) { if (r) return; r = !0, n(e) } } return e.prototype.catch = function (e) { return this.then(null, e) }, e.prototype.then = function (n, r) { var o = this; return new e(function (e, t) { i.call(o, new c(n, r, e, t)) }) }, e.all = function () { var u = Array.prototype.slice.call(1 === arguments.length && r(arguments[0]) ? arguments[0] : arguments); return new e(function (r, o) { if (0 === u.length) return r([]); var i = u.length; function a(t, e) { try { if (e && ("object" == typeof e || "function" == typeof e)) { var n = e.then; if ("function" == typeof n) return void n.call(e, function (e) { a(t, e) }, o) } u[t] = e, 0 == --i && r(u) } catch (e) { o(e) } } for (var e = 0; e < u.length; e++)a(e, u[e]) }) }, e.resolve = function (t) { return t && "object" == typeof t && t.constructor === e ? t : new e(function (e) { e(t) }) }, e.reject = function (n) { return new e(function (e, t) { t(n) }) }, e.race = function (o) { return new e(function (e, t) { for (var n = 0, r = o.length; n < r; n++)o[n].then(e, t) }) }, e }(), xe = "undefined" != typeof window ? window : Function("return this;")(), Te = function (e, t) { return function (e, t) { for (var n = null != t ? t : xe, r = 0; r < e.length && null != n; ++r)n = n[e[r]]; return n }(e.split("."), t) }, Ee = function (e, t) { return function (e, t) { for (var n, r, o = void 0 !== t ? t : xe, i = 0; i < e.length; ++i)n = o, r = e[i], void 0 !== n[r] && null !== n[r] || (n[r] = {}), o = n[r]; return o }(e.split("."), t) }, we = { getOrDie: function (e, t) { var n = Te(e, t); if (null == n) throw e + " not available on this browser"; return n } }; function Ie(e, t) { return new (we.getOrDie("Blob"))(e, t) } function Se() { return new (we.getOrDie("FileReader")) } function Le(e) { return new (we.getOrDie("Uint8Array"))(e) } var Ce = { atob: function (e) { return we.getOrDie("atob")(e) }, requestAnimationFrame: function (e) { we.getOrDie("requestAnimationFrame")(e) } }; function Ne(u) { return new be(function (e, t) { var n = y.URL.createObjectURL(u), r = new y.Image, o = function () { r.removeEventListener("load", i), r.removeEventListener("error", a) }; function i() { o(), e(r) } function a() { o(), t("Unable to load data of type " + u.type + ": " + n) } r.addEventListener("load", i), r.addEventListener("error", a), r.src = n, r.complete && i() }) } function De(r) { return new be(function (e, n) { var t = new y.XMLHttpRequest; t.open("GET", r, !0), t.responseType = "blob", t.onload = function () { 200 == this.status && e(this.response) }, t.onerror = function () { var e, t = this; n(0 === this.status ? ((e = new Error("No access to download image")).code = 18, e.name = "SecurityError", e) : new Error("Error " + t.status + " downloading image")) }, t.send() }) } function Oe(e) { var t = e.split(","), n = /data:([^;]+)/.exec(t[0]); if (!n) return _.none(); for (var r = n[1], o = t[1], i = Ce.atob(o), a = i.length, u = Math.ceil(a / 1024), c = new Array(u), s = 0; s < u; ++s) { for (var l = 1024 * s, f = Math.min(l + 1024, a), d = new Array(f - l), m = l, p = 0; m < f; ++p, ++m)d[p] = i[m].charCodeAt(0); c[s] = Le(d) } return _.some(Ie(c, { type: r })) } function Ae(n) { return new be(function (e, t) { Oe(n).fold(function () { t("uri is not base64: " + n) }, e) }) } function _e(n) { return new be(function (e) { var t = Se(); t.onloadend = function () { e(t.result) }, t.readAsDataURL(n) }) } var Pe = { blobToImage: Ne, imageToBlob: function (e) { var t = e.src; return 0 === t.indexOf("data:") ? Ae(t) : De(t) }, blobToArrayBuffer: function (n) { return new be(function (e) { var t = Se(); t.onloadend = function () { e(t.result) }, t.readAsArrayBuffer(n) }) }, blobToDataUri: _e, blobToBase64: function (e) { return _e(e).then(function (e) { return e.split(",")[1] }) }, dataUriToBlobSync: Oe, canvasToBlob: function (e, n, r) { return n = n || "image/png", y.HTMLCanvasElement.prototype.toBlob ? new be(function (t) { e.toBlob(function (e) { t(e) }, n, r) }) : Ae(e.toDataURL(n, r)) }, canvasToDataURL: function (e, t, n) { return t = t || "image/png", e.then(function (e) { return e.toDataURL(t, n) }) }, blobToCanvas: function (e) { return Ne(e).then(function (e) { var t, n; return t = e, y.URL.revokeObjectURL(t.src), n = he.create(ye.getWidth(e), ye.getHeight(e)), he.get2dContext(n).drawImage(e, 0, 0), n }) }, uriToBlob: function (e) { return 0 === e.indexOf("blob:") ? De(e) : 0 === e.indexOf("data:") ? Ae(e) : null } }, ke = function (e) { return Pe.blobToDataUri(e) }, Me = function (e) { return Pe.dataUriToBlobSync(e) }, Re = function (e) { return _.from(Pe.uriToBlob(e)) }; function Fe(e, t, n) { var r = t.type; function o(t, n) { return e.then(function (e) { return Pe.canvasToDataURL(e, t, n) }) } return { getType: v(r), toBlob: function () { return be.resolve(t) }, toDataURL: function () { return n }, toBase64: function () { return n.split(",")[1] }, toAdjustedBlob: function (t, n) { return e.then(function (e) { return Pe.canvasToBlob(e, t, n) }) }, toAdjustedDataURL: o, toAdjustedBase64: function (e, t) { return o(e, t).then(function (e) { return e.split(",")[1] }) }, toCanvas: function () { return e.then(he.clone) } } } function je(t) { return Pe.blobToDataUri(t).then(function (e) { return Fe(Pe.blobToCanvas(t), t, e) }) } var Ue, Be, Ye = { fromBlob: je, fromCanvas: function (t, e) { return Pe.canvasToBlob(t, e).then(function (e) { return Fe(be.resolve(t), e, t.toDataURL()) }) }, fromImage: function (e) { return Pe.imageToBlob(e).then(function (e) { return je(e) }) }, fromBlobAndUrlSync: function (e, t) { return Fe(Pe.blobToCanvas(e), e, t) } }, He = function (e) { return e.toBlob() }, We = { blobToImageResult: function (e) { return Ye.fromBlob(e) }, fromBlobAndUrlSync: function (e, t) { return Ye.fromBlobAndUrlSync(e, t) }, imageToImageResult: function (e) { return Ye.fromImage(e) }, imageResultToBlob: function (e, t, n) { return void 0 === t && void 0 === n ? He(e) : e.toAdjustedBlob(t, n) }, imageResultToOriginalBlob: He, imageResultToDataURL: function (e) { return e.toDataURL() } }, qe = function (e) { var n = _.none(), t = [], r = function (e) { o() ? a(e) : t.push(e) }, o = function () { return n.isSome() }, i = function (e) { q(e, a) }, a = function (t) { n.each(function (e) { setTimeout(function () { t(e) }, 0) }) }; return e(function (e) { n = _.some(e), i(t), t = [] }), { get: r, map: function (n) { return qe(function (t) { r(function (e) { t(n(e)) }) }) }, isReady: o } }, $e = { nu: qe, pure: function (t) { return qe(function (e) { e(t) }) } }, Ve = function (t) { var e = function (e) { var r; t((r = e, function () { for (var e = [], t = 0; t < arguments.length; t++)e[t] = arguments[t]; var n = this; setTimeout(function () { r.apply(n, e) }, 0) })) }, n = function () { return $e.nu(e) }; return { map: function (r) { return Ve(function (n) { e(function (e) { var t = r(e); n(t) }) }) }, bind: function (n) { return Ve(function (t) { e(function (e) { n(e).get(t) }) }) }, anonBind: function (n) { return Ve(function (t) { e(function (e) { n.get(t) }) }) }, toLazy: n, toCached: function () { var t = null; return Ve(function (e) { null === t && (t = n()), t.get(e) }) }, get: e } }, Xe = { nu: Ve, pure: function (t) { return Ve(function (e) { e(t) }) } }, Ge = function (a, e) { return e(function (r) { var o = [], i = 0; 0 === a.length ? r([]) : q(a, function (e, t) { var n; e.get((n = t, function (e) { o[n] = e, ++i >= a.length && r(o) })) }) }) }, ze = function (e) { return Ge(e, Xe.nu) }, Ke = function (e, t) { var n = W(e, t); return ze(n) }, Ze = 0, Je = function (e) { var t = (new Date).getTime(); return e + "_" + Math.floor(1e9 * Math.random()) + ++Ze + String(t) }, Qe = function (n) { var r, o = !1; return function () { for (var e = [], t = 0; t < arguments.length; t++)e[t] = arguments[t]; return o || (o = !0, r = n.apply(null, e)), r } }, et = function () { return tt(0, 0) }, tt = function (e, t) { return { major: e, minor: t } }, nt = { nu: tt, detect: function (e, t) { var n = String(t).toLowerCase(); return 0 === e.length ? et() : function (e, t) { var n = function (e, t) { for (var n = 0; n < e.length; n++) { var r = e[n]; if (r.test(t)) return r } }(e, t); if (!n) return { major: 0, minor: 0 }; var r = function (e) { return Number(t.replace(n, "$" + e)) }; return tt(r(1), r(2)) }(e, n) }, unknown: et }, rt = "Firefox", ot = function (e, t) { return function () { return t === e } }, it = function (e) { var t = e.current; return { current: t, version: e.version, isEdge: ot("Edge", t), isChrome: ot("Chrome", t), isIE: ot("IE", t), isOpera: ot("Opera", t), isFirefox: ot(rt, t), isSafari: ot("Safari", t) } }, at = { unknown: function () { return it({ current: void 0, version: nt.unknown() }) }, nu: it, edge: v("Edge"), chrome: v("Chrome"), ie: v("IE"), opera: v("Opera"), firefox: v(rt), safari: v("Safari") }, ut = "Windows", ct = "Android", st = "Solaris", lt = "FreeBSD", ft = function (e, t) { return function () { return t === e } }, dt = function (e) { var t = e.current; return { current: t, version: e.version, isWindows: ft(ut, t), isiOS: ft("iOS", t), isAndroid: ft(ct, t), isOSX: ft("OSX", t), isLinux: ft("Linux", t), isSolaris: ft(st, t), isFreeBSD: ft(lt, t) } }, mt = { unknown: function () { return dt({ current: void 0, version: nt.unknown() }) }, nu: dt, windows: v(ut), ios: v("iOS"), android: v(ct), linux: v("Linux"), osx: v("OSX"), solaris: v(st), freebsd: v(lt) }, pt = function (e, t) { var n = String(t).toLowerCase(); return X(e, function (e) { return e.search(n) }) }, gt = function (e, n) { return pt(e, n).map(function (e) { var t = nt.detect(e.versionRegexes, n); return { current: e.name, version: t } }) }, vt = function (e, n) { return pt(e, n).map(function (e) { var t = nt.detect(e.versionRegexes, n); return { current: e.name, version: t } }) }, ht = function (e, t, n) { return "" === t || !(e.length < t.length) && e.substr(n, n + t.length) === t }, yt = function (e, t) { return Et(e, t) ? (n = e, r = t.length, n.substring(r)) : e; var n, r }, bt = function (e, t) { return wt(e, t) ? (n = e, r = t.length, n.substring(0, n.length - r)) : e; var n, r }, xt = function (e, t) { return -1 !== e.indexOf(t) }, Tt = function (n) { return (e = n, "" === e ? _.none() : _.some(e.substr(0, 1))).bind(function (t) { return (e = n, "" === e ? _.none() : _.some(e.substring(1))).map(function (e) { return t.toUpperCase() + e }); var e }).getOr(n); var e }, Et = function (e, t) { return ht(e, t, 0) }, wt = function (e, t) { return ht(e, t, e.length - t.length) }, It = function (e) { return e.replace(/^\s+|\s+$/g, "") }, St = /.*?version\/\ ?([0-9]+)\.([0-9]+).*/, Lt = function (t) { return function (e) { return xt(e, t) } }, Ct = [{ name: "Edge", versionRegexes: [/.*?edge\/ ?([0-9]+)\.([0-9]+)$/], search: function (e) { return xt(e, "edge/") && xt(e, "chrome") && xt(e, "safari") && xt(e, "applewebkit") } }, { name: "Chrome", versionRegexes: [/.*?chrome\/([0-9]+)\.([0-9]+).*/, St], search: function (e) { return xt(e, "chrome") && !xt(e, "chromeframe") } }, { name: "IE", versionRegexes: [/.*?msie\ ?([0-9]+)\.([0-9]+).*/, /.*?rv:([0-9]+)\.([0-9]+).*/], search: function (e) { return xt(e, "msie") || xt(e, "trident") } }, { name: "Opera", versionRegexes: [St, /.*?opera\/([0-9]+)\.([0-9]+).*/], search: Lt("opera") }, { name: "Firefox", versionRegexes: [/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/], search: Lt("firefox") }, { name: "Safari", versionRegexes: [St, /.*?cpu os ([0-9]+)_([0-9]+).*/], search: function (e) { return (xt(e, "safari") || xt(e, "mobile/")) && xt(e, "applewebkit") } }], Nt = [{ name: "Windows", search: Lt("win"), versionRegexes: [/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/] }, { name: "iOS", search: function (e) { return xt(e, "iphone") || xt(e, "ipad") }, versionRegexes: [/.*?version\/\ ?([0-9]+)\.([0-9]+).*/, /.*cpu os ([0-9]+)_([0-9]+).*/, /.*cpu iphone os ([0-9]+)_([0-9]+).*/] }, { name: "Android", search: Lt("android"), versionRegexes: [/.*?android\ ?([0-9]+)\.([0-9]+).*/] }, { name: "OSX", search: Lt("os x"), versionRegexes: [/.*?os\ x\ ?([0-9]+)_([0-9]+).*/] }, { name: "Linux", search: Lt("linux"), versionRegexes: [] }, { name: "Solaris", search: Lt("sunos"), versionRegexes: [] }, { name: "FreeBSD", search: Lt("freebsd"), versionRegexes: [] }], Dt = { browsers: v(Ct), oses: v(Nt) }, Ot = function (e) { var t, n, r, o, i, a, u, c, s, l, f, d = Dt.browsers(), m = Dt.oses(), p = gt(d, e).fold(at.unknown, at.nu), g = vt(m, e).fold(mt.unknown, mt.nu); return { browser: p, os: g, deviceType: (n = p, r = e, o = (t = g).isiOS() && !0 === /ipad/i.test(r), i = t.isiOS() && !o, a = t.isAndroid() && 3 === t.version.major, u = t.isAndroid() && 4 === t.version.major, c = o || a || u && !0 === /mobile/i.test(r), s = t.isiOS() || t.isAndroid(), l = s && !c, f = n.isSafari() && t.isiOS() && !1 === /safari/i.test(r), { isiPad: v(o), isiPhone: v(i), isTablet: v(c), isPhone: v(l), isTouch: v(s), isAndroid: t.isAndroid, isiOS: t.isiOS, isWebView: v(f) }) } }, At = { detect: Qe(function () { var e = y.navigator.userAgent; return Ot(e) }) }, _t = function () { return we.getOrDie("URL") }, Pt = function (e) { return _t().createObjectURL(e) }, kt = function (e) { _t().revokeObjectURL(e) }, Mt = (y.Node.ATTRIBUTE_NODE, y.Node.CDATA_SECTION_NODE, y.Node.COMMENT_NODE), Rt = y.Node.DOCUMENT_NODE, Ft = (y.Node.DOCUMENT_TYPE_NODE, y.Node.DOCUMENT_FRAGMENT_NODE, y.Node.ELEMENT_NODE), jt = y.Node.TEXT_NODE, Ut = (y.Node.PROCESSING_INSTRUCTION_NODE, y.Node.ENTITY_REFERENCE_NODE, y.Node.ENTITY_NODE, y.Node.NOTATION_NODE, function (e) { return e.dom().nodeName.toLowerCase() }), Bt = function (e) { return e.dom().nodeType }, Yt = function (t) { return function (e) { return Bt(e) === t } }, Ht = function (e) { return Bt(e) === Mt || "#comment" === Ut(e) }, Wt = Yt(Ft), qt = Yt(jt), $t = function (e, t, n) { if (!(k(n) || F(n) || U(n))) throw y.console.error("Invalid call to Attr.set. Key ", t, ":: Value ", n, ":: Element ", e), new Error("Attribute value was not simple"); e.setAttribute(t, n + "") }, Vt = function (e, t, n) { $t(e.dom(), t, n) }, Xt = function (e, t) { var n = e.dom(); ne(t, function (e, t) { $t(n, t, e) }) }, Gt = function (e, t) { var n = e.dom().getAttribute(t); return null === n ? void 0 : n }, zt = function (e, t) { var n = e.dom(); return !(!n || !n.hasAttribute) && n.hasAttribute(t) }, Kt = function (e, t) { e.dom().removeAttribute(t) }, Zt = At.detect(), Jt = function (e) { var t = Pt(e); return Qt(e, t) }, Qt = function (i, a) { return Xe.nu(function (o) { ke(i).then(function (e) { var t = We.fromBlobAndUrlSync(i, e), n = Je("image"), r = me.blob(n, t, a); o(r) }) }) }, en = function (e) { return 1 === e.length && Y(e, "Files") }, tn = function (e) { return !Y(e, "text/_moz_htmlcontext") }, nn = function (e) { return Y(e, "Files") }, rn = function (e) { return !0 }, on = { multiple: function (e) { return 0 === e.length ? Xe.pure([]) : Ke(e, Jt) }, toFiles: function (e) { return e.raw().target.files || e.raw().dataTransfer.files }, isFiles: Zt.browser.isChrome() || Zt.browser.isSafari() || Zt.browser.isOpera() ? nn : Zt.browser.isFirefox() ? tn : Zt.browser.isIE() ? en : rn, fromImages: function (e) { var t = W(e, function (e) { var t = Je("image"); return me.url(t, Gt(e, "src"), e) }); return Xe.pure(t) }, single: Jt, singleWithUrl: Qt }, an = { multiple: function (e) { return on.multiple(e) }, single: function (e) { return on.single(e) }, singleWithUrl: function (e, t) { return on.singleWithUrl(e, t) } }, un = function (e) { if (null == e) throw new Error("Node cannot be null or undefined"); return { dom: v(e) } }, cn = { fromHtml: function (e, t) { var n = (t || y.document).createElement("div"); if (n.innerHTML = e, !n.hasChildNodes() || 1 < n.childNodes.length) throw y.console.error("HTML does not have a single root node", e), new Error("HTML must have a single root node"); return un(n.childNodes[0]) }, fromTag: function (e, t) { var n = (t || y.document).createElement(e); return un(n) }, fromText: function (e, t) { var n = (t || y.document).createTextNode(e); return un(n) }, fromDom: un, fromPoint: function (e, t, n) { var r = e.dom(); return _.from(r.elementFromPoint(t, n)).map(un) } }, sn = { "cement.dialog.paste.title": "Paste Formatting Options", "cement.dialog.paste.instructions": "Choose to keep or remove formatting in the pasted content.", "cement.dialog.paste.merge": "Keep Formatting", "cement.dialog.paste.clean": "Remove Formatting", "cement.dialog.flash.title": "Additional step needed to paste images", "cement.dialog.flash.trigger-paste": "Your browser requires you to take one more action to paste the images in your content. Please press the below keys to complete the image paste:", "cement.dialog.flash.missing": 'Adobe Flash is required to import images from Microsoft Office. Install the Adobe Flash Player.', "cement.dialog.flash.press-escape": 'Press "Close" to paste your content without images.', "loading.wait": "Please wait...", "flash.clipboard.no.rtf": tinymce.Env.mac && tinymce.Env.webkit ? 'Your browser security settings may be preventing images from being imported. More information on paste for Safari' : "Your browser security settings may be preventing images from being imported.", "safari.imagepaste": 'Safari does not support direct paste of images. More information on image pasting for Safari', "webview.imagepaste": 'Safari does not support direct paste of images. More information on image pasting for Safari', "error.code.images.not.found": "The images service was not found: (", "error.imageupload": "Image failed to upload: (", "error.full.stop": ").", "errors.local.images.disallowed": "Local image paste has been disabled. Local images have been removed from pasted content.", "flash.crashed": "Images have not been imported as Adobe Flash appears to have crashed. This may be caused by pasting large documents.", "errors.imageimport.failed": "Some images failed to import.", "errors.imageimport.unsupported": "Unsupported image type.", "errors.imageimport.invalid": "Image is invalid." }, ln = { translate: function (e) { return tinymce.translate(sn[e]) } }, fn = { insert: function (e, t) { var n, r = t.getDoc(), o = "ephoxInsertMarker", i = t.selection, a = t.dom; i.setContent(''), n = a.get(o); for (var u = r.createDocumentFragment(); e.firstChild && !a.isBlock(e.firstChild);)u.appendChild(e.firstChild); for (var c = r.createDocumentFragment(); e.lastChild && !a.isBlock(e.lastChild);)c.appendChild(e.lastChild); if (n.parentNode.insertBefore(u, n), a.insertAfter(c, n), e.firstChild) { if (a.isBlock(e.firstChild)) { for (; !a.isBlock(n.parentNode) && n.parentNode !== a.getRoot();)n = a.split(n.parentNode, n); a.is(n.parentNode, "td,th") || n.parentNode === a.getRoot() || (n = a.split(n.parentNode, n)) } a.replace(e, n) } else a.remove(n) } }, dn = { each: tinymce.each, trim: tinymce.trim, bind: function (e, t) { return function () { return e.apply(t, arguments) } }, extend: function (n) { for (var e = [], t = 1; t < arguments.length; t++)e[t - 1] = arguments[t]; return tinymce.each(Array.prototype.slice.call(arguments, 1), function (e) { for (var t in e) n[t] = e[t] }), n }, ephoxGetComputedStyle: function (e) { return e.ownerDocument.defaultView ? e.ownerDocument.defaultView.getComputedStyle(e, null) : e.currentStyle || {} }, log: function (e) { "undefined" != typeof console && console.log && console.log(e) }, compose: function (e) { var r = Array.prototype.slice.call(e).reverse(); return function (e) { for (var t = e, n = 0; n < r.length; n++)t = (0, r[n])(t); return t } } }, mn = { strip_class_attributes: "all", retain_style_properties: "none" }, pn = { strip_class_attributes: "none", retain_style_properties: "valid" }, gn = function (e, t, n) { var r = function (e, t) { if (e && "string" != typeof e) return e; switch (e) { case "clean": return mn; case "merge": return pn; default: return t } }(e, t); return r = dn.extend(r, { base_64_images: n }) }, vn = { create: function (e, t, n) { var r = gn(e, mn, n), o = gn(t, pn, n), i = o; return { setWordContent: function (e) { i = e ? r : o }, get: function (e) { return i[e] } } } }, hn = "startElement", yn = "endElement", bn = "text", xn = "comment", Tn = function (o) { var i, t, a = 0, u = function () { return i }; t = function () { return i = {}, a = 0, dn.each(o.attributes, function (e) { var t, n = e.nodeName, r = e.value; (!1 !== (t = e).specified || "name" === t.nodeName && "" !== t.value) && null != r && (i[n] = r, a++) }), void 0 === i.style && o.style.cssText && (i.style = o.style.cssText, a++), t = u, i }; var c, s, l = function (n) { dn.each(t(), function (e, t) { n(t, e) }) }; return { get: function (e) { return t()[e] }, each: l, filter: function (e) { var n, r; c || (s = t), r = e, c = (n = c) && r ? function (e, t) { return r(e, n(e, t)) } : n || r, t = function () { return t = s, l(function (e, t) { var n = c(e, t); null === n ? (o.removeAttribute(e), delete i[e], a--) : n !== t && ("class" === e ? o.className = n : o.setAttribute(e, n), i[e] = n) }), t = u, i } }, getAttributes: function () { return t() }, getAttributeCount: function () { return t(), a } } }, En = function (e) { return e.replace(/-(.)/g, function (e, t) { return t.toUpperCase() }) }, wn = !1, In = function (i, e, t) { var n, r, o, a, u, c, s, l, f, d; switch (i.nodeType) { case 1: e ? n = yn : (n = hn, a = Tn(i), u = {}, c = i, s = function (e, t) { u[e] = t }, null != (d = t || c.getAttribute("style")) && d.split || (d = c.style.cssText), dn.each(d.split(";"), function (e) { var t = e.indexOf(":"); 0 < t && ((l = dn.trim(e.substring(0, t))).toUpperCase() === l && (l = l.toLowerCase()), l = l.replace(/([A-Z])/g, function (e, t) { return "-" + t.toLowerCase() }), f = dn.trim(e.substring(t + 1)), wn || (wn = 0 === l.indexOf("mso-")), s(l, f)) }), wn || (f = c.style["mso-list"]) && s("mso-list", f)), r = "HTML" !== i.scopeName && i.scopeName && i.tagName && i.tagName.indexOf(":") <= 0 ? (i.scopeName + ":" + i.tagName).toUpperCase() : i.tagName; break; case 3: n = bn, o = i.nodeValue; break; case 8: n = xn, o = i.nodeValue; break; default: dn.log("WARNING: Unsupported node type encountered: " + i.nodeType) }var m = function () { return n }, p = function (e) { n === hn && a.filter(e) }; return { getNode: function () { return a && a.getAttributes(), i }, tag: function () { return r }, type: m, text: function () { return o }, toString: function () { return "Type: " + n + ", Tag: " + r + " Text: " + o }, getAttribute: function (e) { return a.get(e.toLowerCase()) }, filterAttributes: p, filterStyles: function (r) { if (m() === hn) { var o = ""; dn.each(u, function (e, t) { var n = r(t, e); null === n ? (i.style.removeProperty ? i.style.removeProperty(En(t)) : i.style.removeAttribute(En(t)), delete u[t]) : (o += t + ": " + n + "; ", u[t] = n) }), o = o || null, p(function (e, t) { return "style" === e ? o : t }), i.style.cssText = o } }, getAttributeCount: function () { return a.getAttributeCount() }, attributes: function (e) { a.each(e) }, getStyle: function (e) { return u[e] }, styles: function (n) { dn.each(u, function (e, t) { n(t, e) }) }, getComputedStyle: function () { return dn.ephoxGetComputedStyle(i) }, isWhitespace: function () { return n === bn && /^[\s\u00A0]*$/.test(o) } } }, Sn = function (e, t) { return In(t.createElement(e), !0) }, Ln = Sn("HTML", window.document), Cn = { START_ELEMENT_TYPE: hn, END_ELEMENT_TYPE: yn, TEXT_TYPE: bn, COMMENT_TYPE: xn, FINISHED: Ln, token: In, createStartElement: function (e, t, n, r) { var o = r.createElement(e), i = ""; return dn.each(t, function (e, t) { o.setAttribute(t, e) }), dn.each(n, function (e, t) { i += t + ":" + e + ";", o.style[En(t)] = e }), In(o, !1, "" !== i ? i : null) }, createEndElement: Sn, createComment: function (e, t) { return In(t.createComment(e), !1) }, createText: function (e, t) { return In(t.createTextNode(e)) } }, Nn = function (i) { var a = i.createDocumentFragment(), u = function (e) { a.appendChild(e) }; return { dom: a, receive: function (e) { var t, n, r, o; switch (e.type()) { case Cn.START_ELEMENT_TYPE: o = e.getNode().cloneNode(!1), u(r = o), a = r; break; case Cn.TEXT_TYPE: t = e, n = i.createTextNode(t.text()), u(n); break; case Cn.END_ELEMENT_TYPE: a = a.parentNode; break; case Cn.COMMENT_TYPE: break; default: throw { message: "Unsupported token type: " + e.type() } } } } }, Dn = function (e, o) { var i; o = o || window.document, i = o.createElement("div"), o.body.appendChild(i), i.style.position = "absolute", i.style.left = "-10000px", i.innerHTML = e; var a = i.firstChild || Cn.FINISHED, u = [], c = !1; return { hasNext: function () { return void 0 !== a }, next: function () { var e, t, n = a, r = c; return !c && a.firstChild ? (u.push(a), a = a.firstChild) : c || 1 !== a.nodeType ? a.nextSibling ? (a = a.nextSibling, c = !1) : (a = u.pop(), c = !0) : c = !0, n === Cn.FINISHED || a || (o.body.removeChild(i), a = Cn.FINISHED), t = r, (e = n) === Cn.FINISHED ? e : e ? Cn.token(e, t) : void 0 } } }, On = function (p, g) { return function (t, e, n) { var r, o, i, a = !1, u = function () { g && g(m), a = !1, o = [], i = [] }, c = function (e) { dn.each(e, function (e) { t.receive(e) }) }, s = function (e) { a ? i.push(e) : t.receive(e) }, l = function () { f(), c(i), u() }, f = function () { dn.each(r, function (e) { s(e) }), d() }, d = function () { r = [] }, m = { document: n || window.document, settings: e || {}, emit: s, receive: function (e) { g && o.push(e), p(m, e), e === Cn.FINISHED && l() }, startTransaction: function () { a = !0 }, rollback: function () { c(o), u() }, commit: l, defer: function (e) { (r = r || []).push(e) }, hasDeferred: function () { return r && 0 < r.length }, emitDeferred: f, dropDeferred: d }; return u(), m } }, An = On, _n = function (n) { return On(function (e, t) { t.filterAttributes(dn.bind(n, e)), e.emit(t) }) }, Pn = /^(P|H[1-6]|T[DH]|LI|DIV|BLOCKQUOTE|PRE|ADDRESS|FIELDSET|DD|DT|CENTER)$/, kn = function () { return null }, Mn = !1, Rn = An(function (e, t) { var n, r = function () { Mn || (e.emit(Cn.createStartElement("P", {}, {}, e.document)), Mn = !0) }; switch (t.type()) { case Cn.TEXT_TYPE: r(), e.emit(t); break; case Cn.END_ELEMENT_TYPE: Mn && (n = t, Pn.test(n.tag()) || t === Cn.FINISHED) ? (e.emit(Cn.createEndElement("P", e.document)), Mn = !1) : "BR" === t.tag() && e.emit(t); break; case Cn.START_ELEMENT_TYPE: "BR" === t.tag() ? (t.filterAttributes(kn), t.filterStyles(kn), e.emit(t)) : "IMG" === t.tag() && t.getAttribute("alt") && (r(), e.emit(Cn.createText(t.getAttribute("alt"), e.document))) }t === Cn.FINISHED && e.emit(t) }), Fn = function (e) { var t = e; return 65279 === t.charCodeAt(t.length - 1) ? t.substring(0, t.length - 1) : e }, jn = [Fn], Un = tinymce.isIE && 9 <= document.documentMode ? [function (e) { return e.replace(/
/g, " ") }, function (e) { return e.replace(/ /g, " ") }, function (e) { return e.replace(/
/g, "
") }, function (e) { return /<(h[1-6r]|p|div|address|pre|form|table|tbody|thead|tfoot|th|tr|td|li|ol|ul|caption|blockquote|center|dl|dt|dd|dir|fieldset)/.test(e) ? e.replace(/(?: [\s\r\n]+| )*(<\/?(h[1-6r]|p|div|address|pre|form|table|tbody|thead|tfoot|th|tr|td|li|ol|ul|caption|blockquote|center|dl|dt|dd|dir|fieldset)[^>]*>)(?: [\s\r\n]+| )*/g, "$1") : e }].concat(jn) : jn, Bn = { all: dn.compose(Un), textOnly: Fn }, Yn = /^(mso-.*|tab-stops|tab-interval|language|text-underline|text-effect|text-line-through|font-color|horiz-align|list-image-[0-9]+|separator-image|table-border-color-(dark|light)|vert-align|vnd\..*)$/, Hn = An(function (e, t) { var r, n = e.settings.get("retain_style_properties"); t.filterStyles((r = n, function (e, t) { var n = !1; switch (r) { case "all": case "*": n = !0; break; case "valid": n = !Yn.test(e); break; case void 0: case "none": n = "list-style-type" === e; break; default: n = 0 <= ("," + r + ",").indexOf("," + e + ",") }return n ? t : null })), e.emit(t) }), Wn = An(function (e, t) { e.seenList || (e.inferring ? "LI" === t.tag() && (t.type() === Cn.START_ELEMENT_TYPE ? e.inferring++ : (e.inferring--, e.inferring || (e.needsClosing = !0))) : ("OL" === t.tag() || "UL" === t.tag() ? e.seenList = !0 : "LI" === t.tag() && (e.inferring = 1, e.needsClosing || e.emit(Cn.createStartElement("UL", {}, {}, e.document))), !e.needsClosing || e.inferring || t.isWhitespace() || (e.needsClosing = !1, e.emit(Cn.createEndElement("UL", e.document))))), e.emit(t) }), qn = _n(function (e, t) { return "name" === e || "id" === e ? null : t }), $n = _n(function (e, t) { if ("class" === e) switch (this.settings.get("strip_class_attributes")) { case "mso": return 0 === t.indexOf("Mso") ? null : t; case "none": return t; default: return null }return t }), Vn = function () { if (0 < navigator.userAgent.indexOf("Gecko") && navigator.userAgent.indexOf("WebKit") < 0) return !1; var e = document.createElement("div"); try { e.innerHTML = '
' } catch (e) { return !1 } return "Ignore" === Cn.token(e.firstChild).getStyle("mso-list") }(), Xn = function (e, t) { return e.type() === Cn.START_ELEMENT_TYPE ? 0 === e.getAttributeCount() || t && 1 === e.getAttributeCount() && null !== e.getAttribute("style") && void 0 !== e.getAttribute("style") : e.type() === Cn.END_ELEMENT_TYPE }, Gn = Vn, zn = function (e) { return "A" === e.tag() || "SPAN" === e.tag() }, Kn = function (e) { var t = e.getStyle("mso-list"); return t && "skip" !== t }, Zn = [], Jn = [], Qn = !1, er = function (e, t) { var n, r, o = 1; for (n = t + 1; n < e; n++)if ((r = Zn[n]) && "SPAN" === r.tag()) if (r.type() === Cn.START_ELEMENT_TYPE) o++; else if (r.type() === Cn.END_ELEMENT_TYPE && 0 == --o) return void (Zn[n] = null) }, tr = function (e, t) { if (Zn.push(t), Jn = Jn || [], t.type() === Cn.START_ELEMENT_TYPE) Jn.push(t); else if (t.type() === Cn.END_ELEMENT_TYPE && (Jn.pop(), 0 === Jn.length)) return void function (e) { if (Qn) { var t = void 0, n = Zn.length, r = void 0; for (r = 0; r < n; r++)(t = Zn[r]) && (t.type() === Cn.START_ELEMENT_TYPE && "SPAN" === t.tag() && Xn(t) ? er(n, r) : e.emit(t)) } Zn = [], Qn = !(Jn = []) }(e) }, nr = An(function (e, t) { var n = function (e) { return !(0 <= ",FONT,EM,STRONG,SAMP,ACRONYM,CITE,CODE,DFN,KBD,TT,B,I,U,S,SUB,SUP,INS,DEL,VAR,SPAN,".indexOf("," + e.tag() + ",") && Xn(e, !0)) }; 0 === (Zn = Zn || []).length ? t.type() === Cn.START_ELEMENT_TYPE ? n(t) ? e.emit(t) : tr(e, t) : e.emit(t) : (Qn || (Qn = n(t)), tr(e, t)) }), rr = _n(function (e, t) { return "style" === e && "" === t ? null : t }), or = _n(function (e, t) { return "lang" === e ? null : t }), ir = An(function (e, t) { if ("IMG" === t.tag()) { if (t.type() === Cn.END_ELEMENT_TYPE && e.skipEnd) return void (e.skipEnd = !1); if (t.type() === Cn.START_ELEMENT_TYPE) { if (/^file:/.test(t.getAttribute("src"))) return void (e.skipEnd = !0); if (e.settings.get("base_64_images") && /^data:image\/.*;base64/.test(t.getAttribute("src"))) return void (e.skipEnd = !0) } } e.emit(t) }), ar = An(function (e, t) { "META" !== t.tag() && "LINK" !== t.tag() && e.emit(t) }), ur = function (e) { return !Xn(e) && !/^OLE_LINK/.test(e.getAttribute("name")) }, cr = [], sr = An(function (e, t) { var n; t.type() === Cn.START_ELEMENT_TYPE && "A" === t.tag() ? (cr.push(t), ur(t) && e.defer(t)) : t.type() === Cn.END_ELEMENT_TYPE && "A" === t.tag() ? (n = cr.pop(), ur(n) && e.defer(t), 0 === cr.length && e.emitDeferred()) : e.hasDeferred() ? e.defer(t) : e.emit(t) }), lr = !1, fr = [An(function (e, t) { "SCRIPT" === t.tag() ? lr = t.type() === Cn.START_ELEMENT_TYPE : lr || (t.filterAttributes(function (e, t) { return /^on/.test(e) || "language" === e ? null : t }), e.emit(t)) }), qn, ir, Hn, or, rr, $n, sr, nr, ar, Wn], dr = An(function (e, n) { n.filterAttributes(function (e, t) { return "align" === e ? null : "UL" !== n.tag() && "OL" !== n.tag() || "type" !== e ? t : null }), e.emit(n) }), mr = _n(function (e, t) { return /^xmlns(:|$)/.test(e) ? null : t }), pr = An(function (e, t) { t.tag && /^([OVWXP]|U[0-9]+|ST[0-9]+):/.test(t.tag()) || e.emit(t) }), gr = _n(function (e, t) { return "href" === e && (0 <= t.indexOf("#_Toc") || 0 <= t.indexOf("#_mso")) ? null : t }), vr = _n(function (e, t) { return /^v:/.test(e) ? null : t }), hr = [{ regex: /^\(?[dc][\.\)]$/, type: { tag: "OL", type: "lower-alpha" } }, { regex: /^\(?[DC][\.\)]$/, type: { tag: "OL", type: "upper-alpha" } }, { regex: /^\(?M*(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})[\.\)]$/, type: { tag: "OL", type: "upper-roman" } }, { regex: /^\(?m*(cm|cd|d?c{0,3})(xc|xl|l?x{0,3})(ix|iv|v?i{0,3})[\.\)]$/, type: { tag: "OL", type: "lower-roman" } }, { regex: /^\(?[0-9]+[\.\)]$/, type: { tag: "OL" } }, { regex: /^([0-9]+\.)*[0-9]+\.?$/, type: { tag: "OL", variant: "outline" } }, { regex: /^\(?[a-z]+[\.\)]$/, type: { tag: "OL", type: "lower-alpha" } }, { regex: /^\(?[A-Z]+[\.\)]$/, type: { tag: "OL", type: "upper-alpha" } }], yr = { "\u2022": { tag: "UL", type: "disc" }, "\xb7": { tag: "UL", type: "disc" }, "\xa7": { tag: "UL", type: "square" } }, br = { o: { tag: "UL", type: "circle" }, "-": { tag: "UL", type: "disc" }, "\u25cf": { tag: "UL", type: "disc" } }, xr = function (e, t) { var n = { tag: e.tag, type: e.type, variant: t }; return e.start && (n.start = e.start), e.type || delete n.type, n }, Tr = function (e, t, n) { return e === t || e && t && e.tag === t.tag && e.type === t.type && (n || e.variant === t.variant) }, Er = { guessListType: function (e, t, n) { var r, o, i, a = null; return e && (r = e.text, o = e.symbolFont), r = dn.trim(r), (a = br[r]) ? a = xr(a, r) : o ? a = (a = yr[r]) ? xr(a, r) : { tag: "UL", variant: r } : (dn.each(hr, function (e) { if (e.regex.test(r)) { if (t && Tr(e.type, t, !0)) return (a = e.type).start = parseInt(r, 10), !1; a || (a = e.type), a.start = parseInt(r, 10) } }), a && !a.variant && (i = "(" === r.charAt(0) ? "()" : ")" === r.charAt(r.length - 1) ? ")" : ".", a = xr(a, i))), a && "OL" === a.tag && n && ("P" !== n.tag() || /^MsoHeading/.test(n.getAttribute("class"))) && (a = null), a }, eqListType: Tr, checkFont: function (e, t) { if (e.type() === Cn.START_ELEMENT_TYPE) { var n = e.getStyle("font-family"); n ? t = "Wingdings" === n || "Symbol" === n : /^(P|H[1-6]|DIV)$/.test(e.tag()) && (t = !1) } return t } }, wr = function (e) { var t = e.indexOf("."); if (0 <= t && void 0 === dn.trim(e.substring(t + 1))) return (void 0)[2], !1 }, Ir = (Ue = function (e, t) { var n, r = /([^{]+){([^}]+)}/g; for (r.lastIndex = 0; null !== (n = r.exec(e));)dn.each(n[1].split(","), wr(void 0)); return !1 }, Be = {}, function (e, t) { var n, r = e + "," + t; return Be.hasOwnProperty(r) ? Be[r] : (n = Ue.call(null, e, t), Be[r] = n) }), Sr = function (e, t) { var n, r, o, i = !1, a = function (e) { var t = e.style.fontFamily; t && (i = "Wingdings" === t || "Symbol" === t) }; if (e.type() === Cn.START_ELEMENT_TYPE && t.openedTag && "SPAN" === e.tag()) { for (a(n = t.openedTag.getNode()), 1 < n.childNodes.length && "A" === n.firstChild.tagName && "" === n.firstChild.textContent && (n = n.childNodes[1]); n.firstChild && ("SPAN" === n.firstChild.tagName || "A" === n.firstChild.tagName);)a(n = n.firstChild); if (!(n = n.firstChild) || 3 !== n.nodeType) return n && "IMG" === n.tagName; if (r = n.value, dn.trim(r) || (r = (n = n.parentNode.nextSibling) ? n.value : ""), !n || dn.trim(n.parentNode.textContent) != r) return !1; if (o = Er.guessListType({ text: r, symbolFont: i }, null, t.originalToken)) return n.nextSibling && "SPAN" === n.nextSibling.tagName && /^[\u00A0\s]/.test(n.nextSibling.firstChild.value) && ("P" === t.openedTag.tag() || "UL" === o.tag) } return !1 }, Lr = function () { var a, u; return { guessIndentLevel: function (e, t, n, r) { var o, i; return r && /^([0-9]+\.)+[0-9]+\.?$/.test(r.text) ? r.text.replace(/([0-9]+|\.$)/g, "").length + 1 : (o = u || parseInt(Ir(n, t.getAttribute("class"))), i = function (e, t) { var n, r = 0; for (n = e.parentNode; null != n && n !== t.parentNode;)r += n.offsetLeft, n = n.offsetParent; return r }(e.getNode(), t.getNode()), o ? a ? i += a : 0 === i && (i += a = o) : o = 48, u = o = Math.min(i, o), Math.max(1, Math.floor(i / o)) || 1) } } }, Cr = function () { var t = !1; return { check: function (e) { return t && e.type() === Cn.TEXT_TYPE ? (e.text(), !0) : e.type() === Cn.START_ELEMENT_TYPE && "STYLE" === e.tag() ? t = !0 : e.type() === Cn.END_ELEMENT_TYPE && "STYLE" === e.tag() && !(t = !1) } } }, Nr = ["disc", "circle", "square"]; function Dr(a, u) { var i, o = [], c = [], s = 0, l = function (e, t) { var n = {}, r = {}; s++, t && e.type && (n = { "list-style-type": e.type }), e.start && 1 < e.start && (r = { start: e.start }), o.push(e), a.emit(Cn.createStartElement(e.tag, r, n, u)), i = e }, f = function () { a.emit(Cn.createEndElement(o.pop().tag, u)), s--, i = o[o.length - 1] }, d = function () { var e = c ? c.pop() : "P"; "P" !== e && a.emit(Cn.createEndElement(e, u)), a.emit(Cn.createEndElement("LI", u)) }, m = function (e, t, n) { var r = {}; if (e) { var o = e.getStyle("margin-left"); void 0 !== o && (r["margin-left"] = o) } else r["list-style-type"] = "none"; i && !Er.eqListType(i, t) && (f(), n && (a.emit(Cn.createStartElement("P", {}, {}, u)), a.emit(Cn.createText("\xa0", u)), a.emit(Cn.createEndElement("P", u))), l(t, !0)), a.emit(Cn.createStartElement("LI", {}, r, u)), e && "P" !== e.tag() ? (c.push(e.tag()), e.filterStyles(function () { return null }), a.emit(e)) : c.push("P") }; return { openList: l, closelist: f, closeAllLists: function () { for (; 0 < s;)d(), f(); a.commit() }, closeItem: d, openLI: m, openItem: function (e, t, n, r) { if (n) { for (s || (s = 0); e < s;)d(), f(); var o, i; if (i = e, "UL" === (o = n).tag && Nr[i - 1] === o.type && (o = { tag: "UL" }), n = o, s === e) d(), m(t, n, r); else for (1 < e && 0 < c.length && "P" !== c[c.length - 1] && (a.emit(Cn.createEndElement(c[c.length - 1], u)), c[c.length - 1] = "P"); s < e;)l(n, s === e - 1), m(s === e ? t : void 0, n) } }, getCurrentListType: function () { return i }, getCurrentLevel: function () { return s } } } var Or = function (e, t) { dn.log("Unexpected token in list conversion: " + t.toString()), e.rollback() }, Ar = function (e, t, n) { n.type() === Cn.TEXT_TYPE && "" === dn.trim(n.text()) ? e.defer(n) : t.skippedPara || n.type() !== Cn.START_ELEMENT_TYPE || "P" !== n.tag() || Kn(n) ? Pr(e, t, n) : (t.openedTag = n, e.defer(n), t.nextFilter = _r) }, _r = function (e, t, n) { n.type() !== Cn.START_ELEMENT_TYPE || "SPAN" !== n.tag() || 0 !== t.spanCount.length || !Gn && Sr(n, t) || Kn(n) ? n.type() === Cn.END_ELEMENT_TYPE ? "SPAN" === n.tag() ? (e.defer(n), t.spanCount.pop()) : "P" === n.tag() ? (e.defer(n), t.skippedPara = !0, t.openedTag = null, t.nextFilter = Ar) : (t.nextFilter = Pr, t.nextFilter(e, t, n)) : n.isWhitespace() ? e.defer(n) : (t.nextFilter = Pr, t.nextFilter(e, t, n)) : (e.defer(n), t.spanCount.push(n)) }, Pr = function (e, t, n) { var r = function () { t.emitter.closeAllLists(), e.emitDeferred(), t.openedTag = null, e.emit(n), t.nextFilter = Pr }; if (n.type() === Cn.START_ELEMENT_TYPE && Kn(n) && "LI" !== n.tag()) { var o = / level([0-9]+)/.exec(n.getStyle("mso-list")); o && o[1] ? (t.itemLevel = parseInt(o[1], 10) + t.styleLevelAdjust, t.nextFilter === Pr ? e.emitDeferred() : e.dropDeferred(), t.nextFilter = Mr, e.startTransaction(), t.originalToken = n, t.commentMode = !1) : r() } else !Gn && (n.type() === Cn.COMMENT_TYPE && "[if !supportLists]" === n.text() || Sr(n, e)) ? (n.type() === Cn.START_ELEMENT_TYPE && "SPAN" === n.tag() && t.spanCount.push(n), t.nextFilter = Mr, e.startTransaction(), t.originalToken = t.openedTag, t.commentMode = !0, t.openedTag = null, e.dropDeferred()) : n.type() === Cn.END_ELEMENT_TYPE && zn(n) ? (e.defer(n), t.spanCount.pop()) : n.type() === Cn.START_ELEMENT_TYPE ? zn(n) ? (e.defer(n), t.spanCount.push(n)) : (t.openedTag && (t.emitter.closeAllLists(), e.emitDeferred()), t.openedTag = n, e.defer(n)) : r() }, kr = function (e, t, n) { n.type() === Cn.END_ELEMENT_TYPE && t.originalToken.tag() === n.tag() && (t.nextFilter = Ar, t.styleLevelAdjust = -1), e.emit(n) }, Mr = function (e, t, n) { if (n.type() === Cn.START_ELEMENT_TYPE && "Ignore" === n.getStyle("mso-list") && (t.nextFilter = Rr), n.type() === Cn.START_ELEMENT_TYPE && "SPAN" === n.tag()) t.spanCount.push(n), (t.commentMode && "" === n.getAttribute("style") || null === n.getAttribute("style")) && (t.nextFilter = Rr); else if ("A" === n.tag()) n.type() === Cn.START_ELEMENT_TYPE ? t.spanCount.push(n) : t.spanCount.pop(); else if (n.type() === Cn.TEXT_TYPE) if (t.commentMode) t.nextFilter = Rr, t.nextFilter(e, t, n); else { var r = t.originalToken, o = t.spanCount; t.emitter.closeAllLists(), e.emit(r), dn.each(o, dn.bind(e.emit, e)), e.emit(n), e.commit(), t.originalToken = r, t.nextFilter = kr } else (t.commentMode || n.type() !== Cn.COMMENT_TYPE) && Or(e, n) }, Rr = function (e, t, n) { n.type() === Cn.TEXT_TYPE ? n.isWhitespace() || (t.nextFilter = Fr, t.bulletInfo = { text: n.text(), symbolFont: t.symbolFont }) : zn(n) ? n.type() === Cn.START_ELEMENT_TYPE ? t.spanCount.push(n) : t.spanCount.pop() : n.type() === Cn.START_ELEMENT_TYPE && "IMG" === n.tag() ? (t.nextFilter = Fr, t.bulletInfo = { text: "\u2202", symbolFont: !0 }) : Or(e, n) }, Fr = function (e, t, n) { n.type() === Cn.START_ELEMENT_TYPE && zn(n) ? (t.spanCount.push(n), t.nextFilter = jr) : n.type() === Cn.END_ELEMENT_TYPE && zn(n) ? (t.spanCount.pop(), t.nextFilter = Ur) : n.type() === Cn.END_ELEMENT_TYPE && "IMG" === n.tag() || Or(e, n) }, jr = function (e, t, n) { n.type() === Cn.END_ELEMENT_TYPE && (zn(n) && t.spanCount.pop(), t.nextFilter = Ur) }, Ur = function (o, i, a) { var e = function (e) { var t, n, r; if (i.nextFilter = Br, i.commentMode && (i.itemLevel = i.indentGuesser.guessIndentLevel(a, i.originalToken, i.styles.styles, i.bulletInfo)), i.listType = Er.guessListType(i.bulletInfo, (t = i.emitter.getCurrentListType(), n = i.emitter.getCurrentLevel(), r = i.itemLevel, n === r ? t : null), i.originalToken), i.listType) { for (i.emitter.openItem(i.itemLevel, i.originalToken, i.listType, i.skippedPara), o.emitDeferred(); 0 < i.spanCount.length;)o.emit(i.spanCount.shift()); e && o.emit(a) } else dn.log("Unknown list type: " + i.bulletInfo.text + " Symbol font? " + i.bulletInfo.symbolFont), o.rollback() }; a.type() === Cn.TEXT_TYPE || a.type() === Cn.START_ELEMENT_TYPE ? e(!0) : a.type() === Cn.COMMENT_TYPE ? e("[endif]" !== a.text()) : a.type() === Cn.END_ELEMENT_TYPE ? zn(a) && i.spanCount.pop() : Or(o, a) }, Br = function (e, t, n) { n.type() === Cn.END_ELEMENT_TYPE && n.tag() === t.originalToken.tag() ? (t.nextFilter = Ar, t.skippedPara = !1) : e.emit(n) }, Yr = { initial: Pr }, Hr = {}, Wr = function (e) { Hr.nextFilter = Yr.initial, Hr.itemLevel = 0, Hr.originalToken = null, Hr.commentMode = !1, Hr.openedTag = null, Hr.symbolFont = !1, Hr.listType = null, Hr.indentGuesser = Lr(), Hr.emitter = Dr(e, e.document), Hr.styles = Cr(), Hr.spanCount = [], Hr.skippedPara = !1, Hr.styleLevelAdjust = 0, Hr.bulletInfo = void 0 }; Wr({}); var qr = [pr, An(function (e, t) { Hr.styles.check(t) || (Hr.symbolFont = Er.checkFont(t, Hr.symbolFont), Hr.nextFilter(e, Hr, t)) }, function (e) { Wr(e) }), gr, vr, mr, dr], $r = function (e, t, n, r) { for (var o = Nn(n), i = Dn(e, n), a = function (e, t, n, r) { var o, i = t; for (o = e.length - 1; 0 <= o; o--)i = e[o](i, n, r); return i }(r, o, t, n); i.hasNext();)a.receive(i.next()); return o.dom }, Vr = function (e) { return 0 <= e.indexOf("") || 0 <= e.indexOf("p.MsoNormal, li.MsoNormal, div.MsoNormal") || 0 <= e.indexOf("MsoListParagraphCxSpFirst") || 0 <= e.indexOf("") }, Xr = { filter: function (e, t, n) { var r = Bn.all(e), o = Vr(r); t.setWordContent(o); var i = fr; return o && (i = qr.concat(fr)), $r(r, t, n, i) }, filterPlainText: function (e, t, n) { var r = Bn.textOnly(e); return $r(r, t, n, [Rn]) }, isWordContent: Vr }, Gr = { officeStyles: "prompt", htmlStyles: "clean" }, zr = { openDialog: function (e, t, n) { var r, o = t("cement.dialog.paste.clean"), i = t("cement.dialog.paste.merge"), a = [{ text: o, ariaLabel: o, onclick: function () { r.close(), n("clean") } }, { text: i, ariaLabel: i, onclick: function () { r.close(), n("merge") } }], u = { title: t("cement.dialog.paste.title"), spacing: 10, padding: 10, items: [{ type: "container", html: t("cement.dialog.paste.instructions") }], buttons: a }; r = e.windowManager.open(u), setTimeout(function () { r && r.getEl().focus() }, 1) } }, Kr = { openDialog: function (e, t, n) { var r = t("cement.dialog.paste.clean"), o = t("cement.dialog.paste.merge"), i = { title: t("cement.dialog.paste.title"), body: { type: "panel", items: [{ type: "htmlpanel", name: "instructions", html: t("cement.dialog.paste.instructions") }] }, buttons: [{ text: r, type: "custom", name: "clean" }, { text: o, type: "custom", name: "merge" }], onAction: function (e, t) { switch (t.name) { case "clean": e.close(), n("clean"); break; case "merge": e.close(), n("merge") } } }; e.windowManager.open(i) } }; function Zr(a, u, c) { return { showDialog: function (o) { var e, t = a.settings.powerpaste_word_import || Gr.officeStyles, n = a.settings.powerpaste_html_import || Gr.htmlStyles, r = Xr.isWordContent(o) ? t : n, i = function (e) { var t = { content: o }; a.fire("PastePreProcess", { content: t, internal: !1 }); var n = vn.create(e, e, !0), r = Xr.filter(t.content, n, a.getDoc()); a.fire("PastePostProcess", { node: r, internal: !1 }), a.undoManager.transact(function () { fn.insert(r, a) }) }; "clean" === (e = r) || "merge" === e ? i(r) : (c ? Kr : zr).openDialog(a, u, i) } } } function Jr(u, e, t, r, c) { var s, l = /^image\/(jpe?g|png|gif|bmp)$/i; u.on("dragstart dragend", function (e) { s = "dragstart" === e.type }), u.on("dragover dragend dragleave", function (e) { s || e.preventDefault() }); var f = function (e, t) { return t in e && 0 < e[t].length }, d = function (e) { var t = e["text/plain"]; return !!t && 0 === t.indexOf("file://") }, m = function (e) { an.multiple(e).get(function (e) { var t = W(e, function (e) { var t = cn.fromTag("img"), n = me.cata(e, r.getLocalURL, function (e, t, n) { return t }); return Vt(t, "src", n), t.dom().outerHTML }).join(""); u.insertContent(t, { merge: !1 !== u.settings.paste_merge_formats }), r.uploadImages(e) }) }; u.on("drop", function (e) { if (!s) { if (tinymce.dom.RangeUtils && tinymce.dom.RangeUtils.getCaretRangeFromPoint) { var t = tinymce.dom.RangeUtils.getCaretRangeFromPoint(e.clientX, e.clientY, u.getDoc()); t && u.selection.setRng(t) } var n = (a = (i = e).target.files || i.dataTransfer.files, $(a, function (e) { return l.test(e.type) })); if (0 < n.length) return m(n), void e.preventDefault(); var r = function (e) { var t = {}; if (e) { if (e.getData) { var n = e.getData("Text"); n && 0 < n.length && (t["text/plain"] = n) } if (e.types) for (var r = 0; r < e.types.length; r++) { var o = e.types[r]; t[o] = e.getData(o) } } return t }(e.dataTransfer); d(o = r) || !f(o, "text/html") && !f(o, "text/plain") || (Zr(u, ln.translate, c).showDialog(r["text/html"] || r["text/plain"]), e.preventDefault()) } var o, i, a }) } var Qr = function () { for (var t = [], e = 0; e < arguments.length; e++)t[e] = arguments[e]; return function () { for (var n = [], e = 0; e < arguments.length; e++)n[e] = arguments[e]; if (t.length !== n.length) throw new Error('Wrong number of arguments to struct. Expected "[' + t.length + ']", got ' + n.length + " arguments"); var r = {}; return q(t, function (e, t) { r[e] = v(n[t]) }), r } }, eo = function (e) { return e.slice(0).sort() }, to = function (t, e) { if (!R(e)) throw new Error("The " + t + " fields must be an array. Was: " + e + "."); q(e, function (e) { if (!k(e)) throw new Error("The value " + e + " in the " + t + " fields was not a string.") }) }, no = function (o, i) { var n, a = o.concat(i); if (0 === a.length) throw new Error("You must specify at least one required or optional field."); return to("required", o), to("optional", i), n = eo(a), X(n, function (e, t) { return t < n.length - 1 && e === n[t + 1] }).each(function (e) { throw new Error("The field: " + e + " occurs more than once in the combined fields: [" + n.join(", ") + "].") }), function (t) { var n = te(t); Q(o, function (e) { return Y(n, e) }) || function (e, t) { throw new Error("All required keys (" + eo(e).join(", ") + ") were not specified. Specified keys were: " + eo(t).join(", ") + ".") }(o, n); var e = $(n, function (e) { return !Y(a, e) }); 0 < e.length && function (e) { throw new Error("Unsupported keys for object: " + eo(e).join(", ")) }(e); var r = {}; return q(o, function (e) { r[e] = v(t[e]) }), q(i, function (e) { r[e] = v(Object.prototype.hasOwnProperty.call(t, e) ? _.some(t[e]) : _.none()) }), r } }, ro = Qr("id", "imageresult", "objurl"); function oo() { var o = {}, n = function (e) { kt(e.objurl()) }; return { add: function (e, t, n) { var r = ro(e, t, n); return o[e] = r }, get: function (e) { return _.from(o[e]) }, remove: function (e) { var t = o[e]; delete o[e], void 0 !== t && n(t) }, lookupByData: function (t) { return function (e, t) { for (var n = te(e), r = 0, o = n.length; r < o; r++) { var i = n[r], a = e[i]; if (t(a, i, e)) return _.some(a) } return _.none() }(o, function (e) { return We.imageResultToDataURL(e.imageresult()) === t }) }, destroy: function () { ne(o, n), o = {} } } } function io(e) { var n = Qr.apply(null, e), r = []; return { bind: function (e) { if (void 0 === e) throw "Event bind error: undefined handler"; r.push(e) }, unbind: function (t) { r = $(r, function (e) { return e !== t }) }, trigger: function () { var t = n.apply(null, arguments); q(r, function (e) { e(t) }) } } } var ao = { create: function (e) { return { registry: re(e, function (e) { return { bind: e.bind, unbind: e.unbind } }), trigger: re(e, function (e) { return e.trigger }) } } }, uo = function (e) { return e.replace(/\./g, "-") }, co = function (e, t) { return e + "-" + t }, so = function (e) { var n = uo(e); return { resolve: function (e) { var t = e.split(" "); return W(t, function (e) { return co(n, e) }).join(" ") } } }, lo = { resolve: so("ephox-salmon").resolve }, fo = lo.resolve("upload-image-in-progress"), mo = "data-" + lo.resolve("image-blob"), po = "data-" + lo.resolve("image-upload"), go = { uploadInProgress: v(fo), blobId: v(mo), trackedImage: v(po) }, vo = function (e) { var t = qt(e) ? e.dom().parentNode : e.dom(); return null != t && t.ownerDocument.body.contains(t) }, ho = function (e, t) { for (var n = [], r = function (e) { return n.push(e), t(e) }, o = t(e); (o = o.bind(r)).isSome();); return n }, yo = Ft, bo = Rt, xo = function (e, t) { var n = e.dom(); if (n.nodeType !== yo) return !1; if (void 0 !== n.matches) return n.matches(t); if (void 0 !== n.msMatchesSelector) return n.msMatchesSelector(t); if (void 0 !== n.webkitMatchesSelector) return n.webkitMatchesSelector(t); if (void 0 !== n.mozMatchesSelector) return n.mozMatchesSelector(t); throw new Error("Browser lacks native selectors") }, To = function (e) { return e.nodeType !== yo && e.nodeType !== bo || 0 === e.childElementCount }, Eo = function (e, t) { var n = void 0 === t ? y.document : t.dom(); return To(n) ? [] : W(n.querySelectorAll(e), cn.fromDom) }, wo = function (e, t) { var n = void 0 === t ? y.document : t.dom(); return To(n) ? _.none() : _.from(n.querySelector(e)).map(cn.fromDom) }, Io = function (e, t) { return e.dom() === t.dom() }, So = (At.detect().browser.isIE(), xo), Lo = function (e) { return cn.fromDom(e.dom().ownerDocument) }, Co = function (e) { var t = e.dom(); return _.from(t.parentNode).map(cn.fromDom) }, No = function (e, t) { for (var n = j(t) ? t : v(!1), r = e.dom(), o = []; null !== r.parentNode && void 0 !== r.parentNode;) { var i = r.parentNode, a = cn.fromDom(i); if (o.push(a), !0 === n(a)) break; r = i } return o }, Do = function (e) { var t = e.dom(); return _.from(t.previousSibling).map(cn.fromDom) }, Oo = function (e) { var t = e.dom(); return _.from(t.nextSibling).map(cn.fromDom) }, Ao = function (e) { return t = ho(e, Do), (n = ee.call(t, 0)).reverse(), n; var t, n }, _o = function (e) { var t = e.dom(); return W(t.childNodes, cn.fromDom) }, Po = function (e) { return t = 0, n = e.dom().childNodes, _.from(n[t]).map(cn.fromDom); var t, n }, ko = function (e) { return e.dom().childNodes.length }, Mo = (Qr("element", "offset"), function (e, t) { var n = []; return q(_o(e), function (e) { t(e) && (n = n.concat([e])), n = n.concat(Mo(e, t)) }), n }), Ro = function (e, t) { return Eo(t, e) }, Fo = go.trackedImage(), jo = function (e, t) { return Ro(e, "img[" + Fo + '="' + t + '"]') }, Uo = function (e) { return Ro(e, "img:not([" + Fo + "])[" + go.blobId() + "]") }; function Bo() { var o = [], i = [], e = ao.create({ complete: io(["response"]) }), a = function () { e.trigger.complete(i), i = [] }, u = function () { return 0 < o.length }; return { findById: jo, findAll: Uo, register: function (e, t) { Vt(e, Fo, t), o.push(t) }, report: function (e, t, r) { var n; q(t, function (e) { var t, n; Kt(e, Fo), t = r, n = e, i.push({ success: t, element: n.dom() }) }), n = e, o = $(o, function (e, t) { return e !== n }), !1 === u() && a() }, inProgress: u, isActive: function (e) { return Y(o, e) }, events: e.registry } } var Yo = ue([{ get: [] }, { post: [] }, { put: [] }, { del: [] }]), Ho = { get: Yo.get, post: Yo.post, put: Yo.put, del: Yo.del }, Wo = function (e, t, n, r) { var o = e.bind(function (e) { return e.match({ file: function () { return _.none() }, form: function () { return _.some("application/x-www-form-urlencoded; charset=UTF-8") }, json: function () { return _.some("application/json") }, plain: function () { return _.some("text/plain") }, html: function () { return _.some("text/html") } }) }), i = n.match({ none: _.none, xhr: v(_.some(!0)) }), a = t.match({ json: _.none, blob: v(_.some("blob")), xml: v(_.some("document")), html: v(_.some("document")), text: v(_.some("text")) }), u = t.match({ json: v("application/json, text/javascript"), blob: v("application/octet-stream"), text: v("text/plain"), html: v("text/html"), xml: v("application/xml, text/xml") }) + ", */*; q=0.01", c = r; return { contentType: v(o), credentials: v(i), responseType: v(a), accept: v(u), headers: v(c) } }, qo = function (n, e) { e.contentType().each(function (e) { n.setRequestHeader("Content-Type", e) }); var t = e.accept(); n.setRequestHeader("Accept", t), e.credentials().each(function (e) { n.withCredentials = e }), e.responseType().each(function (e) { n.responseType = e }); var r = e.headers(); ne(r, function (e, t) { k(t) || k(e) ? n.setRequestHeader(t, e) : y.console.error("Request header data was not a string: ", t, " -> ", e) }) }, $o = function (t) { return Xe.nu(function (n) { var e = Se(); e.onload = function (e) { var t = e.target; n(t.result) }, e.readAsText(t) }) }, Vo = function (n) { return { is: function (e) { return n === e }, isValue: I, isError: w, getOr: v(n), getOrThunk: v(n), getOrDie: v(n), or: function (e) { return Vo(n) }, orThunk: function (e) { return Vo(n) }, fold: function (e, t) { return t(n) }, map: function (e) { return Vo(e(n)) }, mapError: function (e) { return Vo(n) }, each: function (e) { e(n) }, bind: function (e) { return e(n) }, exists: function (e) { return e(n) }, forall: function (e) { return e(n) }, toOption: function () { return _.some(n) } } }, Xo = function (n) { return { is: w, isValue: w, isError: I, getOr: m, getOrThunk: function (e) { return e() }, getOrDie: function () { return E(String(n))() }, or: function (e) { return e }, orThunk: function (e) { return e() }, fold: function (e, t) { return e(n) }, map: function (e) { return Xo(n) }, mapError: function (e) { return Xo(e(n)) }, each: C, bind: function (e) { return Xo(n) }, exists: w, forall: I, toOption: _.none } }, Go = { value: Vo, error: Xo }, zo = function () { return we.getOrDie("JSON") }, Ko = { parse: function (e) { return zo().parse(e) }, stringify: function (e, t, n) { return zo().stringify(e, t, n) } }, Zo = function (e) { try { var t = Ko.parse(e); return Go.value(t) } catch (e) { return Go.error("Response was not JSON") } }, Jo = no(["message", "status", "responseText"], []), Qo = function (e) { var t = Jo(e); return t.toString = t.message, t }, ei = { handle: function (n, e, r) { var t = function () { return Xe.pure(r.response) }; return e.match({ json: function () { return Zo(r.response).fold(t, Xe.pure) }, blob: function () { return e = r, _.from(e.response).map($o).getOr(Xe.pure("no response content")); var e }, text: t, html: t, xml: t }).map(function (e) { var t = 0 === r.status ? "Unknown HTTP error (possible cross-domain request)" : 'Could not load url "' + n + '": ' + r.statusText; return Qo({ message: t, status: r.status, responseText: e }) }) }, nu: Qo }, ti = function () { return (ti = Object.assign || function (e) { for (var t, n = 1, r = arguments.length; n < r; n++)for (var o in t = arguments[n]) Object.prototype.hasOwnProperty.call(t, o) && (e[o] = t[o]); return e }).apply(this, arguments) }, ni = function (i) { return ti({}, i, { toCached: function () { return ni(i.toCached()) }, bindFuture: function (t) { return ni(i.bind(function (e) { return e.fold(function (e) { return Xe.pure(Go.error(e)) }, function (e) { return t(e) }) })) }, bindResult: function (t) { return ni(i.map(function (e) { return e.bind(t) })) }, mapResult: function (t) { return ni(i.map(function (e) { return e.map(t) })) }, mapError: function (t) { return ni(i.map(function (e) { return e.mapError(t) })) }, foldResult: function (t, n) { return i.map(function (e) { return e.fold(t, n) }) }, withTimeout: function (e, o) { return ni(Xe.nu(function (t) { var n = !1, r = window.setTimeout(function () { n = !0, t(Go.error(o())) }, e); i.get(function (e) { n || (window.clearTimeout(r), t(e)) }) })) } }) }, ri = function (e) { return ni(Xe.nu(e)) }, oi = function (e) { return ni(Xe.pure(Go.value(e))) }, ii = ri, ai = oi, ui = function (e) { return ni(Xe.pure(Go.error(e))) }, ci = function (e, t) { var n, r, o = function () { return ai(t.response) }, i = function (e) { return ei.nu({ message: e, status: t.status, responseText: t.responseText }) }; return e.match({ json: function () { return Zo(t.response).fold(function (e) { return ui(i(e)) }, ai) }, blob: o, text: o, html: o, xml: (n = "Invalid XML document", r = o, function () { return r().bindResult(function (e) { return null === e ? Go.error(i(n)) : Go.value(e) }) }) }) }, si = function (i, a, u, c, s, e) { var l = void 0 !== e ? e : {}; return ii(function (t) { var e = a.match({ get: v("get"), put: v("put"), post: v("post"), del: v("delete") }), n = new (we.getOrDie("XMLHttpRequest")); n.open(e, i, !0); var r = Wo(u, c, s, l); qo(n, r); var o = function () { ei.handle(i, c, n).get(function (e) { t(Go.error(e)) }) }; n.onload = function () { 0 !== n.status || Et(i, "file:") ? n.status < 100 || 400 <= n.status ? o() : ci(c, n).get(t) : o() }, n.onerror = o, u.fold(function () { n.send() }, function (e) { var t = e.match({ file: m, form: m, json: Ko.stringify, plain: m, html: m }); n.send(t) }) }).toLazy() }, li = ue([{ file: ["data"] }, { form: ["data"] }, { json: ["data"] }, { plain: ["data"] }, { html: ["data"] }]), fi = { file: li.file, form: li.form, json: li.json, plain: li.plain, html: li.html }, di = ue([{ none: [] }, { xhr: [] }]), mi = { none: di.none, xhr: di.xhr }, pi = ue([{ json: [] }, { blob: [] }, { text: [] }, { html: [] }, { xml: [] }]), gi = { json: pi.json, blob: pi.blob, text: pi.text, html: pi.html, xml: pi.xml, cata: function (e, t, n, r, o, i) { return e.match({ json: t, blob: n, text: r, html: o, xml: i }) } }, vi = Qr("message", "status", "contents"), hi = ["jpg", "png", "gif", "jpeg"], yi = { failureObject: vi, getFilename: function (e, t) { return k(e.name) && !wt(e.name, ".tmp") ? e.name : function (e, t) { if (k(e.type) && Et(e.type, "image/")) { var n = e.type.substr("image/".length); return Y(hi, n) ? t + "." + n : t } return t }(e, t) }, buildData: function (e, t, n) { var r = new (we.getOrDie("FormData")); return r.append(e, t, n), r } }, bi = function (e) { var t = ""; return "" !== e.protocol && (t += e.protocol, t += ":"), "" !== e.authority && (t += "//", t += e.authority), t += e.path, "" !== e.query && (t += "?", t += e.query), "" !== e.anchor && (t += "#", t += e.anchor), t }, xi = { strictMode: !1, key: ["source", "protocol", "authority", "userInfo", "user", "password", "host", "port", "relative", "path", "directory", "file", "query", "anchor"], q: { name: "queryKey", parser: /(?:^|&)([^&=]*)=?([^&]*)/g }, parser: { strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@\/]*)(?::([^:@\/]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/, loose: /^(?:(?![^:@\/]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*)(?::([^:@\/]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/ } }, Ti = function (e, t) { return function (e, t) { for (var r = t, n = r.parser[r.strictMode ? "strict" : "loose"].exec(e), o = {}, i = 14; i--;)o[r.key[i]] = n[i] || ""; return o[r.q.name] = {}, o[r.key[12]].replace(r.q.parser, function (e, t, n) { t && (o[r.q.name][t] = n) }), o }(e, fe(xi, t)) }, Ei = function (e) { return bt(e, wi(e)) }, wi = function (e) { return e.substring(e.lastIndexOf("/")) }, Ii = function (e) { for (var t = e, n = ""; "" !== t;)if (Et(t, "../")) t = yt(t, "../"); else if (Et(t, "./")) t = yt(t, "./"); else if (Et(t, "/./")) t = "/" + yt(t, "/./"); else if ("/." === t) t = "/"; else if (Et(t, "/../")) t = "/" + yt(t, "/../"), n = Ei(n); else if ("/.." === t) t = "/", n = Ei(n); else if ("." === t || ".." === t) t = ""; else { var r = t.match(/(^\/?.*?)(\/|$)/)[1]; t = yt(t, r), n += r } return n }, Si = function (e, t, n) { if ("" !== n && "" === e) return "/" + t; var r = e.substring(e.lastIndexOf("/") + 1); return bt(e, r) + t }, Li = function (e, t) { var n = { strictMode: !0 }, r = Ti(e, n), o = Ti(t, n), i = {}; return "" !== o.protocol ? (i.protocol = o.protocol, i.authority = o.authority, i.path = Ii(o.path), i.query = o.query) : ("" !== o.authority ? (i.authority = o.authority, i.path = Ii(o.path), i.query = o.query) : ("" === o.path ? (i.path = r.path, "" !== o.query ? i.query = o.query : i.query = r.query) : (Et(o.path, "/") ? i.path = Ii(o.path) : (i.path = Si(r.path, o.path, e.authority), i.path = Ii(i.path)), i.query = o.query), i.authority = r.authority), i.protocol = r.protocol), i.anchor = o.anchor, i }, Ci = function (e, t) { var n = Li(e, t); return bi(n) }; function Ni(d) { var e, t, n, r, m = (e = d.url, t = e.lastIndexOf("/"), n = 0 < t ? e.substr(0, t) : e, r = void 0 === d.basePath ? n : d.basePath, wt(r, "/") ? r : r + "/"), o = function (e, t, l) { var n, r, o, i, a, u, f = yi.getFilename(e, t), c = !0 === d.credentials ? mi.xhr() : mi.none(), s = fi.file(yi.buildData("image", e, f)); (n = d.url, r = s, o = gi.text(), i = c, u = Ho.post(), si(n, u, _.some(r), o, i, a)).map(function (e) { e.fold(function (e) { l(Go.error(yi.failureObject(e.message(), e.status(), e.responseText()))) }, function (t) { var n, e, r, o; try { var i = Ko.parse(t); if (!k(i.location)) return e = "JSON response did not contain a string location", r = 500, o = t, void l(Go.error(yi.failureObject(e, r, o))); n = i.location } catch (e) { n = t } var a, u, c, s = (a = f, u = n.split(/\s+/), c = 1 === u.length && "" !== u[0] ? u[0] : a, Ci(m, c)); l(Go.value({ location: s })) }) }) }; return { upload: function (e, t, n) { var r = e.imageresult(); We.imageResultToBlob(r).then(function (e) { o(e, t, n) }) } } } Qr("id", "filename", "blob", "base64"); var Di = function (e) { return Ni(e) }, Oi = function (e, t) { var n = Gt(e, t); return void 0 === n || "" === n ? [] : n.split(" ") }, Ai = function (e) { return void 0 !== e.dom().classList }, _i = function (e) { return Oi(e, "class") }, Pi = function (e, t) { return o = t, i = Oi(n = e, r = "class").concat([o]), Vt(n, r, i.join(" ")), !0; var n, r, o, i }, ki = function (e, t) { return o = t, 0 < (i = $(Oi(n = e, r = "class"), function (e) { return e !== o })).length ? Vt(n, r, i.join(" ")) : Kt(n, r), !1; var n, r, o, i }, Mi = function (e, t) { Ai(e) ? e.dom().classList.add(t) : Pi(e, t) }, Ri = function (e, t) { var n; Ai(e) ? e.dom().classList.remove(t) : ki(e, t), 0 === (Ai(n = e) ? n.dom().classList : _i(n)).length && Kt(n, "class") }, Fi = function (e, t) { return Ai(e) && e.dom().classList.contains(t) }, ji = function (t, e) { q(e, function (e) { Mi(t, e) }) }, Ui = function (e) { return Ai(e) ? function (e) { for (var t = e.dom().classList, n = new Array(t.length), r = 0; r < t.length; r++)n[r] = t.item(r); return n }(e) : _i(e) }, Bi = function (t) { return function (e) { return Fi(e, t) } }, Yi = function (e, t, n) { for (var r = e.dom(), o = j(n) ? n : v(!1); r.parentNode;) { r = r.parentNode; var i = cn.fromDom(r); if (t(i)) return _.some(i); if (o(i)) break } return _.none() }, Hi = function (e, t) { return X(e.dom().childNodes, g(t, cn.fromDom)).map(cn.fromDom) }, Wi = function (e, r) { var o = function (e) { for (var t = 0; t < e.childNodes.length; t++) { if (r(cn.fromDom(e.childNodes[t]))) return _.some(cn.fromDom(e.childNodes[t])); var n = o(e.childNodes[t]); if (n.isSome()) return n } return _.none() }; return o(e.dom()) }, qi = function (e) { return wo(e) }, $i = function (e, t, n) { return Yi(e, function (e) { return xo(e, t) }, n) }, Vi = function (e, t) { return wo(t, e) }, Xi = function (e, t, n) { return r = $i, a = n, xo(o = e, i = t) ? _.some(o) : j(a) && a(o) ? _.none() : r(o, i, a); var r, o, i, a }, Gi = Qr("image", "blobInfo"), zi = ue([{ failure: ["error"] }, { success: ["result", "images", "blob"] }]), Ki = function (e, t, n, r, o) { var i = We.imageResultToDataURL(n), a = e.lookupByData(i).getOrThunk(function () { return e.add(t, n, r) }); return Vt(o, go.blobId(), a.id()), Gi(o, a) }, Zi = function (t, n) { return t.get(n).fold(function () { return Go.error("Internal error with blob cache") }, function (e) { return t.remove(n), Go.value(e) }) }, Ji = function (e, t, n) { var r = e.isActive(t); return e.register(n, t), Mi(n, go.uploadInProgress()), r ? _.none() : _.some(t) }, Qi = function (e, n, a, r, u, t, c) { var s = function () { y.console.error("Internal error with blob cache", u), c(zi.failure({ status: v(666) })) }; e.upload(t, u, function (e) { var t, i = n.findById(r, u); q(i, (t = go.uploadInProgress(), function (e) { Ri(e, t) })), e.fold(function (e) { c(zi.failure(e)) }, function (t) { var e, n, r, o; (e = a, n = i, r = u, o = t, q(n, function (e) { Vt(e, "src", o.location), Kt(e, go.blobId()) }), Zi(e, r)).fold(s, function (e) { c(zi.success(t, i, e)) }) }), n.report(u, i, e.isValue()) }) }, ea = function (o, i, e) { return J(e, function (e) { return me.cata(e, function (t, n, r) { return Vi(i, 'img[src="' + r + '"]').fold(function () { return [Go.error("Image that was just inserted could not be found: " + r)] }, function (e) { return [Go.value(Ki(o, t, n, r, e))] }) }, v([])) }) }, ta = function (e, o, t) { var n = e.findAll(t); return e.inProgress() ? [] : W(n, function (e) { return t = o, r = Gt(n = e, go.blobId()), t.get(r).fold(function () { return Go.error(r) }, function (e) { return Go.value(Gi(n, e)) }); var t, n, r }) }, na = function (e) { return parseInt(e, 10) }, ra = function (e, t, n) { return { major: v(e), minor: v(t), patch: v(n) } }, oa = { getTinymceVersion: function () { var e, t, n = [tinymce.majorVersion, tinymce.minorVersion].join("."); return e = n.split(".").slice(0, 3).join("."), (t = /([0-9]+)\.([0-9]+)\.([0-9]+)(?:(\-.+)?)/.exec(e)) ? ra(na(t[1]), na(t[2]), na(t[3])) : ra(0, 0, 0) } }; function ia(c) { var s = function (e, t) { return v(4 === (o = oa.getTinymceVersion()).major() && o.minor() < 6 ? e : e + "." + (n = t.toLowerCase(), (r = { "image/jpeg": "jpg", "image/jpg": "jpg", "image/gif": "gif", "image/png": "png" }).hasOwnProperty(n) ? r[n] : "dat")); var n, r, o }; return { importImages: function (e) { var t = J(e, function (e) { return me.cata(e, function (e, t, n) { var r, o, i, a, u = We.imageResultToDataURL(t); return [(r = e, o = t, i = u, a = n, Xe.nu(function (t) { We.imageResultToOriginalBlob(o).then(function (e) { c.editorUpload.blobCache.add({ id: v(r), name: v(r), filename: s(r, e.type), blob: v(e), base64: v(i.split(",")[1]), blobUri: v(a), uri: v(null) }), t(e) }) }))] }, v([])) }); return ze(t) }, uploadImages: function () { c.uploadImages() }, prepareImages: C, getLocalURL: function (e, t, n) { return We.imageResultToDataURL(t) } } } var aa = function (e, t) { var n = (t || y.document).createElement("div"); return n.innerHTML = e, _o(cn.fromDom(n)) }, ua = function (t, n) { Co(t).each(function (e) { e.dom().insertBefore(n.dom(), t.dom()) }) }, ca = function (e, t) { Oo(e).fold(function () { Co(e).each(function (e) { la(e, t) }) }, function (e) { ua(e, t) }) }, sa = function (t, n) { Po(t).fold(function () { la(t, n) }, function (e) { t.dom().insertBefore(n.dom(), e.dom()) }) }, la = function (e, t) { e.dom().appendChild(t.dom()) }, fa = function (e, t) { ua(e, t), la(t, e) }, da = function (r, o) { q(o, function (e, t) { var n = 0 === t ? r : o[t - 1]; ca(n, e) }) }, ma = function (t, e) { q(e, function (e) { la(t, e) }) }, pa = function (e) { Ri(e, go.uploadInProgress()) }, ga = function (e) { for (var t = 0; t < e.undoManager.data.length; t++) { var n = e.undoManager.data[t].content, r = cn.fromTag("div"); ma(r, aa(n)); var o = Ro(r, "." + go.uploadInProgress()); q(o, pa), e.undoManager.data[t].content = r.dom().innerHTML } }, va = function (e, t, n) { for (var r = 0; r < e.undoManager.data.length; r++)e.undoManager.data[r].content = e.undoManager.data[r].content.split(t.objurl()).join(n.location) }, ha = { showDialog: function (e, t) { var n, r = { title: "Error", spacing: 10, padding: 10, items: [{ type: "container", html: t }], buttons: [{ text: "Ok", onclick: function () { n.close() } }] }; n = e.windowManager.open(r) } }, ya = function (r, e) { var o, t, i, a, u, n, c = oo(), s = Bo(), l = (o = r, t = e.url, i = ha, a = function () { return ln.translate("error.code.images.not.found") + t + ln.translate("error.full.stop") }, u = function () { return ln.translate("error.imageupload") + t + ln.translate("error.full.stop") }, n = function (e) { var t = e.status(), n = 0 === t || 400 <= t || t < 500 ? a : u; i.showDialog(o, n()) }, { instance: function () { return e = n, t = !1, function () { t || (t = !0, e.apply(null, arguments)) }; var e, t } }), f = Di(e), d = function () { return cn.fromDom(r.getBody()) }, m = function (t, e, n) { q(e, function (e) { Vt(e, "data-mce-src", t.location) }), va(r, n, t) }; s.events.complete.bind(function (e) { ga(r) }); var p = function (o, i) { Ji(s, o.blobInfo().id(), o.image()).each(function (e) { var t, n, r; t = e, n = o.blobInfo(), r = i, Qi(f, s, c, d(), t, n, function (e) { e.fold(function (e) { r(e) }, m) }) }) }; return { importImages: function () { return Xe.pure([]) }, uploadImages: function (e) { var t, n, r, o, i; t = l.instance(), n = ta(s, c, d()), q(n, function (e) { e.fold(function (e) { s.report(e, _.none(), !1) }, function (e) { p(e, t) }) }), r = e, o = l.instance(), i = ea(c, d(), r), q(i, function (e) { e.fold(function (e) { console.error(e) }, function (e) { p(e, o) }) }) }, prepareImages: C, getLocalURL: function (e, t, n) { return n } } }, ba = function (o) { var e = ia(o); return { importImages: function () { return Xe.pure([]) }, uploadImages: C, prepareImages: function (e) { q(e, function (e) { me.cata(e, function (e, t, n) { var r = We.imageResultToDataURL(t); q(o.dom.select('img[src="' + n + '"]'), function (e) { o.dom.setAttrib(e, "src", r) }) }, C) }) }, getLocalURL: e.getLocalURL } }; function xa(e) { return void 0 !== e.uploadImages ? ia(e) : function (e) { if (a(e)) { var t = { url: e.settings.images_upload_url, basePath: e.settings.images_upload_base_path, credentials: e.settings.images_upload_credentials }; return ya(e, t) } return ba(e) }(e) } var Ta = function (t, r, e, n) { var o, i, a, u, c, s = t.selection, l = t.dom, f = t.getBody(); if (c = e.isText(), e.reset(), n.clipboardData && n.clipboardData.getData("text/html")) { n.preventDefault(); var d = n.clipboardData.getData("text/html"), m = d.match(//i), p = null === m ? d : m[0]; return r(p) } if (!l.get("_mcePaste")) { if (o = l.add(f, "div", { id: "_mcePaste", class: "mcePaste" }, '\ufeff '), u = f !== t.getDoc().body ? l.getPos(t.selection.getStart(), f).y : f.scrollTop, l.setStyles(o, { position: "absolute", left: -1e4, top: u, width: 1, height: 1, overflow: "hidden" }), tinymce.isIE) return (a = l.doc.body.createTextRange()).moveToElementText(o), a.execCommand("Paste"), l.remove(o), "\ufeff" === o.innerHTML ? (t.execCommand("mcePasteWord"), void n.preventDefault()) : (r(c ? o.innerText : o.innerHTML), tinymce.dom.Event.cancel(n)); var g = function (e) { e.preventDefault() }; if (l.bind(t.getDoc(), "mousedown", g), l.bind(t.getDoc(), "keydown", g), tinymce.isGecko && (a = t.selection.getRng(!0)).startContainer === a.endContainer && 3 === a.startContainer.nodeType) { var v = l.select("p,h1,h2,h3,h4,h5,h6,pre", o); 1 === v.length && l.remove(v.reverse(), !0) } i = t.selection.getRng(), o = o.firstChild, (a = t.getDoc().createRange()).setStart(o, 0), a.setEnd(o, 1), s.setRng(a), window.setTimeout(function () { var n = "", e = l.select("div.mcePaste"); dn.each(e, function (e) { var t = e.firstChild; t && "DIV" === t.nodeName && t.style.marginTop && t.style.backgroundColor && l.remove(t, 1), dn.each(l.select("div.mcePaste", e), function (e) { l.remove(e, 1) }), dn.each(l.select("span.Apple-style-span", e), function (e) { l.remove(e, 1) }), dn.each(l.select("br[_mce_bogus]", e), function (e) { l.remove(e) }), n += e.innerHTML }), dn.each(e, function (e) { l.remove(e) }), i && s.setRng(i), r(n), l.unbind(t.getDoc(), "mousedown", g), l.unbind(t.getDoc(), "keydown", g) }, 0) } }, Ea = { getOnPasteFunction: function (t, n, r) { return function (e) { Ta(t, n, r, e) } }, getOnKeyDownFunction: function (t, n, r) { return function (e) { (tinymce.isOpera || 0 < navigator.userAgent.indexOf("Firefox/2")) && ((tinymce.isMac ? e.metaKey : e.ctrlKey) && 86 === e.keyCode || e.shiftKey && 45 === e.keyCode) && Ta(t, n, r, e) } } }, wa = ["officeStyles", "htmlStyles", "isWord", "isGoogleDocs", "proxyBin", "isInternal", "backgroundAssets"], Ia = no([], wa), Sa = { nu: Ia, merge: function (e, n) { var r = {}; return q(wa, function (t) { n[t]().or(e[t]()).each(function (e) { r[t] = e }) }), Ia(r) } }, La = ue([{ error: ["message"] }, { paste: ["elements", "correlated"] }, { cancel: [] }, { incomplete: ["elements", "correlated", "message"] }]), Ca = function (e, t, n, r, o) { return e.fold(t, n, r, o) }, Na = { error: La.error, paste: La.paste, cancel: La.cancel, incomplete: La.incomplete, cata: Ca, carry: function (e, r) { return Ca(e, _.none, _.none, _.none, function (e, t, n) { return Ca(r, _.none, function (e, t) { return _.some(La.incomplete(e, t, n)) }, _.none, _.none) }).getOr(r) } }, Da = no(["response", "bundle"], []), Oa = function (t) { return Aa(function (e) { e(Da(t)) }) }, Aa = function (t) { var e = function (e) { t(e) }, o = Aa; return { get: e, map: function (r) { return o(function (n) { e(function (e) { var t = r(e); n(t) }) }) }, bind: function (n) { return o(function (t) { e(function (e) { n(e).get(t) }) }) } } }, _a = { call: function (e, t) { e(Da(t)) }, sync: Aa, pure: Oa, pass: function (e) { return Oa({ response: e.response(), bundle: e.bundle() }) }, done: Da, error: function (e) { return Oa({ response: Na.error(e), bundle: Sa.nu({}) }) }, initial: function () { return Oa({ response: Na.paste([], []), bundle: Sa.nu({}) }) }, cancel: function () { return Oa({ response: Na.cancel(), bundle: Sa.nu({}) }) } }, Pa = function (e, t) { for (var n = 0; n < e.length; n++) { var r = t(e[n], n); if (r.isSome()) return r } return _.none() }, ka = Qr("steps", "input", "label", "capture"), Ma = { choose: function (e, t, n) { var r; return (r = n, Pa(e, function (t) { return t.getAvailable(r).map(function (e) { return ka(t.steps(), e, t.label(), t.capture()) }) })).getOrThunk(function () { var e = t.getAvailable(n); return ka(t.steps(), e, t.label(), t.capture()) }) }, run: function (e, a) { return V(e, function (e, i) { return e.bind(function (e) { var r, t, n, o; return r = e, t = function () { return i(a, e) }, n = N(_a.pass, r), o = function () { return t().map(function (e) { var t = Sa.merge(r.bundle(), e.bundle()), n = Na.carry(r.response(), e.response()); return _a.done({ response: n, bundle: t }) }) }, Na.cata(r.response(), n, o, n, o) }) }, _a.initial()) } }, Ra = function (e) { e.dom().textContent = "", q(_o(e), function (e) { Fa(e) }) }, Fa = function (e) { var t = e.dom(); null !== t.parentNode && t.parentNode.removeChild(t) }, ja = function (e) { var t, n = _o(e); 0 < n.length && (t = e, q(n, function (e) { ua(t, e) })), Fa(e) }, Ua = function (e) { return t = e, n = !1, cn.fromDom(t.dom().cloneNode(n)); var t, n }, Ba = function (e) { return void 0 !== e.style }, Ya = function (e, t, n) { if (!k(n)) throw y.console.error("Invalid call to CSS.set. Property ", t, ":: Value ", n, ":: Element ", e), new Error("CSS value must be a string: " + n); Ba(e) && e.style.setProperty(t, n) }, Ha = function (e, t, n) { var r = e.dom(); Ya(r, t, n) }, Wa = function (e, t) { var n = e.dom(); ne(t, function (e, t) { Ya(n, t, e) }) }, qa = function (e, t) { var n = e.dom(), r = y.window.getComputedStyle(n).getPropertyValue(t), o = "" !== r || vo(e) ? r : $a(n, t); return null === o ? void 0 : o }, $a = function (e, t) { return Ba(e) ? e.style.getPropertyValue(t) : "" }, Va = function (e, t) { var n = e.dom(), r = $a(n, t); return _.from(r).filter(function (e) { return 0 < e.length }) }, Xa = function (e, t) { var n, r, o = e.dom(); r = t, Ba(n = o) && n.style.removeProperty(r), zt(e, "style") && "" === It(Gt(e, "style")) && Kt(e, "style") }, Ga = function (e) { return Ht(e) ? (t = "v:shape", n = e.dom().nodeValue, r = cn.fromTag("div"), o = n.indexOf("]>"), r.dom().innerHTML = n.substr(o + "]>".length), Wi(r, function (e) { return Ut(e) === t })) : _.none(); var t, n, r, o }, za = function (e) { return Ro(e, ".rtf-data-image") }, Ka = { local: function (e) { if ("img" === Ut(e)) { var t = Gt(e, "src"); if (null != t && Et(t, "file://")) { var n = Ua(e), r = t.split(/[\/\\]/), o = r[r.length - 1]; return Vt(n, "data-image-id", o), Kt(n, "src"), Vt(n, "data-image-type", "local"), Mi(n, "rtf-data-image"), _.some(n) } return _.none() } return _.none() }, vshape: function (e) { return Ga(e).map(function (e) { var t = Gt(e, "o:spid"), n = void 0 === t ? Gt(e, "id") : t, r = cn.fromTag("img"); return Mi(r, "rtf-data-image"), Vt(r, "data-image-id", n.substr("_x0000_".length)), Vt(r, "data-image-type", "code"), Wa(r, { width: qa(e, "width"), height: qa(e, "height") }), r }) }, find: za, exists: function (e) { return 0 < za(e).length }, scour: Ga }, Za = function () { return /^(mso-.*|tab-stops|tab-interval|language|text-underline|text-effect|text-line-through|font-color|horiz-align|list-image-[0-9]+|separator-image|table-border-color-(dark|light)|vert-align|vnd\..*)$/ }, Ja = function () { return /^(font|em|strong|samp|acronym|cite|code|dfn|kbd|tt|b|i|u|s|sub|sup|ins|del|var|span)$/ }, Qa = ue([{ starts: ["value", "f"] }, { pattern: ["regex", "f"] }, { contains: ["value", "f"] }, { exact: ["value", "f"] }, { all: [] }, { not: ["stringMatch"] }]), eu = function (e, n) { return e.fold(function (e, t) { return 0 === t(n).indexOf(t(e)) }, function (e, t) { return e.test(t(n)) }, function (e, t) { return 0 <= t(n).indexOf(t(e)) }, function (e, t) { return t(n) === t(e) }, function () { return !0 }, function (e) { return !eu(e, n) }) }, tu = { starts: Qa.starts, pattern: Qa.pattern, contains: Qa.contains, exact: Qa.exact, all: Qa.all, not: Qa.not, cata: function (e, t, n, r, o, i, a) { return e.fold(t, n, r, o, i, a) }, matches: eu, caseSensitive: function (e) { return e }, caseInsensitive: function (e) { return e.toLowerCase() } }, nu = function (e, t, n, r) { var o = r.name, i = void 0 !== r.condition ? r.condition : v(!0), a = void 0 !== r.value ? r.value : tu.all(); return tu.matches(o, n) && tu.matches(a, t) && i(e) }, ru = function (e, t) { var n = Ut(e), r = t.name, o = void 0 !== t.condition ? t.condition : v(!0); return tu.matches(r, n) && o(e) }, ou = function (e, t) { var n = {}; return q(e.dom().attributes, function (e) { t(e.value, e.name) || (n[e.name] = e.value) }), n }, iu = function (e, t, n) { var r, o, i = W(e.dom().attributes, function (e) { return e.name }); ae(t) !== i.length && (r = e, o = t, q(i, function (e) { Kt(r, e) }), ne(o, function (e, t) { Vt(r, t, e) })) }, au = (v({}), function (t) { var e = te(t); return W(e, function (e) { return e + ": " + t[e] }).join("; ") }), uu = function (r, o) { var e = r.dom().style, i = {}; return q(null == e ? [] : e, function (e) { var t, n = (t = e, r.dom().style.getPropertyValue(t)); o(n, e) || (i[e] = n) }), i }, cu = function (n, e, t) { Vt(n, "style", ""); var r = ae(e), o = ae(t); if (0 === r && 0 === o) Kt(n, "style"); else if (0 === r) Vt(n, "style", au(t)); else { ne(e, function (e, t) { Ha(n, t, e) }); var i = Gt(n, "style"), a = 0 < o ? au(t) + "; " : ""; Vt(n, "style", a + i) } }, su = function (e, t, n) { var r, o, i, a = e.dom().getAttribute("style"), u = (o = {}, i = null != (r = a) ? r.split(";") : [], q(i, function (e) { var t = e.split(":"); 2 === t.length && (o[It(t[0])] = It(t[1])) }), o), c = {}; return q(t, function (e) { var t = u[e]; void 0 === t || n(t, e) || (c[e] = t) }), c }, lu = ["mso-list"], fu = function (e, t) { var n = su(e, lu, t), r = uu(e, t); cu(e, r, n) }, du = function (e, t) { var n = ou(e, t); iu(e, n, {}) }, mu = fu, pu = du, gu = function (e, t) { fu(cn.fromDom(e), t) }, vu = function (e, r, o) { e(o, function (t, n) { return H(r, function (e) { return nu(o, t, n, e) }) }) }, hu = function (e, t) { var r = fe({ styles: [], attributes: [], classes: [], tags: [] }, t), n = Ro(e, "*"); q(n, function (n) { vu(mu, r.styles, n), vu(pu, r.attributes, n), q(r.classes, function (t) { var e = zt(n, "class") ? Ui(n) : []; q(e, function (e) { tu.matches(t.name, e) && Ri(n, e) }) }) }); var o = Ro(e, "*"); q(o, function (e) { H(r.tags, N(ru, e)) && Fa(e) }) }, yu = function (e, t) { var n = fe({ tags: [] }, t), r = Ro(e, "*"); q(r, function (e) { H(n.tags, N(ru, e)) && ja(e) }) }, bu = function (e, t) { var n = fe({ tags: [] }, t), r = Ro(e, "*"); q(r, function (t) { X(n.tags, N(ru, t)).each(function (e) { e.mutate(t) }) }) }, xu = "startElement", Tu = "endElement", Eu = "comment", wu = function (e, t, n) { var r, o, i, a = cn.fromDom(e); switch (e.nodeType) { case 1: t ? r = Tu : (r = xu, Wa(a, n || {})), o = "HTML" !== e.scopeName && e.scopeName && e.tagName && e.tagName.indexOf(":") <= 0 ? (e.scopeName + ":" + e.tagName).toUpperCase() : e.tagName; break; case 3: r = "text", i = e.nodeValue; break; case 8: r = Eu, i = e.nodeValue; break; default: y.console.log("WARNING: Unsupported node type encountered: " + e.nodeType) }return { getNode: function () { return e }, tag: function () { return o }, type: function () { return r }, text: function () { return i } } }, Iu = function (e, t) { return wu(t.createElement(e), !0) }, Su = Iu("HTML", y.window.document), Lu = { START_ELEMENT_TYPE: xu, END_ELEMENT_TYPE: Tu, TEXT_TYPE: "text", COMMENT_TYPE: Eu, FINISHED: Su, token: wu, createStartElement: function (e, t, n, r) { var o = r.createElement(e); return ne(t, function (e, t) { o.setAttribute(t, e) }), wu(o, !1, n) }, createEndElement: Iu, createComment: function (e, t) { return wu(t.createComment(e), !1) }, createText: function (e, t) { return wu(t.createTextNode(e)) } }, Cu = function (i) { var a = i.createDocumentFragment(), u = a, c = function (e) { a.appendChild(e) }; return { dom: u, receive: function (e) { var t, n, r, o; switch (e.type()) { case Lu.START_ELEMENT_TYPE: o = e.getNode().cloneNode(!1), c(r = o), a = r; break; case Lu.TEXT_TYPE: t = e, n = i.createTextNode(t.text()), c(n); break; case Lu.END_ELEMENT_TYPE: null === (a = a.parentNode) && (a = u); break; case Lu.COMMENT_TYPE: break; default: throw { message: "Unsupported token type: " + e.type() } } }, label: "SERIALISER" } }, Nu = function (e, o) { var i; o = o || y.window.document, i = o.createElement("div"), o.body.appendChild(i), i.style.position = "absolute", i.style.left = "-10000px", i.innerHTML = e; var a = i.firstChild || Lu.FINISHED, u = [], c = !1; return { hasNext: function () { return void 0 !== a }, next: function () { var e, t, n = a, r = c; return !c && a.firstChild ? (u.push(a), a = a.firstChild) : c || 1 !== a.nodeType ? a.nextSibling ? (a = a.nextSibling, c = !1) : (a = u.pop(), c = !0) : c = !0, n === Lu.FINISHED || a || (o.body.removeChild(i), a = Lu.FINISHED), t = r, (e = n) === Lu.FINISHED ? e : e ? Lu.token(e, t) : void 0 } } }, Du = function (e, t, n) { var r, o = n; for (r = t.length - 1; 0 <= r; r--)o = t[r](o, {}, e); return o }, Ou = function (e, t, n) { for (var r = Cu(e), o = Nu(t, e), i = Du(e, n, r); o.hasNext();) { var a = o.next(); i.receive(a) } return r.dom }, Au = function (e) { return e.dom().innerHTML }, _u = function (e, t) { var n = Lo(e).dom(), r = cn.fromDom(n.createDocumentFragment()), o = aa(t, n); ma(r, o), Ra(e), la(e, r) }, Pu = function (t) { return function (e) { hu(e, t) } }, ku = function (t) { return function (e) { yu(e, t) } }, Mu = function (t) { return function (e) { bu(e, t) } }, Ru = function (o) { return function (e) { var t = Au(e), n = Lo(e), r = Ou(n.dom(), t, o); Ra(e), e.dom().appendChild(r) } }, Fu = function (e, t) { return 0 <= e.indexOf("") || t.browser.isEdge() && 0 <= e.indexOf('v:shapes="') || t.browser.isEdge() && 0 <= e.indexOf("mso-") || 0 <= e.indexOf("mso-list") || 0 <= e.indexOf("p.MsoNormal, li.MsoNormal, div.MsoNormal") || 0 <= e.indexOf("MsoListParagraphCxSpFirst") || 0 <= e.indexOf("") }, ju = function (e, t, n) { var r = cn.fromTag("div", e.dom()); return r.dom().innerHTML = t, q(n, function (e) { e(r) }), Au(r) }; function Uu(a, u, e) { return function (t, e, n) { var r = function (e) { t.receive(e) }, o = function (e, t, n) { return n = void 0 !== n ? n : e.type() === Lu.END_ELEMENT_TYPE, Lu.token(t, n, {}) }, i = { emit: r, emitTokens: function (e) { q(e, r) }, receive: function (e) { a(i, e, o) }, document: y.window.document }; return u(i), i } } var Bu = function (e, t) { var n = cn.fromDom(e.getNode()); return Gt(n, t) }, Yu = function (e, t) { var n = cn.fromDom(e.getNode()); return qa(n, t) }, Hu = function (e) { return e.type() === Lu.TEXT_TYPE && /^[\s\u00A0]*$/.test(e.text()) }, Wu = function (e, t, n) { return e === t || e && t && e.tag === t.tag && e.type === t.type && (n || e.variant === t.variant) }, qu = { guessFrom: function (t, n) { return X(t, function (e) { return "UL" === e.tag || n && Wu(e, n, !0) }).orThunk(function () { return 0 === (e = t).length ? _.none() : _.some(e[0]); var e }) }, eqListType: Wu }, $u = function (e, t) { if (void 0 === e || void 0 === t) throw y.console.trace(), "brick"; e.nextFilter.set(t) }, Vu = function (e, t, n) { t.nextFilter.get()(e, t, n) }, Xu = $u, Gu = Vu, zu = Qr("level", "token", "type"), Ku = function (e, n, t, r) { var o = t.getCurrentListType(), i = t.getCurrentLevel() == r.level() ? o : null; return qu.guessFrom(r.emblems(), i).filter(function (e) { return !("OL" === e.tag && (!Y(["P"], (t = n).tag()) || /^MsoHeading/.test(Bu(t, "class")))); var t }) }, Zu = function (e, t) { return zt(cn.fromDom(t.getNode()), "data-list-level") }, Ju = function (d) { return function (e, t, n) { var r, o, i, a, u = (r = cn.fromDom(n.getNode()), o = parseInt(Gt(r, "data-list-level"), 10), i = Gt(r, "data-list-emblems"), a = JSON.parse(i), Kt(r, "data-list-level"), Kt(r, "data-list-emblems"), { level: v(o), emblems: v(a) }); u.level(), t.originalToken.set(n); var c, s, l, f = (c = n, s = u, Ku((l = t).listType.get(), c, l.emitter, s).each(l.listType.set), zu(s.level(), l.originalToken.get(), l.listType.get())); t.emitter.openItem(f.level(), f.token(), f.type()), Xu(t, d.inside()) } }; function Qu(e, t, n) { return { pred: e, action: t, label: v(n) } } var ec = function (e, r) { return function (e, t, n) { return r(e, t, n) } }; function tc(e, r, t) { var o = ec(0, t), n = function (e, t, n) { X(r, function (e) { return e.pred(t, n) }).fold(v(o), function (e) { var t = e.label(); return void 0 === t ? e.action : ec(0, e.action) })(e, t, n) }; return n.toString = function () { return "Handlers for " + e }, n } var nc, rc, oc, ic, ac, uc = function (r) { return tc("Inside.List.Item", [Qu(function (e, t) { return t.type() === Lu.END_ELEMENT_TYPE && e.originalToken.get() && t.tag() === e.originalToken.get().tag() }, function (e, t, n) { Xu(t, r.outside()) }, "Closing open tag")], function (e, t, n) { e.emit(n) }) }, cc = function (r) { return tc("Outside.List.Item", [Qu(Zu, Ju(r), "Data List ****"), Qu(function (e, t) { return t.type() === Lu.TEXT_TYPE && Hu(t) }, function (e, t, n) { e.emit(n) }, "Whitespace")], function (e, t, n) { t.emitter.closeAllLists(), e.emit(n), Xu(t, r.outside()) }) }, sc = Qr("state", "result"), lc = Qr("state", "value"), fc = { state: Qr("level", "type", "types", "items"), value: lc, result: sc }, dc = function (e, t) { var n = e.items().slice(0), r = void 0 !== t && "P" !== t ? _.some(t) : _.none(); r.fold(function () { n.push("P") }, function (e) { n.push(e) }); var o = fc.state(e.level(), e.type(), e.types(), n); return fc.value(o, r) }, mc = function (e) { var t = e.items().slice(0); if (0 < t.length && "P" !== t[t.length - 1]) { var n = t[t.length - 1]; t[t.length - 1] = "P"; var r = fc.state(e.level(), e.type(), e.types(), t); return fc.value(r, _.some(n)) } return fc.value(e, _.none()) }, pc = function (e, t, n) { for (var r = [], o = e; t(o);) { var i = n(o); o = i.state(), r = r.concat(i.result()) } return fc.result(o, r) }, gc = function (e, t, n) { return pc(e, function (e) { return e.level() < t }, n) }, vc = function (e, t, n) { return pc(e, function (e) { return e.level() > t }, n) }, hc = function (e) { var t; return e ? void 0 !== (t = Yu(e, "margin-left")) && "0px" !== t ? { "margin-left": t } : {} : { "list-style-type": "none" } }, yc = function (e, t, n) { var r = t.start && 1 < t.start ? { start: t.start } : {}, o = e.level() + 1, i = t, a = e.types().concat([t]), u = [N(Lu.createStartElement, t.tag, r, n)], c = fc.state(o, i, a, e.items()); return fc.result(c, u) }, bc = function (e) { var t = e.types().slice(0), n = [N(Lu.createEndElement, t.pop().tag)], r = e.level() - 1, o = t[t.length - 1], i = fc.state(r, o, t, e.items()); return fc.result(i, n) }, xc = yc, Tc = function (e, t, n) { var r, o, i, a = hc(t), u = e.type() && !qu.eqListType(e.type(), n) ? (r = n, o = bc(e), i = yc(o.state(), r, r.type ? { "list-style-type": r.type } : {}), fc.result(i.state(), o.result().concat(i.result()))) : fc.result(e, []), c = [N(Lu.createStartElement, "LI", {}, a)], s = dc(u.state(), t && t.tag()), l = s.value().map(function (e) { return gu(t.getNode(), v(!0)), [v(t)] }).getOr([]); return fc.result(s.state(), u.result().concat(c).concat(l)) }, Ec = bc, wc = function (e) { var t = N(Lu.createEndElement, "LI"), n = mc(e), r = n.value().fold(function () { return [t] }, function (e) { return [N(Lu.createEndElement, e), t] }); return fc.result(n.state(), r) }, Ic = function (e) { if (0 === e.length) throw "Compose must have at least one element in the list"; var t = e[e.length - 1], n = J(e, function (e) { return e.result() }); return fc.result(t.state(), n) }, Sc = function (e) { var t = wc(e), n = Ec(t.state()); return Ic([t, n]) }, Lc = function (e, c, s, l) { return gc(e, s, function (e) { return n = c, r = s, o = l, i = (t = e).level() === r - 1 && n.type ? { "list-style-type": n.type } : {}, a = xc(t, n, i), u = Tc(a.state(), a.state().level() == r ? o : void 0, n), Ic([a, u]); var t, n, r, o, i, a, u }) }, Cc = function (e, t) { return vc(e, t, Sc) }, Nc = { openItem: function (e, t, n, r) { var o, i, a, u, c, s, l, f, d, m, p, g, v = e.level() > t ? Cc(e, t) : fc.result(e, []), h = v.state().level() === t ? (f = v.state(), d = r, m = n, p = 0 < f.level() ? wc(f) : fc.result(f, []), g = Tc(p.state(), m, d), Ic([p, g])) : (o = v.state(), i = r, u = n, c = 1 < (a = t) ? mc(o) : fc.value(o, _.none()), s = c.value().map(function (e) { return [N(Lu.createEndElement, e)] }).getOr([]), c.state().level(), l = Lc(c.state(), i, a, u), fc.result(l.state(), s.concat(l.result()))); return Ic([v, h]) }, closeAllLists: Cc }, Dc = ["disc", "circle", "square"], Oc = function (e, t) { return "UL" === e.tag && Dc[t - 1] === e.type && (e = { tag: "UL" }), e }, Ac = function (e) { var t = e, n = function () { return t }; return { get: n, set: function (e) { t = e }, clone: function () { return Ac(n()) } } }, _c = { getCurrentListType: function () { return Pc().getCurrentListType() }, getCurrentLevel: function () { return Pc().getCurrentLevel() }, closeAllLists: function () { return Pc().closeAllLists.apply(void 0, arguments) }, openItem: function () { return Pc().openItem.apply(void 0, arguments) } }, Pc = function () { return { getCurrentListType: v({}), getCurrentLevel: v(1), closeAllLists: m, openItem: m } }, kc = { inside: function () { return Rc }, outside: function () { return Fc } }, Mc = (nc = !1, { check: function (e) { return nc && e.type() === Lu.TEXT_TYPE ? (e.text(), !0) : e.type() === Lu.START_ELEMENT_TYPE && "STYLE" === e.tag() ? nc = !0 : e.type() === Lu.END_ELEMENT_TYPE && "STYLE" === e.tag() && !(nc = !1) } }), Rc = uc(kc), Fc = cc(kc), jc = (oc = Ac(rc = Fc), ic = Ac(null), ac = Ac(null), { reset: function (e) { oc.set(rc), ic.set(null), ac.set(null); var n, r, i, a, t = (r = (n = e).document, i = fc.state(0, void 0, [], []), a = function (e) { q(e.result(), function (e) { var t = e(r); n.emit(t) }) }, { closeAllLists: function () { var e = Nc.closeAllLists(i, 0); i = e.state(), a(e) }, openItem: function (e, t, n) { if (n) { var r = Oc(n, e), o = Nc.openItem(i, e, t, r); i = o.state(), a(o) } }, getCurrentListType: function () { return i.type() }, getCurrentLevel: function () { return i.level() } }); Pc = v(t) }, nextFilter: oc, originalToken: ic, listType: ac, emitter: _c }), Uc = Uu(function (e, t, n) { Mc.check(t) || Gu(e, jc, t) }, jc.reset), Bc = [{ regex: /^\(?[dc][\.\)]$/, type: { tag: "OL", type: "lower-alpha" } }, { regex: /^\(?[DC][\.\)]$/, type: { tag: "OL", type: "upper-alpha" } }, { regex: /^\(?M*(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})[\.\)]$/, type: { tag: "OL", type: "upper-roman" } }, { regex: /^\(?m*(cm|cd|d?c{0,3})(xc|xl|l?x{0,3})(ix|iv|v?i{0,3})[\.\)]$/, type: { tag: "OL", type: "lower-roman" } }, { regex: /^\(?[0-9]+[\.\)]$/, type: { tag: "OL" } }, { regex: /^([0-9]+\.)*[0-9]+\.?$/, type: { tag: "OL", variant: "outline" } }, { regex: /^\(?[a-z]+[\.\)]$/, type: { tag: "OL", type: "lower-alpha" } }, { regex: /^\(?[A-Z]+[\.\)]$/, type: { tag: "OL", type: "upper-alpha" } }], Yc = { "\u2022": { tag: "UL", type: "disc" }, "\xb7": { tag: "UL", type: "disc" }, "\xa7": { tag: "UL", type: "square" } }, Hc = { o: { tag: "UL", type: "circle" }, "-": { tag: "UL", type: "disc" }, "\u25cf": { tag: "UL", type: "disc" }, "\ufffd": { tag: "UL", type: "circle" } }, Wc = function (u, e) { var t = Hc[u] ? [Hc[u]] : [], n = e && Yc[u] ? [Yc[u]] : e ? [{ tag: "UL", variant: u }] : [], r = J(Bc, function (e) { return e.regex.test(u) ? [fe(e.type, (r = u, o = r.split("."), i = function () { if (0 === o.length) return r; var e = o[o.length - 1]; return 0 === e.length && 1 < o.length ? o[o.length - 2] : e }(), a = parseInt(i, 10), isNaN(a) ? {} : { start: a }), { variant: (t = e.type, n = u, void 0 !== t.variant ? t.variant : "(" === n.charAt(0) ? "()" : ")" === n.charAt(n.length - 1) ? ")" : ".") })] : []; var t, n, r, o, i, a }), o = t.concat(n).concat(r); return W(o, function (e) { return void 0 !== e.variant ? e : fe(e, { variant: u }) }) }, qc = function (e) { return e.dom().textContent }, $c = function (e) { return su(e, ["mso-list"], v(!1))["mso-list"] }, Vc = function (e) { return Wt(e) && Va(e, "font-family").exists(function (e) { return Y(["wingdings", "symbol"], e.toLowerCase()) }) }, Xc = { getMsoList: $c, extractLevel: function (e) { var t = $c(e), n = / level([0-9]+)/.exec(t); return n && n[1] ? _.some(parseInt(n[1], 10)) : _.none() }, extractEmblem: function (e, t) { var n = qc(e).trim(), r = Wc(n, t); return 0 < r.length ? _.some(r) : _.none() }, extractSymSpan: function (e) { return Hi(e, Vc) }, extractMsoIgnore: function (e) { return Wi(e, function (e) { return !!(Wt(e) ? su(e, ["mso-list"], v(!1)) : [])["mso-list"] }) }, extractCommentSpan: function (e) { return Hi(e, Ht).bind(Oo).filter(function (e) { return "span" === Ut(e) }) }, isSymbol: Vc, deduceLevel: function (e) { return Va(e, "margin-left").bind(function (e) { var t = parseInt(e, 10); return isNaN(t) ? _.none() : _.some(Math.max(1, Math.ceil(t / 18))) }) } }, Gc = function (e) { for (var t = []; null !== e.nextNode();)t.push(cn.fromDom(e.currentNode)); return t }, zc = At.detect().browser, Kc = zc.isIE() || zc.isEdge() ? function (e) { try { return Gc(e) } catch (e) { return [] } } : Gc, Zc = v(v(!0)), Jc = function (e, t) { var n = t.fold(Zc, function (t) { return function (e) { return t(e.nodeValue) } }); n.acceptNode = n; var r = y.document.createTreeWalker(e.dom(), we.getOrDie("NodeFilter").SHOW_COMMENT, n, !1); return Kc(r) }, Qc = function (e, t, n, r) { var o; !function (e, t, n) { Vt(e, "data-list-level", t); var r = JSON.stringify(n); Vt(e, "data-list-emblems", r) }(e, t, n), o = Jc(e, _.none()), q(o, Fa), q(r, Fa), Kt(e, "style"), Kt(e, "class") }, es = function (e) { return (r = e, Xc.extractLevel(r).bind(function (n) { return Xc.extractSymSpan(r).bind(function (t) { return Xc.extractEmblem(t, !0).map(function (e) { return { mutate: function () { Qc(r, n, e, [t]) } } }) }) })).orThunk(function () { return r = e, Xc.extractLevel(r).bind(function (n) { return Xc.extractCommentSpan(r).bind(function (t) { return Xc.extractEmblem(t, Xc.isSymbol(t)).map(function (e) { return { mutate: function () { Qc(r, n, e, [t]) } } }) }) }); var r }).orThunk(function () { return r = e, Xc.extractLevel(r).bind(function (n) { return Xc.extractCommentSpan(r).bind(function (t) { return Xc.extractEmblem(t, Xc.isSymbol(t)).map(function (e) { return { mutate: function () { Qc(r, n, e, [t]) } } }) }) }); var r }).orThunk(function () { return "p" !== Ut(r = e) ? _.none() : Xc.extractLevel(r).bind(function (n) { return Xc.extractMsoIgnore(r).bind(function (t) { return Xc.extractEmblem(t, !1).map(function (e) { return { mutate: function () { Qc(r, n, e, [Co(t).getOr(t)]) } } }) }) }); var r }).orThunk(function () { return "p" !== Ut(r = e) ? _.none() : Xc.extractMsoIgnore(r).bind(function (e) { var n = Co(e).getOr(e), t = Xc.isSymbol(n); return Xc.extractEmblem(e, t).bind(function (t) { return Xc.deduceLevel(r).map(function (e) { return { mutate: function () { Qc(r, e, t, [n]) } } }) }) }); var r }); var r }, ts = { filter: Uc, preprocess: Mu({ tags: [{ name: tu.pattern(/^(p|h\d+)$/, tu.caseInsensitive), mutate: function (e) { es(e).each(function (e) { e.mutate() }) } }] }) }, ns = function (e, t) { return Wi(e, t).isSome() }, rs = function (e) { return void 0 === e.dom().attributes || null === e.dom().attributes || 0 === e.dom().attributes.length || 1 === e.dom().attributes.length && "style" === e.dom().attributes[0].name }, os = { isNotImage: function (e) { return "img" !== Ut(e) }, hasContent: function (e) { return !rs(e) || (n = (t = e).dom().attributes, r = null != n && 0 < n.length, ("span" !== Ut(t) || r) && ns(e, function (e) { var t = !rs(e), n = !Y(["font", "em", "strong", "samp", "acronym", "cite", "code", "dfn", "kbd", "tt", "b", "i", "u", "s", "sub", "sup", "ins", "del", "var", "span"], Ut(e)); return qt(e) || t || n })); var t, n, r }, isList: function (e) { return "ol" === Ut(e) || "ul" === Ut(e) }, isLocal: function (e) { var t = Gt(e, "src"); return /^file:/.test(t) }, hasNoAttributes: rs, isEmpty: function (e) { return 0 === Au(e).length } }; function is(n, r) { var t = function (e) { return n(e) ? _.from(e.dom().nodeValue) : _.none() }, e = At.detect().browser, o = e.isIE() && 10 === e.version.major ? function (e) { try { return t(e) } catch (e) { return _.none() } } : t; return { get: function (e) { if (!n(e)) throw new Error("Can only get " + r + " value of a " + r + " node"); return o(e).getOr("") }, getOption: o, set: function (e, t) { if (!n(e)) throw new Error("Can only set raw " + r + " value of a " + r + " node"); e.dom().nodeValue = t } } } var as, us, cs, ss, ls, fs, ds, ms = is(qt, "text"), ps = function (e) { return ms.get(e) }, gs = function (e, t) { ms.set(e, t) }, vs = function (e, t) { var n = cn.fromTag(e); ua(t, n); var r = t.dom().attributes; q(r, function (e) { n.dom().setAttribute(e.name, e.value) }); var o = _o(t); return ma(n, o), Fa(t), n }, hs = function (e) { return Do(e).bind(function (e) { return qt(e) && 0 === ps(e).trim().length ? hs(e) : "li" === Ut(e) ? _.some(e) : _.none() }) }, ys = { changeTag: vs, addBrTag: function (e) { 0 === Au(e).length && la(e, cn.fromTag("br")) }, properlyNest: function (n) { Co(n).each(function (e) { var t = Ut(e); Y(["ol", "ul"], t) && hs(n).fold(function () { var e = cn.fromTag("li"); Ha(e, "list-style-type", "none"), fa(n, e) }, function (e) { la(e, n) }) }) }, fontToSpan: function (e) { var o = vs("span", e), i = { "font-size": { 1: "8pt", 2: "10pt", 3: "12pt", 4: "14pt", 5: "18pt", 6: "24pt", 7: "36pt" } }; ne({ face: "font-family", size: "font-size", color: "color" }, function (e, t) { if (zt(o, t)) { var n = Gt(o, t), r = void 0 !== i[e] && void 0 !== i[e][n] ? i[e][n] : n; Ha(o, e, r), Kt(o, t) } }) } }, bs = function (e, t, n, r) { var o = Lo(e).dom().createRange(); return o.setStart(e.dom(), t), o.setEnd(n.dom(), r), o }, xs = is(Ht, "comment"), Ts = function (e) { return xs.get(e) }, Es = ku({ tags: [{ name: tu.pattern(/^([OVWXP]|U[0-9]+|ST[0-9]+):/i, tu.caseInsensitive) }] }), ws = Pu({ attributes: [{ name: tu.exact("id", tu.caseInsensitive), value: tu.starts("docs-internal-guid", tu.caseInsensitive) }] }), Is = [Ru([ts.filter])], Ss = Pu({ attributes: [{ name: tu.pattern(/^v:/, tu.caseInsensitive) }, { name: tu.exact("href", tu.caseInsensitive), value: tu.contains("#_toc", tu.caseInsensitive) }, { name: tu.exact("href", tu.caseInsensitive), value: tu.contains("#_mso", tu.caseInsensitive) }, { name: tu.pattern(/^xmlns(:|$)/, tu.caseInsensitive) }, { name: tu.exact("type", tu.caseInsensitive), condition: os.isList }] }), Ls = Pu({ tags: [{ name: tu.exact("script", tu.caseInsensitive) }, { name: tu.exact("link", tu.caseInsensitive) }, { name: tu.exact("style", tu.caseInsensitive), condition: os.isEmpty }], attributes: [{ name: tu.starts("on", tu.caseInsensitive) }, { name: tu.exact('"', tu.caseInsensitive) }, { name: tu.exact("lang", tu.caseInsensitive) }, { name: tu.exact("language", tu.caseInsensitive) }], styles: [{ name: tu.all(), value: tu.pattern(/OLE_LINK/i, tu.caseInsensitive) }] }), Cs = Pu({ tags: [{ name: tu.exact("meta", tu.caseInsensitive) }] }), Ns = Pu({ tags: [{ name: tu.exact("style", tu.caseInsensitive) }] }), Ds = Pu({ styles: [{ name: tu.not(tu.pattern(/width|height|list-style-type/, tu.caseInsensitive)), condition: function (e) { return !Fi(e, "ephox-limbo-transform") } }, { name: tu.pattern(/width|height/, tu.caseInsensitive), condition: os.isNotImage }] }), Os = Pu({ classes: [{ name: tu.not(tu.exact("rtf-data-image", tu.caseInsensitive)) }] }), As = Pu({ styles: [{ name: tu.pattern(Za(), tu.caseInsensitive) }] }), _s = Pu({ classes: [{ name: tu.pattern(/mso/i, tu.caseInsensitive) }] }), Ps = ku({ tags: [{ name: tu.exact("img", tu.caseInsensitive), condition: os.isLocal }, { name: tu.exact("a", tu.caseInsensitive), condition: os.hasNoAttributes }] }), ks = ku({ tags: [{ name: tu.exact("a", tu.caseInsensitive), condition: os.hasNoAttributes }] }), Ms = Pu({ attributes: [{ name: tu.exact("style", tu.caseInsensitive), value: tu.exact("", tu.caseInsensitive), debug: !0 }] }), Rs = Pu({ attributes: [{ name: tu.exact("class", tu.caseInsensitive), value: tu.exact("", tu.caseInsensitive), debug: !0 }] }), Fs = ku({ tags: [{ name: tu.pattern(Ja(), tu.caseInsensitive), condition: (as = os.hasContent, function () { for (var e = [], t = 0; t < arguments.length; t++)e[t] = arguments[t]; return !as.apply(null, e) }) }] }), js = ku({ tags: [{ name: tu.exact("p", tu.caseInsensitive), condition: (us = "li", function (e) { return Co(e).exists(function (e) { return Ut(e) === us && 1 === _o(e).length }) }) }] }), Us = Mu({ tags: [{ name: tu.exact("p", tu.caseInsensitive), mutate: ys.addBrTag }] }), Bs = Mu({ tags: [{ name: tu.pattern(/ol|ul/, tu.caseInsensitive), mutate: ys.properlyNest }] }), Ys = Mu({ tags: [{ name: tu.exact("b", tu.caseInsensitive), mutate: N(ys.changeTag, "strong") }, { name: tu.exact("i", tu.caseInsensitive), mutate: N(ys.changeTag, "em") }, { name: tu.exact("u", tu.caseInsensitive), mutate: function (e) { var t = ys.changeTag("span", e); Mi(t, "ephox-limbo-transform"), Ha(t, "text-decoration", "underline") } }, { name: tu.exact("s", tu.caseInsensitive), mutate: N(ys.changeTag, "strike") }, { name: tu.exact("font", tu.caseInsensitive), mutate: ys.fontToSpan, debug: !0 }] }), Hs = Pu({ classes: [{ name: tu.exact("ephox-limbo-transform", tu.caseInsensitive) }] }), Ws = Pu({ tags: [{ name: tu.exact("br", tu.caseInsensitive), condition: Bi("Apple-interchange-newline") }] }), qs = { unwrapWordTags: Es, removeWordAttributes: Ss, removeGoogleDocsId: ws, parseLists: Is, removeExcess: Ls, removeMetaTags: Cs, removeStyleTags: Ns, cleanStyles: Ds, cleanClasses: Os, cleanupBrowserCruft: Pu({ styles: [{ name: tu.pattern(/^-/, tu.caseInsensitive) }, { name: tu.all(), value: tu.exact("initial", tu.caseInsensitive) }, { name: tu.exact("background-color", tu.caseInsensitive), value: tu.exact("transparent", tu.caseInsensitive) }, { name: tu.exact("font-style", tu.caseInsensitive), value: tu.exact("normal", tu.caseInsensitive) }, { name: tu.pattern(/font-variant.*/, tu.caseInsensitive) }, { name: tu.exact("letter-spacing", tu.caseInsensitive) }, { name: tu.exact("font-weight", tu.caseInsensitive), value: tu.pattern(/400|normal/, tu.caseInsensitive) }, { name: tu.exact("orphans", tu.caseInsensitive) }, { name: tu.exact("text-decoration", tu.caseInsensitive), value: tu.exact("none", tu.caseInsensitive) }, { name: tu.exact("text-size-adjust", tu.caseInsensitive) }, { name: tu.exact("text-indent", tu.caseInsensitive), value: tu.exact("0px", tu.caseInsensitive) }, { name: tu.exact("text-transform", tu.caseInsensitive), value: tu.exact("none", tu.caseInsensitive) }, { name: tu.exact("white-space", tu.caseInsensitive), value: tu.exact("normal", tu.caseInsensitive) }, { name: tu.exact("widows", tu.caseInsensitive) }, { name: tu.exact("word-spacing", tu.caseInsensitive), value: tu.exact("0px", tu.caseInsensitive) }, { name: tu.exact("text-align", tu.caseInsensitive), value: tu.pattern(/start|end/, tu.caseInsensitive) }, { name: tu.exact("font-weight", tu.caseInsensitive), value: tu.pattern(/700|bold/, tu.caseInsensitive), condition: function (e) { return /^h\d$/.test(Ut(e)) } }] }), cleanupBrowserTags: Ws, unwrapConvertedSpace: (ss = (cs = function (e, n) { return function (t) { return e(t).filter(function (e) { return qt(t) && n(qc(e), " ") }).isSome() } })(Do, wt), ls = cs(Oo, Et), Mu({ tags: [{ name: tu.exact("span", tu.caseInsensitive), condition: Bi("Apple-converted-space"), mutate: function (e) { "\xa0" === qc(e) && (ss(e) || ls(e) ? ja(e) : (ua(e, cn.fromText(" ")), Fa(e))) } }] })), mergeStyles: As, mergeClasses: _s, removeLocalImages: Ps, removeVacantLinks: ks, removeEmptyStyle: Ms, removeEmptyClass: Rs, pruneInlineTags: Fs, unwrapSingleParagraphsInlists: js, addPlaceholders: Us, nestedListFixes: Bs, inlineTagFixes: Ys, cleanupFlags: Hs, distillAnchorsFromLocalLinks: (fs = /^file:\/\/\/[^#]+(#[^#]+)$/, Mu({ tags: [{ name: tu.exact("a", tu.caseInsensitive), condition: function (e) { var t = Gt(e, "href"); return !!t && fs.test(t) }, mutate: function (e) { var t = Gt(e, "href"); Vt(e, "href", t.replace(fs, "$1")) } }] })), removeLocalLinks: Pu({ attributes: [{ name: tu.exact("href", tu.caseInsensitive), value: tu.starts("file:///", tu.caseInsensitive), debug: !0 }] }), replaceClipboardChangedUrls: Mu({ tags: [(ds = function (e, n, r) { return { name: tu.exact(e, tu.caseInsensitive), condition: function (e) { return zt(e, n) }, mutate: function (e) { var t = Gt(e, n); Vt(e, r, t), Kt(e, n) } } })("a", "data-ephox-href", "href"), ds("img", "data-ephox-src", "src")] }), removeFragmentComments: function (a) { var u = ["table", "thead", "tbody", "tfoot", "th", "tr", "td", "ul", "ol", "li"], e = Mo(a, Ht), t = X(e, function (e) { return xt(Ts(e), "StartFragment") }), n = X(e, function (e) { return xt(Ts(e), "EndFragment") }); t.each(function (i) { n.each(function (e) { for (var t, n = i, r = [], o = (t = bs(i, 0, e, 0), cn.fromDom(t.commonAncestorContainer)); void 0 !== o && !Io(o, a);)Y(u, Ut(o)) ? n = o : r.push(o), o = Co(o).getOr(void 0); q(r, ja), q(Ao(n), Fa) }), Fa(i) }), n.each(Fa) }, none: C }, $s = function (e) { return e.browser.isIE() && 11 <= e.browser.version.major }, Vs = function (i, a) { return Uu(function (e, t) { var r, o, n = (r = t, o = a, i(cn.fromDom(r.getNode())).fold(function () { return [r] }, function (e) { var t = r.type() === Lu.END_ELEMENT_TYPE, n = [Lu.token(e.dom(), t)]; return !t && o && n.push(Lu.token(e.dom(), !0)), n })); q(n, e.emit) }, C) }, Xs = function (e, t, n) { var r, o, i, a, u, c, s, l, f, d, m, p, g, v = (r = e, i = (o = n).browser.isFirefox() || o.browser.isEdge(), a = i ? Ka.local : Ka.vshape, u = !i, c = $s(o) ? qs.none : Ru([Vs(a, u)]), { annotate: [r ? c : qs.none], local: [i ? qs.none : qs.removeLocalImages] }); return Z([(p = e, g = n, $s(g) || !p ? [] : [ts.preprocess]), v.annotate, [qs.inlineTagFixes], function (e, t, n) { if (!e) return [qs.none]; var r = [qs.unwrapWordTags], o = $s(n) ? [] : qs.parseLists; return r.concat(o).concat([qs.removeWordAttributes]) }(e, 0, n), [qs.removeGoogleDocsId], [qs.nestedListFixes], [qs.removeExcess], [qs.removeMetaTags], v.local, (m = t, m ? [qs.mergeStyles, qs.mergeClasses] : [qs.cleanStyles, qs.cleanClasses]), [qs.distillAnchorsFromLocalLinks, qs.removeLocalLinks, qs.removeVacantLinks, qs.replaceClipboardChangedUrls], [qs.removeEmptyStyle], [qs.removeEmptyClass], [qs.pruneInlineTags], [qs.cleanupBrowserTags], (f = e, d = t, !f && d ? [qs.cleanupBrowserCruft] : []), [qs.unwrapConvertedSpace], [qs.addPlaceholders], (s = e, l = n, $s(l) && s ? [qs.unwrapSingleParagraphsInlists] : []), [qs.cleanupFlags], [qs.removeStyleTags]]) }, Gs = ["body", "p", "div", "article", "aside", "figcaption", "figure", "footer", "header", "nav", "section", "ol", "ul", "li", "table", "thead", "tbody", "tfoot", "caption", "tr", "td", "th", "h1", "h2", "h3", "h4", "h5", "h6", "blockquote", "pre", "address"], zs = function (e) { return t = e, n = v(0), r = v(0), o = _.none(), { term: function () { return new RegExp(t, o.getOr("g")) }, prefix: n, suffix: r }; var t, n, r, o }, Ks = function (e, t) { return G(e, function (e) { return e.start() === t }) }, Zs = function (e, t, n) { var r, o, i = n(e, t); return r = i, o = e.start(), W(r, function (e) { return ti({}, e, { start: v(e.start() + o), finish: v(e.finish() + o) }) }) }, Js = function (e, n, t) { return void 0 === t && (t = 0), V(e, function (t, e) { return n(e, t.len).fold(v(t), function (e) { return { len: e.finish(), list: t.list.concat([e]) } }) }, { len: t, list: [] }).list }, Qs = function (e, t, n) { return 0 === t.length ? e : J(e, function (r) { var e = J(t, function (e) { return (n = e) >= (t = r).start() && n <= t.finish() ? [e - r.start()] : []; var t, n }); return 0 < e.length ? Zs(r, e, n) : [r] }) }, el = function (o, e, i) { var t = Ks(o, e), a = Ks(o, i); return t.bind(function (e) { var t, n, r = a.getOr((n = i, (t = o)[t.length - 1] && t[t.length - 1].finish() === n ? t.length + 1 : -1)); return -1 < r ? _.some(o.slice(e, r)) : _.none() }).getOr([]) }, tl = function (n, e) { var t, r, o = J(e, function (t) { var e = function (e, t) { for (var n = t.term(), r = [], o = n.exec(e); o;) { var i = o.index + t.prefix(o), a = o[0].length - t.prefix(o) - t.suffix(o); r.push({ start: v(i), finish: v(i + a) }), n.lastIndex = i + a, o = n.exec(e) } return r }(n, t.pattern()); return W(e, function (e) { return ti({}, t, e) }) }); return t = o, (r = Array.prototype.slice.call(t, 0)).sort(function (e, t) { return e.start() < t.start() ? -1 : t.start() < e.start() ? 1 : 0 }), r }, nl = (Qr("word", "pattern"), Qr("element", "offset"), Qr("element", "deltaOffset"), Qr("element", "start", "finish")), rl = (Qr("begin", "end"), Qr("element", "text"), ue([{ include: ["item"] }, { excludeWith: ["item"] }, { excludeWithout: ["item"] }])), ol = { include: rl.include, excludeWith: rl.excludeWith, excludeWithout: rl.excludeWithout, cata: function (e, t, n, r) { return e.fold(t, n, r) } }, il = function (e, n) { var r = [], o = []; return q(e, function (e) { var t = n(e); ol.cata(t, function () { o.push(e) }, function () { 0 < o.length && r.push(o), r.push([e]), o = [] }, function () { 0 < o.length && r.push(o), o = [] }) }), 0 < o.length && r.push(o), r }, al = ue([{ boundary: ["item", "universe"] }, { empty: ["item", "universe"] }, { text: ["item", "universe"] }]), ul = w, cl = I, sl = v(0), ll = v(1), fl = function (e) { return ti({}, e, { isBoundary: function () { return e.fold(cl, ul, ul) }, toText: function () { return e.fold(_.none, _.none, function (e) { return _.some(e) }) }, is: function (n) { return e.fold(ul, ul, function (e, t) { return t.eq(e, n) }) }, len: function () { return e.fold(sl, ll, function (e, t) { return t.property().getText(e).length }) } }) }, dl = { text: g(fl, al.text), boundary: g(fl, al.boundary), empty: g(fl, al.empty), cata: function (e, t, n, r) { return e.fold(t, n, r) } }, ml = function (t, e, n) { if (t.property().isText(e)) return [dl.text(e, t)]; if (t.property().isEmptyTag(e)) return [dl.empty(e, t)]; if (t.property().isElement(e)) { var r = t.property().children(e), o = t.property().isBoundary(e) ? [dl.boundary(e, t)] : [], i = void 0 !== n && n(e) ? [] : J(r, function (e) { return ml(t, e, n) }); return o.concat(i).concat(o) } return [] }, pl = ml, gl = function (t, e, n) { var r = J(e, function (e) { return pl(t, e, n) }), o = il(r, function (e) { return e.match({ boundary: function () { return ol.excludeWithout(e) }, empty: function () { return ol.excludeWith(e) }, text: function () { return ol.include(e) } }) }); return $(o, function (e) { return 0 < e.length }) }, vl = function (r, e) { if (0 === e.length) return [r]; var t = V(e, function (e, t) { if (0 === t) return e; var n = r.substring(e.prev, t); return { prev: t, values: e.values.concat([n]) } }, { prev: 0, values: [] }), n = e[e.length - 1]; return n < r.length ? t.values.concat(r.substring(n)) : t.values }, hl = function (o, e, t) { var n = J(t, function (e) { return [e.start(), e.finish()] }), i = Qs(e, n, function (e, t) { return function (o, e, t) { var n = o.property().getText(e), r = $(vl(n, t), function (e) { return 0 < e.length }); if (r.length <= 1) return [nl(e, 0, n.length)]; o.property().setText(e, r[0]); var i = Js(r.slice(1), function (e, t) { var n = o.create().text(e), r = nl(n, t, t + e.length); return _.some(r) }, r[0].length), a = W(i, function (e) { return e.element() }); return o.insert().afterAll(e, a), [nl(e, 0, r[0].length)].concat(i) }(o, e.element(), t) }); return W(t, function (e) { var t = el(i, e.start(), e.finish()), n = W(t, function (e) { return e.element() }), r = W(n, o.property().getText).join(""); return { elements: function () { return n }, word: e.word, exact: function () { return r } } }) }, yl = function (a, e, u, t) { var n = gl(a, e, t); return J(n, function (e) { var r, t = J(e, function (e) { return e.fold(v([]), v([]), function (e) { return [e] }) }), n = W(t, a.property().getText).join(""), o = tl(n, u), i = (r = a, Js(t, function (e, t) { var n = t + r.property().getText(e).length; return _.from(nl(e, t, n)) })); return hl(a, i, o) }) }, bl = { up: v({ selector: $i, closest: Xi, predicate: Yi, all: No }), down: v({ selector: Ro, predicate: Mo }), styles: v({ get: qa, getRaw: Va, set: Ha, remove: Xa }), attrs: v({ get: Gt, set: Vt, remove: Kt, copyTo: function (e, t) { var n = V(e.dom().attributes, function (e, t) { return e[t.name] = t.value, e }, {}); Xt(t, n) } }), insert: v({ before: ua, after: ca, afterAll: da, append: la, appendAll: ma, prepend: sa, wrap: fa }), remove: v({ unwrap: ja, remove: Fa }), create: v({ nu: cn.fromTag, clone: function (e) { return cn.fromDom(e.dom().cloneNode(!1)) }, text: cn.fromText }), query: v({ comparePosition: function (e, t) { return e.dom().compareDocumentPosition(t.dom()) }, prevSibling: Do, nextSibling: Oo }), property: v({ children: _o, name: Ut, parent: Co, document: function (e) { return e.dom().ownerDocument }, isText: qt, isComment: Ht, isElement: Wt, getText: ps, setText: gs, isBoundary: function (e) { return !!Wt(e) && ("body" === Ut(e) || Y(Gs, Ut(e))) }, isEmptyTag: function (e) { return !!Wt(e) && Y(["br", "img", "hr", "input"], Ut(e)) } }), eq: Io, is: So }, xl = function (e) { return qi(e).isSome() }, Tl = /(?:(?:[A-Za-z]{3,9}:(?:\/\/))(?:[-.~*+=!&;:'%@?^${}(),\w]+@)?[A-Za-z0-9-]+(?:\.[A-Za-z0-9-]+)*|(?:www\.|[-;:&=+$,.\w]+@)[A-Za-z0-9-]+(?:\.[A-Za-z0-9-]+)*)(?::[0-9]+)?(?:\/[-+~=%.()\/\w]*)?(?:\?(?:[-.~*+=!&;:'%@?^${}(),\/\w]+))?(?:#(?:[-.~*+=!&;:'%@?^${}(),\/\w]+))?/g.source, El = function (e) { var t, n = Qr("word", "pattern")("__INTERNAL__", zs(Tl)); return yl(bl, e, [n], t) }, wl = function (e) { return !Xi(e, "a", t).isSome(); var t }, Il = function (e) { var t = e.indexOf("://"); return 3 <= t && t <= 9 }, Sl = { links: function (e) { var t = El(e); q(t, function (e) { var n, t = e.exact(); (t.indexOf("@") < 0 || Il(t)) && (n = e.elements(), _.from(n[0]).filter(wl).map(function (e) { var t = cn.fromTag("a"); return ua(e, t), ma(t, n), Vt(t, "href", qc(t)), t })) }) }, position: function (e) { q(e, function (e) { Wt(e) && Va(e, "position").isSome() && Xa(e, "position") }) }, list: function (e) { var t = $(e, function (e) { return "li" === Ut(e) }); if (0 < t.length) { var n = Ao(t[0]), r = cn.fromTag("ul"); if (ua(e[0], r), 0 < n.length) { var o = cn.fromTag("li"); la(r, o), ma(o, n) } ma(r, t) } } }, Ll = function (e) { var t = _o(e); q([Sl.links, Sl.position, Sl.list], function (e) { e(t) }) }, Cl = function (e, t, n, r, o) { Ll(n); var i = Au(n), a = Xs(o, r, t); return ju(e, i, a) }, Nl = Ll, Dl = function (e, t) { var n = Au(t); return ju(e, n, [qs.removeMetaTags, qs.replaceClipboardChangedUrls]) }, Ol = function (e, t) { var n = Au(t); return ju(e, n, [qs.removeFragmentComments]) }, Al = Je("simple-adt"), _l = function (e) { var i = function (e) { return Al + "_" + e }, o = function (e, t) { return e._simpleAdt === i(t) }, a = te(e), n = {}; q(a, function (t) { n["as" + Tt(t)] = function (e) { return o(e, t) ? _.some(e.data) : _.none() } }); var t = {}; return ne(e, function (r, o) { t[o] = function (e) { return { _simpleAdt: i(o), data: (t = r, n = e, 0 === t.length ? {} : no(t, [])(n)), _simpleAdt_data: e }; var t, n } }), le(n, { constructors: t, match: function (t, n) { var e, r = te(n); if (r.length !== a.length) throw new Error("Partial match"); return Pa(r, function (e) { return o(t, e) ? _.some(n[e]) : _.none() }).getOrDie("Must find branch for constructor: " + (0 === (e = t._simpleAdt).indexOf(Al) ? e.substring(Al.length + "_".length) : e))(t.data) } }) }, Pl = _l({ getFromFlash: [], disabled: [], fromClipboard: ["rtf"] }), kl = { getFromFlash: Pl.constructors.getFromFlash, disabled: Pl.constructors.disabled, fromClipboard: Pl.constructors.fromClipboard, match: Pl.match }, Ml = function (e, t) { var n = new RegExp(t, "i"); return Pa(e, function (e) { return null !== e.match(n) ? _.some({ type: e, flavor: t }) : _.none() }) }, Rl = { isValidData: function (e) { return void 0 !== e && void 0 !== e.types && null !== e.types }, getPreferredFlavor: function (e, t) { return Pa(e, function (e) { return Ml(t, e) }) }, getFlavor: Ml }, Fl = _l({ event: ["nativeEvent"], html: ["container"], word: ["html", "rtf"], text: ["text"], images: ["images"] }), jl = At.detect().browser, Ul = !(jl.isIE() || jl.isEdge() && jl.version.major < 16), Bl = ["^image/", "file"], Yl = function (e) { return xt(e, "~\.\[:]+)/g, "a"), e(/(\.[^\s\+>~\.\[:]+)/g, "b"), e(/(::[^\s\+>~\.\[:]+|:first-line|:first-letter|:before|:after)/gi, "c"), e(/(:[\w-]+\([^\)]*\))/gi, "b"), e(/(:[^\s\+>~\.\[:]+)/g, "b"), s = (s = s.replace(/[\*\s\+>~]/g, " ")).replace(/[#\.]/g, " "), e(/([^\s\+>~\.\[:]+)/g, "c"), f.sort(function (e, t) { return e.index - t.index }), { selector: c, specificity: "0," + l.a.toString() + "," + l.b.toString() + "," + l.c.toString(), specificityArray: [0, l.a, l.b, l.c], parts: f } }, { calculate: r, compare: function (e, t) { var n, r, o; if ("string" == typeof e) { if (-1 !== e.indexOf(",")) throw "Invalid CSS selector"; n = a(e).specificityArray } else { if (!Array.isArray(e)) throw "Invalid CSS selector or specificity array"; if (4 !== e.filter(function (e) { return "number" == typeof e }).length) throw "Invalid specificity array"; n = e } if ("string" == typeof t) { if (-1 !== t.indexOf(",")) throw "Invalid CSS selector"; r = a(t).specificityArray } else { if (!Array.isArray(t)) throw "Invalid CSS selector or specificity array"; if (4 !== t.filter(function (e) { return "number" == typeof e }).length) throw "Invalid specificity array"; r = t } for (o = 0; o < 4; o += 1) { if (n[o] < r[o]) return -1; if (n[o] > r[o]) return 1 } return 0 } }); void 0 !== n && (n.calculate = o.calculate, n.compare = o.compare) }, {}], 2: [function (e, t, n) { var r = e("specificity"); t.exports = { boltExport: r } }, { specificity: 1 }] }, {}, [2])(2) }); var Ad = Od.exports.boltExport, _d = Qr("selector", "raw"), Pd = function (t, e) { var n = J(e, function (i) { var e = Ro(t, i.selector()); return q(e, function (e) { var n, r, o, t = (n = i.raw(), r = e, o = {}, q(n, function (e) { if (void 0 !== n[e]) { var t = r.dom().style; Y(t, e) || (o[e] = n[e]) } }), o); Wa(e, t) }), e }); q(n, function (e) { Kt(e, "class") }) }, kd = function (e, t) { var n = function (e) { return -1 !== e.selector().indexOf(",") }, r = J($(e, n), function (n) { var e = n.selector().split(","); return W(e, function (e) { var t = e.trim(); return _d(t, n.raw()) }) }), o = $(e, function (e) { return !n(e) }).concat(r); o.sort(function (e, t) { return Ad.compare(e.selector(), t.selector()) }).reverse(), Pd(t, o) }, Md = function (e, t, r) { var n = Sd(e), o = Nd(n).map(function (e) { var t = e.selector(), n = r.hasOwnProperty(t) ? r[t] : t; return _d(n, e.raw()) }); kd(o, t) }, Rd = function (e, t, n) { var r = Sd(e), o = Nd(r), i = $(o, function (e) { return Et(e.selector(), n) }); kd(i, t) }, Fd = { inlineStyles: function (e, t, n) { Md(e, t, n) }, inlinePrefixedStyles: function (e, t, n) { Rd(e, t, n) } }, jd = { p: "p, li[data-converted-paragraph]" }, Ud = C, Bd = function (l, e) { var f = function (n) { Kt(n, "data-list-level"), Kt(n, "data-text-indent-alt"), Kt(n, "data-border-margin"), Xa(n, "margin-left"), Xa(n, "text-indent"), ne(function (e) { var t = {}, n = e.dom(); if (Ba(n)) for (var r = 0; r < n.style.length; r++) { var o = n.style.item(r); t[o] = n.style[o] } return t }(n), function (e, t) { !t.startsWith("border") || "border-image" !== t && "none" !== e.trim() && "initial" !== e.trim() || Xa(n, t) }) }, t = Ro(l, "li[data-converted-paragraph]"); if (q(t, function (e) { Kt(e, "data-converted-paragraph") }), e) { var n = Ro(l, "li"); q(n, function (e) { var t, n, r, o, i, a, u = (t = l, n = cn.fromTag("span"), sa(t, n), r = n, { convertToPx: function (e) { var t; return Ha(r, "margin-left", e), t = qa(r, "margin-left"), parseFloat(t.match(/-?\d+\.?\d*/)[0]) }, destroy: function () { return Fa(r) } }), c = (i = u, a = zt(o = l, "data-tab-interval") ? Gt(o, "data-tab-interval") : "36pt", i.convertToPx(a)), s = Yd(e, c, u).getOr({}); f(e), u.destroy(), Wa(e, s) }); var r = Ro(l, "ol,ul"); q(r, function (t) { var e = Ro(t, "li"); Va(t, "margin-top").isNone() && _.from(e[0]).each(function (e) { Ha(t, "margin-top", qa(e, "margin-top")) }), Va(t, "margin-bottom").isNone() && _.from(e[e.length - 1]).each(function (e) { Ha(t, "margin-bottom", qa(e, "margin-bottom")) }) }) } Kt(l, "data-tab-interval") }, Yd = function (f, d, m) { var p = function (e) { return zt(e, "data-list-level") ? parseInt(Gt(e, "data-list-level"), 10) : 1 }; return Va(f, "text-indent").bind(function (l) { return Va(f, "margin-left").map(function (e) { var t = Va(f, "list-style").exists(function (e) { return xt(e, "none") }), n = zt(f, "data-border-margin") ? Gt(f, "data-border-margin") : "0px", r = t ? p(f) + 1 : p(f), o = m.convertToPx(e) + m.convertToPx(n), i = d * r, a = zt(f, "data-text-indent-alt") ? m.convertToPx(Gt(f, "data-text-indent-alt")) : m.convertToPx(l), u = {}, c = d / 2 * -1 - a; 0 < c && (u["text-indent"] = c + "px"); var s = o - i - c; return u["margin-left"] = 0 < s ? s + "px" : "0px", u }) }) }, Hd = function (e, t, n) { var r = n.mergeInline(); (r ? Fd.inlineStyles : Ud)(e, t, jd), Bd(t, r) }, Wd = function (n) { var e, r = (e = cn.fromDom(y.document.body), { play: function (i, a, u) { var c = cn.fromTag("div"), s = cn.fromTag("iframe"); Wa(c, { display: "none" }); var l = Ed(s, "load", function () { l.unbind(), Id(s, i); var e = s.dom().contentWindow.document; if (void 0 === e) throw "sandbox iframe load event did not fire correctly"; var t = cn.fromDom(e), n = e.body; if (void 0 === n) throw "sandbox iframe does not have a body"; var r = cn.fromDom(n), o = a(t, r); Fa(c), y.setTimeout(N(u, o), 0) }); la(c, s), la(e, c) } }); return function (e, t) { r.play(e, function (e, t) { return Hd(e, t, { mergeInline: v(n) }), Au(t) }, t) } }, qd = function (e, c, t, s) { var n = e.html(); return _a.sync(function (i) { t.cleanDocument(n, c).get(function (e) { e.fold(function (e) { _a.call(i, { response: Na.error("errors.paste.process.failure"), bundle: Sa.nu({}) }) }, function (e) { var t, n, a, u, r, o; null == (o = e) || 0 === o.length ? (r = i, _a.call(r, { response: Na.paste([], []), bundle: Sa.nu({}) })) : (t = i, n = e, a = s, u = function (e) { _a.call(t, { response: e, bundle: Sa.nu({}) }) }, Wd(c)(n, function (e) { var t = aa(e), n = function (e) { u(Na.paste(t, e)) }, r = cn.fromTag("div"); ma(r, t); var o = Eo("img[src]", r); if (0 === o.length) n([]); else if (a) Sf.browserBlobs(o).get(n); else { q(o, Fa); var i = _o(r); u(Na.incomplete(i, [], "errors.local.images.disallowed")) } })) }) }) }) }, $d = function (e) { var t = $(e, function (e) { return "file" === e.kind && /image/.test(e.type) }), r = W(t, function (e) { return e.getAsFile() }); return _a.sync(function (n) { an.multiple(r).get(function (e) { var t = Sf.createImages(e); _a.call(n, { response: t, bundle: Sa.nu({}) }) }) }) }, Vd = At.detect(), Xd = function (e) { try { var t = e(), n = null != t && 0 < t.length ? aa(t) : []; return Go.value(n) } catch (e) { return y.console.error(e), Go.error("errors.paste.process.failure") } }, Gd = function (e) { return e.fold(function (e) { return _a.error(e) }, function (e) { return _a.pure({ response: Na.paste(e, []), bundle: Sa.nu({}) }) }) }, zd = function (e, t, n, r) { return Xd(function () { return Cl(e, Vd, t, n, r) }) }, Kd = function (e, t, n) { var r = zd(e, t, n, !1); return Gd(r) }, Zd = function (e, t) { var n = Xd(function () { return Dl(e, t) }); return Gd(n) }, Jd = function (e, t, n, r, o) { return zd(e, t, r, n).fold(function (e) { return _a.error(e) }, function (r) { return _a.sync(function (n) { o.get(function (e) { var t = Sf.findImages(r, e); _a.call(n, { response: Na.paste(r, t), bundle: Sa.nu({}) }) }) }) }) }, Qd = function (e, t, n) { var r = t.findClipboardTags(_o(n)).getOr([]); q(r, Fa); var o = Xe.nu(function (e) { e([]) }); return Jd(e, n, !1, !0, o) }, em = function (e, t, n, r, o) { return Jd(e, t, r, n, o) }, tm = function (e) { var t, n = cn.fromTag("div"); return t = e, n.dom().textContent = t, Au(n) }, nm = function (e) { var t = e.trim().split(/\n{2,}|(?:\r\n){2,}/), n = W(t, function (e) { return e.split(/\n|\r\n/).join(" ") }); return 1 === n.length ? n[0] : W(n, function (e) { return "
" + e + "
" }).join("") }, rm = function (e) { var a = Fl.asText(e).getOrDie("Required text input for Text Handler"); return _a.sync(function (e) { var t, n, r, o, i = 0 < a.text().length ? (t = a.text(), n = tm(t), r = nm(n), o = aa(r), Na.paste(o, [])) : Na.cancel(); _a.call(e, { response: i, bundle: Sa.nu({}) }) }) }, om = function (e, t, n) { return rm(e) }, im = function (e, o) { var t = function (e, t) { var n = cn.fromTag("div"); ma(n, e), Nl(n); var r = _o(n); return _a.pure({ response: Na.paste(r, t), bundle: o.bundle() }) }, n = N(_a.pass, o); return Na.cata(o.response(), n, t, n, t) }, am = function () { return function (e, t) { return _a.error("errors.local.images.disallowed") } }, um = function () { return function (e, t) { var n = Fl.asImages(e).getOrDie("Must have image data for images handler"); return $d(n.images()) } }, cm = function (i) { return function (e, t) { var n = Fl.asHtml(e).getOrDie("Wrong input type for HTML handler"), r = i.findClipboardTags(_o(n.container())); r.each(function (e) { q(e, Fa) }); var o = r.isSome(); return _a.pure({ response: t.response(), bundle: Sa.nu({ isInternal: o }) }) } }, sm = function (a, u) { return function (e, t) { var n = Fl.asHtml(e).getOrDie("Wrong input type for HTML handler").container(), r = Lo(u), o = t.bundle(); if (sd.isInternal(o)) return Zd(r, n); a(n); var i = sd.merging(o); return Kd(r, n, i) } }, lm = function (u, c) { return function (e, t) { var a = t.bundle(); return sd.proxyBin(a).handle("There was no proxy bin setup. Ensure you have run proxyStep first.", function (e) { var t = sd.merging(a), n = sd.isWord(a), r = sd.isInternal(a), o = sd.backgroundAssets(a), i = Lo(u); return r ? Qd(i, c, e) : em(i, e, t, n, o) }) } }, fm = function (o, i) { return function (e, t) { var n = Fl.asWord(e).getOrDie("Wrong input type for Word Import handler"), r = sd.mergeOffice(t.bundle()); return qd(n, r, o, i) } }, dm = function (r) { return function (e, t) { var n = Sa.merge(t.bundle(), Sa.nu(r)); return _a.pure({ response: t.response(), bundle: n }) } }, mm = function (e, t) { return _a.cancel() }, pm = ld.resolve("smartpaste-eph-bin"), gm = { binStyle: v(pm) }, vm = function (e, t) { return ns(e, function (e) { return !!zt(e, "style") && -1 < Gt(e, "style").indexOf("mso-") }) }, hm = function (e, t) { var n = Au(e); return Fu(n, t) }, ym = function (e, t) { var n = e.browser; return (n.isIE() && 11 <= n.version.major ? vm : hm)(t, e) }, bm = At.detect(); function xm(r, l, o, f, i) { return function (e, t) { var n = Fl.asEvent(e).getOrDie("Must pass through event type").nativeEvent(), c = i(), s = t.response(); return _a.sync(function (u) { var e = r(o); e.events.after.bind(function (e) { var t = e.container(); if (bm.browser.isSafari() && Vi(t, 'img[src^="webkit-fake-url"]').isSome()) { var n = bm.deviceType.isWebView() ? "webview.imagepaste" : "safari.imagepaste"; _a.call(u, { response: Na.error(n), bundle: Sa.nu({}) }) } else { l(t), Mi(t, gm.binStyle()); var r = ym(bm, t), o = _o(t), i = f.findClipboardTags(o).isSome(), a = H(o, function (e) { return zt(e, "id") && Et(Gt(e, "id"), "docs-internal-guid") }); _a.call(u, { response: s, bundle: Sa.nu({ isWord: r, isGoogleDocs: a, isInternal: i, proxyBin: t, backgroundAssets: c }) }) } }), c.convert(n), e.run() }) } } var Tm = function (e, t) { return e.isSupported() ? t.getWordData() : _.none() }, Em = function (e) { return e.getNative() }, wm = function (e) { return e.getImage() }, Im = function (e) { return e.getHtml() }, Sm = function (e) { return e.getText() }, Lm = function (e) { return e.getOnlyText() }, Cm = function (e) { return e.getGoogleDocsData() }, Nm = function (e, t, n, r) { return { _label: e, label: v(e), getAvailable: t, steps: v(n), capture: v(r) } }, Dm = { wordimport: function (e, t, n, r) { return Nm("Word Import pasting", N(Tm, e), [Df(dm({ isWord: !0 })), Df(vd(t, n)), Df(fm(e, n.allowLocalImages)), Nf((o = n, i = id(r, n), a = od(o), u = Ac(_.none()), c = function (t) { u.get().each(function (e) { _a.call(e, { response: t, bundle: Sa.nu({}) }) }) }, a.events.insert.bind(function (e) { c(Na.paste(e.elements(), e.correlated())) }), a.events.incomplete.bind(function (e) { c(Na.incomplete(e.elements(), e.correlated(), e.message())) }), function (t, r) { var e = Fl.asWord(t).getOrDie("Word input required for rtf data"), n = function (o) { return _a.sync(function (t) { var e = function () { _a.call(t, { response: r.response(), bundle: r.bundle() }) }, n = function (e, n) { u.set(_.some(t)); var r = cn.fromTag("div"); ma(r, e), o.fold(function () { var e, t = rd.find(r); return 0 < t.length ? function () { q(t, Fa); var e = _o(r); c(Na.incomplete(e, n, "errors.local.images.disallowed")) }() : (e = _o(r), void c(Na.paste(e, n))) }, function (e) { a.processRtf(r, n, e, C) }) }; Na.cata(r.response(), e, n, e, n) }) }; return kl.match(e.rtf(), { getFromFlash: function (e) { return i(t, r) }, disabled: function () { return n(_.none()) }, fromClipboard: function (e) { return n(!0 === o.allowLocalImages ? _.some(e.rtf()) : _.none()) } }) })), Df(Cf())], !0); var o, i, a, u, c }, googledocs: function (e, t, n) { return Nm(" pasting", Cm, [Df(dm({ officeStyles: !1, htmlStyles: !1 })), Df(sm(t, n)), Df(Ff(e)), Df(Cf())], !0) }, image: function (e) { return Nm("Image pasting", wm, [Df(!1 === e.allowLocalImages ? am() : um()), Df(Cf())], !0) }, nativeHtml: function (e, t, n, r) { return Nm("Outside of Textbox.io pasting HTML5 API (could be internal)", Im, [Df(cm(t.intraFlag)), Df(hd(e, t)), Df(sm(n, r)), Df(Ff(t)), Df(Cf())], !0) }, text: function () { return Nm("Plain text pasting", Sm, [Df(om), Df(im)], !0) }, onlyText: function () { return Nm("Only plain text is available to paste", Lm, [Df(om), Df(im)], !0) }, none: function () { return Nm("There is no valid way to paste", _.some, [Df(mm)], !1) }, fallback: function (e, t, n, r, o, i) { return Nm("Outside of Textbox.io pasting offscreen (could be internal)", Em, [Df(xm(r, n, o, t.intraFlag, Af)), Df(hd(e, t)), Df(lm(o, t.intraFlag)), Nf(id(i, t)), Df(Ff(t)), Df(Cf())], !1) } }, Om = function (u) { var c = N(Ee, u); Ee("callbacks", c()); var t = function (e, t) { var n, r, o, i = c(), a = (r = void 0 === (n = i).count ? 0 : n.count, o = "callback_" + r, n.count = r + 1, o); return i.callbacks[a] = function () { t || s(a), e.apply(null, arguments) }, u + ".callbacks." + a }, s = function (e) { var t = e.substring(e.lastIndexOf(".") + 1), n = c(); void 0 !== n.callbacks[t] && delete n.callbacks[t] }; return { ephemeral: function (e) { return t(e, !1) }, permanent: function (e) { return t(e, !0) }, unregister: s } }, Am = function (e) { e.dom().focus() }, _m = { responsive: function () { var a = Ac(_.none()), u = ao.create({ crashed: io([]), timeout: io([]) }); return { start: function (e, t, n, r) { var o = t, i = y.setInterval(function () { n() ? y.clearInterval(i) : o <= 0 ? (u.trigger.timeout(), y.clearInterval(i)) : r() && (y.clearInterval(i), u.trigger.crashed()), o-- }, e); a.set(_.some(i)) }, stop: function () { a.get().each(function (e) { y.clearInterval(e) }) }, events: u.registry } } }; function Pm(n, r, o) { var e = !0, t = y.setInterval(function () { var t, e = n.dom(); j(e.PercentLoaded) && 100 === e.PercentLoaded() && (t = e, Q(r, function (e) { return j(t[e]) })) && (i(), o()) }, 500), i = function () { e && (y.clearInterval(t), e = !1) }; return { stop: i } } var km = Om("ephox.flash"), Mm = At.detect(), Rm = _.none(), Fm = function (e) { return cn.fromHtml("
" + e("cement.dialog.flash.press-escape") + "
") }, jm = function (e) { var t = cn.fromTag("div"); Mi(t, ld.resolve("flashbin-helpcopy")); var n = At.detect().os.isOSX() ? ["\u2318"] : ["Ctrl"], r = cn.fromHtml("
" + e("cement.dialog.flash.trigger-paste") + "
"), o = cn.fromHtml('
' + n + ' + V
'); return Mi(o, ld.resolve("flashbin-helpcopy-kbd")), ma(t, [r, o, Fm(e)]), t }, Um = function (e) { var t = cn.fromTag("div"); Mi(t, ld.resolve("flashbin-helpcopy")); var n = cn.fromHtml("