<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[45316] trunk/src: Update TinyMCE to 4.9.4.</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { white-space: pre-line; overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta" style="font-size: 105%">
<dt style="float: left; width: 6em; font-weight: bold">Revision</dt> <dd><a style="font-weight: bold" href="https://core.trac.wordpress.org/changeset/45316">45316</a><script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","description":"Review this Commit","action":{"@type":"ViewAction","url":"https://core.trac.wordpress.org/changeset/45316","name":"Review Commit"}}</script></dd>
<dt style="float: left; width: 6em; font-weight: bold">Author</dt> <dd>azaozz</dd>
<dt style="float: left; width: 6em; font-weight: bold">Date</dt> <dd>2019-05-15 23:44:37 +0000 (Wed, 15 May 2019)</dd>
</dl>

<pre style='padding-left: 1em; margin: 2em 0; border-left: 2px solid #ccc; line-height: 1.25; font-size: 105%; font-family: sans-serif'>Update TinyMCE to 4.9.4. Changelog: https://github.com/tinymce/tinymce/blob/4.x/changelog.txt.

Fixes <a href="https://core.trac.wordpress.org/ticket/47229">#47229</a> for trunk.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunksrcjs_enqueuesvendortinymcepluginsfullscreenpluginjs">trunk/src/js/_enqueues/vendor/tinymce/plugins/fullscreen/plugin.js</a></li>
<li><a href="#trunksrcjs_enqueuesvendortinymcepluginsfullscreenpluginminjs">trunk/src/js/_enqueues/vendor/tinymce/plugins/fullscreen/plugin.min.js</a></li>
<li><a href="#trunksrcjs_enqueuesvendortinymcepluginsimagepluginjs">trunk/src/js/_enqueues/vendor/tinymce/plugins/image/plugin.js</a></li>
<li><a href="#trunksrcjs_enqueuesvendortinymcepluginsimagepluginminjs">trunk/src/js/_enqueues/vendor/tinymce/plugins/image/plugin.min.js</a></li>
<li><a href="#trunksrcjs_enqueuesvendortinymcepluginslinkpluginjs">trunk/src/js/_enqueues/vendor/tinymce/plugins/link/plugin.js</a></li>
<li><a href="#trunksrcjs_enqueuesvendortinymcepluginslinkpluginminjs">trunk/src/js/_enqueues/vendor/tinymce/plugins/link/plugin.min.js</a></li>
<li><a href="#trunksrcjs_enqueuesvendortinymcepluginslistspluginjs">trunk/src/js/_enqueues/vendor/tinymce/plugins/lists/plugin.js</a></li>
<li><a href="#trunksrcjs_enqueuesvendortinymcepluginslistspluginminjs">trunk/src/js/_enqueues/vendor/tinymce/plugins/lists/plugin.min.js</a></li>
<li><a href="#trunksrcjs_enqueuesvendortinymcepluginspastepluginjs">trunk/src/js/_enqueues/vendor/tinymce/plugins/paste/plugin.js</a></li>
<li><a href="#trunksrcjs_enqueuesvendortinymcepluginspastepluginminjs">trunk/src/js/_enqueues/vendor/tinymce/plugins/paste/plugin.min.js</a></li>
<li><a href="#trunksrcjs_enqueuesvendortinymcepluginstabfocuspluginjs">trunk/src/js/_enqueues/vendor/tinymce/plugins/tabfocus/plugin.js</a></li>
<li><a href="#trunksrcjs_enqueuesvendortinymcepluginstabfocuspluginminjs">trunk/src/js/_enqueues/vendor/tinymce/plugins/tabfocus/plugin.min.js</a></li>
<li><a href="#trunksrcjs_enqueuesvendortinymceskinslightgrayskinmincss">trunk/src/js/_enqueues/vendor/tinymce/skins/lightgray/skin.min.css</a></li>
<li><a href="#trunksrcjs_enqueuesvendortinymcethemesinlitethemejs">trunk/src/js/_enqueues/vendor/tinymce/themes/inlite/theme.js</a></li>
<li><a href="#trunksrcjs_enqueuesvendortinymcethemesinlitethememinjs">trunk/src/js/_enqueues/vendor/tinymce/themes/inlite/theme.min.js</a></li>
<li><a href="#trunksrcjs_enqueuesvendortinymcethemesmodernthemejs">trunk/src/js/_enqueues/vendor/tinymce/themes/modern/theme.js</a></li>
<li><a href="#trunksrcjs_enqueuesvendortinymcethemesmodernthememinjs">trunk/src/js/_enqueues/vendor/tinymce/themes/modern/theme.min.js</a></li>
<li><a href="#trunksrcjs_enqueuesvendortinymcetinymcejs">trunk/src/js/_enqueues/vendor/tinymce/tinymce.js</a></li>
<li><a href="#trunksrcjs_enqueuesvendortinymcetinymceminjs">trunk/src/js/_enqueues/vendor/tinymce/tinymce.min.js</a></li>
<li><a href="#trunksrcwpincludesversionphp">trunk/src/wp-includes/version.php</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunksrcjs_enqueuesvendortinymcepluginsfullscreenpluginjs"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/js/_enqueues/vendor/tinymce/plugins/fullscreen/plugin.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/js/_enqueues/vendor/tinymce/plugins/fullscreen/plugin.js        2019-05-15 19:53:42 UTC (rev 45315)
+++ trunk/src/js/_enqueues/vendor/tinymce/plugins/fullscreen/plugin.js  2019-05-15 23:44:37 UTC (rev 45316)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,5 @@
</span><span class="cx" style="display: block; padding: 0 10px"> (function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-var fullscreen = (function () {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+var fullscreen = (function (domGlobals) {
</ins><span class="cx" style="display: block; padding: 0 10px">     'use strict';
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var Cell = function (initial) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -42,8 +42,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var getWindowSize = function () {
</span><span class="cx" style="display: block; padding: 0 10px">       var w;
</span><span class="cx" style="display: block; padding: 0 10px">       var h;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var win = window;
-      var doc = document;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var win = domGlobals.window;
+      var doc = domGlobals.document;
</ins><span class="cx" style="display: block; padding: 0 10px">       var body = doc.body;
</span><span class="cx" style="display: block; padding: 0 10px">       if (body.offsetWidth) {
</span><span class="cx" style="display: block; padding: 0 10px">         w = body.offsetWidth;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -66,11 +66,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var setScrollPos = function (pos) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      window.scrollTo(pos.x, pos.y);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      domGlobals.window.scrollTo(pos.x, pos.y);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var toggleFullscreen = function (editor, fullscreenState) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var body = document.body;
-      var documentElement = document.documentElement;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var body = domGlobals.document.body;
+      var documentElement = domGlobals.document.documentElement;
</ins><span class="cx" style="display: block; padding: 0 10px">       var editorContainerStyle;
</span><span class="cx" style="display: block; padding: 0 10px">       var editorContainer, iframe, iframeStyle;
</span><span class="cx" style="display: block; padding: 0 10px">       var fullscreenInfo = fullscreenState.get();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -78,7 +78,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         DOM.setStyle(iframe, 'height', getWindowSize().h - (editorContainer.clientHeight - iframe.clientHeight));
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var removeResize = function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        DOM.unbind(window, 'resize', resize);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        DOM.unbind(domGlobals.window, 'resize', resize);
</ins><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       editorContainer = editor.getContainer();
</span><span class="cx" style="display: block; padding: 0 10px">       editorContainerStyle = editorContainer.style;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -99,7 +99,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         DOM.addClass(body, 'mce-fullscreen');
</span><span class="cx" style="display: block; padding: 0 10px">         DOM.addClass(documentElement, 'mce-fullscreen');
</span><span class="cx" style="display: block; padding: 0 10px">         DOM.addClass(editorContainer, 'mce-fullscreen');
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        DOM.bind(window, 'resize', resize);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        DOM.bind(domGlobals.window, 'resize', resize);
</ins><span class="cx" style="display: block; padding: 0 10px">         editor.on('remove', removeResize);
</span><span class="cx" style="display: block; padding: 0 10px">         resize();
</span><span class="cx" style="display: block; padding: 0 10px">         fullscreenState.set(newFullScreenInfo);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -117,7 +117,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         DOM.removeClass(documentElement, 'mce-fullscreen');
</span><span class="cx" style="display: block; padding: 0 10px">         DOM.removeClass(editorContainer, 'mce-fullscreen');
</span><span class="cx" style="display: block; padding: 0 10px">         setScrollPos(fullscreenInfo.scrollPos);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        DOM.unbind(window, 'resize', fullscreenInfo.resizeHandler);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        DOM.unbind(domGlobals.window, 'resize', fullscreenInfo.resizeHandler);
</ins><span class="cx" style="display: block; padding: 0 10px">         editor.off('remove', fullscreenInfo.removeHandler);
</span><span class="cx" style="display: block; padding: 0 10px">         fullscreenState.set(null);
</span><span class="cx" style="display: block; padding: 0 10px">         Events.fireFullscreenStateChanged(editor, false);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -173,5 +173,5 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     return Plugin;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-}());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+}(window));
</ins><span class="cx" style="display: block; padding: 0 10px"> })();
</span></span></pre></div>
<a id="trunksrcjs_enqueuesvendortinymcepluginsfullscreenpluginminjs"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/js/_enqueues/vendor/tinymce/plugins/fullscreen/plugin.min.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/js/_enqueues/vendor/tinymce/plugins/fullscreen/plugin.min.js    2019-05-15 19:53:42 UTC (rev 45315)
+++ trunk/src/js/_enqueues/vendor/tinymce/plugins/fullscreen/plugin.min.js      2019-05-15 23:44:37 UTC (rev 45316)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1 +1 @@
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-!function(){"use strict";var i=function(e){var n=e,t=function(){return n};return{get:t,set:function(e){n=e},clone:function(){return i(t())}}},e=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=function(e){return{isFullscreen:function(){return null!==e.get()}}},n=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),m=function(e,n){e.fire("FullscreenStateChanged",{state:n})},g=n.DOM,r=function(e,n){var t,r,l,i,o,c,s=document.body,u=document.documentElement,d=n.get(),a=function(){var e,n,t,i;g.setStyle(l,"height",(t=window,i=document.body,i.offsetWidth&&(e=i.offsetWidth,n=i.offsetHeight),t.innerWidth&&t.innerHeight&&(e=t.innerWidth,n=t.innerHeight),{w:e,h:n}).h-(r.clientHeight-l.clientHeight))},h=function(){g.unbind(window,"resize",a)};if(t=(r=e.getContainer()).style,i=(l=e.getContentAreaContainer().first
 Child).style,d)i.width=d.iframeWidth,i.height=d.iframeHeight,d.containerWidth&&(t.width=d.containerWidth),d.containerHeight&&(t.height=d.containerHeight),g.removeClass(s,"mce-fullscreen"),g.removeClass(u,"mce-fullscreen"),g.removeClass(r,"mce-fullscreen"),o=d.scrollPos,window.scrollTo(o.x,o.y),g.unbind(window,"resize",d.resizeHandler),e.off("remove",d.removeHandler),n.set(null),m(e,!1);else{var f={scrollPos:(c=g.getViewPort(),{x:c.x,y:c.y}),containerWidth:t.width,containerHeight:t.height,iframeWidth:i.width,iframeHeight:i.height,resizeHandler:a,removeHandler:h};i.width=i.height="100%",t.width=t.height="",g.addClass(s,"mce-fullscreen"),g.addClass(u,"mce-fullscreen"),g.addClass(r,"mce-fullscreen"),g.bind(window,"resize",a),e.on("remove",h),a(),n.set(f),m(e,!0)}},l=function(e,n){e.addCommand("mceFullScreen",function(){r(e,n)})},o=function(t){
 return function(e){var n=e.control;t.on("FullscreenStateChanged",function(e){n.active(e.state)})}},c=function(e){e.addMenuItem("fullscreen",{text:"Fullscreen",shortcut:"Ctrl+Shift+F",selectable:!0,cmd:"mceFullScreen",onPostRender:o(e),context:"view"}),e.addButton("fullscreen",{active:!1,tooltip:"Fullscreen",cmd:"mceFullScreen",onPostRender:o(e)})};e.add("fullscreen",function(e){var n=i(null);return e.settings.inline||(l(e,n),c(e),e.addShortcut("Ctrl+Shift+F","","mceFullScreen")),t(n)})}();
</del><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of file
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+!function(m){"use strict";var i=function(e){var n=e,t=function(){return n};return{get:t,set:function(e){n=e},clone:function(){return i(t())}}},e=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=function(e){return{isFullscreen:function(){return null!==e.get()}}},n=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),g=function(e,n){e.fire("FullscreenStateChanged",{state:n})},w=n.DOM,r=function(e,n){var t,r,l,i,o,c,s=m.document.body,u=m.document.documentElement,d=n.get(),a=function(){var e,n,t,i;w.setStyle(l,"height",(t=m.window,i=m.document.body,i.offsetWidth&&(e=i.offsetWidth,n=i.offsetHeight),t.innerWidth&&t.innerHeight&&(e=t.innerWidth,n=t.innerHeight),{w:e,h:n}).h-(r.clientHeight-l.clientHeight))},h=function(){w.unbind(m.window,"resize",a)};if(t=(r=e.getContainer()).style,i=(l=e.getContentAreaContai
 ner().firstChild).style,d)i.width=d.iframeWidth,i.height=d.iframeHeight,d.containerWidth&&(t.width=d.containerWidth),d.containerHeight&&(t.height=d.containerHeight),w.removeClass(s,"mce-fullscreen"),w.removeClass(u,"mce-fullscreen"),w.removeClass(r,"mce-fullscreen"),o=d.scrollPos,m.window.scrollTo(o.x,o.y),w.unbind(m.window,"resize",d.resizeHandler),e.off("remove",d.removeHandler),n.set(null),g(e,!1);else{var f={scrollPos:(c=w.getViewPort(),{x:c.x,y:c.y}),containerWidth:t.width,containerHeight:t.height,iframeWidth:i.width,iframeHeight:i.height,resizeHandler:a,removeHandler:h};i.width=i.height="100%",t.width=t.height="",w.addClass(s,"mce-fullscreen"),w.addClass(u,"mce-fullscreen"),w.addClass(r,"mce-fullscreen"),w.bind(m.window,"resize",a),e.on("remove",h),a(),n.set(f),g(e,!0)}},l=function(e,n){e.addCommand("mceFullScreen",function(){r(e,n)}
 )},o=function(t){return function(e){var n=e.control;t.on("FullscreenStateChanged",function(e){n.active(e.state)})}},c=function(e){e.addMenuItem("fullscreen",{text:"Fullscreen",shortcut:"Ctrl+Shift+F",selectable:!0,cmd:"mceFullScreen",onPostRender:o(e),context:"view"}),e.addButton("fullscreen",{active:!1,tooltip:"Fullscreen",cmd:"mceFullScreen",onPostRender:o(e)})};e.add("fullscreen",function(e){var n=i(null);return e.settings.inline||(l(e,n),c(e),e.addShortcut("Ctrl+Shift+F","","mceFullScreen")),t(n)})}(window);
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of file
</span></span></pre></div>
<a id="trunksrcjs_enqueuesvendortinymcepluginsimagepluginjs"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/js/_enqueues/vendor/tinymce/plugins/image/plugin.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/js/_enqueues/vendor/tinymce/plugins/image/plugin.js     2019-05-15 19:53:42 UTC (rev 45315)
+++ trunk/src/js/_enqueues/vendor/tinymce/plugins/image/plugin.js       2019-05-15 23:44:37 UTC (rev 45316)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,5 @@
</span><span class="cx" style="display: block; padding: 0 10px"> (function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-var image = (function () {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+var image = (function (domGlobals) {
</ins><span class="cx" style="display: block; padding: 0 10px">     'use strict';
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -63,7 +63,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       getUploadCredentials: getUploadCredentials
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var Global = typeof window !== 'undefined' ? window : Function('return this;')();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var Global = typeof domGlobals.window !== 'undefined' ? domGlobals.window : Function('return this;')();
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var path = function (parts, scope) {
</span><span class="cx" style="display: block; padding: 0 10px">       var o = scope !== undefined && scope !== null ? scope : Global;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -102,7 +102,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return Math.max(parseInt(val1, 10), parseInt(val2, 10));
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var getImageSize = function (url, callback) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var img = document.createElement('img');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var img = domGlobals.document.createElement('img');
</ins><span class="cx" style="display: block; padding: 0 10px">       function done(width, height) {
</span><span class="cx" style="display: block; padding: 0 10px">         if (img.parentNode) {
</span><span class="cx" style="display: block; padding: 0 10px">           img.parentNode.removeChild(img);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -125,7 +125,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       style.position = 'fixed';
</span><span class="cx" style="display: block; padding: 0 10px">       style.bottom = style.left = '0px';
</span><span class="cx" style="display: block; padding: 0 10px">       style.width = style.height = 'auto';
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      document.body.appendChild(img);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      domGlobals.document.body.appendChild(img);
</ins><span class="cx" style="display: block; padding: 0 10px">       img.src = url;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var buildListItems = function (inputList, itemCallback, startItems) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -294,21 +294,21 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return '';
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var getAttrib = function (image, name$$1) {
-      if (image.hasAttribute(name$$1)) {
-        return image.getAttribute(name$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var getAttrib = function (image, name) {
+      if (image.hasAttribute(name)) {
+        return image.getAttribute(name);
</ins><span class="cx" style="display: block; padding: 0 10px">       } else {
</span><span class="cx" style="display: block; padding: 0 10px">         return '';
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var getStyle = function (image, name$$1) {
-      return image.style[name$$1] ? image.style[name$$1] : '';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var getStyle = function (image, name) {
+      return image.style[name] ? image.style[name] : '';
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var hasCaption = function (image) {
</span><span class="cx" style="display: block; padding: 0 10px">       return image.parentNode !== null && image.parentNode.nodeName === 'FIGURE';
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var setAttrib = function (image, name$$1, value) {
-      image.setAttribute(name$$1, value);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var setAttrib = function (image, name, value) {
+      image.setAttribute(name, value);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var wrapInFigure = function (image) {
</span><span class="cx" style="display: block; padding: 0 10px">       var figureElm = DOM.create('figure', { class: 'image' });
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -339,21 +339,21 @@
</span><span class="cx" style="display: block; padding: 0 10px">         image.removeAttribute('style');
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var setSize = function (name$$1, normalizeCss) {
-      return function (image, name$$1, value) {
-        if (image.style[name$$1]) {
-          image.style[name$$1] = Utils.addPixelSuffix(value);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var setSize = function (name, normalizeCss) {
+      return function (image, name, value) {
+        if (image.style[name]) {
+          image.style[name] = Utils.addPixelSuffix(value);
</ins><span class="cx" style="display: block; padding: 0 10px">           normalizeStyle(image, normalizeCss);
</span><span class="cx" style="display: block; padding: 0 10px">         } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          setAttrib(image, name$$1, value);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          setAttrib(image, name, value);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var getSize = function (image, name$$1) {
-      if (image.style[name$$1]) {
-        return Utils.removePixelSuffix(image.style[name$$1]);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var getSize = function (image, name) {
+      if (image.style[name]) {
+        return Utils.removePixelSuffix(image.style[name]);
</ins><span class="cx" style="display: block; padding: 0 10px">       } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return getAttrib(image, name$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return getAttrib(image, name);
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var setHspace = function (image, value) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -396,7 +396,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var getStyleValue = function (normalizeCss, data) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var image = document.createElement('img');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var image = domGlobals.document.createElement('img');
</ins><span class="cx" style="display: block; padding: 0 10px">       setAttrib(image, 'style', data.style);
</span><span class="cx" style="display: block; padding: 0 10px">       if (getHspace(image) || data.hspace !== '') {
</span><span class="cx" style="display: block; padding: 0 10px">         setHspace(image, data.hspace);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -413,7 +413,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return normalizeCss(image.getAttribute('style'));
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var create = function (normalizeCss, data) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var image = document.createElement('img');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var image = domGlobals.document.createElement('img');
</ins><span class="cx" style="display: block; padding: 0 10px">       write(normalizeCss, merge(data, { caption: false }), image);
</span><span class="cx" style="display: block; padding: 0 10px">       setAttrib(image, 'alt', data.alt);
</span><span class="cx" style="display: block; padding: 0 10px">       if (data.caption) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -442,13 +442,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">         borderStyle: getStyle(image, 'borderStyle')
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var updateProp = function (image, oldData, newData, name$$1, set) {
-      if (newData[name$$1] !== oldData[name$$1]) {
-        set(image, name$$1, newData[name$$1]);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var updateProp = function (image, oldData, newData, name, set) {
+      if (newData[name] !== oldData[name]) {
+        set(image, name, newData[name]);
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var normalized = function (set, normalizeCss) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return function (image, name$$1, value) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return function (image, name, value) {
</ins><span class="cx" style="display: block; padding: 0 10px">         set(image, value);
</span><span class="cx" style="display: block; padding: 0 10px">         normalizeStyle(image, normalizeCss);
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -952,7 +952,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           success(pathJoin(settings.basePath, json.location));
</span><span class="cx" style="display: block; padding: 0 10px">         };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        formData = new FormData();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        formData = new domGlobals.FormData();
</ins><span class="cx" style="display: block; padding: 0 10px">         formData.append('file', blobInfo.blob(), blobInfo.filename());
</span><span class="cx" style="display: block; padding: 0 10px">         xhr.send(formData);
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1200,5 +1200,5 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     return Plugin;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-}());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+}(window));
</ins><span class="cx" style="display: block; padding: 0 10px"> })();
</span></span></pre></div>
<a id="trunksrcjs_enqueuesvendortinymcepluginsimagepluginminjs"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/js/_enqueues/vendor/tinymce/plugins/image/plugin.min.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/js/_enqueues/vendor/tinymce/plugins/image/plugin.min.js 2019-05-15 19:53:42 UTC (rev 45315)
+++ trunk/src/js/_enqueues/vendor/tinymce/plugins/image/plugin.min.js   2019-05-15 23:44:37 UTC (rev 45316)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1 +1 @@
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-!function(){"use strict";var i,e=tinymce.util.Tools.resolve("tinymce.PluginManager"),d=function(e){return!1!==e.settings.image_dimensions},l=function(e){return!0===e.settings.image_advtab},m=function(e){return e.getParam("image_prepend_url","")},n=function(e){return e.getParam("image_class_list")},r=function(e){return!1!==e.settings.image_description},a=function(e){return!0===e.settings.image_title},o=function(e){return!0===e.settings.image_caption},u=function(e){return e.getParam("image_list",!1)},c=function(e){return e.getParam("images_upload_url",!1)},s=function(e){return e.getParam("images_upload_handler",!1)},g=function(e){return e.getParam("images_upload_url")},f=function(e){return e.getParam("images_upload_handler")},p=function(e){return e.getParam("images_upload_base_path&quot
 ;)},h=function(e){return e.getParam("images_upload_credentials")},v="undefined"!=typeof window?window:Function("return this;")(),b=function(e,t){return function(e,t){for(var n=t!==undefined&&null!==t?t:v,r=0;r<e.length&&n!==undefined&&null!==n;++r)n=n[e[r]];return n}(e.split("."),t)},y={getOrDie:function(e,t){var n=b(e,t);if(n===undefined||null===n)throw e+" not available on this browser";return n}},x=tinymce.util.Tools.resolve("tinymce.util.Promise"),w=tinymce.util.Tools.resolve("tinymce.util.Tools"),C=tinymce.util.Tools.resolve("tinymce.util.XHR"),S=function(e,t){return Math.max(parseInt(e,10),parseInt(t,10))},N=function(e,n){var r=document.createElement("img");function t(e,t){r.parentNode&&r.parentNode.removeChild(r),n({width:e,height:t})}r.onload=function(){t(S(r.width,r.clientWidth),S(r.height,r.clientHeight))},r.onerror=function(){t(0,0)};var a=r.style;a
 .visibility="hidden",a.position="fixed",a.bottom=a.left="0px",a.width=a.height="auto",document.body.appendChild(r),r.src=e},_=function(e,a,t){return function n(e,r){return r=r||[],w.each(e,function(e){var t={text:e.text||e.title};e.menu?t.menu=n(e.menu):(t.value=e.value,a(t)),r.push(t)}),r}(e,t||[])},T=function(e){return e&&(e=e.replace(/px$/,"")),e},A=function(e){return 0<e.length&&/^[0-9]+$/.test(e)&&(e+="px"),e},R=function(e){if(e.margin){var t=e.margin.split(" ");switch(t.length){case 1:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[0],e["margin-bottom"]=e["margin-bottom"]||t[0],e["margin-left"]=e["margin-left"]||t[0];break;case 2:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[1],e["margin-bottom"
 ]=e["margin-bottom"]||t[0],e["margin-left"]=e["margin-left"]||t[1];break;case 3:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[1],e["margin-bottom"]=e["margin-bottom"]||t[2],e["margin-left"]=e["margin-left"]||t[1];break;case 4:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[1],e["margin-bottom"]=e["margin-bottom"]||t[2],e["margin-left"]=e["margin-left"]||t[3]}delete e.margin}return e},t=function(e,t){var n=u(e);"string"==typeof n?C.send({url:n,success:function(e){t(JSON.parse(e))}}):"function"==typeof n?n(t):t(n)},I=function(e,t,n){function r(){n.onload=n.onerror=null,e.selection&&(e.selection.select(n),e.nodeChanged())}n.onload=function(){t.width||t.height||!d(e)||e.dom.setAttribs(n,{width:n.clientWidth,height
 :n.clientHeight}),r()},n.onerror=r},O=function(r){return new x(function(e,t){var n=new(y.getOrDie("FileReader"));n.onload=function(){e(n.result)},n.onerror=function(){t(n.error.message)},n.readAsDataURL(r)})},L=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),P=Object.prototype.hasOwnProperty,U=(i=function(e,t){return t},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 a=e[r];for(var o in a)P.call(a,o)&&(n[o]=i(n[o],a[o]))}return n}),E=L.DOM,k=function(e){return e.style.marginLeft&&e.style.marginRight&&e.style.marginLeft===e.style.marginRight?T(e.style.marginLeft):""},M=function(e){return e.style.marginTop&&e.style.marginBottom&&e.style.marginTop===e.style.marginBottom?T(e.style.marginTop):""},D=function(e){return e.style.borderWidth?T(e.style.borderWidth
 ):""},z=function(e,t){return e.hasAttribute(t)?e.getAttribute(t):""},B=function(e,t){return e.style[t]?e.style[t]:""},H=function(e){return null!==e.parentNode&&"FIGURE"===e.parentNode.nodeName},j=function(e,t,n){e.setAttribute(t,n)},F=function(e){var t,n,r,a;H(e)?(a=(r=e).parentNode,E.insertAfter(r,a),E.remove(a)):(t=e,n=E.create("figure",{"class":"image"}),E.insertAfter(n,t),n.appendChild(t),n.appendChild(E.create("figcaption",{contentEditable:!0},"Caption")),n.contentEditable="false")},W=function(e,t){var n=e.getAttribute("style"),r=t(null!==n?n:"");0<r.length?(e.setAttribute("style",r),e.setAttribute("data-mce-style",r)):e.removeAttribute("style")},J=function(e,r){return function(e,t,n){e.style[t]?(e.style[t]=A(n),W(e,r)):j(e,t,n)}},V=function(e,t){return e.style[t]?T(e.style[t]):z(e,t)},G=function(e,t){var n=A(t);e.style
 .marginLeft=n,e.style.marginRight=n},$=function(e,t){var n=A(t);e.style.marginTop=n,e.style.marginBottom=n},X=function(e,t){var n=A(t);e.style.borderWidth=n},q=function(e,t){e.style.borderStyle=t},K=function(e){return"FIGURE"===e.nodeName},Q=function(e,t){var n=document.createElement("img");return j(n,"style",t.style),(k(n)||""!==t.hspace)&&G(n,t.hspace),(M(n)||""!==t.vspace)&&$(n,t.vspace),(D(n)||""!==t.border)&&X(n,t.border),(B(n,"borderStyle")||""!==t.borderStyle)&&q(n,t.borderStyle),e(n.getAttribute("style"))},Y=function(e,t){return{src:z(t,"src"),alt:z(t,"alt"),title:z(t,"title"),width:V(t,"width"),height:V(t,"height"),"class":z(t,"class"),style:e(z(t,"style")),caption:H(t),hspace:k(t),vspace:M(t),border:D(t),borderStyle:B(t,"borderStyle")}},Z=function(e,t,n,r,a){n[r]!=
 =t[r]&&a(e,r,n[r])},ee=function(r,a){return function(e,t,n){r(e,n),W(e,a)}},te=function(e,t,n){var r=Y(e,n);Z(n,r,t,"caption",function(e,t,n){return F(e)}),Z(n,r,t,"src",j),Z(n,r,t,"alt",j),Z(n,r,t,"title",j),Z(n,r,t,"width",J(0,e)),Z(n,r,t,"height",J(0,e)),Z(n,r,t,"class",j),Z(n,r,t,"style",ee(function(e,t){return j(e,"style",t)},e)),Z(n,r,t,"hspace",ee(G,e)),Z(n,r,t,"vspace",ee($,e)),Z(n,r,t,"border",ee(X,e)),Z(n,r,t,"borderStyle",ee(q,e))},ne=function(e,t){var n=e.dom.styles.parse(t),r=R(n),a=e.dom.styles.parse(e.dom.styles.serialize(r));return e.dom.styles.serialize(a)},re=function(e){var t=e.selection.getNode(),n=e.dom.getParent(t,"figure.image");return n?e.dom.select("img",n)[0]:t&&("IMG"!==t.nodeName||t.getAttribute("data-mce-object")||t.getAttribute("data-mce-placeholder"))?null:t},
 ae=function(t,e){var n=t.dom,r=n.getParent(e.parentNode,function(e){return t.schema.getTextBlockElements()[e.nodeName]},t.getBody());return r?n.split(r,e):e},oe=function(t){var e=re(t);return e?Y(function(e){return ne(t,e)},e):{src:"",alt:"",title:"",width:"",height:"","class":"",style:"",caption:!1,hspace:"",vspace:"",border:"",borderStyle:""}},ie=function(t,e){var n=function(e,t){var n=document.createElement("img");if(te(e,U(t,{caption:!1}),n),j(n,"alt",t.alt),t.caption){var r=E.create("figure",{"class":"image"});return r.appendChild(n),r.appendChild(E.create("figcaption",{contentEditable:!0},"Caption")),r.contentEditable="false",r}return n}(function(e){return ne(t,e)},e);t.dom.setAttrib(n,"data-mce-id","__mcenew"),t.focus(),t.selection.setContent(n.outerHTML);var 
 r=t.dom.select('*[data-mce-id="__mcenew"]')[0];if(t.dom.setAttrib(r,"data-mce-id",null),K(r)){var a=ae(t,r);t.selection.select(a)}else t.selection.select(r)},le=function(e,t){var n=re(e);n?t.src?function(t,e){var n,r=re(t);if(te(function(e){return ne(t,e)},e,r),n=r,t.dom.setAttrib(n,"src",n.getAttribute("src")),K(r.parentNode)){var a=r.parentNode;ae(t,a),t.selection.select(r.parentNode)}else t.selection.select(r),I(t,e,r)}(e,t):function(e,t){if(t){var n=e.dom.is(t.parentNode,"figure.image")?t.parentNode:t;e.dom.remove(n),e.focus(),e.nodeChanged(),e.dom.isEmpty(e.getBody())&&(e.setContent(""),e.selection.setCursorLocation())}}(e,n):t.src&&ie(e,t)},ue=function(n,r){r.find("#style").each(function(e){var t=Q(function(e){return ne(n,e)},U({src:"",alt:"",title:"",width:"",height:"","class":"",style:"",caption:!1,hspace:"
 ",vspace:"",border:"",borderStyle:""},r.toJSON()));e.value(t)})},ce=function(t){return{title:"Advanced",type:"form",pack:"start",items:[{label:"Style",name:"style",type:"textbox",onchange:(o=t,function(e){var t=o.dom,n=e.control.rootControl;if(l(o)){var r=n.toJSON(),a=t.parseStyle(r.style);n.find("#vspace").value(""),n.find("#hspace").value(""),((a=R(a))["margin-top"]&&a["margin-bottom"]||a["margin-right"]&&a["margin-left"])&&(a["margin-top"]===a["margin-bottom"]?n.find("#vspace").value(T(a["margin-top"])):n.find("#vspace").value(""),a["margin-right"]===a["margin-left"]?n.find("#hspace").value(T(a["margin-right"])):n.find("#hspace").value("")),a["border-width"
 ]?n.find("#border").value(T(a["border-width"])):n.find("#border").value(""),a["border-style"]?n.find("#borderStyle").value(a["border-style"]):n.find("#borderStyle").value(""),n.find("#style").value(t.serializeStyle(t.parseStyle(t.serializeStyle(a))))}})},{type:"form",layout:"grid",packV:"start",columns:2,padding:0,defaults:{type:"textbox",maxWidth:50,onchange:function(e){ue(t,e.control.rootControl)}},items:[{label:"Vertical space",name:"vspace"},{label:"Border width",name:"border"},{label:"Horizontal space",name:"hspace"},{label:"Border style",type:"listbox",name:"borderStyle",width:90,maxWidth:90,onselect:function(e){ue(t,e.control.rootControl)},values:[{text:"Select...",value:""},{text:"Solid",value:"solid"},{text:&
 quot;Dotted",value:"dotted"},{text:"Dashed",value:"dashed"},{text:"Double",value:"double"},{text:"Groove",value:"groove"},{text:"Ridge",value:"ridge"},{text:"Inset",value:"inset"},{text:"Outset",value:"outset"},{text:"None",value:"none"},{text:"Hidden",value:"hidden"}]}]}]};var o},se=function(e,t){e.state.set("oldVal",e.value()),t.state.set("oldVal",t.value())},de=function(e,t){var n=e.find("#width")[0],r=e.find("#height")[0],a=e.find("#constrain")[0];n&&r&&a&&t(n,r,a.checked())},me=function(e,t,n){var r=e.state.get("oldVal"),a=t.state.get("oldVal"),o=e.value(),i=t.value();n&&r&&a&&o&&i&&(o!==r?(i=Math.round(o/r*i),isNaN(i)||t.value(i)):(o=Math.round(i/a*o),isNaN(o)||e.value(o)))
 ,se(e,t)},ge=function(e){de(e,me)},fe=function(){var e=function(e){ge(e.control.rootControl)};return{type:"container",label:"Dimensions",layout:"flex",align:"center",spacing:5,items:[{name:"width",type:"textbox",maxLength:5,size:5,onchange:e,ariaLabel:"Width"},{type:"label",text:"x"},{name:"height",type:"textbox",maxLength:5,size:5,onchange:e,ariaLabel:"Height"},{name:"constrain",type:"checkbox",checked:!0,text:"Constrain proportions"}]}},pe=function(e){de(e,se)},he=ge,ve=function(e){e.meta=e.control.rootControl.toJSON()},be=function(s,e){var t=[{name:"src",type:"filepicker",filetype:"image",label:"Source",autofocus:!0,onchange:function(e){var t,n,r,a,o,i,l,u,c;n=s,i=(t=e).meta||{},l=t.control,u=l.rootControl,(c=u.find("#image-list")[0])&&c.value(n.convertURL(l.value(),"src
 ")),w.each(i,function(e,t){u.find("#"+t).value(e)}),i.width||i.height||(r=n.convertURL(l.value(),"src"),a=m(n),o=new RegExp("^(?:[a-z]+:)?//","i"),a&&!o.test(r)&&r.substring(0,a.length)!==a&&(r=a+r),l.value(r),N(n.documentBaseURI.toAbsolute(l.value()),function(e){e.width&&e.height&&d(n)&&(u.find("#width").value(e.width),u.find("#height").value(e.height),pe(u))}))},onbeforecall:ve},e];return r(s)&&t.push({name:"alt",type:"textbox",label:"Image description"}),a(s)&&t.push({name:"title",type:"textbox",label:"Image Title"}),d(s)&&t.push(fe()),n(s)&&t.push({name:"class",type:"listbox",label:"Class",values:_(n(s),function(e){e.value&&(e.textStyle=function(){return s.formatter.getCssText({inline:"img",classes:[e.value]})})})}),o(s)&&
 t.push({name:"caption",type:"checkbox",label:"Caption"}),t},ye=function(e,t){return{title:"General",type:"form",items:be(e,t)}},xe=be,we=function(){return y.getOrDie("URL")},Ce=function(e){return we().createObjectURL(e)},Se=function(e){we().revokeObjectURL(e)},Ne=tinymce.util.Tools.resolve("tinymce.ui.Factory"),_e=function(){};function Te(i){var t=function(e,r,a,t){var o,n;(o=new(y.getOrDie("XMLHttpRequest"))).open("POST",i.url),o.withCredentials=i.credentials,o.upload.onprogress=function(e){t(e.loaded/e.total*100)},o.onerror=function(){a("Image upload failed due to a XHR Transport error. Code: "+o.status)},o.onload=function(){var e,t,n;o.status<200||300<=o.status?a("HTTP Error: "+o.status):(e=JSON.parse(o.responseText))&&"string"==typeof e.location?r((t=i.basePath,n=e.location,t?t.replace(/\/$/,"")+"/"+n.replace(/^\//,""
 ):n)):a("Invalid JSON: "+o.responseText)},(n=new FormData).append("file",e.blob(),e.filename()),o.send(n)};return i=w.extend({credentials:!1,handler:t},i),{upload:function(e){return i.url||i.handler!==t?(r=e,a=i.handler,new x(function(e,t){try{a(r,e,t,_e)}catch(n){t(n.message)}})):x.reject("Upload url missing from the settings.");var r,a}}}var Ae=function(u){return function(e){var t=Ne.get("Throbber"),n=e.control.rootControl,r=new t(n.getEl()),a=e.control.value(),o=Ce(a),i=Te({url:g(u),basePath:p(u),credentials:h(u),handler:f(u)}),l=function(){r.hide(),Se(o)};return r.show(),O(a).then(function(e){var t=u.editorUpload.blobCache.create({blob:a,blobUri:o,name:a.name?a.name.replace(/\.[^\.]+$/,""):null,base64:e.split(",")[1]});return i.upload(t).then(function(e){var t=n.find("#src");return t.value(e),n.find("tabpanel")[0].activateTab(0),t.fire("change"),l(),e})})["catch"](function(e){u.wi
 ndowManager.alert(e),l()})}},Re=".jpg,.jpeg,.png,.gif",Ie=function(e){return{title:"Upload",type:"form",layout:"flex",direction:"column",align:"stretch",padding:"20 20 20 20",items:[{type:"container",layout:"flex",direction:"column",align:"center",spacing:10,items:[{text:"Browse for an image",type:"browsebutton",accept:Re,onchange:Ae(e)},{text:"OR",type:"label"}]},{text:"Drop an image here",type:"dropzone",accept:Re,height:100,onchange:Ae(e)}]}};function Oe(r){for(var a=[],e=1;e<arguments.length;e++)a[e-1]=arguments[e];return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=a.concat(e);return r.apply(null,n)}}var Le=function(t,e){var n=e.control.getRoot();he(n),t.undoManager.transact(function(){var e=U(oe(t),n.toJSON());le(t,e)}),t.editorUpload.uploadImagesAuto()};function Pe(o){funct
 ion e(e){var n,t,r=oe(o);if(e&&(t={type:"listbox",label:"Image list",name:"image-list",values:_(e,function(e){e.value=o.convertURL(e.value||e.url,"src")},[{text:"None",value:""}]),value:r.src&&o.convertURL(r.src,"src"),onselect:function(e){var t=n.find("#alt");(!t.value()||e.lastControl&&t.value()===e.lastControl.text())&&t.value(e.control.text()),n.find("#src").value(e.control.value()).fire("change")},onPostRender:function(){t=this}}),l(o)||c(o)||s(o)){var a=[ye(o,t)];l(o)&&a.push(ce(o)),(c(o)||s(o))&&a.push(Ie(o)),n=o.windowManager.open({title:"Insert/edit image",data:r,bodyType:"tabpanel",body:a,onSubmit:Oe(Le,o)})}else n=o.windowManager.open({title:"Insert/edit image",data:r,body:xe(o,t),onSubmit:Oe(Le,o)});pe(n)}return{open:function(){t(o,e)}}}var Ue=function(e){e.addCommand("mceImage",Pe(e).o
 pen)},Ee=function(o){return function(e){for(var t,n,r=e.length,a=function(e){e.attr("contenteditable",o?"true":null)};r--;)t=e[r],(n=t.attr("class"))&&/\bimage\b/.test(n)&&(t.attr("contenteditable",o?"false":null),w.each(t.getAll("figcaption"),a))}},ke=function(e){e.on("preInit",function(){e.parser.addNodeFilter("figure",Ee(!0)),e.serializer.addNodeFilter("figure",Ee(!1))})},Me=function(e){e.addButton("image",{icon:"image",tooltip:"Insert/edit image",onclick:Pe(e).open,stateSelector:"img:not([data-mce-object],[data-mce-placeholder]),figure.image"}),e.addMenuItem("image",{icon:"image",text:"Image",onclick:Pe(e).open,context:"insert",prependToContext:!0})};e.add("image",function(e){ke(e),Me(e),Ue(e)})}();
</del><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of file
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+!function(l){"use strict";var i,e=tinymce.util.Tools.resolve("tinymce.PluginManager"),d=function(e){return!1!==e.settings.image_dimensions},u=function(e){return!0===e.settings.image_advtab},m=function(e){return e.getParam("image_prepend_url","")},n=function(e){return e.getParam("image_class_list")},r=function(e){return!1!==e.settings.image_description},a=function(e){return!0===e.settings.image_title},o=function(e){return!0===e.settings.image_caption},c=function(e){return e.getParam("image_list",!1)},s=function(e){return e.getParam("images_upload_url",!1)},g=function(e){return e.getParam("images_upload_handler",!1)},f=function(e){return e.getParam("images_upload_url")},p=function(e){return e.getParam("images_upload_handler")},h=function(e){return e.getParam("images_upload_base_path&quo
 t;)},v=function(e){return e.getParam("images_upload_credentials")},b="undefined"!=typeof l.window?l.window:Function("return this;")(),y=function(e,t){return function(e,t){for(var n=t!==undefined&&null!==t?t:b,r=0;r<e.length&&n!==undefined&&null!==n;++r)n=n[e[r]];return n}(e.split("."),t)},x={getOrDie:function(e,t){var n=y(e,t);if(n===undefined||null===n)throw e+" not available on this browser";return n}},w=tinymce.util.Tools.resolve("tinymce.util.Promise"),C=tinymce.util.Tools.resolve("tinymce.util.Tools"),S=tinymce.util.Tools.resolve("tinymce.util.XHR"),N=function(e,t){return Math.max(parseInt(e,10),parseInt(t,10))},_=function(e,n){var r=l.document.createElement("img");function t(e,t){r.parentNode&&r.parentNode.removeChild(r),n({width:e,height:t})}r.onload=function(){t(N(r.width,r.clientWidth),N(r.height,r.clientHeight))},r.onerror=function(){t(0,0)};var a=r.
 style;a.visibility="hidden",a.position="fixed",a.bottom=a.left="0px",a.width=a.height="auto",l.document.body.appendChild(r),r.src=e},T=function(e,a,t){return function n(e,r){return r=r||[],C.each(e,function(e){var t={text:e.text||e.title};e.menu?t.menu=n(e.menu):(t.value=e.value,a(t)),r.push(t)}),r}(e,t||[])},A=function(e){return e&&(e=e.replace(/px$/,"")),e},R=function(e){return 0<e.length&&/^[0-9]+$/.test(e)&&(e+="px"),e},I=function(e){if(e.margin){var t=e.margin.split(" ");switch(t.length){case 1:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[0],e["margin-bottom"]=e["margin-bottom"]||t[0],e["margin-left"]=e["margin-left"]||t[0];break;case 2:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[1],e["margin-bot
 tom"]=e["margin-bottom"]||t[0],e["margin-left"]=e["margin-left"]||t[1];break;case 3:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[1],e["margin-bottom"]=e["margin-bottom"]||t[2],e["margin-left"]=e["margin-left"]||t[1];break;case 4:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[1],e["margin-bottom"]=e["margin-bottom"]||t[2],e["margin-left"]=e["margin-left"]||t[3]}delete e.margin}return e},t=function(e,t){var n=c(e);"string"==typeof n?S.send({url:n,success:function(e){t(JSON.parse(e))}}):"function"==typeof n?n(t):t(n)},O=function(e,t,n){function r(){n.onload=n.onerror=null,e.selection&&(e.selection.select(n),e.nodeChanged())}n.onload=function(){t.width||t.height||!d(e)||e.dom.setAttribs(n,{width:n.clientWid
 th,height:n.clientHeight}),r()},n.onerror=r},L=function(r){return new w(function(e,t){var n=new(x.getOrDie("FileReader"));n.onload=function(){e(n.result)},n.onerror=function(){t(n.error.message)},n.readAsDataURL(r)})},P=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),U=Object.prototype.hasOwnProperty,E=(i=function(e,t){return t},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 a=e[r];for(var o in a)U.call(a,o)&&(n[o]=i(n[o],a[o]))}return n}),k=P.DOM,M=function(e){return e.style.marginLeft&&e.style.marginRight&&e.style.marginLeft===e.style.marginRight?A(e.style.marginLeft):""},D=function(e){return e.style.marginTop&&e.style.marginBottom&&e.style.marginTop===e.style.marginBottom?A(e.style.marginTop):""},z=function(e){return e.style.borderWidth?A(e.style.bo
 rderWidth):""},B=function(e,t){return e.hasAttribute(t)?e.getAttribute(t):""},H=function(e,t){return e.style[t]?e.style[t]:""},j=function(e){return null!==e.parentNode&&"FIGURE"===e.parentNode.nodeName},F=function(e,t,n){e.setAttribute(t,n)},W=function(e){var t,n,r,a;j(e)?(a=(r=e).parentNode,k.insertAfter(r,a),k.remove(a)):(t=e,n=k.create("figure",{"class":"image"}),k.insertAfter(n,t),n.appendChild(t),n.appendChild(k.create("figcaption",{contentEditable:!0},"Caption")),n.contentEditable="false")},J=function(e,t){var n=e.getAttribute("style"),r=t(null!==n?n:"");0<r.length?(e.setAttribute("style",r),e.setAttribute("data-mce-style",r)):e.removeAttribute("style")},V=function(e,r){return function(e,t,n){e.style[t]?(e.style[t]=R(n),J(e,r)):F(e,t,n)}},G=function(e,t){return e.style[t]?A(e.style[t]):B(e,t)},$=function(e,t){var n=R(t
 );e.style.marginLeft=n,e.style.marginRight=n},X=function(e,t){var n=R(t);e.style.marginTop=n,e.style.marginBottom=n},q=function(e,t){var n=R(t);e.style.borderWidth=n},K=function(e,t){e.style.borderStyle=t},Q=function(e){return"FIGURE"===e.nodeName},Y=function(e,t){var n=l.document.createElement("img");return F(n,"style",t.style),(M(n)||""!==t.hspace)&&$(n,t.hspace),(D(n)||""!==t.vspace)&&X(n,t.vspace),(z(n)||""!==t.border)&&q(n,t.border),(H(n,"borderStyle")||""!==t.borderStyle)&&K(n,t.borderStyle),e(n.getAttribute("style"))},Z=function(e,t){return{src:B(t,"src"),alt:B(t,"alt"),title:B(t,"title"),width:G(t,"width"),height:G(t,"height"),"class":B(t,"class"),style:e(B(t,"style")),caption:j(t),hspace:M(t),vspace:D(t),border:z(t),borderStyle:H(t,"borderStyle")}},ee=function(e,t,n
 ,r,a){n[r]!==t[r]&&a(e,r,n[r])},te=function(r,a){return function(e,t,n){r(e,n),J(e,a)}},ne=function(e,t,n){var r=Z(e,n);ee(n,r,t,"caption",function(e,t,n){return W(e)}),ee(n,r,t,"src",F),ee(n,r,t,"alt",F),ee(n,r,t,"title",F),ee(n,r,t,"width",V(0,e)),ee(n,r,t,"height",V(0,e)),ee(n,r,t,"class",F),ee(n,r,t,"style",te(function(e,t){return F(e,"style",t)},e)),ee(n,r,t,"hspace",te($,e)),ee(n,r,t,"vspace",te(X,e)),ee(n,r,t,"border",te(q,e)),ee(n,r,t,"borderStyle",te(K,e))},re=function(e,t){var n=e.dom.styles.parse(t),r=I(n),a=e.dom.styles.parse(e.dom.styles.serialize(r));return e.dom.styles.serialize(a)},ae=function(e){var t=e.selection.getNode(),n=e.dom.getParent(t,"figure.image");return n?e.dom.select("img",n)[0]:t&&("IMG"!==t.nodeName||t.getAttribute("data-mce-object")||t.getAttribute("data-mce-plac
 eholder"))?null:t},oe=function(t,e){var n=t.dom,r=n.getParent(e.parentNode,function(e){return t.schema.getTextBlockElements()[e.nodeName]},t.getBody());return r?n.split(r,e):e},ie=function(t){var e=ae(t);return e?Z(function(e){return re(t,e)},e):{src:"",alt:"",title:"",width:"",height:"","class":"",style:"",caption:!1,hspace:"",vspace:"",border:"",borderStyle:""}},le=function(t,e){var n=function(e,t){var n=l.document.createElement("img");if(ne(e,E(t,{caption:!1}),n),F(n,"alt",t.alt),t.caption){var r=k.create("figure",{"class":"image"});return r.appendChild(n),r.appendChild(k.create("figcaption",{contentEditable:!0},"Caption")),r.contentEditable="false",r}return n}(function(e){return re(t,e)},e);t.dom.setAttrib(n,"data-mce-id","__mcenew"),t.focus(),t.selection.se
 tContent(n.outerHTML);var r=t.dom.select('*[data-mce-id="__mcenew"]')[0];if(t.dom.setAttrib(r,"data-mce-id",null),Q(r)){var a=oe(t,r);t.selection.select(a)}else t.selection.select(r)},ue=function(e,t){var n=ae(e);n?t.src?function(t,e){var n,r=ae(t);if(ne(function(e){return re(t,e)},e,r),n=r,t.dom.setAttrib(n,"src",n.getAttribute("src")),Q(r.parentNode)){var a=r.parentNode;oe(t,a),t.selection.select(r.parentNode)}else t.selection.select(r),O(t,e,r)}(e,t):function(e,t){if(t){var n=e.dom.is(t.parentNode,"figure.image")?t.parentNode:t;e.dom.remove(n),e.focus(),e.nodeChanged(),e.dom.isEmpty(e.getBody())&&(e.setContent(""),e.selection.setCursorLocation())}}(e,n):t.src&&le(e,t)},ce=function(n,r){r.find("#style").each(function(e){var t=Y(function(e){return re(n,e)},E({src:"",alt:"",title:"",width:"",height:"","class":"",style:"&quot
 ;,caption:!1,hspace:"",vspace:"",border:"",borderStyle:""},r.toJSON()));e.value(t)})},se=function(t){return{title:"Advanced",type:"form",pack:"start",items:[{label:"Style",name:"style",type:"textbox",onchange:(o=t,function(e){var t=o.dom,n=e.control.rootControl;if(u(o)){var r=n.toJSON(),a=t.parseStyle(r.style);n.find("#vspace").value(""),n.find("#hspace").value(""),((a=I(a))["margin-top"]&&a["margin-bottom"]||a["margin-right"]&&a["margin-left"])&&(a["margin-top"]===a["margin-bottom"]?n.find("#vspace").value(A(a["margin-top"])):n.find("#vspace").value(""),a["margin-right"]===a["margin-left"]?n.find("#hspace").value(A(a["margin-right"])):n.find("#hspace").value("")),
 a["border-width"]?n.find("#border").value(A(a["border-width"])):n.find("#border").value(""),a["border-style"]?n.find("#borderStyle").value(a["border-style"]):n.find("#borderStyle").value(""),n.find("#style").value(t.serializeStyle(t.parseStyle(t.serializeStyle(a))))}})},{type:"form",layout:"grid",packV:"start",columns:2,padding:0,defaults:{type:"textbox",maxWidth:50,onchange:function(e){ce(t,e.control.rootControl)}},items:[{label:"Vertical space",name:"vspace"},{label:"Border width",name:"border"},{label:"Horizontal space",name:"hspace"},{label:"Border style",type:"listbox",name:"borderStyle",width:90,maxWidth:90,onselect:function(e){ce(t,e.control.rootControl)},values:[{text:"Select...",value:""},{text:"Solid",value:
 "solid"},{text:"Dotted",value:"dotted"},{text:"Dashed",value:"dashed"},{text:"Double",value:"double"},{text:"Groove",value:"groove"},{text:"Ridge",value:"ridge"},{text:"Inset",value:"inset"},{text:"Outset",value:"outset"},{text:"None",value:"none"},{text:"Hidden",value:"hidden"}]}]}]};var o},de=function(e,t){e.state.set("oldVal",e.value()),t.state.set("oldVal",t.value())},me=function(e,t){var n=e.find("#width")[0],r=e.find("#height")[0],a=e.find("#constrain")[0];n&&r&&a&&t(n,r,a.checked())},ge=function(e,t,n){var r=e.state.get("oldVal"),a=t.state.get("oldVal"),o=e.value(),i=t.value();n&&r&&a&&o&&i&&(o!==r?(i=Math.round(o/r*i),isNaN(i)||t.value(i)):(o=Math.round(i/a
 *o),isNaN(o)||e.value(o))),de(e,t)},fe=function(e){me(e,ge)},pe=function(){var e=function(e){fe(e.control.rootControl)};return{type:"container",label:"Dimensions",layout:"flex",align:"center",spacing:5,items:[{name:"width",type:"textbox",maxLength:5,size:5,onchange:e,ariaLabel:"Width"},{type:"label",text:"x"},{name:"height",type:"textbox",maxLength:5,size:5,onchange:e,ariaLabel:"Height"},{name:"constrain",type:"checkbox",checked:!0,text:"Constrain proportions"}]}},he=function(e){me(e,de)},ve=fe,be=function(e){e.meta=e.control.rootControl.toJSON()},ye=function(s,e){var t=[{name:"src",type:"filepicker",filetype:"image",label:"Source",autofocus:!0,onchange:function(e){var t,n,r,a,o,i,l,u,c;n=s,i=(t=e).meta||{},l=t.control,u=l.rootControl,(c=u.find("#image-list")[0])&&c.value(n.conv
 ertURL(l.value(),"src")),C.each(i,function(e,t){u.find("#"+t).value(e)}),i.width||i.height||(r=n.convertURL(l.value(),"src"),a=m(n),o=new RegExp("^(?:[a-z]+:)?//","i"),a&&!o.test(r)&&r.substring(0,a.length)!==a&&(r=a+r),l.value(r),_(n.documentBaseURI.toAbsolute(l.value()),function(e){e.width&&e.height&&d(n)&&(u.find("#width").value(e.width),u.find("#height").value(e.height),he(u))}))},onbeforecall:be},e];return r(s)&&t.push({name:"alt",type:"textbox",label:"Image description"}),a(s)&&t.push({name:"title",type:"textbox",label:"Image Title"}),d(s)&&t.push(pe()),n(s)&&t.push({name:"class",type:"listbox",label:"Class",values:T(n(s),function(e){e.value&&(e.textStyle=function(){return s.formatter.getCssText({inline:"img",classes:[e.val
 ue]})})})}),o(s)&&t.push({name:"caption",type:"checkbox",label:"Caption"}),t},xe=function(e,t){return{title:"General",type:"form",items:ye(e,t)}},we=ye,Ce=function(){return x.getOrDie("URL")},Se=function(e){return Ce().createObjectURL(e)},Ne=function(e){Ce().revokeObjectURL(e)},_e=tinymce.util.Tools.resolve("tinymce.ui.Factory"),Te=function(){};function Ae(i){var t=function(e,r,a,t){var o,n;(o=new(x.getOrDie("XMLHttpRequest"))).open("POST",i.url),o.withCredentials=i.credentials,o.upload.onprogress=function(e){t(e.loaded/e.total*100)},o.onerror=function(){a("Image upload failed due to a XHR Transport error. Code: "+o.status)},o.onload=function(){var e,t,n;o.status<200||300<=o.status?a("HTTP Error: "+o.status):(e=JSON.parse(o.responseText))&&"string"==typeof e.location?r((t=i.basePath,n=e.location,t?t.replace(/\/$/,"")+"/"+n.
 replace(/^\//,""):n)):a("Invalid JSON: "+o.responseText)},(n=new l.FormData).append("file",e.blob(),e.filename()),o.send(n)};return i=C.extend({credentials:!1,handler:t},i),{upload:function(e){return i.url||i.handler!==t?(r=e,a=i.handler,new w(function(e,t){try{a(r,e,t,Te)}catch(n){t(n.message)}})):w.reject("Upload url missing from the settings.");var r,a}}}var Re=function(u){return function(e){var t=_e.get("Throbber"),n=e.control.rootControl,r=new t(n.getEl()),a=e.control.value(),o=Se(a),i=Ae({url:f(u),basePath:h(u),credentials:v(u),handler:p(u)}),l=function(){r.hide(),Ne(o)};return r.show(),L(a).then(function(e){var t=u.editorUpload.blobCache.create({blob:a,blobUri:o,name:a.name?a.name.replace(/\.[^\.]+$/,""):null,base64:e.split(",")[1]});return i.upload(t).then(function(e){var t=n.find("#src");return t.value(e),n.find("tabpanel")[0].activateTab(0),t.fire("change"),l(),e})})["c
 atch"](function(e){u.windowManager.alert(e),l()})}},Ie=".jpg,.jpeg,.png,.gif",Oe=function(e){return{title:"Upload",type:"form",layout:"flex",direction:"column",align:"stretch",padding:"20 20 20 20",items:[{type:"container",layout:"flex",direction:"column",align:"center",spacing:10,items:[{text:"Browse for an image",type:"browsebutton",accept:Ie,onchange:Re(e)},{text:"OR",type:"label"}]},{text:"Drop an image here",type:"dropzone",accept:Ie,height:100,onchange:Re(e)}]}};function Le(r){for(var a=[],e=1;e<arguments.length;e++)a[e-1]=arguments[e];return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=a.concat(e);return r.apply(null,n)}}var Pe=function(t,e){var n=e.control.getRoot();ve(n),t.undoManager.transact(function(){var e=E(ie(t),n.toJSON());ue(t,e)}),t.editorUpload.uploadImages
 Auto()};function Ue(o){function e(e){var n,t,r=ie(o);if(e&&(t={type:"listbox",label:"Image list",name:"image-list",values:T(e,function(e){e.value=o.convertURL(e.value||e.url,"src")},[{text:"None",value:""}]),value:r.src&&o.convertURL(r.src,"src"),onselect:function(e){var t=n.find("#alt");(!t.value()||e.lastControl&&t.value()===e.lastControl.text())&&t.value(e.control.text()),n.find("#src").value(e.control.value()).fire("change")},onPostRender:function(){t=this}}),u(o)||s(o)||g(o)){var a=[xe(o,t)];u(o)&&a.push(se(o)),(s(o)||g(o))&&a.push(Oe(o)),n=o.windowManager.open({title:"Insert/edit image",data:r,bodyType:"tabpanel",body:a,onSubmit:Le(Pe,o)})}else n=o.windowManager.open({title:"Insert/edit image",data:r,body:we(o,t),onSubmit:Le(Pe,o)});he(n)}return{open:function(){t(o,e)}}}var Ee=function(e){e.addCommand(
 "mceImage",Ue(e).open)},ke=function(o){return function(e){for(var t,n,r=e.length,a=function(e){e.attr("contenteditable",o?"true":null)};r--;)t=e[r],(n=t.attr("class"))&&/\bimage\b/.test(n)&&(t.attr("contenteditable",o?"false":null),C.each(t.getAll("figcaption"),a))}},Me=function(e){e.on("preInit",function(){e.parser.addNodeFilter("figure",ke(!0)),e.serializer.addNodeFilter("figure",ke(!1))})},De=function(e){e.addButton("image",{icon:"image",tooltip:"Insert/edit image",onclick:Ue(e).open,stateSelector:"img:not([data-mce-object],[data-mce-placeholder]),figure.image"}),e.addMenuItem("image",{icon:"image",text:"Image",onclick:Ue(e).open,context:"insert",prependToContext:!0})};e.add("image",function(e){Me(e),De(e),Ee(e)})}(window);
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of file
</span></span></pre></div>
<a id="trunksrcjs_enqueuesvendortinymcepluginslinkpluginjs"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/js/_enqueues/vendor/tinymce/plugins/link/plugin.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/js/_enqueues/vendor/tinymce/plugins/link/plugin.js      2019-05-15 19:53:42 UTC (rev 45315)
+++ trunk/src/js/_enqueues/vendor/tinymce/plugins/link/plugin.js        2019-05-15 23:44:37 UTC (rev 45316)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,5 @@
</span><span class="cx" style="display: block; padding: 0 10px"> (function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-var link = (function () {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+var link = (function (domGlobals) {
</ins><span class="cx" style="display: block; padding: 0 10px">     'use strict';
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -70,21 +70,21 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var global$3 = tinymce.util.Tools.resolve('tinymce.Env');
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var appendClickRemove = function (link, evt) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      document.body.appendChild(link);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      domGlobals.document.body.appendChild(link);
</ins><span class="cx" style="display: block; padding: 0 10px">       link.dispatchEvent(evt);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      document.body.removeChild(link);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      domGlobals.document.body.removeChild(link);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var open$$1 = function (url) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var open = function (url) {
</ins><span class="cx" style="display: block; padding: 0 10px">       if (!global$3.ie || global$3.ie > 10) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var link = document.createElement('a');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var link = domGlobals.document.createElement('a');
</ins><span class="cx" style="display: block; padding: 0 10px">         link.target = '_blank';
</span><span class="cx" style="display: block; padding: 0 10px">         link.href = url;
</span><span class="cx" style="display: block; padding: 0 10px">         link.rel = 'noreferrer noopener';
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var evt = document.createEvent('MouseEvents');
-        evt.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var evt = domGlobals.document.createEvent('MouseEvents');
+        evt.initMouseEvent('click', true, true, domGlobals.window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
</ins><span class="cx" style="display: block; padding: 0 10px">         appendClickRemove(link, evt);
</span><span class="cx" style="display: block; padding: 0 10px">       } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var win = window.open('', '_blank');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var win = domGlobals.window.open('', '_blank');
</ins><span class="cx" style="display: block; padding: 0 10px">         if (win) {
</span><span class="cx" style="display: block; padding: 0 10px">           win.opener = null;
</span><span class="cx" style="display: block; padding: 0 10px">           var doc = win.document;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -94,7 +94,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var OpenUrl = { open: open$$1 };
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var OpenUrl = { open: open };
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var global$4 = tinymce.util.Tools.resolve('tinymce.util.Tools');
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -709,5 +709,5 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     return Plugin;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-}());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+}(window));
</ins><span class="cx" style="display: block; padding: 0 10px"> })();
</span></span></pre></div>
<a id="trunksrcjs_enqueuesvendortinymcepluginslinkpluginminjs"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/js/_enqueues/vendor/tinymce/plugins/link/plugin.min.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/js/_enqueues/vendor/tinymce/plugins/link/plugin.min.js  2019-05-15 19:53:42 UTC (rev 45315)
+++ trunk/src/js/_enqueues/vendor/tinymce/plugins/link/plugin.min.js    2019-05-15 23:44:37 UTC (rev 45316)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1 +1 @@
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-!function(){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),n=tinymce.util.Tools.resolve("tinymce.util.VK"),e=function(t){return t.target_list},o=function(t){return t.rel_list},i=function(t){return t.link_class_list},p=function(t){return"boolean"==typeof t.link_assume_external_targets&&t.link_assume_external_targets},a=function(t){return"boolean"==typeof t.link_context_toolbar&&t.link_context_toolbar},r=function(t){return t.link_list},k=function(t){return"string"==typeof t.default_link_target},y=function(t){return t.default_link_target},b=e,_=function(t,e){t.settings.target_list=e},w=function(t){return!1!==e(t)},T=o,C=function(t){return o(t)!==undefined},M=i,O=function(t){return i(t)!==undefined},R=function(t){return!1!==t.link_title},N=function(t){return"boolean"==typeof t.allow_
 unsafe_link_target&&t.allow_unsafe_link_target},l=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),u=tinymce.util.Tools.resolve("tinymce.Env"),c=function(t){if(!u.ie||10<u.ie){var e=document.createElement("a");e.target="_blank",e.href=t,e.rel="noreferrer noopener";var n=document.createEvent("MouseEvents");n.initMouseEvent("click",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),r=e,a=n,document.body.appendChild(r),r.dispatchEvent(a),document.body.removeChild(r)}else{var o=window.open("","_blank");if(o){o.opener=null;var i=o.document;i.open(),i.write('<meta http-equiv="refresh" content="0; url='+l.DOM.encode(t)+'">'),i.close()}}var r,a},A=tinymce.util.Tools.resolve("tinymce.util.Tools"),s=function(t,e){var n,o,i=["noopener"],r=t?t.split(/\s+/):[],a=function(t){return t.filter(function(t){return-1===A.inArray(i,t)})};return(r=e?(n=a(n=r)).lengt
 h?n.concat(i):i:a(r)).length?(o=r,A.trim(o.sort().join(" "))):null},f=function(t,e){return e=e||t.selection.getNode(),m(e)?t.dom.select("a[href]",e)[0]:t.dom.getParent(e,"a[href]")},d=function(t){return t&&"A"===t.nodeName&&t.href},m=function(t){return t&&"FIGURE"===t.nodeName&&/\bimage\b/i.test(t.className)},v=function(t,e){var n,o;(o=t.dom.select("img",e)[0])&&(n=t.dom.getParents(o,"a[href]",e)[0])&&(n.parentNode.insertBefore(o,n),t.dom.remove(n))},g=function(t,e,n){var o,i;(i=t.dom.select("img",e)[0])&&(o=t.dom.create("a",n),i.parentNode.insertBefore(o,i),o.appendChild(i))},L=function(i,r){return function(o){i.undoManager.transact(function(){var t=i.selection.getNode(),e=f(i,t),n={href:o.href,target:o.target?o.target:null,rel:o.rel?o.rel:null,"class":o["class"]?o["class"]:null,title:o.title?o.title:null};C(
 i.settings)||!1!==N(i.settings)||(n.rel=s(n.rel,"_blank"===n.target)),o.href===r.href&&(r.attach(),r={}),e?(i.focus(),o.hasOwnProperty("text")&&("innerText"in e?e.innerText=o.text:e.textContent=o.text),i.dom.setAttribs(e,n),i.selection.select(e),i.undoManager.add()):m(t)?g(i,t,n):o.hasOwnProperty("text")?i.insertContent(i.dom.createHTML("a",n,i.dom.encode(o.text))):i.execCommand("mceInsertLink",!1,n)})}},P=function(e){return function(){e.undoManager.transact(function(){var t=e.selection.getNode();m(t)?v(e,t):e.execCommand("unlink")})}},h=d,x=function(t){return 0<A.grep(t,d).length},E=function(t){return!(/</.test(t)&&(!/^<a [^>]+>[^<]+<\/a>$/.test(t)||-1===t.indexOf("href=")))},S=f,I=function(t,e){var n=e?e.innerText||e.textContent:t.getContent({format:"text"});return n.replace(/\uFEFF/g,"")},K=s,U=tinymce.util.Tools.resolve("tinymce
 .util.Delay"),D=tinymce.util.Tools.resolve("tinymce.util.XHR"),B={},F=function(t,o,e){var i=function(t,n){return n=n||[],A.each(t,function(t){var e={text:t.text||t.title};t.menu?e.menu=i(t.menu):(e.value=t.value,o&&o(e)),n.push(e)}),n};return i(t,e||[])},q=function(e,t,n){var o=e.selection.getRng();U.setEditorTimeout(e,function(){e.windowManager.confirm(t,function(t){e.selection.setRng(o),n(t)})})},V=function(a,t){var e,l,o,u,n,i,r,c,s,f,d,m={},v=a.selection,g=a.dom,h=function(t){var e=o.find("#text");(!e.value()||t.lastControl&&e.value()===t.lastControl.text())&&e.value(t.control.text()),o.find("#href").value(t.control.value())},x=function(){l||!u||m.text||this.parent().parent().find("#text")[0].value(this.value())};u=E(v.getContent()),e=S(a),m.text=l=I(a.selection,e),m.href=e?g.getAttrib(e,"href"):"",e?m.target=g.getAttrib(e,"target"):k(a.settings)&&(m.target=y(a.settings)),(
 d=g.getAttrib(e,"rel"))&&(m.rel=d),(d=g.getAttrib(e,"class"))&&(m["class"]=d),(d=g.getAttrib(e,"title"))&&(m.title=d),u&&(n={name:"text",type:"textbox",size:40,label:"Text to display",onchange:function(){m.text=this.value()}}),t&&(i={type:"listbox",label:"Link list",values:F(t,function(t){t.value=a.convertURL(t.value||t.url,"href")},[{text:"None",value:""}]),onselect:h,value:a.convertURL(m.href,"href"),onPostRender:function(){i=this}}),w(a.settings)&&(b(a.settings)===undefined&&_(a,[{text:"None",value:""},{text:"New window",value:"_blank"}]),c={name:"target",type:"listbox",label:"Target",values:F(b(a.settings))}),C(a.settings)&&(r={name:"rel",type:"listbox",label:"Rel",values:F(T(a.settings),fu
 nction(t){!1===N(a.settings)&&(t.value=K(t.value,"_blank"===m.target))})}),O(a.settings)&&(s={name:"class",type:"listbox",label:"Class",values:F(M(a.settings),function(t){t.value&&(t.textStyle=function(){return a.formatter.getCssText({inline:"a",classes:[t.value]})})})}),R(a.settings)&&(f={name:"title",type:"textbox",label:"Title",value:m.title}),o=a.windowManager.open({title:"Insert link",data:m,body:[{name:"href",type:"filepicker",filetype:"file",size:40,autofocus:!0,label:"Url",onchange:function(t){var e=t.meta||{};i&&i.value(a.convertURL(this.value(),"href")),A.each(t.meta,function(t,e){var n=o.find("#"+e);"text"===e?0===l.length&&(n.value(t),m.text=t):n.value(t)}),e.attach&&(B={href:this.value(),attach:e.attach}),e.text||x.call(this)},onkeyup:x,onpaste:x,onbeforecal
 l:function(t){t.meta=o.toJSON()}},n,f,function(n){var o=[];if(A.each(a.dom.select("a:not([href])"),function(t){var e=t.name||t.id;e&&o.push({text:e,value:"#"+e,selected:-1!==n.indexOf("#"+e)})}),o.length)return o.unshift({text:"None",value:""}),{name:"anchor",type:"listbox",label:"Anchors",values:o,onselect:h}}(m.href),i,r,c,s],onSubmit:function(t){var e=p(a.settings),n=L(a,B),o=P(a),i=A.extend({},m,t.data),r=i.href;r?(u&&i.text!==l||delete i.text,0<r.indexOf("@")&&-1===r.indexOf("//")&&-1===r.indexOf("mailto:")?q(a,"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",function(t){t&&(i.href="mailto:"+r),n(i)}):!0===e&&!/^\w+:/i.test(r)||!1===e&&/^\s*www[\.|\d\.]/i.test(r)?q(a,"The URL you entered seems to be an external link. Do you want to add t
 he required http:// prefix?",function(t){t&&(i.href="http://"+r),n(i)}):n(i)):o()}})},z=function(t){var e,n,o;n=V,"string"==typeof(o=r((e=t).settings))?D.send({url:o,success:function(t){n(e,JSON.parse(t))}}):"function"==typeof o?o(function(t){n(e,t)}):n(e,o)},H=function(t,e){return t.dom.getParent(e,"a[href]")},J=function(t){return H(t,t.selection.getStart())},$=function(t,e){if(e){var n=(i=e).getAttribute("data-mce-href")||i.getAttribute("href");if(/^#/.test(n)){var o=t.$(n);o.length&&t.selection.scrollIntoView(o[0],!0)}else c(e.href)}var i},j=function(t){return function(){z(t)}},G=function(t){return function(){$(t,J(t))}},X=function(r){return function(t){var e,n,o,i;return!!(a(r.settings)&&(!(i=r.plugins.contextmenu)||!i.isContextMenuVisible())&&h(t)&&3===(o=(n=(e=r.selection).getRng()).startContainer).nodeType&&e.isCollapsed()&&0<n.startOffset&&n.sta
 rtOffset<o.data.length)}},Q=function(o){o.on("click",function(t){var e=H(o,t.target);e&&n.metaKeyPressed(t)&&(t.preventDefault(),$(o,e))}),o.on("keydown",function(t){var e,n=J(o);n&&13===t.keyCode&&!0===(e=t).altKey&&!1===e.shiftKey&&!1===e.ctrlKey&&!1===e.metaKey&&(t.preventDefault(),$(o,n))})},W=function(n){return function(){var e=this;n.on("nodechange",function(t){e.active(!n.readonly&&!!S(n,t.element))})}},Y=function(n){return function(){var e=this,t=function(t){x(t.parents)?e.show():e.hide()};x(n.dom.getParents(n.selection.getStart()))||e.hide(),n.on("nodechange",t),e.on("remove",function(){n.off("nodechange",t)})}},Z=function(t){t.addCommand("mceLink",j(t))},tt=function(t){t.addShortcut("Meta+K","",j(t))},et=function(t){t.addButton("link",{active:!1,icon:"link",tooltip:"Insert/edit link&quo
 t;,onclick:j(t),onpostrender:W(t)}),t.addButton("unlink",{active:!1,icon:"unlink",tooltip:"Remove link",onclick:P(t),onpostrender:W(t)}),t.addContextToolbar&&t.addButton("openlink",{icon:"newtab",tooltip:"Open link",onclick:G(t)})},nt=function(t){t.addMenuItem("openlink",{text:"Open link",icon:"newtab",onclick:G(t),onPostRender:Y(t),prependToContext:!0}),t.addMenuItem("link",{icon:"link",text:"Link",shortcut:"Meta+K",onclick:j(t),stateSelector:"a[href]",context:"insert",prependToContext:!0}),t.addMenuItem("unlink",{icon:"unlink",text:"Remove link",onclick:P(t),stateSelector:"a[href]"})},ot=function(t){t.addContextToolbar&&t.addContextToolbar(X(t),"openlink | link unlink")};t.add("link",function(t){et(t),nt(t),ot(t),Q(t),Z(t),tt(t)})}();
</del><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of file
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+!function(l){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),n=tinymce.util.Tools.resolve("tinymce.util.VK"),e=function(t){return t.target_list},o=function(t){return t.rel_list},i=function(t){return t.link_class_list},p=function(t){return"boolean"==typeof t.link_assume_external_targets&&t.link_assume_external_targets},a=function(t){return"boolean"==typeof t.link_context_toolbar&&t.link_context_toolbar},r=function(t){return t.link_list},k=function(t){return"string"==typeof t.default_link_target},y=function(t){return t.default_link_target},b=e,_=function(t,e){t.settings.target_list=e},w=function(t){return!1!==e(t)},T=o,C=function(t){return o(t)!==undefined},M=i,O=function(t){return i(t)!==undefined},R=function(t){return!1!==t.link_title},N=function(t){return"boolean"==typeof t.allow
 _unsafe_link_target&&t.allow_unsafe_link_target},u=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),c=tinymce.util.Tools.resolve("tinymce.Env"),s=function(t){if(!c.ie||10<c.ie){var e=l.document.createElement("a");e.target="_blank",e.href=t,e.rel="noreferrer noopener";var n=l.document.createEvent("MouseEvents");n.initMouseEvent("click",!0,!0,l.window,0,0,0,0,0,!1,!1,!1,!1,0,null),r=e,a=n,l.document.body.appendChild(r),r.dispatchEvent(a),l.document.body.removeChild(r)}else{var o=l.window.open("","_blank");if(o){o.opener=null;var i=o.document;i.open(),i.write('<meta http-equiv="refresh" content="0; url='+u.DOM.encode(t)+'">'),i.close()}}var r,a},A=tinymce.util.Tools.resolve("tinymce.util.Tools"),f=function(t,e){var n,o,i=["noopener"],r=t?t.split(/\s+/):[],a=function(t){return t.filter(function(t){return-1===A.inArray(i,t)})};return(r=e?(n=
 a(n=r)).length?n.concat(i):i:a(r)).length?(o=r,A.trim(o.sort().join(" "))):null},d=function(t,e){return e=e||t.selection.getNode(),v(e)?t.dom.select("a[href]",e)[0]:t.dom.getParent(e,"a[href]")},m=function(t){return t&&"A"===t.nodeName&&t.href},v=function(t){return t&&"FIGURE"===t.nodeName&&/\bimage\b/i.test(t.className)},g=function(t,e){var n,o;(o=t.dom.select("img",e)[0])&&(n=t.dom.getParents(o,"a[href]",e)[0])&&(n.parentNode.insertBefore(o,n),t.dom.remove(n))},h=function(t,e,n){var o,i;(i=t.dom.select("img",e)[0])&&(o=t.dom.create("a",n),i.parentNode.insertBefore(o,i),o.appendChild(i))},L=function(i,r){return function(o){i.undoManager.transact(function(){var t=i.selection.getNode(),e=d(i,t),n={href:o.href,target:o.target?o.target:null,rel:o.rel?o.rel:null,"class":o["class"]?o["class"]:null,title:o.title?o.t
 itle:null};C(i.settings)||!1!==N(i.settings)||(n.rel=f(n.rel,"_blank"===n.target)),o.href===r.href&&(r.attach(),r={}),e?(i.focus(),o.hasOwnProperty("text")&&("innerText"in e?e.innerText=o.text:e.textContent=o.text),i.dom.setAttribs(e,n),i.selection.select(e),i.undoManager.add()):v(t)?h(i,t,n):o.hasOwnProperty("text")?i.insertContent(i.dom.createHTML("a",n,i.dom.encode(o.text))):i.execCommand("mceInsertLink",!1,n)})}},P=function(e){return function(){e.undoManager.transact(function(){var t=e.selection.getNode();v(t)?g(e,t):e.execCommand("unlink")})}},x=m,E=function(t){return 0<A.grep(t,m).length},S=function(t){return!(/</.test(t)&&(!/^<a [^>]+>[^<]+<\/a>$/.test(t)||-1===t.indexOf("href=")))},I=d,K=function(t,e){var n=e?e.innerText||e.textContent:t.getContent({format:"text"});return n.replace(/\uFEFF/g,"")},U=f,D=tinymce.util.Tools.resolve(
 "tinymce.util.Delay"),B=tinymce.util.Tools.resolve("tinymce.util.XHR"),F={},q=function(t,o,e){var i=function(t,n){return n=n||[],A.each(t,function(t){var e={text:t.text||t.title};t.menu?e.menu=i(t.menu):(e.value=t.value,o&&o(e)),n.push(e)}),n};return i(t,e||[])},V=function(e,t,n){var o=e.selection.getRng();D.setEditorTimeout(e,function(){e.windowManager.confirm(t,function(t){e.selection.setRng(o),n(t)})})},z=function(a,t){var e,l,o,u,n,i,r,c,s,f,d,m={},v=a.selection,g=a.dom,h=function(t){var e=o.find("#text");(!e.value()||t.lastControl&&e.value()===t.lastControl.text())&&e.value(t.control.text()),o.find("#href").value(t.control.value())},x=function(){l||!u||m.text||this.parent().parent().find("#text")[0].value(this.value())};u=S(v.getContent()),e=I(a),m.text=l=K(a.selection,e),m.href=e?g.getAttrib(e,"href"):"",e?m.target=g.getAttrib(e,"target"):k(a.settings)&&(m.target=y(a
 .settings)),(d=g.getAttrib(e,"rel"))&&(m.rel=d),(d=g.getAttrib(e,"class"))&&(m["class"]=d),(d=g.getAttrib(e,"title"))&&(m.title=d),u&&(n={name:"text",type:"textbox",size:40,label:"Text to display",onchange:function(){m.text=this.value()}}),t&&(i={type:"listbox",label:"Link list",values:q(t,function(t){t.value=a.convertURL(t.value||t.url,"href")},[{text:"None",value:""}]),onselect:h,value:a.convertURL(m.href,"href"),onPostRender:function(){i=this}}),w(a.settings)&&(b(a.settings)===undefined&&_(a,[{text:"None",value:""},{text:"New window",value:"_blank"}]),c={name:"target",type:"listbox",label:"Target",values:q(b(a.settings))}),C(a.settings)&&(r={name:"rel",type:"listbox",label:"Rel",values:q(T(a
 .settings),function(t){!1===N(a.settings)&&(t.value=U(t.value,"_blank"===m.target))})}),O(a.settings)&&(s={name:"class",type:"listbox",label:"Class",values:q(M(a.settings),function(t){t.value&&(t.textStyle=function(){return a.formatter.getCssText({inline:"a",classes:[t.value]})})})}),R(a.settings)&&(f={name:"title",type:"textbox",label:"Title",value:m.title}),o=a.windowManager.open({title:"Insert link",data:m,body:[{name:"href",type:"filepicker",filetype:"file",size:40,autofocus:!0,label:"Url",onchange:function(t){var e=t.meta||{};i&&i.value(a.convertURL(this.value(),"href")),A.each(t.meta,function(t,e){var n=o.find("#"+e);"text"===e?0===l.length&&(n.value(t),m.text=t):n.value(t)}),e.attach&&(F={href:this.value(),attach:e.attach}),e.text||x.call(this)},onkeyup:x,onpaste:
 x,onbeforecall:function(t){t.meta=o.toJSON()}},n,f,function(n){var o=[];if(A.each(a.dom.select("a:not([href])"),function(t){var e=t.name||t.id;e&&o.push({text:e,value:"#"+e,selected:-1!==n.indexOf("#"+e)})}),o.length)return o.unshift({text:"None",value:""}),{name:"anchor",type:"listbox",label:"Anchors",values:o,onselect:h}}(m.href),i,r,c,s],onSubmit:function(t){var e=p(a.settings),n=L(a,F),o=P(a),i=A.extend({},m,t.data),r=i.href;r?(u&&i.text!==l||delete i.text,0<r.indexOf("@")&&-1===r.indexOf("//")&&-1===r.indexOf("mailto:")?V(a,"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",function(t){t&&(i.href="mailto:"+r),n(i)}):!0===e&&!/^\w+:/i.test(r)||!1===e&&/^\s*www[\.|\d\.]/i.test(r)?V(a,"The URL you entered seems to be an external link. Do you 
 want to add the required http:// prefix?",function(t){t&&(i.href="http://"+r),n(i)}):n(i)):o()}})},H=function(t){var e,n,o;n=z,"string"==typeof(o=r((e=t).settings))?B.send({url:o,success:function(t){n(e,JSON.parse(t))}}):"function"==typeof o?o(function(t){n(e,t)}):n(e,o)},J=function(t,e){return t.dom.getParent(e,"a[href]")},$=function(t){return J(t,t.selection.getStart())},j=function(t,e){if(e){var n=(i=e).getAttribute("data-mce-href")||i.getAttribute("href");if(/^#/.test(n)){var o=t.$(n);o.length&&t.selection.scrollIntoView(o[0],!0)}else s(e.href)}var i},G=function(t){return function(){H(t)}},X=function(t){return function(){j(t,$(t))}},Q=function(r){return function(t){var e,n,o,i;return!!(a(r.settings)&&(!(i=r.plugins.contextmenu)||!i.isContextMenuVisible())&&x(t)&&3===(o=(n=(e=r.selection).getRng()).startContainer).nodeType&&e.isCollapsed()&&0<n.startOffset&a
 mp;&n.startOffset<o.data.length)}},W=function(o){o.on("click",function(t){var e=J(o,t.target);e&&n.metaKeyPressed(t)&&(t.preventDefault(),j(o,e))}),o.on("keydown",function(t){var e,n=$(o);n&&13===t.keyCode&&!0===(e=t).altKey&&!1===e.shiftKey&&!1===e.ctrlKey&&!1===e.metaKey&&(t.preventDefault(),j(o,n))})},Y=function(n){return function(){var e=this;n.on("nodechange",function(t){e.active(!n.readonly&&!!I(n,t.element))})}},Z=function(n){return function(){var e=this,t=function(t){E(t.parents)?e.show():e.hide()};E(n.dom.getParents(n.selection.getStart()))||e.hide(),n.on("nodechange",t),e.on("remove",function(){n.off("nodechange",t)})}},tt=function(t){t.addCommand("mceLink",G(t))},et=function(t){t.addShortcut("Meta+K","",G(t))},nt=function(t){t.addButton("link",{active:!1,icon:"link",tooltip:"Insert
 /edit link",onclick:G(t),onpostrender:Y(t)}),t.addButton("unlink",{active:!1,icon:"unlink",tooltip:"Remove link",onclick:P(t),onpostrender:Y(t)}),t.addContextToolbar&&t.addButton("openlink",{icon:"newtab",tooltip:"Open link",onclick:X(t)})},ot=function(t){t.addMenuItem("openlink",{text:"Open link",icon:"newtab",onclick:X(t),onPostRender:Z(t),prependToContext:!0}),t.addMenuItem("link",{icon:"link",text:"Link",shortcut:"Meta+K",onclick:G(t),stateSelector:"a[href]",context:"insert",prependToContext:!0}),t.addMenuItem("unlink",{icon:"unlink",text:"Remove link",onclick:P(t),stateSelector:"a[href]"})},it=function(t){t.addContextToolbar&&t.addContextToolbar(Q(t),"openlink | link unlink")};t.add("link",function(t){nt(t),ot(t),it(t),W(t),tt(t),et(t)})}(window);
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of file
</span></span></pre></div>
<a id="trunksrcjs_enqueuesvendortinymcepluginslistspluginjs"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/js/_enqueues/vendor/tinymce/plugins/lists/plugin.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/js/_enqueues/vendor/tinymce/plugins/lists/plugin.js     2019-05-15 19:53:42 UTC (rev 45315)
+++ trunk/src/js/_enqueues/vendor/tinymce/plugins/lists/plugin.js       2019-05-15 23:44:37 UTC (rev 45316)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,5 @@
</span><span class="cx" style="display: block; padding: 0 10px"> (function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-var lists = (function () {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+var lists = (function (domGlobals) {
</ins><span class="cx" style="display: block; padding: 0 10px">     'use strict';
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -209,20 +209,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return value;
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    function curry(fn) {
-      var initialArgs = [];
-      for (var _i = 1; _i < arguments.length; _i++) {
-        initialArgs[_i - 1] = arguments[_i];
-      }
-      return function () {
-        var restArgs = [];
-        for (var _i = 0; _i < arguments.length; _i++) {
-          restArgs[_i] = arguments[_i];
-        }
-        var all = initialArgs.concat(restArgs);
-        return fn.apply(null, all);
-      };
-    }
</del><span class="cx" style="display: block; padding: 0 10px">     var not = function (f) {
</span><span class="cx" style="display: block; padding: 0 10px">       return function () {
</span><span class="cx" style="display: block; padding: 0 10px">         var args = [];
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -244,13 +230,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var eq = function (o) {
</span><span class="cx" style="display: block; padding: 0 10px">         return o.isNone();
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var call$$1 = function (thunk) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var call = function (thunk) {
</ins><span class="cx" style="display: block; padding: 0 10px">         return thunk();
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var id = function (n) {
</span><span class="cx" style="display: block; padding: 0 10px">         return n;
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var noop$$1 = function () {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var noop = function () {
</ins><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var nul = function () {
</span><span class="cx" style="display: block; padding: 0 10px">         return null;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -266,7 +252,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         isSome: never$1,
</span><span class="cx" style="display: block; padding: 0 10px">         isNone: always$1,
</span><span class="cx" style="display: block; padding: 0 10px">         getOr: id,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        getOrThunk: call$$1,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        getOrThunk: call,
</ins><span class="cx" style="display: block; padding: 0 10px">         getOrDie: function (msg) {
</span><span class="cx" style="display: block; padding: 0 10px">           throw new Error(msg || 'error: getOrDie called on none.');
</span><span class="cx" style="display: block; padding: 0 10px">         },
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -273,10 +259,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">         getOrNull: nul,
</span><span class="cx" style="display: block; padding: 0 10px">         getOrUndefined: undef,
</span><span class="cx" style="display: block; padding: 0 10px">         or: id,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        orThunk: call$$1,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        orThunk: call,
</ins><span class="cx" style="display: block; padding: 0 10px">         map: none,
</span><span class="cx" style="display: block; padding: 0 10px">         ap: none,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        each: noop$$1,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        each: noop,
</ins><span class="cx" style="display: block; padding: 0 10px">         bind: none,
</span><span class="cx" style="display: block; padding: 0 10px">         flatten: none,
</span><span class="cx" style="display: block; padding: 0 10px">         exists: never$1,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -477,7 +463,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return slice.call(x);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var Global = typeof window !== 'undefined' ? window : Function('return this;')();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var Global = typeof domGlobals.window !== 'undefined' ? domGlobals.window : Function('return this;')();
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var path = function (parts, scope) {
</span><span class="cx" style="display: block; padding: 0 10px">       var o = scope !== undefined && scope !== null ? scope : Global;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -589,6 +575,97 @@
</span><span class="cx" style="display: block; padding: 0 10px">       getSelectedListRoots: getSelectedListRoots
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var fromHtml = function (html, scope) {
+      var doc = scope || domGlobals.document;
+      var div = doc.createElement('div');
+      div.innerHTML = html;
+      if (!div.hasChildNodes() || div.childNodes.length > 1) {
+        domGlobals.console.error('HTML does not have a single root node', html);
+        throw new Error('HTML must have a single root node');
+      }
+      return fromDom(div.childNodes[0]);
+    };
+    var fromTag = function (tag, scope) {
+      var doc = scope || domGlobals.document;
+      var node = doc.createElement(tag);
+      return fromDom(node);
+    };
+    var fromText = function (text, scope) {
+      var doc = scope || domGlobals.document;
+      var node = doc.createTextNode(text);
+      return fromDom(node);
+    };
+    var fromDom = function (node) {
+      if (node === null || node === undefined) {
+        throw new Error('Node cannot be null or undefined');
+      }
+      return { dom: constant(node) };
+    };
+    var fromPoint = function (docElm, x, y) {
+      var doc = docElm.dom();
+      return Option.from(doc.elementFromPoint(x, y)).map(fromDom);
+    };
+    var Element = {
+      fromHtml: fromHtml,
+      fromTag: fromTag,
+      fromText: fromText,
+      fromDom: fromDom,
+      fromPoint: fromPoint
+    };
+
+    var liftN = function (arr, f) {
+      var r = [];
+      for (var i = 0; i < arr.length; i++) {
+        var x = arr[i];
+        if (x.isSome()) {
+          r.push(x.getOrDie());
+        } else {
+          return Option.none();
+        }
+      }
+      return Option.some(f.apply(null, r));
+    };
+
+    var fromElements = function (elements, scope) {
+      var doc = scope || domGlobals.document;
+      var fragment = doc.createDocumentFragment();
+      each(elements, function (element) {
+        fragment.appendChild(element.dom());
+      });
+      return Element.fromDom(fragment);
+    };
+
+    var Immutable = function () {
+      var fields = [];
+      for (var _i = 0; _i < arguments.length; _i++) {
+        fields[_i] = arguments[_i];
+      }
+      return function () {
+        var values = [];
+        for (var _i = 0; _i < arguments.length; _i++) {
+          values[_i] = arguments[_i];
+        }
+        if (fields.length !== values.length) {
+          throw new Error('Wrong number of arguments to struct. Expected "[' + fields.length + ']", got ' + values.length + ' arguments');
+        }
+        var struct = {};
+        each(fields, function (name, i) {
+          struct[name] = constant(values[i]);
+        });
+        return struct;
+      };
+    };
+
+    var keys = Object.keys;
+    var each$1 = function (obj, f) {
+      var props = keys(obj);
+      for (var k = 0, len = props.length; k < len; k++) {
+        var i = props[k];
+        var x = obj[i];
+        f(x, i, obj);
+      }
+    };
+
</ins><span class="cx" style="display: block; padding: 0 10px">     var node = function () {
</span><span class="cx" style="display: block; padding: 0 10px">       var f = Global$1.getOrDie('Node');
</span><span class="cx" style="display: block; padding: 0 10px">       return f;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -602,7 +679,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var documentPositionContainedBy = function (a, b) {
</span><span class="cx" style="display: block; padding: 0 10px">       return compareDocumentPosition(a, b, node().DOCUMENT_POSITION_CONTAINED_BY);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var Node$1 = {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var Node = {
</ins><span class="cx" style="display: block; padding: 0 10px">       documentPositionPreceding: documentPositionPreceding,
</span><span class="cx" style="display: block; padding: 0 10px">       documentPositionContainedBy: documentPositionContainedBy
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -801,7 +878,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       detectOs: detectOs
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var contains$1 = function (str, substr) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var contains = function (str, substr) {
</ins><span class="cx" style="display: block; padding: 0 10px">       return str.indexOf(substr) !== -1;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -808,7 +885,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var normalVersionRegex = /.*?version\/\ ?([0-9]+)\.([0-9]+).*/;
</span><span class="cx" style="display: block; padding: 0 10px">     var checkContains = function (target) {
</span><span class="cx" style="display: block; padding: 0 10px">       return function (uastring) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return contains$1(uastring, target);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return contains(uastring, target);
</ins><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var browsers = [
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -816,7 +893,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         name: 'Edge',
</span><span class="cx" style="display: block; padding: 0 10px">         versionRegexes: [/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],
</span><span class="cx" style="display: block; padding: 0 10px">         search: function (uastring) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          var monstrosity = contains$1(uastring, 'edge/') && contains$1(uastring, 'chrome') && contains$1(uastring, 'safari') && contains$1(uastring, 'applewebkit');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          var monstrosity = contains(uastring, 'edge/') && contains(uastring, 'chrome') && contains(uastring, 'safari') && contains(uastring, 'applewebkit');
</ins><span class="cx" style="display: block; padding: 0 10px">           return monstrosity;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -827,7 +904,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">           normalVersionRegex
</span><span class="cx" style="display: block; padding: 0 10px">         ],
</span><span class="cx" style="display: block; padding: 0 10px">         search: function (uastring) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          return contains$1(uastring, 'chrome') && !contains$1(uastring, 'chromeframe');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          return contains(uastring, 'chrome') && !contains(uastring, 'chromeframe');
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -837,7 +914,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">           /.*?rv:([0-9]+)\.([0-9]+).*/
</span><span class="cx" style="display: block; padding: 0 10px">         ],
</span><span class="cx" style="display: block; padding: 0 10px">         search: function (uastring) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          return contains$1(uastring, 'msie') || contains$1(uastring, 'trident');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          return contains(uastring, 'msie') || contains(uastring, 'trident');
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -860,7 +937,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">           /.*?cpu os ([0-9]+)_([0-9]+).*/
</span><span class="cx" style="display: block; padding: 0 10px">         ],
</span><span class="cx" style="display: block; padding: 0 10px">         search: function (uastring) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          return (contains$1(uastring, 'safari') || contains$1(uastring, 'mobile/')) && contains$1(uastring, 'applewebkit');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          return (contains(uastring, 'safari') || contains(uastring, 'mobile/')) && contains(uastring, 'applewebkit');
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     ];
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -873,7 +950,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       {
</span><span class="cx" style="display: block; padding: 0 10px">         name: 'iOS',
</span><span class="cx" style="display: block; padding: 0 10px">         search: function (uastring) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          return contains$1(uastring, 'iphone') || contains$1(uastring, 'ipad');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          return contains(uastring, 'iphone') || contains(uastring, 'ipad');
</ins><span class="cx" style="display: block; padding: 0 10px">         },
</span><span class="cx" style="display: block; padding: 0 10px">         versionRegexes: [
</span><span class="cx" style="display: block; padding: 0 10px">           /.*?version\/\ ?([0-9]+)\.([0-9]+).*/,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -927,76 +1004,40 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var PlatformDetection = { detect: detect$2 };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var detect$3 = cached(function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var userAgent = navigator.userAgent;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var userAgent = domGlobals.navigator.userAgent;
</ins><span class="cx" style="display: block; padding: 0 10px">       return PlatformDetection.detect(userAgent);
</span><span class="cx" style="display: block; padding: 0 10px">     });
</span><span class="cx" style="display: block; padding: 0 10px">     var PlatformDetection$1 = { detect: detect$3 };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var fromHtml = function (html, scope) {
-      var doc = scope || document;
-      var div = doc.createElement('div');
-      div.innerHTML = html;
-      if (!div.hasChildNodes() || div.childNodes.length > 1) {
-        console.error('HTML does not have a single root node', html);
-        throw 'HTML must have a single root node';
-      }
-      return fromDom(div.childNodes[0]);
-    };
-    var fromTag = function (tag, scope) {
-      var doc = scope || document;
-      var node = doc.createElement(tag);
-      return fromDom(node);
-    };
-    var fromText = function (text, scope) {
-      var doc = scope || document;
-      var node = doc.createTextNode(text);
-      return fromDom(node);
-    };
-    var fromDom = function (node) {
-      if (node === null || node === undefined)
-        throw new Error('Node cannot be null or undefined');
-      return { dom: constant(node) };
-    };
-    var fromPoint = function (docElm, x, y) {
-      var doc = docElm.dom();
-      return Option.from(doc.elementFromPoint(x, y)).map(fromDom);
-    };
-    var Element$$1 = {
-      fromHtml: fromHtml,
-      fromTag: fromTag,
-      fromText: fromText,
-      fromDom: fromDom,
-      fromPoint: fromPoint
-    };
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var ATTRIBUTE = domGlobals.Node.ATTRIBUTE_NODE;
+    var CDATA_SECTION = domGlobals.Node.CDATA_SECTION_NODE;
+    var COMMENT = domGlobals.Node.COMMENT_NODE;
+    var DOCUMENT = domGlobals.Node.DOCUMENT_NODE;
+    var DOCUMENT_TYPE = domGlobals.Node.DOCUMENT_TYPE_NODE;
+    var DOCUMENT_FRAGMENT = domGlobals.Node.DOCUMENT_FRAGMENT_NODE;
+    var ELEMENT = domGlobals.Node.ELEMENT_NODE;
+    var TEXT = domGlobals.Node.TEXT_NODE;
+    var PROCESSING_INSTRUCTION = domGlobals.Node.PROCESSING_INSTRUCTION_NODE;
+    var ENTITY_REFERENCE = domGlobals.Node.ENTITY_REFERENCE_NODE;
+    var ENTITY = domGlobals.Node.ENTITY_NODE;
+    var NOTATION = domGlobals.Node.NOTATION_NODE;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var ATTRIBUTE = Node.ATTRIBUTE_NODE;
-    var CDATA_SECTION = Node.CDATA_SECTION_NODE;
-    var COMMENT = Node.COMMENT_NODE;
-    var DOCUMENT = Node.DOCUMENT_NODE;
-    var DOCUMENT_TYPE = Node.DOCUMENT_TYPE_NODE;
-    var DOCUMENT_FRAGMENT = Node.DOCUMENT_FRAGMENT_NODE;
-    var ELEMENT = Node.ELEMENT_NODE;
-    var TEXT = Node.TEXT_NODE;
-    var PROCESSING_INSTRUCTION = Node.PROCESSING_INSTRUCTION_NODE;
-    var ENTITY_REFERENCE = Node.ENTITY_REFERENCE_NODE;
-    var ENTITY = Node.ENTITY_NODE;
-    var NOTATION = Node.NOTATION_NODE;
-
</del><span class="cx" style="display: block; padding: 0 10px">     var ELEMENT$1 = ELEMENT;
</span><span class="cx" style="display: block; padding: 0 10px">     var is = function (element, selector) {
</span><span class="cx" style="display: block; padding: 0 10px">       var elem = element.dom();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      if (elem.nodeType !== ELEMENT$1)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      if (elem.nodeType !== ELEMENT$1) {
</ins><span class="cx" style="display: block; padding: 0 10px">         return false;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      else if (elem.matches !== undefined)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      } else if (elem.matches !== undefined) {
</ins><span class="cx" style="display: block; padding: 0 10px">         return elem.matches(selector);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      else if (elem.msMatchesSelector !== undefined)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      } else if (elem.msMatchesSelector !== undefined) {
</ins><span class="cx" style="display: block; padding: 0 10px">         return elem.msMatchesSelector(selector);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      else if (elem.webkitMatchesSelector !== undefined)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      } else if (elem.webkitMatchesSelector !== undefined) {
</ins><span class="cx" style="display: block; padding: 0 10px">         return elem.webkitMatchesSelector(selector);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      else if (elem.mozMatchesSelector !== undefined)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      } else if (elem.mozMatchesSelector !== undefined) {
</ins><span class="cx" style="display: block; padding: 0 10px">         return elem.mozMatchesSelector(selector);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      else
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      } else {
</ins><span class="cx" style="display: block; padding: 0 10px">         throw new Error('Browser lacks native selectors');
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      }
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var eq = function (e1, e2) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1003,84 +1044,28 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return e1.dom() === e2.dom();
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var regularContains = function (e1, e2) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var d1 = e1.dom(), d2 = e2.dom();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var d1 = e1.dom();
+      var d2 = e2.dom();
</ins><span class="cx" style="display: block; padding: 0 10px">       return d1 === d2 ? false : d1.contains(d2);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var ieContains = function (e1, e2) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return Node$1.documentPositionContainedBy(e1.dom(), e2.dom());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return Node.documentPositionContainedBy(e1.dom(), e2.dom());
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var browser = PlatformDetection$1.detect().browser;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var contains$2 = browser.isIE() ? ieContains : regularContains;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var contains$1 = browser.isIE() ? ieContains : regularContains;
</ins><span class="cx" style="display: block; padding: 0 10px">     var is$1 = is;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var keys = Object.keys;
-    var each$1 = function (obj, f) {
-      var props = keys(obj);
-      for (var k = 0, len = props.length; k < len; k++) {
-        var i = props[k];
-        var x = obj[i];
-        f(x, i, obj);
-      }
-    };
-
-    var name = function (element) {
-      var r = element.dom().nodeName;
-      return r.toLowerCase();
-    };
-
-    var rawSet = function (dom, key, value$$1) {
-      if (isString(value$$1) || isBoolean(value$$1) || isNumber(value$$1)) {
-        dom.setAttribute(key, value$$1 + '');
-      } else {
-        console.error('Invalid call to Attr.set. Key ', key, ':: Value ', value$$1, ':: Element ', dom);
-        throw new Error('Attribute value was not simple');
-      }
-    };
-    var setAll = function (element, attrs) {
-      var dom = element.dom();
-      each$1(attrs, function (v, k) {
-        rawSet(dom, k, v);
-      });
-    };
-    var clone = function (element) {
-      return foldl(element.dom().attributes, function (acc, attr) {
-        acc[attr.name] = attr.value;
-        return acc;
-      }, {});
-    };
-
-    var Immutable = function () {
-      var fields = [];
-      for (var _i = 0; _i < arguments.length; _i++) {
-        fields[_i] = arguments[_i];
-      }
-      return function () {
-        var values = [];
-        for (var _i = 0; _i < arguments.length; _i++) {
-          values[_i] = arguments[_i];
-        }
-        if (fields.length !== values.length) {
-          throw new Error('Wrong number of arguments to struct. Expected "[' + fields.length + ']", got ' + values.length + ' arguments');
-        }
-        var struct = {};
-        each(fields, function (name, i) {
-          struct[name] = constant(values[i]);
-        });
-        return struct;
-      };
-    };
-
</del><span class="cx" style="display: block; padding: 0 10px">     var parent = function (element) {
</span><span class="cx" style="display: block; padding: 0 10px">       var dom = element.dom();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return Option.from(dom.parentNode).map(Element$$1.fromDom);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return Option.from(dom.parentNode).map(Element.fromDom);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var children = function (element) {
</span><span class="cx" style="display: block; padding: 0 10px">       var dom = element.dom();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return map(dom.childNodes, Element$$1.fromDom);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return map(dom.childNodes, Element.fromDom);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var child = function (element, index) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var children = element.dom().childNodes;
-      return Option.from(children[index]).map(Element$$1.fromDom);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var cs = element.dom().childNodes;
+      return Option.from(cs[index]).map(Element.fromDom);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var firstChild = function (element) {
</span><span class="cx" style="display: block; padding: 0 10px">       return child(element, 0);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1091,13 +1076,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var spot = Immutable('element', 'offset');
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var before = function (marker, element) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var parent$$1 = parent(marker);
-      parent$$1.each(function (v) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var parent$1 = parent(marker);
+      parent$1.each(function (v) {
</ins><span class="cx" style="display: block; padding: 0 10px">         v.dom().insertBefore(element.dom(), marker.dom());
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var append = function (parent$$1, element) {
-      parent$$1.dom().appendChild(element.dom());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var append = function (parent, element) {
+      parent.dom().appendChild(element.dom());
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var before$1 = function (marker, elements) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1111,20 +1096,65 @@
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var remove$1 = function (element) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var remove = function (element) {
</ins><span class="cx" style="display: block; padding: 0 10px">       var dom = element.dom();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      if (dom.parentNode !== null)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      if (dom.parentNode !== null) {
</ins><span class="cx" style="display: block; padding: 0 10px">         dom.parentNode.removeChild(dom);
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      }
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var clone$1 = function (original, deep) {
-      return Element$$1.fromDom(original.dom().cloneNode(deep));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var name = function (element) {
+      var r = element.dom().nodeName;
+      return r.toLowerCase();
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+    var rawSet = function (dom, key, value) {
+      if (isString(value) || isBoolean(value) || isNumber(value)) {
+        dom.setAttribute(key, value + '');
+      } else {
+        domGlobals.console.error('Invalid call to Attr.set. Key ', key, ':: Value ', value, ':: Element ', dom);
+        throw new Error('Attribute value was not simple');
+      }
+    };
+    var setAll = function (element, attrs) {
+      var dom = element.dom();
+      each$1(attrs, function (v, k) {
+        rawSet(dom, k, v);
+      });
+    };
+    var clone = function (element) {
+      return foldl(element.dom().attributes, function (acc, attr) {
+        acc[attr.name] = attr.value;
+        return acc;
+      }, {});
+    };
+
+    var isSupported = function (dom) {
+      return dom.style !== undefined;
+    };
+
+    var internalSet = function (dom, property, value) {
+      if (!isString(value)) {
+        domGlobals.console.error('Invalid call to CSS.set. Property ', property, ':: Value ', value, ':: Element ', dom);
+        throw new Error('CSS value must be a string: ' + value);
+      }
+      if (isSupported(dom)) {
+        dom.style.setProperty(property, value);
+      }
+    };
+    var set = function (element, property, value) {
+      var dom = element.dom();
+      internalSet(dom, property, value);
+    };
+
+    var clone$1 = function (original, isDeep) {
+      return Element.fromDom(original.dom().cloneNode(isDeep));
+    };
</ins><span class="cx" style="display: block; padding: 0 10px">     var deep = function (original) {
</span><span class="cx" style="display: block; padding: 0 10px">       return clone$1(original, true);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var shallowAs = function (original, tag) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var nu = Element$$1.fromTag(tag);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var nu = Element.fromTag(tag);
</ins><span class="cx" style="display: block; padding: 0 10px">       var attributes = clone(original);
</span><span class="cx" style="display: block; padding: 0 10px">       setAll(nu, attributes);
</span><span class="cx" style="display: block; padding: 0 10px">       return nu;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1132,216 +1162,102 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var mutate = function (original, tag) {
</span><span class="cx" style="display: block; padding: 0 10px">       var nu = shallowAs(original, tag);
</span><span class="cx" style="display: block; padding: 0 10px">       before(original, nu);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var children$$1 = children(original);
-      append$1(nu, children$$1);
-      remove$1(original);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var children$1 = children(original);
+      append$1(nu, children$1);
+      remove(original);
</ins><span class="cx" style="display: block; padding: 0 10px">       return nu;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var global$8 = tinymce.util.Tools.resolve('tinymce.Env');
-
-    var DOM$1 = global$6.DOM;
-    var createNewTextBlock = function (editor, contentNode, blockName) {
-      var node, textBlock;
-      var fragment = DOM$1.createFragment();
-      var hasContentNode;
-      var blockElements = editor.schema.getBlockElements();
-      if (editor.settings.forced_root_block) {
-        blockName = blockName || editor.settings.forced_root_block;
-      }
-      if (blockName) {
-        textBlock = DOM$1.create(blockName);
-        if (textBlock.tagName === editor.settings.forced_root_block) {
-          DOM$1.setAttribs(textBlock, editor.settings.forced_root_block_attrs);
-        }
-        if (!NodeType.isBlock(contentNode.firstChild, blockElements)) {
-          fragment.appendChild(textBlock);
-        }
-      }
-      if (contentNode) {
-        while (node = contentNode.firstChild) {
-          var nodeName = node.nodeName;
-          if (!hasContentNode && (nodeName !== 'SPAN' || node.getAttribute('data-mce-type') !== 'bookmark')) {
-            hasContentNode = true;
-          }
-          if (NodeType.isBlock(node, blockElements)) {
-            fragment.appendChild(node);
-            textBlock = null;
-          } else {
-            if (blockName) {
-              if (!textBlock) {
-                textBlock = DOM$1.create(blockName);
-                fragment.appendChild(textBlock);
-              }
-              textBlock.appendChild(node);
-            } else {
-              fragment.appendChild(node);
-            }
-          }
-        }
-      }
-      if (!editor.settings.forced_root_block) {
-        fragment.appendChild(DOM$1.create('br'));
-      } else {
-        if (!hasContentNode && (!global$8.ie || global$8.ie > 10)) {
-          textBlock.appendChild(DOM$1.create('br', { 'data-mce-bogus': '1' }));
-        }
-      }
-      return fragment;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var joinSegment = function (parent, child) {
+      append(parent.item, child.list);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var TextBlock = { createNewTextBlock: createNewTextBlock };
-
-    var DOM$2 = global$6.DOM;
-    var splitList = function (editor, ul, li, newBlock) {
-      var tmpRng, fragment, bookmarks, node;
-      var removeAndKeepBookmarks = function (targetNode) {
-        global$5.each(bookmarks, function (node) {
-          targetNode.parentNode.insertBefore(node, li.parentNode);
-        });
-        DOM$2.remove(targetNode);
-      };
-      bookmarks = DOM$2.select('span[data-mce-type="bookmark"]', ul);
-      newBlock = newBlock || TextBlock.createNewTextBlock(editor, li);
-      tmpRng = DOM$2.createRng();
-      tmpRng.setStartAfter(li);
-      tmpRng.setEndAfter(ul);
-      fragment = tmpRng.extractContents();
-      for (node = fragment.firstChild; node; node = node.firstChild) {
-        if (node.nodeName === 'LI' && editor.dom.isEmpty(node)) {
-          DOM$2.remove(node);
-          break;
-        }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var joinSegments = function (segments) {
+      for (var i = 1; i < segments.length; i++) {
+        joinSegment(segments[i - 1], segments[i]);
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      if (!editor.dom.isEmpty(fragment)) {
-        DOM$2.insertAfter(fragment, ul);
-      }
-      DOM$2.insertAfter(newBlock, ul);
-      if (NodeType.isEmpty(editor.dom, li.parentNode)) {
-        removeAndKeepBookmarks(li.parentNode);
-      }
-      DOM$2.remove(li);
-      if (NodeType.isEmpty(editor.dom, ul)) {
-        DOM$2.remove(ul);
-      }
</del><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var SplitList = { splitList: splitList };
-
-    var liftN = function (arr, f) {
-      var r = [];
-      for (var i = 0; i < arr.length; i++) {
-        var x = arr[i];
-        if (x.isSome()) {
-          r.push(x.getOrDie());
-        } else {
-          return Option.none();
-        }
-      }
-      return Option.some(f.apply(null, r));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var appendSegments = function (head$1, tail) {
+      liftN([
+        last(head$1),
+        head(tail)
+      ], joinSegment);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
-    var fromElements = function (elements, scope) {
-      var doc = scope || document;
-      var fragment = doc.createDocumentFragment();
-      each(elements, function (element) {
-        fragment.appendChild(element.dom());
-      });
-      return Element$$1.fromDom(fragment);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var createSegment = function (scope, listType) {
+      var segment = {
+        list: Element.fromTag(listType, scope),
+        item: Element.fromTag('li', scope)
+      };
+      append(segment.list, segment.item);
+      return segment;
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
-    var isSupported = function (dom) {
-      return dom.style !== undefined;
-    };
-
-    var internalSet = function (dom, property, value$$1) {
-      if (!isString(value$$1)) {
-        console.error('Invalid call to CSS.set. Property ', property, ':: Value ', value$$1, ':: Element ', dom);
-        throw new Error('CSS value must be a string: ' + value$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var createSegments = function (scope, entry, size) {
+      var segments = [];
+      for (var i = 0; i < size; i++) {
+        segments.push(createSegment(scope, entry.listType));
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      if (isSupported(dom))
-        dom.style.setProperty(property, value$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return segments;
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var set$1 = function (element, property, value$$1) {
-      var dom = element.dom();
-      internalSet(dom, property, value$$1);
-    };
-
-    var createSection = function (scope, listType) {
-      var section = {
-        list: Element$$1.fromTag(listType, scope),
-        item: Element$$1.fromTag('li', scope)
-      };
-      append(section.list, section.item);
-      return section;
-    };
-    var joinSections = function (parent, appendor) {
-      append(parent.item, appendor.list);
-    };
-    var createJoinedSections = function (scope, length, listType) {
-      var sections = [];
-      var _loop_1 = function (i) {
-        var newSection = createSection(scope, listType);
-        last(sections).each(function (lastSection) {
-          return joinSections(lastSection, newSection);
-        });
-        sections.push(newSection);
-      };
-      for (var i = 0; i < length; i++) {
-        _loop_1(i);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var populateSegments = function (segments, entry) {
+      for (var i = 0; i < segments.length - 1; i++) {
+        set(segments[i].item, 'list-style-type', 'none');
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return sections;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      last(segments).each(function (segment) {
+        setAll(segment.list, entry.listAttributes);
+        setAll(segment.item, entry.itemAttributes);
+        append$1(segment.item, entry.content);
+      });
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var normalizeSection = function (section, entry) {
-      if (name(section.list).toUpperCase() !== entry.listType) {
-        section.list = mutate(section.list, entry.listType);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var normalizeSegment = function (segment, entry) {
+      if (name(segment.list) !== entry.listType) {
+        segment.list = mutate(segment.list, entry.listType);
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      setAll(section.list, entry.listAttributes);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      setAll(segment.list, entry.listAttributes);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var createItem = function (scope, attr, content) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var item = Element$$1.fromTag('li', scope);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var item = Element.fromTag('li', scope);
</ins><span class="cx" style="display: block; padding: 0 10px">       setAll(item, attr);
</span><span class="cx" style="display: block; padding: 0 10px">       append$1(item, content);
</span><span class="cx" style="display: block; padding: 0 10px">       return item;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var setItem = function (section, item) {
-      append(section.list, item);
-      section.item = item;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var appendItem = function (segment, item) {
+      append(segment.list, item);
+      segment.item = item;
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var writeShallow = function (scope, outline, entry) {
-      var newOutline = outline.slice(0, entry.depth);
-      last(newOutline).each(function (section) {
-        setItem(section, createItem(scope, entry.itemAttributes, entry.content));
-        normalizeSection(section, entry);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var writeShallow = function (scope, cast, entry) {
+      var newCast = cast.slice(0, entry.depth);
+      last(newCast).each(function (segment) {
+        var item = createItem(scope, entry.itemAttributes, entry.content);
+        appendItem(segment, item);
+        normalizeSegment(segment, entry);
</ins><span class="cx" style="display: block; padding: 0 10px">       });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return newOutline;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return newCast;
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var populateSections = function (sections, entry) {
-      last(sections).each(function (section) {
-        setAll(section.list, entry.listAttributes);
-        setAll(section.item, entry.itemAttributes);
-        append$1(section.item, entry.content);
-      });
-      for (var i = 0; i < sections.length - 1; i++) {
-        set$1(sections[i].item, 'list-style-type', 'none');
-      }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var writeDeep = function (scope, cast, entry) {
+      var segments = createSegments(scope, entry, entry.depth - cast.length);
+      joinSegments(segments);
+      populateSegments(segments, entry);
+      appendSegments(cast, segments);
+      return cast.concat(segments);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var writeDeep = function (scope, outline, entry) {
-      var newSections = createJoinedSections(scope, entry.depth - outline.length, entry.listType);
-      populateSections(newSections, entry);
-      liftN([
-        last(outline),
-        head(newSections)
-      ], joinSections);
-      return outline.concat(newSections);
-    };
</del><span class="cx" style="display: block; padding: 0 10px">     var composeList = function (scope, entries) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var outline = foldl(entries, function (outline, entry) {
-        return entry.depth > outline.length ? writeDeep(scope, outline, entry) : writeShallow(scope, outline, entry);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var cast = foldl(entries, function (cast, entry) {
+        return entry.depth > cast.length ? writeDeep(scope, cast, entry) : writeShallow(scope, cast, entry);
</ins><span class="cx" style="display: block; padding: 0 10px">       }, []);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return head(outline).map(function (section) {
-        return section.list;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return head(cast).map(function (segment) {
+        return segment.list;
</ins><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var isList$1 = function (el) {
+      return is$1(el, 'OL,UL');
+    };
+    var hasFirstChildList = function (el) {
+      return firstChild(el).map(isList$1).getOr(false);
+    };
+    var hasLastChildList = function (el) {
+      return lastChild(el).map(isList$1).getOr(false);
+    };
+
</ins><span class="cx" style="display: block; padding: 0 10px">     var isIndented = function (entry) {
</span><span class="cx" style="display: block; padding: 0 10px">       return entry.depth > 0;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1348,6 +1264,23 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var isSelected = function (entry) {
</span><span class="cx" style="display: block; padding: 0 10px">       return entry.isSelected;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var cloneItemContent = function (li) {
+      var children$1 = children(li);
+      var content = hasLastChildList(li) ? children$1.slice(0, -1) : children$1;
+      return map(content, deep);
+    };
+    var createEntry = function (li, depth, isSelected) {
+      return parent(li).map(function (list) {
+        return {
+          depth: depth,
+          isSelected: isSelected,
+          content: cloneItemContent(li),
+          itemAttributes: clone(li),
+          listAttributes: clone(list),
+          listType: name(list)
+        };
+      });
+    };
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var indentEntry = function (indentation, entry) {
</span><span class="cx" style="display: block; padding: 0 10px">       switch (indentation) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1362,8 +1295,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var hasOwnProperty$1 = Object.prototype.hasOwnProperty;
-    var shallow$1 = function (old, nu) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var hasOwnProperty = Object.prototype.hasOwnProperty;
+    var shallow = function (old, nu) {
</ins><span class="cx" style="display: block; padding: 0 10px">       return nu;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var baseMerge = function (merger) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1377,7 +1310,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         for (var j = 0; j < objects.length; j++) {
</span><span class="cx" style="display: block; padding: 0 10px">           var curObject = objects[j];
</span><span class="cx" style="display: block; padding: 0 10px">           for (var key in curObject)
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            if (hasOwnProperty$1.call(curObject, key)) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            if (hasOwnProperty.call(curObject, key)) {
</ins><span class="cx" style="display: block; padding: 0 10px">               ret[key] = merger(ret[key], curObject[key]);
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1384,34 +1317,30 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return ret;
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var merge = baseMerge(shallow$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var merge = baseMerge(shallow);
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var assimilateEntry = function (adherent, source) {
-      adherent.listType = source.listType;
-      adherent.listAttributes = merge({}, source.listAttributes);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var cloneListProperties = function (target, source) {
+      target.listType = source.listType;
+      target.listAttributes = merge({}, source.listAttributes);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var normalizeShallow = function (outline, entry) {
-      var matchingEntryDepth = entry.depth - 1;
-      outline[matchingEntryDepth].each(function (matchingEntry) {
-        return assimilateEntry(entry, matchingEntry);
-      });
-      var newOutline = outline.slice(0, matchingEntryDepth);
-      newOutline.push(Option.some(entry));
-      return newOutline;
-    };
-    var normalizeDeep = function (outline, entry) {
-      var newOutline = outline.slice(0);
-      var diff = entry.depth - outline.length;
-      for (var i = 1; i < diff; i++) {
-        newOutline.push(Option.none());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var previousSiblingEntry = function (entries, start) {
+      var depth = entries[start].depth;
+      for (var i = start - 1; i >= 0; i--) {
+        if (entries[i].depth === depth) {
+          return Option.some(entries[i]);
+        }
+        if (entries[i].depth < depth) {
+          break;
+        }
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      newOutline.push(Option.some(entry));
-      return newOutline;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return Option.none();
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var normalizeEntries = function (entries) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      foldl(entries, function (outline, entry) {
-        return entry.depth > outline.length ? normalizeDeep(outline, entry) : normalizeShallow(outline, entry);
-      }, []);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      each(entries, function (entry, i) {
+        previousSiblingEntry(entries, i).each(function (matchingEntry) {
+          cloneListProperties(entry, matchingEntry);
+        });
+      });
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var Cell = function (initial) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1432,72 +1361,32 @@
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var ListType;
-    (function (ListType) {
-      ListType['OL'] = 'OL';
-      ListType['UL'] = 'UL';
-      ListType['DL'] = 'DL';
-    }(ListType || (ListType = {})));
-    var getListType = function (list) {
-      switch (name(list)) {
-      case 'ol':
-        return Option.some(ListType.OL);
-      case 'ul':
-        return Option.some(ListType.UL);
-      case 'dl':
-        return Option.some(ListType.DL);
-      default:
-        return Option.none();
-      }
-    };
-    var isList$1 = function (el) {
-      return is$1(el, 'OL,UL,DL');
-    };
-
-    var hasFirstChildList = function (li) {
-      return firstChild(li).map(isList$1).getOr(false);
-    };
-    var hasLastChildList = function (li) {
-      return lastChild(li).map(isList$1).getOr(false);
-    };
-
-    var getItemContent = function (li) {
-      var childNodes = children(li);
-      var contentLength = childNodes.length + (hasLastChildList(li) ? -1 : 0);
-      return map(childNodes.slice(0, contentLength), deep);
-    };
-    var createEntry = function (li, depth, isSelected) {
-      var list = parent(li);
-      return {
-        depth: depth,
-        isSelected: isSelected,
-        content: getItemContent(li),
-        listType: list.bind(getListType).getOr(ListType.OL),
-        listAttributes: list.map(clone).getOr({}),
-        itemAttributes: clone(li)
-      };
-    };
</del><span class="cx" style="display: block; padding: 0 10px">     var parseItem = function (depth, itemSelection, selectionState, item) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var curriedParseList = curry(parseList, depth, itemSelection, selectionState);
-      var updateSelectionState = function (itemRange) {
-        return itemSelection.each(function (selection) {
-          if (eq(itemRange === 'Start' ? selection.start : selection.end, item)) {
-            selectionState.set(itemRange === 'Start');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return firstChild(item).filter(isList$1).fold(function () {
+        itemSelection.each(function (selection) {
+          if (eq(selection.start, item)) {
+            selectionState.set(true);
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      };
-      return firstChild(item).filter(isList$1).fold(function () {
-        updateSelectionState('Start');
-        var fromCurrentItem = createEntry(item, depth, selectionState.get());
-        updateSelectionState('End');
-        var fromChildList = lastChild(item).filter(isList$1).map(curriedParseList).getOr([]);
-        return [fromCurrentItem].concat(fromChildList);
-      }, curriedParseList);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var currentItemEntry = createEntry(item, depth, selectionState.get());
+        itemSelection.each(function (selection) {
+          if (eq(selection.end, item)) {
+            selectionState.set(false);
+          }
+        });
+        var childListEntries = lastChild(item).filter(isList$1).map(function (list) {
+          return parseList(depth, itemSelection, selectionState, list);
+        }).getOr([]);
+        return currentItemEntry.toArray().concat(childListEntries);
+      }, function (list) {
+        return parseList(depth, itemSelection, selectionState, list);
+      });
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var parseList = function (depth, itemSelection, selectionState, list) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var newDepth = depth + 1;
-      return bind(children(list), function (child$$1) {
-        return isList$1(child$$1) ? parseList(newDepth, itemSelection, selectionState, child$$1) : parseItem(newDepth, itemSelection, selectionState, child$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return bind(children(list), function (element) {
+        var parser = isList$1(element) ? parseList : parseItem;
+        var newDepth = depth + 1;
+        return parser(newDepth, itemSelection, selectionState, element);
</ins><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var parseLists = function (lists, itemSelection) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1505,16 +1394,67 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var initialDepth = 0;
</span><span class="cx" style="display: block; padding: 0 10px">       return map(lists, function (list) {
</span><span class="cx" style="display: block; padding: 0 10px">         return {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          entries: parseList(initialDepth, itemSelection, selectionState, list),
-          sourceList: list
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          sourceList: list,
+          entries: parseList(initialDepth, itemSelection, selectionState, list)
</ins><span class="cx" style="display: block; padding: 0 10px">         };
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var global$8 = tinymce.util.Tools.resolve('tinymce.Env');
+
+    var createTextBlock = function (editor, contentNode) {
+      var dom = editor.dom;
+      var blockElements = editor.schema.getBlockElements();
+      var fragment = dom.createFragment();
+      var node, textBlock, blockName, hasContentNode;
+      if (editor.settings.forced_root_block) {
+        blockName = editor.settings.forced_root_block;
+      }
+      if (blockName) {
+        textBlock = dom.create(blockName);
+        if (textBlock.tagName === editor.settings.forced_root_block) {
+          dom.setAttribs(textBlock, editor.settings.forced_root_block_attrs);
+        }
+        if (!NodeType.isBlock(contentNode.firstChild, blockElements)) {
+          fragment.appendChild(textBlock);
+        }
+      }
+      if (contentNode) {
+        while (node = contentNode.firstChild) {
+          var nodeName = node.nodeName;
+          if (!hasContentNode && (nodeName !== 'SPAN' || node.getAttribute('data-mce-type') !== 'bookmark')) {
+            hasContentNode = true;
+          }
+          if (NodeType.isBlock(node, blockElements)) {
+            fragment.appendChild(node);
+            textBlock = null;
+          } else {
+            if (blockName) {
+              if (!textBlock) {
+                textBlock = dom.create(blockName);
+                fragment.appendChild(textBlock);
+              }
+              textBlock.appendChild(node);
+            } else {
+              fragment.appendChild(node);
+            }
+          }
+        }
+      }
+      if (!editor.settings.forced_root_block) {
+        fragment.appendChild(dom.create('br'));
+      } else {
+        if (!hasContentNode && (!global$8.ie || global$8.ie > 10)) {
+          textBlock.appendChild(dom.create('br', { 'data-mce-bogus': '1' }));
+        }
+      }
+      return fragment;
+    };
+
</ins><span class="cx" style="display: block; padding: 0 10px">     var outdentedComposer = function (editor, entries) {
</span><span class="cx" style="display: block; padding: 0 10px">       return map(entries, function (entry) {
</span><span class="cx" style="display: block; padding: 0 10px">         var content = fromElements(entry.content);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return Element$$1.fromDom(TextBlock.createNewTextBlock(editor, content.dom()));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return Element.fromDom(createTextBlock(editor, content.dom()));
</ins><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var indentedComposer = function (editor, entries) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1533,7 +1473,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var getItemSelection = function (editor) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var selectedListItems = map(Selection.getSelectedListItems(editor), Element$$1.fromDom);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var selectedListItems = map(Selection.getSelectedListItems(editor), Element.fromDom);
</ins><span class="cx" style="display: block; padding: 0 10px">       return liftN([
</span><span class="cx" style="display: block; padding: 0 10px">         find(selectedListItems, not(hasFirstChildList)),
</span><span class="cx" style="display: block; padding: 0 10px">         find(reverse(selectedListItems), not(hasFirstChildList))
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1545,14 +1485,49 @@
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var listsIndentation = function (editor, lists, indentation) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var parsedLists = parseLists(lists, getItemSelection(editor));
-      each(parsedLists, function (entrySet) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var entrySets = parseLists(lists, getItemSelection(editor));
+      each(entrySets, function (entrySet) {
</ins><span class="cx" style="display: block; padding: 0 10px">         indentSelectedEntries(entrySet.entries, indentation);
</span><span class="cx" style="display: block; padding: 0 10px">         before$1(entrySet.sourceList, composeEntries(editor, entrySet.entries));
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        remove$1(entrySet.sourceList);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        remove(entrySet.sourceList);
</ins><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var DOM$1 = global$6.DOM;
+    var splitList = function (editor, ul, li) {
+      var tmpRng, fragment, bookmarks, node, newBlock;
+      var removeAndKeepBookmarks = function (targetNode) {
+        global$5.each(bookmarks, function (node) {
+          targetNode.parentNode.insertBefore(node, li.parentNode);
+        });
+        DOM$1.remove(targetNode);
+      };
+      bookmarks = DOM$1.select('span[data-mce-type="bookmark"]', ul);
+      newBlock = createTextBlock(editor, li);
+      tmpRng = DOM$1.createRng();
+      tmpRng.setStartAfter(li);
+      tmpRng.setEndAfter(ul);
+      fragment = tmpRng.extractContents();
+      for (node = fragment.firstChild; node; node = node.firstChild) {
+        if (node.nodeName === 'LI' && editor.dom.isEmpty(node)) {
+          DOM$1.remove(node);
+          break;
+        }
+      }
+      if (!editor.dom.isEmpty(fragment)) {
+        DOM$1.insertAfter(fragment, ul);
+      }
+      DOM$1.insertAfter(newBlock, ul);
+      if (NodeType.isEmpty(editor.dom, li.parentNode)) {
+        removeAndKeepBookmarks(li.parentNode);
+      }
+      DOM$1.remove(li);
+      if (NodeType.isEmpty(editor.dom, ul)) {
+        DOM$1.remove(ul);
+      }
+    };
+    var SplitList = { splitList: splitList };
+
</ins><span class="cx" style="display: block; padding: 0 10px">     var outdentDlItem = function (editor, item) {
</span><span class="cx" style="display: block; padding: 0 10px">       if (is$1(item, 'DD')) {
</span><span class="cx" style="display: block; padding: 0 10px">         mutate(item, 'DT');
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1576,26 +1551,30 @@
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">     var selectionIndentation = function (editor, indentation) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var dlItems = map(Selection.getSelectedDlItems(editor), Element$$1.fromDom);
-      var lists = map(Selection.getSelectedListRoots(editor), Element$$1.fromDom);
-      if (dlItems.length || lists.length) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var lists = map(Selection.getSelectedListRoots(editor), Element.fromDom);
+      var dlItems = map(Selection.getSelectedDlItems(editor), Element.fromDom);
+      var isHandled = false;
+      if (lists.length || dlItems.length) {
</ins><span class="cx" style="display: block; padding: 0 10px">         var bookmark = editor.selection.getBookmark();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        listsIndentation(editor, lists, indentation);
</ins><span class="cx" style="display: block; padding: 0 10px">         dlIndentation(editor, indentation, dlItems);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        listsIndentation(editor, lists, indentation);
</del><span class="cx" style="display: block; padding: 0 10px">         editor.selection.moveToBookmark(bookmark);
</span><span class="cx" style="display: block; padding: 0 10px">         editor.selection.setRng(Range.normalizeRange(editor.selection.getRng()));
</span><span class="cx" style="display: block; padding: 0 10px">         editor.nodeChanged();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        isHandled = true;
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return isHandled;
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var indentListSelection = function (editor) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      selectionIndentation(editor, 'Indent');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return selectionIndentation(editor, 'Indent');
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var outdentListSelection = function (editor) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      selectionIndentation(editor, 'Outdent');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return selectionIndentation(editor, 'Outdent');
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var flattenListSelection = function (editor) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      selectionIndentation(editor, 'Flatten');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return selectionIndentation(editor, 'Flatten');
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var updateListStyle = function (dom, el, detail) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1823,7 +1802,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       mergeWithAdjacentLists: mergeWithAdjacentLists
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var DOM$3 = global$6.DOM;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var DOM$2 = global$6.DOM;
</ins><span class="cx" style="display: block; padding: 0 10px">     var normalizeList = function (dom, ul) {
</span><span class="cx" style="display: block; padding: 0 10px">       var sibling;
</span><span class="cx" style="display: block; padding: 0 10px">       var parentNode = ul.parentNode;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1832,10 +1811,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">         if (sibling && sibling.nodeName === 'LI') {
</span><span class="cx" style="display: block; padding: 0 10px">           sibling.appendChild(ul);
</span><span class="cx" style="display: block; padding: 0 10px">           if (NodeType.isEmpty(dom, parentNode)) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            DOM$3.remove(parentNode);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            DOM$2.remove(parentNode);
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          DOM$3.setStyle(parentNode, 'listStyleType', 'none');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          DOM$2.setStyle(parentNode, 'listStyleType', 'none');
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       if (NodeType.isListNode(parentNode)) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1928,10 +1907,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">       if (listNode) {
</span><span class="cx" style="display: block; padding: 0 10px">         toElm.appendChild(listNode);
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var contains = contains$1(Element.fromDom(toElm), Element.fromDom(fromElm));
+      var nestedLists = contains ? dom.getParents(fromElm, NodeType.isListNode, toElm) : [];
</ins><span class="cx" style="display: block; padding: 0 10px">       dom.remove(fromElm);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      if (NodeType.isEmpty(dom, ul) && ul !== dom.getRoot()) {
-        dom.remove(ul);
-      }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      each(nestedLists, function (list) {
+        if (NodeType.isEmpty(dom, list) && list !== dom.getRoot()) {
+          dom.remove(list);
+        }
+      });
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var mergeIntoEmptyLi = function (editor, fromLi, toLi) {
</span><span class="cx" style="display: block; padding: 0 10px">       editor.dom.$(toLi).empty();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2047,7 +2030,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       backspaceDelete: backspaceDelete
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var get$3 = function (editor) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var get = function (editor) {
</ins><span class="cx" style="display: block; padding: 0 10px">       return {
</span><span class="cx" style="display: block; padding: 0 10px">         backspaceDelete: function (isForward) {
</span><span class="cx" style="display: block; padding: 0 10px">           Delete.backspaceDelete(editor, isForward);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2054,7 +2037,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var Api = { get: get$3 };
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var Api = { get: get };
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var queryListCommandState = function (editor, listName) {
</span><span class="cx" style="display: block; padding: 0 10px">       return function () {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2099,16 +2082,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">         if (e.keyCode !== global$3.TAB || global$3.metaKeyPressed(e)) {
</span><span class="cx" style="display: block; padding: 0 10px">           return;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (Selection.isList(editor)) {
-          e.preventDefault();
-          editor.undoManager.transact(function () {
-            if (e.shiftKey) {
-              outdentListSelection(editor);
-            } else {
-              indentListSelection(editor);
-            }
-          });
-        }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        editor.undoManager.transact(function () {
+          if (e.shiftKey ? outdentListSelection(editor) : indentListSelection(editor)) {
+            e.preventDefault();
+          }
+        });
</ins><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var setup$1 = function (editor) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2119,7 +2097,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var Keyboard = { setup: setup$1 };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var findIndex$2 = function (list, predicate) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var findIndex = function (list, predicate) {
</ins><span class="cx" style="display: block; padding: 0 10px">       for (var index = 0; index < list.length; index++) {
</span><span class="cx" style="display: block; padding: 0 10px">         var element = list[index];
</span><span class="cx" style="display: block; padding: 0 10px">         if (predicate(element)) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2132,7 +2110,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return function (e) {
</span><span class="cx" style="display: block; padding: 0 10px">         var ctrl = e.control;
</span><span class="cx" style="display: block; padding: 0 10px">         editor.on('NodeChange', function (e) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          var tableCellIndex = findIndex$2(e.parents, NodeType.isTableCellNode);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          var tableCellIndex = findIndex(e.parents, NodeType.isTableCellNode);
</ins><span class="cx" style="display: block; padding: 0 10px">           var parents = tableCellIndex !== -1 ? e.parents.slice(0, tableCellIndex) : e.parents;
</span><span class="cx" style="display: block; padding: 0 10px">           var lists = global$5.grep(parents, NodeType.isListNode);
</span><span class="cx" style="display: block; padding: 0 10px">           ctrl.active(lists.length > 0 && lists[0].nodeName === listName);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2177,5 +2155,5 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     return Plugin;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-}());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+}(window));
</ins><span class="cx" style="display: block; padding: 0 10px"> })();
</span></span></pre></div>
<a id="trunksrcjs_enqueuesvendortinymcepluginslistspluginminjs"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/js/_enqueues/vendor/tinymce/plugins/lists/plugin.min.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/js/_enqueues/vendor/tinymce/plugins/lists/plugin.min.js 2019-05-15 19:53:42 UTC (rev 45315)
+++ trunk/src/js/_enqueues/vendor/tinymce/plugins/lists/plugin.min.js   2019-05-15 23:44:37 UTC (rev 45316)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1 +1 @@
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-!function(){"use strict";var e,n,t,r,o,i,u,a,l,s,c=tinymce.util.Tools.resolve("tinymce.PluginManager"),f=tinymce.util.Tools.resolve("tinymce.dom.RangeUtils"),d=tinymce.util.Tools.resolve("tinymce.dom.TreeWalker"),m=tinymce.util.Tools.resolve("tinymce.util.VK"),p=tinymce.util.Tools.resolve("tinymce.dom.BookmarkManager"),v=tinymce.util.Tools.resolve("tinymce.util.Tools"),g=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),h=function(e){return e&&"BR"===e.nodeName},y=function(e){return e&&3===e.nodeType},N=function(e){return e&&/^(OL|UL|DL)$/.test(e.nodeName)},S=function(e){return e&&/^(OL|UL)$/.test(e.nodeName)},O=function(e){return e&&/^(DT|DD)$/.test(e.nodeName)},C=function(e){return e&&/^(LI|DT|DD)$/.test(e.nodeName)},b=function(e){return e&&
 /^(TH|TD)$/.test(e.nodeName)},L=h,T=function(e,n){return n&&!!e.schema.getTextBlockElements()[n.nodeName]},D=function(e,n){return e&&e.nodeName in n},E=function(e,n){return!!h(n)&&!(!e.isBlock(n.nextSibling)||h(n.previousSibling))},w=function(e,n,t){var r=e.isEmpty(n);return!(t&&0<e.select("span[data-mce-type=bookmark]",n).length)&&r},k=function(e,n){return e.isChildOf(n,e.getRoot())},A=function(e,n){if(y(e))return{container:e,offset:n};var t=f.getNode(e,n);return y(t)?{container:t,offset:n>=e.childNodes.length?t.data.length:0}:t.previousSibling&&y(t.previousSibling)?{container:t.previousSibling,offset:t.previousSibling.data.length}:t.nextSibling&&y(t.nextSibling)?{container:t.nextSibling,offset:0}:{container:e,offset:n}},x=function(e){var n=e.cloneRange(),t=A(e.startContainer,e.startOffset);n.setStart(t.container,t.offset);var r=A(e.endContainer,e.endOffset);return n.setEnd(r.container,r.offset),n},R=g.DOM,I=fu
 nction(o){var i={},e=function(e){var n,t,r;t=o[e?"startContainer":"endContainer"],r=o[e?"startOffset":"endOffset"],1===t.nodeType&&(n=R.create("span",{"data-mce-type":"bookmark"}),t.hasChildNodes()?(r=Math.min(r,t.childNodes.length-1),e?t.insertBefore(n,t.childNodes[r]):R.insertAfter(n,t.childNodes[r])):t.appendChild(n),t=n,r=0),i[e?"startContainer":"endContainer"]=t,i[e?"startOffset":"endOffset"]=r};return e(!0),o.collapsed||e(),i},B=function(o){function e(e){var n,t,r;n=r=o[e?"startContainer":"endContainer"],t=o[e?"startOffset":"endOffset"],n&&(1===n.nodeType&&(t=function(e){for(var n=e.parentNode.firstChild,t=0;n;){if(n===e)return t;1===n.nodeType&&"bookmark"===n.getAttribute("data-mce-type")||t++,n=n.nextSibling}return-1}(n),n=n.parentNode,R.remove(r),!n.hasChildNodes()&&R
 .isBlock(n)&&n.appendChild(R.create("br"))),o[e?"startContainer":"endContainer"]=n,o[e?"startOffset":"endOffset"]=t)}e(!0),e();var n=R.createRng();return n.setStart(o.startContainer,o.startOffset),o.endContainer&&n.setEnd(o.endContainer,o.endOffset),x(n)},_=function(e){return function(){return e}},P=function(t){return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return!t.apply(null,e)}},M=_(!1),U=_(!0),F=M,j=U,H=function(){return $},$=(r={fold:function(e,n){return e()},is:F,isSome:F,isNone:j,getOr:t=function(e){return e},getOrThunk:n=function(e){return e()},getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:function(){return null},getOrUndefined:function(){return undefined},or:t,orThunk:n,map:H,ap:H,each:function(){},bind:H,flatten:H,exists:F,forall:j,filter:H,equals:e=function(e){return e.isNone()},equals_:e,toArray:function(){return[]},toString:
 _("none()")},Object.freeze&&Object.freeze(r),r),q=function(t){var e=function(){return t},n=function(){return o},r=function(e){return e(t)},o={fold:function(e,n){return n(t)},is:function(e){return t===e},isSome:j,isNone:F,getOr:e,getOrThunk:e,getOrDie:e,getOrNull:e,getOrUndefined:e,or:n,orThunk:n,map:function(e){return q(e(t))},ap:function(e){return e.fold(H,function(e){return q(e(t))})},each:function(e){e(t)},bind:r,flatten:e,exists:r,forall:r,filter:function(e){return e(t)?o:$},equals:function(e){return e.is(t)},equals_:function(e,n){return e.fold(F,function(e){return n(t,e)})},toArray:function(){return[t]},toString:function(){return"some("+t+")"}};return o},W={some:q,none:H,from:function(e){return null===e||e===undefined?$:q(e)}},z=function(n){return function(e){return function(e){if(null===e)return"null";var n=typeof e;return"object"===n&&Array.prototype.isPrototypeOf(e)?"array":"object"===n&amp
 ;&String.prototype.isPrototypeOf(e)?"string":n}(e)===n}},K=z("string"),V=z("boolean"),X=z("function"),Q=z("number"),Y=function(e,n){for(var t=e.length,r=new Array(t),o=0;o<t;o++){var i=e[o];r[o]=n(i,o,e)}return r},G=function(e,n){for(var t=0,r=e.length;t<r;t++)n(e[t],t,e)},J=function(e,n){for(var t=[],r=0,o=e.length;r<o;r++){var i=e[r];n(i,r,e)&&t.push(i)}return t},Z=function(e,n,t){return G(e,function(e){t=n(t,e)}),t},ee=function(e,n){for(var t=0,r=e.length;t<r;t++){var o=e[t];if(n(o,t,e))return W.some(o)}return W.none()},ne=Array.prototype.push,te=function(e,n){return function(e){for(var n=[],t=0,r=e.length;t<r;++t){if(!Array.prototype.isPrototypeOf(e[t]))throw new Error("Arr.flatten item "+t+" was not an array, input: "+e);ne.apply(n,e[t])}return n}(Y(e,n))},re=Array.prototype.slice,oe=function(e){return 0===e.length?W.none():W.some(e[0])},ie=function(e){return 0===e.length?W.none():W
 .some(e[e.length-1])},ue=(X(Array.from)&&Array.from,"undefined"!=typeof window?window:Function("return this;")()),ae=function(e,n){return function(e,n){for(var t=n!==undefined&&null!==n?n:ue,r=0;r<e.length&&t!==undefined&&null!==t;++r)t=t[e[r]];return t}(e.split("."),n)},se=function(e,n){var t=ae(e,n);if(t===undefined||null===t)throw e+" not available on this browser";return t},ce=function(e){var n,t=ae("ownerDocument.defaultView",e);return(n=t,se("HTMLElement",n)).prototype.isPrototypeOf(e)},fe=tinymce.util.Tools.resolve("tinymce.dom.DomQuery"),le=function(e){var n=e.selection.getStart(!0);return e.dom.getParent(n,"OL,UL,DL",me(e,n))},de=function(e){var t,n,r,o=e.selection.getSelectedBlocks();return v.grep((t=e,n=o,r=v.map(n,function(e){var n=t.dom.getParent(e,"li,dd,dt",me(t,e));return n||e}),fe.unique(r)),function(e){return C(e)})},me=function(e,n){var t=e.
 dom.getParents(n,"TD,TH");return 0<t.length?t[0]:e.getBody()},ge=function(e,n){var t=e.dom.getParents(n,"ol,ul",me(e,n));return ie(t)},pe=function(n,e){var t=Y(e,function(e){return ge(n,e).getOr(e)});return fe.unique(t)},ve={isList:function(e){var n=le(e);return ce(n)},getParentList:le,getSelectedSubLists:function(e){var n,t,r,o=le(e),i=e.selection.getSelectedBlocks();return r=i,(t=o)&&1===r.length&&r[0]===t?(n=o,v.grep(n.querySelectorAll("ol,ul,dl"),function(e){return N(e)})):v.grep(i,function(e){return N(e)&&o!==e})},getSelectedListItems:de,getClosestListRootElm:me,getSelectedDlItems:function(e){return J(de(e),O)},getSelectedListRoots:function(e){var n,t,r,o=(t=ge(n=e,n.selection.getStart()),r=J(n.selection.getSelectedBlocks(),S),t.toArray().concat(r));return pe(e,o)}},he=function(e,n){var t=function(e,n){for(var t=0;t<e.length;t++){var r=e[t];if(r.test(n))return r}return undefined}(e,n);if(!t)return{major:0,minor:0};var 
 r=function(e){return Number(n.replace(t,"$"+e))};return Ne(r(1),r(2))},ye=function(){return Ne(0,0)},Ne=function(e,n){return{major:e,minor:n}},Se={nu:Ne,detect:function(e,n){var t=String(n).toLowerCase();return 0===e.length?ye():he(e,t)},unknown:ye},Oe="Firefox",Ce=function(e,n){return function(){return n===e}},be=function(e){var n=e.current;return{current:n,version:e.version,isEdge:Ce("Edge",n),isChrome:Ce("Chrome",n),isIE:Ce("IE",n),isOpera:Ce("Opera",n),isFirefox:Ce(Oe,n),isSafari:Ce("Safari",n)}},Le={unknown:function(){return be({current:undefined,version:Se.unknown()})},nu:be,edge:_("Edge"),chrome:_("Chrome"),ie:_("IE"),opera:_("Opera"),firefox:_(Oe),safari:_("Safari")},Te="Windows",De="Android",Ee="Solaris",we="FreeBSD",ke=function(e,n){return function(){return n===e}},Ae=function(e){var n=e.current;return{current:n,ver
 sion:e.version,isWindows:ke(Te,n),isiOS:ke("iOS",n),isAndroid:ke(De,n),isOSX:ke("OSX",n),isLinux:ke("Linux",n),isSolaris:ke(Ee,n),isFreeBSD:ke(we,n)}},xe={unknown:function(){return Ae({current:undefined,version:Se.unknown()})},nu:Ae,windows:_(Te),ios:_("iOS"),android:_(De),linux:_("Linux"),osx:_("OSX"),solaris:_(Ee),freebsd:_(we)},Re=function(e,n){var t=String(n).toLowerCase();return ee(e,function(e){return e.search(t)})},Ie=function(e,t){return Re(e,t).map(function(e){var n=Se.detect(e.versionRegexes,t);return{current:e.name,version:n}})},Be=function(e,t){return Re(e,t).map(function(e){var n=Se.detect(e.versionRegexes,t);return{current:e.name,version:n}})},_e=function(e,n){return-1!==e.indexOf(n)},Pe=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,Me=function(n){return function(e){return _e(e,n)}},Ue=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(e){return _e(e,"edge/")&&_
 e(e,"chrome")&&_e(e,"safari")&&_e(e,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,Pe],search:function(e){return _e(e,"chrome")&&!_e(e,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(e){return _e(e,"msie")||_e(e,"trident")}},{name:"Opera",versionRegexes:[Pe,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:Me("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:Me("firefox")},{name:"Safari",versionRegexes:[Pe,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(e){return(_e(e,"safari")||_e(e,"mobile/"))&&_e(e,"applewebkit")}}],Fe=[{name:"Windows",search:Me("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS
 ",search:function(e){return _e(e,"iphone")||_e(e,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:Me("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:Me("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:Me("linux"),versionRegexes:[]},{name:"Solaris",search:Me("sunos"),versionRegexes:[]},{name:"FreeBSD",search:Me("freebsd"),versionRegexes:[]}],je={browsers:_(Ue),oses:_(Fe)},He=function(e){var n,t,r,o,i,u,a,s,c,f,l,d=je.browsers(),m=je.oses(),g=Ie(d,e).fold(Le.unknown,Le.nu),p=Be(m,e).fold(xe.unknown,xe.nu);return{browser:g,os:p,deviceType:(t=g,r=e,o=(n=p).isiOS()&&!0===/ipad/i.test(r),i=n.isiOS()&&!o,u=n.isAndroid()&&3===n.version.major,a=n.isAndroid()&&4===n.
 version.major,s=o||u||a&&!0===/mobile/i.test(r),c=n.isiOS()||n.isAndroid(),f=c&&!s,l=t.isSafari()&&n.isiOS()&&!1===/safari/i.test(r),{isiPad:_(o),isiPhone:_(i),isTablet:_(s),isPhone:_(f),isTouch:_(c),isAndroid:n.isAndroid,isiOS:n.isiOS,isWebView:_(l)})}},$e={detect:(o=function(){var e=navigator.userAgent;return He(e)},u=!1,function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return u||(u=!0,i=o.apply(null,e)),i})},qe=function(e){if(null===e||e===undefined)throw new Error("Node cannot be null or undefined");return{dom:_(e)}},We={fromHtml:function(e,n){var t=(n||document).createElement("div");if(t.innerHTML=e,!t.hasChildNodes()||1<t.childNodes.length)throw console.error("HTML does not have a single root node",e),"HTML must have a single root node";return qe(t.childNodes[0])},fromTag:function(e,n){var t=(n||document).createElement(e);return qe(t)},fromText:function(e,n){var t=(n||document).cre
 ateTextNode(e);return qe(t)},fromDom:qe,fromPoint:function(e,n,t){var r=e.dom();return W.from(r.elementFromPoint(n,t)).map(qe)}},ze=(Node.ATTRIBUTE_NODE,Node.CDATA_SECTION_NODE,Node.COMMENT_NODE,Node.DOCUMENT_NODE,Node.DOCUMENT_TYPE_NODE,Node.DOCUMENT_FRAGMENT_NODE,Node.ELEMENT_NODE),Ke=(Node.TEXT_NODE,Node.PROCESSING_INSTRUCTION_NODE,Node.ENTITY_REFERENCE_NODE,Node.ENTITY_NODE,Node.NOTATION_NODE,ze),Ve=($e.detect().browser.isIE(),function(e,n){var t=e.dom();if(t.nodeType!==Ke)return!1;if(t.matches!==undefined)return t.matches(n);if(t.msMatchesSelector!==undefined)return t.msMatchesSelector(n);if(t.webkitMatchesSelector!==undefined)return t.webkitMatchesSelector(n);if(t.mozMatchesSelector!==undefined)return t.mozMatchesSelector(n);throw new Error("Browser lacks native selectors")}),Xe=Object.keys,Qe=function(e){return e.dom().nodeName.toLowerCase()},Ye=function(e,n){var t=e.dom();!function(e,n){for(var t=Xe(e),r=0,o=t.length;r<o;r++){var i=t[r];n(e[i],i,e)}}(n,function(
 e,n){!function(e,n,t){if(!(K(t)||V(t)||Q(t)))throw console.error("Invalid call to Attr.set. Key ",n,":: Value ",t,":: Element ",e),new Error("Attribute value was not simple");e.setAttribute(n,t+"")}(t,n,e)})},Ge=function(e){return Z(e.dom().attributes,function(e,n){return e[n.name]=n.value,e},{})},Je=function(e){var n=e.dom();return W.from(n.parentNode).map(We.fromDom)},Ze=function(e){var n=e.dom();return Y(n.childNodes,We.fromDom)},en=function(e,n){var t=e.dom().childNodes;return W.from(t[n]).map(We.fromDom)},nn=function(e){return en(e,0)},tn=function(e){return en(e,e.dom().childNodes.length-1)},rn=(function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n]}("element","offset"),function(n,t){Je(n).each(function(e){e.dom().insertBefore(t.dom(),n.dom())})}),on=function(e,n){e.dom().appendChild(n.dom())},un=function(n,e){G(e,function(e){on(n,e)})},an=function(e){var n=e.dom();null!==n.parentNode&&am
 p;n.parentNode.removeChild(n)},sn=function(e){return n=e,t=!0,We.fromDom(n.dom().cloneNode(t));var n,t},cn=function(e,n){var t,r,o,i,u=(t=e,r=n,o=We.fromTag(r),i=Ge(t),Ye(o,i),o);rn(e,u);var a=Ze(e);return un(u,a),an(e),u},fn=tinymce.util.Tools.resolve("tinymce.Env"),ln=g.DOM,dn=function(e,n,t){var r,o,i,u=ln.createFragment(),a=e.schema.getBlockElements();if(e.settings.forced_root_block&&(t=t||e.settings.forced_root_block),t&&((o=ln.create(t)).tagName===e.settings.forced_root_block&&ln.setAttribs(o,e.settings.forced_root_block_attrs),D(n.firstChild,a)||u.appendChild(o)),n)for(;r=n.firstChild;){var s=r.nodeName;i||"SPAN"===s&&"bookmark"===r.getAttribute("data-mce-type")||(i=!0),D(r,a)?(u.appendChild(r),o=null):t?(o||(o=ln.create(t),u.appendChild(o)),o.appendChild(r)):u.appendChild(r)}return e.settings.forced_root_block?i||fn.ie&&!(10<fn.ie)||o.appendChild(ln.create("br",{"data-mce-bogus&
 quot;:"1"})):u.appendChild(ln.create("br")),u},mn=g.DOM,gn=function(e,n,t,r){var o,i,u,a,s;for(u=mn.select('span[data-mce-type="bookmark"]',n),r=r||dn(e,t),(o=mn.createRng()).setStartAfter(t),o.setEndAfter(n),a=(i=o.extractContents()).firstChild;a;a=a.firstChild)if("LI"===a.nodeName&&e.dom.isEmpty(a)){mn.remove(a);break}e.dom.isEmpty(i)||mn.insertAfter(i,n),mn.insertAfter(r,n),w(e.dom,t.parentNode)&&(s=t.parentNode,v.each(u,function(e){s.parentNode.insertBefore(e,t.parentNode)}),mn.remove(s)),mn.remove(t),w(e.dom,n)&&mn.remove(n)},pn=function(e,n){for(var t=[],r=0;r<e.length;r++){var o=e[r];if(!o.isSome())return W.none();t.push(o.getOrDie())}return W.some(n.apply(null,t))},vn=function(e,n,t){if(!K(t))throw console.error("Invalid call to CSS.set. Property ",n,":: Value ",t,":: Element ",e),new Error("CSS value must be a string: "+t);e.style!==undefined&&e.style.setProper
 ty(n,t)},hn=function(e,n){on(e.item,n.list)},yn=function(i,e,u){for(var a=[],n=function(e){var n,t,r,o=(n=i,t=u,r={list:We.fromTag(t,n),item:We.fromTag("li",n)},on(r.list,r.item),r);ie(a).each(function(e){return hn(e,o)}),a.push(o)},t=0;t<e;t++)n();return a},Nn=function(c,e,f){var n=e.slice(0,f.depth);return ie(n).each(function(e){var n,t,r,o,i,u,a,s;n=e,r=c,o=f.itemAttributes,i=f.content,u=We.fromTag("li",r),Ye(u,o),un(u,i),t=u,on(n.list,t),n.item=t,s=f,Qe((a=e).list).toUpperCase()!==s.listType&&(a.list=cn(a.list,s.listType)),Ye(a.list,s.listAttributes)}),n},Sn=function(e,n,t){var r=yn(e,t.depth-n.length,t.listType);return function(e,n){ie(e).each(function(e){Ye(e.list,n.listAttributes),Ye(e.item,n.itemAttributes),un(e.item,n.content)});for(var t=0;t<e.length-1;t++)r=e[t].item,o="list-style-type",i="none",u=r.dom(),vn(u,o,i);var r,o,i,u}(r,t),pn([ie(n),oe(r)],hn),n.concat(r)},On=function(e){return 0<e.depth},Cn=function(e){re
 turn e.isSelected},bn=Object.prototype.hasOwnProperty,Ln=(a=function(e,n){return n},function(){for(var e=new Array(arguments.length),n=0;n<e.length;n++)e[n]=arguments[n];if(0===e.length)throw new Error("Can't merge zero objects");for(var t={},r=0;r<e.length;r++){var o=e[r];for(var i in o)bn.call(o,i)&&(t[i]=a(t[i],o[i]))}return t}),Tn=function(e,r){var n=r.depth-1;e[n].each(function(e){return t=e,(n=r).listType=t.listType,void(n.listAttributes=Ln({},t.listAttributes));var n,t});var t=e.slice(0,n);return t.push(W.some(r)),t},Dn=function(e){Z(e,function(e,n){return n.depth>e.length?function(e,n){for(var t=e.slice(0),r=n.depth-e.length,o=1;o<r;o++)t.push(W.none());return t.push(W.some(n)),t}(e,n):Tn(e,n)},[])},En=function(e){var n=e,t=function(){return n};return{get:t,set:function(e){n=e},clone:function(){return En(t())}}};(s=l||(l={})).OL="OL",s.UL="UL",s.DL="DL";var wn=function(e){switch(Qe(e)){case"ol":return W.so
 me(l.OL);case"ul":return W.some(l.UL);case"dl":return W.some(l.DL);default:return W.none()}},kn=function(e){return Ve(e,"OL,UL,DL")},An=function(e){return nn(e).map(kn).getOr(!1)},xn=function(e){var n=Ze(e),t=n.length+(tn(e).map(kn).getOr(!1)?-1:0);return Y(n.slice(0,t),sn)},Rn=function(u,e,a,s){var c=function(r){for(var o=[],e=1;e<arguments.length;e++)o[e-1]=arguments[e];return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];var t=o.concat(e);return r.apply(null,t)}}(In,u,e,a),f=function(r){return e.each(function(e){var n,t;n="Start"===r?e.start:e.end,t=s,n.dom()===t.dom()&&a.set("Start"===r)})};return nn(s).filter(kn).fold(function(){f("Start");var e,n,t,r,o=(e=s,n=u,t=a.get(),r=Je(e),{depth:n,isSelected:t,content:xn(e),listType:r.bind(wn).getOr(l.OL),listAttributes:r.map(Ge).getOr({}),itemAttributes:Ge(e)});f("End");var i=tn(s).filter(kn).map(c).getOr([]);return[o].concat(i)},
 c)},In=function(e,n,t,r){var o=e+1;return te(Ze(r),function(e){return kn(e)?In(o,n,t,e):Rn(o,n,t,e)})},Bn=function(i,e){return Y(e,function(e){var n,t,r,o=(n=e.content,r=(t||document).createDocumentFragment(),G(n,function(e){r.appendChild(e.dom())}),We.fromDom(r));return We.fromDom(dn(i,o.dom()))})},_n=function(e,n){return Dn(n),(t=e.contentDocument,r=n,o=Z(r,function(e,n){return n.depth>e.length?Sn(t,e,n):Nn(t,e,n)},[]),oe(o).map(function(e){return e.list})).toArray();var t,r,o},Pn=function(e){var n,t,r=Y(ve.getSelectedListItems(e),We.fromDom);return pn([ee(r,P(An)),ee((n=r,t=re.call(n,0),t.reverse(),t),P(An))],function(e,n){return{start:e,end:n}})},Mn=function(a,e,s){var n,t,r,o=(n=e,t=Pn(a),r=En(!1),Y(n,function(e){return{entries:In(0,t,r,e),sourceList:e}}));G(o,function(e){var n,t,r,o,i,u;n=e.entries,t=s,G(J(n,Cn),function(e){return function(e,n){switch(e){case"Indent":n.depth++;break;case"Outdent":n.depth--;break;case"Flatten":n.depth=0}}(t,e)})
 ,r=e.sourceList,i=a,u=e.entries,o=te(function(e,n){if(0===e.length)return[];for(var t=n(e[0]),r=[],o=[],i=0,u=e.length;i<u;i++){var a=e[i],s=n(a);s!==t&&(r.push(o),o=[]),t=s,o.push(a)}return 0!==o.length&&r.push(o),r}(u,On),function(e){return oe(e).map(On).getOr(!1)?_n(i,e):Bn(i,e)}),G(o,function(e){rn(r,e)}),an(e.sourceList)})},Un=function(e){Ve(e,"DT")&&cn(e,"DD")},Fn=function(r,e,n){G(n,"Indent"===e?Un:function(e){return n=r,void(Ve(t=e,"DD")?cn(t,"DT"):Ve(t,"DT")&&Je(t).each(function(e){return gn(n,e.dom(),t.dom())}));var n,t})},jn=function(e,n){var t=Y(ve.getSelectedDlItems(e),We.fromDom),r=Y(ve.getSelectedListRoots(e),We.fromDom);if(t.length||r.length){var o=e.selection.getBookmark();Fn(e,n,t),Mn(e,r,n),e.selection.moveToBookmark(o),e.selection.setRng(x(e.selection.getRng())),e.nodeChanged()}},Hn=function(e){jn(e,"Indent")},$n=function(e){jn(e,"Outdent")},qn=funct
 ion(e){jn(e,"Flatten")},Wn=function(t,e){v.each(e,function(e,n){t.setAttribute(n,e)})},zn=function(e,n,t){var r,o,i,u,a,s,c;r=e,o=n,u=(i=t)["list-style-type"]?i["list-style-type"]:null,r.setStyle(o,"list-style-type",u),a=e,Wn(s=n,(c=t)["list-attributes"]),v.each(a.select("li",s),function(e){Wn(e,c["list-item-attributes"])})},Kn=function(e,n,t,r){var o,i;for(o=n[t?"startContainer":"endContainer"],i=n[t?"startOffset":"endOffset"],1===o.nodeType&&(o=o.childNodes[Math.min(i,o.childNodes.length-1)]||o),!t&&L(o.nextSibling)&&(o=o.nextSibling);o.parentNode!==r;){if(T(e,o))return o;if(/^(TD|TH)$/.test(o.parentNode.nodeName))return o;o=o.parentNode}return o},Vn=function(f,l,d){void 0===d&&(d={});var e,n=f.selection.getRng(!0),m="LI",t=ve.getClosestListRootElm(f,f.selection.getStart(!0)),g=f.dom;"false"!==g.getContentEditable(f.selec
 tion.getNode())&&("DL"===(l=l.toUpperCase())&&(m="DT"),e=I(n),v.each(function(t,e,r){for(var o,i=[],u=t.dom,n=Kn(t,e,!0,r),a=Kn(t,e,!1,r),s=[],c=n;c&&(s.push(c),c!==a);c=c.nextSibling);return v.each(s,function(e){if(T(t,e))return i.push(e),void(o=null);if(u.isBlock(e)||L(e))return L(e)&&u.remove(e),void(o=null);var n=e.nextSibling;p.isBookmarkNode(e)&&(T(t,n)||!n&&e.parentNode===r)?o=null:(o||(o=u.create("p"),e.parentNode.insertBefore(o,e),i.push(o)),o.appendChild(e))}),i}(f,n,t),function(e){var n,t,r,o,i,u,a,s,c;(t=e.previousSibling)&&N(t)&&t.nodeName===l&&(r=t,o=d,i=g.getStyle(r,"list-style-type"),u=o?o["list-style-type"]:"",i===(u=null===u?"":u))?(n=t,e=g.rename(e,m),t.appendChild(e)):(n=g.create(l),e.parentNode.insertBefore(n,e),n.appendChild(e),e=g.rename(e,m)),a=g,s=e,c=["margin","margin-right","margin-bottom&quo
 t;,"margin-left","margin-top","padding","padding-right","padding-bottom","padding-left","padding-top"],v.each(c,function(e){var n;return a.setStyle(s,((n={})[e]="",n))}),zn(g,n,d),Qn(f.dom,n)}),f.selection.setRng(B(e)))},Xn=function(e,n,t){return s=t,(a=n)&&s&&N(a)&&a.nodeName===s.nodeName&&(i=n,u=t,(o=e).getStyle(i,"list-style-type",!0)===o.getStyle(u,"list-style-type",!0))&&(r=t,n.className===r.className);var r,o,i,u,a,s},Qn=function(e,n){var t,r;if(t=n.nextSibling,Xn(e,n,t)){for(;r=t.firstChild;)n.appendChild(r);e.remove(t)}if(t=n.previousSibling,Xn(e,n,t)){for(;r=t.lastChild;)n.insertBefore(r,n.firstChild);e.remove(t)}},Yn=function(n,e,t,r,o){if(e.nodeName!==r||Gn(o)){var i=I(n.selection.getRng(!0));v.each([e].concat(t),function(e){!function(e,n,t,r){if(n.nodeName!==t){var o=e.rename(n,t);zn(e,o,r)}else zn(e,n,r)}(n.dom,e,r,o)}),n.selection.
 setRng(B(i))}else qn(n)},Gn=function(e){return"list-style-type"in e},Jn={toggleList:function(e,n,t){var r=ve.getParentList(e),o=ve.getSelectedSubLists(e);t=t||{},r&&0<o.length?Yn(e,r,o,n,t):function(e,n,t,r){if(n!==e.getBody())if(n)if(n.nodeName!==t||Gn(r)){var o=I(e.selection.getRng(!0));zn(e.dom,n,r),Qn(e.dom,e.dom.rename(n,t)),e.selection.setRng(B(o))}else qn(e);else Vn(e,t,r)}(e,r,n,t)},mergeWithAdjacentLists:Qn},Zn=g.DOM,et=function(e,n){var t,r=n.parentNode;"LI"===r.nodeName&&r.firstChild===n&&((t=r.previousSibling)&&"LI"===t.nodeName?(t.appendChild(n),w(e,r)&&Zn.remove(r)):Zn.setStyle(r,"listStyleType","none")),N(r)&&(t=r.previousSibling)&&"LI"===t.nodeName&&t.appendChild(n)},nt=function(n,e){v.each(v.grep(n.select("ol,ul",e)),function(e){et(n,e)})},tt=function(e,n,t,r){var o,i,u=n.startContainer,a=n.startOffset;if(3===u.nodeType&&(t
 ?a<u.data.length:0<a))return u;for(o=e.schema.getNonEmptyElements(),1===u.nodeType&&(u=f.getNode(u,a)),i=new d(u,r),t&&E(e.dom,u)&&i.next();u=i[t?"next":"prev2"]();){if("LI"===u.nodeName&&!u.hasChildNodes())return u;if(o[u.nodeName])return u;if(3===u.nodeType&&0<u.data.length)return u}},rt=function(e,n){var t=n.childNodes;return 1===t.length&&!N(t[0])&&e.isBlock(t[0])},ot=function(e,n,t){var r,o,i,u;if(o=rt(e,t)?t.firstChild:t,rt(i=e,u=n)&&i.remove(u.firstChild,!0),!w(e,n,!0))for(;r=n.firstChild;)o.appendChild(r)},it=function(e,n,t){var r,o,i=n.parentNode;k(e,n)&&k(e,t)&&(N(t.lastChild)&&(o=t.lastChild),i===t.lastChild&&L(i.previousSibling)&&e.remove(i.previousSibling),(r=t.lastChild)&&L(r)&&n.hasChildNodes()&&e.remove(r),w(e,t,!0)&&e.$(t).empty(),ot(e,n,t),o&&t.appendChild(o),e.remove(n),w(e,i)&&am
 p;i!==e.getRoot()&&e.remove(i))},ut=function(e,n,t,r){var o,i,u,a=e.dom;if(a.isEmpty(r))i=t,u=r,(o=e).dom.$(u).empty(),it(o.dom,i,u),o.selection.setCursorLocation(u);else{var s=I(n);it(a,t,r),e.selection.setRng(B(s))}},at=function(e,n){var t,r,o,i=e.dom,u=e.selection,a=u.getStart(),s=ve.getClosestListRootElm(e,a),c=i.getParent(u.getStart(),"LI",s);if(c){if((t=c.parentNode)===e.getBody()&&w(i,t))return!0;if(r=x(u.getRng(!0)),(o=i.getParent(tt(e,r,n,s),"LI",s))&&o!==c)return n?ut(e,r,o,c):function(e,n,t,r){var o=I(n);it(e.dom,t,r);var i=B(o);e.selection.setRng(i)}(e,r,c,o),!0;if(!o&&!n)return qn(e),!0}return!1},st=function(e,n){return at(e,n)||function(o,i){var u=o.dom,e=o.selection.getStart(),a=ve.getClosestListRootElm(o,e),s=u.getParent(e,u.isBlock,a);if(s&&u.isEmpty(s)){var n=x(o.selection.getRng(!0)),c=u.getParent(tt(o,n,i,a),"LI",a);if(c)return o.undoManager.transact(function(){var e,n,t,r;n=s,t=a,r=(e=u).getPa
 rent(n.parentNode,e.isBlock,t),e.remove(n),r&&e.isEmpty(r)&&e.remove(r),Jn.mergeWithAdjacentLists(u,c.parentNode),o.selection.select(c,!0),o.selection.collapse(i)}),!0}return!1}(e,n)},ct=function(e,n){return e.selection.isCollapsed()?st(e,n):(r=(t=e).selection.getStart(),o=ve.getClosestListRootElm(t,r),!!(t.dom.getParent(r,"LI,DT,DD",o)||0<ve.getSelectedListItems(t).length)&&(t.undoManager.transact(function(){t.execCommand("Delete"),nt(t.dom,t.getBody())}),!0));var t,r,o},ft=function(n){n.on("keydown",function(e){e.keyCode===m.BACKSPACE?ct(n,!1)&&e.preventDefault():e.keyCode===m.DELETE&&ct(n,!0)&&e.preventDefault()})},lt=ct,dt=function(n){return{backspaceDelete:function(e){lt(n,e)}}},mt=function(n,t){return function(){var e=n.dom.getParent(n.selection.getStart(),"UL,OL,DL");return e&&e.nodeName===t}},gt=function(t){t.on("BeforeExecCommand",function(e){var n=e.command.toLowerC
 ase();"indent"===n?Hn(t):"outdent"===n&&$n(t)}),t.addCommand("InsertUnorderedList",function(e,n){Jn.toggleList(t,"UL",n)}),t.addCommand("InsertOrderedList",function(e,n){Jn.toggleList(t,"OL",n)}),t.addCommand("InsertDefinitionList",function(e,n){Jn.toggleList(t,"DL",n)}),t.addCommand("RemoveList",function(){qn(t)}),t.addQueryStateHandler("InsertUnorderedList",mt(t,"UL")),t.addQueryStateHandler("InsertOrderedList",mt(t,"OL")),t.addQueryStateHandler("InsertDefinitionList",mt(t,"DL"))},pt=function(e){return e.getParam("lists_indent_on_tab",!0)},vt=function(e){var n;pt(e)&&(n=e).on("keydown",function(e){e.keyCode!==m.TAB||m.metaKeyPressed(e)||ve.isList(n)&&(e.preventDefault(),n.undoManager.transact(function(){e.shiftKey?$n(n):Hn(n)}))}),ft(e)},ht=function(n,i){return function(e){var o=e.control;n
 .on("NodeChange",function(e){var n=function(e,n){for(var t=0;t<e.length;t++)if(n(e[t]))return t;return-1}(e.parents,b),t=-1!==n?e.parents.slice(0,n):e.parents,r=v.grep(t,N);o.active(0<r.length&&r[0].nodeName===i)})}},yt=function(e){var n,t,r;t="advlist",r=(n=e).settings.plugins?n.settings.plugins:"",-1===v.inArray(r.split(/[ ,]/),t)&&(e.addButton("numlist",{active:!1,title:"Numbered list",cmd:"InsertOrderedList",onPostRender:ht(e,"OL")}),e.addButton("bullist",{active:!1,title:"Bullet list",cmd:"InsertUnorderedList",onPostRender:ht(e,"UL")})),e.addButton("indent",{icon:"indent",title:"Increase indent",cmd:"Indent"})};c.add("lists",function(e){return vt(e),yt(e),gt(e),dt(e)})}();
</del><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of file
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+!function(u){"use strict";var e,n,t,r,o,i,a,s,c=tinymce.util.Tools.resolve("tinymce.PluginManager"),f=tinymce.util.Tools.resolve("tinymce.dom.RangeUtils"),d=tinymce.util.Tools.resolve("tinymce.dom.TreeWalker"),l=tinymce.util.Tools.resolve("tinymce.util.VK"),p=tinymce.util.Tools.resolve("tinymce.dom.BookmarkManager"),v=tinymce.util.Tools.resolve("tinymce.util.Tools"),m=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),g=function(e){return e&&"BR"===e.nodeName},h=function(e){return e&&3===e.nodeType},y=function(e){return e&&/^(OL|UL|DL)$/.test(e.nodeName)},N=function(e){return e&&/^(OL|UL)$/.test(e.nodeName)},S=function(e){return e&&/^(DT|DD)$/.test(e.nodeName)},C=function(e){return e&&/^(LI|DT|DD)$/.test(e.nodeName)},O=function(e){return e&&/^(
 TH|TD)$/.test(e.nodeName)},b=g,T=function(e,n){return n&&!!e.schema.getTextBlockElements()[n.nodeName]},D=function(e,n){return e&&e.nodeName in n},L=function(e,n){return!!g(n)&&!(!e.isBlock(n.nextSibling)||g(n.previousSibling))},E=function(e,n,t){var r=e.isEmpty(n);return!(t&&0<e.select("span[data-mce-type=bookmark]",n).length)&&r},w=function(e,n){return e.isChildOf(n,e.getRoot())},k=function(e,n){if(h(e))return{container:e,offset:n};var t=f.getNode(e,n);return h(t)?{container:t,offset:n>=e.childNodes.length?t.data.length:0}:t.previousSibling&&h(t.previousSibling)?{container:t.previousSibling,offset:t.previousSibling.data.length}:t.nextSibling&&h(t.nextSibling)?{container:t.nextSibling,offset:0}:{container:e,offset:n}},A=function(e){var n=e.cloneRange(),t=k(e.startContainer,e.startOffset);n.setStart(t.container,t.offset);var r=k(e.endContainer,e.endOffset);return n.setEnd(r.container,r.offset),n},x=m.DOM,R=funct
 ion(o){var i={},e=function(e){var n,t,r;t=o[e?"startContainer":"endContainer"],r=o[e?"startOffset":"endOffset"],1===t.nodeType&&(n=x.create("span",{"data-mce-type":"bookmark"}),t.hasChildNodes()?(r=Math.min(r,t.childNodes.length-1),e?t.insertBefore(n,t.childNodes[r]):x.insertAfter(n,t.childNodes[r])):t.appendChild(n),t=n,r=0),i[e?"startContainer":"endContainer"]=t,i[e?"startOffset":"endOffset"]=r};return e(!0),o.collapsed||e(),i},I=function(o){function e(e){var n,t,r;n=r=o[e?"startContainer":"endContainer"],t=o[e?"startOffset":"endOffset"],n&&(1===n.nodeType&&(t=function(e){for(var n=e.parentNode.firstChild,t=0;n;){if(n===e)return t;1===n.nodeType&&"bookmark"===n.getAttribute("data-mce-type")||t++,n=n.nextSibling}return-1}(n),n=n.parentNode,x.remove(r),!n.hasChildNodes()&&x.is
 Block(n)&&n.appendChild(x.create("br"))),o[e?"startContainer":"endContainer"]=n,o[e?"startOffset":"endOffset"]=t)}e(!0),e();var n=x.createRng();return n.setStart(o.startContainer,o.startOffset),o.endContainer&&n.setEnd(o.endContainer,o.endOffset),A(n)},_=function(e){return function(){return e}},B=function(t){return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return!t.apply(null,e)}},P=_(!1),M=_(!0),U=P,F=M,j=function(){return H},H=(r={fold:function(e,n){return e()},is:U,isSome:U,isNone:F,getOr:t=function(e){return e},getOrThunk:n=function(e){return e()},getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:function(){return null},getOrUndefined:function(){return undefined},or:t,orThunk:n,map:j,ap:j,each:function(){},bind:j,flatten:j,exists:U,forall:F,filter:j,equals:e=function(e){return e.isNone()},equals_:e,toArray:function(){return[]},toString:_(&
 quot;none()")},Object.freeze&&Object.freeze(r),r),$=function(t){var e=function(){return t},n=function(){return o},r=function(e){return e(t)},o={fold:function(e,n){return n(t)},is:function(e){return t===e},isSome:F,isNone:U,getOr:e,getOrThunk:e,getOrDie:e,getOrNull:e,getOrUndefined:e,or:n,orThunk:n,map:function(e){return $(e(t))},ap:function(e){return e.fold(j,function(e){return $(e(t))})},each:function(e){e(t)},bind:r,flatten:e,exists:r,forall:r,filter:function(e){return e(t)?o:H},equals:function(e){return e.is(t)},equals_:function(e,n){return e.fold(U,function(e){return n(t,e)})},toArray:function(){return[t]},toString:function(){return"some("+t+")"}};return o},q={some:$,none:j,from:function(e){return null===e||e===undefined?H:$(e)}},W=function(n){return function(e){return function(e){if(null===e)return"null";var n=typeof e;return"object"===n&&Array.prototype.isPrototypeOf(e)?"array":"object"===n&&a
 mp;String.prototype.isPrototypeOf(e)?"string":n}(e)===n}},z=W("string"),K=W("boolean"),V=W("function"),X=W("number"),Q=function(e,n){for(var t=e.length,r=new Array(t),o=0;o<t;o++){var i=e[o];r[o]=n(i,o,e)}return r},Y=function(e,n){for(var t=0,r=e.length;t<r;t++)n(e[t],t,e)},G=function(e,n){for(var t=[],r=0,o=e.length;r<o;r++){var i=e[r];n(i,r,e)&&t.push(i)}return t},J=function(e,n,t){return Y(e,function(e){t=n(t,e)}),t},Z=function(e,n){for(var t=0,r=e.length;t<r;t++){var o=e[t];if(n(o,t,e))return q.some(o)}return q.none()},ee=Array.prototype.push,ne=function(e,n){return function(e){for(var n=[],t=0,r=e.length;t<r;++t){if(!Array.prototype.isPrototypeOf(e[t]))throw new Error("Arr.flatten item "+t+" was not an array, input: "+e);ee.apply(n,e[t])}return n}(Q(e,n))},te=Array.prototype.slice,re=function(e){return 0===e.length?q.none():q.some(e[0])},oe=function(e){return 0===e.length?q.none():q.som
 e(e[e.length-1])},ie=(V(Array.from)&&Array.from,"undefined"!=typeof u.window?u.window:Function("return this;")()),ue=function(e,n){return function(e,n){for(var t=n!==undefined&&null!==n?n:ie,r=0;r<e.length&&t!==undefined&&null!==t;++r)t=t[e[r]];return t}(e.split("."),n)},ae=function(e,n){var t=ue(e,n);if(t===undefined||null===t)throw e+" not available on this browser";return t},se=function(e){var n,t=ue("ownerDocument.defaultView",e);return(n=t,ae("HTMLElement",n)).prototype.isPrototypeOf(e)},ce=tinymce.util.Tools.resolve("tinymce.dom.DomQuery"),fe=function(e){var n=e.selection.getStart(!0);return e.dom.getParent(n,"OL,UL,DL",le(e,n))},de=function(e){var t,n,r,o=e.selection.getSelectedBlocks();return v.grep((t=e,n=o,r=v.map(n,function(e){var n=t.dom.getParent(e,"li,dd,dt",le(t,e));return n||e}),ce.unique(r)),function(e){return C(e)})},le=function(e,n){var t=e.
 dom.getParents(n,"TD,TH");return 0<t.length?t[0]:e.getBody()},me=function(e,n){var t=e.dom.getParents(n,"ol,ul",le(e,n));return oe(t)},ge=function(n,e){var t=Q(e,function(e){return me(n,e).getOr(e)});return ce.unique(t)},pe={isList:function(e){var n=fe(e);return se(n)},getParentList:fe,getSelectedSubLists:function(e){var n,t,r,o=fe(e),i=e.selection.getSelectedBlocks();return r=i,(t=o)&&1===r.length&&r[0]===t?(n=o,v.grep(n.querySelectorAll("ol,ul,dl"),function(e){return y(e)})):v.grep(i,function(e){return y(e)&&o!==e})},getSelectedListItems:de,getClosestListRootElm:le,getSelectedDlItems:function(e){return G(de(e),S)},getSelectedListRoots:function(e){var n,t,r,o=(t=me(n=e,n.selection.getStart()),r=G(n.selection.getSelectedBlocks(),N),t.toArray().concat(r));return ge(e,o)}},ve=function(e){if(null===e||e===undefined)throw new Error("Node cannot be null or undefined");return{dom:_(e)}},he={fromHtml:function(e,n){var t=(n|
 |u.document).createElement("div");if(t.innerHTML=e,!t.hasChildNodes()||1<t.childNodes.length)throw u.console.error("HTML does not have a single root node",e),new Error("HTML must have a single root node");return ve(t.childNodes[0])},fromTag:function(e,n){var t=(n||u.document).createElement(e);return ve(t)},fromText:function(e,n){var t=(n||u.document).createTextNode(e);return ve(t)},fromDom:ve,fromPoint:function(e,n,t){var r=e.dom();return q.from(r.elementFromPoint(n,t)).map(ve)}},ye=function(e,n){for(var t=[],r=0;r<e.length;r++){var o=e[r];if(!o.isSome())return q.none();t.push(o.getOrDie())}return q.some(n.apply(null,t))},Ne=Object.keys,Se=function(){return ae("Node")},Ce=function(e,n,t){return 0!=(e.compareDocumentPosition(n)&t)},Oe=function(e,n){return Ce(e,n,Se().DOCUMENT_POSITION_CONTAINED_BY)},be=function(e,n){var t=function(e,n){for(var t=0;t<e.length;t++){var r=e[t];if(r.test(n))return r}return undefined}(e,n);if(!t)return{
 major:0,minor:0};var r=function(e){return Number(n.replace(t,"$"+e))};return De(r(1),r(2))},Te=function(){return De(0,0)},De=function(e,n){return{major:e,minor:n}},Le={nu:De,detect:function(e,n){var t=String(n).toLowerCase();return 0===e.length?Te():be(e,t)},unknown:Te},Ee="Firefox",we=function(e,n){return function(){return n===e}},ke=function(e){var n=e.current;return{current:n,version:e.version,isEdge:we("Edge",n),isChrome:we("Chrome",n),isIE:we("IE",n),isOpera:we("Opera",n),isFirefox:we(Ee,n),isSafari:we("Safari",n)}},Ae={unknown:function(){return ke({current:undefined,version:Le.unknown()})},nu:ke,edge:_("Edge"),chrome:_("Chrome"),ie:_("IE"),opera:_("Opera"),firefox:_(Ee),safari:_("Safari")},xe="Windows",Re="Android",Ie="Solaris",_e="FreeBSD",Be=function(e,n){return function(){return n===e}},Pe=function(e){var n=e.current
 ;return{current:n,version:e.version,isWindows:Be(xe,n),isiOS:Be("iOS",n),isAndroid:Be(Re,n),isOSX:Be("OSX",n),isLinux:Be("Linux",n),isSolaris:Be(Ie,n),isFreeBSD:Be(_e,n)}},Me={unknown:function(){return Pe({current:undefined,version:Le.unknown()})},nu:Pe,windows:_(xe),ios:_("iOS"),android:_(Re),linux:_("Linux"),osx:_("OSX"),solaris:_(Ie),freebsd:_(_e)},Ue=function(e,n){var t=String(n).toLowerCase();return Z(e,function(e){return e.search(t)})},Fe=function(e,t){return Ue(e,t).map(function(e){var n=Le.detect(e.versionRegexes,t);return{current:e.name,version:n}})},je=function(e,t){return Ue(e,t).map(function(e){var n=Le.detect(e.versionRegexes,t);return{current:e.name,version:n}})},He=function(e,n){return-1!==e.indexOf(n)},$e=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,qe=function(n){return function(e){return He(e,n)}},We=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(e){return He(e,"edg
 e/")&&He(e,"chrome")&&He(e,"safari")&&He(e,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,$e],search:function(e){return He(e,"chrome")&&!He(e,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(e){return He(e,"msie")||He(e,"trident")}},{name:"Opera",versionRegexes:[$e,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:qe("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:qe("firefox")},{name:"Safari",versionRegexes:[$e,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(e){return(He(e,"safari")||He(e,"mobile/"))&&He(e,"applewebkit")}}],ze=[{name:"Windows",search:qe("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).
 */]},{name:"iOS",search:function(e){return He(e,"iphone")||He(e,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:qe("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:qe("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:qe("linux"),versionRegexes:[]},{name:"Solaris",search:qe("sunos"),versionRegexes:[]},{name:"FreeBSD",search:qe("freebsd"),versionRegexes:[]}],Ke={browsers:_(We),oses:_(ze)},Ve=function(e){var n,t,r,o,i,u,a,s,c,f,d,l=Ke.browsers(),m=Ke.oses(),g=Fe(l,e).fold(Ae.unknown,Ae.nu),p=je(m,e).fold(Me.unknown,Me.nu);return{browser:g,os:p,deviceType:(t=g,r=e,o=(n=p).isiOS()&&!0===/ipad/i.test(r),i=n.isiOS()&&!o,u=n.isAndroid()&&3===n.version.major,a=n.isAndro
 id()&&4===n.version.major,s=o||u||a&&!0===/mobile/i.test(r),c=n.isiOS()||n.isAndroid(),f=c&&!s,d=t.isSafari()&&n.isiOS()&&!1===/safari/i.test(r),{isiPad:_(o),isiPhone:_(i),isTablet:_(s),isPhone:_(f),isTouch:_(c),isAndroid:n.isAndroid,isiOS:n.isiOS,isWebView:_(d)})}},Xe={detect:(o=function(){var e=u.navigator.userAgent;return Ve(e)},a=!1,function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return a||(a=!0,i=o.apply(null,e)),i})},Qe=(u.Node.ATTRIBUTE_NODE,u.Node.CDATA_SECTION_NODE,u.Node.COMMENT_NODE,u.Node.DOCUMENT_NODE,u.Node.DOCUMENT_TYPE_NODE,u.Node.DOCUMENT_FRAGMENT_NODE,u.Node.ELEMENT_NODE),Ye=(u.Node.TEXT_NODE,u.Node.PROCESSING_INSTRUCTION_NODE,u.Node.ENTITY_REFERENCE_NODE,u.Node.ENTITY_NODE,u.Node.NOTATION_NODE,Qe),Ge=function(e,n){return e.dom()===n.dom()},Je=Xe.detect().browser.isIE()?function(e,n){return Oe(e.dom(),n.dom())}:function(e,n){var t=e.dom(),r=n.dom();return t!==r&&t.contains(r)},Ze=function(e,n){
 var t=e.dom();if(t.nodeType!==Ye)return!1;if(t.matches!==undefined)return t.matches(n);if(t.msMatchesSelector!==undefined)return t.msMatchesSelector(n);if(t.webkitMatchesSelector!==undefined)return t.webkitMatchesSelector(n);if(t.mozMatchesSelector!==undefined)return t.mozMatchesSelector(n);throw new Error("Browser lacks native selectors")},en=function(e){var n=e.dom();return q.from(n.parentNode).map(he.fromDom)},nn=function(e){var n=e.dom();return Q(n.childNodes,he.fromDom)},tn=function(e,n){var t=e.dom().childNodes;return q.from(t[n]).map(he.fromDom)},rn=function(e){return tn(e,0)},on=function(e){return tn(e,e.dom().childNodes.length-1)},un=(function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n]}("element","offset"),function(n,t){en(n).each(function(e){e.dom().insertBefore(t.dom(),n.dom())})}),an=function(e,n){e.dom().appendChild(n.dom())},sn=function(n,e){Y(e,function(e){an(n,e)})},cn=function(e){var n=e.dom();null!==n.parentNode&amp
 ;&n.parentNode.removeChild(n)},fn=function(e){return e.dom().nodeName.toLowerCase()},dn=function(e,n){var t=e.dom();!function(e,n){for(var t=Ne(e),r=0,o=t.length;r<o;r++){var i=t[r];n(e[i],i,e)}}(n,function(e,n){!function(e,n,t){if(!(z(t)||K(t)||X(t)))throw u.console.error("Invalid call to Attr.set. Key ",n,":: Value ",t,":: Element ",e),new Error("Attribute value was not simple");e.setAttribute(n,t+"")}(t,n,e)})},ln=function(e){return J(e.dom().attributes,function(e,n){return e[n.name]=n.value,e},{})},mn=function(e,n,t){if(!z(t))throw u.console.error("Invalid call to CSS.set. Property ",n,":: Value ",t,":: Element ",e),new Error("CSS value must be a string: "+t);e.style!==undefined&&e.style.setProperty(n,t)},gn=function(e){return n=e,t=!0,he.fromDom(n.dom().cloneNode(t));var n,t},pn=function(e,n){var t,r,o,i,u=(t=e,r=n,o=he.fromTag(r),i=ln(t),dn(o,i),o);un(e,u);var a=nn(e);retur
 n sn(u,a),cn(e),u},vn=function(e,n){an(e.item,n.list)},hn=function(f,e,d){var n=e.slice(0,d.depth);return oe(n).each(function(e){var n,t,r,o,i,u,a,s,c=(n=f,t=d.itemAttributes,r=d.content,o=he.fromTag("li",n),dn(o,t),sn(o,r),o);u=c,an((i=e).list,u),i.item=u,s=d,fn((a=e).list)!==s.listType&&(a.list=pn(a.list,s.listType)),dn(a.list,s.listAttributes)}),n},yn=function(e,n,t){var r,o=function(e,n,t){for(var r,o,i,u=[],a=0;a<t;a++)u.push((r=e,o=n.listType,i={list:he.fromTag(o,r),item:he.fromTag("li",r)},an(i.list,i.item),i));return u}(e,t,t.depth-n.length);return function(e){for(var n=1;n<e.length;n++)vn(e[n-1],e[n])}(o),function(e,n){for(var t=0;t<e.length-1;t++)r=e[t].item,o="list-style-type",i="none",u=r.dom(),mn(u,o,i);var r,o,i,u;oe(e).each(function(e){dn(e.list,n.listAttributes),dn(e.item,n.itemAttributes),sn(e.item,n.content)})}(o,t),r=o,ye([oe(n),re(r)],vn),n.concat(o)},Nn=function(e){return Ze(e,"OL,UL")},Sn=functi
 on(e){return rn(e).map(Nn).getOr(!1)},Cn=function(e){return 0<e.depth},On=function(e){return e.isSelected},bn=function(e){var n=nn(e),t=on(e).map(Nn).getOr(!1)?n.slice(0,-1):n;return Q(t,gn)},Tn=Object.prototype.hasOwnProperty,Dn=(s=function(e,n){return n},function(){for(var e=new Array(arguments.length),n=0;n<e.length;n++)e[n]=arguments[n];if(0===e.length)throw new Error("Can't merge zero objects");for(var t={},r=0;r<e.length;r++){var o=e[r];for(var i in o)Tn.call(o,i)&&(t[i]=s(t[i],o[i]))}return t}),Ln=function(n){Y(n,function(r,e){(function(e,n){for(var t=e[n].depth,r=n-1;0<=r;r--){if(e[r].depth===t)return q.some(e[r]);if(e[r].depth<t)break}return q.none()})(n,e).each(function(e){var n,t;t=e,(n=r).listType=t.listType,n.listAttributes=Dn({},t.listAttributes)})})},En=function(e){var n=e,t=function(){return n};return{get:t,set:function(e){n=e},clone:function(){return En(t())}}},wn=function(i,u,a,s){return rn(s).filter(Nn).fold(function(){u.each(funct
 ion(e){Ge(e.start,s)&&a.set(!0)});var n,t,r,e=(n=s,t=i,r=a.get(),en(n).map(function(e){return{depth:t,isSelected:r,content:bn(n),itemAttributes:ln(n),listAttributes:ln(e),listType:fn(e)}}));u.each(function(e){Ge(e.end,s)&&a.set(!1)});var o=on(s).filter(Nn).map(function(e){return kn(i,u,a,e)}).getOr([]);return e.toArray().concat(o)},function(e){return kn(i,u,a,e)})},kn=function(n,t,r,e){return ne(nn(e),function(e){return(Nn(e)?kn:wn)(n+1,t,r,e)})},An=tinymce.util.Tools.resolve("tinymce.Env"),xn=function(e,n){var t,r,o,i,u=e.dom,a=e.schema.getBlockElements(),s=u.createFragment();if(e.settings.forced_root_block&&(o=e.settings.forced_root_block),o&&((r=u.create(o)).tagName===e.settings.forced_root_block&&u.setAttribs(r,e.settings.forced_root_block_attrs),D(n.firstChild,a)||s.appendChild(r)),n)for(;t=n.firstChild;){var c=t.nodeName;i||"SPAN"===c&&"bookmark"===t.getAttribute("data-mce-type")||(i=!0),D(
 t,a)?(s.appendChild(t),r=null):o?(r||(r=u.create(o),s.appendChild(r)),r.appendChild(t)):s.appendChild(t)}return e.settings.forced_root_block?i||An.ie&&!(10<An.ie)||r.appendChild(u.create("br",{"data-mce-bogus":"1"})):s.appendChild(u.create("br")),s},Rn=function(i,e){return Q(e,function(e){var n,t,r,o=(n=e.content,r=(t||u.document).createDocumentFragment(),Y(n,function(e){r.appendChild(e.dom())}),he.fromDom(r));return he.fromDom(xn(i,o.dom()))})},In=function(e,n){return Ln(n),(t=e.contentDocument,r=n,o=J(r,function(e,n){return n.depth>e.length?yn(t,e,n):hn(t,e,n)},[]),re(o).map(function(e){return e.list})).toArray();var t,r,o},_n=function(e){var n,t,r=Q(pe.getSelectedListItems(e),he.fromDom);return ye([Z(r,B(Sn)),Z((n=r,t=te.call(n,0),t.reverse(),t),B(Sn))],function(e,n){return{start:e,end:n}})},Bn=function(a,e,s){var n,t,r,o=(n=e,t=_n(a),r=En(!1),Q(n,function(e){return{sourceList:e,entries:kn(0,t,r,e)}}));Y(o,function(e){var n,t,
 r,o,i,u;n=e.entries,t=s,Y(G(n,On),function(e){return function(e,n){switch(e){case"Indent":n.depth++;break;case"Outdent":n.depth--;break;case"Flatten":n.depth=0}}(t,e)}),r=e.sourceList,i=a,u=e.entries,o=ne(function(e,n){if(0===e.length)return[];for(var t=n(e[0]),r=[],o=[],i=0,u=e.length;i<u;i++){var a=e[i],s=n(a);s!==t&&(r.push(o),o=[]),t=s,o.push(a)}return 0!==o.length&&r.push(o),r}(u,Cn),function(e){return re(e).map(Cn).getOr(!1)?In(i,e):Rn(i,e)}),Y(o,function(e){un(r,e)}),cn(e.sourceList)})},Pn=m.DOM,Mn=function(e,n,t){var r,o,i,u,a,s;for(i=Pn.select('span[data-mce-type="bookmark"]',n),a=xn(e,t),(r=Pn.createRng()).setStartAfter(t),r.setEndAfter(n),u=(o=r.extractContents()).firstChild;u;u=u.firstChild)if("LI"===u.nodeName&&e.dom.isEmpty(u)){Pn.remove(u);break}e.dom.isEmpty(o)||Pn.insertAfter(o,n),Pn.insertAfter(a,n),E(e.dom,t.parentNode)&&(s=t.parentNode,v.each(i,function(e){s.parentNode.insertBefo
 re(e,t.parentNode)}),Pn.remove(s)),Pn.remove(t),E(e.dom,n)&&Pn.remove(n)},Un=function(e){Ze(e,"DT")&&pn(e,"DD")},Fn=function(r,e,n){Y(n,"Indent"===e?Un:function(e){return n=r,void(Ze(t=e,"DD")?pn(t,"DT"):Ze(t,"DT")&&en(t).each(function(e){return Mn(n,e.dom(),t.dom())}));var n,t})},jn=function(e,n){var t=Q(pe.getSelectedListRoots(e),he.fromDom),r=Q(pe.getSelectedDlItems(e),he.fromDom),o=!1;if(t.length||r.length){var i=e.selection.getBookmark();Bn(e,t,n),Fn(e,n,r),e.selection.moveToBookmark(i),e.selection.setRng(A(e.selection.getRng())),e.nodeChanged(),o=!0}return o},Hn=function(e){return jn(e,"Indent")},$n=function(e){return jn(e,"Outdent")},qn=function(e){return jn(e,"Flatten")},Wn=function(t,e){v.each(e,function(e,n){t.setAttribute(n,e)})},zn=function(e,n,t){var r,o,i,u,a,s,c;r=e,o=n,u=(i=t)["list-style-type"]?i["list-style-type"]:null,r.setStyle(o,&
 quot;list-style-type",u),a=e,Wn(s=n,(c=t)["list-attributes"]),v.each(a.select("li",s),function(e){Wn(e,c["list-item-attributes"])})},Kn=function(e,n,t,r){var o,i;for(o=n[t?"startContainer":"endContainer"],i=n[t?"startOffset":"endOffset"],1===o.nodeType&&(o=o.childNodes[Math.min(i,o.childNodes.length-1)]||o),!t&&b(o.nextSibling)&&(o=o.nextSibling);o.parentNode!==r;){if(T(e,o))return o;if(/^(TD|TH)$/.test(o.parentNode.nodeName))return o;o=o.parentNode}return o},Vn=function(f,d,l){void 0===l&&(l={});var e,n=f.selection.getRng(!0),m="LI",t=pe.getClosestListRootElm(f,f.selection.getStart(!0)),g=f.dom;"false"!==g.getContentEditable(f.selection.getNode())&&("DL"===(d=d.toUpperCase())&&(m="DT"),e=R(n),v.each(function(t,e,r){for(var o,i=[],u=t.dom,n=Kn(t,e,!0,r),a=Kn(t,e,!1,r),s=[],c=n;c&&(s.push(c),c!==a);c=c.nextSibling);
 return v.each(s,function(e){if(T(t,e))return i.push(e),void(o=null);if(u.isBlock(e)||b(e))return b(e)&&u.remove(e),void(o=null);var n=e.nextSibling;p.isBookmarkNode(e)&&(T(t,n)||!n&&e.parentNode===r)?o=null:(o||(o=u.create("p"),e.parentNode.insertBefore(o,e),i.push(o)),o.appendChild(e))}),i}(f,n,t),function(e){var n,t,r,o,i,u,a,s,c;(t=e.previousSibling)&&y(t)&&t.nodeName===d&&(r=t,o=l,i=g.getStyle(r,"list-style-type"),u=o?o["list-style-type"]:"",i===(u=null===u?"":u))?(n=t,e=g.rename(e,m),t.appendChild(e)):(n=g.create(d),e.parentNode.insertBefore(n,e),n.appendChild(e),e=g.rename(e,m)),a=g,s=e,c=["margin","margin-right","margin-bottom","margin-left","margin-top","padding","padding-right","padding-bottom","padding-left","padding-top"],v.each(c,function(e){var n;return a.setStyle(s,((n={})[e
 ]="",n))}),zn(g,n,l),Qn(f.dom,n)}),f.selection.setRng(I(e)))},Xn=function(e,n,t){return s=t,(a=n)&&s&&y(a)&&a.nodeName===s.nodeName&&(i=n,u=t,(o=e).getStyle(i,"list-style-type",!0)===o.getStyle(u,"list-style-type",!0))&&(r=t,n.className===r.className);var r,o,i,u,a,s},Qn=function(e,n){var t,r;if(t=n.nextSibling,Xn(e,n,t)){for(;r=t.firstChild;)n.appendChild(r);e.remove(t)}if(t=n.previousSibling,Xn(e,n,t)){for(;r=t.lastChild;)n.insertBefore(r,n.firstChild);e.remove(t)}},Yn=function(n,e,t,r,o){if(e.nodeName!==r||Gn(o)){var i=R(n.selection.getRng(!0));v.each([e].concat(t),function(e){!function(e,n,t,r){if(n.nodeName!==t){var o=e.rename(n,t);zn(e,o,r)}else zn(e,n,r)}(n.dom,e,r,o)}),n.selection.setRng(I(i))}else qn(n)},Gn=function(e){return"list-style-type"in e},Jn={toggleList:function(e,n,t){var r=pe.getParentList(e),o=pe.getSelectedSubLists(e);t=t||{},r&&0<o.length?Yn(e,r,o,n,t):function(e,n,t,r){
 if(n!==e.getBody())if(n)if(n.nodeName!==t||Gn(r)){var o=R(e.selection.getRng(!0));zn(e.dom,n,r),Qn(e.dom,e.dom.rename(n,t)),e.selection.setRng(I(o))}else qn(e);else Vn(e,t,r)}(e,r,n,t)},mergeWithAdjacentLists:Qn},Zn=m.DOM,et=function(e,n){var t,r=n.parentNode;"LI"===r.nodeName&&r.firstChild===n&&((t=r.previousSibling)&&"LI"===t.nodeName?(t.appendChild(n),E(e,r)&&Zn.remove(r)):Zn.setStyle(r,"listStyleType","none")),y(r)&&(t=r.previousSibling)&&"LI"===t.nodeName&&t.appendChild(n)},nt=function(n,e){v.each(v.grep(n.select("ol,ul",e)),function(e){et(n,e)})},tt=function(e,n,t,r){var o,i,u=n.startContainer,a=n.startOffset;if(3===u.nodeType&&(t?a<u.data.length:0<a))return u;for(o=e.schema.getNonEmptyElements(),1===u.nodeType&&(u=f.getNode(u,a)),i=new d(u,r),t&&L(e.dom,u)&&i.next();u=i[t?"next":"prev2"]();){if("LI&q
 uot;===u.nodeName&&!u.hasChildNodes())return u;if(o[u.nodeName])return u;if(3===u.nodeType&&0<u.data.length)return u}},rt=function(e,n){var t=n.childNodes;return 1===t.length&&!y(t[0])&&e.isBlock(t[0])},ot=function(e,n,t){var r,o,i,u;if(o=rt(e,t)?t.firstChild:t,rt(i=e,u=n)&&i.remove(u.firstChild,!0),!E(e,n,!0))for(;r=n.firstChild;)o.appendChild(r)},it=function(n,e,t){var r,o,i=e.parentNode;if(w(n,e)&&w(n,t)){y(t.lastChild)&&(o=t.lastChild),i===t.lastChild&&b(i.previousSibling)&&n.remove(i.previousSibling),(r=t.lastChild)&&b(r)&&e.hasChildNodes()&&n.remove(r),E(n,t,!0)&&n.$(t).empty(),ot(n,e,t),o&&t.appendChild(o);var u=Je(he.fromDom(t),he.fromDom(e))?n.getParents(e,y,t):[];n.remove(e),Y(u,function(e){E(n,e)&&e!==n.getRoot()&&n.remove(e)})}},ut=function(e,n,t,r){var o,i,u,a=e.dom;if(a.isEmpty(r))i=t,u=r,(o=e).dom.$(u).empty(),it(o.dom,i,u),o.selection.set
 CursorLocation(u);else{var s=R(n);it(a,t,r),e.selection.setRng(I(s))}},at=function(e,n){var t,r,o,i=e.dom,u=e.selection,a=u.getStart(),s=pe.getClosestListRootElm(e,a),c=i.getParent(u.getStart(),"LI",s);if(c){if((t=c.parentNode)===e.getBody()&&E(i,t))return!0;if(r=A(u.getRng(!0)),(o=i.getParent(tt(e,r,n,s),"LI",s))&&o!==c)return n?ut(e,r,o,c):function(e,n,t,r){var o=R(n);it(e.dom,t,r);var i=I(o);e.selection.setRng(i)}(e,r,c,o),!0;if(!o&&!n)return qn(e),!0}return!1},st=function(e,n){return at(e,n)||function(o,i){var u=o.dom,e=o.selection.getStart(),a=pe.getClosestListRootElm(o,e),s=u.getParent(e,u.isBlock,a);if(s&&u.isEmpty(s)){var n=A(o.selection.getRng(!0)),c=u.getParent(tt(o,n,i,a),"LI",a);if(c)return o.undoManager.transact(function(){var e,n,t,r;n=s,t=a,r=(e=u).getParent(n.parentNode,e.isBlock,t),e.remove(n),r&&e.isEmpty(r)&&e.remove(r),Jn.mergeWithAdjacentLists(u,c.parentNode),o.selection.select(c,!0),o
 .selection.collapse(i)}),!0}return!1}(e,n)},ct=function(e,n){return e.selection.isCollapsed()?st(e,n):(r=(t=e).selection.getStart(),o=pe.getClosestListRootElm(t,r),!!(t.dom.getParent(r,"LI,DT,DD",o)||0<pe.getSelectedListItems(t).length)&&(t.undoManager.transact(function(){t.execCommand("Delete"),nt(t.dom,t.getBody())}),!0));var t,r,o},ft=function(n){n.on("keydown",function(e){e.keyCode===l.BACKSPACE?ct(n,!1)&&e.preventDefault():e.keyCode===l.DELETE&&ct(n,!0)&&e.preventDefault()})},dt=ct,lt=function(n){return{backspaceDelete:function(e){dt(n,e)}}},mt=function(n,t){return function(){var e=n.dom.getParent(n.selection.getStart(),"UL,OL,DL");return e&&e.nodeName===t}},gt=function(t){t.on("BeforeExecCommand",function(e){var n=e.command.toLowerCase();"indent"===n?Hn(t):"outdent"===n&&$n(t)}),t.addCommand("InsertUnorderedList",function(e,n){Jn.toggleList(t,&quot
 ;UL",n)}),t.addCommand("InsertOrderedList",function(e,n){Jn.toggleList(t,"OL",n)}),t.addCommand("InsertDefinitionList",function(e,n){Jn.toggleList(t,"DL",n)}),t.addCommand("RemoveList",function(){qn(t)}),t.addQueryStateHandler("InsertUnorderedList",mt(t,"UL")),t.addQueryStateHandler("InsertOrderedList",mt(t,"OL")),t.addQueryStateHandler("InsertDefinitionList",mt(t,"DL"))},pt=function(e){return e.getParam("lists_indent_on_tab",!0)},vt=function(e){var n;pt(e)&&(n=e).on("keydown",function(e){e.keyCode!==l.TAB||l.metaKeyPressed(e)||n.undoManager.transact(function(){(e.shiftKey?$n(n):Hn(n))&&e.preventDefault()})}),ft(e)},ht=function(n,i){return function(e){var o=e.control;n.on("NodeChange",function(e){var n=function(e,n){for(var t=0;t<e.length;t++)if(n(e[t]))return t;return-1}(e.parents,O),t=-1!==n?e.parents.slice(0,n):e.paren
 ts,r=v.grep(t,y);o.active(0<r.length&&r[0].nodeName===i)})}},yt=function(e){var n,t,r;t="advlist",r=(n=e).settings.plugins?n.settings.plugins:"",-1===v.inArray(r.split(/[ ,]/),t)&&(e.addButton("numlist",{active:!1,title:"Numbered list",cmd:"InsertOrderedList",onPostRender:ht(e,"OL")}),e.addButton("bullist",{active:!1,title:"Bullet list",cmd:"InsertUnorderedList",onPostRender:ht(e,"UL")})),e.addButton("indent",{icon:"indent",title:"Increase indent",cmd:"Indent"})};c.add("lists",function(e){return vt(e),yt(e),gt(e),lt(e)})}(window);
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of file
</span></span></pre></div>
<a id="trunksrcjs_enqueuesvendortinymcepluginspastepluginjs"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/js/_enqueues/vendor/tinymce/plugins/paste/plugin.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/js/_enqueues/vendor/tinymce/plugins/paste/plugin.js     2019-05-15 19:53:42 UTC (rev 45315)
+++ trunk/src/js/_enqueues/vendor/tinymce/plugins/paste/plugin.js       2019-05-15 23:44:37 UTC (rev 45316)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,5 @@
</span><span class="cx" style="display: block; padding: 0 10px"> (function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-var paste = (function () {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+var paste = (function (domGlobals) {
</ins><span class="cx" style="display: block; padding: 0 10px">     'use strict';
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var Cell = function (initial) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -24,8 +24,8 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var hasProPlugin = function (editor) {
</span><span class="cx" style="display: block; padding: 0 10px">       if (/(^|[ ,])powerpaste([, ]|$)/.test(editor.settings.plugins) && global.get('powerpaste')) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (typeof window.console !== 'undefined' && window.console.log) {
-          window.console.log('PowerPaste is incompatible with Paste plugin! Remove \'paste\' from the \'plugins\' option.');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (typeof domGlobals.window.console !== 'undefined' && domGlobals.window.console.log) {
+          domGlobals.window.console.log('PowerPaste is incompatible with Paste plugin! Remove \'paste\' from the \'plugins\' option.');
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         return true;
</span><span class="cx" style="display: block; padding: 0 10px">       } else {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -273,18 +273,18 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var ignoreElements = global$3.makeMap('script noscript style textarea video audio iframe object', ' ');
</span><span class="cx" style="display: block; padding: 0 10px">       var blockElements = schema.getBlockElements();
</span><span class="cx" style="display: block; padding: 0 10px">       function walk(node) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var name$$1 = node.name, currentNode = node;
-        if (name$$1 === 'br') {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var name = node.name, currentNode = node;
+        if (name === 'br') {
</ins><span class="cx" style="display: block; padding: 0 10px">           text += '\n';
</span><span class="cx" style="display: block; padding: 0 10px">           return;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (name$$1 === 'wbr') {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (name === 'wbr') {
</ins><span class="cx" style="display: block; padding: 0 10px">           return;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (shortEndedElements[name$$1]) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (shortEndedElements[name]) {
</ins><span class="cx" style="display: block; padding: 0 10px">           text += ' ';
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (ignoreElements[name$$1]) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (ignoreElements[name]) {
</ins><span class="cx" style="display: block; padding: 0 10px">           text += ' ';
</span><span class="cx" style="display: block; padding: 0 10px">           return;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -298,9 +298,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">             } while (node = node.next);
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (blockElements[name$$1] && currentNode.next) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (blockElements[name] && currentNode.next) {
</ins><span class="cx" style="display: block; padding: 0 10px">           text += '\n';
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (name$$1 === 'p') {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (name === 'p') {
</ins><span class="cx" style="display: block; padding: 0 10px">             text += '\n';
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -335,7 +335,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">     }
</span><span class="cx" style="display: block; padding: 0 10px">     var isMsEdge = function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return navigator.userAgent.indexOf(' Edge/') !== -1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return domGlobals.navigator.userAgent.indexOf(' Edge/') !== -1;
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var Utils = {
</span><span class="cx" style="display: block; padding: 0 10px">       filter: filter,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -785,13 +785,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var eq = function (o) {
</span><span class="cx" style="display: block; padding: 0 10px">         return o.isNone();
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var call$$1 = function (thunk) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var call = function (thunk) {
</ins><span class="cx" style="display: block; padding: 0 10px">         return thunk();
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var id = function (n) {
</span><span class="cx" style="display: block; padding: 0 10px">         return n;
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var noop$$1 = function () {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var noop = function () {
</ins><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var nul = function () {
</span><span class="cx" style="display: block; padding: 0 10px">         return null;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -807,7 +807,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         isSome: never$1,
</span><span class="cx" style="display: block; padding: 0 10px">         isNone: always$1,
</span><span class="cx" style="display: block; padding: 0 10px">         getOr: id,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        getOrThunk: call$$1,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        getOrThunk: call,
</ins><span class="cx" style="display: block; padding: 0 10px">         getOrDie: function (msg) {
</span><span class="cx" style="display: block; padding: 0 10px">           throw new Error(msg || 'error: getOrDie called on none.');
</span><span class="cx" style="display: block; padding: 0 10px">         },
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -814,10 +814,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">         getOrNull: nul,
</span><span class="cx" style="display: block; padding: 0 10px">         getOrUndefined: undef,
</span><span class="cx" style="display: block; padding: 0 10px">         or: id,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        orThunk: call$$1,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        orThunk: call,
</ins><span class="cx" style="display: block; padding: 0 10px">         map: none,
</span><span class="cx" style="display: block; padding: 0 10px">         ap: none,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        each: noop$$1,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        each: noop,
</ins><span class="cx" style="display: block; padding: 0 10px">         bind: none,
</span><span class="cx" style="display: block; padding: 0 10px">         flatten: none,
</span><span class="cx" style="display: block; padding: 0 10px">         exists: never$1,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -955,7 +955,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var nu = function (baseFn) {
</span><span class="cx" style="display: block; padding: 0 10px">       var data = Option.none();
</span><span class="cx" style="display: block; padding: 0 10px">       var callbacks = [];
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var map$$1 = function (f) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var map = function (f) {
</ins><span class="cx" style="display: block; padding: 0 10px">         return nu(function (nCallback) {
</span><span class="cx" style="display: block; padding: 0 10px">           get(function (data) {
</span><span class="cx" style="display: block; padding: 0 10px">             nCallback(f(data));
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -981,7 +981,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var call = function (cb) {
</span><span class="cx" style="display: block; padding: 0 10px">         data.each(function (x) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          setTimeout(function () {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          domGlobals.setTimeout(function () {
</ins><span class="cx" style="display: block; padding: 0 10px">             cb(x);
</span><span class="cx" style="display: block; padding: 0 10px">           }, 0);
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -989,11 +989,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">       baseFn(set);
</span><span class="cx" style="display: block; padding: 0 10px">       return {
</span><span class="cx" style="display: block; padding: 0 10px">         get: get,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        map: map$$1,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        map: map,
</ins><span class="cx" style="display: block; padding: 0 10px">         isReady: isReady
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var pure$1 = function (a) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var pure = function (a) {
</ins><span class="cx" style="display: block; padding: 0 10px">       return nu(function (callback) {
</span><span class="cx" style="display: block; padding: 0 10px">         callback(a);
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1000,7 +1000,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var LazyValue = {
</span><span class="cx" style="display: block; padding: 0 10px">       nu: nu,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      pure: pure$1
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      pure: pure
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var bounce = function (f) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1010,7 +1010,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">           args[_i] = arguments[_i];
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         var me = this;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        setTimeout(function () {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        domGlobals.setTimeout(function () {
</ins><span class="cx" style="display: block; padding: 0 10px">           f.apply(me, args);
</span><span class="cx" style="display: block; padding: 0 10px">         }, 0);
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1063,7 +1063,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         get: get
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var pure$2 = function (a) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var pure$1 = function (a) {
</ins><span class="cx" style="display: block; padding: 0 10px">       return nu$1(function (callback) {
</span><span class="cx" style="display: block; padding: 0 10px">         callback(a);
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1070,7 +1070,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var Future = {
</span><span class="cx" style="display: block; padding: 0 10px">       nu: nu$1,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      pure: pure$2
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      pure: pure$1
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var par = function (asyncValues, nu) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1170,8 +1170,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var pasteImage = function (editor, imageItem) {
</span><span class="cx" style="display: block; padding: 0 10px">       var base64 = getBase64FromUri(imageItem.uri);
</span><span class="cx" style="display: block; padding: 0 10px">       var id = uniqueId();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var name$$1 = editor.settings.images_reuse_filename && imageItem.blob.name ? extractFilename(editor, imageItem.blob.name) : id;
-      var img = new Image();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var name = editor.settings.images_reuse_filename && imageItem.blob.name ? extractFilename(editor, imageItem.blob.name) : id;
+      var img = new domGlobals.Image();
</ins><span class="cx" style="display: block; padding: 0 10px">       img.src = imageItem.uri;
</span><span class="cx" style="display: block; padding: 0 10px">       if (isValidDataUriImage(editor.settings, img)) {
</span><span class="cx" style="display: block; padding: 0 10px">         var blobCache = editor.editorUpload.blobCache;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1180,7 +1180,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">           return cachedBlobInfo.base64() === base64;
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><span class="cx" style="display: block; padding: 0 10px">         if (!existingBlobInfo) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          blobInfo = blobCache.create(id, imageItem.blob, base64, name$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          blobInfo = blobCache.create(id, imageItem.blob, base64, name);
</ins><span class="cx" style="display: block; padding: 0 10px">           blobCache.add(blobInfo);
</span><span class="cx" style="display: block; padding: 0 10px">         } else {
</span><span class="cx" style="display: block; padding: 0 10px">           blobInfo = existingBlobInfo;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1190,8 +1190,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">         pasteHtml$1(editor, '<img src="' + imageItem.uri + '">', false);
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var isClipboardEvent = function (event$$1) {
-      return event$$1.type === 'paste';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var isClipboardEvent = function (event) {
+      return event.type === 'paste';
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var readBlobsAsDataUris = function (items) {
</span><span class="cx" style="display: block; padding: 0 10px">       return mapM(items, function (item) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1239,7 +1239,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var isBrokenAndroidClipboardEvent = function (e) {
</span><span class="cx" style="display: block; padding: 0 10px">       var clipboardData = e.clipboardData;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return navigator.userAgent.indexOf('Android') !== -1 && clipboardData && clipboardData.items && clipboardData.items.length === 0;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return domGlobals.navigator.userAgent.indexOf('Android') !== -1 && clipboardData && clipboardData.items && clipboardData.items.length === 0;
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var isKeyboardPasteEvent = function (e) {
</span><span class="cx" style="display: block; padding: 0 10px">       return global$4.metaKeyPressed(e) && e.keyCode === 86 || e.shiftKey && e.keyCode === 45;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1255,7 +1255,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (isKeyboardPasteEvent(e) && !e.isDefaultPrevented()) {
</span><span class="cx" style="display: block; padding: 0 10px">           keyboardPastePlainTextState = e.shiftKey && e.keyCode === 86;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (keyboardPastePlainTextState && global$1.webkit && navigator.userAgent.indexOf('Version/') !== -1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (keyboardPastePlainTextState && global$1.webkit && domGlobals.navigator.userAgent.indexOf('Version/') !== -1) {
</ins><span class="cx" style="display: block; padding: 0 10px">             return;
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           e.stopImmediatePropagation();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1355,7 +1355,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var registerEventsAndFilters = function (editor, pasteBin, pasteFormat) {
</span><span class="cx" style="display: block; padding: 0 10px">       registerEventHandlers(editor, pasteBin, pasteFormat);
</span><span class="cx" style="display: block; padding: 0 10px">       var src;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      editor.parser.addNodeFilter('img', function (nodes, name$$1, args) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      editor.parser.addNodeFilter('img', function (nodes, name, args) {
</ins><span class="cx" style="display: block; padding: 0 10px">         var isPasteInsert = function (args) {
</span><span class="cx" style="display: block; padding: 0 10px">           return args.data && args.data.paste === true;
</span><span class="cx" style="display: block; padding: 0 10px">         };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1388,7 +1388,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var getPasteBinParent = function (editor) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return global$1.ie && editor.inline ? document.body : editor.getBody();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return global$1.ie && editor.inline ? domGlobals.document.body : editor.getBody();
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var isExternalPasteBin = function (editor) {
</span><span class="cx" style="display: block; padding: 0 10px">       return getPasteBinParent(editor) !== editor.getBody();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1524,7 +1524,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var noop$1 = function () {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var noop = function () {
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var hasWorkingClipboardApi = function (clipboardData) {
</span><span class="cx" style="display: block; padding: 0 10px">       return global$1.iOS === false && clipboardData !== undefined && typeof clipboardData.setData === 'function' && Utils.isMsEdge() !== true;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1607,7 +1607,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var copy = function (editor) {
</span><span class="cx" style="display: block; padding: 0 10px">       return function (evt) {
</span><span class="cx" style="display: block; padding: 0 10px">         if (hasSelectedContent(editor)) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          setClipboardData(evt, getData(editor), fallback(editor), noop$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          setClipboardData(evt, getData(editor), fallback(editor), noop);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1854,5 +1854,5 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     return Plugin;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-}());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+}(window));
</ins><span class="cx" style="display: block; padding: 0 10px"> })();
</span></span></pre></div>
<a id="trunksrcjs_enqueuesvendortinymcepluginspastepluginminjs"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/js/_enqueues/vendor/tinymce/plugins/paste/plugin.min.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/js/_enqueues/vendor/tinymce/plugins/paste/plugin.min.js 2019-05-15 19:53:42 UTC (rev 45315)
+++ trunk/src/js/_enqueues/vendor/tinymce/plugins/paste/plugin.min.js   2019-05-15 23:44:37 UTC (rev 45316)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1 +1 @@
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-!function(){"use strict";var l=function(t){var e=t,n=function(){return e};return{get:n,set:function(t){e=t},clone:function(){return l(n())}}},e=tinymce.util.Tools.resolve("tinymce.PluginManager"),a=function(t){return!(!/(^|[ ,])powerpaste([, ]|$)/.test(t.settings.plugins)||!e.get("powerpaste")||("undefined"!=typeof window.console&&window.console.log&&window.console.log("PowerPaste is incompatible with Paste plugin! Remove 'paste' from the 'plugins' option."),0))},s=function(t,e){return{clipboard:t,quirks:e}},f=function(t,e,n,r){return t.fire("PastePreProcess",{content:e,internal:n,wordContent:r})},d=function(t,e,n,r){return t.fire("PastePostProcess",{node:e,internal:n,wordContent:r})},u=function(t,e){return t.fire("PastePlainTextToggle",{state:e})},n=function(t,e){return t.fire("paste&quo
 t;,{ieFake:e})},m={shouldPlainTextInform:function(t){return t.getParam("paste_plaintext_inform",!0)},shouldBlockDrop:function(t){return t.getParam("paste_block_drop",!1)},shouldPasteDataImages:function(t){return t.getParam("paste_data_images",!1)},shouldFilterDrop:function(t){return t.getParam("paste_filter_drop",!0)},getPreProcess:function(t){return t.getParam("paste_preprocess")},getPostProcess:function(t){return t.getParam("paste_postprocess")},getWebkitStyles:function(t){return t.getParam("paste_webkit_styles")},shouldRemoveWebKitStyles:function(t){return t.getParam("paste_remove_styles_if_webkit",!0)},shouldMergeFormats:function(t){return t.getParam("paste_merge_formats",!0)},isSmartPasteEnabled:function(t){return t.getParam("smart_paste",!0)},isPasteAsTextEnabled:function(t){return t.getParam("paste_as_text",!1)},getRetainStyleProps:function(t){return t.getParam("
 paste_retain_style_properties")},getWordValidElements:function(t){return t.getParam("paste_word_valid_elements","-strong/b,-em/i,-u,-span,-p,-ol,-ul,-li,-h1,-h2,-h3,-h4,-h5,-h6,-p/div,-a[href|name],sub,sup,strike,br,del,table[width],tr,td[colspan|rowspan|width],th[colspan|rowspan|width],thead,tfoot,tbody")},shouldConvertWordFakeLists:function(t){return t.getParam("paste_convert_word_fake_lists",!0)},shouldUseDefaultFilters:function(t){return t.getParam("paste_enable_default_filters",!0)}},r=function(t,e,n){var r,o,i;"text"===e.pasteFormat.get()?(e.pasteFormat.set("html"),u(t,!1)):(e.pasteFormat.set("text"),u(t,!0),i=t,!1===n.get()&&m.shouldPlainTextInform(i)&&(o="Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.",(r=t).notificationManager.open({text:r.translate(o),type:"info"}),n.set(!0))),t.focus()},c=function(t,n,
 e){t.addCommand("mceTogglePlainTextPaste",function(){r(t,n,e)}),t.addCommand("mceInsertClipboardContent",function(t,e){e.content&&n.pasteHtml(e.content,e.internal),e.text&&n.pasteText(e.text)})},v=tinymce.util.Tools.resolve("tinymce.Env"),h=tinymce.util.Tools.resolve("tinymce.util.Delay"),y=tinymce.util.Tools.resolve("tinymce.util.Tools"),o=tinymce.util.Tools.resolve("tinymce.util.VK"),t="x-tinymce/html",i="\x3c!-- "+t+" --\x3e",g=function(t){return i+t},p=function(t){return t.replace(i,"")},b=function(t){return-1!==t.indexOf(i)},x=function(){return t},P=tinymce.util.Tools.resolve("tinymce.html.Entities"),w=function(t){return t.replace(/\r?\n/g,"<br>")},_=function(t,e,n){var r=t.split(/\n\n/),o=function(t,e){var n,r=[],o="<"+t;if("object"==typeof e){for(n in e)e.hasOwnProperty(n)&&r.push(n+'="'+P.encodeAllRa
 w(e[n])+'"');r.length&&(o+=" "+r.join(" "))}return o+">"}(e,n),i="</"+e+">",a=y.map(r,function(t){return t.split(/\n/).join("<br />")});return 1===a.length?a[0]:y.map(a,function(t){return o+t+i}).join("")},D=function(t){return!/<(?:\/?(?!(?:div|p|br|span)>)\w+|(?:(?!(?:span style="white-space:\s?pre;?">)|br\s?\/>))\w+\s[^>]+)>/i.test(t)},T=function(t,e,n){return e?_(t,e,n):w(t)},C=tinymce.util.Tools.resolve("tinymce.html.DomParser"),k=tinymce.util.Tools.resolve("tinymce.html.Node"),S=tinymce.util.Tools.resolve("tinymce.html.Schema"),O=tinymce.util.Tools.resolve("tinymce.html.Serializer");function R(e,t){return y.each(t,function(t){e=t.constructor===RegExp?e.replace(t,""):e.replace(t[0],t[1])}),e}var F={filter:R,innerText:function(e){var n=S(),r=C({},n),o="",i=n.getShortEndedElements(),a=y.makeMap(&qu
 ot;script noscript style textarea video audio iframe object"," "),s=n.getBlockElements();return e=R(e,[/<!\[[^\]]+\]>/g]),function t(e){var n=e.name,r=e;if("br"!==n){if("wbr"!==n)if(i[n]&&(o+=" "),a[n])o+=" ";else{if(3===e.type&&(o+=e.value),!e.shortEnded&&(e=e.firstChild))for(;t(e),e=e.next;);s[n]&&r.next&&(o+="\n","p"===n&&(o+="\n"))}}else o+="\n"}(r.parse(e)),o},trimHtml:function(t){return t=R(t,[/^[\s\S]*<body[^>]*>\s*|\s*<\/body[^>]*>[\s\S]*$/gi,/<!--StartFragment-->|<!--EndFragment-->/g,[/( ?)<span class="Apple-converted-space">\u00a0<\/span>( ?)/g,function(t,e,n){return e||n?"\xa0":" "}],/<br class="Apple-interchange-newline">/g,/<br>$/i])},createIdGenerator:function(t){var e=0;return function(){return t+e++}},isMsEdge:function(){return-
 1!==navigator.userAgent.indexOf(" Edge/")}};function E(e){var n,t;return t=[/^[IVXLMCD]{1,2}\.[ \u00a0]/,/^[ivxlmcd]{1,2}\.[ \u00a0]/,/^[a-z]{1,2}[\.\)][ \u00a0]/,/^[A-Z]{1,2}[\.\)][ \u00a0]/,/^[0-9]+\.[ \u00a0]/,/^[\u3007\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d]+\.[ \u00a0]/,/^[\u58f1\u5f10\u53c2\u56db\u4f0d\u516d\u4e03\u516b\u4e5d\u62fe]+\.[ \u00a0]/],e=e.replace(/^[\u00a0 ]+/,""),y.each(t,function(t){if(t.test(e))return!(n=!0)}),n}function A(t){var i,a,s=1;function n(t){var e="";if(3===t.type)return t.value;if(t=t.firstChild)for(;e+=n(t),t=t.next;);return e}function u(t,e){if(3===t.type&&e.test(t.value))return t.value=t.value.replace(e,""),!1;if(t=t.firstChild)do{if(!u(t,e))return!1}while(t=t.next);return!0}function e(e,n,r){var o=e._listLevel||s;o!==s&&(o<s?i&&(i=i.parent.parent):(a=i,i=null)),i&&i.name===n?i.append(e):(a=a||i,i=new k(n,1),1<r&&i.attr("start","&quot
 ;+r),e.wrap(i)),e.name="li",s<o&&a&&a.lastChild.append(i),s=o,function t(e){if(e._listIgnore)e.remove();else if(e=e.firstChild)for(;t(e),e=e.next;);}(e),u(e,/^\u00a0+/),u(e,/^\s*([\u2022\u00b7\u00a7\u25CF]|\w+\.)/),u(e,/^\u00a0+/)}for(var r=[],o=t.firstChild;null!=o;)if(r.push(o),null!==(o=o.walk()))for(;void 0!==o&&o.parent!==t;)o=o.walk();for(var l=0;l<r.length;l++)if("p"===(t=r[l]).name&&t.firstChild){var c=n(t);if(/^[\s\u00a0]*[\u2022\u00b7\u00a7\u25CF]\s*/.test(c)){e(t,"ul");continue}if(E(c)){var f=/([0-9]+)\./.exec(c),d=1;f&&(d=parseInt(f[1],10)),e(t,"ol",d);continue}if(t._listLevel){e(t,"ul",1);continue}i=null}else a=i,i=null}function I(n,r,o,i){var a,s={},t=n.dom.parseStyle(i);return y.each(t,function(t,e){switch(e){case"mso-list":(a=/\w+ \w+([0-9]+)/i.exec(i))&&(o._listLevel=parseInt(a[1],10)),/Ignore/i.test(t)&&o.firstChild&&(o._listIgnore=!0,o.
 firstChild._listIgnore=!0);break;case"horiz-align":e="text-align";break;case"vert-align":e="vertical-align";break;case"font-color":case"mso-foreground":e="color";break;case"mso-background":case"mso-highlight":e="background";break;case"font-weight":case"font-style":return void("normal"!==t&&(s[e]=t));case"mso-element":if(/^(comment|comment-list)$/i.test(t))return void o.remove()}0!==e.indexOf("mso-comment")?0!==e.indexOf("mso-")&&("all"===m.getRetainStyleProps(n)||r&&r[e])&&(s[e]=t):o.remove()}),/(bold)/i.test(s["font-weight"])&&(delete s["font-weight"],o.wrap(new k("b",1))),/(italic)/i.test(s["font-style"])&&(delete s["font-style"],o.wrap(new k("i",1))),(s=n.dom.serializeStyle(s,o.name))||null}var M,B,H,j,L,N=
 {preProcess:function(t,e){return m.shouldUseDefaultFilters(t)?function(r,t){var e,o;(e=m.getRetainStyleProps(r))&&(o=y.makeMap(e.split(/[, ]/))),t=F.filter(t,[/<br class="?Apple-interchange-newline"?>/gi,/<b[^>]+id="?docs-internal-[^>]*>/gi,/<!--[\s\S]+?-->/gi,/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,[/<(\/?)s>/gi,"<$1strike>"],[/&nbsp;/gi,"\xa0"],[/<span\s+style\s*=\s*"\s*mso-spacerun\s*:\s*yes\s*;?\s*"\s*>([\s\u00a0]*)<\/span>/gi,function(t,e){return 0<e.length?e.replace(/./," ").slice(Math.floor(e.length/2)).split("").join("\xa0"):""}]]);var n=m.getWordValidElements(r),i=S({valid_elements:n,valid_children:"-li[p]"});y.each(i.elements,function(t){t.attributes["class"]||(t.attributes["class"]={},t.attributesOrder.push(&q
 uot;class")),t.attributes.style||(t.attributes.style={},t.attributesOrder.push("style"))});var a=C({},i);a.addAttributeFilter("style",function(t){for(var e,n=t.length;n--;)(e=t[n]).attr("style",I(r,o,e,e.attr("style"))),"span"===e.name&&e.parent&&!e.attributes.length&&e.unwrap()}),a.addAttributeFilter("class",function(t){for(var e,n,r=t.length;r--;)n=(e=t[r]).attr("class"),/^(MsoCommentReference|MsoCommentText|msoDel)$/i.test(n)&&e.remove(),e.attr("class",null)}),a.addNodeFilter("del",function(t){for(var e=t.length;e--;)t[e].remove()}),a.addNodeFilter("a",function(t){for(var e,n,r,o=t.length;o--;)if(n=(e=t[o]).attr("href"),r=e.attr("name"),n&&-1!==n.indexOf("#_msocom_"))e.remove();else if(n&&0===n.indexOf("file://")&&(n=n.split("#")[1])&&(n="#"+n),n||r){if(r
 &&!/^_?(?:toc|edn|ftn)/i.test(r)){e.unwrap();continue}e.attr({href:n,name:r})}else e.unwrap()});var s=a.parse(t);return m.shouldConvertWordFakeLists(r)&&A(s),t=O({validate:r.settings.validate},i).serialize(s)}(t,e):e},isWordContent:function(t){return/<font face="Times New Roman"|class="?Mso|style="[^"]*\bmso-|style='[^'']*\bmso-|w:WordDocument/i.test(t)||/class="OutlineElement/.test(t)||/id="?docs\-internal\-guid\-/.test(t)}},$=function(t,e){return{content:t,cancelled:e}},W=function(t,e,n,r){var o,i,a,s,u,l,c=f(t,e,n,r);return t.hasEventListeners("PastePostProcess")&&!c.isDefaultPrevented()?(o=t,i=c.content,a=n,s=r,u=o.dom.create("div",{style:"display:none"},i),l=d(o,u,a,s),$(l.node.innerHTML,l.isDefaultPrevented())):$(c.content,c.isDefaultPrevented())},z=function(t,e,n){var r=N.isWordContent(e),o=r?N.preProcess(t,e):e;return W(t,o,n,r)},U=function(t,e){var n,r;return t.insertContent((n=e,r=t
 .dom.create("body",{},n),y.each(r.querySelectorAll("meta"),function(t){return t.parentNode.removeChild(t)}),r.innerHTML),{merge:m.shouldMergeFormats(t),paste:!0}),!0},V=function(t){return/^https?:\/\/[\w\?\-\/+=.&%@~#]+$/i.test(t)},q=function(t){return V(t)&&/.(gif|jpe?g|png)$/.test(t)},K=function(t,e,n){return!(!1!==t.selection.isCollapsed()||!V(e)||(o=e,i=n,(r=t).undoManager.extra(function(){i(r,o)},function(){r.execCommand("mceInsertLink",!1,o)}),0));var r,o,i},G=function(t,e,n){return!!q(e)&&(o=e,i=n,(r=t).undoManager.extra(function(){i(r,o)},function(){r.insertContent('<img src="'+o+'">')}),!0);var r,o,i},X=function(t,e){var n,r;!1===m.isSmartPasteEnabled(t)?U(t,e):(n=t,r=e,y.each([K,G,U],function(t){return!0!==t(n,r,U)}))},Y=function(t){return function(){return t}},Z=Y(!1),J=Y(!0),Q=Z,tt=J,et=function(){return nt},nt=(j={fold:function(t,e){return t()},is:Q,isSome:Q,isNone:tt,getOr:H=function(t){return t},getOrTh
 unk:B=function(t){return t()},getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:function(){return null},getOrUndefined:function(){return undefined},or:H,orThunk:B,map:et,ap:et,each:function(){},bind:et,flatten:et,exists:Q,forall:tt,filter:et,equals:M=function(t){return t.isNone()},equals_:M,toArray:function(){return[]},toString:Y("none()")},Object.freeze&&Object.freeze(j),j),rt=function(n){var t=function(){return n},e=function(){return o},r=function(t){return t(n)},o={fold:function(t,e){return e(n)},is:function(t){return n===t},isSome:tt,isNone:Q,getOr:t,getOrThunk:t,getOrDie:t,getOrNull:t,getOrUndefined:t,or:e,orThunk:e,map:function(t){return rt(t(n))},ap:function(t){return t.fold(et,function(t){return rt(t(n))})},each:function(t){t(n)},bind:r,flatten:t,exists:r,forall:r,filter:function(t){return t(n)?o:nt},equals:function(t){return t.is(n)},equals_:function(t,e){return t.fold(Q,function(t){return e(n,t)})},toArray:fun
 ction(){return[n]},toString:function(){return"some("+n+")"}};return o},ot={some:rt,none:et,from:function(t){return null===t||t===undefined?nt:rt(t)}},it=(L="function",function(t){return function(t){if(null===t)return"null";var e=typeof t;return"object"===e&&Array.prototype.isPrototypeOf(t)?"array":"object"===e&&String.prototype.isPrototypeOf(t)?"string":e}(t)===L}),at=function(t,e){for(var n=t.length,r=new Array(n),o=0;o<n;o++){var i=t[o];r[o]=e(i,o,t)}return r},st=function(t,e){for(var n=0,r=t.length;n<r;n++)e(t[n],n,t)},ut=Array.prototype.slice,lt=it(Array.from)?Array.from:function(t){return ut.call(t)},ct=function(t){var n=ot.none(),e=[],r=function(t){o()?a(t):e.push(t)},o=function(){return n.isSome()},i=function(t){st(t,a)},a=function(e){n.each(function(t){setTimeout(function(){e(t)},0)})};return t(function(t){n=ot.some(t),i(e),e=[]}),{get:r,map:function(n){return ct(function(e)
 {r(function(t){e(n(t))})})},isReady:o}},ft={nu:ct,pure:function(e){return ct(function(t){t(e)})}},dt=function(e){var t=function(t){var r;e((r=t,function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=this;setTimeout(function(){r.apply(n,t)},0)}))},n=function(){return ft.nu(t)};return{map:function(r){return dt(function(n){t(function(t){var e=r(t);n(e)})})},bind:function(n){return dt(function(e){t(function(t){n(t).get(e)})})},anonBind:function(n){return dt(function(e){t(function(t){n.get(e)})})},toLazy:n,toCached:function(){var e=null;return dt(function(t){null===e&&(e=n()),e.get(t)})},get:t}},mt={nu:dt,pure:function(e){return dt(function(t){t(e)})}},gt=function(a,t){return t(function(r){var o=[],i=0;0===a.length?r([]):st(a,function(t,e){var n;t.get((n=e,function(t){o[n]=t,++i>=a.length&&r(o)}))})})},pt=function(t,e){var n=at(t,e);return gt(n,mt.nu)},vt=function(t,e,n){var r=n||b(e),o=z(t,p(e),r);!1===o.cancelled&&X(t,o.content)},ht=fun
 ction(t,e){e=t.dom.encode(e).replace(/\r\n/g,"\n"),e=T(e,t.settings.forced_root_block,t.settings.forced_root_block_attrs),vt(t,e,!1)},yt=function(t){var e={};if(t){if(t.getData){var n=t.getData("Text");n&&0<n.length&&-1===n.indexOf("data:text/mce-internal,")&&(e["text/plain"]=n)}if(t.types)for(var r=0;r<t.types.length;r++){var o=t.types[r];try{e[o]=t.getData(o)}catch(i){e[o]=""}}}return e},bt=function(t,e){return e in t&&0<t[e].length},xt=function(t){return bt(t,"text/html")||bt(t,"text/plain")},Pt=F.createIdGenerator("mceclip"),wt=function(e,t,n){var r,o,i,a,s="paste"===t.type?t.clipboardData:t.dataTransfer;if(e.settings.paste_data_images&&s){var u=(i=(o=s).items?at(lt(o.items),function(t){return t.getAsFile()}):[],a=o.files?lt(o.files):[],function(t,e){for(var n=[],r=0,o=t.length;r<o;r++){var i=t[r];e(i,r,t)&&n.push(i)}return n}(0&lt
 ;i.length?i:a,function(t){return/^image\/(jpeg|png|gif|bmp)$/.test(t.type)}));if(0<u.length)return t.preventDefault(),(r=u,pt(r,function(r){return mt.nu(function(t){var e=r.getAsFile?r.getAsFile():r,n=new window.FileReader;n.onload=function(){t({blob:e,uri:n.result})},n.readAsDataURL(e)})})).get(function(t){n&&e.selection.setRng(n),st(t,function(t){!function(t,e){var n,r,o,i,a,s,u,l=(n=e.uri,-1!==(r=n.indexOf(","))?n.substr(r+1):null),c=Pt(),f=t.settings.images_reuse_filename&&e.blob.name?(o=t,i=e.blob.name,(a=i.match(/([\s\S]+?)\.(?:jpeg|jpg|png|gif)$/i))?o.dom.encode(a[1]):null):c,d=new Image;if(d.src=e.uri,s=t.settings,u=d,!s.images_dataimg_filter||s.images_dataimg_filter(u)){var m,g=t.editorUpload.blobCache,p=void 0;(m=g.findFirst(function(t){return t.base64()===l}))?p=m:(p=g.create(c,e.blob,l,f),g.add(p)),vt(t,'<img src="'+p.blobUri()+'">',!1)}else vt(t,'<img src="'+e.uri+'">',!1)}(e,t)})}),!0}return!1},_t=function(t)
 {return o.metaKeyPressed(t)&&86===t.keyCode||t.shiftKey&&45===t.keyCode},Dt=function(c,f,d){var m,g=0;function p(t,e,n,r){var o,i;bt(t,"text/html")?o=t["text/html"]:(o=f.getHtml(),r=r||b(o),f.isDefaultContent(o)&&(n=!0)),o=F.trimHtml(o),f.remove(),i=!1===r&&D(o),o.length&&!i||(n=!0),n&&(o=bt(t,"text/plain")&&i?t["text/plain"]:F.innerText(o)),f.isDefaultContent(o)?e||c.windowManager.alert("Please use Ctrl+V/Cmd+V keyboard shortcuts to paste contents."):n?ht(c,o):vt(c,o,r)}c.on("keydown",function(t){function e(t){_t(t)&&!t.isDefaultPrevented()&&f.remove()}if(_t(t)&&!t.isDefaultPrevented()){if((m=t.shiftKey&&86===t.keyCode)&&v.webkit&&-1!==navigator.userAgent.indexOf("Version/"))return;if(t.stopImmediatePropagation(),g=(new Date).getTime(),v.ie&&m)return t.preventDefault(),void n(c,!0);f.remove(),f.create()
 ,c.once("keyup",e),c.once("paste",function(){c.off("keyup",e)})}}),c.on("paste",function(t){var e,n,r,o=(new Date).getTime(),i=(e=c,n=yt(t.clipboardData||e.getDoc().dataTransfer),F.isMsEdge()?y.extend(n,{"text/html":""}):n),a=(new Date).getTime()-o,s=(new Date).getTime()-g-a<1e3,u="text"===d.get()||m,l=bt(i,x());m=!1,t.isDefaultPrevented()||(r=t.clipboardData,-1!==navigator.userAgent.indexOf("Android")&&r&&r.items&&0===r.items.length)?f.remove():xt(i)||!wt(c,t,f.getLastRng()||c.selection.getRng())?(s||t.preventDefault(),!v.ie||s&&!t.ieFake||bt(i,"text/html")||(f.create(),c.dom.bind(f.getEl(),"paste",function(t){t.stopPropagation()}),c.getDoc().execCommand("Paste",!1,null),i["text/html"]=f.getHtml()),bt(i,"text/html")?(t.preventDefault(),l||(l=b(i["text/html"])),p(i,s,u,l)):h.setEditorTimeout(c,function(){p(i,s,
 u,l)},0)):f.remove()})},Tt=function(t){return v.ie&&t.inline?document.body:t.getBody()},Ct=function(e,t,n){var r;Tt(r=e)!==r.getBody()&&e.dom.bind(t,"paste keyup",function(t){Ot(e,n)||e.fire("paste")})},kt=function(t){return t.dom.get("mcepastebin")},St=function(t,e){return e===t},Ot=function(t,e){var n,r=kt(t);return(n=r)&&"mcepastebin"===n.id&&St(e,r.innerHTML)},Rt=function(a){var s=l(null),u="%MCEPASTEBIN%";return{create:function(){return e=s,n=u,o=(t=a).dom,i=t.getBody(),e.set(t.selection.getRng()),r=t.dom.add(Tt(t),"div",{id:"mcepastebin","class":"mce-pastebin",contentEditable:!0,"data-mce-bogus":"all",style:"position: fixed; top: 50%; width: 10px; height: 10px; overflow: hidden; opacity: 0"},n),(v.ie||v.gecko)&&o.setStyle(r,"left","rtl"===o.getStyle(i,"direction",!0)?65535:-65535),o.bind(r,
 "beforedeactivate focusin focusout",function(t){t.stopPropagation()}),Ct(t,r,n),r.focus(),void t.selection.select(r,!0);var t,e,n,r,o,i},remove:function(){return function(t,e){if(kt(t)){for(var n=void 0,r=e.get();n=t.dom.get("mcepastebin");)t.dom.remove(n),t.dom.unbind(n);r&&t.selection.setRng(r)}e.set(null)}(a,s)},getEl:function(){return kt(a)},getHtml:function(){return function(n){var e,t,r,o,i,a=function(t,e){t.appendChild(e),n.dom.remove(e,!0)};for(t=y.grep(Tt(n).childNodes,function(t){return"mcepastebin"===t.id}),e=t.shift(),y.each(t,function(t){a(e,t)}),r=(o=n.dom.select("div[id=mcepastebin]",e)).length-1;0<=r;r--)i=n.dom.create("div"),e.insertBefore(i,o[r]),a(i,o[r]);return e?e.innerHTML:""}(a)},getLastRng:function(){return s.get()},isDefault:function(){return Ot(a,u)},isDefaultContent:function(t){return St(u,t)}}},Ft=function(n,t){var e=Rt(n);return n.on("preInit",function(){return Dt(a=n,e,t),v
 oid a.parser.addNodeFilter("img",function(t,e,n){var r,o=function(t){t.attr("data-mce-object")||s===v.transparentSrc||t.remove()};if(!a.settings.paste_data_images&&(r=n).data&&!0===r.data.paste)for(var i=t.length;i--;)(s=t[i].attributes.map.src)&&(0===s.indexOf("webkit-fake-url")?o(t[i]):a.settings.allow_html_data_urls||0!==s.indexOf("data:")||o(t[i]))});var a,s}),{pasteFormat:t,pasteHtml:function(t,e){return vt(n,t,e)},pasteText:function(t){return ht(n,t)},pasteImageData:function(t,e){return wt(n,t,e)},getDataTransferItems:yt,hasHtmlOrText:xt,hasContentType:bt}},Et=function(){},At=function(t,e,n){if(r=t,!1!==v.iOS||r===undefined||"function"!=typeof r.setData||!0===F.isMsEdge())return!1;try{return t.clearData(),t.setData("text/html",e),t.setData("text/plain",n),t.setData(x(),e),!0}catch(o){return!1}var r},It=function(t,e,n,r){At(t.clipboardData,e.html,e.text)?(t.preventDefault(),r()):n(e.ht
 ml,r)},Mt=function(s){return function(t,e){var n=g(t),r=s.dom.create("div",{contenteditable:"false","data-mce-bogus":"all"}),o=s.dom.create("div",{contenteditable:"true"},n);s.dom.setStyles(r,{position:"fixed",top:"0",left:"-3000px",width:"1000px",overflow:"hidden"}),r.appendChild(o),s.dom.add(s.getBody(),r);var i=s.selection.getRng();o.focus();var a=s.dom.createRng();a.selectNodeContents(o),s.selection.setRng(a),setTimeout(function(){s.selection.setRng(i),r.parentNode.removeChild(r),e()},0)}},Bt=function(t){return{html:t.selection.getContent({contextual:!0}),text:t.selection.getContent({format:"text"})}},Ht=function(t){return!t.selection.isCollapsed()||!!(e=t).dom.getParent(e.selection.getStart(),"td[data-mce-selected],th[data-mce-selected]",e.getBody());var e},jt=function(t){var e,n;t.on("cut",(e=t,function(t){Ht(e)&&It(t,Bt(e),Mt(e),f
 unction(){setTimeout(function(){e.execCommand("Delete")},0)})})),t.on("copy",(n=t,function(t){Ht(n)&&It(t,Bt(n),Mt(n),Et)}))},Lt=tinymce.util.Tools.resolve("tinymce.dom.RangeUtils"),Nt=function(t,e){return Lt.getCaretRangeFromPoint(e.clientX,e.clientY,t.getDoc())},$t=function(t,e){t.focus(),t.selection.setRng(e)},Wt=function(a,s,u){m.shouldBlockDrop(a)&&a.on("dragend dragover draggesture dragdrop drop drag",function(t){t.preventDefault(),t.stopPropagation()}),m.shouldPasteDataImages(a)||a.on("drop",function(t){var e=t.dataTransfer;e&&e.files&&0<e.files.length&&t.preventDefault()}),a.on("drop",function(t){var e,n;if(n=Nt(a,t),!t.isDefaultPrevented()&&!u.get()){e=s.getDataTransferItems(t.dataTransfer);var r,o=s.hasContentType(e,x());if((s.hasHtmlOrText(e)&&(!(r=e["text/plain"])||0!==r.indexOf("file://"))||!s.pasteImageData(t,n))&&n&&amp
 ;m.shouldFilterDrop(a)){var i=e["mce-internal"]||e["text/html"]||e["text/plain"];i&&(t.preventDefault(),h.setEditorTimeout(a,function(){a.undoManager.transact(function(){e["mce-internal"]&&a.execCommand("Delete"),$t(a,n),i=F.trimHtml(i),e["text/html"]?s.pasteHtml(i,o):s.pasteText(i)})}))}}}),a.on("dragstart",function(t){u.set(!0)}),a.on("dragover dragend",function(t){m.shouldPasteDataImages(a)&&!1===u.get()&&(t.preventDefault(),$t(a,Nt(a,t))),"dragend"===t.type&&u.set(!1)})},zt=function(t){var e=t.plugins.paste,n=m.getPreProcess(t);n&&t.on("PastePreProcess",function(t){n.call(e,e,t)});var r=m.getPostProcess(t);r&&t.on("PastePostProcess",function(t){r.call(e,e,t)})};function Ut(e,n){e.on("PastePreProcess",function(t){t.content=n(e,t.content,t.internal,t.wordContent)})}function Vt(t,e){if(!N.isWordContent(e))ret
 urn e;var n=[];y.each(t.schema.getBlockElements(),function(t,e){n.push(e)});var r=new RegExp("(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*(<\\/?("+n.join("|")+")[^>]*>)(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*","g");return e=F.filter(e,[[r,"$1"]]),e=F.filter(e,[[/<br><br>/g,"<BR><BR>"],[/<br>/g," "],[/<BR><BR>/g,"<br>"]])}function qt(t,e,n,r){if(r||n)return e;var l,o=m.getWebkitStyles(t);if(!1===m.shouldRemoveWebKitStyles(t)||"all"===o)return e;if(o&&(l=o.split(/[, ]/)),l){var c=t.dom,f=t.selection.getNode();e=e.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi,function(t,e,n,r){var o=c.parseStyle(c.decode(n)),i={};if("none"===l)return e+r;for(var a=0;a<l.length;a++){var s=o[l[a]],u=c.getStyle(f,l[a],!0);/color/.test(l[a])&&(s=c.toHex(s),u=c.toHex(u)),u!==s&&(i[l[a]]=s)
 }return(i=c.serializeStyle(i,"span"))?e+' style="'+i+'"'+r:e+r})}else e=e.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi,"$1$3");return e=e.replace(/(<[^>]+) data-mce-style="([^"]+)"([^>]*>)/gi,function(t,e,n,r){return e+' style="'+n+'"'+r})}function Kt(n,t){n.$("a",t).find("font,u").each(function(t,e){n.dom.remove(e,!0)})}var Gt=function(t){var e,n;v.webkit&&Ut(t,qt),v.ie&&(Ut(t,Vt),n=Kt,(e=t).on("PastePostProcess",function(t){n(e,t.node)}))},Xt=function(t,e,n){var r=n.control;r.active("text"===e.pasteFormat.get()),t.on("PastePlainTextToggle",function(t){r.active(t.state)})},Yt=function(t,e){var n=function(r){for(var o=[],t=1;t<arguments.length;t++)o[t-1]=arguments[t];return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=o.concat(t);return r.apply(null,n)}}(Xt,t,e);t.addButton("pastetext&
 quot;,{active:!1,icon:"pastetext",tooltip:"Paste as text",cmd:"mceTogglePlainTextPaste",onPostRender:n}),t.addMenuItem("pastetext",{text:"Paste as text",selectable:!0,active:e.pasteFormat,cmd:"mceTogglePlainTextPaste",onPostRender:n})};e.add("paste",function(t){if(!1===a(t)){var e=l(!1),n=l(!1),r=l(m.isPasteAsTextEnabled(t)?"text":"html"),o=Ft(t,r),i=Gt(t);return Yt(t,o),c(t,o,e),zt(t),jt(t),Wt(t,o,n),s(o,i)}})}();
</del><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of file
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+!function(v){"use strict";var l=function(t){var e=t,n=function(){return e};return{get:n,set:function(t){e=t},clone:function(){return l(n())}}},e=tinymce.util.Tools.resolve("tinymce.PluginManager"),a=function(t){return!(!/(^|[ ,])powerpaste([, ]|$)/.test(t.settings.plugins)||!e.get("powerpaste")||("undefined"!=typeof v.window.console&&v.window.console.log&&v.window.console.log("PowerPaste is incompatible with Paste plugin! Remove 'paste' from the 'plugins' option."),0))},s=function(t,e){return{clipboard:t,quirks:e}},f=function(t,e,n,r){return t.fire("PastePreProcess",{content:e,internal:n,wordContent:r})},d=function(t,e,n,r){return t.fire("PastePostProcess",{node:e,internal:n,wordContent:r})},u=function(t,e){return t.fire("PastePlainTextToggle",{state:e})},n=function(t,e){return t.fire("pa
 ste",{ieFake:e})},m={shouldPlainTextInform:function(t){return t.getParam("paste_plaintext_inform",!0)},shouldBlockDrop:function(t){return t.getParam("paste_block_drop",!1)},shouldPasteDataImages:function(t){return t.getParam("paste_data_images",!1)},shouldFilterDrop:function(t){return t.getParam("paste_filter_drop",!0)},getPreProcess:function(t){return t.getParam("paste_preprocess")},getPostProcess:function(t){return t.getParam("paste_postprocess")},getWebkitStyles:function(t){return t.getParam("paste_webkit_styles")},shouldRemoveWebKitStyles:function(t){return t.getParam("paste_remove_styles_if_webkit",!0)},shouldMergeFormats:function(t){return t.getParam("paste_merge_formats",!0)},isSmartPasteEnabled:function(t){return t.getParam("smart_paste",!0)},isPasteAsTextEnabled:function(t){return t.getParam("paste_as_text",!1)},getRetainStyleProps:function(t){return t.getParam
 ("paste_retain_style_properties")},getWordValidElements:function(t){return t.getParam("paste_word_valid_elements","-strong/b,-em/i,-u,-span,-p,-ol,-ul,-li,-h1,-h2,-h3,-h4,-h5,-h6,-p/div,-a[href|name],sub,sup,strike,br,del,table[width],tr,td[colspan|rowspan|width],th[colspan|rowspan|width],thead,tfoot,tbody")},shouldConvertWordFakeLists:function(t){return t.getParam("paste_convert_word_fake_lists",!0)},shouldUseDefaultFilters:function(t){return t.getParam("paste_enable_default_filters",!0)}},r=function(t,e,n){var r,o,i;"text"===e.pasteFormat.get()?(e.pasteFormat.set("html"),u(t,!1)):(e.pasteFormat.set("text"),u(t,!0),i=t,!1===n.get()&&m.shouldPlainTextInform(i)&&(o="Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.",(r=t).notificationManager.open({text:r.translate(o),type:"info"}),n.set(!0))),t.focus()},c=functi
 on(t,n,e){t.addCommand("mceTogglePlainTextPaste",function(){r(t,n,e)}),t.addCommand("mceInsertClipboardContent",function(t,e){e.content&&n.pasteHtml(e.content,e.internal),e.text&&n.pasteText(e.text)})},h=tinymce.util.Tools.resolve("tinymce.Env"),y=tinymce.util.Tools.resolve("tinymce.util.Delay"),b=tinymce.util.Tools.resolve("tinymce.util.Tools"),o=tinymce.util.Tools.resolve("tinymce.util.VK"),t="x-tinymce/html",i="\x3c!-- "+t+" --\x3e",g=function(t){return i+t},p=function(t){return t.replace(i,"")},x=function(t){return-1!==t.indexOf(i)},P=function(){return t},w=tinymce.util.Tools.resolve("tinymce.html.Entities"),_=function(t){return t.replace(/\r?\n/g,"<br>")},D=function(t,e,n){var r=t.split(/\n\n/),o=function(t,e){var n,r=[],o="<"+t;if("object"==typeof e){for(n in e)e.hasOwnProperty(n)&&r.push(n+'="'+w.enco
 deAllRaw(e[n])+'"');r.length&&(o+=" "+r.join(" "))}return o+">"}(e,n),i="</"+e+">",a=b.map(r,function(t){return t.split(/\n/).join("<br />")});return 1===a.length?a[0]:b.map(a,function(t){return o+t+i}).join("")},T=function(t){return!/<(?:\/?(?!(?:div|p|br|span)>)\w+|(?:(?!(?:span style="white-space:\s?pre;?">)|br\s?\/>))\w+\s[^>]+)>/i.test(t)},C=function(t,e,n){return e?D(t,e,n):_(t)},k=tinymce.util.Tools.resolve("tinymce.html.DomParser"),S=tinymce.util.Tools.resolve("tinymce.html.Node"),O=tinymce.util.Tools.resolve("tinymce.html.Schema"),R=tinymce.util.Tools.resolve("tinymce.html.Serializer");function F(e,t){return b.each(t,function(t){e=t.constructor===RegExp?e.replace(t,""):e.replace(t[0],t[1])}),e}var E={filter:F,innerText:function(e){var n=O(),r=k({},n),o="",i=n.getShortEndedElements(),a=b.make
 Map("script noscript style textarea video audio iframe object"," "),s=n.getBlockElements();return e=F(e,[/<!\[[^\]]+\]>/g]),function t(e){var n=e.name,r=e;if("br"!==n){if("wbr"!==n)if(i[n]&&(o+=" "),a[n])o+=" ";else{if(3===e.type&&(o+=e.value),!e.shortEnded&&(e=e.firstChild))for(;t(e),e=e.next;);s[n]&&r.next&&(o+="\n","p"===n&&(o+="\n"))}}else o+="\n"}(r.parse(e)),o},trimHtml:function(t){return t=F(t,[/^[\s\S]*<body[^>]*>\s*|\s*<\/body[^>]*>[\s\S]*$/gi,/<!--StartFragment-->|<!--EndFragment-->/g,[/( ?)<span class="Apple-converted-space">\u00a0<\/span>( ?)/g,function(t,e,n){return e||n?"\xa0":" "}],/<br class="Apple-interchange-newline">/g,/<br>$/i])},createIdGenerator:function(t){var e=0;return function(){return t+e++}},isMsEdge:function(){
 return-1!==v.navigator.userAgent.indexOf(" Edge/")}};function A(e){var n,t;return t=[/^[IVXLMCD]{1,2}\.[ \u00a0]/,/^[ivxlmcd]{1,2}\.[ \u00a0]/,/^[a-z]{1,2}[\.\)][ \u00a0]/,/^[A-Z]{1,2}[\.\)][ \u00a0]/,/^[0-9]+\.[ \u00a0]/,/^[\u3007\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d]+\.[ \u00a0]/,/^[\u58f1\u5f10\u53c2\u56db\u4f0d\u516d\u4e03\u516b\u4e5d\u62fe]+\.[ \u00a0]/],e=e.replace(/^[\u00a0 ]+/,""),b.each(t,function(t){if(t.test(e))return!(n=!0)}),n}function I(t){var i,a,s=1;function n(t){var e="";if(3===t.type)return t.value;if(t=t.firstChild)for(;e+=n(t),t=t.next;);return e}function u(t,e){if(3===t.type&&e.test(t.value))return t.value=t.value.replace(e,""),!1;if(t=t.firstChild)do{if(!u(t,e))return!1}while(t=t.next);return!0}function e(e,n,r){var o=e._listLevel||s;o!==s&&(o<s?i&&(i=i.parent.parent):(a=i,i=null)),i&&i.name===n?i.append(e):(a=a||i,i=new S(n,1),1<r&&i.attr("start",&q
 uot;"+r),e.wrap(i)),e.name="li",s<o&&a&&a.lastChild.append(i),s=o,function t(e){if(e._listIgnore)e.remove();else if(e=e.firstChild)for(;t(e),e=e.next;);}(e),u(e,/^\u00a0+/),u(e,/^\s*([\u2022\u00b7\u00a7\u25CF]|\w+\.)/),u(e,/^\u00a0+/)}for(var r=[],o=t.firstChild;null!=o;)if(r.push(o),null!==(o=o.walk()))for(;void 0!==o&&o.parent!==t;)o=o.walk();for(var l=0;l<r.length;l++)if("p"===(t=r[l]).name&&t.firstChild){var c=n(t);if(/^[\s\u00a0]*[\u2022\u00b7\u00a7\u25CF]\s*/.test(c)){e(t,"ul");continue}if(A(c)){var f=/([0-9]+)\./.exec(c),d=1;f&&(d=parseInt(f[1],10)),e(t,"ol",d);continue}if(t._listLevel){e(t,"ul",1);continue}i=null}else a=i,i=null}function M(n,r,o,i){var a,s={},t=n.dom.parseStyle(i);return b.each(t,function(t,e){switch(e){case"mso-list":(a=/\w+ \w+([0-9]+)/i.exec(i))&&(o._listLevel=parseInt(a[1],10)),/Ignore/i.test(t)&&o.firstChild&&(o._listIgn
 ore=!0,o.firstChild._listIgnore=!0);break;case"horiz-align":e="text-align";break;case"vert-align":e="vertical-align";break;case"font-color":case"mso-foreground":e="color";break;case"mso-background":case"mso-highlight":e="background";break;case"font-weight":case"font-style":return void("normal"!==t&&(s[e]=t));case"mso-element":if(/^(comment|comment-list)$/i.test(t))return void o.remove()}0!==e.indexOf("mso-comment")?0!==e.indexOf("mso-")&&("all"===m.getRetainStyleProps(n)||r&&r[e])&&(s[e]=t):o.remove()}),/(bold)/i.test(s["font-weight"])&&(delete s["font-weight"],o.wrap(new S("b",1))),/(italic)/i.test(s["font-style"])&&(delete s["font-style"],o.wrap(new S("i",1))),(s=n.dom.serializeStyle(s,o.name))||null}var B,H
 ,j,L,N,$={preProcess:function(t,e){return m.shouldUseDefaultFilters(t)?function(r,t){var e,o;(e=m.getRetainStyleProps(r))&&(o=b.makeMap(e.split(/[, ]/))),t=E.filter(t,[/<br class="?Apple-interchange-newline"?>/gi,/<b[^>]+id="?docs-internal-[^>]*>/gi,/<!--[\s\S]+?-->/gi,/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,[/<(\/?)s>/gi,"<$1strike>"],[/&nbsp;/gi,"\xa0"],[/<span\s+style\s*=\s*"\s*mso-spacerun\s*:\s*yes\s*;?\s*"\s*>([\s\u00a0]*)<\/span>/gi,function(t,e){return 0<e.length?e.replace(/./," ").slice(Math.floor(e.length/2)).split("").join("\xa0"):""}]]);var n=m.getWordValidElements(r),i=O({valid_elements:n,valid_children:"-li[p]"});b.each(i.elements,function(t){t.attributes["class"]||(t.attributes["class"]={},t.attributesOrde
 r.push("class")),t.attributes.style||(t.attributes.style={},t.attributesOrder.push("style"))});var a=k({},i);a.addAttributeFilter("style",function(t){for(var e,n=t.length;n--;)(e=t[n]).attr("style",M(r,o,e,e.attr("style"))),"span"===e.name&&e.parent&&!e.attributes.length&&e.unwrap()}),a.addAttributeFilter("class",function(t){for(var e,n,r=t.length;r--;)n=(e=t[r]).attr("class"),/^(MsoCommentReference|MsoCommentText|msoDel)$/i.test(n)&&e.remove(),e.attr("class",null)}),a.addNodeFilter("del",function(t){for(var e=t.length;e--;)t[e].remove()}),a.addNodeFilter("a",function(t){for(var e,n,r,o=t.length;o--;)if(n=(e=t[o]).attr("href"),r=e.attr("name"),n&&-1!==n.indexOf("#_msocom_"))e.remove();else if(n&&0===n.indexOf("file://")&&(n=n.split("#")[1])&&(n="#"+n),n
 ||r){if(r&&!/^_?(?:toc|edn|ftn)/i.test(r)){e.unwrap();continue}e.attr({href:n,name:r})}else e.unwrap()});var s=a.parse(t);return m.shouldConvertWordFakeLists(r)&&I(s),t=R({validate:r.settings.validate},i).serialize(s)}(t,e):e},isWordContent:function(t){return/<font face="Times New Roman"|class="?Mso|style="[^"]*\bmso-|style='[^'']*\bmso-|w:WordDocument/i.test(t)||/class="OutlineElement/.test(t)||/id="?docs\-internal\-guid\-/.test(t)}},W=function(t,e){return{content:t,cancelled:e}},z=function(t,e,n,r){var o,i,a,s,u,l,c=f(t,e,n,r);return t.hasEventListeners("PastePostProcess")&&!c.isDefaultPrevented()?(o=t,i=c.content,a=n,s=r,u=o.dom.create("div",{style:"display:none"},i),l=d(o,u,a,s),W(l.node.innerHTML,l.isDefaultPrevented())):W(c.content,c.isDefaultPrevented())},U=function(t,e,n){var r=$.isWordContent(e),o=r?$.preProcess(t,e):e;return z(t,o,n,r)},V=function(t,e){var n,r;return t.insertContent
 ((n=e,r=t.dom.create("body",{},n),b.each(r.querySelectorAll("meta"),function(t){return t.parentNode.removeChild(t)}),r.innerHTML),{merge:m.shouldMergeFormats(t),paste:!0}),!0},q=function(t){return/^https?:\/\/[\w\?\-\/+=.&%@~#]+$/i.test(t)},K=function(t){return q(t)&&/.(gif|jpe?g|png)$/.test(t)},G=function(t,e,n){return!(!1!==t.selection.isCollapsed()||!q(e)||(o=e,i=n,(r=t).undoManager.extra(function(){i(r,o)},function(){r.execCommand("mceInsertLink",!1,o)}),0));var r,o,i},X=function(t,e,n){return!!K(e)&&(o=e,i=n,(r=t).undoManager.extra(function(){i(r,o)},function(){r.insertContent('<img src="'+o+'">')}),!0);var r,o,i},Y=function(t,e){var n,r;!1===m.isSmartPasteEnabled(t)?V(t,e):(n=t,r=e,b.each([G,X,V],function(t){return!0!==t(n,r,V)}))},Z=function(t){return function(){return t}},J=Z(!1),Q=Z(!0),tt=J,et=Q,nt=function(){return rt},rt=(L={fold:function(t,e){return t()},is:tt,isSome:tt,isNone:et,getOr:j=function(t){retur
 n t},getOrThunk:H=function(t){return t()},getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:function(){return null},getOrUndefined:function(){return undefined},or:j,orThunk:H,map:nt,ap:nt,each:function(){},bind:nt,flatten:nt,exists:tt,forall:et,filter:nt,equals:B=function(t){return t.isNone()},equals_:B,toArray:function(){return[]},toString:Z("none()")},Object.freeze&&Object.freeze(L),L),ot=function(n){var t=function(){return n},e=function(){return o},r=function(t){return t(n)},o={fold:function(t,e){return e(n)},is:function(t){return n===t},isSome:et,isNone:tt,getOr:t,getOrThunk:t,getOrDie:t,getOrNull:t,getOrUndefined:t,or:e,orThunk:e,map:function(t){return ot(t(n))},ap:function(t){return t.fold(nt,function(t){return ot(t(n))})},each:function(t){t(n)},bind:r,flatten:t,exists:r,forall:r,filter:function(t){return t(n)?o:rt},equals:function(t){return t.is(n)},equals_:function(t,e){return t.fold(tt,function(t){return e(n,t)
 })},toArray:function(){return[n]},toString:function(){return"some("+n+")"}};return o},it={some:ot,none:nt,from:function(t){return null===t||t===undefined?rt:ot(t)}},at=(N="function",function(t){return function(t){if(null===t)return"null";var e=typeof t;return"object"===e&&Array.prototype.isPrototypeOf(t)?"array":"object"===e&&String.prototype.isPrototypeOf(t)?"string":e}(t)===N}),st=function(t,e){for(var n=t.length,r=new Array(n),o=0;o<n;o++){var i=t[o];r[o]=e(i,o,t)}return r},ut=function(t,e){for(var n=0,r=t.length;n<r;n++)e(t[n],n,t)},lt=Array.prototype.slice,ct=at(Array.from)?Array.from:function(t){return lt.call(t)},ft=function(t){var n=it.none(),e=[],r=function(t){o()?a(t):e.push(t)},o=function(){return n.isSome()},i=function(t){ut(t,a)},a=function(e){n.each(function(t){v.setTimeout(function(){e(t)},0)})};return t(function(t){n=it.some(t),i(e),e=[]}),{get:r,map:function(n){retu
 rn ft(function(e){r(function(t){e(n(t))})})},isReady:o}},dt={nu:ft,pure:function(e){return ft(function(t){t(e)})}},mt=function(e){var t=function(t){var r;e((r=t,function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=this;v.setTimeout(function(){r.apply(n,t)},0)}))},n=function(){return dt.nu(t)};return{map:function(r){return mt(function(n){t(function(t){var e=r(t);n(e)})})},bind:function(n){return mt(function(e){t(function(t){n(t).get(e)})})},anonBind:function(n){return mt(function(e){t(function(t){n.get(e)})})},toLazy:n,toCached:function(){var e=null;return mt(function(t){null===e&&(e=n()),e.get(t)})},get:t}},gt={nu:mt,pure:function(e){return mt(function(t){t(e)})}},pt=function(a,t){return t(function(r){var o=[],i=0;0===a.length?r([]):ut(a,function(t,e){var n;t.get((n=e,function(t){o[n]=t,++i>=a.length&&r(o)}))})})},vt=function(t,e){var n=st(t,e);return pt(n,gt.nu)},ht=function(t,e,n){var r=n||x(e),o=U(t,p(e),r);!1===o.cancelled&&Y(t
 ,o.content)},yt=function(t,e){e=t.dom.encode(e).replace(/\r\n/g,"\n"),e=C(e,t.settings.forced_root_block,t.settings.forced_root_block_attrs),ht(t,e,!1)},bt=function(t){var e={};if(t){if(t.getData){var n=t.getData("Text");n&&0<n.length&&-1===n.indexOf("data:text/mce-internal,")&&(e["text/plain"]=n)}if(t.types)for(var r=0;r<t.types.length;r++){var o=t.types[r];try{e[o]=t.getData(o)}catch(i){e[o]=""}}}return e},xt=function(t,e){return e in t&&0<t[e].length},Pt=function(t){return xt(t,"text/html")||xt(t,"text/plain")},wt=E.createIdGenerator("mceclip"),_t=function(e,t,n){var r,o,i,a,s="paste"===t.type?t.clipboardData:t.dataTransfer;if(e.settings.paste_data_images&&s){var u=(i=(o=s).items?st(ct(o.items),function(t){return t.getAsFile()}):[],a=o.files?ct(o.files):[],function(t,e){for(var n=[],r=0,o=t.length;r<o;r++){var i=t[r];e(i,r,t)&&n.pus
 h(i)}return n}(0<i.length?i:a,function(t){return/^image\/(jpeg|png|gif|bmp)$/.test(t.type)}));if(0<u.length)return t.preventDefault(),(r=u,vt(r,function(r){return gt.nu(function(t){var e=r.getAsFile?r.getAsFile():r,n=new window.FileReader;n.onload=function(){t({blob:e,uri:n.result})},n.readAsDataURL(e)})})).get(function(t){n&&e.selection.setRng(n),ut(t,function(t){!function(t,e){var n,r,o,i,a,s,u,l=(n=e.uri,-1!==(r=n.indexOf(","))?n.substr(r+1):null),c=wt(),f=t.settings.images_reuse_filename&&e.blob.name?(o=t,i=e.blob.name,(a=i.match(/([\s\S]+?)\.(?:jpeg|jpg|png|gif)$/i))?o.dom.encode(a[1]):null):c,d=new v.Image;if(d.src=e.uri,s=t.settings,u=d,!s.images_dataimg_filter||s.images_dataimg_filter(u)){var m,g=t.editorUpload.blobCache,p=void 0;(m=g.findFirst(function(t){return t.base64()===l}))?p=m:(p=g.create(c,e.blob,l,f),g.add(p)),ht(t,'<img src="'+p.blobUri()+'">',!1)}else ht(t,'<img src="'+e.uri+'">',!1)}(e,t)})}),!0}ret
 urn!1},Dt=function(t){return o.metaKeyPressed(t)&&86===t.keyCode||t.shiftKey&&45===t.keyCode},Tt=function(c,f,d){var m,g=0;function p(t,e,n,r){var o,i;xt(t,"text/html")?o=t["text/html"]:(o=f.getHtml(),r=r||x(o),f.isDefaultContent(o)&&(n=!0)),o=E.trimHtml(o),f.remove(),i=!1===r&&T(o),o.length&&!i||(n=!0),n&&(o=xt(t,"text/plain")&&i?t["text/plain"]:E.innerText(o)),f.isDefaultContent(o)?e||c.windowManager.alert("Please use Ctrl+V/Cmd+V keyboard shortcuts to paste contents."):n?yt(c,o):ht(c,o,r)}c.on("keydown",function(t){function e(t){Dt(t)&&!t.isDefaultPrevented()&&f.remove()}if(Dt(t)&&!t.isDefaultPrevented()){if((m=t.shiftKey&&86===t.keyCode)&&h.webkit&&-1!==v.navigator.userAgent.indexOf("Version/"))return;if(t.stopImmediatePropagation(),g=(new Date).getTime(),h.ie&&m)return t.preventDefault(),void n(c,!0
 );f.remove(),f.create(),c.once("keyup",e),c.once("paste",function(){c.off("keyup",e)})}}),c.on("paste",function(t){var e,n,r,o=(new Date).getTime(),i=(e=c,n=bt(t.clipboardData||e.getDoc().dataTransfer),E.isMsEdge()?b.extend(n,{"text/html":""}):n),a=(new Date).getTime()-o,s=(new Date).getTime()-g-a<1e3,u="text"===d.get()||m,l=xt(i,P());m=!1,t.isDefaultPrevented()||(r=t.clipboardData,-1!==v.navigator.userAgent.indexOf("Android")&&r&&r.items&&0===r.items.length)?f.remove():Pt(i)||!_t(c,t,f.getLastRng()||c.selection.getRng())?(s||t.preventDefault(),!h.ie||s&&!t.ieFake||xt(i,"text/html")||(f.create(),c.dom.bind(f.getEl(),"paste",function(t){t.stopPropagation()}),c.getDoc().execCommand("Paste",!1,null),i["text/html"]=f.getHtml()),xt(i,"text/html")?(t.preventDefault(),l||(l=x(i["text/html"])),p(i,s,u,l)):y.setEditorTi
 meout(c,function(){p(i,s,u,l)},0)):f.remove()})},Ct=function(t){return h.ie&&t.inline?v.document.body:t.getBody()},kt=function(e,t,n){var r;Ct(r=e)!==r.getBody()&&e.dom.bind(t,"paste keyup",function(t){Rt(e,n)||e.fire("paste")})},St=function(t){return t.dom.get("mcepastebin")},Ot=function(t,e){return e===t},Rt=function(t,e){var n,r=St(t);return(n=r)&&"mcepastebin"===n.id&&Ot(e,r.innerHTML)},Ft=function(a){var s=l(null),u="%MCEPASTEBIN%";return{create:function(){return e=s,n=u,o=(t=a).dom,i=t.getBody(),e.set(t.selection.getRng()),r=t.dom.add(Ct(t),"div",{id:"mcepastebin","class":"mce-pastebin",contentEditable:!0,"data-mce-bogus":"all",style:"position: fixed; top: 50%; width: 10px; height: 10px; overflow: hidden; opacity: 0"},n),(h.ie||h.gecko)&&o.setStyle(r,"left","rtl"===o.getStyle(i,"direction",
 !0)?65535:-65535),o.bind(r,"beforedeactivate focusin focusout",function(t){t.stopPropagation()}),kt(t,r,n),r.focus(),void t.selection.select(r,!0);var t,e,n,r,o,i},remove:function(){return function(t,e){if(St(t)){for(var n=void 0,r=e.get();n=t.dom.get("mcepastebin");)t.dom.remove(n),t.dom.unbind(n);r&&t.selection.setRng(r)}e.set(null)}(a,s)},getEl:function(){return St(a)},getHtml:function(){return function(n){var e,t,r,o,i,a=function(t,e){t.appendChild(e),n.dom.remove(e,!0)};for(t=b.grep(Ct(n).childNodes,function(t){return"mcepastebin"===t.id}),e=t.shift(),b.each(t,function(t){a(e,t)}),r=(o=n.dom.select("div[id=mcepastebin]",e)).length-1;0<=r;r--)i=n.dom.create("div"),e.insertBefore(i,o[r]),a(i,o[r]);return e?e.innerHTML:""}(a)},getLastRng:function(){return s.get()},isDefault:function(){return Rt(a,u)},isDefaultContent:function(t){return Ot(u,t)}}},Et=function(n,t){var e=Ft(n);return n.on("preInit",func
 tion(){return Tt(a=n,e,t),void a.parser.addNodeFilter("img",function(t,e,n){var r,o=function(t){t.attr("data-mce-object")||s===h.transparentSrc||t.remove()};if(!a.settings.paste_data_images&&(r=n).data&&!0===r.data.paste)for(var i=t.length;i--;)(s=t[i].attributes.map.src)&&(0===s.indexOf("webkit-fake-url")?o(t[i]):a.settings.allow_html_data_urls||0!==s.indexOf("data:")||o(t[i]))});var a,s}),{pasteFormat:t,pasteHtml:function(t,e){return ht(n,t,e)},pasteText:function(t){return yt(n,t)},pasteImageData:function(t,e){return _t(n,t,e)},getDataTransferItems:bt,hasHtmlOrText:Pt,hasContentType:xt}},At=function(){},It=function(t,e,n){if(r=t,!1!==h.iOS||r===undefined||"function"!=typeof r.setData||!0===E.isMsEdge())return!1;try{return t.clearData(),t.setData("text/html",e),t.setData("text/plain",n),t.setData(P(),e),!0}catch(o){return!1}var r},Mt=function(t,e,n,r){It(t.clipboardData,e.html,e.text)?(t.p
 reventDefault(),r()):n(e.html,r)},Bt=function(s){return function(t,e){var n=g(t),r=s.dom.create("div",{contenteditable:"false","data-mce-bogus":"all"}),o=s.dom.create("div",{contenteditable:"true"},n);s.dom.setStyles(r,{position:"fixed",top:"0",left:"-3000px",width:"1000px",overflow:"hidden"}),r.appendChild(o),s.dom.add(s.getBody(),r);var i=s.selection.getRng();o.focus();var a=s.dom.createRng();a.selectNodeContents(o),s.selection.setRng(a),setTimeout(function(){s.selection.setRng(i),r.parentNode.removeChild(r),e()},0)}},Ht=function(t){return{html:t.selection.getContent({contextual:!0}),text:t.selection.getContent({format:"text"})}},jt=function(t){return!t.selection.isCollapsed()||!!(e=t).dom.getParent(e.selection.getStart(),"td[data-mce-selected],th[data-mce-selected]",e.getBody());var e},Lt=function(t){var e,n;t.on("cut",(e=t,function(t){jt(e)&
 amp;&Mt(t,Ht(e),Bt(e),function(){setTimeout(function(){e.execCommand("Delete")},0)})})),t.on("copy",(n=t,function(t){jt(n)&&Mt(t,Ht(n),Bt(n),At)}))},Nt=tinymce.util.Tools.resolve("tinymce.dom.RangeUtils"),$t=function(t,e){return Nt.getCaretRangeFromPoint(e.clientX,e.clientY,t.getDoc())},Wt=function(t,e){t.focus(),t.selection.setRng(e)},zt=function(a,s,u){m.shouldBlockDrop(a)&&a.on("dragend dragover draggesture dragdrop drop drag",function(t){t.preventDefault(),t.stopPropagation()}),m.shouldPasteDataImages(a)||a.on("drop",function(t){var e=t.dataTransfer;e&&e.files&&0<e.files.length&&t.preventDefault()}),a.on("drop",function(t){var e,n;if(n=$t(a,t),!t.isDefaultPrevented()&&!u.get()){e=s.getDataTransferItems(t.dataTransfer);var r,o=s.hasContentType(e,P());if((s.hasHtmlOrText(e)&&(!(r=e["text/plain"])||0!==r.indexOf("file://"))||!s.pasteImageDat
 a(t,n))&&n&&m.shouldFilterDrop(a)){var i=e["mce-internal"]||e["text/html"]||e["text/plain"];i&&(t.preventDefault(),y.setEditorTimeout(a,function(){a.undoManager.transact(function(){e["mce-internal"]&&a.execCommand("Delete"),Wt(a,n),i=E.trimHtml(i),e["text/html"]?s.pasteHtml(i,o):s.pasteText(i)})}))}}}),a.on("dragstart",function(t){u.set(!0)}),a.on("dragover dragend",function(t){m.shouldPasteDataImages(a)&&!1===u.get()&&(t.preventDefault(),Wt(a,$t(a,t))),"dragend"===t.type&&u.set(!1)})},Ut=function(t){var e=t.plugins.paste,n=m.getPreProcess(t);n&&t.on("PastePreProcess",function(t){n.call(e,e,t)});var r=m.getPostProcess(t);r&&t.on("PastePostProcess",function(t){r.call(e,e,t)})};function Vt(e,n){e.on("PastePreProcess",function(t){t.content=n(e,t.content,t.internal,t.wordContent)})}function qt(t,e)
 {if(!$.isWordContent(e))return e;var n=[];b.each(t.schema.getBlockElements(),function(t,e){n.push(e)});var r=new RegExp("(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*(<\\/?("+n.join("|")+")[^>]*>)(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*","g");return e=E.filter(e,[[r,"$1"]]),e=E.filter(e,[[/<br><br>/g,"<BR><BR>"],[/<br>/g," "],[/<BR><BR>/g,"<br>"]])}function Kt(t,e,n,r){if(r||n)return e;var l,o=m.getWebkitStyles(t);if(!1===m.shouldRemoveWebKitStyles(t)||"all"===o)return e;if(o&&(l=o.split(/[, ]/)),l){var c=t.dom,f=t.selection.getNode();e=e.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi,function(t,e,n,r){var o=c.parseStyle(c.decode(n)),i={};if("none"===l)return e+r;for(var a=0;a<l.length;a++){var s=o[l[a]],u=c.getStyle(f,l[a],!0);/color/.test(l[a])&&(s=c.toHex(s),u=c.toHex(u))
 ,u!==s&&(i[l[a]]=s)}return(i=c.serializeStyle(i,"span"))?e+' style="'+i+'"'+r:e+r})}else e=e.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi,"$1$3");return e=e.replace(/(<[^>]+) data-mce-style="([^"]+)"([^>]*>)/gi,function(t,e,n,r){return e+' style="'+n+'"'+r})}function Gt(n,t){n.$("a",t).find("font,u").each(function(t,e){n.dom.remove(e,!0)})}var Xt=function(t){var e,n;h.webkit&&Vt(t,Kt),h.ie&&(Vt(t,qt),n=Gt,(e=t).on("PastePostProcess",function(t){n(e,t.node)}))},Yt=function(t,e,n){var r=n.control;r.active("text"===e.pasteFormat.get()),t.on("PastePlainTextToggle",function(t){r.active(t.state)})},Zt=function(t,e){var n=function(r){for(var o=[],t=1;t<arguments.length;t++)o[t-1]=arguments[t];return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=o.concat(t);return r.apply(null,n)}}(Yt,t,e);t
 .addButton("pastetext",{active:!1,icon:"pastetext",tooltip:"Paste as text",cmd:"mceTogglePlainTextPaste",onPostRender:n}),t.addMenuItem("pastetext",{text:"Paste as text",selectable:!0,active:e.pasteFormat,cmd:"mceTogglePlainTextPaste",onPostRender:n})};e.add("paste",function(t){if(!1===a(t)){var e=l(!1),n=l(!1),r=l(m.isPasteAsTextEnabled(t)?"text":"html"),o=Et(t,r),i=Xt(t);return Zt(t,o),c(t,o,e),Ut(t),Lt(t),zt(t,o,n),s(o,i)}})}(window);
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of file
</span></span></pre></div>
<a id="trunksrcjs_enqueuesvendortinymcepluginstabfocuspluginjs"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/js/_enqueues/vendor/tinymce/plugins/tabfocus/plugin.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/js/_enqueues/vendor/tinymce/plugins/tabfocus/plugin.js  2019-05-15 19:53:42 UTC (rev 45315)
+++ trunk/src/js/_enqueues/vendor/tinymce/plugins/tabfocus/plugin.js    2019-05-15 23:44:37 UTC (rev 45316)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,5 @@
</span><span class="cx" style="display: block; padding: 0 10px"> (function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-var tabfocus = (function () {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+var tabfocus = (function (domGlobals) {
</ins><span class="cx" style="display: block; padding: 0 10px">     'use strict';
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -90,7 +90,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">           } else {
</span><span class="cx" style="display: block; padding: 0 10px">             global$4.setTimeout(function () {
</span><span class="cx" style="display: block; padding: 0 10px">               if (!global$3.webkit) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                window.focus();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                domGlobals.window.focus();
</ins><span class="cx" style="display: block; padding: 0 10px">               }
</span><span class="cx" style="display: block; padding: 0 10px">               el.focus();
</span><span class="cx" style="display: block; padding: 0 10px">             }, 10);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -120,5 +120,5 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     return Plugin;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-}());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+}(window));
</ins><span class="cx" style="display: block; padding: 0 10px"> })();
</span></span></pre></div>
<a id="trunksrcjs_enqueuesvendortinymcepluginstabfocuspluginminjs"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/js/_enqueues/vendor/tinymce/plugins/tabfocus/plugin.min.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/js/_enqueues/vendor/tinymce/plugins/tabfocus/plugin.min.js      2019-05-15 19:53:42 UTC (rev 45315)
+++ trunk/src/js/_enqueues/vendor/tinymce/plugins/tabfocus/plugin.min.js        2019-05-15 23:44:37 UTC (rev 45316)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1 +1 @@
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),c=tinymce.util.Tools.resolve("tinymce.EditorManager"),s=tinymce.util.Tools.resolve("tinymce.Env"),a=tinymce.util.Tools.resolve("tinymce.util.Delay"),y=tinymce.util.Tools.resolve("tinymce.util.Tools"),f=tinymce.util.Tools.resolve("tinymce.util.VK"),d=function(e){return e.getParam("tab_focus",e.getParam("tabfocus_elements",":prev,:next"))},m=t.DOM,n=function(e){e.keyCode!==f.TAB||e.ctrlKey||e.altKey||e.metaKey||e.preventDefault()},i=function(r){function e(n){var i,o,e,l;if(!(n.keyCode!==f.TAB||n.ctrlKey||n.altKey||n.metaKey||n.isDefaultPrevented())&&(1===(e=y.explode(d(r))).length&&(e[1]=e[0],e[0]=":prev"),o=n.shiftKey?&qu
 ot;:prev"===e[0]?u(-1):m.get(e[0]):":next"===e[1]?u(1):m.get(e[1]))){var t=c.get(o.id||o.name);o.id&&t?t.focus():a.setTimeout(function(){s.webkit||window.focus(),o.focus()},10),n.preventDefault()}function u(e){function t(t){return/INPUT|TEXTAREA|BUTTON/.test(t.tagName)&&c.get(n.id)&&-1!==t.tabIndex&&function e(t){return"BODY"===t.nodeName||"hidden"!==t.type&&"none"!==t.style.display&&"hidden"!==t.style.visibility&&e(t.parentNode)}(t)}if(o=m.select(":input:enabled,*[tabindex]:not(iframe)"),y.each(o,function(e,t){if(e.id===r.id)return i=t,!1}),0<e){for(l=i+1;l<o.length;l++)if(t(o[l]))return o[l]}else for(l=i-1;0<=l;l--)if(t(o[l]))return o[l];return null}}r.on("init",function(){r.inline&&m.setAttrib(r.getBody(),"tabIndex",null),r.on("keyup",n),s.gecko?r.on("keypress keydown",e):r.on("keydown",e)})};e.
 add("tabfocus",function(e){i(e)})}();
</del><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of file
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+!function(c){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),s=tinymce.util.Tools.resolve("tinymce.EditorManager"),a=tinymce.util.Tools.resolve("tinymce.Env"),y=tinymce.util.Tools.resolve("tinymce.util.Delay"),f=tinymce.util.Tools.resolve("tinymce.util.Tools"),d=tinymce.util.Tools.resolve("tinymce.util.VK"),m=function(e){return e.getParam("tab_focus",e.getParam("tabfocus_elements",":prev,:next"))},v=t.DOM,n=function(e){e.keyCode!==d.TAB||e.ctrlKey||e.altKey||e.metaKey||e.preventDefault()},i=function(r){function e(n){var i,o,e,l;if(!(n.keyCode!==d.TAB||n.ctrlKey||n.altKey||n.metaKey||n.isDefaultPrevented())&&(1===(e=f.explode(m(r))).length&&(e[1]=e[0],e[0]=":prev"),o=n.shiftKey?&q
 uot;:prev"===e[0]?u(-1):v.get(e[0]):":next"===e[1]?u(1):v.get(e[1]))){var t=s.get(o.id||o.name);o.id&&t?t.focus():y.setTimeout(function(){a.webkit||c.window.focus(),o.focus()},10),n.preventDefault()}function u(e){function t(t){return/INPUT|TEXTAREA|BUTTON/.test(t.tagName)&&s.get(n.id)&&-1!==t.tabIndex&&function e(t){return"BODY"===t.nodeName||"hidden"!==t.type&&"none"!==t.style.display&&"hidden"!==t.style.visibility&&e(t.parentNode)}(t)}if(o=v.select(":input:enabled,*[tabindex]:not(iframe)"),f.each(o,function(e,t){if(e.id===r.id)return i=t,!1}),0<e){for(l=i+1;l<o.length;l++)if(t(o[l]))return o[l]}else for(l=i-1;0<=l;l--)if(t(o[l]))return o[l];return null}}r.on("init",function(){r.inline&&v.setAttrib(r.getBody(),"tabIndex",null),r.on("keyup",n),a.gecko?r.on("keypress keydown",e):r.on("keydown",e)})}
 ;e.add("tabfocus",function(e){i(e)})}(window);
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of file
</span></span></pre></div>
<a id="trunksrcjs_enqueuesvendortinymceskinslightgrayskinmincss"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/js/_enqueues/vendor/tinymce/skins/lightgray/skin.min.css</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/js/_enqueues/vendor/tinymce/skins/lightgray/skin.min.css        2019-05-15 19:53:42 UTC (rev 45315)
+++ trunk/src/js/_enqueues/vendor/tinymce/skins/lightgray/skin.min.css  2019-05-15 23:44:37 UTC (rev 45316)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1 +1 @@
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-.mce-container,.mce-container *,.mce-widget,.mce-widget *,.mce-reset{margin:0;padding:0;border:0;outline:0;vertical-align:top;background:transparent;text-decoration:none;color:#595959;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;text-shadow:none;float:none;position:static;width:auto;height:auto;white-space:nowrap;cursor:inherit;-webkit-tap-highlight-color:transparent;line-height:normal;font-weight:normal;text-align:left;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;direction:ltr;max-width:none}.mce-widget button{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.mce-container *[unselectable]{-moz-user-select:none;-webkit-user-select:none;-o-user-select:none;user-select:none}.word-wrap{word-wrap:break-word;-ms-word-break:break-all;word-break:break-all;word-break:break-word;-ms-hyphens:auto
 ;-moz-hyphens:auto;-webkit-hyphens:auto;hyphens:auto}.mce-fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.mce-fade.mce-in{opacity:1}.mce-tinymce{visibility:inherit !important;position:relative}.mce-fullscreen{border:0;padding:0;margin:0;overflow:hidden;height:100%;z-index:100}div.mce-fullscreen{position:fixed;top:0;left:0;width:100%;height:auto}.mce-tinymce{display:block;-webkit-box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);box-shadow:0 1px 2px rgba(0, 0, 0, 0.2)}.mce-statusbar>.mce-container-body{display:flex;padding-right:16px}.mce-statusbar>.mce-container-body .mce-path{flex:1}.mce-wordcount{font-size:inherit;text-transform:uppercase;padding:8px 0}div.mce-edit-area{background:#FFF;filter:none}.mce-statusbar{position:relative}.mce-statusbar .mce-container-body{position:relative;font-size:11px}.mce-fullscreen .mce-resizehandle{display:none}.mce-statusbar .mce-flow-layout-item{margin:0}.mce-charmap{bo
 rder-collapse:collapse}.mce-charmap td{cursor:default;border:1px solid #c5c5c5;width:20px;height:20px;line-height:20px;text-align:center;vertical-align:middle;padding:2px}.mce-charmap td div{text-align:center}.mce-charmap td:hover{background:white}.mce-grid td.mce-grid-cell div{border:1px solid #c5c5c5;width:15px;height:15px;margin:0;cursor:pointer}.mce-grid td.mce-grid-cell div:focus{border-color:#91bbe9}.mce-grid td.mce-grid-cell div[disabled]{cursor:not-allowed}.mce-grid{border-spacing:2px;border-collapse:separate}.mce-grid a{display:block;border:1px solid transparent}.mce-grid a:hover,.mce-grid a:focus{border-color:#91bbe9}.mce-grid-border{margin:0 4px 0 4px}.mce-grid-border a{border-color:#c5c5c5;width:13px;height:13px}.mce-grid-border a:hover,.mce-grid-border a.mce-active{border-color:#91bbe9;background:#bdd6f2}.mce-text-center{text-align:center}div.mce-tinymce-inline{width:100%}.mce-colorbtn-trans div{text-align:center;vertical-align:middle;font-weight:bold;font-size:20px;lin
 e-height:16px;color:#8b8b8b}.mce-monospace{font-family:"Courier New",Courier,monospace}.mce-toolbar-grp .mce-flow-layout-item{margin-bottom:0}.mce-container b{font-weight:bold}.mce-container p{margin-bottom:5px}.mce-container a{cursor:pointer;color:#2276d2}.mce-container a:hover{text-decoration:underline}.mce-container ul{margin-left:15px}.mce-container .mce-table-striped{border-collapse:collapse;margin:10px}.mce-container .mce-table-striped thead>tr{background-color:#fafafa}.mce-container .mce-table-striped thead>tr th{font-weight:bold}.mce-container .mce-table-striped td,.mce-container .mce-table-striped th{padding:5px}.mce-container .mce-table-striped tr:nth-child(even){background-color:#fafafa}.mce-container .mce-table-striped tbody>tr:hover{background-color:#e1e1e1}.mce-branding{font-size:inherit;text-transform:uppercase;white-space:pre;padding:8px 0}.mce-branding a{font-size:inherit;color:inherit}.mce-top-part{position:relative}.mce-top-part::before{content:
 '';position:absolute;-webkit-box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);top:0;right:0;bottom:0;left:0;pointer-events:none}.mce-rtl .mce-wordcount{left:0;right:auto}.mce-rtl .mce-statusbar>.mce-container-body>*:last-child{padding-right:0;padding-left:10px}.mce-rtl .mce-path{text-align:right;padding-right:16px}.mce-croprect-container{position:absolute;top:0;left:0}.mce-croprect-handle{position:absolute;top:0;left:0;width:20px;height:20px;border:2px solid white}.mce-croprect-handle-nw{border-width:2px 0 0 2px;margin:-2px 0 0 -2px;cursor:nw-resize;top:100px;left:100px}.mce-croprect-handle-ne{border-width:2px 2px 0 0;margin:-2px 0 0 -20px;cursor:ne-resize;top:100px;left:200px}.mce-croprect-handle-sw{border-width:0 0 2px 2px;margin:-20px 2px 0 -2px;cursor:sw-resize;top:200px;left:100px}.mce-croprect-handle-se{border-width:0 2px 2px 0;margin:-20px 0 0 -20px;cursor:se-resize;top:200px;left:200px}.mce-cro
 prect-handle-move{position:absolute;cursor:move;border:0}.mce-croprect-block{opacity:.5;filter:alpha(opacity=50);zoom:1;position:absolute;background:black}.mce-croprect-handle:focus{border-color:#2276d2}.mce-croprect-handle-move:focus{outline:1px solid #2276d2}.mce-imagepanel{overflow:auto;background:black}.mce-imagepanel-bg{position:absolute;background:url('data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==')}.mce-imagepanel img{position:absolute}.mce-imagetool.mce-btn .mce-ico{display:block;width:20px;height:20px;text-align:center;line-height:20px;font-size:20px;padding:5px}.mce-arrow-up{margin-top:12px}.mce-arrow-down{margin-top:-12px}.mce-arrow:before,.mce-arrow:after{position:absolute;left:50%;display:block;width:0;height:0;border-style:solid;border-color:transparent;content:""}.mce-arrow.mce-arrow-up:before{top:-9px;border-bottom-color:#c5c5c5;border-width:0 9px 9px;margin-left:-9px}.mce-arrow.mce-arrow-down:before{bott
 om:-9px;border-top-color:#c5c5c5;border-width:9px 9px 0;margin-left:-9px}.mce-arrow.mce-arrow-up:after{top:-8px;border-bottom-color:#fff;border-width:0 8px 8px;margin-left:-8px}.mce-arrow.mce-arrow-down:after{bottom:-8px;border-top-color:#fff;border-width:8px 8px 0;margin-left:-8px}.mce-arrow.mce-arrow-left:before,.mce-arrow.mce-arrow-left:after{margin:0}.mce-arrow.mce-arrow-left:before{left:8px}.mce-arrow.mce-arrow-left:after{left:9px}.mce-arrow.mce-arrow-right:before,.mce-arrow.mce-arrow-right:after{left:auto;margin:0}.mce-arrow.mce-arrow-right:before{right:8px}.mce-arrow.mce-arrow-right:after{right:9px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-left:before{left:-9px;top:50%;border-right-color:#c5c5c5;border-width:9px 9px 9px 0;margin-top:-9px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-left:after{left:-8px;top:50%;border-right-color:#fff;border-width:8px 8px 8px 0;margin-top:-8px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-left{margin-left:12px}.mce-arrow.mce-arrow-c
 enter.mce-arrow.mce-arrow-right:before{right:-9px;top:50%;border-left-color:#c5c5c5;border-width:9px 0 9px 9px;margin-top:-9px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-right:after{right:-8px;top:50%;border-left-color:#fff;border-width:8px 0 8px 8px;margin-top:-8px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-right{margin-left:-14px}.mce-edit-aria-container>.mce-container-body{display:flex}.mce-edit-aria-container>.mce-container-body .mce-edit-area{flex:1}.mce-edit-aria-container>.mce-container-body .mce-sidebar>.mce-container-body{display:flex;align-items:stretch;height:100%}.mce-edit-aria-container>.mce-container-body .mce-sidebar-panel{min-width:250px;max-width:250px;position:relative}.mce-edit-aria-container>.mce-container-body .mce-sidebar-panel>.mce-container-body{position:absolute;width:100%;height:100%;overflow:auto;top:0;left:0}.mce-sidebar-toolbar{border:0 solid #c5c5c5;border-left-width:1px}.mce-sidebar-toolbar .mce-btn{border-left:0;border-r
 ight:0}.mce-sidebar-toolbar .mce-btn.mce-active,.mce-sidebar-toolbar .mce-btn.mce-active:hover{background-color:#555c66}.mce-sidebar-toolbar .mce-btn.mce-active button,.mce-sidebar-toolbar .mce-btn.mce-active:hover button,.mce-sidebar-toolbar .mce-btn.mce-active button i,.mce-sidebar-toolbar .mce-btn.mce-active:hover button i{color:white;text-shadow:1px 1px none}.mce-sidebar-panel{border:0 solid #c5c5c5;border-left-width:1px}.mce-container,.mce-container-body{display:block}.mce-autoscroll{overflow:hidden}.mce-scrollbar{position:absolute;width:7px;height:100%;top:2px;right:2px;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-scrollbar-h{top:auto;right:auto;left:2px;bottom:2px;width:100%;height:7px}.mce-scrollbar-thumb{position:absolute;background-color:#000;border:1px solid #888;border-color:rgba(85,85,85,0.6);width:5px;height:100%}.mce-scrollbar-h .mce-scrollbar-thumb{width:100%;height:5px}.mce-scrollbar:hover,.mce-scrollbar.mce-active{background-color:#AAA;opacity:.6;filter:alpha(op
 acity=60);zoom:1}.mce-scroll{position:relative}.mce-panel{border:0 solid #f3f3f3;border:0 solid #c5c5c5;background-color:#fff}.mce-floatpanel{position:absolute;-webkit-box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);box-shadow:0 1px 2px rgba(0, 0, 0, 0.2)}.mce-floatpanel.mce-fixed{position:fixed}.mce-floatpanel .mce-arrow,.mce-floatpanel .mce-arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.mce-floatpanel .mce-arrow{border-width:11px}.mce-floatpanel .mce-arrow:after{border-width:10px;content:""}.mce-floatpanel.mce-popover{filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;-webkit-box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);top:0;left:0;background:#FFF;border:1px solid #c5c5c5;border:1px solid rgba(0,0,0,0.25)}.mce-floatpanel.mce-popover.mce-bottom{margin-top:10px
 ;*margin-top:0}.mce-floatpanel.mce-popover.mce-bottom>.mce-arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#c5c5c5;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.mce-floatpanel.mce-popover.mce-bottom>.mce-arrow:after{top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#FFF}.mce-floatpanel.mce-popover.mce-top{margin-top:-10px;*margin-top:0}.mce-floatpanel.mce-popover.mce-top>.mce-arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#c5c5c5;top:auto;bottom:-11px}.mce-floatpanel.mce-popover.mce-top>.mce-arrow:after{bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#FFF}.mce-floatpanel.mce-popover.mce-bottom.mce-start,.mce-floatpanel.mce-popover.mce-top.mce-start{margin-left:-22px}.mce-floatpanel.mce-popover.mce-bottom.mce-start>.mce-arrow,.mce-floatpanel.mce-popover.mce-top.mce-start>.mce-arrow{left:20px}.mce-floatpanel.mce-popover.mce-bottom.mce-end,.mce-floatpanel.mce-popover.mce-top.mce-end{
 margin-left:22px}.mce-floatpanel.mce-popover.mce-bottom.mce-end>.mce-arrow,.mce-floatpanel.mce-popover.mce-top.mce-end>.mce-arrow{right:10px;left:auto}.mce-fullscreen{border:0;padding:0;margin:0;overflow:hidden;height:100%}div.mce-fullscreen{position:fixed;top:0;left:0}#mce-modal-block{opacity:0;filter:alpha(opacity=0);zoom:1;position:fixed;left:0;top:0;width:100%;height:100%;background:#FFF}#mce-modal-block.mce-in{opacity:.5;filter:alpha(opacity=50);zoom:1}.mce-window-move{cursor:move}.mce-window{-webkit-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;background:#FFF;position:fixed;top:0;left:0;opacity:0;transform:scale(.1);transition:transform 100ms ease-in,opacity 150ms ease-in}.mce-window.mce-in{transform:scale(1);opacity:1}.mce-window-head{padding:9px 15px;border-bottom:1px solid #c5c5c5;position:relative}.m
 ce-window-head .mce-close{position:absolute;right:0;top:0;height:38px;width:38px;text-align:center;cursor:pointer}.mce-window-head .mce-close i{color:#9b9b9b}.mce-close:hover i{color:#bdbdbd}.mce-window-head .mce-title{line-height:20px;font-size:20px;font-weight:bold;text-rendering:optimizelegibility;padding-right:20px}.mce-window .mce-container-body{display:block}.mce-foot{display:block;background-color:#FFF;border-top:1px solid #c5c5c5}.mce-window-head .mce-dragh{position:absolute;top:0;left:0;cursor:move;width:90%;height:100%}.mce-window iframe{width:100%;height:100%}.mce-window-body .mce-listbox{border-color:#e2e4e7}.mce-window .mce-btn:hover{border-color:#c5c5c5}.mce-window .mce-btn:focus{border-color:#2276d2}.mce-window-body .mce-btn,.mce-foot .mce-btn{border-color:#c5c5c5}.mce-foot .mce-btn.mce-primary{border-color:transparent}.mce-rtl .mce-window-head .mce-close{position:absolute;right:auto;left:0}.mce-rtl .mce-window-head .mce-dragh{left:auto;right:0}.mce-rtl .mce-window-he
 ad .mce-title{direction:rtl;text-align:right;padding-right:0;padding-left:20px}.mce-tooltip{position:absolute;padding:5px;opacity:.8;filter:alpha(opacity=80);zoom:1;margin-top:1px}.mce-tooltip-inner{font-size:11px;background-color:#000;color:white;max-width:200px;padding:5px 8px 4px 8px;text-align:center;white-space:normal}.mce-tooltip-inner{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.mce-tooltip-arrow{position:absolute;width:0;height:0;line-height:0;border:5px dashed #000}.mce-tooltip-arrow-n{border-bottom-color:#000}.mce-tooltip-arrow-s{border-top-color:#000}.mce-tooltip-arrow-e{border-left-color:#000}.mce-tooltip-arrow-w{border-right-color:#000}.mce-tooltip-nw,.mce-tooltip-sw{margin-left:-14px}.mce-tooltip-ne,.mce-tooltip-se{margin-left:14px}.mce-tooltip-n .mce-tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-nw .mce-tooltip-arrow{top:0;left:10px;bord
 er-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-ne .mce-tooltip-arrow{top:0;right:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-s .mce-tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-sw .mce-tooltip-arrow{bottom:0;left:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-se .mce-tooltip-arrow{bottom:0;right:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-e .mce-tooltip-arrow{right:0;top:50%;margin-top:-5px;border-left-style:solid;border-right:none;border-top-color:transparent;border-bottom-color:transparent}.mce-tooltip-w .mce-tooltip-arrow{left:0;top:50%;margin-top:-5px;border-right-style:sol
 id;border-left:none;border-top-color:transparent;border-bottom-color:transparent}.mce-progress{display:inline-block;position:relative;height:20px}.mce-progress .mce-bar-container{display:inline-block;width:100px;height:100%;margin-right:8px;border:1px solid #ccc;overflow:hidden}.mce-progress .mce-text{display:inline-block;margin-top:auto;margin-bottom:auto;font-size:14px;width:40px;color:#595959}.mce-bar{display:block;width:0;height:100%;background-color:#dfdfdf;-webkit-transition:width .2s ease;transition:width .2s ease}.mce-notification{position:absolute;background-color:#fff;padding:5px;margin-top:5px;border-width:1px;border-style:solid;border-color:#c5c5c5;transition:transform 100ms ease-in,opacity 150ms ease-in;opacity:0;box-sizing:border-box}.mce-notification.mce-in{opacity:1}.mce-notification-success{background-color:#dff0d8;border-color:#d6e9c6}.mce-notification-info{background-color:#d9edf7;border-color:#779ECB}.mce-notification-warning{background-color:#fcf8e3;border-color
 :#faebcc}.mce-notification-error{background-color:#f2dede;border-color:#ebccd1}.mce-notification.mce-has-close{padding-right:15px}.mce-notification .mce-ico{margin-top:5px}.mce-notification-inner{word-wrap:break-word;-ms-word-break:break-all;word-break:break-all;word-break:break-word;-ms-hyphens:auto;-moz-hyphens:auto;-webkit-hyphens:auto;hyphens:auto;display:inline-block;font-size:14px;margin:5px 8px 4px 8px;text-align:center;white-space:normal;color:#31708f}.mce-notification-inner a{text-decoration:underline;cursor:pointer}.mce-notification .mce-progress{margin-right:8px}.mce-notification .mce-progress .mce-text{margin-top:5px}.mce-notification *,.mce-notification .mce-progress .mce-text{color:#595959}.mce-notification .mce-progress .mce-bar-container{border-color:#c5c5c5}.mce-notification .mce-progress .mce-bar-container .mce-bar{background-color:#595959}.mce-notification-success *,.mce-notification-success .mce-progress .mce-text{color:#3c763d}.mce-notification-success .mce-prog
 ress .mce-bar-container{border-color:#d6e9c6}.mce-notification-success .mce-progress .mce-bar-container .mce-bar{background-color:#3c763d}.mce-notification-info *,.mce-notification-info .mce-progress .mce-text{color:#31708f}.mce-notification-info .mce-progress .mce-bar-container{border-color:#779ECB}.mce-notification-info .mce-progress .mce-bar-container .mce-bar{background-color:#31708f}.mce-notification-warning *,.mce-notification-warning .mce-progress .mce-text{color:#8a6d3b}.mce-notification-warning .mce-progress .mce-bar-container{border-color:#faebcc}.mce-notification-warning .mce-progress .mce-bar-container .mce-bar{background-color:#8a6d3b}.mce-notification-error *,.mce-notification-error .mce-progress .mce-text{color:#a94442}.mce-notification-error .mce-progress .mce-bar-container{border-color:#ebccd1}.mce-notification-error .mce-progress .mce-bar-container .mce-bar{background-color:#a94442}.mce-notification .mce-close{position:absolute;top:6px;right:8px;font-size:20px;font
 -weight:bold;line-height:20px;color:#9b9b9b;cursor:pointer}.mce-abs-layout{position:relative}html .mce-abs-layout-item,.mce-abs-end{position:absolute}.mce-abs-end{width:1px;height:1px}.mce-container-body.mce-abs-layout{overflow:hidden}.mce-btn{border:1px solid #b3b3b3;border-color:transparent transparent transparent transparent;position:relative;text-shadow:0 1px 1px rgba(255,255,255,0.75);background:white;display:inline-block;*display:inline;*zoom:1;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.mce-btn:hover,.mce-btn:active{background:white;color:#595959;border-color:#e2e4e7}.mce-btn:focus{background:white;color:#595959;border-color:#e2e4e7}.mce-btn.mce-disabled button,.mce-btn.mce-disabled:hover button{cursor:default;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-btn.mce-active,.mce-btn.mce-active:hover,.mce-btn.mce-active:focus,.mce-btn.mce-active:active{-webkit-box-shadow:none;-moz-box-shadow:none;box-
 shadow:none;background:#555c66;color:white;border-color:transparent}.mce-btn.mce-active button,.mce-btn.mce-active:hover button,.mce-btn.mce-active i,.mce-btn.mce-active:hover i{color:white}.mce-btn:hover .mce-caret{border-top-color:#b5bcc2}.mce-btn.mce-active .mce-caret,.mce-btn.mce-active:hover .mce-caret{border-top-color:white}.mce-btn button{padding:4px 6px;font-size:14px;line-height:20px;*line-height:16px;cursor:pointer;color:#595959;text-align:center;overflow:visible;-webkit-appearance:none}.mce-btn button::-moz-focus-inner{border:0;padding:0}.mce-btn i{text-shadow:1px 1px none}.mce-primary.mce-btn-has-text{min-width:50px}.mce-primary{color:white;border:1px solid transparent;border-color:transparent;background-color:#2276d2}.mce-primary:hover,.mce-primary:focus{background-color:#1e6abc;border-color:transparent}.mce-primary.mce-disabled button,.mce-primary.mce-disabled:hover button{cursor:default;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;opacity:.4;filter:alp
 ha(opacity=40);zoom:1}.mce-primary.mce-active,.mce-primary.mce-active:hover,.mce-primary:not(.mce-disabled):active{background-color:#1e6abc;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.mce-primary button,.mce-primary button i{color:white;text-shadow:1px 1px none}.mce-btn .mce-txt{font-size:inherit;line-height:inherit;color:inherit}.mce-btn-large button{padding:9px 14px;font-size:16px;line-height:normal}.mce-btn-large i{margin-top:2px}.mce-btn-small button{padding:1px 5px;font-size:12px;*padding-bottom:2px}.mce-btn-small i{line-height:20px;vertical-align:top;*line-height:18px}.mce-btn .mce-caret{margin-top:8px;margin-left:0}.mce-btn-small .mce-caret{margin-top:8px;margin-left:0}.mce-caret{display:inline-block;*display:inline;*zoom:1;width:0;height:0;vertical-align:top;border-top:4px solid #b5bcc2;border-right:4px solid transparent;border-left:4px solid transparent;content:""}.mce-disabled .mce-caret{border-top-color:#aaa}.mce-caret.mce-up{border-bottom:4px 
 solid #b5bcc2;border-top:0}.mce-btn-flat{border:0;background:transparent;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;filter:none}.mce-btn-flat:hover,.mce-btn-flat.mce-active,.mce-btn-flat:focus,.mce-btn-flat:active{border:0;background:#e6e6e6;filter:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.mce-btn-has-text .mce-ico{padding-right:5px}.mce-rtl .mce-btn button{direction:rtl}.mce-toolbar .mce-btn-group{margin:0;padding:2px 0}.mce-btn-group .mce-btn{border-width:1px;margin:0;margin-left:2px}.mce-btn-group:not(:first-child){border-left:1px solid #d9d9d9;padding-left:0;margin-left:2px}.mce-btn-group{margin-left:2px}.mce-btn-group .mce-btn.mce-flow-layout-item{margin:0}.mce-rtl .mce-btn-group .mce-btn{margin-left:0;margin-right:2px}.mce-rtl .mce-btn-group .mce-first{margin-right:0}.mce-rtl .mce-btn-group:not(:first-child){border-left:none;border-right:1px solid #d9d9d9;padding-right:4px;margin-right:4px}.mce-checkbox{cursor:pointer}i.mce-i-checkbox
 {margin:0 3px 0 0;border:1px solid #c5c5c5;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;background-color:white;text-indent:-10em;overflow:hidden}.mce-checked i.mce-i-checkbox{color:#595959;font-size:16px;line-height:16px;text-indent:0}.mce-checkbox:focus i.mce-i-checkbox,.mce-checkbox.mce-focus i.mce-i-checkbox{border:1px solid #2276d2;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.mce-checkbox.mce-disabled .mce-label,.mce-checkbox.mce-disabled i.mce-i-checkbox{color:#bdbdbd}.mce-checkbox .mce-label{vertical-align:middle}.mce-rtl .mce-checkbox{direction:rtl;text-align:right}.mce-rtl i.mce-i-checkbox{margin:0 0 0 3px}.mce-combobox{position:relative;display:inline-block;*display:inline;*zoom:1;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;*height:32px}.mce-combobox input{border:1px solid #c5c5c5;border-right-color:#c5c5c5;height:28px}.mce-combobox.mce-disabled input{color:#bdbdbd}.mce-combobox .mce-btn{border:1px solid #c5c5c5;border-left:
 0;margin:0}.mce-combobox button{padding-right:8px;padding-left:8px}.mce-combobox.mce-disabled .mce-btn button{cursor:default;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-combobox .mce-status{position:absolute;right:2px;top:50%;line-height:16px;margin-top:-8px;font-size:12px;width:15px;height:15px;text-align:center;cursor:pointer}.mce-combobox.mce-has-status input{padding-right:20px}.mce-combobox.mce-has-open .mce-status{right:37px}.mce-combobox .mce-status.mce-i-warning{color:#c09853}.mce-combobox .mce-status.mce-i-checkmark{color:#468847}.mce-menu.mce-combobox-menu{border-top:0;margin-top:0;max-height:200px}.mce-menu.mce-combobox-menu .mce-menu-item{padding:4px 6px 4px 4px;font-size:11px}.mce-menu.mce-combobox-menu .mce-menu-item-sep{padding:0}.mce-menu.mce-combobox-menu .mce-text,.mce-menu.mce-combobox-menu .mce-text b{font-size:11px}.mce-menu.mce-combobox-menu .mce-menu-item-link,.mce-menu.mce-combobox-menu .mce-menu
 -item-link b{font-size:11px}.mce-colorbox i{border:1px solid #c5c5c5;width:14px;height:14px}.mce-colorbutton .mce-ico{position:relative}.mce-colorbutton-grid{margin:4px}.mce-colorbutton .mce-preview{padding-right:3px;display:block;position:absolute;left:50%;top:50%;margin-left:-17px;margin-top:7px;background:gray;width:13px;height:2px;overflow:hidden}.mce-colorbutton.mce-btn-small .mce-preview{margin-left:-16px;padding-right:0;width:16px}.mce-rtl .mce-colorbutton{direction:rtl}.mce-rtl .mce-colorbutton .mce-preview{margin-left:0;padding-right:0;padding-left:3px}.mce-rtl .mce-colorbutton.mce-btn-small .mce-preview{margin-left:0;padding-right:0;padding-left:2px}.mce-rtl .mce-colorbutton .mce-open{padding-left:4px;padding-right:4px;border-left:0}.mce-colorpicker{position:relative;width:250px;height:220px}.mce-colorpicker-sv{position:absolute;top:0;left:0;width:90%;height:100%;border:1px solid #c5c5c5;cursor:crosshair;overflow:hidden}.mce-colorpicker-h-chunk{width:100%}.mce-colorpicker-
 overlay1,.mce-colorpicker-overlay2{width:100%;height:100%;position:absolute;top:0;left:0}.mce-colorpicker-overlay1{filter:progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr='#ffffff', endColorstr='#00ffffff');-ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr='#ffffff', endColorstr='#00ffffff')";background:linear-gradient(to right, #fff, rgba(255,255,255,0))}.mce-colorpicker-overlay2{filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#00000000', endColorstr='#000000');-ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#00000000', endColorstr='#000000')";background:linear-gradient(to bottom, rgba(0,0,0,0), #000)}.mce-colorpicker-selector1{background:none;position:absolute;width:12px;height:12px;margin:-8px 0 0 -8px;border:1px solid black;border-radius:50%}.mce-colorpicker-selector2{position:absolute;width:10px;height:10px;border:1px solid white;bo
 rder-radius:50%}.mce-colorpicker-h{position:absolute;top:0;right:0;width:6.5%;height:100%;border:1px solid #c5c5c5;cursor:crosshair}.mce-colorpicker-h-marker{margin-top:-4px;position:absolute;top:0;left:-1px;width:100%;border:1px solid black;background:white;height:4px;z-index:100}.mce-path{display:inline-block;*display:inline;*zoom:1;padding:8px;white-space:normal;font-size:inherit}.mce-path .mce-txt{display:inline-block;padding-right:3px}.mce-path .mce-path-body{display:inline-block}.mce-path-item{display:inline-block;*display:inline;*zoom:1;cursor:pointer;color:#595959;font-size:inherit;text-transform:uppercase}.mce-path-item:hover{text-decoration:underline}.mce-path-item:focus{background:#555c66;color:white}.mce-path .mce-divider{display:inline;font-size:inherit}.mce-disabled .mce-path-item{color:#aaa}.mce-rtl .mce-path{direction:rtl}.mce-fieldset{border:0 solid #9E9E9E}.mce-fieldset>.mce-container-body{margin-top:-15px}.mce-fieldset-title{margin-left:5px;padding:0 5px 0 5px}
 .mce-fit-layout{display:inline-block;*display:inline;*zoom:1}.mce-fit-layout-item{position:absolute}.mce-flow-layout-item{display:inline-block;*display:inline;*zoom:1}.mce-flow-layout-item{margin:2px 0 2px 2px}.mce-flow-layout-item.mce-last{margin-right:2px}.mce-flow-layout{white-space:normal}.mce-tinymce-inline .mce-flow-layout{white-space:nowrap}.mce-rtl .mce-flow-layout{text-align:right;direction:rtl}.mce-rtl .mce-flow-layout-item{margin:2px 2px 2px 0}.mce-rtl .mce-flow-layout-item.mce-last{margin-left:2px}.mce-iframe{border:0 solid #c5c5c5;width:100%;height:100%}.mce-infobox{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 1px rgba(255,255,255,0.75);overflow:hidden;border:1px solid red}.mce-infobox div{display:block;margin:5px}.mce-infobox div button{position:absolute;top:50%;right:4px;cursor:pointer;margin-top:-8px;display:none}.mce-infobox div button:focus{outline:2px solid #e2e4e7}.mce-infobox.mce-has-help div{margin-right:25px}.mce-infobox.mce-has-help button{d
 isplay:block}.mce-infobox.mce-success{background:#dff0d8;border-color:#d6e9c6}.mce-infobox.mce-success div{color:#3c763d}.mce-infobox.mce-warning{background:#fcf8e3;border-color:#faebcc}.mce-infobox.mce-warning div{color:#8a6d3b}.mce-infobox.mce-error{background:#f2dede;border-color:#ebccd1}.mce-infobox.mce-error div{color:#a94442}.mce-rtl .mce-infobox div{text-align:right;direction:rtl}.mce-label{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 1px rgba(255,255,255,0.75);overflow:hidden}.mce-label.mce-autoscroll{overflow:auto}.mce-label.mce-disabled{color:#aaa}.mce-label.mce-multiline{white-space:pre-wrap}.mce-label.mce-success{color:#468847}.mce-label.mce-warning{color:#c09853}.mce-label.mce-error{color:#b94a48}.mce-rtl .mce-label{text-align:right;direction:rtl}.mce-menubar{border:1px solid #e2e4e7}.mce-menubar .mce-menubtn{border-color:transparent;background:transparent;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;filter:none}.mce-menubar .mce-menubt
 n button span{color:#595959}.mce-menubar .mce-caret{border-top-color:#b5bcc2}.mce-menubar .mce-active .mce-caret,.mce-menubar .mce-menubtn:hover .mce-caret{border-top-color:#b5bcc2}.mce-menubar .mce-menubtn:hover,.mce-menubar .mce-menubtn.mce-active,.mce-menubar .mce-menubtn:focus{border-color:#e2e4e7;background:white;filter:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.mce-menubar .mce-menubtn.mce-active{border-bottom:none;z-index:65537}div.mce-menubtn.mce-opened{border-bottom-color:white;z-index:65537}div.mce-menubtn.mce-opened.mce-opened-under{z-index:0}.mce-menubtn button{color:#595959}.mce-menubtn.mce-btn-small span{font-size:12px}.mce-menubtn.mce-fixed-width span{display:inline-block;overflow-x:hidden;text-overflow:ellipsis;width:90px}.mce-menubtn.mce-fixed-width.mce-btn-small span{width:70px}.mce-menubtn .mce-caret{*margin-top:6px}.mce-rtl .mce-menubtn button{direction:rtl;text-align:right}.mce-rtl .mce-menubtn.mce-fixed-width span{direction:rtl;text-alig
 n:right}.mce-menu-item{display:block;padding:6px 4px 6px 4px;clear:both;font-weight:normal;line-height:20px;color:#595959;white-space:nowrap;cursor:pointer;line-height:normal;border-left:4px solid transparent;margin-bottom:1px}.mce-menu-item .mce-text,.mce-menu-item .mce-text b{line-height:1;vertical-align:initial}.mce-menu-item .mce-caret{margin-top:4px;margin-right:6px;border-top:4px solid transparent;border-bottom:4px solid transparent;border-left:4px solid #595959}.mce-menu-item .mce-menu-shortcut{display:inline-block;padding:0 10px 0 20px;color:#aaa}.mce-menu-item .mce-ico{padding-right:4px}.mce-menu-item:hover,.mce-menu-item:focus{background:#ededee}.mce-menu-item:hover .mce-menu-shortcut,.mce-menu-item:focus .mce-menu-shortcut{color:#aaa}.mce-menu-item:hover .mce-text,.mce-menu-item:focus .mce-text,.mce-menu-item:hover .mce-ico,.mce-menu-item:focus .mce-ico{color:#595959}.mce-menu-item.mce-selected{background:#ededee}.mce-menu-item.mce-selected .mce-text,.mce-menu-item.mce-se
 lected .mce-ico{color:#595959}.mce-menu-item.mce-active.mce-menu-item-normal{background:#555c66}.mce-menu-item.mce-active.mce-menu-item-normal .mce-text,.mce-menu-item.mce-active.mce-menu-item-normal .mce-ico{color:white}.mce-menu-item.mce-active.mce-menu-item-checkbox .mce-ico{visibility:visible}.mce-menu-item.mce-disabled,.mce-menu-item.mce-disabled:hover{background:white}.mce-menu-item.mce-disabled:focus,.mce-menu-item.mce-disabled:hover:focus{background:#ededee}.mce-menu-item.mce-disabled .mce-text,.mce-menu-item.mce-disabled:hover .mce-text,.mce-menu-item.mce-disabled .mce-ico,.mce-menu-item.mce-disabled:hover .mce-ico{color:#aaa}.mce-menu-item.mce-menu-item-preview.mce-active{border-left:5px solid #555c66;background:white}.mce-menu-item.mce-menu-item-preview.mce-active .mce-text,.mce-menu-item.mce-menu-item-preview.mce-active .mce-ico{color:#595959}.mce-menu-item.mce-menu-item-preview.mce-active:hover{background:#ededee}.mce-menu-item-link{color:#093;overflow:hidden;text-overf
 low:ellipsis;white-space:nowrap}.mce-menu-item-link b{color:#093}.mce-menu-item-ellipsis{display:block;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mce-menu-item:hover *,.mce-menu-item.mce-selected *,.mce-menu-item:focus *{color:#595959}div.mce-menu .mce-menu-item-sep,.mce-menu-item-sep:hover{border:0;padding:0;height:1px;margin:9px 1px;overflow:hidden;background:transparent;border-bottom:1px solid rgba(0,0,0,0.1);cursor:default;filter:none}div.mce-menu .mce-menu-item b{font-weight:bold}.mce-menu-item-indent-1{padding-left:20px}.mce-menu-item-indent-2{padding-left:35px}.mce-menu-item-indent-2{padding-left:35px}.mce-menu-item-indent-3{padding-left:40px}.mce-menu-item-indent-4{padding-left:45px}.mce-menu-item-indent-5{padding-left:50px}.mce-menu-item-indent-6{padding-left:55px}.mce-menu.mce-rtl{direction:rtl}.mce-rtl .mce-menu-item{text-align:right;direction:rtl;padding:6px 12px 6px 15px}.mce-rtl .mce-menu-item .mce-caret{margin-left:6px;margin-right:0;border-right:4px s
 olid #595959;border-left:0}.mce-rtl .mce-menu-item.mce-selected .mce-caret,.mce-rtl .mce-menu-item:focus .mce-caret,.mce-rtl .mce-menu-item:hover .mce-caret{border-left-color:transparent;border-right-color:#595959}.mce-rtl .mce-menu-item .mce-ico{padding-right:0;padding-left:4px}.mce-throbber{position:absolute;top:0;left:0;width:100%;height:100%;opacity:.6;filter:alpha(opacity=60);zoom:1;background:#fff url('img/loader.gif') no-repeat center center}.mce-throbber-inline{position:static;height:50px}.mce-menu .mce-throbber-inline{height:25px;background-size:contain}.mce-menu{position:absolute;left:0;top:0;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;z-index:1000;padding:5px 0 5px 0;margin:-1px 0 0;min-width:180px;background:white;border:1px solid #c5c9cf;border:1px solid #e2e4e7;z-index:1002;-webkit-box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);max-height:500px;ov
 erflow:auto;overflow-x:hidden}.mce-menu.mce-animate{opacity:.01;transform:rotateY(10deg) rotateX(-10deg);transform-origin:left top}.mce-menu.mce-menu-align .mce-menu-shortcut,.mce-menu.mce-menu-align .mce-caret{position:absolute;right:0}.mce-menu i{display:none}.mce-menu-has-icons i{display:inline-block}.mce-menu.mce-in.mce-animate{opacity:1;transform:rotateY(0) rotateX(0);transition:opacity .075s ease,transform .1s ease}.mce-menu-sub-tr-tl{margin:-6px 0 0 -1px}.mce-menu-sub-br-bl{margin:6px 0 0 -1px}.mce-menu-sub-tl-tr{margin:-6px 0 0 1px}.mce-menu-sub-bl-br{margin:6px 0 0 1px}.mce-rtl .mce-menu-item .mce-ico{padding-right:0;padding-left:4px}.mce-rtl.mce-menu-align .mce-caret,.mce-rtl .mce-menu-shortcut{right:auto;left:0}.mce-listbox button{text-align:left;padding-right:20px;position:relative}.mce-listbox .mce-caret{position:absolute;margin-top:-2px;right:8px;top:50%}.mce-rtl .mce-listbox .mce-caret{right:auto;left:8px}.mce-rtl .mce-listbox button{padding-right:10px;padding-left:20
 px}.mce-container-body .mce-resizehandle{position:absolute;right:0;bottom:0;width:16px;height:16px;visibility:visible;cursor:s-resize;margin:0}.mce-container-body .mce-resizehandle-both{cursor:se-resize}i.mce-i-resize{color:#595959}.mce-selectbox{background:#fff;border:1px solid #c5c5c5}.mce-slider{border:1px solid #c5c5c5;background:#fff;width:100px;height:10px;position:relative;display:block}.mce-slider.mce-vertical{width:10px;height:100px}.mce-slider-handle{border:1px solid #c5c5c5;background:#e6e6e6;display:block;width:13px;height:13px;position:absolute;top:0;left:0;margin-left:-1px;margin-top:-2px}.mce-slider-handle:focus{border-color:#2276d2}.mce-spacer{visibility:hidden}.mce-splitbtn:hover .mce-open{border-left:1px solid #e2e4e7}.mce-splitbtn .mce-open{border-left:1px solid transparent;padding-right:4px;padding-left:4px}.mce-splitbtn .mce-open:focus{border-left:1px solid #e2e4e7}.mce-splitbtn .mce-open:hover,.mce-splitbtn .mce-open:active{border-left:1px solid #e2e4e7}.mce-sp
 litbtn.mce-active:hover .mce-open{border-left:1px solid white}.mce-splitbtn.mce-opened{border-color:#e2e4e7}.mce-splitbtn.mce-btn-small .mce-open{padding:0 3px 0 3px}.mce-rtl .mce-splitbtn{direction:rtl;text-align:right}.mce-rtl .mce-splitbtn button{padding-right:4px;padding-left:4px}.mce-rtl .mce-splitbtn .mce-open{border-left:0}.mce-stack-layout-item{display:block}.mce-tabs{display:block;border-bottom:1px solid #c5c5c5}.mce-tabs,.mce-tabs+.mce-container-body{background:#fff}.mce-tab{display:inline-block;*display:inline;*zoom:1;border:1px solid #c5c5c5;border-width:0 1px 0 0;background:#fff;padding:8px 15px;text-shadow:0 1px 1px rgba(255,255,255,0.75);height:13px;cursor:pointer}.mce-tab:hover{background:#FDFDFD}.mce-tab.mce-active{background:#FDFDFD;border-bottom-color:transparent;margin-bottom:-1px;height:14px}.mce-tab:focus{color:#2276d2}.mce-rtl .mce-tabs{text-align:right;direction:rtl}.mce-rtl .mce-tab{border-width:0 0 0 1px}.mce-textbox{background:#fff;border:1px solid #c5c5c5
 ;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;display:inline-block;-webkit-transition:border linear .2s, box-shadow linear .2s;transition:border linear .2s, box-shadow linear .2s;height:28px;resize:none;padding:0 4px 0 4px;white-space:pre-wrap;*white-space:pre;color:#595959}.mce-textbox:focus,.mce-textbox.mce-focus{border-color:#2276d2;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.mce-placeholder .mce-textbox{color:#aaa}.mce-textbox.mce-multiline{padding:4px;height:auto}.mce-textbox.mce-disabled{color:#bdbdbd}.mce-rtl .mce-textbox{text-align:right;direction:rtl}.mce-dropzone{border:3px dashed gray;text-align:center}.mce-dropzone span{text-transform:uppercase;display:inline-block;vertical-align:middle}.mce-dropzone:after{content:"";height:100%;display:inline-block;vertical-align:middle}.mce-dropzone.mce-disabled{opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-dropzone.mce-disabled.mce-dragenter{cursor:not-allowed}.mce-browsebutton{position:re
 lative;overflow:hidden}.mce-browsebutton button{position:relative;z-index:1}.mce-browsebutton input{opacity:0;filter:alpha(opacity=0);zoom:1;position:absolute;top:0;left:0;width:100%;height:100%;z-index:0}@font-face{font-family:'tinymce';src:url('fonts/tinymce.eot');src:url('fonts/tinymce.eot?#iefix') format('embedded-opentype'),url('fonts/tinymce.woff') format('woff'),url('fonts/tinymce.ttf') format('truetype'),url('fonts/tinymce.svg#tinymce') format('svg');font-weight:normal;font-style:normal}@font-face{font-family:'tinymce-small';src:url('fonts/tinymce-small.eot');src:url('fonts/tinymce-small.eot?#iefix') format('embedded-opentype'),url('fonts/tinymce-small.woff') format('woff'),url('fonts/tinymce-small.ttf') format('truetype'),url('fonts/tinymce-small.svg#tinymce') format('svg');font-weight:normal;font-style:normal}.mce-ico{font-family:'tinymce',Arial;font-style:normal;font-weight:normal;font-variant:normal;font-size:16px;line-height:16px;speak:none;vertical-align:text-top;-webk
 it-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;background:transparent center center;background-size:cover;width:16px;height:16px;color:#595959}.mce-btn-small .mce-ico{font-family:'tinymce-small',Arial}.mce-i-save:before{content:"\e000"}.mce-i-newdocument:before{content:"\e001"}.mce-i-fullpage:before{content:"\e002"}.mce-i-alignleft:before{content:"\e003"}.mce-i-aligncenter:before{content:"\e004"}.mce-i-alignright:before{content:"\e005"}.mce-i-alignjustify:before{content:"\e006"}.mce-i-alignnone:before{content:"\e003"}.mce-i-cut:before{content:"\e007"}.mce-i-paste:before{content:"\e008"}.mce-i-searchreplace:before{content:"\e009"}.mce-i-bullist:before{content:"\e00a"}.mce-i-numlist:before{content:"\e00b"}.mce-i-indent:before{content:"\e00c"}.mce-i-outdent:before{content:"\e00d"}.mce-i-blockquote:bef
 ore{content:"\e00e"}.mce-i-undo:before{content:"\e00f"}.mce-i-redo:before{content:"\e010"}.mce-i-link:before{content:"\e011"}.mce-i-unlink:before{content:"\e012"}.mce-i-anchor:before{content:"\e013"}.mce-i-image:before{content:"\e014"}.mce-i-media:before{content:"\e015"}.mce-i-help:before{content:"\e016"}.mce-i-code:before{content:"\e017"}.mce-i-insertdatetime:before{content:"\e018"}.mce-i-preview:before{content:"\e019"}.mce-i-forecolor:before{content:"\e01a"}.mce-i-backcolor:before{content:"\e01a"}.mce-i-table:before{content:"\e01b"}.mce-i-hr:before{content:"\e01c"}.mce-i-removeformat:before{content:"\e01d"}.mce-i-subscript:before{content:"\e01e"}.mce-i-superscript:before{content:"\e01f"}.mce-i-charmap:before{content:"\e020"}.mce-i-emoticons:before{content:"\e021"}.mce-i-prin
 t:before{content:"\e022"}.mce-i-fullscreen:before{content:"\e023"}.mce-i-spellchecker:before{content:"\e024"}.mce-i-nonbreaking:before{content:"\e025"}.mce-i-template:before{content:"\e026"}.mce-i-pagebreak:before{content:"\e027"}.mce-i-restoredraft:before{content:"\e028"}.mce-i-bold:before{content:"\e02a"}.mce-i-italic:before{content:"\e02b"}.mce-i-underline:before{content:"\e02c"}.mce-i-strikethrough:before{content:"\e02d"}.mce-i-visualchars:before{content:"\e02e"}.mce-i-visualblocks:before{content:"\e02e"}.mce-i-ltr:before{content:"\e02f"}.mce-i-rtl:before{content:"\e030"}.mce-i-copy:before{content:"\e031"}.mce-i-resize:before{content:"\e032"}.mce-i-browse:before{content:"\e034"}.mce-i-pastetext:before{content:"\e035"}.mce-i-rotateleft:before{content:"\eaa8"}.mce-i-rotateright:before
 {content:"\eaa9"}.mce-i-crop:before{content:"\ee78"}.mce-i-editimage:before{content:"\e915"}.mce-i-options:before{content:"\ec6a"}.mce-i-flipv:before{content:"\eaaa"}.mce-i-fliph:before{content:"\eaac"}.mce-i-zoomin:before{content:"\eb35"}.mce-i-zoomout:before{content:"\eb36"}.mce-i-sun:before{content:"\eccc"}.mce-i-moon:before{content:"\eccd"}.mce-i-arrowleft:before{content:"\edc0"}.mce-i-arrowright:before{content:"\e93c"}.mce-i-drop:before{content:"\e935"}.mce-i-contrast:before{content:"\ecd4"}.mce-i-sharpen:before{content:"\eba7"}.mce-i-resize2:before{content:"\edf9"}.mce-i-orientation:before{content:"\e601"}.mce-i-invert:before{content:"\e602"}.mce-i-gamma:before{content:"\e600"}.mce-i-remove:before{content:"\ed6a"}.mce-i-tablerowprops:before{content:"\e604"}.mce-i-tablece
 llprops:before{content:"\e605"}.mce-i-table2:before{content:"\e606"}.mce-i-tablemergecells:before{content:"\e607"}.mce-i-tableinsertcolbefore:before{content:"\e608"}.mce-i-tableinsertcolafter:before{content:"\e609"}.mce-i-tableinsertrowbefore:before{content:"\e60a"}.mce-i-tableinsertrowafter:before{content:"\e60b"}.mce-i-tablesplitcells:before{content:"\e60d"}.mce-i-tabledelete:before{content:"\e60e"}.mce-i-tableleftheader:before{content:"\e62a"}.mce-i-tabletopheader:before{content:"\e62b"}.mce-i-tabledeleterow:before{content:"\e800"}.mce-i-tabledeletecol:before{content:"\e801"}.mce-i-codesample:before{content:"\e603"}.mce-i-fill:before{content:"\e902"}.mce-i-borderwidth:before{content:"\e903"}.mce-i-line:before{content:"\e904"}.mce-i-count:before{content:"\e905"}.mce-i-translate:before{content:"\e907
 "}.mce-i-drag:before{content:"\e908"}.mce-i-home:before{content:"\e90b"}.mce-i-upload:before{content:"\e914"}.mce-i-bubble:before{content:"\e91c"}.mce-i-user:before{content:"\e91d"}.mce-i-lock:before{content:"\e926"}.mce-i-unlock:before{content:"\e927"}.mce-i-settings:before{content:"\e928"}.mce-i-remove2:before{content:"\e92a"}.mce-i-menu:before{content:"\e92d"}.mce-i-warning:before{content:"\e930"}.mce-i-question:before{content:"\e931"}.mce-i-pluscircle:before{content:"\e932"}.mce-i-info:before{content:"\e933"}.mce-i-notice:before{content:"\e934"}.mce-i-arrowup:before{content:"\e93b"}.mce-i-arrowdown:before{content:"\e93d"}.mce-i-arrowup2:before{content:"\e93f"}.mce-i-arrowdown2:before{content:"\e940"}.mce-i-menu2:before{content:"\e941"}.mce-i-newtab:before{content:"\e961&qu
 ot;}.mce-i-a11y:before{content:"\e900"}.mce-i-plus:before{content:"\e93a"}.mce-i-insert:before{content:"\e93a"}.mce-i-minus:before{content:"\e939"}.mce-i-books:before{content:"\e911"}.mce-i-reload:before{content:"\e906"}.mce-i-toc:before{content:"\e901"}.mce-i-checkmark:before{content:"\e033"}.mce-i-format-painter:before{content:"\e909"}.mce-i-checkbox:before,.mce-i-selected:before{content:"\e033"}.mce-i-insert{font-size:14px}.mce-i-selected{visibility:hidden}i.mce-i-backcolor{text-shadow:none;background:#BBB}.mce-rtl .mce-filepicker input{direction:ltr}
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+.mce-container,.mce-container *,.mce-widget,.mce-widget *,.mce-reset{margin:0;padding:0;border:0;outline:0;vertical-align:top;background:transparent;text-decoration:none;color:#595959;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;text-shadow:none;float:none;position:static;width:auto;height:auto;white-space:nowrap;cursor:inherit;-webkit-tap-highlight-color:transparent;line-height:normal;font-weight:normal;text-align:left;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;direction:ltr;max-width:none}.mce-widget button{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.mce-container *[unselectable]{-moz-user-select:none;-webkit-user-select:none;-o-user-select:none;user-select:none}.word-wrap{word-wrap:break-word;-ms-word-break:break-all;word-break:break-all;word-break:break-word;-ms-hyphens:auto;
 -moz-hyphens:auto;-webkit-hyphens:auto;hyphens:auto}.mce-fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.mce-fade.mce-in{opacity:1}.mce-tinymce{visibility:inherit !important;position:relative}.mce-fullscreen{border:0;padding:0;margin:0;overflow:hidden;height:100%;z-index:100}div.mce-fullscreen{position:fixed;top:0;left:0;width:100%;height:auto}.mce-tinymce{display:block;-webkit-box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);box-shadow:0 1px 2px rgba(0, 0, 0, 0.2)}.mce-statusbar>.mce-container-body{display:flex;padding-right:16px}.mce-statusbar>.mce-container-body .mce-path{flex:1}.mce-wordcount{font-size:inherit;text-transform:uppercase;padding:8px 0}div.mce-edit-area{background:#FFF;filter:none}.mce-statusbar{position:relative}.mce-statusbar .mce-container-body{position:relative;font-size:11px}.mce-fullscreen .mce-resizehandle{display:none}.mce-statusbar .mce-flow-layout-item{margin:0}.mce-charmap{bor
 der-collapse:collapse}.mce-charmap td{cursor:default;border:1px solid #c5c5c5;width:20px;height:20px;line-height:20px;text-align:center;vertical-align:middle;padding:2px}.mce-charmap td div{text-align:center}.mce-charmap td:hover{background:white}.mce-grid td.mce-grid-cell div{border:1px solid #c5c5c5;width:15px;height:15px;margin:0;cursor:pointer}.mce-grid td.mce-grid-cell div:focus{border-color:#91bbe9}.mce-grid td.mce-grid-cell div[disabled]{cursor:not-allowed}.mce-grid{border-spacing:2px;border-collapse:separate}.mce-grid a{display:block;border:1px solid transparent}.mce-grid a:hover,.mce-grid a:focus{border-color:#91bbe9}.mce-grid-border{margin:0 4px 0 4px}.mce-grid-border a{border-color:#c5c5c5;width:13px;height:13px}.mce-grid-border a:hover,.mce-grid-border a.mce-active{border-color:#91bbe9;background:#bdd6f2}.mce-text-center{text-align:center}div.mce-tinymce-inline{width:100%}.mce-colorbtn-trans div{text-align:center;vertical-align:middle;font-weight:bold;font-size:20px;line
 -height:16px;color:#8b8b8b}.mce-monospace{font-family:"Courier New",Courier,monospace}.mce-toolbar-grp .mce-flow-layout-item{margin-bottom:0}.mce-container b{font-weight:bold}.mce-container p{margin-bottom:5px}.mce-container a{cursor:pointer;color:#2276d2}.mce-container a:hover{text-decoration:underline}.mce-container ul{margin-left:15px}.mce-container .mce-table-striped{border-collapse:collapse;margin:10px}.mce-container .mce-table-striped thead>tr{background-color:#fafafa}.mce-container .mce-table-striped thead>tr th{font-weight:bold}.mce-container .mce-table-striped td,.mce-container .mce-table-striped th{padding:5px}.mce-container .mce-table-striped tr:nth-child(even){background-color:#fafafa}.mce-container .mce-table-striped tbody>tr:hover{background-color:#e1e1e1}.mce-branding{font-size:inherit;text-transform:uppercase;white-space:pre;padding:8px 0}.mce-branding a{font-size:inherit;color:inherit}.mce-top-part{position:relative}.mce-top-part::before{content:'
 ';position:absolute;-webkit-box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);top:0;right:0;bottom:0;left:0;pointer-events:none}.mce-rtl .mce-wordcount{left:0;right:auto}.mce-rtl .mce-statusbar>.mce-container-body>*:last-child{padding-right:0;padding-left:10px}.mce-rtl .mce-path{text-align:right;padding-right:16px}.mce-croprect-container{position:absolute;top:0;left:0}.mce-croprect-handle{position:absolute;top:0;left:0;width:20px;height:20px;border:2px solid white}.mce-croprect-handle-nw{border-width:2px 0 0 2px;margin:-2px 0 0 -2px;cursor:nw-resize;top:100px;left:100px}.mce-croprect-handle-ne{border-width:2px 2px 0 0;margin:-2px 0 0 -20px;cursor:ne-resize;top:100px;left:200px}.mce-croprect-handle-sw{border-width:0 0 2px 2px;margin:-20px 2px 0 -2px;cursor:sw-resize;top:200px;left:100px}.mce-croprect-handle-se{border-width:0 2px 2px 0;margin:-20px 0 0 -20px;cursor:se-resize;top:200px;left:200px}.mce-crop
 rect-handle-move{position:absolute;cursor:move;border:0}.mce-croprect-block{opacity:.5;filter:alpha(opacity=50);zoom:1;position:absolute;background:black}.mce-croprect-handle:focus{border-color:#2276d2}.mce-croprect-handle-move:focus{outline:1px solid #2276d2}.mce-imagepanel{overflow:auto;background:black}.mce-imagepanel-bg{position:absolute;background:url('data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==')}.mce-imagepanel img{position:absolute}.mce-imagetool.mce-btn .mce-ico{display:block;width:20px;height:20px;text-align:center;line-height:20px;font-size:20px;padding:5px}.mce-arrow-up{margin-top:12px}.mce-arrow-down{margin-top:-12px}.mce-arrow:before,.mce-arrow:after{position:absolute;left:50%;display:block;width:0;height:0;border-style:solid;border-color:transparent;content:""}.mce-arrow.mce-arrow-up:before{top:-9px;border-bottom-color:#c5c5c5;border-width:0 9px 9px;margin-left:-9px}.mce-arrow.mce-arrow-down:before{botto
 m:-9px;border-top-color:#c5c5c5;border-width:9px 9px 0;margin-left:-9px}.mce-arrow.mce-arrow-up:after{top:-8px;border-bottom-color:#fff;border-width:0 8px 8px;margin-left:-8px}.mce-arrow.mce-arrow-down:after{bottom:-8px;border-top-color:#fff;border-width:8px 8px 0;margin-left:-8px}.mce-arrow.mce-arrow-left:before,.mce-arrow.mce-arrow-left:after{margin:0}.mce-arrow.mce-arrow-left:before{left:8px}.mce-arrow.mce-arrow-left:after{left:9px}.mce-arrow.mce-arrow-right:before,.mce-arrow.mce-arrow-right:after{left:auto;margin:0}.mce-arrow.mce-arrow-right:before{right:8px}.mce-arrow.mce-arrow-right:after{right:9px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-left:before{left:-9px;top:50%;border-right-color:#c5c5c5;border-width:9px 9px 9px 0;margin-top:-9px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-left:after{left:-8px;top:50%;border-right-color:#fff;border-width:8px 8px 8px 0;margin-top:-8px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-left{margin-left:12px}.mce-arrow.mce-arrow-ce
 nter.mce-arrow.mce-arrow-right:before{right:-9px;top:50%;border-left-color:#c5c5c5;border-width:9px 0 9px 9px;margin-top:-9px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-right:after{right:-8px;top:50%;border-left-color:#fff;border-width:8px 0 8px 8px;margin-top:-8px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-right{margin-left:-14px}.mce-edit-aria-container>.mce-container-body{display:flex}.mce-edit-aria-container>.mce-container-body .mce-edit-area{flex:1}.mce-edit-aria-container>.mce-container-body .mce-sidebar>.mce-container-body{display:flex;align-items:stretch;height:100%}.mce-edit-aria-container>.mce-container-body .mce-sidebar-panel{min-width:250px;max-width:250px;position:relative}.mce-edit-aria-container>.mce-container-body .mce-sidebar-panel>.mce-container-body{position:absolute;width:100%;height:100%;overflow:auto;top:0;left:0}.mce-sidebar-toolbar{border:0 solid #c5c5c5;border-left-width:1px}.mce-sidebar-toolbar .mce-btn{border-left:0;border-ri
 ght:0}.mce-sidebar-toolbar .mce-btn.mce-active,.mce-sidebar-toolbar .mce-btn.mce-active:hover{background-color:#555c66}.mce-sidebar-toolbar .mce-btn.mce-active button,.mce-sidebar-toolbar .mce-btn.mce-active:hover button,.mce-sidebar-toolbar .mce-btn.mce-active button i,.mce-sidebar-toolbar .mce-btn.mce-active:hover button i{color:white;text-shadow:1px 1px none}.mce-sidebar-panel{border:0 solid #c5c5c5;border-left-width:1px}.mce-container,.mce-container-body{display:block}.mce-autoscroll{overflow:hidden}.mce-scrollbar{position:absolute;width:7px;height:100%;top:2px;right:2px;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-scrollbar-h{top:auto;right:auto;left:2px;bottom:2px;width:100%;height:7px}.mce-scrollbar-thumb{position:absolute;background-color:#000;border:1px solid #888;border-color:rgba(85,85,85,0.6);width:5px;height:100%}.mce-scrollbar-h .mce-scrollbar-thumb{width:100%;height:5px}.mce-scrollbar:hover,.mce-scrollbar.mce-active{background-color:#AAA;opacity:.6;filter:alpha(opa
 city=60);zoom:1}.mce-scroll{position:relative}.mce-panel{border:0 solid #f3f3f3;border:0 solid #c5c5c5;background-color:#fff}.mce-floatpanel{position:absolute;-webkit-box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);box-shadow:0 1px 2px rgba(0, 0, 0, 0.2)}.mce-floatpanel.mce-fixed{position:fixed}.mce-floatpanel .mce-arrow,.mce-floatpanel .mce-arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.mce-floatpanel .mce-arrow{border-width:11px}.mce-floatpanel .mce-arrow:after{border-width:10px;content:""}.mce-floatpanel.mce-popover{filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;-webkit-box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);top:0;left:0;background:#FFF;border:1px solid #c5c5c5;border:1px solid rgba(0,0,0,0.25)}.mce-floatpanel.mce-popover.mce-bottom{margin-top:10px;
 *margin-top:0}.mce-floatpanel.mce-popover.mce-bottom>.mce-arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#c5c5c5;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.mce-floatpanel.mce-popover.mce-bottom>.mce-arrow:after{top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#FFF}.mce-floatpanel.mce-popover.mce-top{margin-top:-10px;*margin-top:0}.mce-floatpanel.mce-popover.mce-top>.mce-arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#c5c5c5;top:auto;bottom:-11px}.mce-floatpanel.mce-popover.mce-top>.mce-arrow:after{bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#FFF}.mce-floatpanel.mce-popover.mce-bottom.mce-start,.mce-floatpanel.mce-popover.mce-top.mce-start{margin-left:-22px}.mce-floatpanel.mce-popover.mce-bottom.mce-start>.mce-arrow,.mce-floatpanel.mce-popover.mce-top.mce-start>.mce-arrow{left:20px}.mce-floatpanel.mce-popover.mce-bottom.mce-end,.mce-floatpanel.mce-popover.mce-top.mce-end{m
 argin-left:22px}.mce-floatpanel.mce-popover.mce-bottom.mce-end>.mce-arrow,.mce-floatpanel.mce-popover.mce-top.mce-end>.mce-arrow{right:10px;left:auto}.mce-fullscreen{border:0;padding:0;margin:0;overflow:hidden;height:100%}div.mce-fullscreen{position:fixed;top:0;left:0}#mce-modal-block{opacity:0;filter:alpha(opacity=0);zoom:1;position:fixed;left:0;top:0;width:100%;height:100%;background:#FFF}#mce-modal-block.mce-in{opacity:.5;filter:alpha(opacity=50);zoom:1}.mce-window-move{cursor:move}.mce-window{-webkit-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;background:#FFF;position:fixed;top:0;left:0;opacity:0;transform:scale(.1);transition:transform 100ms ease-in,opacity 150ms ease-in}.mce-window.mce-in{transform:scale(1);opacity:1}.mce-window-head{padding:9px 15px;border-bottom:1px solid #c5c5c5;position:relative}.mc
 e-window-head .mce-close{position:absolute;right:0;top:0;height:38px;width:38px;text-align:center;cursor:pointer}.mce-window-head .mce-close i{color:#9b9b9b}.mce-close:hover i{color:#bdbdbd}.mce-window-head .mce-title{line-height:20px;font-size:20px;font-weight:bold;text-rendering:optimizelegibility;padding-right:20px}.mce-window .mce-container-body{display:block}.mce-foot{display:block;background-color:#FFF;border-top:1px solid #c5c5c5}.mce-window-head .mce-dragh{position:absolute;top:0;left:0;cursor:move;width:90%;height:100%}.mce-window iframe{width:100%;height:100%}.mce-window-body .mce-listbox{border-color:#e2e4e7}.mce-window .mce-btn:hover{border-color:#c5c5c5}.mce-window .mce-btn:focus{border-color:#2276d2}.mce-window-body .mce-btn,.mce-foot .mce-btn{border-color:#c5c5c5}.mce-foot .mce-btn.mce-primary{border-color:transparent}.mce-rtl .mce-window-head .mce-close{position:absolute;right:auto;left:0}.mce-rtl .mce-window-head .mce-dragh{left:auto;right:0}.mce-rtl .mce-window-hea
 d .mce-title{direction:rtl;text-align:right;padding-right:0;padding-left:20px}.mce-tooltip{position:absolute;padding:5px;opacity:.8;filter:alpha(opacity=80);zoom:1;margin-top:1px}.mce-tooltip-inner{font-size:11px;background-color:#000;color:white;max-width:200px;padding:5px 8px 4px 8px;text-align:center;white-space:normal}.mce-tooltip-inner{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.mce-tooltip-arrow{position:absolute;width:0;height:0;line-height:0;border:5px dashed #000}.mce-tooltip-arrow-n{border-bottom-color:#000}.mce-tooltip-arrow-s{border-top-color:#000}.mce-tooltip-arrow-e{border-left-color:#000}.mce-tooltip-arrow-w{border-right-color:#000}.mce-tooltip-nw,.mce-tooltip-sw{margin-left:-14px}.mce-tooltip-ne,.mce-tooltip-se{margin-left:14px}.mce-tooltip-n .mce-tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-nw .mce-tooltip-arrow{top:0;left:10px;borde
 r-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-ne .mce-tooltip-arrow{top:0;right:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-s .mce-tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-sw .mce-tooltip-arrow{bottom:0;left:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-se .mce-tooltip-arrow{bottom:0;right:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-e .mce-tooltip-arrow{right:0;top:50%;margin-top:-5px;border-left-style:solid;border-right:none;border-top-color:transparent;border-bottom-color:transparent}.mce-tooltip-w .mce-tooltip-arrow{left:0;top:50%;margin-top:-5px;border-right-style:soli
 d;border-left:none;border-top-color:transparent;border-bottom-color:transparent}.mce-progress{display:inline-block;position:relative;height:20px}.mce-progress .mce-bar-container{display:inline-block;width:100px;height:100%;margin-right:8px;border:1px solid #ccc;overflow:hidden}.mce-progress .mce-text{display:inline-block;margin-top:auto;margin-bottom:auto;font-size:14px;width:40px;color:#595959}.mce-bar{display:block;width:0;height:100%;background-color:#dfdfdf;-webkit-transition:width .2s ease;transition:width .2s ease}.mce-notification{position:absolute;background-color:#fff;padding:5px;margin-top:5px;border-width:1px;border-style:solid;border-color:#c5c5c5;transition:transform 100ms ease-in,opacity 150ms ease-in;opacity:0;box-sizing:border-box}.mce-notification.mce-in{opacity:1}.mce-notification-success{background-color:#dff0d8;border-color:#d6e9c6}.mce-notification-info{background-color:#d9edf7;border-color:#779ECB}.mce-notification-warning{background-color:#fcf8e3;border-color:
 #faebcc}.mce-notification-error{background-color:#f2dede;border-color:#ebccd1}.mce-notification.mce-has-close{padding-right:15px}.mce-notification .mce-ico{margin-top:5px}.mce-notification-inner{word-wrap:break-word;-ms-word-break:break-all;word-break:break-all;word-break:break-word;-ms-hyphens:auto;-moz-hyphens:auto;-webkit-hyphens:auto;hyphens:auto;display:inline-block;font-size:14px;margin:5px 8px 4px 8px;text-align:center;white-space:normal;color:#31708f}.mce-notification-inner a{text-decoration:underline;cursor:pointer}.mce-notification .mce-progress{margin-right:8px}.mce-notification .mce-progress .mce-text{margin-top:5px}.mce-notification *,.mce-notification .mce-progress .mce-text{color:#595959}.mce-notification .mce-progress .mce-bar-container{border-color:#c5c5c5}.mce-notification .mce-progress .mce-bar-container .mce-bar{background-color:#595959}.mce-notification-success *,.mce-notification-success .mce-progress .mce-text{color:#3c763d}.mce-notification-success .mce-progr
 ess .mce-bar-container{border-color:#d6e9c6}.mce-notification-success .mce-progress .mce-bar-container .mce-bar{background-color:#3c763d}.mce-notification-info *,.mce-notification-info .mce-progress .mce-text{color:#31708f}.mce-notification-info .mce-progress .mce-bar-container{border-color:#779ECB}.mce-notification-info .mce-progress .mce-bar-container .mce-bar{background-color:#31708f}.mce-notification-warning *,.mce-notification-warning .mce-progress .mce-text{color:#8a6d3b}.mce-notification-warning .mce-progress .mce-bar-container{border-color:#faebcc}.mce-notification-warning .mce-progress .mce-bar-container .mce-bar{background-color:#8a6d3b}.mce-notification-error *,.mce-notification-error .mce-progress .mce-text{color:#a94442}.mce-notification-error .mce-progress .mce-bar-container{border-color:#ebccd1}.mce-notification-error .mce-progress .mce-bar-container .mce-bar{background-color:#a94442}.mce-notification .mce-close{position:absolute;top:6px;right:8px;font-size:20px;font-
 weight:bold;line-height:20px;color:#9b9b9b;cursor:pointer}.mce-abs-layout{position:relative}html .mce-abs-layout-item,.mce-abs-end{position:absolute}.mce-abs-end{width:1px;height:1px}.mce-container-body.mce-abs-layout{overflow:hidden}.mce-btn{border:1px solid #b3b3b3;border-color:transparent transparent transparent transparent;position:relative;text-shadow:0 1px 1px rgba(255,255,255,0.75);background:white;display:inline-block;*display:inline;*zoom:1;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.mce-btn:hover,.mce-btn:active{background:white;color:#595959;border-color:#e2e4e7}.mce-btn:focus{background:white;color:#595959;border-color:#e2e4e7}.mce-btn.mce-disabled button,.mce-btn.mce-disabled:hover button{cursor:default;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-btn.mce-active,.mce-btn.mce-active:hover,.mce-btn.mce-active:focus,.mce-btn.mce-active:active{-webkit-box-shadow:none;-moz-box-shadow:none;box-s
 hadow:none;background:#555c66;color:white;border-color:transparent}.mce-btn.mce-active button,.mce-btn.mce-active:hover button,.mce-btn.mce-active i,.mce-btn.mce-active:hover i{color:white}.mce-btn:hover .mce-caret{border-top-color:#b5bcc2}.mce-btn.mce-active .mce-caret,.mce-btn.mce-active:hover .mce-caret{border-top-color:white}.mce-btn button{padding:4px 6px;font-size:14px;line-height:20px;*line-height:16px;cursor:pointer;color:#595959;text-align:center;overflow:visible;-webkit-appearance:none}.mce-btn button::-moz-focus-inner{border:0;padding:0}.mce-btn i{text-shadow:1px 1px none}.mce-primary.mce-btn-has-text{min-width:50px}.mce-primary{color:white;border:1px solid transparent;border-color:transparent;background-color:#2276d2}.mce-primary:hover,.mce-primary:focus{background-color:#1e6abc;border-color:transparent}.mce-primary.mce-disabled button,.mce-primary.mce-disabled:hover button{cursor:default;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;opacity:.4;filter:alph
 a(opacity=40);zoom:1}.mce-primary.mce-active,.mce-primary.mce-active:hover,.mce-primary:not(.mce-disabled):active{background-color:#1e6abc;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.mce-primary button,.mce-primary button i{color:white;text-shadow:1px 1px none}.mce-btn .mce-txt{font-size:inherit;line-height:inherit;color:inherit}.mce-btn-large button{padding:9px 14px;font-size:16px;line-height:normal}.mce-btn-large i{margin-top:2px}.mce-btn-small button{padding:1px 5px;font-size:12px;*padding-bottom:2px}.mce-btn-small i{line-height:20px;vertical-align:top;*line-height:18px}.mce-btn .mce-caret{margin-top:8px;margin-left:0}.mce-btn-small .mce-caret{margin-top:8px;margin-left:0}.mce-caret{display:inline-block;*display:inline;*zoom:1;width:0;height:0;vertical-align:top;border-top:4px solid #b5bcc2;border-right:4px solid transparent;border-left:4px solid transparent;content:""}.mce-disabled .mce-caret{border-top-color:#aaa}.mce-caret.mce-up{border-bottom:4px s
 olid #b5bcc2;border-top:0}.mce-btn-flat{border:0;background:transparent;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;filter:none}.mce-btn-flat:hover,.mce-btn-flat.mce-active,.mce-btn-flat:focus,.mce-btn-flat:active{border:0;background:#e6e6e6;filter:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.mce-btn-has-text .mce-ico{padding-right:5px}.mce-rtl .mce-btn button{direction:rtl}.mce-toolbar .mce-btn-group{margin:0;padding:2px 0}.mce-btn-group .mce-btn{border-width:1px;margin:0;margin-left:2px}.mce-btn-group:not(:first-child){border-left:1px solid #d9d9d9;padding-left:0;margin-left:2px}.mce-btn-group{margin-left:2px}.mce-btn-group .mce-btn.mce-flow-layout-item{margin:0}.mce-rtl .mce-btn-group .mce-btn{margin-left:0;margin-right:2px}.mce-rtl .mce-btn-group .mce-first{margin-right:0}.mce-rtl .mce-btn-group:not(:first-child){border-left:none;border-right:1px solid #d9d9d9;padding-right:4px;margin-right:4px}.mce-checkbox{cursor:pointer}i.mce-i-checkbox{
 margin:0 3px 0 0;border:1px solid #c5c5c5;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;background-color:white;text-indent:-10em;overflow:hidden}.mce-checked i.mce-i-checkbox{color:#595959;font-size:16px;line-height:16px;text-indent:0}.mce-checkbox:focus i.mce-i-checkbox,.mce-checkbox.mce-focus i.mce-i-checkbox{border:1px solid #2276d2;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.mce-checkbox.mce-disabled .mce-label,.mce-checkbox.mce-disabled i.mce-i-checkbox{color:#bdbdbd}.mce-checkbox .mce-label{vertical-align:middle}.mce-rtl .mce-checkbox{direction:rtl;text-align:right}.mce-rtl i.mce-i-checkbox{margin:0 0 0 3px}.mce-combobox{position:relative;display:inline-block;*display:inline;*zoom:1;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;*height:32px}.mce-combobox input{border:1px solid #c5c5c5;border-right-color:#c5c5c5;height:28px}.mce-combobox.mce-disabled input{color:#bdbdbd}.mce-combobox .mce-btn{border:1px solid #c5c5c5;border-left:0
 ;margin:0}.mce-combobox button{padding-right:8px;padding-left:8px}.mce-combobox.mce-disabled .mce-btn button{cursor:default;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-combobox .mce-status{position:absolute;right:2px;top:50%;line-height:16px;margin-top:-8px;font-size:12px;width:15px;height:15px;text-align:center;cursor:pointer}.mce-combobox.mce-has-status input{padding-right:20px}.mce-combobox.mce-has-open .mce-status{right:37px}.mce-combobox .mce-status.mce-i-warning{color:#c09853}.mce-combobox .mce-status.mce-i-checkmark{color:#468847}.mce-menu.mce-combobox-menu{border-top:0;margin-top:0;max-height:200px}.mce-menu.mce-combobox-menu .mce-menu-item{padding:4px 6px 4px 4px;font-size:11px}.mce-menu.mce-combobox-menu .mce-menu-item-sep{padding:0}.mce-menu.mce-combobox-menu .mce-text,.mce-menu.mce-combobox-menu .mce-text b{font-size:11px}.mce-menu.mce-combobox-menu .mce-menu-item-link,.mce-menu.mce-combobox-menu .mce-menu-
 item-link b{font-size:11px}.mce-colorbox i{border:1px solid #c5c5c5;width:14px;height:14px}.mce-colorbutton .mce-ico{position:relative}.mce-colorbutton-grid{margin:4px}.mce-colorbutton .mce-preview{padding-right:3px;display:block;position:absolute;left:50%;top:50%;margin-left:-17px;margin-top:7px;background:gray;width:13px;height:2px;overflow:hidden}.mce-colorbutton.mce-btn-small .mce-preview{margin-left:-16px;padding-right:0;width:16px}.mce-rtl .mce-colorbutton{direction:rtl}.mce-rtl .mce-colorbutton .mce-preview{margin-left:0;padding-right:0;padding-left:3px}.mce-rtl .mce-colorbutton.mce-btn-small .mce-preview{margin-left:0;padding-right:0;padding-left:2px}.mce-rtl .mce-colorbutton .mce-open{padding-left:4px;padding-right:4px;border-left:0}.mce-colorpicker{position:relative;width:250px;height:220px}.mce-colorpicker-sv{position:absolute;top:0;left:0;width:90%;height:100%;border:1px solid #c5c5c5;cursor:crosshair;overflow:hidden}.mce-colorpicker-h-chunk{width:100%}.mce-colorpicker-o
 verlay1,.mce-colorpicker-overlay2{width:100%;height:100%;position:absolute;top:0;left:0}.mce-colorpicker-overlay1{filter:progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr='#ffffff', endColorstr='#00ffffff');-ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr='#ffffff', endColorstr='#00ffffff')";background:linear-gradient(to right, #fff, rgba(255,255,255,0))}.mce-colorpicker-overlay2{filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#00000000', endColorstr='#000000');-ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#00000000', endColorstr='#000000')";background:linear-gradient(to bottom, rgba(0,0,0,0), #000)}.mce-colorpicker-selector1{background:none;position:absolute;width:12px;height:12px;margin:-8px 0 0 -8px;border:1px solid black;border-radius:50%}.mce-colorpicker-selector2{position:absolute;width:10px;height:10px;border:1px solid white;bor
 der-radius:50%}.mce-colorpicker-h{position:absolute;top:0;right:0;width:6.5%;height:100%;border:1px solid #c5c5c5;cursor:crosshair}.mce-colorpicker-h-marker{margin-top:-4px;position:absolute;top:0;left:-1px;width:100%;border:1px solid black;background:white;height:4px;z-index:100}.mce-path{display:inline-block;*display:inline;*zoom:1;padding:8px;white-space:normal;font-size:inherit}.mce-path .mce-txt{display:inline-block;padding-right:3px}.mce-path .mce-path-body{display:inline-block}.mce-path-item{display:inline-block;*display:inline;*zoom:1;cursor:pointer;color:#595959;font-size:inherit;text-transform:uppercase}.mce-path-item:hover{text-decoration:underline}.mce-path-item:focus{background:#555c66;color:white}.mce-path .mce-divider{display:inline;font-size:inherit}.mce-disabled .mce-path-item{color:#aaa}.mce-rtl .mce-path{direction:rtl}.mce-fieldset{border:0 solid #9E9E9E}.mce-fieldset>.mce-container-body{margin-top:-15px}.mce-fieldset-title{margin-left:5px;padding:0 5px 0 5px}.
 mce-fit-layout{display:inline-block;*display:inline;*zoom:1}.mce-fit-layout-item{position:absolute}.mce-flow-layout-item{display:inline-block;*display:inline;*zoom:1}.mce-flow-layout-item{margin:2px 0 2px 2px}.mce-flow-layout-item.mce-last{margin-right:2px}.mce-flow-layout{white-space:normal}.mce-tinymce-inline .mce-flow-layout{white-space:nowrap}.mce-rtl .mce-flow-layout{text-align:right;direction:rtl}.mce-rtl .mce-flow-layout-item{margin:2px 2px 2px 0}.mce-rtl .mce-flow-layout-item.mce-last{margin-left:2px}.mce-iframe{border:0 solid #c5c5c5;width:100%;height:100%}.mce-infobox{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 1px rgba(255,255,255,0.75);overflow:hidden;border:1px solid red}.mce-infobox div{display:block;margin:5px}.mce-infobox div button{position:absolute;top:50%;right:4px;cursor:pointer;margin-top:-8px;display:none}.mce-infobox div button:focus{outline:2px solid #e2e4e7}.mce-infobox.mce-has-help div{margin-right:25px}.mce-infobox.mce-has-help button{di
 splay:block}.mce-infobox.mce-success{background:#dff0d8;border-color:#d6e9c6}.mce-infobox.mce-success div{color:#3c763d}.mce-infobox.mce-warning{background:#fcf8e3;border-color:#faebcc}.mce-infobox.mce-warning div{color:#8a6d3b}.mce-infobox.mce-error{background:#f2dede;border-color:#ebccd1}.mce-infobox.mce-error div{color:#a94442}.mce-rtl .mce-infobox div{text-align:right;direction:rtl}.mce-label{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 1px rgba(255,255,255,0.75);overflow:hidden}.mce-label.mce-autoscroll{overflow:auto}.mce-label.mce-disabled{color:#aaa}.mce-label.mce-multiline{white-space:pre-wrap}.mce-label.mce-success{color:#468847}.mce-label.mce-warning{color:#c09853}.mce-label.mce-error{color:#b94a48}.mce-rtl .mce-label{text-align:right;direction:rtl}.mce-menubar{border:1px solid #e2e4e7}.mce-menubar .mce-menubtn{border-color:transparent;background:transparent;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;filter:none}.mce-menubar .mce-menubtn
  button span{color:#595959}.mce-menubar .mce-caret{border-top-color:#b5bcc2}.mce-menubar .mce-active .mce-caret,.mce-menubar .mce-menubtn:hover .mce-caret{border-top-color:#b5bcc2}.mce-menubar .mce-menubtn:hover,.mce-menubar .mce-menubtn.mce-active,.mce-menubar .mce-menubtn:focus{border-color:#e2e4e7;background:white;filter:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.mce-menubar .mce-menubtn.mce-active{border-bottom:none;z-index:65537}div.mce-menubtn.mce-opened{border-bottom-color:white;z-index:65537}div.mce-menubtn.mce-opened.mce-opened-under{z-index:0}.mce-menubtn button{color:#595959}.mce-menubtn.mce-btn-small span{font-size:12px}.mce-menubtn.mce-fixed-width span{display:inline-block;overflow-x:hidden;text-overflow:ellipsis;width:90px}.mce-menubtn.mce-fixed-width.mce-btn-small span{width:70px}.mce-menubtn .mce-caret{*margin-top:6px}.mce-rtl .mce-menubtn button{direction:rtl;text-align:right}.mce-rtl .mce-menubtn.mce-fixed-width span{direction:rtl;text-align
 :right}.mce-menu-item{display:block;padding:6px 4px 6px 4px;clear:both;font-weight:normal;line-height:20px;color:#595959;white-space:nowrap;cursor:pointer;line-height:normal;border-left:4px solid transparent;margin-bottom:1px}.mce-menu-item .mce-text,.mce-menu-item .mce-text b{line-height:1;vertical-align:initial}.mce-menu-item .mce-caret{margin-top:4px;margin-right:6px;border-top:4px solid transparent;border-bottom:4px solid transparent;border-left:4px solid #595959}.mce-menu-item .mce-menu-shortcut{display:inline-block;padding:0 10px 0 20px;color:#aaa}.mce-menu-item .mce-ico{padding-right:4px}.mce-menu-item:hover,.mce-menu-item:focus{background:#ededee}.mce-menu-item:hover .mce-menu-shortcut,.mce-menu-item:focus .mce-menu-shortcut{color:#aaa}.mce-menu-item:hover .mce-text,.mce-menu-item:focus .mce-text,.mce-menu-item:hover .mce-ico,.mce-menu-item:focus .mce-ico{color:#595959}.mce-menu-item.mce-selected{background:#ededee}.mce-menu-item.mce-selected .mce-text,.mce-menu-item.mce-sel
 ected .mce-ico{color:#595959}.mce-menu-item.mce-active.mce-menu-item-normal{background:#555c66}.mce-menu-item.mce-active.mce-menu-item-normal .mce-text,.mce-menu-item.mce-active.mce-menu-item-normal .mce-ico{color:white}.mce-menu-item.mce-active.mce-menu-item-checkbox .mce-ico{visibility:visible}.mce-menu-item.mce-disabled,.mce-menu-item.mce-disabled:hover{background:white}.mce-menu-item.mce-disabled:focus,.mce-menu-item.mce-disabled:hover:focus{background:#ededee}.mce-menu-item.mce-disabled .mce-text,.mce-menu-item.mce-disabled:hover .mce-text,.mce-menu-item.mce-disabled .mce-ico,.mce-menu-item.mce-disabled:hover .mce-ico{color:#aaa}.mce-menu-item.mce-menu-item-preview.mce-active{border-left:5px solid #555c66;background:white}.mce-menu-item.mce-menu-item-preview.mce-active .mce-text,.mce-menu-item.mce-menu-item-preview.mce-active .mce-ico{color:#595959}.mce-menu-item.mce-menu-item-preview.mce-active:hover{background:#ededee}.mce-menu-item-link{color:#093;overflow:hidden;text-overfl
 ow:ellipsis;white-space:nowrap}.mce-menu-item-link b{color:#093}.mce-menu-item-ellipsis{display:block;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mce-menu-item:hover *,.mce-menu-item.mce-selected *,.mce-menu-item:focus *{color:#595959}div.mce-menu .mce-menu-item-sep,.mce-menu-item-sep:hover{border:0;padding:0;height:1px;margin:9px 1px;overflow:hidden;background:transparent;border-bottom:1px solid rgba(0,0,0,0.1);cursor:default;filter:none}div.mce-menu .mce-menu-item b{font-weight:bold}.mce-menu-item-indent-1{padding-left:20px}.mce-menu-item-indent-2{padding-left:35px}.mce-menu-item-indent-2{padding-left:35px}.mce-menu-item-indent-3{padding-left:40px}.mce-menu-item-indent-4{padding-left:45px}.mce-menu-item-indent-5{padding-left:50px}.mce-menu-item-indent-6{padding-left:55px}.mce-menu.mce-rtl{direction:rtl}.mce-rtl .mce-menu-item{text-align:right;direction:rtl;padding:6px 12px 6px 15px}.mce-rtl .mce-menu-item .mce-caret{margin-left:6px;margin-right:0;border-right:4px so
 lid #595959;border-left:0}.mce-rtl .mce-menu-item.mce-selected .mce-caret,.mce-rtl .mce-menu-item:focus .mce-caret,.mce-rtl .mce-menu-item:hover .mce-caret{border-left-color:transparent;border-right-color:#595959}.mce-rtl .mce-menu-item .mce-ico{padding-right:0;padding-left:4px}.mce-throbber{position:absolute;top:0;left:0;width:100%;height:100%;opacity:.6;filter:alpha(opacity=60);zoom:1;background:#fff url('img/loader.gif') no-repeat center center}.mce-throbber-inline{position:static;height:50px}.mce-menu .mce-throbber-inline{height:25px;background-size:contain}.mce-menu{position:absolute;left:0;top:0;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;z-index:1000;padding:5px 0 5px 0;margin:-1px 0 0;min-width:180px;background:white;border:1px solid #c5c9cf;border:1px solid #e2e4e7;z-index:1002;-webkit-box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);max-height:500px;ove
 rflow:auto;overflow-x:hidden}.mce-menu.mce-animate{opacity:.01;transform:rotateY(10deg) rotateX(-10deg);transform-origin:left top}.mce-menu.mce-menu-align .mce-menu-shortcut,.mce-menu.mce-menu-align .mce-caret{position:absolute;right:0}.mce-menu i{display:none}.mce-menu-has-icons i{display:inline-block}.mce-menu.mce-in.mce-animate{opacity:1;transform:rotateY(0) rotateX(0);transition:opacity .075s ease,transform .1s ease}.mce-menu-sub-tr-tl{margin:-6px 0 0 -1px}.mce-menu-sub-br-bl{margin:6px 0 0 -1px}.mce-menu-sub-tl-tr{margin:-6px 0 0 1px}.mce-menu-sub-bl-br{margin:6px 0 0 1px}.mce-rtl .mce-menu-item .mce-ico{padding-right:0;padding-left:4px}.mce-rtl.mce-menu-align .mce-caret,.mce-rtl .mce-menu-shortcut{right:auto;left:0}.mce-listbox button{text-align:left;padding-right:20px;position:relative}.mce-listbox .mce-caret{position:absolute;margin-top:-2px;right:8px;top:50%}.mce-rtl .mce-listbox .mce-caret{right:auto;left:8px}.mce-rtl .mce-listbox button{padding-right:10px;padding-left:20p
 x}.mce-container-body .mce-resizehandle{position:absolute;right:0;bottom:0;width:16px;height:16px;visibility:visible;cursor:s-resize;margin:0}.mce-container-body .mce-resizehandle-both{cursor:se-resize}i.mce-i-resize{color:#595959}.mce-selectbox{background:#fff;border:1px solid #c5c5c5}.mce-slider{border:1px solid #c5c5c5;background:#fff;width:100px;height:10px;position:relative;display:block}.mce-slider.mce-vertical{width:10px;height:100px}.mce-slider-handle{border:1px solid #c5c5c5;background:#e6e6e6;display:block;width:13px;height:13px;position:absolute;top:0;left:0;margin-left:-1px;margin-top:-2px}.mce-slider-handle:focus{border-color:#2276d2}.mce-spacer{visibility:hidden}.mce-splitbtn:hover .mce-open{border-left:1px solid #e2e4e7}.mce-splitbtn .mce-open{border-left:1px solid transparent;padding-right:4px;padding-left:4px}.mce-splitbtn .mce-open:focus{border-left:1px solid #e2e4e7}.mce-splitbtn .mce-open:hover,.mce-splitbtn .mce-open:active{border-left:1px solid #e2e4e7}.mce-spl
 itbtn.mce-active:hover .mce-open{border-left:1px solid white}.mce-splitbtn.mce-opened{border-color:#e2e4e7}.mce-splitbtn.mce-btn-small .mce-open{padding:0 3px 0 3px}.mce-rtl .mce-splitbtn{direction:rtl;text-align:right}.mce-rtl .mce-splitbtn button{padding-right:4px;padding-left:4px}.mce-rtl .mce-splitbtn .mce-open{border-left:0}.mce-stack-layout-item{display:block}.mce-tabs{display:block;border-bottom:1px solid #c5c5c5}.mce-tabs,.mce-tabs+.mce-container-body{background:#fff}.mce-tab{display:inline-block;*display:inline;*zoom:1;border:1px solid #c5c5c5;border-width:0 1px 0 0;background:#fff;padding:8px 15px;text-shadow:0 1px 1px rgba(255,255,255,0.75);height:13px;cursor:pointer}.mce-tab:hover{background:#FDFDFD}.mce-tab.mce-active{background:#FDFDFD;border-bottom-color:transparent;margin-bottom:-1px;height:14px}.mce-tab:focus{color:#2276d2}.mce-rtl .mce-tabs{text-align:right;direction:rtl}.mce-rtl .mce-tab{border-width:0 0 0 1px}.mce-textbox{background:#fff;border:1px solid #c5c5c5;
 -webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;display:inline-block;-webkit-transition:border linear .2s, box-shadow linear .2s;transition:border linear .2s, box-shadow linear .2s;height:28px;resize:none;padding:0 4px 0 4px;white-space:pre-wrap;*white-space:pre;color:#595959}.mce-textbox:focus,.mce-textbox.mce-focus{border-color:#2276d2;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.mce-placeholder .mce-textbox{color:#aaa}.mce-textbox.mce-multiline{padding:4px;height:auto}.mce-textbox.mce-disabled{color:#bdbdbd}.mce-rtl .mce-textbox{text-align:right;direction:rtl}.mce-dropzone{border:3px dashed gray;text-align:center}.mce-dropzone span{text-transform:uppercase;display:inline-block;vertical-align:middle}.mce-dropzone:after{content:"";height:100%;display:inline-block;vertical-align:middle}.mce-dropzone.mce-disabled{opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-dropzone.mce-disabled.mce-dragenter{cursor:not-allowed}.mce-browsebutton{position:rel
 ative;overflow:hidden}.mce-browsebutton button{position:relative;z-index:1}.mce-browsebutton input{opacity:0;filter:alpha(opacity=0);zoom:1;position:absolute;top:0;left:0;width:100%;height:100%;z-index:0}@font-face{font-family:'tinymce';src:url('fonts/tinymce.eot');src:url('fonts/tinymce.eot?#iefix') format('embedded-opentype'),url('fonts/tinymce.woff') format('woff'),url('fonts/tinymce.ttf') format('truetype'),url('fonts/tinymce.svg#tinymce') format('svg');font-weight:normal;font-style:normal}@font-face{font-family:'tinymce-small';src:url('fonts/tinymce-small.eot');src:url('fonts/tinymce-small.eot?#iefix') format('embedded-opentype'),url('fonts/tinymce-small.woff') format('woff'),url('fonts/tinymce-small.ttf') format('truetype'),url('fonts/tinymce-small.svg#tinymce') format('svg');font-weight:normal;font-style:normal}.mce-ico{font-family:'tinymce',Arial;font-style:normal;font-weight:normal;font-variant:normal;font-size:16px;line-height:16px;speak:none;vertical-align:text-top;-webki
 t-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;background:transparent center center;background-size:cover;width:16px;height:16px;color:#595959}.mce-btn-small .mce-ico{font-family:'tinymce-small',Arial}.mce-i-save:before{content:"\e000"}.mce-i-newdocument:before{content:"\e001"}.mce-i-fullpage:before{content:"\e002"}.mce-i-alignleft:before{content:"\e003"}.mce-i-aligncenter:before{content:"\e004"}.mce-i-alignright:before{content:"\e005"}.mce-i-alignjustify:before{content:"\e006"}.mce-i-alignnone:before{content:"\e003"}.mce-i-cut:before{content:"\e007"}.mce-i-paste:before{content:"\e008"}.mce-i-searchreplace:before{content:"\e009"}.mce-i-bullist:before{content:"\e00a"}.mce-i-numlist:before{content:"\e00b"}.mce-i-indent:before{content:"\e00c"}.mce-i-outdent:before{content:"\e00d"}.mce-i-blockquote:befo
 re{content:"\e00e"}.mce-i-undo:before{content:"\e00f"}.mce-i-redo:before{content:"\e010"}.mce-i-link:before{content:"\e011"}.mce-i-unlink:before{content:"\e012"}.mce-i-anchor:before{content:"\e013"}.mce-i-image:before{content:"\e014"}.mce-i-media:before{content:"\e015"}.mce-i-help:before{content:"\e016"}.mce-i-code:before{content:"\e017"}.mce-i-insertdatetime:before{content:"\e018"}.mce-i-preview:before{content:"\e019"}.mce-i-forecolor:before{content:"\e01a"}.mce-i-backcolor:before{content:"\e01a"}.mce-i-table:before{content:"\e01b"}.mce-i-hr:before{content:"\e01c"}.mce-i-removeformat:before{content:"\e01d"}.mce-i-subscript:before{content:"\e01e"}.mce-i-superscript:before{content:"\e01f"}.mce-i-charmap:before{content:"\e020"}.mce-i-emoticons:before{content:"\e021"}.mce-i-print
 :before{content:"\e022"}.mce-i-fullscreen:before{content:"\e023"}.mce-i-spellchecker:before{content:"\e024"}.mce-i-nonbreaking:before{content:"\e025"}.mce-i-template:before{content:"\e026"}.mce-i-pagebreak:before{content:"\e027"}.mce-i-restoredraft:before{content:"\e028"}.mce-i-bold:before{content:"\e02a"}.mce-i-italic:before{content:"\e02b"}.mce-i-underline:before{content:"\e02c"}.mce-i-strikethrough:before{content:"\e02d"}.mce-i-visualchars:before{content:"\e02e"}.mce-i-visualblocks:before{content:"\e02e"}.mce-i-ltr:before{content:"\e02f"}.mce-i-rtl:before{content:"\e030"}.mce-i-copy:before{content:"\e031"}.mce-i-resize:before{content:"\e032"}.mce-i-browse:before{content:"\e034"}.mce-i-pastetext:before{content:"\e035"}.mce-i-rotateleft:before{content:"\eaa8"}.mce-i-rotateright:before{
 content:"\eaa9"}.mce-i-crop:before{content:"\ee78"}.mce-i-editimage:before{content:"\e915"}.mce-i-options:before{content:"\ec6a"}.mce-i-flipv:before{content:"\eaaa"}.mce-i-fliph:before{content:"\eaac"}.mce-i-zoomin:before{content:"\eb35"}.mce-i-zoomout:before{content:"\eb36"}.mce-i-sun:before{content:"\eccc"}.mce-i-moon:before{content:"\eccd"}.mce-i-arrowleft:before{content:"\edc0"}.mce-i-arrowright:before{content:"\e93c"}.mce-i-drop:before{content:"\e935"}.mce-i-contrast:before{content:"\ecd4"}.mce-i-sharpen:before{content:"\eba7"}.mce-i-resize2:before{content:"\edf9"}.mce-i-orientation:before{content:"\e601"}.mce-i-invert:before{content:"\e602"}.mce-i-gamma:before{content:"\e600"}.mce-i-remove:before{content:"\ed6a"}.mce-i-tablerowprops:before{content:"\e604"}.mce-i-tablecel
 lprops:before{content:"\e605"}.mce-i-table2:before{content:"\e606"}.mce-i-tablemergecells:before{content:"\e607"}.mce-i-tableinsertcolbefore:before{content:"\e608"}.mce-i-tableinsertcolafter:before{content:"\e609"}.mce-i-tableinsertrowbefore:before{content:"\e60a"}.mce-i-tableinsertrowafter:before{content:"\e60b"}.mce-i-tablesplitcells:before{content:"\e60d"}.mce-i-tabledelete:before{content:"\e60e"}.mce-i-tableleftheader:before{content:"\e62a"}.mce-i-tabletopheader:before{content:"\e62b"}.mce-i-tabledeleterow:before{content:"\e800"}.mce-i-tabledeletecol:before{content:"\e801"}.mce-i-codesample:before{content:"\e603"}.mce-i-fill:before{content:"\e902"}.mce-i-borderwidth:before{content:"\e903"}.mce-i-line:before{content:"\e904"}.mce-i-count:before{content:"\e905"}.mce-i-translate:before{content:"\e907&
 quot;}.mce-i-drag:before{content:"\e908"}.mce-i-home:before{content:"\e90b"}.mce-i-upload:before{content:"\e914"}.mce-i-bubble:before{content:"\e91c"}.mce-i-user:before{content:"\e91d"}.mce-i-lock:before{content:"\e926"}.mce-i-unlock:before{content:"\e927"}.mce-i-settings:before{content:"\e928"}.mce-i-remove2:before{content:"\e92a"}.mce-i-menu:before{content:"\e92d"}.mce-i-warning:before{content:"\e930"}.mce-i-question:before{content:"\e931"}.mce-i-pluscircle:before{content:"\e932"}.mce-i-info:before{content:"\e933"}.mce-i-notice:before{content:"\e934"}.mce-i-arrowup:before{content:"\e93b"}.mce-i-arrowdown:before{content:"\e93d"}.mce-i-arrowup2:before{content:"\e93f"}.mce-i-arrowdown2:before{content:"\e940"}.mce-i-menu2:before{content:"\e941"}.mce-i-newtab:before{content:"\e961&quo
 t;}.mce-i-a11y:before{content:"\e900"}.mce-i-plus:before{content:"\e93a"}.mce-i-insert:before{content:"\e93a"}.mce-i-minus:before{content:"\e939"}.mce-i-books:before{content:"\e911"}.mce-i-reload:before{content:"\e906"}.mce-i-toc:before{content:"\e901"}.mce-i-checkmark:before{content:"\e033"}.mce-i-format-painter:before{content:"\e909"}.mce-i-checkbox:before,.mce-i-selected:before{content:"\e033"}.mce-i-insert{font-size:14px}.mce-i-selected{visibility:hidden}i.mce-i-backcolor{text-shadow:none;background:#BBB}.mce-rtl .mce-filepicker input{direction:ltr}/*# sourceMappingURL=skin.min.css.map */
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of file
</span></span></pre></div>
<a id="trunksrcjs_enqueuesvendortinymcethemesinlitethemejs"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/js/_enqueues/vendor/tinymce/themes/inlite/theme.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/js/_enqueues/vendor/tinymce/themes/inlite/theme.js      2019-05-15 19:53:42 UTC (rev 45315)
+++ trunk/src/js/_enqueues/vendor/tinymce/themes/inlite/theme.js        2019-05-15 23:44:37 UTC (rev 45316)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,5 @@
</span><span class="cx" style="display: block; padding: 0 10px"> (function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-var inlite = (function () {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+var inlite = (function (domGlobals) {
</ins><span class="cx" style="display: block; padding: 0 10px">     'use strict';
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var global = tinymce.util.Tools.resolve('tinymce.ThemeManager');
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -475,7 +475,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return result && result.rect ? result : null;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var editorHasFocus = function (editor) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return document.activeElement === editor.getBody();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return domGlobals.document.activeElement === editor.getBody();
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var togglePanel = function (editor, panel) {
</span><span class="cx" style="display: block; padding: 0 10px">       var toggle = function () {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -573,13 +573,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var eq = function (o) {
</span><span class="cx" style="display: block; padding: 0 10px">         return o.isNone();
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var call$$1 = function (thunk) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var call = function (thunk) {
</ins><span class="cx" style="display: block; padding: 0 10px">         return thunk();
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var id = function (n) {
</span><span class="cx" style="display: block; padding: 0 10px">         return n;
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var noop$$1 = function () {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var noop = function () {
</ins><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var nul = function () {
</span><span class="cx" style="display: block; padding: 0 10px">         return null;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -595,7 +595,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         isSome: never$1,
</span><span class="cx" style="display: block; padding: 0 10px">         isNone: always$1,
</span><span class="cx" style="display: block; padding: 0 10px">         getOr: id,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        getOrThunk: call$$1,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        getOrThunk: call,
</ins><span class="cx" style="display: block; padding: 0 10px">         getOrDie: function (msg) {
</span><span class="cx" style="display: block; padding: 0 10px">           throw new Error(msg || 'error: getOrDie called on none.');
</span><span class="cx" style="display: block; padding: 0 10px">         },
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -602,10 +602,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">         getOrNull: nul,
</span><span class="cx" style="display: block; padding: 0 10px">         getOrUndefined: undef,
</span><span class="cx" style="display: block; padding: 0 10px">         or: id,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        orThunk: call$$1,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        orThunk: call,
</ins><span class="cx" style="display: block; padding: 0 10px">         map: none,
</span><span class="cx" style="display: block; padding: 0 10px">         ap: none,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        each: noop$$1,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        each: noop,
</ins><span class="cx" style="display: block; padding: 0 10px">         bind: none,
</span><span class="cx" style="display: block; padding: 0 10px">         flatten: none,
</span><span class="cx" style="display: block; padding: 0 10px">         exists: never$1,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -805,8 +805,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">       id: function () {
</span><span class="cx" style="display: block; padding: 0 10px">         return 'mceu_' + count++;
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      create: function (name$$1, attrs, children) {
-        var elm = document.createElement(name$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      create: function (name, attrs, children) {
+        var elm = domGlobals.document.createElement(name);
</ins><span class="cx" style="display: block; padding: 0 10px">         global$2.DOM.setAttribs(elm, attrs);
</span><span class="cx" style="display: block; padding: 0 10px">         if (typeof children === 'string') {
</span><span class="cx" style="display: block; padding: 0 10px">           elm.innerHTML = children;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -844,13 +844,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return global$2.DOM.getPos(elm, root || funcs.getContainer());
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       getContainer: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return global$1.container ? global$1.container : document.body;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return global$1.container ? global$1.container : domGlobals.document.body;
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       getViewPort: function (win) {
</span><span class="cx" style="display: block; padding: 0 10px">         return global$2.DOM.getViewPort(win);
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       get: function (id) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return document.getElementById(id);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return domGlobals.document.getElementById(id);
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       addClass: function (elm, cls) {
</span><span class="cx" style="display: block; padding: 0 10px">         return global$2.DOM.addClass(elm, cls);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -864,20 +864,20 @@
</span><span class="cx" style="display: block; padding: 0 10px">       toggleClass: function (elm, cls, state) {
</span><span class="cx" style="display: block; padding: 0 10px">         return global$2.DOM.toggleClass(elm, cls, state);
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      css: function (elm, name$$1, value) {
-        return global$2.DOM.setStyle(elm, name$$1, value);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      css: function (elm, name, value) {
+        return global$2.DOM.setStyle(elm, name, value);
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      getRuntimeStyle: function (elm, name$$1) {
-        return global$2.DOM.getStyle(elm, name$$1, true);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      getRuntimeStyle: function (elm, name) {
+        return global$2.DOM.getStyle(elm, name, true);
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      on: function (target, name$$1, callback, scope) {
-        return global$2.DOM.bind(target, name$$1, callback, scope);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      on: function (target, name, callback, scope) {
+        return global$2.DOM.bind(target, name, callback, scope);
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      off: function (target, name$$1, callback) {
-        return global$2.DOM.unbind(target, name$$1, callback);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      off: function (target, name, callback) {
+        return global$2.DOM.unbind(target, name, callback);
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      fire: function (target, name$$1, args) {
-        return global$2.DOM.fire(target, name$$1, args);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      fire: function (target, name, args) {
+        return global$2.DOM.fire(target, name, args);
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       innerHtml: function (elm, html) {
</span><span class="cx" style="display: block; padding: 0 10px">         global$2.DOM.setHTML(elm, html);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1506,13 +1506,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var dirtyCtrls = {}, animationFrameRequested;
</span><span class="cx" style="display: block; padding: 0 10px">     var ReflowQueue = {
</span><span class="cx" style="display: block; padding: 0 10px">       add: function (ctrl) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var parent$$1 = ctrl.parent();
-        if (parent$$1) {
-          if (!parent$$1._layout || parent$$1._layout.isNative()) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var parent = ctrl.parent();
+        if (parent) {
+          if (!parent._layout || parent._layout.isNative()) {
</ins><span class="cx" style="display: block; padding: 0 10px">             return;
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (!dirtyCtrls[parent$$1._id]) {
-            dirtyCtrls[parent$$1._id] = parent$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (!dirtyCtrls[parent._id]) {
+            dirtyCtrls[parent._id] = parent;
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           if (!animationFrameRequested) {
</span><span class="cx" style="display: block; padding: 0 10px">             animationFrameRequested = true;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1526,7 +1526,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px">               }
</span><span class="cx" style="display: block; padding: 0 10px">               dirtyCtrls = {};
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            }, document.body);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            }, domGlobals.document.body);
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1568,7 +1568,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       inheritUiContainer: inheritUiContainer
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var hasMouseWheelEventSupport = 'onmousewheel' in document;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var hasMouseWheelEventSupport = 'onmousewheel' in domGlobals.document;
</ins><span class="cx" style="display: block; padding: 0 10px">     var hasWheelEventSupport = false;
</span><span class="cx" style="display: block; padding: 0 10px">     var classPrefix = 'mce-';
</span><span class="cx" style="display: block; padding: 0 10px">     var Control, idCounter = 0;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1579,37 +1579,37 @@
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       classPrefix: classPrefix,
</span><span class="cx" style="display: block; padding: 0 10px">       init: function (settings) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">         var classes, defaultClasses;
</span><span class="cx" style="display: block; padding: 0 10px">         function applyClasses(classes) {
</span><span class="cx" style="display: block; padding: 0 10px">           var i;
</span><span class="cx" style="display: block; padding: 0 10px">           classes = classes.split(' ');
</span><span class="cx" style="display: block; padding: 0 10px">           for (i = 0; i < classes.length; i++) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            self$$1.classes.add(classes[i]);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            self.classes.add(classes[i]);
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.settings = settings = global$4.extend({}, self$$1.Defaults, settings);
-        self$$1._id = settings.id || 'mceu_' + idCounter++;
-        self$$1._aria = { role: settings.role };
-        self$$1._elmCache = {};
-        self$$1.$ = global$7;
-        self$$1.state = new ObservableObject({
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.settings = settings = global$4.extend({}, self.Defaults, settings);
+        self._id = settings.id || 'mceu_' + idCounter++;
+        self._aria = { role: settings.role };
+        self._elmCache = {};
+        self.$ = global$7;
+        self.state = new ObservableObject({
</ins><span class="cx" style="display: block; padding: 0 10px">           visible: true,
</span><span class="cx" style="display: block; padding: 0 10px">           active: false,
</span><span class="cx" style="display: block; padding: 0 10px">           disabled: false,
</span><span class="cx" style="display: block; padding: 0 10px">           value: ''
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.data = new ObservableObject(settings.data);
-        self$$1.classes = new ClassList(function () {
-          if (self$$1.state.get('rendered')) {
-            self$$1.getEl().className = this.toString();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.data = new ObservableObject(settings.data);
+        self.classes = new ClassList(function () {
+          if (self.state.get('rendered')) {
+            self.getEl().className = this.toString();
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.classes.prefix = self$$1.classPrefix;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.classes.prefix = self.classPrefix;
</ins><span class="cx" style="display: block; padding: 0 10px">         classes = settings.classes;
</span><span class="cx" style="display: block; padding: 0 10px">         if (classes) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (self$$1.Defaults) {
-            defaultClasses = self$$1.Defaults.classes;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (self.Defaults) {
+            defaultClasses = self.Defaults.classes;
</ins><span class="cx" style="display: block; padding: 0 10px">             if (defaultClasses && classes !== defaultClasses) {
</span><span class="cx" style="display: block; padding: 0 10px">               applyClasses(defaultClasses);
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1616,22 +1616,22 @@
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           applyClasses(classes);
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        global$4.each('title text name visible disabled active value'.split(' '), function (name$$1) {
-          if (name$$1 in settings) {
-            self$$1[name$$1](settings[name$$1]);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        global$4.each('title text name visible disabled active value'.split(' '), function (name) {
+          if (name in settings) {
+            self[name](settings[name]);
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.on('click', function () {
-          if (self$$1.disabled()) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.on('click', function () {
+          if (self.disabled()) {
</ins><span class="cx" style="display: block; padding: 0 10px">             return false;
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.settings = settings;
-        self$$1.borderBox = BoxUtils.parseBox(settings.border);
-        self$$1.paddingBox = BoxUtils.parseBox(settings.padding);
-        self$$1.marginBox = BoxUtils.parseBox(settings.margin);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.settings = settings;
+        self.borderBox = BoxUtils.parseBox(settings.border);
+        self.paddingBox = BoxUtils.parseBox(settings.padding);
+        self.marginBox = BoxUtils.parseBox(settings.margin);
</ins><span class="cx" style="display: block; padding: 0 10px">         if (settings.hidden) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.hide();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.hide();
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       Properties: 'parent,name',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1652,15 +1652,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return ctrl;
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       initLayoutRect: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        var settings = self$$1.settings;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        var settings = self.settings;
</ins><span class="cx" style="display: block; padding: 0 10px">         var borderBox, layoutRect;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var elm = self$$1.getEl();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var elm = self.getEl();
</ins><span class="cx" style="display: block; padding: 0 10px">         var width, height, minWidth, minHeight, autoResize;
</span><span class="cx" style="display: block; padding: 0 10px">         var startMinWidth, startMinHeight, initialSize;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        borderBox = self$$1.borderBox = self$$1.borderBox || BoxUtils.measureBox(elm, 'border');
-        self$$1.paddingBox = self$$1.paddingBox || BoxUtils.measureBox(elm, 'padding');
-        self$$1.marginBox = self$$1.marginBox || BoxUtils.measureBox(elm, 'margin');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        borderBox = self.borderBox = self.borderBox || BoxUtils.measureBox(elm, 'border');
+        self.paddingBox = self.paddingBox || BoxUtils.measureBox(elm, 'padding');
+        self.marginBox = self.marginBox || BoxUtils.measureBox(elm, 'margin');
</ins><span class="cx" style="display: block; padding: 0 10px">         initialSize = funcs.getSize(elm);
</span><span class="cx" style="display: block; padding: 0 10px">         startMinWidth = settings.minWidth;
</span><span class="cx" style="display: block; padding: 0 10px">         startMinHeight = settings.minHeight;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1676,7 +1676,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         var deltaH = borderBox.top + borderBox.bottom;
</span><span class="cx" style="display: block; padding: 0 10px">         var maxW = settings.maxWidth || 65535;
</span><span class="cx" style="display: block; padding: 0 10px">         var maxH = settings.maxHeight || 65535;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1._layoutRect = layoutRect = {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self._layoutRect = layoutRect = {
</ins><span class="cx" style="display: block; padding: 0 10px">           x: settings.x || 0,
</span><span class="cx" style="display: block; padding: 0 10px">           y: settings.y || 0,
</span><span class="cx" style="display: block; padding: 0 10px">           w: width,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1696,14 +1696,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">           autoResize: autoResize,
</span><span class="cx" style="display: block; padding: 0 10px">           scrollW: 0
</span><span class="cx" style="display: block; padding: 0 10px">         };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1._lastLayoutRect = {};
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self._lastLayoutRect = {};
</ins><span class="cx" style="display: block; padding: 0 10px">         return layoutRect;
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       layoutRect: function (newRect) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        var curRect = self$$1._layoutRect, lastLayoutRect, size, deltaWidth, deltaHeight, repaintControls;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        var curRect = self._layoutRect, lastLayoutRect, size, deltaWidth, deltaHeight, repaintControls;
</ins><span class="cx" style="display: block; padding: 0 10px">         if (!curRect) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          curRect = self$$1.initLayoutRect();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          curRect = self.initLayoutRect();
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (newRect) {
</span><span class="cx" style="display: block; padding: 0 10px">           deltaWidth = curRect.deltaW;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1754,13 +1754,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">           if (newRect.contentH !== undefined) {
</span><span class="cx" style="display: block; padding: 0 10px">             curRect.contentH = newRect.contentH;
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          lastLayoutRect = self$$1._lastLayoutRect;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          lastLayoutRect = self._lastLayoutRect;
</ins><span class="cx" style="display: block; padding: 0 10px">           if (lastLayoutRect.x !== curRect.x || lastLayoutRect.y !== curRect.y || lastLayoutRect.w !== curRect.w || lastLayoutRect.h !== curRect.h) {
</span><span class="cx" style="display: block; padding: 0 10px">             repaintControls = Control.repaintControls;
</span><span class="cx" style="display: block; padding: 0 10px">             if (repaintControls) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              if (repaintControls.map && !repaintControls.map[self$$1._id]) {
-                repaintControls.push(self$$1);
-                repaintControls.map[self$$1._id] = true;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              if (repaintControls.map && !repaintControls.map[self._id]) {
+                repaintControls.push(self);
+                repaintControls.map[self._id] = true;
</ins><span class="cx" style="display: block; padding: 0 10px">               }
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">             lastLayoutRect.x = curRect.x;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1768,21 +1768,21 @@
</span><span class="cx" style="display: block; padding: 0 10px">             lastLayoutRect.w = curRect.w;
</span><span class="cx" style="display: block; padding: 0 10px">             lastLayoutRect.h = curRect.h;
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          return self;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         return curRect;
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       repaint: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">         var style, bodyStyle, bodyElm, rect, borderBox;
</span><span class="cx" style="display: block; padding: 0 10px">         var borderW, borderH, lastRepaintRect, round, value;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        round = !document.createRange ? Math.round : function (value) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        round = !domGlobals.document.createRange ? Math.round : function (value) {
</ins><span class="cx" style="display: block; padding: 0 10px">           return value;
</span><span class="cx" style="display: block; padding: 0 10px">         };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        style = self$$1.getEl().style;
-        rect = self$$1._layoutRect;
-        lastRepaintRect = self$$1._lastRepaintRect || {};
-        borderBox = self$$1.borderBox;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        style = self.getEl().style;
+        rect = self._layoutRect;
+        lastRepaintRect = self._lastRepaintRect || {};
+        borderBox = self.borderBox;
</ins><span class="cx" style="display: block; padding: 0 10px">         borderW = borderBox.left + borderBox.right;
</span><span class="cx" style="display: block; padding: 0 10px">         borderH = borderBox.top + borderBox.bottom;
</span><span class="cx" style="display: block; padding: 0 10px">         if (rect.x !== lastRepaintRect.x) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1803,9 +1803,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">           style.height = (value >= 0 ? value : 0) + 'px';
</span><span class="cx" style="display: block; padding: 0 10px">           lastRepaintRect.h = rect.h;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (self$$1._hasBody && rect.innerW !== lastRepaintRect.innerW) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (self._hasBody && rect.innerW !== lastRepaintRect.innerW) {
</ins><span class="cx" style="display: block; padding: 0 10px">           value = round(rect.innerW);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          bodyElm = self$$1.getEl('body');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          bodyElm = self.getEl('body');
</ins><span class="cx" style="display: block; padding: 0 10px">           if (bodyElm) {
</span><span class="cx" style="display: block; padding: 0 10px">             bodyStyle = bodyElm.style;
</span><span class="cx" style="display: block; padding: 0 10px">             bodyStyle.width = (value >= 0 ? value : 0) + 'px';
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1812,9 +1812,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           lastRepaintRect.innerW = rect.innerW;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (self$$1._hasBody && rect.innerH !== lastRepaintRect.innerH) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (self._hasBody && rect.innerH !== lastRepaintRect.innerH) {
</ins><span class="cx" style="display: block; padding: 0 10px">           value = round(rect.innerH);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          bodyElm = bodyElm || self$$1.getEl('body');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          bodyElm = bodyElm || self.getEl('body');
</ins><span class="cx" style="display: block; padding: 0 10px">           if (bodyElm) {
</span><span class="cx" style="display: block; padding: 0 10px">             bodyStyle = bodyStyle || bodyElm.style;
</span><span class="cx" style="display: block; padding: 0 10px">             bodyStyle.height = (value >= 0 ? value : 0) + 'px';
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1821,31 +1821,31 @@
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           lastRepaintRect.innerH = rect.innerH;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1._lastRepaintRect = lastRepaintRect;
-        self$$1.fire('repaint', {}, false);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self._lastRepaintRect = lastRepaintRect;
+        self.fire('repaint', {}, false);
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       updateLayoutRect: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        self$$1.parent()._lastRect = null;
-        funcs.css(self$$1.getEl(), {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        self.parent()._lastRect = null;
+        funcs.css(self.getEl(), {
</ins><span class="cx" style="display: block; padding: 0 10px">           width: '',
</span><span class="cx" style="display: block; padding: 0 10px">           height: ''
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1._layoutRect = self$$1._lastRepaintRect = self$$1._lastLayoutRect = null;
-        self$$1.initLayoutRect();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self._layoutRect = self._lastRepaintRect = self._lastLayoutRect = null;
+        self.initLayoutRect();
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      on: function (name$$1, callback) {
-        var self$$1 = this;
-        function resolveCallbackName(name$$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      on: function (name, callback) {
+        var self = this;
+        function resolveCallbackName(name) {
</ins><span class="cx" style="display: block; padding: 0 10px">           var callback, scope;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (typeof name$$1 !== 'string') {
-            return name$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (typeof name !== 'string') {
+            return name;
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           return function (e) {
</span><span class="cx" style="display: block; padding: 0 10px">             if (!callback) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              self$$1.parentsAndSelf().each(function (ctrl) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              self.parentsAndSelf().each(function (ctrl) {
</ins><span class="cx" style="display: block; padding: 0 10px">                 var callbacks = ctrl.settings.callbacks;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if (callbacks && (callback = callbacks[name$$1])) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                if (callbacks && (callback = callbacks[name])) {
</ins><span class="cx" style="display: block; padding: 0 10px">                   scope = ctrl;
</span><span class="cx" style="display: block; padding: 0 10px">                   return false;
</span><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1852,7 +1852,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">               });
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">             if (!callback) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              e.action = name$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              e.action = name;
</ins><span class="cx" style="display: block; padding: 0 10px">               this.fire('execute', e);
</span><span class="cx" style="display: block; padding: 0 10px">               return;
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1859,36 +1859,36 @@
</span><span class="cx" style="display: block; padding: 0 10px">             return callback.call(scope, e);
</span><span class="cx" style="display: block; padding: 0 10px">           };
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        getEventDispatcher(self$$1).on(name$$1, resolveCallbackName(callback));
-        return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        getEventDispatcher(self).on(name, resolveCallbackName(callback));
+        return self;
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      off: function (name$$1, callback) {
-        getEventDispatcher(this).off(name$$1, callback);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      off: function (name, callback) {
+        getEventDispatcher(this).off(name, callback);
</ins><span class="cx" style="display: block; padding: 0 10px">         return this;
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      fire: function (name$$1, args, bubble) {
-        var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      fire: function (name, args, bubble) {
+        var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">         args = args || {};
</span><span class="cx" style="display: block; padding: 0 10px">         if (!args.control) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          args.control = self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          args.control = self;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        args = getEventDispatcher(self$$1).fire(name$$1, args);
-        if (bubble !== false && self$$1.parent) {
-          var parent$$1 = self$$1.parent();
-          while (parent$$1 && !args.isPropagationStopped()) {
-            parent$$1.fire(name$$1, args, false);
-            parent$$1 = parent$$1.parent();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        args = getEventDispatcher(self).fire(name, args);
+        if (bubble !== false && self.parent) {
+          var parent = self.parent();
+          while (parent && !args.isPropagationStopped()) {
+            parent.fire(name, args, false);
+            parent = parent.parent();
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         return args;
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      hasEventListeners: function (name$$1) {
-        return getEventDispatcher(this).has(name$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      hasEventListeners: function (name) {
+        return getEventDispatcher(this).has(name);
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       parents: function (selector) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">         var ctrl, parents = new Collection$2();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        for (ctrl = self$$1.parent(); ctrl; ctrl = ctrl.parent()) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        for (ctrl = self.parent(); ctrl; ctrl = ctrl.parent()) {
</ins><span class="cx" style="display: block; padding: 0 10px">           parents.add(ctrl);
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (selector) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1935,16 +1935,16 @@
</span><span class="cx" style="display: block; padding: 0 10px">         this.getEl().blur();
</span><span class="cx" style="display: block; padding: 0 10px">         return this;
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      aria: function (name$$1, value) {
-        var self$$1 = this, elm = self$$1.getEl(self$$1.ariaTarget);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      aria: function (name, value) {
+        var self = this, elm = self.getEl(self.ariaTarget);
</ins><span class="cx" style="display: block; padding: 0 10px">         if (typeof value === 'undefined') {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          return self$$1._aria[name$$1];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          return self._aria[name];
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1._aria[name$$1] = value;
-        if (self$$1.state.get('rendered')) {
-          elm.setAttribute(name$$1 === 'role' ? name$$1 : 'aria-' + name$$1, value);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self._aria[name] = value;
+        if (self.state.get('rendered')) {
+          elm.setAttribute(name === 'role' ? name : 'aria-' + name, value);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return self;
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       encode: function (text, translate) {
</span><span class="cx" style="display: block; padding: 0 10px">         if (translate !== false) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1958,55 +1958,55 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return Control.translate ? Control.translate(text) : text;
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       before: function (items) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this, parent$$1 = self$$1.parent();
-        if (parent$$1) {
-          parent$$1.insert(items, parent$$1.items().indexOf(self$$1), true);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this, parent = self.parent();
+        if (parent) {
+          parent.insert(items, parent.items().indexOf(self), true);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return self;
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       after: function (items) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this, parent$$1 = self$$1.parent();
-        if (parent$$1) {
-          parent$$1.insert(items, parent$$1.items().indexOf(self$$1));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this, parent = self.parent();
+        if (parent) {
+          parent.insert(items, parent.items().indexOf(self));
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return self;
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       remove: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        var elm = self$$1.getEl();
-        var parent$$1 = self$$1.parent();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        var elm = self.getEl();
+        var parent = self.parent();
</ins><span class="cx" style="display: block; padding: 0 10px">         var newItems, i;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (self$$1.items) {
-          var controls = self$$1.items().toArray();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (self.items) {
+          var controls = self.items().toArray();
</ins><span class="cx" style="display: block; padding: 0 10px">           i = controls.length;
</span><span class="cx" style="display: block; padding: 0 10px">           while (i--) {
</span><span class="cx" style="display: block; padding: 0 10px">             controls[i].remove();
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (parent$$1 && parent$$1.items) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (parent && parent.items) {
</ins><span class="cx" style="display: block; padding: 0 10px">           newItems = [];
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          parent$$1.items().each(function (item) {
-            if (item !== self$$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          parent.items().each(function (item) {
+            if (item !== self) {
</ins><span class="cx" style="display: block; padding: 0 10px">               newItems.push(item);
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          parent$$1.items().set(newItems);
-          parent$$1._lastRect = null;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          parent.items().set(newItems);
+          parent._lastRect = null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (self$$1._eventsRoot && self$$1._eventsRoot === self$$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (self._eventsRoot && self._eventsRoot === self) {
</ins><span class="cx" style="display: block; padding: 0 10px">           global$7(elm).off();
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var lookup = self$$1.getRoot().controlIdLookup;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var lookup = self.getRoot().controlIdLookup;
</ins><span class="cx" style="display: block; padding: 0 10px">         if (lookup) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          delete lookup[self$$1._id];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          delete lookup[self._id];
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (elm && elm.parentNode) {
</span><span class="cx" style="display: block; padding: 0 10px">           elm.parentNode.removeChild(elm);
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.state.set('rendered', false);
-        self$$1.state.destroy();
-        self$$1.fire('remove');
-        return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.state.set('rendered', false);
+        self.state.destroy();
+        self.fire('remove');
+        return self;
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       renderBefore: function (elm) {
</span><span class="cx" style="display: block; padding: 0 10px">         global$7(elm).before(this.renderHtml());
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2026,37 +2026,37 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return '<div id="' + this._id + '" class="' + this.classes + '"></div>';
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       postRender: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        var settings = self$$1.settings;
-        var elm, box, parent$$1, name$$1, parentEventsRoot;
-        self$$1.$el = global$7(self$$1.getEl());
-        self$$1.state.set('rendered', true);
-        for (name$$1 in settings) {
-          if (name$$1.indexOf('on') === 0) {
-            self$$1.on(name$$1.substr(2), settings[name$$1]);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        var settings = self.settings;
+        var elm, box, parent, name, parentEventsRoot;
+        self.$el = global$7(self.getEl());
+        self.state.set('rendered', true);
+        for (name in settings) {
+          if (name.indexOf('on') === 0) {
+            self.on(name.substr(2), settings[name]);
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (self$$1._eventsRoot) {
-          for (parent$$1 = self$$1.parent(); !parentEventsRoot && parent$$1; parent$$1 = parent$$1.parent()) {
-            parentEventsRoot = parent$$1._eventsRoot;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (self._eventsRoot) {
+          for (parent = self.parent(); !parentEventsRoot && parent; parent = parent.parent()) {
+            parentEventsRoot = parent._eventsRoot;
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           if (parentEventsRoot) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            for (name$$1 in parentEventsRoot._nativeEvents) {
-              self$$1._nativeEvents[name$$1] = true;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            for (name in parentEventsRoot._nativeEvents) {
+              self._nativeEvents[name] = true;
</ins><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        bindPendingEvents(self$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        bindPendingEvents(self);
</ins><span class="cx" style="display: block; padding: 0 10px">         if (settings.style) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          elm = self$$1.getEl();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          elm = self.getEl();
</ins><span class="cx" style="display: block; padding: 0 10px">           if (elm) {
</span><span class="cx" style="display: block; padding: 0 10px">             elm.setAttribute('style', settings.style);
</span><span class="cx" style="display: block; padding: 0 10px">             elm.style.cssText = settings.style;
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (self$$1.settings.border) {
-          box = self$$1.borderBox;
-          self$$1.$el.css({
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (self.settings.border) {
+          box = self.borderBox;
+          self.$el.css({
</ins><span class="cx" style="display: block; padding: 0 10px">             'border-top-width': box.top,
</span><span class="cx" style="display: block; padding: 0 10px">             'border-right-width': box.right,
</span><span class="cx" style="display: block; padding: 0 10px">             'border-bottom-width': box.bottom,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2063,44 +2063,44 @@
</span><span class="cx" style="display: block; padding: 0 10px">             'border-left-width': box.left
</span><span class="cx" style="display: block; padding: 0 10px">           });
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var root = self$$1.getRoot();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var root = self.getRoot();
</ins><span class="cx" style="display: block; padding: 0 10px">         if (!root.controlIdLookup) {
</span><span class="cx" style="display: block; padding: 0 10px">           root.controlIdLookup = {};
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        root.controlIdLookup[self$$1._id] = self$$1;
-        for (var key in self$$1._aria) {
-          self$$1.aria(key, self$$1._aria[key]);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        root.controlIdLookup[self._id] = self;
+        for (var key in self._aria) {
+          self.aria(key, self._aria[key]);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (self$$1.state.get('visible') === false) {
-          self$$1.getEl().style.display = 'none';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (self.state.get('visible') === false) {
+          self.getEl().style.display = 'none';
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.bindStates();
-        self$$1.state.on('change:visible', function (e) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.bindStates();
+        self.state.on('change:visible', function (e) {
</ins><span class="cx" style="display: block; padding: 0 10px">           var state = e.value;
</span><span class="cx" style="display: block; padding: 0 10px">           var parentCtrl;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (self$$1.state.get('rendered')) {
-            self$$1.getEl().style.display = state === false ? 'none' : '';
-            self$$1.getEl().getBoundingClientRect();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (self.state.get('rendered')) {
+            self.getEl().style.display = state === false ? 'none' : '';
+            self.getEl().getBoundingClientRect();
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          parentCtrl = self$$1.parent();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          parentCtrl = self.parent();
</ins><span class="cx" style="display: block; padding: 0 10px">           if (parentCtrl) {
</span><span class="cx" style="display: block; padding: 0 10px">             parentCtrl._lastRect = null;
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.fire(state ? 'show' : 'hide');
-          ReflowQueue.add(self$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.fire(state ? 'show' : 'hide');
+          ReflowQueue.add(self);
</ins><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.fire('postrender', {}, false);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.fire('postrender', {}, false);
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       bindStates: function () {
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       scrollIntoView: function (align) {
</span><span class="cx" style="display: block; padding: 0 10px">         function getOffset(elm, rootElm) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          var x, y, parent$$1 = elm;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          var x, y, parent = elm;
</ins><span class="cx" style="display: block; padding: 0 10px">           x = y = 0;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          while (parent$$1 && parent$$1 !== rootElm && parent$$1.nodeType) {
-            x += parent$$1.offsetLeft || 0;
-            y += parent$$1.offsetTop || 0;
-            parent$$1 = parent$$1.offsetParent;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          while (parent && parent !== rootElm && parent.nodeType) {
+            x += parent.offsetLeft || 0;
+            y += parent.offsetTop || 0;
+            parent = parent.offsetParent;
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           return {
</span><span class="cx" style="display: block; padding: 0 10px">             x: x,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2150,20 +2150,20 @@
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       reflow: function () {
</span><span class="cx" style="display: block; padding: 0 10px">         ReflowQueue.remove(this);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var parent$$1 = this.parent();
-        if (parent$$1 && parent$$1._layout && !parent$$1._layout.isNative()) {
-          parent$$1.reflow();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var parent = this.parent();
+        if (parent && parent._layout && !parent._layout.isNative()) {
+          parent.reflow();
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         return this;
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    global$4.each('text title visible disabled active value'.split(' '), function (name$$1) {
-      proto$1[name$$1] = function (value) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    global$4.each('text title visible disabled active value'.split(' '), function (name) {
+      proto$1[name] = function (value) {
</ins><span class="cx" style="display: block; padding: 0 10px">         if (arguments.length === 0) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          return this.state.get(name$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          return this.state.get(name);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (typeof value !== 'undefined') {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          this.state.set(name$$1, value);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          this.state.set(name, value);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         return this;
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2173,12 +2173,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">       if (!obj._eventDispatcher) {
</span><span class="cx" style="display: block; padding: 0 10px">         obj._eventDispatcher = new global$9({
</span><span class="cx" style="display: block; padding: 0 10px">           scope: obj,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          toggleEvent: function (name$$1, state) {
-            if (state && global$9.isNative(name$$1)) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          toggleEvent: function (name, state) {
+            if (state && global$9.isNative(name)) {
</ins><span class="cx" style="display: block; padding: 0 10px">               if (!obj._nativeEvents) {
</span><span class="cx" style="display: block; padding: 0 10px">                 obj._nativeEvents = {};
</span><span class="cx" style="display: block; padding: 0 10px">               }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              obj._nativeEvents[name$$1] = true;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              obj._nativeEvents[name] = true;
</ins><span class="cx" style="display: block; padding: 0 10px">               if (obj.state.get('rendered')) {
</span><span class="cx" style="display: block; padding: 0 10px">                 bindPendingEvents(obj);
</span><span class="cx" style="display: block; padding: 0 10px">               }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2189,7 +2189,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return obj._eventDispatcher;
</span><span class="cx" style="display: block; padding: 0 10px">     }
</span><span class="cx" style="display: block; padding: 0 10px">     function bindPendingEvents(eventCtrl) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var i, l, parents, eventRootCtrl, nativeEvents, name$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var i, l, parents, eventRootCtrl, nativeEvents, name;
</ins><span class="cx" style="display: block; padding: 0 10px">       function delegate(e) {
</span><span class="cx" style="display: block; padding: 0 10px">         var control = eventCtrl.getParentCtrl(e.target);
</span><span class="cx" style="display: block; padding: 0 10px">         if (control) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2262,11 +2262,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">         if (!eventRootDelegates) {
</span><span class="cx" style="display: block; padding: 0 10px">           eventRootDelegates = eventRootCtrl._delegates = {};
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        for (name$$1 in nativeEvents) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        for (name in nativeEvents) {
</ins><span class="cx" style="display: block; padding: 0 10px">           if (!nativeEvents) {
</span><span class="cx" style="display: block; padding: 0 10px">             return false;
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (name$$1 === 'wheel' && !hasWheelEventSupport) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (name === 'wheel' && !hasWheelEventSupport) {
</ins><span class="cx" style="display: block; padding: 0 10px">             if (hasMouseWheelEventSupport) {
</span><span class="cx" style="display: block; padding: 0 10px">               global$7(eventCtrl.getEl()).on('mousewheel', fixWheelEvent);
</span><span class="cx" style="display: block; padding: 0 10px">             } else {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2274,16 +2274,16 @@
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">             continue;
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (name$$1 === 'mouseenter' || name$$1 === 'mouseleave') {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (name === 'mouseenter' || name === 'mouseleave') {
</ins><span class="cx" style="display: block; padding: 0 10px">             if (!eventRootCtrl._hasMouseEnter) {
</span><span class="cx" style="display: block; padding: 0 10px">               global$7(eventRootCtrl.getEl()).on('mouseleave', mouseLeaveHandler).on('mouseover', mouseEnterHandler);
</span><span class="cx" style="display: block; padding: 0 10px">               eventRootCtrl._hasMouseEnter = 1;
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          } else if (!eventRootDelegates[name$$1]) {
-            global$7(eventRootCtrl.getEl()).on(name$$1, delegate);
-            eventRootDelegates[name$$1] = true;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          } else if (!eventRootDelegates[name]) {
+            global$7(eventRootCtrl.getEl()).on(name, delegate);
+            eventRootDelegates[name] = true;
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          nativeEvents[name$$1] = false;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          nativeEvents[name] = false;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2301,7 +2301,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       pos = funcs.getPos(targetElm, UiContainer.getUiContainer(ctrl));
</span><span class="cx" style="display: block; padding: 0 10px">       x = pos.x;
</span><span class="cx" style="display: block; padding: 0 10px">       y = pos.y;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      if (isFixed(ctrl) && isStatic(document.body)) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      if (isFixed(ctrl) && isStatic(domGlobals.document.body)) {
</ins><span class="cx" style="display: block; padding: 0 10px">         x -= viewport.x;
</span><span class="cx" style="display: block; padding: 0 10px">         y -= viewport.y;
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2353,11 +2353,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var getWindowViewPort = function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var win = window;
-      var x = Math.max(win.pageXOffset, document.body.scrollLeft, document.documentElement.scrollLeft);
-      var y = Math.max(win.pageYOffset, document.body.scrollTop, document.documentElement.scrollTop);
-      var w = win.innerWidth || document.documentElement.clientWidth;
-      var h = win.innerHeight || document.documentElement.clientHeight;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var win = domGlobals.window;
+      var x = Math.max(win.pageXOffset, domGlobals.document.body.scrollLeft, domGlobals.document.documentElement.scrollLeft);
+      var y = Math.max(win.pageYOffset, domGlobals.document.body.scrollTop, domGlobals.document.documentElement.scrollTop);
+      var w = win.innerWidth || domGlobals.document.documentElement.clientWidth;
+      var h = win.innerHeight || domGlobals.document.documentElement.clientHeight;
</ins><span class="cx" style="display: block; padding: 0 10px">       return {
</span><span class="cx" style="display: block; padding: 0 10px">         x: x,
</span><span class="cx" style="display: block; padding: 0 10px">         y: y,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2394,12 +2394,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return this.moveTo(pos.x, pos.y);
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       moveBy: function (dx, dy) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this, rect = self$$1.layoutRect();
-        self$$1.moveTo(rect.x + dx, rect.y + dy);
-        return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this, rect = self.layoutRect();
+        self.moveTo(rect.x + dx, rect.y + dy);
+        return self;
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       moveTo: function (x, y) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">         function constrain(value, max, size) {
</span><span class="cx" style="display: block; padding: 0 10px">           if (value < 0) {
</span><span class="cx" style="display: block; padding: 0 10px">             return 0;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2410,14 +2410,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           return value;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (self$$1.settings.constrainToViewport) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (self.settings.constrainToViewport) {
</ins><span class="cx" style="display: block; padding: 0 10px">           var viewPortRect = getViewPortRect(this);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          var layoutRect = self$$1.layoutRect();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          var layoutRect = self.layoutRect();
</ins><span class="cx" style="display: block; padding: 0 10px">           x = constrain(x, viewPortRect.w + viewPortRect.x, layoutRect.w);
</span><span class="cx" style="display: block; padding: 0 10px">           y = constrain(y, viewPortRect.h + viewPortRect.y, layoutRect.h);
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var uiContainer = UiContainer.getUiContainer(self$$1);
-        if (uiContainer && isStatic(uiContainer) && !isFixed(self$$1)) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var uiContainer = UiContainer.getUiContainer(self);
+        if (uiContainer && isStatic(uiContainer) && !isFixed(self)) {
</ins><span class="cx" style="display: block; padding: 0 10px">           x -= uiContainer.scrollLeft;
</span><span class="cx" style="display: block; padding: 0 10px">           y -= uiContainer.scrollTop;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2425,20 +2425,20 @@
</span><span class="cx" style="display: block; padding: 0 10px">           x += 1;
</span><span class="cx" style="display: block; padding: 0 10px">           y += 1;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (self$$1.state.get('rendered')) {
-          self$$1.layoutRect({
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (self.state.get('rendered')) {
+          self.layoutRect({
</ins><span class="cx" style="display: block; padding: 0 10px">             x: x,
</span><span class="cx" style="display: block; padding: 0 10px">             y: y
</span><span class="cx" style="display: block; padding: 0 10px">           }).repaint();
</span><span class="cx" style="display: block; padding: 0 10px">         } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.settings.x = x;
-          self$$1.settings.y = y;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.settings.x = x;
+          self.settings.y = y;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.fire('move', {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.fire('move', {
</ins><span class="cx" style="display: block; padding: 0 10px">           x: x,
</span><span class="cx" style="display: block; padding: 0 10px">           y: y
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return self;
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2766,9 +2766,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">     }
</span><span class="cx" style="display: block; padding: 0 10px">     function DragHelper (id, settings) {
</span><span class="cx" style="display: block; padding: 0 10px">       var $eventOverlay;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var doc = settings.document || document;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var doc = settings.document || domGlobals.document;
</ins><span class="cx" style="display: block; padding: 0 10px">       var downButton;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var start, stop$$1, drag, startX, startY;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var start, stop, drag, startX, startY;
</ins><span class="cx" style="display: block; padding: 0 10px">       settings = settings || {};
</span><span class="cx" style="display: block; padding: 0 10px">       var handleElement = doc.getElementById(settings.handle || id);
</span><span class="cx" style="display: block; padding: 0 10px">       start = function (e) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2780,8 +2780,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">         handleElm = handleElement;
</span><span class="cx" style="display: block; padding: 0 10px">         startX = e.screenX;
</span><span class="cx" style="display: block; padding: 0 10px">         startY = e.screenY;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (window.getComputedStyle) {
-          cursor = window.getComputedStyle(handleElm, null).getPropertyValue('cursor');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (domGlobals.window.getComputedStyle) {
+          cursor = domGlobals.window.getComputedStyle(handleElm, null).getPropertyValue('cursor');
</ins><span class="cx" style="display: block; padding: 0 10px">         } else {
</span><span class="cx" style="display: block; padding: 0 10px">           cursor = handleElm.runtimeStyle.cursor;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2795,13 +2795,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">           opacity: 0.0001,
</span><span class="cx" style="display: block; padding: 0 10px">           cursor: cursor
</span><span class="cx" style="display: block; padding: 0 10px">         }).appendTo(doc.body);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        global$7(doc).on('mousemove touchmove', drag).on('mouseup touchend', stop$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        global$7(doc).on('mousemove touchmove', drag).on('mouseup touchend', stop);
</ins><span class="cx" style="display: block; padding: 0 10px">         settings.start(e);
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       drag = function (e) {
</span><span class="cx" style="display: block; padding: 0 10px">         updateWithTouchData(e);
</span><span class="cx" style="display: block; padding: 0 10px">         if (e.button !== downButton) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          return stop$$1(e);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          return stop(e);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         e.deltaX = e.screenX - startX;
</span><span class="cx" style="display: block; padding: 0 10px">         e.deltaY = e.screenY - startY;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2808,9 +2808,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">         e.preventDefault();
</span><span class="cx" style="display: block; padding: 0 10px">         settings.drag(e);
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      stop$$1 = function (e) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      stop = function (e) {
</ins><span class="cx" style="display: block; padding: 0 10px">         updateWithTouchData(e);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        global$7(doc).off('mousemove touchmove', drag).off('mouseup touchend', stop$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        global$7(doc).off('mousemove touchmove', drag).off('mouseup touchend', stop);
</ins><span class="cx" style="display: block; padding: 0 10px">         $eventOverlay.remove();
</span><span class="cx" style="display: block; padding: 0 10px">         if (settings.stop) {
</span><span class="cx" style="display: block; padding: 0 10px">           settings.stop(e);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2834,9 +2834,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return node && node.nodeType === 1;
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       try {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        focusedElement = document.activeElement;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        focusedElement = domGlobals.document.activeElement;
</ins><span class="cx" style="display: block; padding: 0 10px">       } catch (ex) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        focusedElement = document.body;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        focusedElement = domGlobals.document.body;
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       focusedControl = root.getParentCtrl(focusedElement);
</span><span class="cx" style="display: block; padding: 0 10px">       function getRole(elm) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2847,17 +2847,17 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return null;
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       function getParentRole(elm) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var role, parent$$1 = elm || focusedElement;
-        while (parent$$1 = parent$$1.parentNode) {
-          if (role = getRole(parent$$1)) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var role, parent = elm || focusedElement;
+        while (parent = parent.parentNode) {
+          if (role = getRole(parent)) {
</ins><span class="cx" style="display: block; padding: 0 10px">             return role;
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      function getAriaProp(name$$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      function getAriaProp(name) {
</ins><span class="cx" style="display: block; padding: 0 10px">         var elm = focusedElement;
</span><span class="cx" style="display: block; padding: 0 10px">         if (isElement(elm)) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          return elm.getAttribute('aria-' + name$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          return elm.getAttribute('aria-' + name);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       function isTextInputElement(elm) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3432,9 +3432,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var visiblePanels = [];
</span><span class="cx" style="display: block; padding: 0 10px">     var zOrder = [];
</span><span class="cx" style="display: block; padding: 0 10px">     var hasModal;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    function isChildOf(ctrl, parent$$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    function isChildOf(ctrl, parent) {
</ins><span class="cx" style="display: block; padding: 0 10px">       while (ctrl) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (ctrl === parent$$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (ctrl === parent) {
</ins><span class="cx" style="display: block; padding: 0 10px">           return true;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         ctrl = ctrl.parent();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3465,7 +3465,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           skipOrHidePanels(e);
</span><span class="cx" style="display: block; padding: 0 10px">         };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        global$7(document).on('click touchstart', documentClickHandler);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        global$7(domGlobals.document).on('click touchstart', documentClickHandler);
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     }
</span><span class="cx" style="display: block; padding: 0 10px">     function bindDocumentScrollHandler() {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3477,32 +3477,32 @@
</span><span class="cx" style="display: block; padding: 0 10px">             repositionPanel$1(visiblePanels[i]);
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        global$7(window).on('scroll', documentScrollHandler);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        global$7(domGlobals.window).on('scroll', documentScrollHandler);
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     }
</span><span class="cx" style="display: block; padding: 0 10px">     function bindWindowResizeHandler() {
</span><span class="cx" style="display: block; padding: 0 10px">       if (!windowResizeHandler) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var docElm_1 = document.documentElement;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var docElm_1 = domGlobals.document.documentElement;
</ins><span class="cx" style="display: block; padding: 0 10px">         var clientWidth_1 = docElm_1.clientWidth, clientHeight_1 = docElm_1.clientHeight;
</span><span class="cx" style="display: block; padding: 0 10px">         windowResizeHandler = function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (!document.all || clientWidth_1 !== docElm_1.clientWidth || clientHeight_1 !== docElm_1.clientHeight) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (!domGlobals.document.all || clientWidth_1 !== docElm_1.clientWidth || clientHeight_1 !== docElm_1.clientHeight) {
</ins><span class="cx" style="display: block; padding: 0 10px">             clientWidth_1 = docElm_1.clientWidth;
</span><span class="cx" style="display: block; padding: 0 10px">             clientHeight_1 = docElm_1.clientHeight;
</span><span class="cx" style="display: block; padding: 0 10px">             FloatPanel.hideAll();
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        global$7(window).on('resize', windowResizeHandler);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        global$7(domGlobals.window).on('resize', windowResizeHandler);
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     }
</span><span class="cx" style="display: block; padding: 0 10px">     function repositionPanel$1(panel) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var scrollY$$1 = funcs.getViewPort().y;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var scrollY = funcs.getViewPort().y;
</ins><span class="cx" style="display: block; padding: 0 10px">       function toggleFixedChildPanels(fixed, deltaY) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var parent$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var parent;
</ins><span class="cx" style="display: block; padding: 0 10px">         for (var i = 0; i < visiblePanels.length; i++) {
</span><span class="cx" style="display: block; padding: 0 10px">           if (visiblePanels[i] !== panel) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            parent$$1 = visiblePanels[i].parent();
-            while (parent$$1 && (parent$$1 = parent$$1.parent())) {
-              if (parent$$1 === panel) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            parent = visiblePanels[i].parent();
+            while (parent && (parent = parent.parent())) {
+              if (parent === panel) {
</ins><span class="cx" style="display: block; padding: 0 10px">                 visiblePanels[i].fixed(fixed).moveBy(0, deltaY).repaint();
</span><span class="cx" style="display: block; padding: 0 10px">               }
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3512,14 +3512,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">       if (panel.settings.autofix) {
</span><span class="cx" style="display: block; padding: 0 10px">         if (!panel.state.get('fixed')) {
</span><span class="cx" style="display: block; padding: 0 10px">           panel._autoFixY = panel.layoutRect().y;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (panel._autoFixY < scrollY$$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (panel._autoFixY < scrollY) {
</ins><span class="cx" style="display: block; padding: 0 10px">             panel.fixed(true).layoutRect({ y: 0 }).repaint();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            toggleFixedChildPanels(true, scrollY$$1 - panel._autoFixY);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            toggleFixedChildPanels(true, scrollY - panel._autoFixY);
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (panel._autoFixY > scrollY$$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (panel._autoFixY > scrollY) {
</ins><span class="cx" style="display: block; padding: 0 10px">             panel.fixed(false).layoutRect({ y: panel._autoFixY }).repaint();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            toggleFixedChildPanels(false, panel._autoFixY - scrollY$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            toggleFixedChildPanels(false, panel._autoFixY - scrollY);
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3562,83 +3562,83 @@
</span><span class="cx" style="display: block; padding: 0 10px">         Resizable
</span><span class="cx" style="display: block; padding: 0 10px">       ],
</span><span class="cx" style="display: block; padding: 0 10px">       init: function (settings) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        self$$1._super(settings);
-        self$$1._eventsRoot = self$$1;
-        self$$1.classes.add('floatpanel');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        self._super(settings);
+        self._eventsRoot = self;
+        self.classes.add('floatpanel');
</ins><span class="cx" style="display: block; padding: 0 10px">         if (settings.autohide) {
</span><span class="cx" style="display: block; padding: 0 10px">           bindDocumentClickHandler();
</span><span class="cx" style="display: block; padding: 0 10px">           bindWindowResizeHandler();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          visiblePanels.push(self$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          visiblePanels.push(self);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (settings.autofix) {
</span><span class="cx" style="display: block; padding: 0 10px">           bindDocumentScrollHandler();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.on('move', function () {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.on('move', function () {
</ins><span class="cx" style="display: block; padding: 0 10px">             repositionPanel$1(this);
</span><span class="cx" style="display: block; padding: 0 10px">           });
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.on('postrender show', function (e) {
-          if (e.control === self$$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.on('postrender show', function (e) {
+          if (e.control === self) {
</ins><span class="cx" style="display: block; padding: 0 10px">             var $modalBlockEl_1;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            var prefix_1 = self$$1.classPrefix;
-            if (self$$1.modal && !hasModal) {
-              $modalBlockEl_1 = global$7('#' + prefix_1 + 'modal-block', self$$1.getContainerElm());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            var prefix_1 = self.classPrefix;
+            if (self.modal && !hasModal) {
+              $modalBlockEl_1 = global$7('#' + prefix_1 + 'modal-block', self.getContainerElm());
</ins><span class="cx" style="display: block; padding: 0 10px">               if (!$modalBlockEl_1[0]) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $modalBlockEl_1 = global$7('<div id="' + prefix_1 + 'modal-block" class="' + prefix_1 + 'reset ' + prefix_1 + 'fade"></div>').appendTo(self$$1.getContainerElm());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $modalBlockEl_1 = global$7('<div id="' + prefix_1 + 'modal-block" class="' + prefix_1 + 'reset ' + prefix_1 + 'fade"></div>').appendTo(self.getContainerElm());
</ins><span class="cx" style="display: block; padding: 0 10px">               }
</span><span class="cx" style="display: block; padding: 0 10px">               global$3.setTimeout(function () {
</span><span class="cx" style="display: block; padding: 0 10px">                 $modalBlockEl_1.addClass(prefix_1 + 'in');
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                global$7(self$$1.getEl()).addClass(prefix_1 + 'in');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                global$7(self.getEl()).addClass(prefix_1 + 'in');
</ins><span class="cx" style="display: block; padding: 0 10px">               });
</span><span class="cx" style="display: block; padding: 0 10px">               hasModal = true;
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            addRemove(true, self$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            addRemove(true, self);
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.on('show', function () {
-          self$$1.parents().each(function (ctrl) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.on('show', function () {
+          self.parents().each(function (ctrl) {
</ins><span class="cx" style="display: block; padding: 0 10px">             if (ctrl.state.get('fixed')) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              self$$1.fixed(true);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              self.fixed(true);
</ins><span class="cx" style="display: block; padding: 0 10px">               return false;
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           });
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><span class="cx" style="display: block; padding: 0 10px">         if (settings.popover) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1._preBodyHtml = '<div class="' + self$$1.classPrefix + 'arrow"></div>';
-          self$$1.classes.add('popover').add('bottom').add(self$$1.isRtl() ? 'end' : 'start');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self._preBodyHtml = '<div class="' + self.classPrefix + 'arrow"></div>';
+          self.classes.add('popover').add('bottom').add(self.isRtl() ? 'end' : 'start');
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.aria('label', settings.ariaLabel);
-        self$$1.aria('labelledby', self$$1._id);
-        self$$1.aria('describedby', self$$1.describedBy || self$$1._id + '-none');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.aria('label', settings.ariaLabel);
+        self.aria('labelledby', self._id);
+        self.aria('describedby', self.describedBy || self._id + '-none');
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       fixed: function (state) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        if (self$$1.state.get('fixed') !== state) {
-          if (self$$1.state.get('rendered')) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        if (self.state.get('fixed') !== state) {
+          if (self.state.get('rendered')) {
</ins><span class="cx" style="display: block; padding: 0 10px">             var viewport = funcs.getViewPort();
</span><span class="cx" style="display: block; padding: 0 10px">             if (state) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              self$$1.layoutRect().y -= viewport.y;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              self.layoutRect().y -= viewport.y;
</ins><span class="cx" style="display: block; padding: 0 10px">             } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              self$$1.layoutRect().y += viewport.y;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              self.layoutRect().y += viewport.y;
</ins><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.classes.toggle('fixed', state);
-          self$$1.state.set('fixed', state);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.classes.toggle('fixed', state);
+          self.state.set('fixed', state);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return self;
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       show: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">         var i;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var state = self$$1._super();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var state = self._super();
</ins><span class="cx" style="display: block; padding: 0 10px">         i = visiblePanels.length;
</span><span class="cx" style="display: block; padding: 0 10px">         while (i--) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (visiblePanels[i] === self$$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (visiblePanels[i] === self) {
</ins><span class="cx" style="display: block; padding: 0 10px">             break;
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (i === -1) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          visiblePanels.push(self$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          visiblePanels.push(self);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         return state;
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3651,12 +3651,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">         FloatPanel.hideAll();
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       close: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        if (!self$$1.fire('close').isDefaultPrevented()) {
-          self$$1.remove();
-          addRemove(false, self$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        if (!self.fire('close').isDefaultPrevented()) {
+          self.remove();
+          addRemove(false, self);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return self;
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       remove: function () {
</span><span class="cx" style="display: block; padding: 0 10px">         removeVisiblePanel(this);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3663,11 +3663,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">         this._super();
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       postRender: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        if (self$$1.settings.bodyRole) {
-          this.getEl('body').setAttribute('role', self$$1.settings.bodyRole);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        if (self.settings.bodyRole) {
+          this.getEl('body').setAttribute('role', self.settings.bodyRole);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return self$$1._super();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return self._super();
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     });
</span><span class="cx" style="display: block; padding: 0 10px">     FloatPanel.hideAll = function () {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3705,9 +3705,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return;
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       if (!viewport) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        viewport = document.createElement('meta');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        viewport = domGlobals.document.createElement('meta');
</ins><span class="cx" style="display: block; padding: 0 10px">         viewport.setAttribute('name', 'viewport');
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        document.getElementsByTagName('head')[0].appendChild(viewport);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        domGlobals.document.getElementsByTagName('head')[0].appendChild(viewport);
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       contentValue = viewport.getAttribute('content');
</span><span class="cx" style="display: block; padding: 0 10px">       if (contentValue && typeof oldMetaValue !== 'undefined') {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3718,8 +3718,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">     function toggleBodyFullScreenClasses(classPrefix, state) {
</span><span class="cx" style="display: block; padding: 0 10px">       if (checkFullscreenWindows() && state === false) {
</span><span class="cx" style="display: block; padding: 0 10px">         global$7([
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          document.documentElement,
-          document.body
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          domGlobals.document.documentElement,
+          domGlobals.document.body
</ins><span class="cx" style="display: block; padding: 0 10px">         ]).removeClass(classPrefix + 'fullscreen');
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3734,17 +3734,17 @@
</span><span class="cx" style="display: block; padding: 0 10px">     function handleWindowResize() {
</span><span class="cx" style="display: block; padding: 0 10px">       if (!global$1.desktop) {
</span><span class="cx" style="display: block; padding: 0 10px">         var lastSize_1 = {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          w: window.innerWidth,
-          h: window.innerHeight
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          w: domGlobals.window.innerWidth,
+          h: domGlobals.window.innerHeight
</ins><span class="cx" style="display: block; padding: 0 10px">         };
</span><span class="cx" style="display: block; padding: 0 10px">         global$3.setInterval(function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          var w = window.innerWidth, h = window.innerHeight;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          var w = domGlobals.window.innerWidth, h = domGlobals.window.innerHeight;
</ins><span class="cx" style="display: block; padding: 0 10px">           if (lastSize_1.w !== w || lastSize_1.h !== h) {
</span><span class="cx" style="display: block; padding: 0 10px">             lastSize_1 = {
</span><span class="cx" style="display: block; padding: 0 10px">               w: w,
</span><span class="cx" style="display: block; padding: 0 10px">               h: h
</span><span class="cx" style="display: block; padding: 0 10px">             };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            global$7(window).trigger('resize');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            global$7(domGlobals.window).trigger('resize');
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }, 100);
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3757,9 +3757,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">           windows[i].moveTo(windows[i].settings.x || Math.max(0, rect.w / 2 - layoutRect.w / 2), windows[i].settings.y || Math.max(0, rect.h / 2 - layoutRect.h / 2));
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      global$7(window).on('resize', reposition);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      global$7(domGlobals.window).on('resize', reposition);
</ins><span class="cx" style="display: block; padding: 0 10px">     }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var Window$$1 = FloatPanel.extend({
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var Window = FloatPanel.extend({
</ins><span class="cx" style="display: block; padding: 0 10px">       modal: true,
</span><span class="cx" style="display: block; padding: 0 10px">       Defaults: {
</span><span class="cx" style="display: block; padding: 0 10px">         border: 1,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3776,61 +3776,61 @@
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       init: function (settings) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        self$$1._super(settings);
-        if (self$$1.isRtl()) {
-          self$$1.classes.add('rtl');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        self._super(settings);
+        if (self.isRtl()) {
+          self.classes.add('rtl');
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.classes.add('window');
-        self$$1.bodyClasses.add('window-body');
-        self$$1.state.set('fixed', true);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.classes.add('window');
+        self.bodyClasses.add('window-body');
+        self.state.set('fixed', true);
</ins><span class="cx" style="display: block; padding: 0 10px">         if (settings.buttons) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.statusbar = new Panel({
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.statusbar = new Panel({
</ins><span class="cx" style="display: block; padding: 0 10px">             layout: 'flex',
</span><span class="cx" style="display: block; padding: 0 10px">             border: '1 0 0 0',
</span><span class="cx" style="display: block; padding: 0 10px">             spacing: 3,
</span><span class="cx" style="display: block; padding: 0 10px">             padding: 10,
</span><span class="cx" style="display: block; padding: 0 10px">             align: 'center',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            pack: self$$1.isRtl() ? 'start' : 'end',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            pack: self.isRtl() ? 'start' : 'end',
</ins><span class="cx" style="display: block; padding: 0 10px">             defaults: { type: 'button' },
</span><span class="cx" style="display: block; padding: 0 10px">             items: settings.buttons
</span><span class="cx" style="display: block; padding: 0 10px">           });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.statusbar.classes.add('foot');
-          self$$1.statusbar.parent(self$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.statusbar.classes.add('foot');
+          self.statusbar.parent(self);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.on('click', function (e) {
-          var closeClass = self$$1.classPrefix + 'close';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.on('click', function (e) {
+          var closeClass = self.classPrefix + 'close';
</ins><span class="cx" style="display: block; padding: 0 10px">           if (funcs.hasClass(e.target, closeClass) || funcs.hasClass(e.target.parentNode, closeClass)) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            self$$1.close();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            self.close();
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.on('cancel', function () {
-          self$$1.close();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.on('cancel', function () {
+          self.close();
</ins><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.on('move', function (e) {
-          if (e.control === self$$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.on('move', function (e) {
+          if (e.control === self) {
</ins><span class="cx" style="display: block; padding: 0 10px">             FloatPanel.hideAll();
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.aria('describedby', self$$1.describedBy || self$$1._id + '-none');
-        self$$1.aria('label', settings.title);
-        self$$1._fullscreen = false;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.aria('describedby', self.describedBy || self._id + '-none');
+        self.aria('label', settings.title);
+        self._fullscreen = false;
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       recalc: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        var statusbar$$1 = self$$1.statusbar;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        var statusbar = self.statusbar;
</ins><span class="cx" style="display: block; padding: 0 10px">         var layoutRect, width, x, needsRecalc;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (self$$1._fullscreen) {
-          self$$1.layoutRect(funcs.getWindowSize());
-          self$$1.layoutRect().contentH = self$$1.layoutRect().innerH;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (self._fullscreen) {
+          self.layoutRect(funcs.getWindowSize());
+          self.layoutRect().contentH = self.layoutRect().innerH;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1._super();
-        layoutRect = self$$1.layoutRect();
-        if (self$$1.settings.title && !self$$1._fullscreen) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self._super();
+        layoutRect = self.layoutRect();
+        if (self.settings.title && !self._fullscreen) {
</ins><span class="cx" style="display: block; padding: 0 10px">           width = layoutRect.headerW;
</span><span class="cx" style="display: block; padding: 0 10px">           if (width > layoutRect.w) {
</span><span class="cx" style="display: block; padding: 0 10px">             x = layoutRect.x - Math.max(0, width / 2);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            self$$1.layoutRect({
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            self.layoutRect({
</ins><span class="cx" style="display: block; padding: 0 10px">               w: width,
</span><span class="cx" style="display: block; padding: 0 10px">               x: x
</span><span class="cx" style="display: block; padding: 0 10px">             });
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3837,12 +3837,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">             needsRecalc = true;
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (statusbar$$1) {
-          statusbar$$1.layoutRect({ w: self$$1.layoutRect().innerW }).recalc();
-          width = statusbar$$1.layoutRect().minW + layoutRect.deltaW;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (statusbar) {
+          statusbar.layoutRect({ w: self.layoutRect().innerW }).recalc();
+          width = statusbar.layoutRect().minW + layoutRect.deltaW;
</ins><span class="cx" style="display: block; padding: 0 10px">           if (width > layoutRect.w) {
</span><span class="cx" style="display: block; padding: 0 10px">             x = layoutRect.x - Math.max(0, width - layoutRect.w);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            self$$1.layoutRect({
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            self.layoutRect({
</ins><span class="cx" style="display: block; padding: 0 10px">               w: width,
</span><span class="cx" style="display: block; padding: 0 10px">               x: x
</span><span class="cx" style="display: block; padding: 0 10px">             });
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3850,141 +3850,141 @@
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (needsRecalc) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.recalc();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.recalc();
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       initLayoutRect: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        var layoutRect = self$$1._super();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        var layoutRect = self._super();
</ins><span class="cx" style="display: block; padding: 0 10px">         var deltaH = 0, headEl;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (self$$1.settings.title && !self$$1._fullscreen) {
-          headEl = self$$1.getEl('head');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (self.settings.title && !self._fullscreen) {
+          headEl = self.getEl('head');
</ins><span class="cx" style="display: block; padding: 0 10px">           var size = funcs.getSize(headEl);
</span><span class="cx" style="display: block; padding: 0 10px">           layoutRect.headerW = size.width;
</span><span class="cx" style="display: block; padding: 0 10px">           layoutRect.headerH = size.height;
</span><span class="cx" style="display: block; padding: 0 10px">           deltaH += layoutRect.headerH;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (self$$1.statusbar) {
-          deltaH += self$$1.statusbar.layoutRect().h;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (self.statusbar) {
+          deltaH += self.statusbar.layoutRect().h;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         layoutRect.deltaH += deltaH;
</span><span class="cx" style="display: block; padding: 0 10px">         layoutRect.minH += deltaH;
</span><span class="cx" style="display: block; padding: 0 10px">         layoutRect.h += deltaH;
</span><span class="cx" style="display: block; padding: 0 10px">         var rect = funcs.getWindowSize();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        layoutRect.x = self$$1.settings.x || Math.max(0, rect.w / 2 - layoutRect.w / 2);
-        layoutRect.y = self$$1.settings.y || Math.max(0, rect.h / 2 - layoutRect.h / 2);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        layoutRect.x = self.settings.x || Math.max(0, rect.w / 2 - layoutRect.w / 2);
+        layoutRect.y = self.settings.y || Math.max(0, rect.h / 2 - layoutRect.h / 2);
</ins><span class="cx" style="display: block; padding: 0 10px">         return layoutRect;
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       renderHtml: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this, layout = self$$1._layout, id = self$$1._id, prefix = self$$1.classPrefix;
-        var settings = self$$1.settings;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this, layout = self._layout, id = self._id, prefix = self.classPrefix;
+        var settings = self.settings;
</ins><span class="cx" style="display: block; padding: 0 10px">         var headerHtml = '', footerHtml = '', html = settings.html;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.preRender();
-        layout.preRender(self$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.preRender();
+        layout.preRender(self);
</ins><span class="cx" style="display: block; padding: 0 10px">         if (settings.title) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          headerHtml = '<div id="' + id + '-head" class="' + prefix + 'window-head">' + '<div id="' + id + '-title" class="' + prefix + 'title">' + self$$1.encode(settings.title) + '</div>' + '<div id="' + id + '-dragh" class="' + prefix + 'dragh"></div>' + '<button type="button" class="' + prefix + 'close" aria-hidden="true">' + '<i class="mce-ico mce-i-remove"></i>' + '</button>' + '</div>';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          headerHtml = '<div id="' + id + '-head" class="' + prefix + 'window-head">' + '<div id="' + id + '-title" class="' + prefix + 'title">' + self.encode(settings.title) + '</div>' + '<div id="' + id + '-dragh" class="' + prefix + 'dragh"></div>' + '<button type="button" class="' + prefix + 'close" aria-hidden="true">' + '<i class="mce-ico mce-i-remove"></i>' + '</button>' + '</div>';
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (settings.url) {
</span><span class="cx" style="display: block; padding: 0 10px">           html = '<iframe src="' + settings.url + '" tabindex="-1"></iframe>';
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (typeof html === 'undefined') {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          html = layout.renderHtml(self$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          html = layout.renderHtml(self);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (self$$1.statusbar) {
-          footerHtml = self$$1.statusbar.renderHtml();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (self.statusbar) {
+          footerHtml = self.statusbar.renderHtml();
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return '<div id="' + id + '" class="' + self$$1.classes + '" hidefocus="1">' + '<div class="' + self$$1.classPrefix + 'reset" role="application">' + headerHtml + '<div id="' + id + '-body" class="' + self$$1.bodyClasses + '">' + html + '</div>' + footerHtml + '</div>' + '</div>';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return '<div id="' + id + '" class="' + self.classes + '" hidefocus="1">' + '<div class="' + self.classPrefix + 'reset" role="application">' + headerHtml + '<div id="' + id + '-body" class="' + self.bodyClasses + '">' + html + '</div>' + footerHtml + '</div>' + '</div>';
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       fullscreen: function (state) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        var documentElement = document.documentElement;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        var documentElement = domGlobals.document.documentElement;
</ins><span class="cx" style="display: block; padding: 0 10px">         var slowRendering;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var prefix = self$$1.classPrefix;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var prefix = self.classPrefix;
</ins><span class="cx" style="display: block; padding: 0 10px">         var layoutRect;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (state !== self$$1._fullscreen) {
-          global$7(window).on('resize', function () {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (state !== self._fullscreen) {
+          global$7(domGlobals.window).on('resize', function () {
</ins><span class="cx" style="display: block; padding: 0 10px">             var time;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            if (self$$1._fullscreen) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            if (self._fullscreen) {
</ins><span class="cx" style="display: block; padding: 0 10px">               if (!slowRendering) {
</span><span class="cx" style="display: block; padding: 0 10px">                 time = new Date().getTime();
</span><span class="cx" style="display: block; padding: 0 10px">                 var rect = funcs.getWindowSize();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                self$$1.moveTo(0, 0).resizeTo(rect.w, rect.h);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                self.moveTo(0, 0).resizeTo(rect.w, rect.h);
</ins><span class="cx" style="display: block; padding: 0 10px">                 if (new Date().getTime() - time > 50) {
</span><span class="cx" style="display: block; padding: 0 10px">                   slowRendering = true;
</span><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px">               } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if (!self$$1._timer) {
-                  self$$1._timer = global$3.setTimeout(function () {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                if (!self._timer) {
+                  self._timer = global$3.setTimeout(function () {
</ins><span class="cx" style="display: block; padding: 0 10px">                     var rect = funcs.getWindowSize();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                    self$$1.moveTo(0, 0).resizeTo(rect.w, rect.h);
-                    self$$1._timer = 0;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                    self.moveTo(0, 0).resizeTo(rect.w, rect.h);
+                    self._timer = 0;
</ins><span class="cx" style="display: block; padding: 0 10px">                   }, 50);
</span><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px">               }
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          layoutRect = self$$1.layoutRect();
-          self$$1._fullscreen = state;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          layoutRect = self.layoutRect();
+          self._fullscreen = state;
</ins><span class="cx" style="display: block; padding: 0 10px">           if (!state) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            self$$1.borderBox = BoxUtils.parseBox(self$$1.settings.border);
-            self$$1.getEl('head').style.display = '';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            self.borderBox = BoxUtils.parseBox(self.settings.border);
+            self.getEl('head').style.display = '';
</ins><span class="cx" style="display: block; padding: 0 10px">             layoutRect.deltaH += layoutRect.headerH;
</span><span class="cx" style="display: block; padding: 0 10px">             global$7([
</span><span class="cx" style="display: block; padding: 0 10px">               documentElement,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              document.body
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              domGlobals.document.body
</ins><span class="cx" style="display: block; padding: 0 10px">             ]).removeClass(prefix + 'fullscreen');
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            self$$1.classes.remove('fullscreen');
-            self$$1.moveTo(self$$1._initial.x, self$$1._initial.y).resizeTo(self$$1._initial.w, self$$1._initial.h);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            self.classes.remove('fullscreen');
+            self.moveTo(self._initial.x, self._initial.y).resizeTo(self._initial.w, self._initial.h);
</ins><span class="cx" style="display: block; padding: 0 10px">           } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            self$$1._initial = {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            self._initial = {
</ins><span class="cx" style="display: block; padding: 0 10px">               x: layoutRect.x,
</span><span class="cx" style="display: block; padding: 0 10px">               y: layoutRect.y,
</span><span class="cx" style="display: block; padding: 0 10px">               w: layoutRect.w,
</span><span class="cx" style="display: block; padding: 0 10px">               h: layoutRect.h
</span><span class="cx" style="display: block; padding: 0 10px">             };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            self$$1.borderBox = BoxUtils.parseBox('0');
-            self$$1.getEl('head').style.display = 'none';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            self.borderBox = BoxUtils.parseBox('0');
+            self.getEl('head').style.display = 'none';
</ins><span class="cx" style="display: block; padding: 0 10px">             layoutRect.deltaH -= layoutRect.headerH + 2;
</span><span class="cx" style="display: block; padding: 0 10px">             global$7([
</span><span class="cx" style="display: block; padding: 0 10px">               documentElement,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              document.body
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              domGlobals.document.body
</ins><span class="cx" style="display: block; padding: 0 10px">             ]).addClass(prefix + 'fullscreen');
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            self$$1.classes.add('fullscreen');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            self.classes.add('fullscreen');
</ins><span class="cx" style="display: block; padding: 0 10px">             var rect = funcs.getWindowSize();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            self$$1.moveTo(0, 0).resizeTo(rect.w, rect.h);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            self.moveTo(0, 0).resizeTo(rect.w, rect.h);
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return self$$1.reflow();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return self.reflow();
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       postRender: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">         var startPos;
</span><span class="cx" style="display: block; padding: 0 10px">         setTimeout(function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.classes.add('in');
-          self$$1.fire('open');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.classes.add('in');
+          self.fire('open');
</ins><span class="cx" style="display: block; padding: 0 10px">         }, 0);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1._super();
-        if (self$$1.statusbar) {
-          self$$1.statusbar.postRender();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self._super();
+        if (self.statusbar) {
+          self.statusbar.postRender();
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.focus();
-        this.dragHelper = new DragHelper(self$$1._id + '-dragh', {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.focus();
+        this.dragHelper = new DragHelper(self._id + '-dragh', {
</ins><span class="cx" style="display: block; padding: 0 10px">           start: function () {
</span><span class="cx" style="display: block; padding: 0 10px">             startPos = {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              x: self$$1.layoutRect().x,
-              y: self$$1.layoutRect().y
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              x: self.layoutRect().x,
+              y: self.layoutRect().y
</ins><span class="cx" style="display: block; padding: 0 10px">             };
</span><span class="cx" style="display: block; padding: 0 10px">           },
</span><span class="cx" style="display: block; padding: 0 10px">           drag: function (e) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            self$$1.moveTo(startPos.x + e.deltaX, startPos.y + e.deltaY);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            self.moveTo(startPos.x + e.deltaX, startPos.y + e.deltaY);
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.on('submit', function (e) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.on('submit', function (e) {
</ins><span class="cx" style="display: block; padding: 0 10px">           if (!e.isDefaultPrevented()) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            self$$1.close();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            self.close();
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        windows.push(self$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        windows.push(self);
</ins><span class="cx" style="display: block; padding: 0 10px">         toggleFullScreenState(true);
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       submit: function () {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3991,17 +3991,17 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return this.fire('submit', { data: this.toJSON() });
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       remove: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">         var i;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.dragHelper.destroy();
-        self$$1._super();
-        if (self$$1.statusbar) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.dragHelper.destroy();
+        self._super();
+        if (self.statusbar) {
</ins><span class="cx" style="display: block; padding: 0 10px">           this.statusbar.remove();
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        toggleBodyFullScreenClasses(self$$1.classPrefix, false);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        toggleBodyFullScreenClasses(self.classPrefix, false);
</ins><span class="cx" style="display: block; padding: 0 10px">         i = windows.length;
</span><span class="cx" style="display: block; padding: 0 10px">         while (i--) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (windows[i] === self$$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (windows[i] === self) {
</ins><span class="cx" style="display: block; padding: 0 10px">             windows.splice(i, 1);
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4014,7 +4014,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     });
</span><span class="cx" style="display: block; padding: 0 10px">     handleWindowResize();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var MessageBox = Window$$1.extend({
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var MessageBox = Window.extend({
</ins><span class="cx" style="display: block; padding: 0 10px">       init: function (settings) {
</span><span class="cx" style="display: block; padding: 0 10px">         settings = {
</span><span class="cx" style="display: block; padding: 0 10px">           border: 1,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4047,7 +4047,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">           var buttons;
</span><span class="cx" style="display: block; padding: 0 10px">           var callback = settings.callback || function () {
</span><span class="cx" style="display: block; padding: 0 10px">           };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          function createButton(text, status$$1, primary) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          function createButton(text, status, primary) {
</ins><span class="cx" style="display: block; padding: 0 10px">             return {
</span><span class="cx" style="display: block; padding: 0 10px">               type: 'button',
</span><span class="cx" style="display: block; padding: 0 10px">               text: text,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4054,7 +4054,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">               subtype: primary ? 'primary' : '',
</span><span class="cx" style="display: block; padding: 0 10px">               onClick: function (e) {
</span><span class="cx" style="display: block; padding: 0 10px">                 e.control.parents()[1].close();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                callback(status$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                callback(status);
</ins><span class="cx" style="display: block; padding: 0 10px">               }
</span><span class="cx" style="display: block; padding: 0 10px">             };
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4079,7 +4079,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">             buttons = [createButton('Ok', true, true)];
</span><span class="cx" style="display: block; padding: 0 10px">             break;
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          return new Window$$1({
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          return new Window({
</ins><span class="cx" style="display: block; padding: 0 10px">             padding: 20,
</span><span class="cx" style="display: block; padding: 0 10px">             x: settings.x,
</span><span class="cx" style="display: block; padding: 0 10px">             y: settings.y,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4105,7 +4105,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">             onCancel: function () {
</span><span class="cx" style="display: block; padding: 0 10px">               callback(false);
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          }).renderTo(document.body).reflow();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          }).renderTo(domGlobals.document.body).reflow();
</ins><span class="cx" style="display: block; padding: 0 10px">         },
</span><span class="cx" style="display: block; padding: 0 10px">         alert: function (settings, callback) {
</span><span class="cx" style="display: block; padding: 0 10px">           if (typeof settings === 'string') {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4126,7 +4126,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     });
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     function WindowManagerImpl (editor) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var open$$1 = function (args, params, closeCallback) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var open = function (args, params, closeCallback) {
</ins><span class="cx" style="display: block; padding: 0 10px">         var win;
</span><span class="cx" style="display: block; padding: 0 10px">         args.title = args.title || ' ';
</span><span class="cx" style="display: block; padding: 0 10px">         args.url = args.url || args.file;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4160,7 +4160,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           ];
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        win = new Window$$1(args);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        win = new Window(args);
</ins><span class="cx" style="display: block; padding: 0 10px">         win.on('close', function () {
</span><span class="cx" style="display: block; padding: 0 10px">           closeCallback(win);
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4167,9 +4167,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">         if (args.data) {
</span><span class="cx" style="display: block; padding: 0 10px">           win.on('postRender', function () {
</span><span class="cx" style="display: block; padding: 0 10px">             this.find('*').each(function (ctrl) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              var name$$1 = ctrl.name();
-              if (name$$1 in args.data) {
-                ctrl.value(args.data[name$$1]);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              var name = ctrl.name();
+              if (name in args.data) {
+                ctrl.value(args.data[name]);
</ins><span class="cx" style="display: block; padding: 0 10px">               }
</span><span class="cx" style="display: block; padding: 0 10px">             });
</span><span class="cx" style="display: block; padding: 0 10px">           });
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4176,10 +4176,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         win.features = args || {};
</span><span class="cx" style="display: block; padding: 0 10px">         win.params = params || {};
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        win = win.renderTo(document.body).reflow();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        win = win.renderTo(domGlobals.document.body).reflow();
</ins><span class="cx" style="display: block; padding: 0 10px">         return win;
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var alert$$1 = function (message, choiceCallback, closeCallback) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var alert = function (message, choiceCallback, closeCallback) {
</ins><span class="cx" style="display: block; padding: 0 10px">         var win;
</span><span class="cx" style="display: block; padding: 0 10px">         win = MessageBox.alert(message, function () {
</span><span class="cx" style="display: block; padding: 0 10px">           choiceCallback();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4189,7 +4189,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><span class="cx" style="display: block; padding: 0 10px">         return win;
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var confirm$$1 = function (message, choiceCallback, closeCallback) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var confirm = function (message, choiceCallback, closeCallback) {
</ins><span class="cx" style="display: block; padding: 0 10px">         var win;
</span><span class="cx" style="display: block; padding: 0 10px">         win = MessageBox.confirm(message, function (state) {
</span><span class="cx" style="display: block; padding: 0 10px">           choiceCallback(state);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4199,20 +4199,20 @@
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><span class="cx" style="display: block; padding: 0 10px">         return win;
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var close$$1 = function (window$$1) {
-        window$$1.close();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var close = function (window) {
+        window.close();
</ins><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var getParams = function (window$$1) {
-        return window$$1.params;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var getParams = function (window) {
+        return window.params;
</ins><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var setParams = function (window$$1, params) {
-        window$$1.params = params;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var setParams = function (window, params) {
+        window.params = params;
</ins><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       return {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        open: open$$1,
-        alert: alert$$1,
-        confirm: confirm$$1,
-        close: close$$1,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        open: open,
+        alert: alert,
+        confirm: confirm,
+        close: close,
</ins><span class="cx" style="display: block; padding: 0 10px">         getParams: getParams,
</span><span class="cx" style="display: block; padding: 0 10px">         setParams: setParams
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4234,7 +4234,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var ThemeApi = { get: get };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var Global = typeof window !== 'undefined' ? window : Function('return this;')();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var Global = typeof domGlobals.window !== 'undefined' ? domGlobals.window : Function('return this;')();
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var path = function (parts, scope) {
</span><span class="cx" style="display: block; padding: 0 10px">       var o = scope !== undefined && scope !== null ? scope : Global;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4279,13 +4279,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var pickFile = function () {
</span><span class="cx" style="display: block; padding: 0 10px">       return new global$c(function (resolve) {
</span><span class="cx" style="display: block; padding: 0 10px">         var fileInput;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        fileInput = document.createElement('input');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        fileInput = domGlobals.document.createElement('input');
</ins><span class="cx" style="display: block; padding: 0 10px">         fileInput.type = 'file';
</span><span class="cx" style="display: block; padding: 0 10px">         fileInput.style.position = 'fixed';
</span><span class="cx" style="display: block; padding: 0 10px">         fileInput.style.left = 0;
</span><span class="cx" style="display: block; padding: 0 10px">         fileInput.style.top = 0;
</span><span class="cx" style="display: block; padding: 0 10px">         fileInput.style.opacity = 0.001;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        document.body.appendChild(fileInput);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        domGlobals.document.body.appendChild(fileInput);
</ins><span class="cx" style="display: block; padding: 0 10px">         fileInput.onchange = function (e) {
</span><span class="cx" style="display: block; padding: 0 10px">           resolve(Array.prototype.slice.call(e.target.files));
</span><span class="cx" style="display: block; padding: 0 10px">         };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5029,26 +5029,26 @@
</span><span class="cx" style="display: block; padding: 0 10px">         role: 'button'
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       init: function (settings) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">         var size;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1._super(settings);
-        settings = self$$1.settings;
-        size = self$$1.settings.size;
-        self$$1.on('click mousedown', function (e) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self._super(settings);
+        settings = self.settings;
+        size = self.settings.size;
+        self.on('click mousedown', function (e) {
</ins><span class="cx" style="display: block; padding: 0 10px">           e.preventDefault();
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.on('touchstart', function (e) {
-          self$$1.fire('click', e);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.on('touchstart', function (e) {
+          self.fire('click', e);
</ins><span class="cx" style="display: block; padding: 0 10px">           e.preventDefault();
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><span class="cx" style="display: block; padding: 0 10px">         if (settings.subtype) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.classes.add(settings.subtype);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.classes.add(settings.subtype);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (size) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.classes.add('btn-' + size);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.classes.add('btn-' + size);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (settings.icon) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.icon(settings.icon);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.icon(settings.icon);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       icon: function (icon) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5068,17 +5068,17 @@
</span><span class="cx" style="display: block; padding: 0 10px">         this._super();
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       renderHtml: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this, id = self$$1._id, prefix = self$$1.classPrefix;
-        var icon = self$$1.state.get('icon'), image;
-        var text = self$$1.state.get('text');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this, id = self._id, prefix = self.classPrefix;
+        var icon = self.state.get('icon'), image;
+        var text = self.state.get('text');
</ins><span class="cx" style="display: block; padding: 0 10px">         var textHtml = '';
</span><span class="cx" style="display: block; padding: 0 10px">         var ariaPressed;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var settings = self$$1.settings;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var settings = self.settings;
</ins><span class="cx" style="display: block; padding: 0 10px">         image = settings.image;
</span><span class="cx" style="display: block; padding: 0 10px">         if (image) {
</span><span class="cx" style="display: block; padding: 0 10px">           icon = 'none';
</span><span class="cx" style="display: block; padding: 0 10px">           if (typeof image !== 'string') {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            image = window.getSelection ? image[0] : image[1];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            image = domGlobals.window.getSelection ? image[0] : image[1];
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           image = ' style="background-image: url(\'' + image + '\')"';
</span><span class="cx" style="display: block; padding: 0 10px">         } else {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5085,41 +5085,41 @@
</span><span class="cx" style="display: block; padding: 0 10px">           image = '';
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (text) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.classes.add('btn-has-text');
-          textHtml = '<span class="' + prefix + 'txt">' + self$$1.encode(text) + '</span>';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.classes.add('btn-has-text');
+          textHtml = '<span class="' + prefix + 'txt">' + self.encode(text) + '</span>';
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         icon = icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';
</span><span class="cx" style="display: block; padding: 0 10px">         ariaPressed = typeof settings.active === 'boolean' ? ' aria-pressed="' + settings.active + '"' : '';
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return '<div id="' + id + '" class="' + self$$1.classes + '" tabindex="-1"' + ariaPressed + '>' + '<button id="' + id + '-button" role="presentation" type="button" tabindex="-1">' + (icon ? '<i class="' + icon + '"' + image + '></i>' : '') + textHtml + '</button>' + '</div>';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return '<div id="' + id + '" class="' + self.classes + '" tabindex="-1"' + ariaPressed + '>' + '<button id="' + id + '-button" role="presentation" type="button" tabindex="-1">' + (icon ? '<i class="' + icon + '"' + image + '></i>' : '') + textHtml + '</button>' + '</div>';
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       bindStates: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this, $ = self$$1.$, textCls = self$$1.classPrefix + 'txt';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this, $ = self.$, textCls = self.classPrefix + 'txt';
</ins><span class="cx" style="display: block; padding: 0 10px">         function setButtonText(text) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          var $span = $('span.' + textCls, self$$1.getEl());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          var $span = $('span.' + textCls, self.getEl());
</ins><span class="cx" style="display: block; padding: 0 10px">           if (text) {
</span><span class="cx" style="display: block; padding: 0 10px">             if (!$span[0]) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              $('button:first', self$$1.getEl()).append('<span class="' + textCls + '"></span>');
-              $span = $('span.' + textCls, self$$1.getEl());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              $('button:first', self.getEl()).append('<span class="' + textCls + '"></span>');
+              $span = $('span.' + textCls, self.getEl());
</ins><span class="cx" style="display: block; padding: 0 10px">             }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            $span.html(self$$1.encode(text));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            $span.html(self.encode(text));
</ins><span class="cx" style="display: block; padding: 0 10px">           } else {
</span><span class="cx" style="display: block; padding: 0 10px">             $span.remove();
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.classes.toggle('btn-has-text', !!text);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.classes.toggle('btn-has-text', !!text);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.state.on('change:text', function (e) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.state.on('change:text', function (e) {
</ins><span class="cx" style="display: block; padding: 0 10px">           setButtonText(e.value);
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.state.on('change:icon', function (e) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.state.on('change:icon', function (e) {
</ins><span class="cx" style="display: block; padding: 0 10px">           var icon = e.value;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          var prefix = self$$1.classPrefix;
-          self$$1.settings.icon = icon;
-          icon = icon ? prefix + 'ico ' + prefix + 'i-' + self$$1.settings.icon : '';
-          var btnElm = self$$1.getEl().firstChild;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          var prefix = self.classPrefix;
+          self.settings.icon = icon;
+          icon = icon ? prefix + 'ico ' + prefix + 'i-' + self.settings.icon : '';
+          var btnElm = self.getEl().firstChild;
</ins><span class="cx" style="display: block; padding: 0 10px">           var iconElm = btnElm.getElementsByTagName('i')[0];
</span><span class="cx" style="display: block; padding: 0 10px">           if (icon) {
</span><span class="cx" style="display: block; padding: 0 10px">             if (!iconElm || iconElm !== btnElm.firstChild) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              iconElm = document.createElement('i');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              iconElm = domGlobals.document.createElement('i');
</ins><span class="cx" style="display: block; padding: 0 10px">               btnElm.insertBefore(iconElm, btnElm.firstChild);
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">             iconElm.className = icon;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5126,9 +5126,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">           } else if (iconElm) {
</span><span class="cx" style="display: block; padding: 0 10px">             btnElm.removeChild(iconElm);
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          setButtonText(self$$1.state.get('text'));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          setButtonText(self.state.get('text'));
</ins><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return self$$1._super();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return self._super();
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     });
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5207,18 +5207,18 @@
</span><span class="cx" style="display: block; padding: 0 10px">         checked: false
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       init: function (settings) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        self$$1._super(settings);
-        self$$1.on('click mousedown', function (e) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        self._super(settings);
+        self.on('click mousedown', function (e) {
</ins><span class="cx" style="display: block; padding: 0 10px">           e.preventDefault();
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.on('click', function (e) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.on('click', function (e) {
</ins><span class="cx" style="display: block; padding: 0 10px">           e.preventDefault();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (!self$$1.disabled()) {
-            self$$1.checked(!self$$1.checked());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (!self.disabled()) {
+            self.checked(!self.checked());
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.checked(self$$1.settings.checked);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.checked(self.settings.checked);
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       checked: function (state) {
</span><span class="cx" style="display: block; padding: 0 10px">         if (!arguments.length) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5234,35 +5234,35 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return this.checked(state);
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       renderHtml: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this, id = self$$1._id, prefix = self$$1.classPrefix;
-        return '<div id="' + id + '" class="' + self$$1.classes + '" unselectable="on" aria-labelledby="' + id + '-al" tabindex="-1">' + '<i class="' + prefix + 'ico ' + prefix + 'i-checkbox"></i>' + '<span id="' + id + '-al" class="' + prefix + 'label">' + self$$1.encode(self$$1.state.get('text')) + '</span>' + '</div>';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this, id = self._id, prefix = self.classPrefix;
+        return '<div id="' + id + '" class="' + self.classes + '" unselectable="on" aria-labelledby="' + id + '-al" tabindex="-1">' + '<i class="' + prefix + 'ico ' + prefix + 'i-checkbox"></i>' + '<span id="' + id + '-al" class="' + prefix + 'label">' + self.encode(self.state.get('text')) + '</span>' + '</div>';
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       bindStates: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">         function checked(state) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.classes.toggle('checked', state);
-          self$$1.aria('checked', state);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.classes.toggle('checked', state);
+          self.aria('checked', state);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.state.on('change:text', function (e) {
-          self$$1.getEl('al').firstChild.data = self$$1.translate(e.value);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.state.on('change:text', function (e) {
+          self.getEl('al').firstChild.data = self.translate(e.value);
</ins><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.state.on('change:checked change:value', function (e) {
-          self$$1.fire('change');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.state.on('change:checked change:value', function (e) {
+          self.fire('change');
</ins><span class="cx" style="display: block; padding: 0 10px">           checked(e.value);
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.state.on('change:icon', function (e) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.state.on('change:icon', function (e) {
</ins><span class="cx" style="display: block; padding: 0 10px">           var icon = e.value;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          var prefix = self$$1.classPrefix;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          var prefix = self.classPrefix;
</ins><span class="cx" style="display: block; padding: 0 10px">           if (typeof icon === 'undefined') {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            return self$$1.settings.icon;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            return self.settings.icon;
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.settings.icon = icon;
-          icon = icon ? prefix + 'ico ' + prefix + 'i-' + self$$1.settings.icon : '';
-          var btnElm = self$$1.getEl().firstChild;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.settings.icon = icon;
+          icon = icon ? prefix + 'ico ' + prefix + 'i-' + self.settings.icon : '';
+          var btnElm = self.getEl().firstChild;
</ins><span class="cx" style="display: block; padding: 0 10px">           var iconElm = btnElm.getElementsByTagName('i')[0];
</span><span class="cx" style="display: block; padding: 0 10px">           if (icon) {
</span><span class="cx" style="display: block; padding: 0 10px">             if (!iconElm || iconElm !== btnElm.firstChild) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              iconElm = document.createElement('i');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              iconElm = domGlobals.document.createElement('i');
</ins><span class="cx" style="display: block; padding: 0 10px">               btnElm.insertBefore(iconElm, btnElm.firstChild);
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">             iconElm.className = icon;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5270,10 +5270,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">             btnElm.removeChild(iconElm);
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (self$$1.state.get('checked')) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (self.state.get('checked')) {
</ins><span class="cx" style="display: block; padding: 0 10px">           checked(true);
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return self$$1._super();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return self._super();
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     });
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5281,29 +5281,29 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var ComboBox = Widget.extend({
</span><span class="cx" style="display: block; padding: 0 10px">       init: function (settings) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        self$$1._super(settings);
-        settings = self$$1.settings;
-        self$$1.classes.add('combobox');
-        self$$1.subinput = true;
-        self$$1.ariaTarget = 'inp';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        self._super(settings);
+        settings = self.settings;
+        self.classes.add('combobox');
+        self.subinput = true;
+        self.ariaTarget = 'inp';
</ins><span class="cx" style="display: block; padding: 0 10px">         settings.menu = settings.menu || settings.values;
</span><span class="cx" style="display: block; padding: 0 10px">         if (settings.menu) {
</span><span class="cx" style="display: block; padding: 0 10px">           settings.icon = 'caret';
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.on('click', function (e) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.on('click', function (e) {
</ins><span class="cx" style="display: block; padding: 0 10px">           var elm = e.target;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          var root = self$$1.getEl();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          var root = self.getEl();
</ins><span class="cx" style="display: block; padding: 0 10px">           if (!global$7.contains(root, elm) && elm !== root) {
</span><span class="cx" style="display: block; padding: 0 10px">             return;
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           while (elm && elm !== root) {
</span><span class="cx" style="display: block; padding: 0 10px">             if (elm.id && elm.id.indexOf('-open') !== -1) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              self$$1.fire('action');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              self.fire('action');
</ins><span class="cx" style="display: block; padding: 0 10px">               if (settings.menu) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                self$$1.showMenu();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                self.showMenu();
</ins><span class="cx" style="display: block; padding: 0 10px">                 if (e.aria) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                  self$$1.menu.items()[0].focus();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                  self.menu.items()[0].focus();
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px">               }
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5310,33 +5310,33 @@
</span><span class="cx" style="display: block; padding: 0 10px">             elm = elm.parentNode;
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.on('keydown', function (e) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.on('keydown', function (e) {
</ins><span class="cx" style="display: block; padding: 0 10px">           var rootControl;
</span><span class="cx" style="display: block; padding: 0 10px">           if (e.keyCode === 13 && e.target.nodeName === 'INPUT') {
</span><span class="cx" style="display: block; padding: 0 10px">             e.preventDefault();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            self$$1.parents().reverse().each(function (ctrl) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            self.parents().reverse().each(function (ctrl) {
</ins><span class="cx" style="display: block; padding: 0 10px">               if (ctrl.toJSON) {
</span><span class="cx" style="display: block; padding: 0 10px">                 rootControl = ctrl;
</span><span class="cx" style="display: block; padding: 0 10px">                 return false;
</span><span class="cx" style="display: block; padding: 0 10px">               }
</span><span class="cx" style="display: block; padding: 0 10px">             });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            self$$1.fire('submit', { data: rootControl.toJSON() });
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            self.fire('submit', { data: rootControl.toJSON() });
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.on('keyup', function (e) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.on('keyup', function (e) {
</ins><span class="cx" style="display: block; padding: 0 10px">           if (e.target.nodeName === 'INPUT') {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            var oldValue = self$$1.state.get('value');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            var oldValue = self.state.get('value');
</ins><span class="cx" style="display: block; padding: 0 10px">             var newValue = e.target.value;
</span><span class="cx" style="display: block; padding: 0 10px">             if (newValue !== oldValue) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              self$$1.state.set('value', newValue);
-              self$$1.fire('autocomplete', e);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              self.state.set('value', newValue);
+              self.fire('autocomplete', e);
</ins><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.on('mouseover', function (e) {
-          var tooltip = self$$1.tooltip().moveTo(-65535);
-          if (self$$1.statusLevel() && e.target.className.indexOf(self$$1.classPrefix + 'status') !== -1) {
-            var statusMessage = self$$1.statusMessage() || 'Ok';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.on('mouseover', function (e) {
+          var tooltip = self.tooltip().moveTo(-65535);
+          if (self.statusLevel() && e.target.className.indexOf(self.classPrefix + 'status') !== -1) {
+            var statusMessage = self.statusMessage() || 'Ok';
</ins><span class="cx" style="display: block; padding: 0 10px">             var rel = tooltip.text(statusMessage).show().testMoveRel(e.target, [
</span><span class="cx" style="display: block; padding: 0 10px">               'bc-tc',
</span><span class="cx" style="display: block; padding: 0 10px">               'bc-tl',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5362,10 +5362,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return this.state.get('statusMessage');
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       showMenu: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        var settings = self$$1.settings;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        var settings = self.settings;
</ins><span class="cx" style="display: block; padding: 0 10px">         var menu;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (!self$$1.menu) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (!self.menu) {
</ins><span class="cx" style="display: block; padding: 0 10px">           menu = settings.menu || [];
</span><span class="cx" style="display: block; padding: 0 10px">           if (menu.length) {
</span><span class="cx" style="display: block; padding: 0 10px">             menu = {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5375,32 +5375,32 @@
</span><span class="cx" style="display: block; padding: 0 10px">           } else {
</span><span class="cx" style="display: block; padding: 0 10px">             menu.type = menu.type || 'menu';
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.menu = global$b.create(menu).parent(self$$1).renderTo(self$$1.getContainerElm());
-          self$$1.fire('createmenu');
-          self$$1.menu.reflow();
-          self$$1.menu.on('cancel', function (e) {
-            if (e.control === self$$1.menu) {
-              self$$1.focus();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.menu = global$b.create(menu).parent(self).renderTo(self.getContainerElm());
+          self.fire('createmenu');
+          self.menu.reflow();
+          self.menu.on('cancel', function (e) {
+            if (e.control === self.menu) {
+              self.focus();
</ins><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.menu.on('show hide', function (e) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.menu.on('show hide', function (e) {
</ins><span class="cx" style="display: block; padding: 0 10px">             e.control.items().each(function (ctrl) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              ctrl.active(ctrl.value() === self$$1.value());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              ctrl.active(ctrl.value() === self.value());
</ins><span class="cx" style="display: block; padding: 0 10px">             });
</span><span class="cx" style="display: block; padding: 0 10px">           }).fire('show');
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.menu.on('select', function (e) {
-            self$$1.value(e.control.value());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.menu.on('select', function (e) {
+            self.value(e.control.value());
</ins><span class="cx" style="display: block; padding: 0 10px">           });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.on('focusin', function (e) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.on('focusin', function (e) {
</ins><span class="cx" style="display: block; padding: 0 10px">             if (e.target.tagName.toUpperCase() === 'INPUT') {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              self$$1.menu.hide();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              self.menu.hide();
</ins><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.aria('expanded', true);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.aria('expanded', true);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.menu.show();
-        self$$1.menu.layoutRect({ w: self$$1.layoutRect().w });
-        self$$1.menu.moveRel(self$$1.getEl(), self$$1.isRtl() ? [
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.menu.show();
+        self.menu.layoutRect({ w: self.layoutRect().w });
+        self.menu.moveRel(self.getEl(), self.isRtl() ? [
</ins><span class="cx" style="display: block; padding: 0 10px">           'br-tr',
</span><span class="cx" style="display: block; padding: 0 10px">           'tr-br'
</span><span class="cx" style="display: block; padding: 0 10px">         ] : [
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5412,10 +5412,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">         this.getEl('inp').focus();
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       repaint: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this, elm = self$$1.getEl(), openElm = self$$1.getEl('open'), rect = self$$1.layoutRect();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this, elm = self.getEl(), openElm = self.getEl('open'), rect = self.layoutRect();
</ins><span class="cx" style="display: block; padding: 0 10px">         var width, lineHeight, innerPadding = 0;
</span><span class="cx" style="display: block; padding: 0 10px">         var inputElm = elm.firstChild;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (self$$1.statusLevel() && self$$1.statusLevel() !== 'none') {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (self.statusLevel() && self.statusLevel() !== 'none') {
</ins><span class="cx" style="display: block; padding: 0 10px">           innerPadding = parseInt(funcs.getRuntimeStyle(inputElm, 'padding-right'), 10) - parseInt(funcs.getRuntimeStyle(inputElm, 'padding-left'), 10);
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (openElm) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5423,28 +5423,28 @@
</span><span class="cx" style="display: block; padding: 0 10px">         } else {
</span><span class="cx" style="display: block; padding: 0 10px">           width = rect.w - 10;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var doc = document;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var doc = domGlobals.document;
</ins><span class="cx" style="display: block; padding: 0 10px">         if (doc.all && (!doc.documentMode || doc.documentMode <= 8)) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          lineHeight = self$$1.layoutRect().h - 2 + 'px';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          lineHeight = self.layoutRect().h - 2 + 'px';
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         global$7(inputElm).css({
</span><span class="cx" style="display: block; padding: 0 10px">           width: width - innerPadding,
</span><span class="cx" style="display: block; padding: 0 10px">           lineHeight: lineHeight
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1._super();
-        return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self._super();
+        return self;
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       postRender: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">         global$7(this.getEl('inp')).on('change', function (e) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.state.set('value', e.target.value);
-          self$$1.fire('change', e);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.state.set('value', e.target.value);
+          self.fire('change', e);
</ins><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return self$$1._super();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return self._super();
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       renderHtml: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this, id = self$$1._id, settings = self$$1.settings, prefix = self$$1.classPrefix;
-        var value = self$$1.state.get('value') || '';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this, id = self._id, settings = self.settings, prefix = self.classPrefix;
+        var value = self.state.get('value') || '';
</ins><span class="cx" style="display: block; padding: 0 10px">         var icon, text, openBtnHtml = '', extraAttrs = '', statusHtml = '';
</span><span class="cx" style="display: block; padding: 0 10px">         if ('spellcheck' in settings) {
</span><span class="cx" style="display: block; padding: 0 10px">           extraAttrs += ' spellcheck="' + settings.spellcheck + '"';
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5459,7 +5459,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">           extraAttrs += ' type="' + settings.subtype + '"';
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         statusHtml = '<i id="' + id + '-status" class="mce-status mce-ico" style="display: none"></i>';
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (self$$1.disabled()) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (self.disabled()) {
</ins><span class="cx" style="display: block; padding: 0 10px">           extraAttrs += ' disabled="disabled"';
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         icon = settings.icon;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5466,12 +5466,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">         if (icon && icon !== 'caret') {
</span><span class="cx" style="display: block; padding: 0 10px">           icon = prefix + 'ico ' + prefix + 'i-' + settings.icon;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        text = self$$1.state.get('text');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        text = self.state.get('text');
</ins><span class="cx" style="display: block; padding: 0 10px">         if (icon || text) {
</span><span class="cx" style="display: block; padding: 0 10px">           openBtnHtml = '<div id="' + id + '-open" class="' + prefix + 'btn ' + prefix + 'open" tabIndex="-1" role="button">' + '<button id="' + id + '-action" type="button" hidefocus="1" tabindex="-1">' + (icon !== 'caret' ? '<i class="' + icon + '"></i>' : '<i class="' + prefix + 'caret"></i>') + (text ? (icon ? ' ' : '') + text : '') + '</button>' + '</div>';
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.classes.add('has-open');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.classes.add('has-open');
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return '<div id="' + id + '" class="' + self$$1.classes + '">' + '<input id="' + id + '-inp" class="' + prefix + 'textbox" value="' + self$$1.encode(value, false) + '" hidefocus="1"' + extraAttrs + ' placeholder="' + self$$1.encode(settings.placeholder) + '" />' + statusHtml + openBtnHtml + '</div>';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return '<div id="' + id + '" class="' + self.classes + '">' + '<input id="' + id + '-inp" class="' + prefix + 'textbox" value="' + self.encode(value, false) + '" hidefocus="1"' + extraAttrs + ' placeholder="' + self.encode(settings.placeholder) + '" />' + statusHtml + openBtnHtml + '</div>';
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       value: function (value) {
</span><span class="cx" style="display: block; padding: 0 10px">         if (arguments.length) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5484,30 +5484,30 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return this.state.get('value');
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       showAutoComplete: function (items, term) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">         if (items.length === 0) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.hideMenu();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.hideMenu();
</ins><span class="cx" style="display: block; padding: 0 10px">           return;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         var insert = function (value, title) {
</span><span class="cx" style="display: block; padding: 0 10px">           return function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            self$$1.fire('selectitem', {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            self.fire('selectitem', {
</ins><span class="cx" style="display: block; padding: 0 10px">               title: title,
</span><span class="cx" style="display: block; padding: 0 10px">               value: value
</span><span class="cx" style="display: block; padding: 0 10px">             });
</span><span class="cx" style="display: block; padding: 0 10px">           };
</span><span class="cx" style="display: block; padding: 0 10px">         };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (self$$1.menu) {
-          self$$1.menu.items().remove();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (self.menu) {
+          self.menu.items().remove();
</ins><span class="cx" style="display: block; padding: 0 10px">         } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.menu = global$b.create({
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.menu = global$b.create({
</ins><span class="cx" style="display: block; padding: 0 10px">             type: 'menu',
</span><span class="cx" style="display: block; padding: 0 10px">             classes: 'combobox-menu',
</span><span class="cx" style="display: block; padding: 0 10px">             layout: 'flow'
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          }).parent(self$$1).renderTo();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          }).parent(self).renderTo();
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         global$4.each(items, function (item) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.menu.add({
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.menu.add({
</ins><span class="cx" style="display: block; padding: 0 10px">             text: item.title,
</span><span class="cx" style="display: block; padding: 0 10px">             url: item.previewUrl,
</span><span class="cx" style="display: block; padding: 0 10px">             match: term,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5515,28 +5515,28 @@
</span><span class="cx" style="display: block; padding: 0 10px">             onclick: insert(item.value, item.title)
</span><span class="cx" style="display: block; padding: 0 10px">           });
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.menu.renderNew();
-        self$$1.hideMenu();
-        self$$1.menu.on('cancel', function (e) {
-          if (e.control.parent() === self$$1.menu) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.menu.renderNew();
+        self.hideMenu();
+        self.menu.on('cancel', function (e) {
+          if (e.control.parent() === self.menu) {
</ins><span class="cx" style="display: block; padding: 0 10px">             e.stopPropagation();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            self$$1.focus();
-            self$$1.hideMenu();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            self.focus();
+            self.hideMenu();
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.menu.on('select', function () {
-          self$$1.focus();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.menu.on('select', function () {
+          self.focus();
</ins><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var maxW = self$$1.layoutRect().w;
-        self$$1.menu.layoutRect({
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var maxW = self.layoutRect().w;
+        self.menu.layoutRect({
</ins><span class="cx" style="display: block; padding: 0 10px">           w: maxW,
</span><span class="cx" style="display: block; padding: 0 10px">           minW: 0,
</span><span class="cx" style="display: block; padding: 0 10px">           maxW: maxW
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.menu.repaint();
-        self$$1.menu.reflow();
-        self$$1.menu.show();
-        self$$1.menu.moveRel(self$$1.getEl(), self$$1.isRtl() ? [
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.menu.repaint();
+        self.menu.reflow();
+        self.menu.show();
+        self.menu.moveRel(self.getEl(), self.isRtl() ? [
</ins><span class="cx" style="display: block; padding: 0 10px">           'br-tr',
</span><span class="cx" style="display: block; padding: 0 10px">           'tr-br'
</span><span class="cx" style="display: block; padding: 0 10px">         ] : [
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5550,32 +5550,32 @@
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       bindStates: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        self$$1.state.on('change:value', function (e) {
-          if (self$$1.getEl('inp').value !== e.value) {
-            self$$1.getEl('inp').value = e.value;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        self.state.on('change:value', function (e) {
+          if (self.getEl('inp').value !== e.value) {
+            self.getEl('inp').value = e.value;
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.state.on('change:disabled', function (e) {
-          self$$1.getEl('inp').disabled = e.value;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.state.on('change:disabled', function (e) {
+          self.getEl('inp').disabled = e.value;
</ins><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.state.on('change:statusLevel', function (e) {
-          var statusIconElm = self$$1.getEl('status');
-          var prefix = self$$1.classPrefix, value = e.value;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.state.on('change:statusLevel', function (e) {
+          var statusIconElm = self.getEl('status');
+          var prefix = self.classPrefix, value = e.value;
</ins><span class="cx" style="display: block; padding: 0 10px">           funcs.css(statusIconElm, 'display', value === 'none' ? 'none' : '');
</span><span class="cx" style="display: block; padding: 0 10px">           funcs.toggleClass(statusIconElm, prefix + 'i-checkmark', value === 'ok');
</span><span class="cx" style="display: block; padding: 0 10px">           funcs.toggleClass(statusIconElm, prefix + 'i-warning', value === 'warn');
</span><span class="cx" style="display: block; padding: 0 10px">           funcs.toggleClass(statusIconElm, prefix + 'i-error', value === 'error');
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.classes.toggle('has-status', value !== 'none');
-          self$$1.repaint();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.classes.toggle('has-status', value !== 'none');
+          self.repaint();
</ins><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        funcs.on(self$$1.getEl('status'), 'mouseleave', function () {
-          self$$1.tooltip().hide();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        funcs.on(self.getEl('status'), 'mouseleave', function () {
+          self.tooltip().hide();
</ins><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.on('cancel', function (e) {
-          if (self$$1.menu && self$$1.menu.visible()) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.on('cancel', function (e) {
+          if (self.menu && self.menu.visible()) {
</ins><span class="cx" style="display: block; padding: 0 10px">             e.stopPropagation();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            self$$1.hideMenu();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            self.hideMenu();
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><span class="cx" style="display: block; padding: 0 10px">         var focusIdx = function (idx, menu) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5583,20 +5583,20 @@
</span><span class="cx" style="display: block; padding: 0 10px">             menu.items().eq(idx)[0].focus();
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.on('keydown', function (e) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.on('keydown', function (e) {
</ins><span class="cx" style="display: block; padding: 0 10px">           var keyCode = e.keyCode;
</span><span class="cx" style="display: block; padding: 0 10px">           if (e.target.nodeName === 'INPUT') {
</span><span class="cx" style="display: block; padding: 0 10px">             if (keyCode === global$f.DOWN) {
</span><span class="cx" style="display: block; padding: 0 10px">               e.preventDefault();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              self$$1.fire('autocomplete');
-              focusIdx(0, self$$1.menu);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              self.fire('autocomplete');
+              focusIdx(0, self.menu);
</ins><span class="cx" style="display: block; padding: 0 10px">             } else if (keyCode === global$f.UP) {
</span><span class="cx" style="display: block; padding: 0 10px">               e.preventDefault();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              focusIdx(-1, self$$1.menu);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              focusIdx(-1, self.menu);
</ins><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return self$$1._super();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return self._super();
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       remove: function () {
</span><span class="cx" style="display: block; padding: 0 10px">         global$7(this.getEl('inp')).off();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6207,28 +6207,29 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var fromHtml = function (html, scope) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var doc = scope || document;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var doc = scope || domGlobals.document;
</ins><span class="cx" style="display: block; padding: 0 10px">       var div = doc.createElement('div');
</span><span class="cx" style="display: block; padding: 0 10px">       div.innerHTML = html;
</span><span class="cx" style="display: block; padding: 0 10px">       if (!div.hasChildNodes() || div.childNodes.length > 1) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        console.error('HTML does not have a single root node', html);
-        throw 'HTML must have a single root node';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        domGlobals.console.error('HTML does not have a single root node', html);
+        throw new Error('HTML must have a single root node');
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       return fromDom(div.childNodes[0]);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var fromTag = function (tag, scope) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var doc = scope || document;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var doc = scope || domGlobals.document;
</ins><span class="cx" style="display: block; padding: 0 10px">       var node = doc.createElement(tag);
</span><span class="cx" style="display: block; padding: 0 10px">       return fromDom(node);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var fromText = function (text, scope) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var doc = scope || document;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var doc = scope || domGlobals.document;
</ins><span class="cx" style="display: block; padding: 0 10px">       var node = doc.createTextNode(text);
</span><span class="cx" style="display: block; padding: 0 10px">       return fromDom(node);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var fromDom = function (node) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      if (node === null || node === undefined)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      if (node === null || node === undefined) {
</ins><span class="cx" style="display: block; padding: 0 10px">         throw new Error('Node cannot be null or undefined');
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      }
</ins><span class="cx" style="display: block; padding: 0 10px">       return { dom: constant(node) };
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var fromPoint = function (docElm, x, y) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6235,7 +6236,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var doc = docElm.dom();
</span><span class="cx" style="display: block; padding: 0 10px">       return Option.from(doc.elementFromPoint(x, y)).map(fromDom);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var Element$$1 = {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var Element = {
</ins><span class="cx" style="display: block; padding: 0 10px">       fromHtml: fromHtml,
</span><span class="cx" style="display: block; padding: 0 10px">       fromTag: fromTag,
</span><span class="cx" style="display: block; padding: 0 10px">       fromText: fromText,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6259,18 +6260,18 @@
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var ATTRIBUTE = Node.ATTRIBUTE_NODE;
-    var CDATA_SECTION = Node.CDATA_SECTION_NODE;
-    var COMMENT = Node.COMMENT_NODE;
-    var DOCUMENT = Node.DOCUMENT_NODE;
-    var DOCUMENT_TYPE = Node.DOCUMENT_TYPE_NODE;
-    var DOCUMENT_FRAGMENT = Node.DOCUMENT_FRAGMENT_NODE;
-    var ELEMENT = Node.ELEMENT_NODE;
-    var TEXT = Node.TEXT_NODE;
-    var PROCESSING_INSTRUCTION = Node.PROCESSING_INSTRUCTION_NODE;
-    var ENTITY_REFERENCE = Node.ENTITY_REFERENCE_NODE;
-    var ENTITY = Node.ENTITY_NODE;
-    var NOTATION = Node.NOTATION_NODE;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var ATTRIBUTE = domGlobals.Node.ATTRIBUTE_NODE;
+    var CDATA_SECTION = domGlobals.Node.CDATA_SECTION_NODE;
+    var COMMENT = domGlobals.Node.COMMENT_NODE;
+    var DOCUMENT = domGlobals.Node.DOCUMENT_NODE;
+    var DOCUMENT_TYPE = domGlobals.Node.DOCUMENT_TYPE_NODE;
+    var DOCUMENT_FRAGMENT = domGlobals.Node.DOCUMENT_FRAGMENT_NODE;
+    var ELEMENT = domGlobals.Node.ELEMENT_NODE;
+    var TEXT = domGlobals.Node.TEXT_NODE;
+    var PROCESSING_INSTRUCTION = domGlobals.Node.PROCESSING_INSTRUCTION_NODE;
+    var ENTITY_REFERENCE = domGlobals.Node.ENTITY_REFERENCE_NODE;
+    var ENTITY = domGlobals.Node.ENTITY_NODE;
+    var NOTATION = domGlobals.Node.NOTATION_NODE;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var Immutable = function () {
</span><span class="cx" style="display: block; padding: 0 10px">       var fields = [];
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6306,7 +6307,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var documentPositionContainedBy = function (a, b) {
</span><span class="cx" style="display: block; padding: 0 10px">       return compareDocumentPosition(a, b, node().DOCUMENT_POSITION_CONTAINED_BY);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var Node$1 = {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var Node = {
</ins><span class="cx" style="display: block; padding: 0 10px">       documentPositionPreceding: documentPositionPreceding,
</span><span class="cx" style="display: block; padding: 0 10px">       documentPositionContainedBy: documentPositionContainedBy
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6319,7 +6320,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       return undefined;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var find$2 = function (regexes, agent) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var find$1 = function (regexes, agent) {
</ins><span class="cx" style="display: block; padding: 0 10px">       var r = firstMatch(regexes, agent);
</span><span class="cx" style="display: block; padding: 0 10px">       if (!r)
</span><span class="cx" style="display: block; padding: 0 10px">         return {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6335,7 +6336,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var cleanedAgent = String(agent).toLowerCase();
</span><span class="cx" style="display: block; padding: 0 10px">       if (versionRegexes.length === 0)
</span><span class="cx" style="display: block; padding: 0 10px">         return unknown();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return find$2(versionRegexes, cleanedAgent);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return find$1(versionRegexes, cleanedAgent);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var unknown = function () {
</span><span class="cx" style="display: block; padding: 0 10px">       return nu(0, 0);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6489,7 +6490,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       detectOs: detectOs
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var contains$1 = function (str, substr) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var contains = function (str, substr) {
</ins><span class="cx" style="display: block; padding: 0 10px">       return str.indexOf(substr) !== -1;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6496,7 +6497,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var normalVersionRegex = /.*?version\/\ ?([0-9]+)\.([0-9]+).*/;
</span><span class="cx" style="display: block; padding: 0 10px">     var checkContains = function (target) {
</span><span class="cx" style="display: block; padding: 0 10px">       return function (uastring) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return contains$1(uastring, target);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return contains(uastring, target);
</ins><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var browsers = [
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6504,7 +6505,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         name: 'Edge',
</span><span class="cx" style="display: block; padding: 0 10px">         versionRegexes: [/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],
</span><span class="cx" style="display: block; padding: 0 10px">         search: function (uastring) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          var monstrosity = contains$1(uastring, 'edge/') && contains$1(uastring, 'chrome') && contains$1(uastring, 'safari') && contains$1(uastring, 'applewebkit');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          var monstrosity = contains(uastring, 'edge/') && contains(uastring, 'chrome') && contains(uastring, 'safari') && contains(uastring, 'applewebkit');
</ins><span class="cx" style="display: block; padding: 0 10px">           return monstrosity;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6515,7 +6516,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">           normalVersionRegex
</span><span class="cx" style="display: block; padding: 0 10px">         ],
</span><span class="cx" style="display: block; padding: 0 10px">         search: function (uastring) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          return contains$1(uastring, 'chrome') && !contains$1(uastring, 'chromeframe');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          return contains(uastring, 'chrome') && !contains(uastring, 'chromeframe');
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6525,7 +6526,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">           /.*?rv:([0-9]+)\.([0-9]+).*/
</span><span class="cx" style="display: block; padding: 0 10px">         ],
</span><span class="cx" style="display: block; padding: 0 10px">         search: function (uastring) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          return contains$1(uastring, 'msie') || contains$1(uastring, 'trident');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          return contains(uastring, 'msie') || contains(uastring, 'trident');
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6548,7 +6549,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">           /.*?cpu os ([0-9]+)_([0-9]+).*/
</span><span class="cx" style="display: block; padding: 0 10px">         ],
</span><span class="cx" style="display: block; padding: 0 10px">         search: function (uastring) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          return (contains$1(uastring, 'safari') || contains$1(uastring, 'mobile/')) && contains$1(uastring, 'applewebkit');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          return (contains(uastring, 'safari') || contains(uastring, 'mobile/')) && contains(uastring, 'applewebkit');
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     ];
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6561,7 +6562,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       {
</span><span class="cx" style="display: block; padding: 0 10px">         name: 'iOS',
</span><span class="cx" style="display: block; padding: 0 10px">         search: function (uastring) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          return contains$1(uastring, 'iphone') || contains$1(uastring, 'ipad');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          return contains(uastring, 'iphone') || contains(uastring, 'ipad');
</ins><span class="cx" style="display: block; padding: 0 10px">         },
</span><span class="cx" style="display: block; padding: 0 10px">         versionRegexes: [
</span><span class="cx" style="display: block; padding: 0 10px">           /.*?version\/\ ?([0-9]+)\.([0-9]+).*/,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6615,7 +6616,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var PlatformDetection = { detect: detect$2 };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var detect$3 = cached(function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var userAgent = navigator.userAgent;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var userAgent = domGlobals.navigator.userAgent;
</ins><span class="cx" style="display: block; padding: 0 10px">       return PlatformDetection.detect(userAgent);
</span><span class="cx" style="display: block; padding: 0 10px">     });
</span><span class="cx" style="display: block; padding: 0 10px">     var PlatformDetection$1 = { detect: detect$3 };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6626,31 +6627,32 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return dom.nodeType !== ELEMENT$1 && dom.nodeType !== DOCUMENT$1 || dom.childElementCount === 0;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var all = function (selector, scope) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var base = scope === undefined ? document : scope.dom();
-      return bypassSelector(base) ? [] : map(base.querySelectorAll(selector), Element$$1.fromDom);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var base = scope === undefined ? domGlobals.document : scope.dom();
+      return bypassSelector(base) ? [] : map(base.querySelectorAll(selector), Element.fromDom);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var one = function (selector, scope) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var base = scope === undefined ? document : scope.dom();
-      return bypassSelector(base) ? Option.none() : Option.from(base.querySelector(selector)).map(Element$$1.fromDom);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var base = scope === undefined ? domGlobals.document : scope.dom();
+      return bypassSelector(base) ? Option.none() : Option.from(base.querySelector(selector)).map(Element.fromDom);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var regularContains = function (e1, e2) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var d1 = e1.dom(), d2 = e2.dom();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var d1 = e1.dom();
+      var d2 = e2.dom();
</ins><span class="cx" style="display: block; padding: 0 10px">       return d1 === d2 ? false : d1.contains(d2);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var ieContains = function (e1, e2) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return Node$1.documentPositionContainedBy(e1.dom(), e2.dom());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return Node.documentPositionContainedBy(e1.dom(), e2.dom());
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var browser = PlatformDetection$1.detect().browser;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var contains$2 = browser.isIE() ? ieContains : regularContains;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var contains$1 = browser.isIE() ? ieContains : regularContains;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var spot = Immutable('element', 'offset');
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var descendants$1 = function (scope, selector) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var descendants = function (scope, selector) {
</ins><span class="cx" style="display: block; padding: 0 10px">       return all(selector, scope);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var trim$1 = global$4.trim;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var trim = global$4.trim;
</ins><span class="cx" style="display: block; padding: 0 10px">     var hasContentEditableState = function (value) {
</span><span class="cx" style="display: block; padding: 0 10px">       return function (node) {
</span><span class="cx" style="display: block; padding: 0 10px">         if (node && node.nodeType === 1) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6685,7 +6687,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return false;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var select = function (selector, root) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return map(descendants$1(Element$$1.fromDom(root), selector), function (element) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return map(descendants(Element.fromDom(root), selector), function (element) {
</ins><span class="cx" style="display: block; padding: 0 10px">         return element.dom();
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6736,13 +6738,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return elms;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var hasTitle = function (target) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return trim$1(target.title).length > 0;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return trim(target.title).length > 0;
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var find$3 = function (elm) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var find$2 = function (elm) {
</ins><span class="cx" style="display: block; padding: 0 10px">       var elms = getTargetElements(elm);
</span><span class="cx" style="display: block; padding: 0 10px">       return filter(getHeaderTargets(elms).concat(getAnchorTargets(elms)), hasTitle);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var LinkTargets = { find: find$3 };
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var LinkTargets = { find: find$2 };
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var getActiveEditor = function () {
</span><span class="cx" style="display: block; padding: 0 10px">       return window.tinymce ? window.tinymce.activeEditor : global$5.activeEditor;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -7188,7 +7190,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     });
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var descendant$1 = function (scope, selector) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var descendant = function (scope, selector) {
</ins><span class="cx" style="display: block; padding: 0 10px">       return one(selector, scope);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -8131,7 +8133,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var setupUiContainer = function (editor) {
</span><span class="cx" style="display: block; padding: 0 10px">       if (editor.settings.ui_container) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        global$1.container = descendant$1(Element$$1.fromDom(document.body), editor.settings.ui_container).fold(constant(null), function (elm) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        global$1.container = descendant(Element.fromDom(domGlobals.document.body), editor.settings.ui_container).fold(constant(null), function (elm) {
</ins><span class="cx" style="display: block; padding: 0 10px">           return elm.dom();
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -8468,9 +8470,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     });
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    function isChildOf$1(node, parent$$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    function isChildOf$1(node, parent) {
</ins><span class="cx" style="display: block; padding: 0 10px">       while (node) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (parent$$1 === node) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (parent === node) {
</ins><span class="cx" style="display: block; padding: 0 10px">           return true;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         node = node.parentNode;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -8479,26 +8481,26 @@
</span><span class="cx" style="display: block; padding: 0 10px">     }
</span><span class="cx" style="display: block; padding: 0 10px">     var MenuButton = Button.extend({
</span><span class="cx" style="display: block; padding: 0 10px">       init: function (settings) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        self$$1._renderOpen = true;
-        self$$1._super(settings);
-        settings = self$$1.settings;
-        self$$1.classes.add('menubtn');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        self._renderOpen = true;
+        self._super(settings);
+        settings = self.settings;
+        self.classes.add('menubtn');
</ins><span class="cx" style="display: block; padding: 0 10px">         if (settings.fixedWidth) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.classes.add('fixed-width');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.classes.add('fixed-width');
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.aria('haspopup', true);
-        self$$1.state.set('menu', settings.menu || self$$1.render());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.aria('haspopup', true);
+        self.state.set('menu', settings.menu || self.render());
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       showMenu: function (toggle) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">         var menu;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (self$$1.menu && self$$1.menu.visible() && toggle !== false) {
-          return self$$1.hideMenu();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (self.menu && self.menu.visible() && toggle !== false) {
+          return self.hideMenu();
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (!self$$1.menu) {
-          menu = self$$1.state.get('menu') || [];
-          self$$1.classes.add('opened');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (!self.menu) {
+          menu = self.state.get('menu') || [];
+          self.classes.add('opened');
</ins><span class="cx" style="display: block; padding: 0 10px">           if (menu.length) {
</span><span class="cx" style="display: block; padding: 0 10px">             menu = {
</span><span class="cx" style="display: block; padding: 0 10px">               type: 'menu',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -8510,37 +8512,37 @@
</span><span class="cx" style="display: block; padding: 0 10px">             menu.animate = true;
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           if (!menu.renderTo) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            self$$1.menu = global$b.create(menu).parent(self$$1).renderTo();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            self.menu = global$b.create(menu).parent(self).renderTo();
</ins><span class="cx" style="display: block; padding: 0 10px">           } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            self$$1.menu = menu.parent(self$$1).show().renderTo();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            self.menu = menu.parent(self).show().renderTo();
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.fire('createmenu');
-          self$$1.menu.reflow();
-          self$$1.menu.on('cancel', function (e) {
-            if (e.control.parent() === self$$1.menu) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.fire('createmenu');
+          self.menu.reflow();
+          self.menu.on('cancel', function (e) {
+            if (e.control.parent() === self.menu) {
</ins><span class="cx" style="display: block; padding: 0 10px">               e.stopPropagation();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              self$$1.focus();
-              self$$1.hideMenu();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              self.focus();
+              self.hideMenu();
</ins><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.menu.on('select', function () {
-            self$$1.focus();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.menu.on('select', function () {
+            self.focus();
</ins><span class="cx" style="display: block; padding: 0 10px">           });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.menu.on('show hide', function (e) {
-            if (e.type === 'hide' && e.control.parent() === self$$1) {
-              self$$1.classes.remove('opened-under');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.menu.on('show hide', function (e) {
+            if (e.type === 'hide' && e.control.parent() === self) {
+              self.classes.remove('opened-under');
</ins><span class="cx" style="display: block; padding: 0 10px">             }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            if (e.control === self$$1.menu) {
-              self$$1.activeMenu(e.type === 'show');
-              self$$1.classes.toggle('opened', e.type === 'show');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            if (e.control === self.menu) {
+              self.activeMenu(e.type === 'show');
+              self.classes.toggle('opened', e.type === 'show');
</ins><span class="cx" style="display: block; padding: 0 10px">             }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            self$$1.aria('expanded', e.type === 'show');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            self.aria('expanded', e.type === 'show');
</ins><span class="cx" style="display: block; padding: 0 10px">           }).fire('show');
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.menu.show();
-        self$$1.menu.layoutRect({ w: self$$1.layoutRect().w });
-        self$$1.menu.repaint();
-        self$$1.menu.moveRel(self$$1.getEl(), self$$1.isRtl() ? [
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.menu.show();
+        self.menu.layoutRect({ w: self.layoutRect().w });
+        self.menu.repaint();
+        self.menu.moveRel(self.getEl(), self.isRtl() ? [
</ins><span class="cx" style="display: block; padding: 0 10px">           'br-tr',
</span><span class="cx" style="display: block; padding: 0 10px">           'tr-br'
</span><span class="cx" style="display: block; padding: 0 10px">         ] : [
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -8547,22 +8549,22 @@
</span><span class="cx" style="display: block; padding: 0 10px">           'bl-tl',
</span><span class="cx" style="display: block; padding: 0 10px">           'tl-bl'
</span><span class="cx" style="display: block; padding: 0 10px">         ]);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var menuLayoutRect = self$$1.menu.layoutRect();
-        var selfBottom = self$$1.$el.offset().top + self$$1.layoutRect().h;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var menuLayoutRect = self.menu.layoutRect();
+        var selfBottom = self.$el.offset().top + self.layoutRect().h;
</ins><span class="cx" style="display: block; padding: 0 10px">         if (selfBottom > menuLayoutRect.y && selfBottom < menuLayoutRect.y + menuLayoutRect.h) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.classes.add('opened-under');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.classes.add('opened-under');
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.fire('showmenu');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.fire('showmenu');
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       hideMenu: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        if (self$$1.menu) {
-          self$$1.menu.items().each(function (item) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        if (self.menu) {
+          self.menu.items().each(function (item) {
</ins><span class="cx" style="display: block; padding: 0 10px">             if (item.hideMenu) {
</span><span class="cx" style="display: block; padding: 0 10px">               item.hideMenu();
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.menu.hide();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.menu.hide();
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       activeMenu: function (state) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -8569,15 +8571,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">         this.classes.toggle('active', state);
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       renderHtml: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this, id = self$$1._id, prefix = self$$1.classPrefix;
-        var icon = self$$1.settings.icon, image;
-        var text = self$$1.state.get('text');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this, id = self._id, prefix = self.classPrefix;
+        var icon = self.settings.icon, image;
+        var text = self.state.get('text');
</ins><span class="cx" style="display: block; padding: 0 10px">         var textHtml = '';
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        image = self$$1.settings.image;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        image = self.settings.image;
</ins><span class="cx" style="display: block; padding: 0 10px">         if (image) {
</span><span class="cx" style="display: block; padding: 0 10px">           icon = 'none';
</span><span class="cx" style="display: block; padding: 0 10px">           if (typeof image !== 'string') {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            image = window.getSelection ? image[0] : image[1];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            image = domGlobals.window.getSelection ? image[0] : image[1];
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           image = ' style="background-image: url(\'' + image + '\')"';
</span><span class="cx" style="display: block; padding: 0 10px">         } else {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -8584,30 +8586,30 @@
</span><span class="cx" style="display: block; padding: 0 10px">           image = '';
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (text) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.classes.add('btn-has-text');
-          textHtml = '<span class="' + prefix + 'txt">' + self$$1.encode(text) + '</span>';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.classes.add('btn-has-text');
+          textHtml = '<span class="' + prefix + 'txt">' + self.encode(text) + '</span>';
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        icon = self$$1.settings.icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';
-        self$$1.aria('role', self$$1.parent() instanceof MenuBar ? 'menuitem' : 'button');
-        return '<div id="' + id + '" class="' + self$$1.classes + '" tabindex="-1" aria-labelledby="' + id + '">' + '<button id="' + id + '-open" role="presentation" type="button" tabindex="-1">' + (icon ? '<i class="' + icon + '"' + image + '></i>' : '') + textHtml + ' <i class="' + prefix + 'caret"></i>' + '</button>' + '</div>';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        icon = self.settings.icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';
+        self.aria('role', self.parent() instanceof MenuBar ? 'menuitem' : 'button');
+        return '<div id="' + id + '" class="' + self.classes + '" tabindex="-1" aria-labelledby="' + id + '">' + '<button id="' + id + '-open" role="presentation" type="button" tabindex="-1">' + (icon ? '<i class="' + icon + '"' + image + '></i>' : '') + textHtml + ' <i class="' + prefix + 'caret"></i>' + '</button>' + '</div>';
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       postRender: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        self$$1.on('click', function (e) {
-          if (e.control === self$$1 && isChildOf$1(e.target, self$$1.getEl())) {
-            self$$1.focus();
-            self$$1.showMenu(!e.aria);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        self.on('click', function (e) {
+          if (e.control === self && isChildOf$1(e.target, self.getEl())) {
+            self.focus();
+            self.showMenu(!e.aria);
</ins><span class="cx" style="display: block; padding: 0 10px">             if (e.aria) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              self$$1.menu.items().filter(':visible')[0].focus();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              self.menu.items().filter(':visible')[0].focus();
</ins><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.on('mouseenter', function (e) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.on('mouseenter', function (e) {
</ins><span class="cx" style="display: block; padding: 0 10px">           var overCtrl = e.control;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          var parent$$1 = self$$1.parent();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          var parent = self.parent();
</ins><span class="cx" style="display: block; padding: 0 10px">           var hasVisibleSiblingMenu;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (overCtrl && parent$$1 && overCtrl instanceof MenuButton && overCtrl.parent() === parent$$1) {
-            parent$$1.items().filter('MenuButton').each(function (ctrl) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (overCtrl && parent && overCtrl instanceof MenuButton && overCtrl.parent() === parent) {
+            parent.items().filter('MenuButton').each(function (ctrl) {
</ins><span class="cx" style="display: block; padding: 0 10px">               if (ctrl.hideMenu && ctrl !== overCtrl) {
</span><span class="cx" style="display: block; padding: 0 10px">                 if (ctrl.menu && ctrl.menu.visible()) {
</span><span class="cx" style="display: block; padding: 0 10px">                   hasVisibleSiblingMenu = true;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -8621,17 +8623,17 @@
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return self$$1._super();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return self._super();
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       bindStates: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        self$$1.state.on('change:menu', function () {
-          if (self$$1.menu) {
-            self$$1.menu.remove();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        self.state.on('change:menu', function () {
+          if (self.menu) {
+            self.menu.remove();
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.menu = null;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.menu = null;
</ins><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return self$$1._super();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return self._super();
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       remove: function () {
</span><span class="cx" style="display: block; padding: 0 10px">         this._super();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -9422,11 +9424,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">         role: 'button'
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       repaint: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        var elm = self$$1.getEl();
-        var rect = self$$1.layoutRect();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        var elm = self.getEl();
+        var rect = self.layoutRect();
</ins><span class="cx" style="display: block; padding: 0 10px">         var mainButtonElm, menuButtonElm;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1._super();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self._super();
</ins><span class="cx" style="display: block; padding: 0 10px">         mainButtonElm = elm.firstChild;
</span><span class="cx" style="display: block; padding: 0 10px">         menuButtonElm = elm.lastChild;
</span><span class="cx" style="display: block; padding: 0 10px">         global$7(mainButtonElm).css({
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -9434,26 +9436,26 @@
</span><span class="cx" style="display: block; padding: 0 10px">           height: rect.h - 2
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><span class="cx" style="display: block; padding: 0 10px">         global$7(menuButtonElm).css({ height: rect.h - 2 });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return self;
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       activeMenu: function (state) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        global$7(self$$1.getEl().lastChild).toggleClass(self$$1.classPrefix + 'active', state);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        global$7(self.getEl().lastChild).toggleClass(self.classPrefix + 'active', state);
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       renderHtml: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        var id = self$$1._id;
-        var prefix = self$$1.classPrefix;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        var id = self._id;
+        var prefix = self.classPrefix;
</ins><span class="cx" style="display: block; padding: 0 10px">         var image;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var icon = self$$1.state.get('icon');
-        var text = self$$1.state.get('text');
-        var settings = self$$1.settings;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var icon = self.state.get('icon');
+        var text = self.state.get('text');
+        var settings = self.settings;
</ins><span class="cx" style="display: block; padding: 0 10px">         var textHtml = '', ariaPressed;
</span><span class="cx" style="display: block; padding: 0 10px">         image = settings.image;
</span><span class="cx" style="display: block; padding: 0 10px">         if (image) {
</span><span class="cx" style="display: block; padding: 0 10px">           icon = 'none';
</span><span class="cx" style="display: block; padding: 0 10px">           if (typeof image !== 'string') {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            image = window.getSelection ? image[0] : image[1];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            image = domGlobals.window.getSelection ? image[0] : image[1];
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           image = ' style="background-image: url(\'' + image + '\')"';
</span><span class="cx" style="display: block; padding: 0 10px">         } else {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -9461,15 +9463,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         icon = settings.icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';
</span><span class="cx" style="display: block; padding: 0 10px">         if (text) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.classes.add('btn-has-text');
-          textHtml = '<span class="' + prefix + 'txt">' + self$$1.encode(text) + '</span>';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.classes.add('btn-has-text');
+          textHtml = '<span class="' + prefix + 'txt">' + self.encode(text) + '</span>';
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         ariaPressed = typeof settings.active === 'boolean' ? ' aria-pressed="' + settings.active + '"' : '';
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return '<div id="' + id + '" class="' + self$$1.classes + '" role="button"' + ariaPressed + ' tabindex="-1">' + '<button type="button" hidefocus="1" tabindex="-1">' + (icon ? '<i class="' + icon + '"' + image + '></i>' : '') + textHtml + '</button>' + '<button type="button" class="' + prefix + 'open" hidefocus="1" tabindex="-1">' + (self$$1._menuBtnText ? (icon ? '\xA0' : '') + self$$1._menuBtnText : '') + ' <i class="' + prefix + 'caret"></i>' + '</button>' + '</div>';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return '<div id="' + id + '" class="' + self.classes + '" role="button"' + ariaPressed + ' tabindex="-1">' + '<button type="button" hidefocus="1" tabindex="-1">' + (icon ? '<i class="' + icon + '"' + image + '></i>' : '') + textHtml + '</button>' + '<button type="button" class="' + prefix + 'open" hidefocus="1" tabindex="-1">' + (self._menuBtnText ? (icon ? '\xA0' : '') + self._menuBtnText : '') + ' <i class="' + prefix + 'caret"></i>' + '</button>' + '</div>';
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       postRender: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this, onClickHandler = self$$1.settings.onclick;
-        self$$1.on('click', function (e) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this, onClickHandler = self.settings.onclick;
+        self.on('click', function (e) {
</ins><span class="cx" style="display: block; padding: 0 10px">           var node = e.target;
</span><span class="cx" style="display: block; padding: 0 10px">           if (e.control === this) {
</span><span class="cx" style="display: block; padding: 0 10px">             while (node) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -9484,8 +9486,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        delete self$$1.settings.onclick;
-        return self$$1._super();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        delete self.settings.onclick;
+        return self._super();
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     });
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -9590,43 +9592,43 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var TextBox = Widget.extend({
</span><span class="cx" style="display: block; padding: 0 10px">       init: function (settings) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        self$$1._super(settings);
-        self$$1.classes.add('textbox');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        self._super(settings);
+        self.classes.add('textbox');
</ins><span class="cx" style="display: block; padding: 0 10px">         if (settings.multiline) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.classes.add('multiline');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.classes.add('multiline');
</ins><span class="cx" style="display: block; padding: 0 10px">         } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.on('keydown', function (e) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.on('keydown', function (e) {
</ins><span class="cx" style="display: block; padding: 0 10px">             var rootControl;
</span><span class="cx" style="display: block; padding: 0 10px">             if (e.keyCode === 13) {
</span><span class="cx" style="display: block; padding: 0 10px">               e.preventDefault();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              self$$1.parents().reverse().each(function (ctrl) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              self.parents().reverse().each(function (ctrl) {
</ins><span class="cx" style="display: block; padding: 0 10px">                 if (ctrl.toJSON) {
</span><span class="cx" style="display: block; padding: 0 10px">                   rootControl = ctrl;
</span><span class="cx" style="display: block; padding: 0 10px">                   return false;
</span><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px">               });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              self$$1.fire('submit', { data: rootControl.toJSON() });
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              self.fire('submit', { data: rootControl.toJSON() });
</ins><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.on('keyup', function (e) {
-            self$$1.state.set('value', e.target.value);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.on('keyup', function (e) {
+            self.state.set('value', e.target.value);
</ins><span class="cx" style="display: block; padding: 0 10px">           });
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       repaint: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">         var style, rect, borderBox, borderW, borderH = 0, lastRepaintRect;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        style = self$$1.getEl().style;
-        rect = self$$1._layoutRect;
-        lastRepaintRect = self$$1._lastRepaintRect || {};
-        var doc = document;
-        if (!self$$1.settings.multiline && doc.all && (!doc.documentMode || doc.documentMode <= 8)) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        style = self.getEl().style;
+        rect = self._layoutRect;
+        lastRepaintRect = self._lastRepaintRect || {};
+        var doc = domGlobals.document;
+        if (!self.settings.multiline && doc.all && (!doc.documentMode || doc.documentMode <= 8)) {
</ins><span class="cx" style="display: block; padding: 0 10px">           style.lineHeight = rect.h - borderH + 'px';
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        borderBox = self$$1.borderBox;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        borderBox = self.borderBox;
</ins><span class="cx" style="display: block; padding: 0 10px">         borderW = borderBox.left + borderBox.right + 8;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        borderH = borderBox.top + borderBox.bottom + (self$$1.settings.multiline ? 8 : 0);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        borderH = borderBox.top + borderBox.bottom + (self.settings.multiline ? 8 : 0);
</ins><span class="cx" style="display: block; padding: 0 10px">         if (rect.x !== lastRepaintRect.x) {
</span><span class="cx" style="display: block; padding: 0 10px">           style.left = rect.x + 'px';
</span><span class="cx" style="display: block; padding: 0 10px">           lastRepaintRect.x = rect.x;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -9643,16 +9645,16 @@
</span><span class="cx" style="display: block; padding: 0 10px">           style.height = rect.h - borderH + 'px';
</span><span class="cx" style="display: block; padding: 0 10px">           lastRepaintRect.h = rect.h;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1._lastRepaintRect = lastRepaintRect;
-        self$$1.fire('repaint', {}, false);
-        return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self._lastRepaintRect = lastRepaintRect;
+        self.fire('repaint', {}, false);
+        return self;
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       renderHtml: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        var settings = self$$1.settings;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        var settings = self.settings;
</ins><span class="cx" style="display: block; padding: 0 10px">         var attrs, elm;
</span><span class="cx" style="display: block; padding: 0 10px">         attrs = {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          id: self$$1._id,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          id: self._id,
</ins><span class="cx" style="display: block; padding: 0 10px">           hidefocus: '1'
</span><span class="cx" style="display: block; padding: 0 10px">         };
</span><span class="cx" style="display: block; padding: 0 10px">         global$4.each([
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -9669,10 +9671,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">           'placeholder',
</span><span class="cx" style="display: block; padding: 0 10px">           'required',
</span><span class="cx" style="display: block; padding: 0 10px">           'multiple'
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        ], function (name$$1) {
-          attrs[name$$1] = settings[name$$1];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        ], function (name) {
+          attrs[name] = settings[name];
</ins><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (self$$1.disabled()) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (self.disabled()) {
</ins><span class="cx" style="display: block; padding: 0 10px">           attrs.disabled = 'disabled';
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (settings.subtype) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -9679,8 +9681,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">           attrs.type = settings.subtype;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         elm = funcs.create(settings.multiline ? 'textarea' : 'input', attrs);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        elm.value = self$$1.state.get('value');
-        elm.className = self$$1.classes.toString();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        elm.value = self.state.get('value');
+        elm.className = self.classes.toString();
</ins><span class="cx" style="display: block; padding: 0 10px">         return elm.outerHTML;
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       value: function (value) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -9694,25 +9696,25 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return this.state.get('value');
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       postRender: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        self$$1.getEl().value = self$$1.state.get('value');
-        self$$1._super();
-        self$$1.$el.on('change', function (e) {
-          self$$1.state.set('value', e.target.value);
-          self$$1.fire('change', e);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        self.getEl().value = self.state.get('value');
+        self._super();
+        self.$el.on('change', function (e) {
+          self.state.set('value', e.target.value);
+          self.fire('change', e);
</ins><span class="cx" style="display: block; padding: 0 10px">         });
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       bindStates: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        self$$1.state.on('change:value', function (e) {
-          if (self$$1.getEl().value !== e.value) {
-            self$$1.getEl().value = e.value;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        self.state.on('change:value', function (e) {
+          if (self.getEl().value !== e.value) {
+            self.getEl().value = e.value;
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.state.on('change:disabled', function (e) {
-          self$$1.getEl().disabled = e.value;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.state.on('change:disabled', function (e) {
+          self.getEl().disabled = e.value;
</ins><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return self$$1._super();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return self._super();
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       remove: function () {
</span><span class="cx" style="display: block; padding: 0 10px">         this.$el.off();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -9735,7 +9737,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         Movable: Movable,
</span><span class="cx" style="display: block; padding: 0 10px">         Resizable: Resizable,
</span><span class="cx" style="display: block; padding: 0 10px">         FloatPanel: FloatPanel,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        Window: Window$$1,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        Window: Window,
</ins><span class="cx" style="display: block; padding: 0 10px">         MessageBox: MessageBox,
</span><span class="cx" style="display: block; padding: 0 10px">         Tooltip: Tooltip,
</span><span class="cx" style="display: block; padding: 0 10px">         Widget: Widget,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -9817,5 +9819,5 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     return Theme;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-}());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+}(window));
</ins><span class="cx" style="display: block; padding: 0 10px"> })();
</span></span></pre></div>
<a id="trunksrcjs_enqueuesvendortinymcethemesinlitethememinjs"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/js/_enqueues/vendor/tinymce/themes/inlite/theme.min.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/js/_enqueues/vendor/tinymce/themes/inlite/theme.min.js  2019-05-15 19:53:42 UTC (rev 45315)
+++ trunk/src/js/_enqueues/vendor/tinymce/themes/inlite/theme.min.js    2019-05-15 23:44:37 UTC (rev 45316)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1 +1 @@
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-!function(){"use strict";var u,t,e,n,i,r,o=tinymce.util.Tools.resolve("tinymce.ThemeManager"),h=tinymce.util.Tools.resolve("tinymce.Env"),v=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),c=tinymce.util.Tools.resolve("tinymce.util.Delay"),s=function(t){return t.reduce(function(t,e){return Array.isArray(e)?t.concat(s(e)):t.concat(e)},[])},a={flatten:s},l=function(t,e){for(var n=0;n<e.length;n++){var i=(0,e[n])(t);if(i)return i}return null},d=function(t,e){return{id:t,rect:e}},f=function(t){return{x:t.left,y:t.top,w:t.width,h:t.height}},m=function(t){return{left:t.x,top:t.y,width:t.w,height:t.h,right:t.x+t.w,bottom:t.y+t.h}},g=function(t){var e=v.DOM.getViewPort();return{x:t.x+e.x,y:t.y+e.y,w:t.w,h:t.h}},p=function(t){var e=t.getBoundingClientRect();return g({x:e.left,y:e.top,w:Math.max(t.clientWidth,t.offsetWidth),h:Math.max(t.client
 Height,t.offsetHeight)})},b=function(t,e){return p(e)},y=function(t){return p(t.getContentAreaContainer()||t.getBody())},x=function(t){var e=t.selection.getBoundingClientRect();return e?g(f(e)):null},w=function(n,i){return function(t){for(var e=0;e<i.length;e++)if(i[e].predicate(n))return d(i[e].id,b(t,n));return null}},_=function(i,r){return function(t){for(var e=0;e<i.length;e++)for(var n=0;n<r.length;n++)if(r[n].predicate(i[e]))return d(r[n].id,b(t,i[e]));return null}},R=tinymce.util.Tools.resolve("tinymce.util.Tools"),C=function(t,e){return{id:t,predicate:e}},k=function(t){return R.map(t,function(t){return C(t.id,t.predicate)})},E=function(e){return function(t){return t.selection.isCollapsed()?null:d(e,x(t))}},H=function(i,r){return function(t){var e,n=t.schema.getTextBlockElements();for(e=0;e<i.length;e++)if("TABLE"===i[e].nodeName)return null;for(e=0;e<i.length;e++)if(i[e].nodeName in n)return t.dom.isEmpty(i[e])?d(r,x(t)):null;return null}},
 T=function(t){t.fire("SkinLoaded")},S=function(t){return t.fire("BeforeRenderUI")},M=tinymce.util.Tools.resolve("tinymce.EditorManager"),N=function(e){return function(t){return typeof t===e}},O=function(t){return Array.isArray(t)},P=function(t){return N("string")(t)},W=function(t){return N("number")(t)},D=function(t){return N("boolean")(t)},A=function(t){return N("function")(t)},B=(N("object"),O),L=function(t,e){if(e(t))return!0;throw new Error("Default value doesn't match requested type.")},I=function(r){return function(t,e,n){var i=t.settings;return L(n,r),e in i&&r(i[e])?i[e]:n}},z={getStringOr:I(P),getBoolOr:I(D),getNumberOr:I(W),getHandlerOr:I(A),getToolbarItemsOr:(u=B,function(t,e,n){var i,r,o,s,a,l=e in t.settings?t.settings[e]:n;return L(n,u),r=n,B(i=l)?i:P(i)?"string"==typeof(s=i)?(a=/[ ,]/,s.split(a).filter(function(t){return 0<t.length})):s:D(i)?(o=r,!1===i?[]:o)
 :r})},F=tinymce.util.Tools.resolve("tinymce.geom.Rect"),U=function(t,e){return{rect:t,position:e}},V=function(t,e){return{x:e.x,y:e.y,w:t.w,h:t.h}},q=function(t,e,n,i,r){var o,s,a,l={x:i.x,y:i.y,w:i.w+(i.w<r.w+n.w?r.w:0),h:i.h+(i.h<r.h+n.h?r.h:0)};return o=F.findBestRelativePosition(r,n,l,t),n=F.clamp(n,l),o?(s=F.relativePosition(r,n,o),a=V(r,s),U(a,o)):(n=F.intersect(l,n))?((o=F.findBestRelativePosition(r,n,l,e))?(s=F.relativePosition(r,n,o),a=V(r,s)):a=V(r,n),U(a,o)):null},Y=function(t,e,n){return q(["cr-cl","cl-cr"],["bc-tc","bl-tl","br-tr"],t,e,n)},$=function(t,e,n){return q(["tc-bc","bc-tc","tl-bl","bl-tl","tr-br","br-tr","cr-cl","cl-cr"],["bc-tc","bl-tl","br-tr","cr-cl"],t,e,n)},X=function(t,e,n,i){var r;return"function"==typeof t?(r=t({elementRect:m(e),contentAreaRect:m(n),panelRect:
 m(i)}),f(r)):i},j=function(t){return t.panelRect},J=function(t){return z.getToolbarItemsOr(t,"selection_toolbar",["bold","italic","|","quicklink","h2","h3","blockquote"])},G=function(t){return z.getToolbarItemsOr(t,"insert_toolbar",["quickimage","quicktable"])},K=function(t){return z.getHandlerOr(t,"inline_toolbar_position_handler",j)},Z=function(t){var e,n,i,r,o=t.settings;return o.skin_url?(i=t,r=o.skin_url,i.documentBaseURI.toAbsolute(r)):(e=o.skin,n=M.baseURL+"/skins/",e?n+e:n+"lightgray")},Q=function(t){return!1===t.settings.skin},tt=function(i,r){var t=Z(i),e=function(){var t,e,n;e=r,n=function(){t._skinLoaded=!0,T(t),e()},(t=i).initialized?n():t.on("init",n)};Q(i)?e():(v.DOM.styleSheetLoader.load(t+"/skin.min.css",e),i.contentCSS.push(t+"/content.inline.min.css"))},et=function(t){var e,n,i,r,o=t.contextToolba
 rs;return a.flatten([o||[],(e=t,n="img",i="image",r="alignleft aligncenter alignright",{predicate:function(t){return e.dom.is(t,n)},id:i,items:r})])},nt=function(t,e){var n,i,r,o,s;return s=(o=t).selection.getNode(),i=o.dom.getParents(s,"*"),r=k(e),(n=l(t,[w(i[0],r),E("text"),H(i,"insert"),_(i,r)]))&&n.rect?n:null},it=function(i,r){return function(){var t,e,n;i.removed||(n=i,document.activeElement!==n.getBody())||(t=et(i),(e=nt(i,t))?r.show(i,e.id,e.rect,t):r.hide())}},rt=function(t,e){var n,i,r,o,s,a=c.throttle(it(t,e),0),l=c.throttle((r=it(n=t,i=e),function(){n.removed||i.inForm()||r()}),0),u=(o=t,s=e,function(){var t=et(o),e=nt(o,t);e&&s.reposition(o,e.id,e.rect)});t.on("blur hide ObjectResizeStart",e.hide),t.on("click",a),t.on("nodeChange mouseup",l),t.on("ResizeEditor keyup",a),t.on("ResizeWindow",u),v.DOM.bind(h.container,"scroll",u),t.on(&quo
 t;remove",function(){v.DOM.unbind(h.container,"scroll",u),e.remove()}),t.shortcuts.add("Alt+F10,F10","",e.focus)},ot=function(t,e){return tt(t,function(){var n,i;rt(t,e),i=e,(n=t).shortcuts.remove("meta+k"),n.shortcuts.add("meta+k","",function(){var t=et(n),e=l(n,[E("quicklink")]);e&&i.show(n,e.id,e.rect,t)})}),{}},st=function(t,e){return t.inline?ot(t,e):function(t){throw new Error(t)}("inlite theme only supports inline mode.")},at=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e]},lt=function(t){return function(){return t}},ut=lt(!1),ct=lt(!0),dt=ut,ft=ct,ht=function(){return mt},mt=(i={fold:function(t,e){return t()},is:dt,isSome:dt,isNone:ft,getOr:n=function(t){return t},getOrThunk:e=function(t){return t()},getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:function(){return null},getOrUndefined:function(){return undefined
 },or:n,orThunk:e,map:ht,ap:ht,each:function(){},bind:ht,flatten:ht,exists:dt,forall:ft,filter:ht,equals:t=function(t){return t.isNone()},equals_:t,toArray:function(){return[]},toString:lt("none()")},Object.freeze&&Object.freeze(i),i),gt=function(n){var t=function(){return n},e=function(){return r},i=function(t){return t(n)},r={fold:function(t,e){return e(n)},is:function(t){return n===t},isSome:ft,isNone:dt,getOr:t,getOrThunk:t,getOrDie:t,getOrNull:t,getOrUndefined:t,or:e,orThunk:e,map:function(t){return gt(t(n))},ap:function(t){return t.fold(ht,function(t){return gt(t(n))})},each:function(t){t(n)},bind:i,flatten:t,exists:i,forall:i,filter:function(t){return t(n)?r:mt},equals:function(t){return t.is(n)},equals_:function(t,e){return t.fold(dt,function(t){return e(n,t)})},toArray:function(){return[n]},toString:function(){return"some("+n+")"}};return r},pt={some:gt,none:ht,from:function(t){return null===t||t===undefined?mt:gt(t)}},vt=function(e){ret
 urn function(t){return function(t){if(null===t)return"null";var e=typeof t;return"object"===e&&Array.prototype.isPrototypeOf(t)?"array":"object"===e&&String.prototype.isPrototypeOf(t)?"string":e}(t)===e}},bt=vt("function"),yt=vt("number"),xt=(r=Array.prototype.indexOf)===undefined?function(t,e){return Et(t,e)}:function(t,e){return r.call(t,e)},wt=function(t,e){return kt(t,e).isSome()},_t=function(t,e){for(var n=t.length,i=new Array(n),r=0;r<n;r++){var o=t[r];i[r]=e(o,r,t)}return i},Rt=function(t,e){for(var n=0,i=t.length;n<i;n++)e(t[n],n,t)},Ct=function(t,e){for(var n=[],i=0,r=t.length;i<r;i++){var o=t[i];e(o,i,t)&&n.push(o)}return n},kt=function(t,e){for(var n=0,i=t.length;n<i;n++)if(e(t[n],n,t))return pt.some(n);return pt.none()},Et=function(t,e){for(var n=0,i=t.length;n<i;++n)if(t[n]===e)return n;return-1},Ht=Array.prototype.push,Tt=(Array.prototype.slice,bt(Array.from)&am
 p;&Array.from,0),St={id:function(){return"mceu_"+Tt++},create:function(t,e,n){var i=document.createElement(t);return v.DOM.setAttribs(i,e),"string"==typeof n?i.innerHTML=n:R.each(n,function(t){t.nodeType&&i.appendChild(t)}),i},createFragment:function(t){return v.DOM.createFragment(t)},getWindowSize:function(){return v.DOM.getViewPort()},getSize:function(t){var e,n;if(t.getBoundingClientRect){var i=t.getBoundingClientRect();e=Math.max(i.width||i.right-i.left,t.offsetWidth),n=Math.max(i.height||i.bottom-i.bottom,t.offsetHeight)}else e=t.offsetWidth,n=t.offsetHeight;return{width:e,height:n}},getPos:function(t,e){return v.DOM.getPos(t,e||St.getContainer())},getContainer:function(){return h.container?h.container:document.body},getViewPort:function(t){return v.DOM.getViewPort(t)},get:function(t){return document.getElementById(t)},addClass:function(t,e){return v.DOM.addClass(t,e)},removeClass:function(t,e){return v.DOM.removeClass(t,e)},hasClass:function(t,e
 ){return v.DOM.hasClass(t,e)},toggleClass:function(t,e,n){return v.DOM.toggleClass(t,e,n)},css:function(t,e,n){return v.DOM.setStyle(t,e,n)},getRuntimeStyle:function(t,e){return v.DOM.getStyle(t,e,!0)},on:function(t,e,n,i){return v.DOM.bind(t,e,n,i)},off:function(t,e,n){return v.DOM.unbind(t,e,n)},fire:function(t,e,n){return v.DOM.fire(t,e,n)},innerHtml:function(t,e){v.DOM.setHTML(t,e)}},Mt=tinymce.util.Tools.resolve("tinymce.dom.DomQuery"),Nt=tinymce.util.Tools.resolve("tinymce.util.Class"),Ot=tinymce.util.Tools.resolve("tinymce.util.EventDispatcher"),Pt=function(t){var e;if(t)return"number"==typeof t?{top:t=t||0,left:t,bottom:t,right:t}:(1===(e=(t=t.split(" ")).length)?t[1]=t[2]=t[3]=t[0]:2===e?(t[2]=t[0],t[3]=t[1]):3===e&&(t[3]=t[1]),{top:parseInt(t[0],10)||0,right:parseInt(t[1],10)||0,bottom:parseInt(t[2],10)||0,left:parseInt(t[3],10)||0})},Wt=function(i,t){function e(t){var e=parseFloat(function(t){var e=i.ownerDocument.
 defaultView;if(e){var n=e.getComputedStyle(i,null);return n?(t=t.replace(/[A-Z]/g,function(t){return"-"+t}),n.getPropertyValue(t)):null}return i.currentStyle[t]}(t));return isNaN(e)?0:e}return{top:e(t+"TopWidth"),right:e(t+"RightWidth"),bottom:e(t+"BottomWidth"),left:e(t+"LeftWidth")}};function Dt(){}function At(t){this.cls=[],this.cls._map={},this.onchange=t||Dt,this.prefix=""}R.extend(At.prototype,{add:function(t){return t&&!this.contains(t)&&(this.cls._map[t]=!0,this.cls.push(t),this._change()),this},remove:function(t){if(this.contains(t)){var e=void 0;for(e=0;e<this.cls.length&&this.cls[e]!==t;e++);this.cls.splice(e,1),delete this.cls._map[t],this._change()}return this},toggle:function(t,e){var n=this.contains(t);return n!==e&&(n?this.remove(t):this.add(t),this._change()),this},contains:function(t){return!!this.cls._map[t]},_change:function(){delete this.clsValue,this.onchange.call(thi
 s)}}),At.prototype.toString=function(){var t;if(this.clsValue)return this.clsValue;t="";for(var e=0;e<this.cls.length;e++)0<e&&(t+=" "),t+=this.prefix+this.cls[e];return t};var Bt,Lt,It,zt=/^([\w\\*]+)?(?:#([\w\-\\]+))?(?:\.([\w\\\.]+))?(?:\[\@?([\w\\]+)([\^\$\*!~]?=)([\w\\]+)\])?(?:\:(.+))?/i,Ft=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,Ut=/^\s*|\s*$/g,Vt=Nt.extend({init:function(t){var o=this.match;function s(t,e,n){var i;function r(t){t&&e.push(t)}return r(function(e){if(e)return e=e.toLowerCase(),function(t){return"*"===e||t.type===e}}((i=zt.exec(t.replace(Ut,"")))[1])),r(function(e){if(e)return function(t){return t._name===e}}(i[2])),r(function(n){if(n)return n=n.split("."),function(t){for(var e=n.length;e--;)if(!t.classes.contains(n[e]))return!1;return!0}}(i[3])),r(function(n,i,r){if(n)retu
 rn function(t){var e=t[n]?t[n]():"";return i?"="===i?e===r:"*="===i?0<=e.indexOf(r):"~="===i?0<=(" "+e+" ").indexOf(" "+r+" "):"!="===i?e!==r:"^="===i?0===e.indexOf(r):"$="===i&&e.substr(e.length-r.length)===r:!!r}}(i[4],i[5],i[6])),r(function(i){var e;if(i)return(i=/(?:not\((.+)\))|(.+)/i.exec(i))[1]?(e=a(i[1],[]),function(t){return!o(t,e)}):(i=i[2],function(t,e,n){return"first"===i?0===e:"last"===i?e===n-1:"even"===i?e%2==0:"odd"===i?e%2==1:!!t[i]&&t[i]()})}(i[7])),e.pseudo=!!i[7],e.direct=n,e}function a(t,e){var n,i,r,o=[];do{if(Ft.exec(""),(i=Ft.exec(t))&&(t=i[3],o.push(i[1]),i[2])){n=i[3];break}}while(i);for(n&&a(n,e),t=[],r=0;r<o.length;r++)">"!==o[r]&&t.push(s(o[r],[],">"===o[r-1]));return e.push(t),e}this._selectors=a(t,[])},match:function(t,e)
 {var n,i,r,o,s,a,l,u,c,d,f,h,m;for(n=0,i=(e=e||this._selectors).length;n<i;n++){for(m=t,h=0,r=(o=(s=e[n]).length)-1;0<=r;r--)for(u=s[r];m;){if(u.pseudo)for(c=d=(f=m.parent().items()).length;c--&&f[c]!==m;);for(a=0,l=u.length;a<l;a++)if(!u[a](m,c,d)){a=l+1;break}if(a===l){h++;break}if(r===o-1)break;m=m.parent()}if(h===o)return!0}return!1},find:function(t){var e,n,u=[],i=this._selectors;function c(t,e,n){var i,r,o,s,a,l=e[n];for(i=0,r=t.length;i<r;i++){for(a=t[i],o=0,s=l.length;o<s;o++)if(!l[o](a,i,r)){o=s+1;break}if(o===s)n===e.length-1?u.push(a):a.items&&c(a.items(),e,n+1);else if(l.direct)return;a.items&&c(a.items(),e,n)}}if(t.items){for(e=0,n=i.length;e<n;e++)c(t.items(),i[e],0);1<n&&(u=function(t){for(var e,n=[],i=t.length;i--;)(e=t[i]).__checked||(n.push(e),e.__checked=1);for(i=n.length;i--;)delete n[i].__checked;return n}(u))}return Bt||(Bt=Vt.Collection),new Bt(u)}}),qt=Array.prototype.push,Yt=Array.prototype.slice;It={lengt
 h:0,init:function(t){t&&this.add(t)},add:function(t){return R.isArray(t)?qt.apply(this,t):t instanceof Lt?this.add(t.toArray()):qt.call(this,t),this},set:function(t){var e,n=this,i=n.length;for(n.length=0,n.add(t),e=n.length;e<i;e++)delete n[e];return n},filter:function(e){var t,n,i,r,o=[];for("string"==typeof e?(e=new Vt(e),r=function(t){return e.match(t)}):r=e,t=0,n=this.length;t<n;t++)r(i=this[t])&&o.push(i);return new Lt(o)},slice:function(){return new Lt(Yt.apply(this,arguments))},eq:function(t){return-1===t?this.slice(t):this.slice(t,+t+1)},each:function(t){return R.each(this,t),this},toArray:function(){return R.toArray(this)},indexOf:function(t){for(var e=this.length;e--&&this[e]!==t;);return e},reverse:function(){return new Lt(R.toArray(this).reverse())},hasClass:function(t){return!!this[0]&&this[0].classes.contains(t)},prop:function(e,n){var t;return n!==undefined?(this.each(function(t){t[e]&&t[e](n)}),this):(t=this[0]
 )&&t[e]?t[e]():void 0},exec:function(e){var n=R.toArray(arguments).slice(1);return this.each(function(t){t[e]&&t[e].apply(t,n)}),this},remove:function(){for(var t=this.length;t--;)this[t].remove();return this},addClass:function(e){return this.each(function(t){t.classes.add(e)})},removeClass:function(e){return this.each(function(t){t.classes.remove(e)})}},R.each("fire on off show hide append prepend before after reflow".split(" "),function(n){It[n]=function(){var e=R.toArray(arguments);return this.each(function(t){n in t&&t[n].apply(t,e)}),this}}),R.each("text name disabled active selected checked visible parent value data".split(" "),function(e){It[e]=function(t){return this.prop(e,t)}}),Lt=Nt.extend(It);var $t=Vt.Collection=Lt,Xt=function(t){this.create=t.create};Xt.create=function(r,o){return new Xt({create:function(e,n){var i,t=function(t){e.set(n,t.value)};return e.on("change:"+n,function(t){r.set(o,t.valu
 e)}),r.on("change:"+o,t),(i=e._bindings)||(i=e._bindings=[],e.on("destroy",function(){for(var t=i.length;t--;)i[t]()})),i.push(function(){r.off("change:"+o,t)}),r.get(o)}})};var jt=tinymce.util.Tools.resolve("tinymce.util.Observable");function Jt(t){return 0<t.nodeType}var Gt,Kt,Zt=Nt.extend({Mixins:[jt],init:function(t){var e,n;for(e in t=t||{})(n=t[e])instanceof Xt&&(t[e]=n.create(this,e));this.data=t},set:function(e,n){var i,r,o=this.data[e];if(n instanceof Xt&&(n=n.create(this,e)),"object"==typeof e){for(i in e)this.set(i,e[i]);return this}return function t(e,n){var i,r;if(e===n)return!0;if(null===e||null===n)return e===n;if("object"!=typeof e||"object"!=typeof n)return e===n;if(R.isArray(n)){if(e.length!==n.length)return!1;for(i=e.length;i--;)if(!t(e[i],n[i]))return!1}if(Jt(e)||Jt(n))return e===n;for(i in r={},n){if(!t(e[i],n[i]))return!1;r[i]=!0}for(i in e)if(!r[i]&&!t(e[i],n[i]))r
 eturn!1;return!0}(o,n)||(this.data[e]=n,r={target:this,name:e,value:n,oldValue:o},this.fire("change:"+e,r),this.fire("change",r)),this},get:function(t){return this.data[t]},has:function(t){return t in this.data},bind:function(t){return Xt.create(this,t)},destroy:function(){this.fire("destroy")}}),Qt={},te={add:function(t){var e=t.parent();if(e){if(!e._layout||e._layout.isNative())return;Qt[e._id]||(Qt[e._id]=e),Gt||(Gt=!0,c.requestAnimationFrame(function(){var t,e;for(t in Gt=!1,Qt)(e=Qt[t]).state.get("rendered")&&e.reflow();Qt={}},document.body))}},remove:function(t){Qt[t._id]&&delete Qt[t._id]}},ee=function(t){return t?t.getRoot().uiContainer:null},ne={getUiContainerDelta:function(t){var e=ee(t);if(e&&"static"!==v.DOM.getStyle(e,"position",!0)){var n=v.DOM.getPos(e),i=e.scrollLeft-n.x,r=e.scrollTop-n.y;return pt.some({x:i,y:r})}return pt.none()},setUiContainer:function(t,e){var n=v.DOM.select(t.set
 tings.ui_container)[0];e.getRoot().uiContainer=n},getUiContainer:ee,inheritUiContainer:function(t,e){return e.uiContainer=ee(t)}},ie="onmousewheel"in document,re=!1,oe=0,se={Statics:{classPrefix:"mce-"},isRtl:function(){return Kt.rtl},classPrefix:"mce-",init:function(e){var t,n,i=this;function r(t){var e;for(t=t.split(" "),e=0;e<t.length;e++)i.classes.add(t[e])}i.settings=e=R.extend({},i.Defaults,e),i._id=e.id||"mceu_"+oe++,i._aria={role:e.role},i._elmCache={},i.$=Mt,i.state=new Zt({visible:!0,active:!1,disabled:!1,value:""}),i.data=new Zt(e.data),i.classes=new At(function(){i.state.get("rendered")&&(i.getEl().className=this.toString())}),i.classes.prefix=i.classPrefix,(t=e.classes)&&(i.Defaults&&(n=i.Defaults.classes)&&t!==n&&r(n),r(t)),R.each("title text name visible disabled active value".split(" "),function(t){t in e&&i[t](e[t])}),i.on(&quo
 t;click",function(){if(i.disabled())return!1}),i.settings=e,i.borderBox=Pt(e.border),i.paddingBox=Pt(e.padding),i.marginBox=Pt(e.margin),e.hidden&&i.hide()},Properties:"parent,name",getContainerElm:function(){var t=ne.getUiContainer(this);return t||St.getContainer()},getParentCtrl:function(t){for(var e,n=this.getRoot().controlIdLookup;t&&n&&!(e=n[t.id]);)t=t.parentNode;return e},initLayoutRect:function(){var t,e,n,i,r,o,s,a,l,u,c=this,d=c.settings,f=c.getEl();t=c.borderBox=c.borderBox||Wt(f,"border"),c.paddingBox=c.paddingBox||Wt(f,"padding"),c.marginBox=c.marginBox||Wt(f,"margin"),u=St.getSize(f),a=d.minWidth,l=d.minHeight,r=a||u.width,o=l||u.height,n=d.width,i=d.height,s=void 0!==(s=d.autoResize)?s:!n&&!i,n=n||r,i=i||o;var h=t.left+t.right,m=t.top+t.bottom,g=d.maxWidth||65535,p=d.maxHeight||65535;return c._layoutRect=e={x:d.x||0,y:d.y||0,w:n,h:i,deltaW:h,deltaH:m,contentW:n-h,contentH:i-m,innerW:n-h,inner
 H:i-m,startMinWidth:a||0,startMinHeight:l||0,minW:Math.min(r,g),minH:Math.min(o,p),maxW:g,maxH:p,autoResize:s,scrollW:0},c._lastLayoutRect={},e},layoutRect:function(t){var e,n,i,r,o,s=this,a=s._layoutRect;return a||(a=s.initLayoutRect()),t?(i=a.deltaW,r=a.deltaH,t.x!==undefined&&(a.x=t.x),t.y!==undefined&&(a.y=t.y),t.minW!==undefined&&(a.minW=t.minW),t.minH!==undefined&&(a.minH=t.minH),(n=t.w)!==undefined&&(n=(n=n<a.minW?a.minW:n)>a.maxW?a.maxW:n,a.w=n,a.innerW=n-i),(n=t.h)!==undefined&&(n=(n=n<a.minH?a.minH:n)>a.maxH?a.maxH:n,a.h=n,a.innerH=n-r),(n=t.innerW)!==undefined&&(n=(n=n<a.minW-i?a.minW-i:n)>a.maxW-i?a.maxW-i:n,a.innerW=n,a.w=n+i),(n=t.innerH)!==undefined&&(n=(n=n<a.minH-r?a.minH-r:n)>a.maxH-r?a.maxH-r:n,a.innerH=n,a.h=n+r),t.contentW!==undefined&&(a.contentW=t.contentW),t.contentH!==undefined&&(a.contentH=t.contentH),(e=s._lastLayoutRect).x===a.x&&e.y===a.y&&
 amp;e.w===a.w&&e.h===a.h||((o=Kt.repaintControls)&&o.map&&!o.map[s._id]&&(o.push(s),o.map[s._id]=!0),e.x=a.x,e.y=a.y,e.w=a.w,e.h=a.h),s):a},repaint:function(){var t,e,n,i,r,o,s,a,l,u,c=this;l=document.createRange?function(t){return t}:Math.round,t=c.getEl().style,i=c._layoutRect,a=c._lastRepaintRect||{},o=(r=c.borderBox).left+r.right,s=r.top+r.bottom,i.x!==a.x&&(t.left=l(i.x)+"px",a.x=i.x),i.y!==a.y&&(t.top=l(i.y)+"px",a.y=i.y),i.w!==a.w&&(u=l(i.w-o),t.width=(0<=u?u:0)+"px",a.w=i.w),i.h!==a.h&&(u=l(i.h-s),t.height=(0<=u?u:0)+"px",a.h=i.h),c._hasBody&&i.innerW!==a.innerW&&(u=l(i.innerW),(n=c.getEl("body"))&&((e=n.style).width=(0<=u?u:0)+"px"),a.innerW=i.innerW),c._hasBody&&i.innerH!==a.innerH&&(u=l(i.innerH),(n=n||c.getEl("body"))&&((e=e||n.style).height=(0<=u?u:0)+"px"),a.innerH=i.i
 nnerH),c._lastRepaintRect=a,c.fire("repaint",{},!1)},updateLayoutRect:function(){var t=this;t.parent()._lastRect=null,St.css(t.getEl(),{width:"",height:""}),t._layoutRect=t._lastRepaintRect=t._lastLayoutRect=null,t.initLayoutRect()},on:function(t,e){var n,i,r,o=this;return ae(o).on(t,"string"!=typeof(n=e)?n:function(t){return i||o.parentsAndSelf().each(function(t){var e=t.settings.callbacks;if(e&&(i=e[n]))return r=t,!1}),i?i.call(r,t):(t.action=n,void this.fire("execute",t))}),o},off:function(t,e){return ae(this).off(t,e),this},fire:function(t,e,n){if((e=e||{}).control||(e.control=this),e=ae(this).fire(t,e),!1!==n&&this.parent)for(var i=this.parent();i&&!e.isPropagationStopped();)i.fire(t,e,!1),i=i.parent();return e},hasEventListeners:function(t){return ae(this).has(t)},parents:function(t){var e,n=new $t;for(e=this.parent();e;e=e.parent())n.add(e);return t&&(n=n.filter(t)),n},parentsAndSelf:function(t)
 {return new $t(this).add(this.parents(t))},next:function(){var t=this.parent().items();return t[t.indexOf(this)+1]},prev:function(){var t=this.parent().items();return t[t.indexOf(this)-1]},innerHtml:function(t){return this.$el.html(t),this},getEl:function(t){var e=t?this._id+"-"+t:this._id;return this._elmCache[e]||(this._elmCache[e]=Mt("#"+e)[0]),this._elmCache[e]},show:function(){return this.visible(!0)},hide:function(){return this.visible(!1)},focus:function(){try{this.getEl().focus()}catch(t){}return this},blur:function(){return this.getEl().blur(),this},aria:function(t,e){var n=this,i=n.getEl(n.ariaTarget);return void 0===e?n._aria[t]:(n._aria[t]=e,n.state.get("rendered")&&i.setAttribute("role"===t?t:"aria-"+t,e),n)},encode:function(t,e){return!1!==e&&(t=this.translate(t)),(t||"").replace(/[&<>"]/g,function(t){return"&#"+t.charCodeAt(0)+";"})},translate:function(t)
 {return Kt.translate?Kt.translate(t):t},before:function(t){var e=this.parent();return e&&e.insert(t,e.items().indexOf(this),!0),this},after:function(t){var e=this.parent();return e&&e.insert(t,e.items().indexOf(this)),this},remove:function(){var e,t,n=this,i=n.getEl(),r=n.parent();if(n.items){var o=n.items().toArray();for(t=o.length;t--;)o[t].remove()}r&&r.items&&(e=[],r.items().each(function(t){t!==n&&e.push(t)}),r.items().set(e),r._lastRect=null),n._eventsRoot&&n._eventsRoot===n&&Mt(i).off();var s=n.getRoot().controlIdLookup;return s&&delete s[n._id],i&&i.parentNode&&i.parentNode.removeChild(i),n.state.set("rendered",!1),n.state.destroy(),n.fire("remove"),n},renderBefore:function(t){return Mt(t).before(this.renderHtml()),this.postRender(),this},renderTo:function(t){return Mt(t||this.getContainerElm()).append(this.renderHtml()),this.postRender(),this},preRender:function(){},render:fu
 nction(){},renderHtml:function(){return'<div id="'+this._id+'" class="'+this.classes+'"></div>'},postRender:function(){var t,e,n,i,r,o=this,s=o.settings;for(i in o.$el=Mt(o.getEl()),o.state.set("rendered",!0),s)0===i.indexOf("on")&&o.on(i.substr(2),s[i]);if(o._eventsRoot){for(n=o.parent();!r&&n;n=n.parent())r=n._eventsRoot;if(r)for(i in r._nativeEvents)o._nativeEvents[i]=!0}le(o),s.style&&(t=o.getEl())&&(t.setAttribute("style",s.style),t.style.cssText=s.style),o.settings.border&&(e=o.borderBox,o.$el.css({"border-top-width":e.top,"border-right-width":e.right,"border-bottom-width":e.bottom,"border-left-width":e.left}));var a=o.getRoot();for(var l in a.controlIdLookup||(a.controlIdLookup={}),(a.controlIdLookup[o._id]=o)._aria)o.aria(l,o._aria[l]);!1===o.state.get("visible")&&(o.getEl().style.display="none"),o.bindState
 s(),o.state.on("change:visible",function(t){var e,n=t.value;o.state.get("rendered")&&(o.getEl().style.display=!1===n?"none":"",o.getEl().getBoundingClientRect()),(e=o.parent())&&(e._lastRect=null),o.fire(n?"show":"hide"),te.add(o)}),o.fire("postrender",{},!1)},bindStates:function(){},scrollIntoView:function(t){var e,n,i,r,o,s,a=this.getEl(),l=a.parentNode,u=function(t,e){var n,i,r=t;for(n=i=0;r&&r!==e&&r.nodeType;)n+=r.offsetLeft||0,i+=r.offsetTop||0,r=r.offsetParent;return{x:n,y:i}}(a,l);return e=u.x,n=u.y,i=a.offsetWidth,r=a.offsetHeight,o=l.clientWidth,s=l.clientHeight,"end"===t?(e-=o-i,n-=s-r):"center"===t&&(e-=o/2-i/2,n-=s/2-r/2),l.scrollLeft=e,l.scrollTop=n,this},getRoot:function(){for(var t,e=this,n=[];e;){if(e.rootControl){t=e.rootControl;break}n.push(e),e=(t=e).parent()}t||(t=this);for(var i=n.length;i--;)n[i].rootControl=t;return t},reflow:funct
 ion(){te.remove(this);var t=this.parent();return t&&t._layout&&!t._layout.isNative()&&t.reflow(),this}};function ae(n){return n._eventDispatcher||(n._eventDispatcher=new Ot({scope:n,toggleEvent:function(t,e){e&&Ot.isNative(t)&&(n._nativeEvents||(n._nativeEvents={}),n._nativeEvents[t]=!0,n.state.get("rendered")&&le(n))}})),n._eventDispatcher}function le(a){var t,e,n,l,i,r;function o(t){var e=a.getParentCtrl(t.target);e&&e.fire(t.type,t)}function s(){var t=l._lastHoverCtrl;t&&(t.fire("mouseleave",{target:t.getEl()}),t.parents().each(function(t){t.fire("mouseleave",{target:t.getEl()})}),l._lastHoverCtrl=null)}function u(t){var e,n,i,r=a.getParentCtrl(t.target),o=l._lastHoverCtrl,s=0;if(r!==o){if((n=(l._lastHoverCtrl=r).parents().toArray().reverse()).push(r),o){for((i=o.parents().toArray().reverse()).push(o),s=0;s<i.length&&n[s]===i[s];s++);for(e=i.length-1;s<=e;e--)(o=i[e]).fire(
 "mouseleave",{target:o.getEl()})}for(e=s;e<n.length;e++)(r=n[e]).fire("mouseenter",{target:r.getEl()})}}function c(t){t.preventDefault(),"mousewheel"===t.type?(t.deltaY=-.025*t.wheelDelta,t.wheelDeltaX&&(t.deltaX=-.025*t.wheelDeltaX)):(t.deltaX=0,t.deltaY=t.detail),t=a.fire("wheel",t)}if(i=a._nativeEvents){for((n=a.parents().toArray()).unshift(a),t=0,e=n.length;!l&&t<e;t++)l=n[t]._eventsRoot;for(l||(l=n[n.length-1]||a),a._eventsRoot=l,e=t,t=0;t<e;t++)n[t]._eventsRoot=l;var d=l._delegates;for(r in d||(d=l._delegates={}),i){if(!i)return!1;"wheel"!==r||re?("mouseenter"===r||"mouseleave"===r?l._hasMouseEnter||(Mt(l.getEl()).on("mouseleave",s).on("mouseover",u),l._hasMouseEnter=1):d[r]||(Mt(l.getEl()).on(r,o),d[r]=!0),i[r]=!1):ie?Mt(a.getEl()).on("mousewheel",c):Mt(a.getEl()).on("DOMMouseScroll",c)}}}R.each("text title visible disabled active value&q
 uot;.split(" "),function(e){se[e]=function(t){return 0===arguments.length?this.state.get(e):(void 0!==t&&this.state.set(e,t),this)}});var ue=Kt=Nt.extend(se),ce=function(t){return"static"===St.getRuntimeStyle(t,"position")},de=function(t){return t.state.get("fixed")};function fe(t,e,n){var i,r,o,s,a,l,u,c,d,f;return d=he(),o=(r=St.getPos(e,ne.getUiContainer(t))).x,s=r.y,de(t)&&ce(document.body)&&(o-=d.x,s-=d.y),i=t.getEl(),a=(f=St.getSize(i)).width,l=f.height,u=(f=St.getSize(e)).width,c=f.height,"b"===(n=(n||"").split(""))[0]&&(s+=c),"r"===n[1]&&(o+=u),"c"===n[0]&&(s+=Math.round(c/2)),"c"===n[1]&&(o+=Math.round(u/2)),"b"===n[3]&&(s-=l),"r"===n[4]&&(o-=a),"c"===n[3]&&(s-=Math.round(l/2)),"c"===n[4]&&(o-=Math.round(a/2)),{x:o,y:s,w:a,h:l}}var he=function(){var 
 t=window;return{x:Math.max(t.pageXOffset,document.body.scrollLeft,document.documentElement.scrollLeft),y:Math.max(t.pageYOffset,document.body.scrollTop,document.documentElement.scrollTop),w:t.innerWidth||document.documentElement.clientWidth,h:t.innerHeight||document.documentElement.clientHeight}},me=function(t){var e,n=ne.getUiContainer(t);return n&&!de(t)?{x:0,y:0,w:(e=n).scrollWidth-1,h:e.scrollHeight-1}:he()},ge={testMoveRel:function(t,e){for(var n=me(this),i=0;i<e.length;i++){var r=fe(this,t,e[i]);if(de(this)){if(0<r.x&&r.x+r.w<n.w&&0<r.y&&r.y+r.h<n.h)return e[i]}else if(r.x>n.x&&r.x+r.w<n.w+n.x&&r.y>n.y&&r.y+r.h<n.h+n.y)return e[i]}return e[0]},moveRel:function(t,e){"string"!=typeof e&&(e=this.testMoveRel(t,e));var n=fe(this,t,e);return this.moveTo(n.x,n.y)},moveBy:function(t,e){var n=this.layoutRect();return this.moveTo(n.x+t,n.y+e),this},moveTo:function(t,e){var n=this;functio
 n i(t,e,n){return t<0?0:e<t+n&&(t=e-n)<0?0:t}if(n.settings.constrainToViewport){var r=me(this),o=n.layoutRect();t=i(t,r.w+r.x,o.w),e=i(e,r.h+r.y,o.h)}var s=ne.getUiContainer(n);return s&&ce(s)&&!de(n)&&(t-=s.scrollLeft,e-=s.scrollTop),s&&(t+=1,e+=1),n.state.get("rendered")?n.layoutRect({x:t,y:e}).repaint():(n.settings.x=t,n.settings.y=e),n.fire("move",{x:t,y:e}),n}},pe=ue.extend({Mixins:[ge],Defaults:{classes:"widget tooltip tooltip-n"},renderHtml:function(){var t=this,e=t.classPrefix;return'<div id="'+t._id+'" class="'+t.classes+'" role="presentation"><div class="'+e+'tooltip-arrow"></div><div class="'+e+'tooltip-inner">'+t.encode(t.state.get("text"))+"</div></div>"},bindStates:function(){var e=this;return e.state.on("change:text",function(t){e.getEl().lastChild.innerHTML=e.encode(t.value)}
 ),e._super()},repaint:function(){var t,e;t=this.getEl().style,e=this._layoutRect,t.left=e.x+"px",t.top=e.y+"px",t.zIndex=131070}}),ve=ue.extend({init:function(i){var r=this;r._super(i),i=r.settings,r.canFocus=!0,i.tooltip&&!1!==ve.tooltips&&(r.on("mouseenter",function(t){var e=r.tooltip().moveTo(-65535);if(t.control===r){var n=e.text(i.tooltip).show().testMoveRel(r.getEl(),["bc-tc","bc-tl","bc-tr"]);e.classes.toggle("tooltip-n","bc-tc"===n),e.classes.toggle("tooltip-nw","bc-tl"===n),e.classes.toggle("tooltip-ne","bc-tr"===n),e.moveRel(r.getEl(),n)}else e.hide()}),r.on("mouseleave mousedown click",function(){r.tooltip().remove(),r._tooltip=null})),r.aria("label",i.ariaLabel||i.tooltip)},tooltip:function(){return this._tooltip||(this._tooltip=new pe({type:"tooltip"}),ne.inheritUiContainer(this,this._tooltip),this._tooltip
 .renderTo()),this._tooltip},postRender:function(){var t=this,e=t.settings;t._super(),t.parent()||!e.width&&!e.height||(t.initLayoutRect(),t.repaint()),e.autofocus&&t.focus()},bindStates:function(){var e=this;function n(t){e.aria("disabled",t),e.classes.toggle("disabled",t)}function i(t){e.aria("pressed",t),e.classes.toggle("active",t)}return e.state.on("change:disabled",function(t){n(t.value)}),e.state.on("change:active",function(t){i(t.value)}),e.state.get("disabled")&&n(!0),e.state.get("active")&&i(!0),e._super()},remove:function(){this._super(),this._tooltip&&(this._tooltip.remove(),this._tooltip=null)}}),be=ve.extend({Defaults:{value:0},init:function(t){this._super(t),this.classes.add("progress"),this.settings.filter||(this.settings.filter=function(t){return Math.round(t)})},renderHtml:function(){var t=this._id,e=this.classPrefix;return'<div id=&qu
 ot;'+t+'" class="'+this.classes+'"><div class="'+e+'bar-container"><div class="'+e+'bar"></div></div><div class="'+e+'text">0%</div></div>'},postRender:function(){return this._super(),this.value(this.settings.value),this},bindStates:function(){var e=this;function n(t){t=e.settings.filter(t),e.getEl().lastChild.innerHTML=t+"%",e.getEl().firstChild.firstChild.style.width=t+"%"}return e.state.on("change:value",function(t){n(t.value)}),n(e.state.get("value")),e._super()}}),ye=function(t,e){t.getEl().lastChild.textContent=e+(t.progressBar?" "+t.progressBar.value()+"%":"")},xe=ue.extend({Mixins:[ge],Defaults:{classes:"widget notification"},init:function(t){var e=this;e._super(t),e.maxWidth=t.maxWidth,t.text&&e.text(t.text),t.icon&&(e.icon=t.icon),t.color&&(e.color=t.color),t.type&&e.classes
 .add("notification-"+t.type),t.timeout&&(t.timeout<0||0<t.timeout)&&!t.closeButton?e.closeButton=!1:(e.classes.add("has-close"),e.closeButton=!0),t.progressBar&&(e.progressBar=new be),e.on("click",function(t){-1!==t.target.className.indexOf(e.classPrefix+"close")&&e.close()})},renderHtml:function(){var t,e=this,n=e.classPrefix,i="",r="",o="";return e.icon&&(i='<i class="'+n+"ico "+n+"i-"+e.icon+'"></i>'),t=' style="max-width: '+e.maxWidth+"px;"+(e.color?"background-color: "+e.color+';"':'"'),e.closeButton&&(r='<button type="button" class="'+n+'close" aria-hidden="true">\xd7</button>'),e.progressBar&&(o=e.progressBar.renderHtml()),'<div id="'+e._id+'" class="'+e.classes+'"'+t+' role="presentation">'+i+
 '<div class="'+n+'notification-inner">'+e.state.get("text")+"</div>"+o+r+'<div style="clip: rect(1px, 1px, 1px, 1px);height: 1px;overflow: hidden;position: absolute;width: 1px;" aria-live="assertive" aria-relevant="additions" aria-atomic="true"></div></div>'},postRender:function(){var t=this;return c.setTimeout(function(){t.$el.addClass(t.classPrefix+"in"),ye(t,t.state.get("text"))},100),t._super()},bindStates:function(){var e=this;return e.state.on("change:text",function(t){e.getEl().firstChild.innerHTML=t.value,ye(e,t.value)}),e.progressBar&&(e.progressBar.bindStates(),e.progressBar.state.on("change:value",function(t){ye(e,e.state.get("text"))})),e._super()},close:function(){return this.fire("close").isDefaultPrevented()||this.remove(),this},repaint:function(){var t,e;t=this.getEl().style,e=this._layoutRect,t.left=e
 .x+"px",t.top=e.y+"px",t.zIndex=65534}});function we(o){var s=function(t){return t.inline?t.getElement():t.getContentAreaContainer()};return{open:function(t,e){var n,i=R.extend(t,{maxWidth:(n=s(o),St.getSize(n).width)}),r=new xe(i);return 0<(r.args=i).timeout&&(r.timer=setTimeout(function(){r.close(),e()},i.timeout)),r.on("close",function(){e()}),r.renderTo(),r},close:function(t){t.close()},reposition:function(t){Rt(t,function(t){t.moveTo(0,0)}),function(n){if(0<n.length){var t=n.slice(0,1)[0],e=s(o);t.moveRel(e,"tc-tc"),Rt(n,function(t,e){0<e&&t.moveRel(n[e-1].getEl(),"bc-tc")})}}(t)},getArgs:function(t){return t.args}}}function _e(t){var e,n;if(t.changedTouches)for(e="screenX screenY pageX pageY clientX clientY".split(" "),n=0;n<e.length;n++)t[e[n]]=t.changedTouches[0][e[n]]}function Re(t,h){var m,g,e,p,v,b,y,x=h.document||document;h=h||{};var w=x.getElementById(h.handle||t);e=functio
 n(t){var e,n,i,r,o,s,a,l,u,c,d,f=(e=x,u=Math.max,n=e.documentElement,i=e.body,r=u(n.scrollWidth,i.scrollWidth),o=u(n.clientWidth,i.clientWidth),s=u(n.offsetWidth,i.offsetWidth),a=u(n.scrollHeight,i.scrollHeight),l=u(n.clientHeight,i.clientHeight),{width:r<s?o:r,height:a<u(n.offsetHeight,i.offsetHeight)?l:a});_e(t),t.preventDefault(),g=t.button,c=w,b=t.screenX,y=t.screenY,d=window.getComputedStyle?window.getComputedStyle(c,null).getPropertyValue("cursor"):c.runtimeStyle.cursor,m=Mt("<div></div>").css({position:"absolute",top:0,left:0,width:f.width,height:f.height,zIndex:2147483647,opacity:1e-4,cursor:d}).appendTo(x.body),Mt(x).on("mousemove touchmove",v).on("mouseup touchend",p),h.start(t)},v=function(t){if(_e(t),t.button!==g)return p(t);t.deltaX=t.screenX-b,t.deltaY=t.screenY-y,t.preventDefault(),h.drag(t)},p=function(t){_e(t),Mt(x).off("mousemove touchmove",v).off("mouseup touchend",p),m.remove(
 ),h.stop&&h.stop(t)},this.destroy=function(){Mt(w).off()},Mt(w).on("mousedown touchstart",e)}var Ce=tinymce.util.Tools.resolve("tinymce.ui.Factory"),ke=function(t){return!!t.getAttribute("data-mce-tabstop")};function Ee(t){var o,r,n=t.root;function i(t){return t&&1===t.nodeType}try{o=document.activeElement}catch(e){o=document.body}function s(t){return i(t=t||o)?t.getAttribute("role"):null}function a(t){for(var e,n=t||o;n=n.parentNode;)if(e=s(n))return e}function l(t){var e=o;if(i(e))return e.getAttribute("aria-"+t)}function u(t){var e=t.tagName.toUpperCase();return"INPUT"===e||"TEXTAREA"===e||"SELECT"===e}function c(e){var r=[];return function t(e){if(1===e.nodeType&&"none"!==e.style.display&&!e.disabled){var n;(u(n=e)&&!n.hidden||ke(n)||/^(button|menuitem|checkbox|tab|menuitemcheckbox|option|gridcell|slider)$/.test(s(n)))&&r.push(e);for(var i=0;i
 <e.childNodes.length;i++)t(e.childNodes[i])}}(e||n.getEl()),r}function d(t){var e,n;(n=(t=t||r).parents().toArray()).unshift(t);for(var i=0;i<n.length&&!(e=n[i]).settings.ariaRoot;i++);return e}function f(t,e){return t<0?t=e.length-1:t>=e.length&&(t=0),e[t]&&e[t].focus(),t}function h(t,e){var n=-1,i=d();e=e||c(i.getEl());for(var r=0;r<e.length;r++)e[r]===o&&(n=r);n+=t,i.lastAriaIndex=f(n,e)}function m(){"tablist"===a()?h(-1,c(o.parentNode)):r.parent().submenu?b():h(-1)}function g(){var t=s(),e=a();"tablist"===e?h(1,c(o.parentNode)):"menuitem"===t&&"menu"===e&&l("haspopup")?y():h(1)}function p(){h(-1)}function v(){var t=s(),e=a();"menuitem"===t&&"menubar"===e?y():"button"===t&&l("haspopup")?y({key:"down"}):h(1)}function b(){r.fire("cancel")}function y(t){t=t||{},r.fire("click",{target:o,a
 ria:t})}return r=n.getParentCtrl(o),n.on("keydown",function(t){function e(t,e){u(o)||ke(o)||"slider"!==s(o)&&!1!==e(t)&&t.preventDefault()}if(!t.isDefaultPrevented())switch(t.keyCode){case 37:e(t,m);break;case 39:e(t,g);break;case 38:e(t,p);break;case 40:e(t,v);break;case 27:b();break;case 14:case 13:case 32:e(t,y);break;case 9:!function(t){if("tablist"===a()){var e=c(r.getEl("body"))[0];e&&e.focus()}else h(t.shiftKey?-1:1)}(t),t.preventDefault()}}),n.on("focusin",function(t){o=t.target,r=t.control}),{focusFirst:function(t){var e=d(t),n=c(e.getEl());e.settings.ariaRemember&&"lastAriaIndex"in e?f(e.lastAriaIndex,n):f(0,n)}}}var He,Te,Se,Me,Ne={},Oe=ue.extend({init:function(t){var e=this;e._super(t),(t=e.settings).fixed&&e.state.set("fixed",!0),e._items=new $t,e.isRtl()&&e.classes.add("rtl"),e.bodyClasses=new At(function(){e.state.get("rendered")&am
 p;&(e.getEl("body").className=this.toString())}),e.bodyClasses.prefix=e.classPrefix,e.classes.add("container"),e.bodyClasses.add("container-body"),t.containerCls&&e.classes.add(t.containerCls),e._layout=Ce.create((t.layout||"")+"layout"),e.settings.items?e.add(e.settings.items):e.add(e.render()),e._hasBody=!0},items:function(){return this._items},find:function(t){return(t=Ne[t]=Ne[t]||new Vt(t)).find(this)},add:function(t){return this.items().add(this.create(t)).parent(this),this},focus:function(t){var e,n,i,r=this;if(!t||!(n=r.keyboardNav||r.parents().eq(-1)[0].keyboardNav))return i=r.find("*"),r.statusbar&&i.add(r.statusbar.items()),i.each(function(t){if(t.settings.autofocus)return e=null,!1;t.canFocus&&(e=e||t)}),e&&e.focus(),r;n.focusFirst(r)},replace:function(t,e){for(var n,i=this.items(),r=i.length;r--;)if(i[r]===t){i[r]=e;break}0<=r&&((n=e.getEl())&&n.parentNode.
 removeChild(n),(n=t.getEl())&&n.parentNode.removeChild(n)),e.parent(this)},create:function(t){var e,n=this,i=[];return R.isArray(t)||(t=[t]),R.each(t,function(t){t&&(t instanceof ue||("string"==typeof t&&(t={type:t}),e=R.extend({},n.settings.defaults,t),t.type=e.type=e.type||t.type||n.settings.defaultType||(e.defaults?e.defaults.type:null),t=Ce.create(e)),i.push(t))}),i},renderNew:function(){var i=this;return i.items().each(function(t,e){var n;t.parent(i),t.state.get("rendered")||((n=i.getEl("body")).hasChildNodes()&&e<=n.childNodes.length-1?Mt(n.childNodes[e]).before(t.renderHtml()):Mt(n).append(t.renderHtml()),t.postRender(),te.add(t))}),i._layout.applyClasses(i.items().filter(":visible")),i._lastRect=null,i},append:function(t){return this.add(t).renderNew()},prepend:function(t){return this.items().set(this.create(t).concat(this.items().toArray())),this.renderNew()},insert:function(t,e,n){var i,r,o;return t
 =this.create(t),i=this.items(),!n&&e<i.length-1&&(e+=1),0<=e&&e<i.length&&(r=i.slice(0,e).toArray(),o=i.slice(e).toArray(),i.set(r.concat(t,o))),this.renderNew()},fromJSON:function(t){for(var e in t)this.find("#"+e).value(t[e]);return this},toJSON:function(){var i={};return this.find("*").each(function(t){var e=t.name(),n=t.value();e&&void 0!==n&&(i[e]=n)}),i},renderHtml:function(){var t=this,e=t._layout,n=this.settings.role;return t.preRender(),e.preRender(t),'<div id="'+t._id+'" class="'+t.classes+'"'+(n?' role="'+this.settings.role+'"':"")+'><div id="'+t._id+'-body" class="'+t.bodyClasses+'">'+(t.settings.html||"")+e.renderHtml(t)+"</div></div>"},postRender:function(){var t,e=this;return e.items().exec("postRender"),e._super(),e._layout.postRender(e),e.state.set("rendered",!0),e.set
 tings.style&&e.$el.css(e.settings.style),e.settings.border&&(t=e.borderBox,e.$el.css({"border-top-width":t.top,"border-right-width":t.right,"border-bottom-width":t.bottom,"border-left-width":t.left})),e.parent()||(e.keyboardNav=Ee({root:e})),e},initLayoutRect:function(){var t=this._super();return this._layout.recalc(this),t},recalc:function(){var t=this,e=t._layoutRect,n=t._lastRect;if(!n||n.w!==e.w||n.h!==e.h)return t._layout.recalc(t),e=t.layoutRect(),t._lastRect={x:e.x,y:e.y,w:e.w,h:e.h},!0},reflow:function(){var t;if(te.remove(this),this.visible()){for(ue.repaintControls=[],ue.repaintControls.map={},this.recalc(),t=ue.repaintControls.length;t--;)ue.repaintControls[t].repaint();"flow"!==this.settings.layout&&"stack"!==this.settings.layout&&this.repaint(),ue.repaintControls=[]}return this}}),Pe={init:function(){this.on("repaint",this.renderScroll)},renderScroll:function(){var p=th
 is,v=2;function n(){var m,g,t;function e(t,e,n,i,r,o){var s,a,l,u,c,d,f,h;if(a=p.getEl("scroll"+t)){if(f=e.toLowerCase(),h=n.toLowerCase(),Mt(p.getEl("absend")).css(f,p.layoutRect()[i]-1),!r)return void Mt(a).css("display","none");Mt(a).css("display","block"),s=p.getEl("body"),l=p.getEl("scroll"+t+"t"),u=s["client"+n]-2*v,c=(u-=m&&g?a["client"+o]:0)/s["scroll"+n],(d={})[f]=s["offset"+e]+v,d[h]=u,Mt(a).css(d),(d={})[f]=s["scroll"+e]*c,d[h]=u*c,Mt(l).css(d)}}t=p.getEl("body"),m=t.scrollWidth>t.clientWidth,g=t.scrollHeight>t.clientHeight,e("h","Left","Width","contentW",m,"Height"),e("v","Top","Height","contentH",g,"Width")}p.settings.autoScroll&&(p._hasScroll||(p._hasScroll=!0,function(){function t(s,a,l,u,c){var d,t=p
 ._id+"-scroll"+s,e=p.classPrefix;Mt(p.getEl()).append('<div id="'+t+'" class="'+e+"scrollbar "+e+"scrollbar-"+s+'"><div id="'+t+'t" class="'+e+'scrollbar-thumb"></div></div>'),p.draghelper=new Re(t+"t",{start:function(){d=p.getEl("body")["scroll"+a],Mt("#"+t).addClass(e+"active")},drag:function(t){var e,n,i,r,o=p.layoutRect();n=o.contentW>o.innerW,i=o.contentH>o.innerH,r=p.getEl("body")["client"+l]-2*v,e=(r-=n&&i?p.getEl("scroll"+s)["client"+c]:0)/p.getEl("body")["scroll"+l],p.getEl("body")["scroll"+a]=d+t["delta"+u]/e},stop:function(){Mt("#"+t).removeClass(e+"active")}})}p.classes.add("scroll"),t("v","Top","Height","Y","Width"),t("h","Left"
 ,"Width","X","Height")}(),p.on("wheel",function(t){var e=p.getEl("body");e.scrollLeft+=10*(t.deltaX||0),e.scrollTop+=10*t.deltaY,n()}),Mt(p.getEl("body")).on("scroll",n)),n())}},We=Oe.extend({Defaults:{layout:"fit",containerCls:"panel"},Mixins:[Pe],renderHtml:function(){var t=this,e=t._layout,n=t.settings.html;return t.preRender(),e.preRender(t),void 0===n?n='<div id="'+t._id+'-body" class="'+t.bodyClasses+'">'+e.renderHtml(t)+"</div>":("function"==typeof n&&(n=n.call(t)),t._hasBody=!1),'<div id="'+t._id+'" class="'+t.classes+'" hidefocus="1" tabindex="-1" role="group">'+(t._preBodyHtml||"")+n+"</div>"}}),De={resizeToContent:function(){this._layoutRect.autoResize=!0,this._lastRect=null,this.reflow()},resizeTo:function(t,e){if(t<=1||e<=1){var n=St.ge
 tWindowSize();t=t<=1?t*n.w:t,e=e<=1?e*n.h:e}return this._layoutRect.autoResize=!1,this.layoutRect({minW:t,minH:e,w:t,h:e}).reflow()},resizeBy:function(t,e){var n=this.layoutRect();return this.resizeTo(n.w+t,n.h+e)}},Ae=[],Be=[];function Le(t,e){for(;t;){if(t===e)return!0;t=t.parent()}}function Ie(){He||(He=function(t){2!==t.button&&function(t){for(var e=Ae.length;e--;){var n=Ae[e],i=n.getParentCtrl(t.target);if(n.settings.autohide){if(i&&(Le(i,n)||n.parent()===i))continue;(t=n.fire("autohide",{target:t.target})).isDefaultPrevented()||n.hide()}}}(t)},Mt(document).on("click touchstart",He))}function ze(r){var t=St.getViewPort().y;function e(t,e){for(var n,i=0;i<Ae.length;i++)if(Ae[i]!==r)for(n=Ae[i].parent();n&&(n=n.parent());)n===r&&Ae[i].fixed(t).moveBy(0,e).repaint()}r.settings.autofix&&(r.state.get("fixed")?r._autoFixY>t&&(r.fixed(!1).layoutRect({y:r._autoFixY}).repaint(),e(!1,r._autoFixY-t))
 :(r._autoFixY=r.layoutRect().y,r._autoFixY<t&&(r.fixed(!0).layoutRect({y:0}).repaint(),e(!0,t-r._autoFixY))))}function Fe(t,e){var n,i,r=Ue.zIndex||65535;if(t)Be.push(e);else for(n=Be.length;n--;)Be[n]===e&&Be.splice(n,1);if(Be.length)for(n=0;n<Be.length;n++)Be[n].modal&&(r++,i=Be[n]),Be[n].getEl().style.zIndex=r,Be[n].zIndex=r,r++;var o=Mt("#"+e.classPrefix+"modal-block",e.getContainerElm())[0];i?Mt(o).css("z-index",i.zIndex-1):o&&(o.parentNode.removeChild(o),Me=!1),Ue.currentZIndex=r}var Ue=We.extend({Mixins:[ge,De],init:function(t){var i=this;i._super(t),(i._eventsRoot=i).classes.add("floatpanel"),t.autohide&&(Ie(),function(){if(!Se){var t=document.documentElement,e=t.clientWidth,n=t.clientHeight;Se=function(){document.all&&e===t.clientWidth&&n===t.clientHeight||(e=t.clientWidth,n=t.clientHeight,Ue.hideAll())},Mt(window).on("resize",Se)}}(),Ae.push(i)),t.autofix&&am
 p;(Te||(Te=function(){var t;for(t=Ae.length;t--;)ze(Ae[t])},Mt(window).on("scroll",Te)),i.on("move",function(){ze(this)})),i.on("postrender show",function(t){if(t.control===i){var e,n=i.classPrefix;i.modal&&!Me&&((e=Mt("#"+n+"modal-block",i.getContainerElm()))[0]||(e=Mt('<div id="'+n+'modal-block" class="'+n+"reset "+n+'fade"></div>').appendTo(i.getContainerElm())),c.setTimeout(function(){e.addClass(n+"in"),Mt(i.getEl()).addClass(n+"in")}),Me=!0),Fe(!0,i)}}),i.on("show",function(){i.parents().each(function(t){if(t.state.get("fixed"))return i.fixed(!0),!1})}),t.popover&&(i._preBodyHtml='<div class="'+i.classPrefix+'arrow"></div>',i.classes.add("popover").add("bottom").add(i.isRtl()?"end":"start")),i.aria("label",t.ariaLabel),i.aria("labelledby",i._id
 ),i.aria("describedby",i.describedBy||i._id+"-none")},fixed:function(t){var e=this;if(e.state.get("fixed")!==t){if(e.state.get("rendered")){var n=St.getViewPort();t?e.layoutRect().y-=n.y:e.layoutRect().y+=n.y}e.classes.toggle("fixed",t),e.state.set("fixed",t)}return e},show:function(){var t,e=this._super();for(t=Ae.length;t--&&Ae[t]!==this;);return-1===t&&Ae.push(this),e},hide:function(){return Ve(this),Fe(!1,this),this._super()},hideAll:function(){Ue.hideAll()},close:function(){return this.fire("close").isDefaultPrevented()||(this.remove(),Fe(!1,this)),this},remove:function(){Ve(this),this._super()},postRender:function(){return this.settings.bodyRole&&this.getEl("body").setAttribute("role",this.settings.bodyRole),this._super()}});function Ve(t){var e;for(e=Ae.length;e--;)Ae[e]===t&&Ae.splice(e,1);for(e=Be.length;e--;)Be[e]===t&&Be.splice(e,1)}Ue.hideAll=
 function(){for(var t=Ae.length;t--;){var e=Ae[t];e&&e.settings.autohide&&(e.hide(),Ae.splice(t,1))}};var qe=[],Ye="";function $e(t){var e,n=Mt("meta[name=viewport]")[0];!1!==h.overrideViewPort&&(n||((n=document.createElement("meta")).setAttribute("name","viewport"),document.getElementsByTagName("head")[0].appendChild(n)),(e=n.getAttribute("content"))&&void 0!==Ye&&(Ye=e),n.setAttribute("content",t?"width=device-width,initial-scale=1.0,user-scalable=0,minimum-scale=1.0,maximum-scale=1.0":Ye))}function Xe(t,e){(function(){for(var t=0;t<qe.length;t++)if(qe[t]._fullscreen)return!0;return!1})()&&!1===e&&Mt([document.documentElement,document.body]).removeClass(t+"fullscreen")}var je=Ue.extend({modal:!0,Defaults:{border:1,layout:"flex",containerCls:"panel",role:"dialog",callbacks:{submit:function(){this.
 fire("submit",{data:this.toJSON()})},close:function(){this.close()}}},init:function(t){var n=this;n._super(t),n.isRtl()&&n.classes.add("rtl"),n.classes.add("window"),n.bodyClasses.add("window-body"),n.state.set("fixed",!0),t.buttons&&(n.statusbar=new We({layout:"flex",border:"1 0 0 0",spacing:3,padding:10,align:"center",pack:n.isRtl()?"start":"end",defaults:{type:"button"},items:t.buttons}),n.statusbar.classes.add("foot"),n.statusbar.parent(n)),n.on("click",function(t){var e=n.classPrefix+"close";(St.hasClass(t.target,e)||St.hasClass(t.target.parentNode,e))&&n.close()}),n.on("cancel",function(){n.close()}),n.on("move",function(t){t.control===n&&Ue.hideAll()}),n.aria("describedby",n.describedBy||n._id+"-none"),n.aria("label",t.title),n._fullscreen=!1},recalc:functio
 n(){var t,e,n,i,r=this,o=r.statusbar;r._fullscreen&&(r.layoutRect(St.getWindowSize()),r.layoutRect().contentH=r.layoutRect().innerH),r._super(),t=r.layoutRect(),r.settings.title&&!r._fullscreen&&(e=t.headerW)>t.w&&(n=t.x-Math.max(0,e/2),r.layoutRect({w:e,x:n}),i=!0),o&&(o.layoutRect({w:r.layoutRect().innerW}).recalc(),(e=o.layoutRect().minW+t.deltaW)>t.w&&(n=t.x-Math.max(0,e-t.w),r.layoutRect({w:e,x:n}),i=!0)),i&&r.recalc()},initLayoutRect:function(){var t,e=this,n=e._super(),i=0;if(e.settings.title&&!e._fullscreen){t=e.getEl("head");var r=St.getSize(t);n.headerW=r.width,n.headerH=r.height,i+=n.headerH}e.statusbar&&(i+=e.statusbar.layoutRect().h),n.deltaH+=i,n.minH+=i,n.h+=i;var o=St.getWindowSize();return n.x=e.settings.x||Math.max(0,o.w/2-n.w/2),n.y=e.settings.y||Math.max(0,o.h/2-n.h/2),n},renderHtml:function(){var t=this,e=t._layout,n=t._id,i=t.classPrefix,r=t.settings,o="",s="&
 quot;,a=r.html;return t.preRender(),e.preRender(t),r.title&&(o='<div id="'+n+'-head" class="'+i+'window-head"><div id="'+n+'-title" class="'+i+'title">'+t.encode(r.title)+'</div><div id="'+n+'-dragh" class="'+i+'dragh"></div><button type="button" class="'+i+'close" aria-hidden="true"><i class="mce-ico mce-i-remove"></i></button></div>'),r.url&&(a='<iframe src="'+r.url+'" tabindex="-1"></iframe>'),void 0===a&&(a=e.renderHtml(t)),t.statusbar&&(s=t.statusbar.renderHtml()),'<div id="'+n+'" class="'+t.classes+'" hidefocus="1"><div class="'+t.classPrefix+'reset" role="application">'+o+'<div id="'+n+'-body" class="'+t.bodyClasses+'">'+a+"</div>"+s+"</div>&l
 t;/div>"},fullscreen:function(t){var n,e,i=this,r=document.documentElement,o=i.classPrefix;if(t!==i._fullscreen)if(Mt(window).on("resize",function(){var t;if(i._fullscreen)if(n)i._timer||(i._timer=c.setTimeout(function(){var t=St.getWindowSize();i.moveTo(0,0).resizeTo(t.w,t.h),i._timer=0},50));else{t=(new Date).getTime();var e=St.getWindowSize();i.moveTo(0,0).resizeTo(e.w,e.h),50<(new Date).getTime()-t&&(n=!0)}}),e=i.layoutRect(),i._fullscreen=t){i._initial={x:e.x,y:e.y,w:e.w,h:e.h},i.borderBox=Pt("0"),i.getEl("head").style.display="none",e.deltaH-=e.headerH+2,Mt([r,document.body]).addClass(o+"fullscreen"),i.classes.add("fullscreen");var s=St.getWindowSize();i.moveTo(0,0).resizeTo(s.w,s.h)}else i.borderBox=Pt(i.settings.border),i.getEl("head").style.display="",e.deltaH+=e.headerH,Mt([r,document.body]).removeClass(o+"fullscreen"),i.classes.remove("fullscreen"),i.move
 To(i._initial.x,i._initial.y).resizeTo(i._initial.w,i._initial.h);return i.reflow()},postRender:function(){var e,n=this;setTimeout(function(){n.classes.add("in"),n.fire("open")},0),n._super(),n.statusbar&&n.statusbar.postRender(),n.focus(),this.dragHelper=new Re(n._id+"-dragh",{start:function(){e={x:n.layoutRect().x,y:n.layoutRect().y}},drag:function(t){n.moveTo(e.x+t.deltaX,e.y+t.deltaY)}}),n.on("submit",function(t){t.isDefaultPrevented()||n.close()}),qe.push(n),$e(!0)},submit:function(){return this.fire("submit",{data:this.toJSON()})},remove:function(){var t,e=this;for(e.dragHelper.destroy(),e._super(),e.statusbar&&this.statusbar.remove(),Xe(e.classPrefix,!1),t=qe.length;t--;)qe[t]===e&&qe.splice(t,1);$e(0<qe.length)},getContentWindow:function(){var t=this.getEl().getElementsByTagName("iframe")[0];return t?t.contentWindow:null}});!function(){if(!h.desktop){var n={w:window.innerWidth,h:window.inn
 erHeight};c.setInterval(function(){var t=window.innerWidth,e=window.innerHeight;n.w===t&&n.h===e||(n={w:t,h:e},Mt(window).trigger("resize"))},100)}Mt(window).on("resize",function(){var t,e,n=St.getWindowSize();for(t=0;t<qe.length;t++)e=qe[t].layoutRect(),qe[t].moveTo(qe[t].settings.x||Math.max(0,n.w/2-e.w/2),qe[t].settings.y||Math.max(0,n.h/2-e.h/2))})}();var Je,Ge,Ke,Ze=je.extend({init:function(t){t={border:1,padding:20,layout:"flex",pack:"center",align:"center",containerCls:"panel",autoScroll:!0,buttons:{type:"button",text:"Ok",action:"ok"},items:{type:"label",multiline:!0,maxWidth:500,maxHeight:200}},this._super(t)},Statics:{OK:1,OK_CANCEL:2,YES_NO:3,YES_NO_CANCEL:4,msgBox:function(t){var e,i=t.callback||function(){};function n(t,e,n){return{type:"button",text:t,subtype:n?"primary":"",onClick:function(t){t.control.parents()[1].close(),i(e)}}
 }switch(t.buttons){case Ze.OK_CANCEL:e=[n("Ok",!0,!0),n("Cancel",!1)];break;case Ze.YES_NO:case Ze.YES_NO_CANCEL:e=[n("Yes",1,!0),n("No",0)],t.buttons===Ze.YES_NO_CANCEL&&e.push(n("Cancel",-1));break;default:e=[n("Ok",!0,!0)]}return new je({padding:20,x:t.x,y:t.y,minWidth:300,minHeight:100,layout:"flex",pack:"center",align:"center",buttons:e,title:t.title,role:"alertdialog",items:{type:"label",multiline:!0,maxWidth:500,maxHeight:200,text:t.text},onPostRender:function(){this.aria("describedby",this.items()[0]._id)},onClose:t.onClose,onCancel:function(){i(!1)}}).renderTo(document.body).reflow()},alert:function(t,e){return"string"==typeof t&&(t={text:t}),t.callback=e,Ze.msgBox(t)},confirm:function(t,e){return"string"==typeof t&&(t={text:t}),t.callback=e,t.buttons=Ze.OK_CANCEL,Ze.msgBox(t)}}}),Qe=function(t,e){return{renderUI
 :function(){return st(t,e)},getNotificationManagerImpl:function(){return we(t)},getWindowManagerImpl:function(){return{open:function(n,t,e){var i;return n.title=n.title||" ",n.url=n.url||n.file,n.url&&(n.width=parseInt(n.width||320,10),n.height=parseInt(n.height||240,10)),n.body&&(n.items={defaults:n.defaults,type:n.bodyType||"form",items:n.body,data:n.data,callbacks:n.commands}),n.url||n.buttons||(n.buttons=[{text:"Ok",subtype:"primary",onclick:function(){i.find("form")[0].submit()}},{text:"Cancel",onclick:function(){i.close()}}]),(i=new je(n)).on("close",function(){e(i)}),n.data&&i.on("postRender",function(){this.find("*").each(function(t){var e=t.name();e in n.data&&t.value(n.data[e])})}),i.features=n||{},i.params=t||{},i=i.renderTo(document.body).reflow()},alert:function(t,e,n){var i;return(i=Ze.alert(t,function(){e()})).on("close",function(){n(i)})
 ,i},confirm:function(t,e,n){var i;return(i=Ze.confirm(t,function(t){e(t)})).on("close",function(){n(i)}),i},close:function(t){t.close()},getParams:function(t){return t.params},setParams:function(t,e){t.params=e}}}}},tn="undefined"!=typeof window?window:Function("return this;")(),en=function(t,e){return function(t,e){for(var n=e!==undefined&&null!==e?e:tn,i=0;i<t.length&&n!==undefined&&null!==n;++i)n=n[t[i]];return n}(t.split("."),e)},nn=function(t,e){var n=en(t,e);if(n===undefined||null===n)throw t+" not available on this browser";return n},rn=tinymce.util.Tools.resolve("tinymce.util.Promise"),on=function(n){return new rn(function(t){var e=new(nn("FileReader"));e.onloadend=function(){t(e.result.split(",")[1])},e.readAsDataURL(n)})},sn=function(){return new rn(function(e){var t;(t=document.createElement("input")).type="file",t.style.position="fixed"
 ,t.style.left=0,t.style.top=0,t.style.opacity=.001,document.body.appendChild(t),t.onchange=function(t){e(Array.prototype.slice.call(t.target.files))},t.click(),t.parentNode.removeChild(t)})},an=0,ln=function(t){return t+an+++(e=function(){return Math.round(4294967295*Math.random()).toString(36)},"s"+Date.now().toString(36)+e()+e()+e());var e},un=function(r,o){var s={};function t(t){var e,n,i;n=o[t?"startContainer":"endContainer"],i=o[t?"startOffset":"endOffset"],1===n.nodeType&&(e=r.create("span",{"data-mce-type":"bookmark"}),n.hasChildNodes()?(i=Math.min(i,n.childNodes.length-1),t?n.insertBefore(e,n.childNodes[i]):r.insertAfter(e,n.childNodes[i])):n.appendChild(e),n=e,i=0),s[t?"startContainer":"endContainer"]=n,s[t?"startOffset":"endOffset"]=i}return t(!0),o.collapsed||t(),s},cn=function(r,o){function t(t){var e,n,i;e=i=o[t?"startContainer":&quot
 ;endContainer"],n=o[t?"startOffset":"endOffset"],e&&(1===e.nodeType&&(n=function(t){for(var e=t.parentNode.firstChild,n=0;e;){if(e===t)return n;1===e.nodeType&&"bookmark"===e.getAttribute("data-mce-type")||n++,e=e.nextSibling}return-1}(e),e=e.parentNode,r.remove(i)),o[t?"startContainer":"endContainer"]=e,o[t?"startOffset":"endOffset"]=n)}t(!0),t();var e=r.createRng();return e.setStart(o.startContainer,o.startOffset),o.endContainer&&e.setEnd(o.endContainer,o.endOffset),e},dn=tinymce.util.Tools.resolve("tinymce.dom.TreeWalker"),fn=tinymce.util.Tools.resolve("tinymce.dom.RangeUtils"),hn=function(t){return"A"===t.nodeName&&t.hasAttribute("href")},mn=function(t){var e,n,i,r,o,s,a,l;return r=t.selection,o=t.dom,s=r.getRng(),a=o,l=fn.getNode(s.startContainer,s.startOffset),e=a.getParent(l,hn)||l,n=fn.getNode(s.endContainer,s.en
 dOffset),i=t.getBody(),R.grep(function(t,e,n){var i,r,o=[];for(i=new dn(e,t),r=e;r&&(1===r.nodeType&&o.push(r),r!==n);r=i.next());return o}(i,e,n),hn)},gn=function(t){var e,n,i,r,o;n=mn(e=t),r=e.dom,o=e.selection,i=un(r,o.getRng()),R.each(n,function(t){e.dom.remove(t,!0)}),o.setRng(cn(r,i))},pn=function(t){t.selection.collapse(!1)},vn=function(t){t.focus(),gn(t),pn(t)},bn=function(t,e){var n,i,r,o,s,a=t.dom.getParent(t.selection.getStart(),"a[href]");a?(o=a,s=e,(r=t).focus(),r.dom.setAttrib(o,"href",s),pn(r)):(i=e,(n=t).execCommand("mceInsertLink",!1,{href:i}),pn(n))},yn=function(t,e,n){var i,r,o;t.plugins.table?t.plugins.table.insertTable(e,n):(r=e,o=n,(i=t).undoManager.transact(function(){var t,e;i.insertContent(function(t,e){var n,i,r;for(r='<table data-mce-id="mce" style="width: 100%">',r+="<tbody>",i=0;i<e;i++){for(r+="<tr>",n=0;n<t;n++)r+="<td><br><
 /td>";r+="</tr>"}return r+="</tbody>",r+="</table>"}(r,o)),(t=i.dom.select("*[data-mce-id]")[0]).removeAttribute("data-mce-id"),e=i.dom.select("td,th",t),i.selection.setCursorLocation(e[0],0)}))},xn=function(t,e){t.execCommand("FormatBlock",!1,e)},wn=function(t,e,n){var i,r;r=(i=t.editorUpload.blobCache).create(ln("mceu"),n,e),i.add(r),t.insertContent(t.dom.createHTML("img",{src:r.blobUri()}))},_n=function(t,e){0===e.trim().length?vn(t):bn(t,e)},Rn=vn,Cn=function(n,t){n.addButton("quicklink",{icon:"link",tooltip:"Insert/Edit link",stateSelector:"a[href]",onclick:function(){t.showForm(n,"quicklink")}}),n.addButton("quickimage",{icon:"image",tooltip:"Insert image",onclick:function(){sn().then(function(t){var e=t[0];on(e).then(function(t){wn(n,t,e)})})}}),n.addButton("quicktable",{ic
 on:"table",tooltip:"Insert table",onclick:function(){t.hide(),yn(n,2,2)}}),function(e){for(var t=function(t){return function(){xn(e,t)}},n=1;n<6;n++){var i="h"+n;e.addButton(i,{text:i.toUpperCase(),tooltip:"Heading "+n,stateSelector:i,onclick:t(i),onPostRender:function(){this.getEl().firstChild.firstChild.style.fontWeight="bold"}})}}(n)},kn=function(){var t=h.container;if(t&&"static"!==v.DOM.getStyle(t,"position",!0)){var e=v.DOM.getPos(t),n=e.x-t.scrollLeft,i=e.y-t.scrollTop;return pt.some({x:n,y:i})}return pt.none()},En=function(t){return/^www\.|\.(com|org|edu|gov|uk|net|ca|de|jp|fr|au|us|ru|ch|it|nl|se|no|es|mil)$/i.test(t.trim())},Hn=function(t){return/^https?:\/\//.test(t.trim())},Tn=function(t,e){return!Hn(e)&&En(e)?(n=t,i=e,new rn(function(e){n.windowManager.confirm("The URL you entered seems to be an external link. Do you want to add the required http:// prefix?",function(t){e(
 !0===t?"http://"+i:i)})})):rn.resolve(e);var n,i},Sn=function(r,e){var t,n,i,o={};return t="quicklink",n={items:[{type:"button",name:"unlink",icon:"unlink",onclick:function(){r.focus(),Rn(r),e()},tooltip:"Remove link"},{type:"filepicker",name:"linkurl",placeholder:"Paste or type a link",filetype:"file",onchange:function(t){var e=t.meta;e&&e.attach&&(o={href:this.value(),attach:e.attach})}},{type:"button",icon:"checkmark",subtype:"primary",tooltip:"Ok",onclick:"submit"}],onshow:function(t){if(t.control===this){var e,n="";(e=r.dom.getParent(r.selection.getStart(),"a[href]"))&&(n=r.dom.getAttrib(e,"href")),this.fromJSON({linkurl:n}),i=this.find("#unlink"),e?i.show():i.hide(),this.find("#linkurl")[0].focus()}var i},onsubmit:function(t){Tn(r,t.data.linkurl).then(funct
 ion(t){r.undoManager.transact(function(){t===o.href&&(o.attach(),o={}),_n(r,t)}),e()})}},(i=Ce.create(R.extend({type:"form",layout:"flex",direction:"row",padding:5,name:t,spacing:3},n))).on("show",function(){i.find("textbox").eq(0).each(function(t){t.focus()})}),i},Mn=function(n,t,e){var o,i,s=[];if(e)return R.each(B(i=e)?i:P(i)?i.split(/[ ,]/):[],function(t){if("|"===t)o=null;else if(n.buttons[t]){o||(o={type:"buttongroup",items:[]},s.push(o));var e=n.buttons[t];A(e)&&(e=e()),e.type=e.type||"button",(e=Ce.create(e)).on("postRender",(i=n,r=e,function(){var e,t,n=(t=function(t,e){return{selector:t,handler:e}},(e=r).settings.stateSelector?t(e.settings.stateSelector,function(t){e.active(t)}):e.settings.disabledStateSelector?t(e.settings.disabledStateSelector,function(t){e.disabled(t)}):null);null!==n&&i.selection.selectorChanged(n.selector,n.handler)})),o.items.push(e)}var 
 i,r}),Ce.create({type:"toolbar",layout:"flow",name:t,items:s})},Nn=function(){var l,c,o=function(t){return 0<t.items().length},u=function(t,e){var n,i,r=(n=t,i=e,R.map(i,function(t){return Mn(n,t.id,t.items)})).concat([Mn(t,"text",J(t)),Mn(t,"insert",G(t)),Sn(t,p)]);return Ce.create({type:"floatpanel",role:"dialog",classes:"tinymce tinymce-inline arrow",ariaLabel:"Inline toolbar",layout:"flex",direction:"column",align:"stretch",autohide:!1,autofix:!0,fixed:!0,border:1,items:R.grep(r,o),oncancel:function(){t.focus()}})},d=function(t){t&&t.show()},f=function(t,e){t.moveTo(e.x,e.y)},h=function(n,i){i=i?i.substr(0,2):"",R.each({t:"down",b:"up",c:"center"},function(t,e){n.classes.toggle("arrow-"+t,e===i.substr(0,1))}),"cr"===i?(n.classes.toggle("arrow-left",!0),n.classes.toggle("arrow-right&quot
 ;,!1)):"cl"===i?(n.classes.toggle("arrow-left",!1),n.classes.toggle("arrow-right",!0)):R.each({l:"left",r:"right"},function(t,e){n.classes.toggle("arrow-"+t,e===i.substr(1,1))})},m=function(t,e){var n=t.items().filter("#"+e);return 0<n.length&&(n[0].show(),t.reflow(),!0)},g=function(t,e,n,i){var r,o,s,a;if(a=K(n),r=y(n),o=v.DOM.getRect(t.getEl()),s="insert"===e?Y(i,r,o):$(i,r,o)){var l=kn().getOr({x:0,y:0}),u={x:s.rect.x-l.x,y:s.rect.y-l.y,w:s.rect.w,h:s.rect.h};return f(t,X(a,c=i,r,u)),h(t,s.position),!0}return!1},p=function(){l&&l.hide()};return{show:function(t,e,n,i){var r,o,s,a;l||(S(t),(l=u(t,i)).renderTo().reflow().moveTo(n.x,n.y),t.nodeChanged()),o=e,s=t,a=n,d(r=l),r.items().hide(),m(r,o)?!1===g(r,o,s,a)&&p():p()},showForm:function(t,e){if(l){if(l.items().hide(),!m(l,e))return void p();var n,i,r,o=void 0;d(l),l.items().hide(),m(l,e),r=K(t),n=y(t),o=v.DOM.getRect(l.getEl(
 )),(i=$(c,n,o))&&(o=i.rect,f(l,X(r,c,n,o)),h(l,i.position))}},reposition:function(t,e,n){l&&g(l,e,t,n)},inForm:function(){return l&&l.visible()&&0<l.items().filter("form:visible").length},hide:p,focus:function(){l&&l.find("toolbar:visible").eq(0).each(function(t){t.focus(!0)})},remove:function(){l&&(l.remove(),l=null)}}},On=Nt.extend({Defaults:{firstControlClass:"first",lastControlClass:"last"},init:function(t){this.settings=R.extend({},this.Defaults,t)},preRender:function(t){t.bodyClasses.add(this.settings.containerClass)},applyClasses:function(t){var e,n,i,r,o=this.settings;e=o.firstControlClass,n=o.lastControlClass,t.each(function(t){t.classes.remove(e).remove(n).add(o.controlClass),t.visible()&&(i||(i=t),r=t)}),i&&i.classes.add(e),r&&r.classes.add(n)},renderHtml:function(t){var e="";return this.applyClasses(t.items()),t.items().each(function(t){e+=t.render
 Html()}),e},recalc:function(){},postRender:function(){},isNative:function(){return!1}}),Pn=On.extend({Defaults:{containerClass:"abs-layout",controlClass:"abs-layout-item"},recalc:function(t){t.items().filter(":visible").each(function(t){var e=t.settings;t.layoutRect({x:e.x,y:e.y,w:e.w,h:e.h}),t.recalc&&t.recalc()})},renderHtml:function(t){return'<div id="'+t._id+'-absend" class="'+t.classPrefix+'abs-end"></div>'+this._super(t)}}),Wn=ve.extend({Defaults:{classes:"widget btn",role:"button"},init:function(t){var e,n=this;n._super(t),t=n.settings,e=n.settings.size,n.on("click mousedown",function(t){t.preventDefault()}),n.on("touchstart",function(t){n.fire("click",t),t.preventDefault()}),t.subtype&&n.classes.add(t.subtype),e&&n.classes.add("btn-"+e),t.icon&&n.icon(t.icon)},icon:function(t){return arguments.length?(this.state.set("i
 con",t),this):this.state.get("icon")},repaint:function(){var t,e=this.getEl().firstChild;e&&((t=e.style).width=t.height="100%"),this._super()},renderHtml:function(){var t,e,n=this,i=n._id,r=n.classPrefix,o=n.state.get("icon"),s=n.state.get("text"),a="",l=n.settings;return(t=l.image)?(o="none","string"!=typeof t&&(t=window.getSelection?t[0]:t[1]),t=" style=\"background-image: url('"+t+"')\""):t="",s&&(n.classes.add("btn-has-text"),a='<span class="'+r+'txt">'+n.encode(s)+"</span>"),o=o?r+"ico "+r+"i-"+o:"",e="boolean"==typeof l.active?' aria-pressed="'+l.active+'"':"",'<div id="'+i+'" class="'+n.classes+'" tabindex="-1"'+e+'><button id="'+i+'-button" role="presentation" type="button&qu
 ot; tabindex="-1">'+(o?'<i class="'+o+'"'+t+"></i>":"")+a+"</button></div>"},bindStates:function(){var o=this,n=o.$,i=o.classPrefix+"txt";function s(t){var e=n("span."+i,o.getEl());t?(e[0]||(n("button:first",o.getEl()).append('<span class="'+i+'"></span>'),e=n("span."+i,o.getEl())),e.html(o.encode(t))):e.remove(),o.classes.toggle("btn-has-text",!!t)}return o.state.on("change:text",function(t){s(t.value)}),o.state.on("change:icon",function(t){var e=t.value,n=o.classPrefix;e=(o.settings.icon=e)?n+"ico "+n+"i-"+o.settings.icon:"";var i=o.getEl().firstChild,r=i.getElementsByTagName("i")[0];e?(r&&r===i.firstChild||(r=document.createElement("i"),i.insertBefore(r,i.firstChild)),r.className=e):r&&i.removeChild(r),s(o.state.get("text"))}),o._super()}}
 ),Dn=Wn.extend({init:function(t){t=R.extend({text:"Browse...",multiple:!1,accept:null},t),this._super(t),this.classes.add("browsebutton"),t.multiple&&this.classes.add("multiple")},postRender:function(){var n=this,e=St.create("input",{type:"file",id:n._id+"-browse",accept:n.settings.accept});n._super(),Mt(e).on("change",function(t){var e=t.target.files;n.value=function(){return e.length?n.settings.multiple?e:e[0]:null},t.preventDefault(),e.length&&n.fire("change",t)}),Mt(e).on("click",function(t){t.stopPropagation()}),Mt(n.getEl("button")).on("click",function(t){t.stopPropagation(),e.click()}),n.getEl().appendChild(e)},remove:function(){Mt(this.getEl("button")).off(),Mt(this.getEl("input")).off(),this._super()}}),An=Oe.extend({Defaults:{defaultType:"button",role:"group"},renderHtml:function(){var t=this,e=t._layout;retur
 n t.classes.add("btn-group"),t.preRender(),e.preRender(t),'<div id="'+t._id+'" class="'+t.classes+'"><div id="'+t._id+'-body">'+(t.settings.html||"")+e.renderHtml(t)+"</div></div>"}}),Bn=ve.extend({Defaults:{classes:"checkbox",role:"checkbox",checked:!1},init:function(t){var e=this;e._super(t),e.on("click mousedown",function(t){t.preventDefault()}),e.on("click",function(t){t.preventDefault(),e.disabled()||e.checked(!e.checked())}),e.checked(e.settings.checked)},checked:function(t){return arguments.length?(this.state.set("checked",t),this):this.state.get("checked")},value:function(t){return arguments.length?this.checked(t):this.checked()},renderHtml:function(){var t=this,e=t._id,n=t.classPrefix;return'<div id="'+e+'" class="'+t.classes+'" unselectable="on" aria-labelledby="'+e+'-al" tabindex="-1
 "><i class="'+n+"ico "+n+'i-checkbox"></i><span id="'+e+'-al" class="'+n+'label">'+t.encode(t.state.get("text"))+"</span></div>"},bindStates:function(){var o=this;function e(t){o.classes.toggle("checked",t),o.aria("checked",t)}return o.state.on("change:text",function(t){o.getEl("al").firstChild.data=o.translate(t.value)}),o.state.on("change:checked change:value",function(t){o.fire("change"),e(t.value)}),o.state.on("change:icon",function(t){var e=t.value,n=o.classPrefix;if(void 0===e)return o.settings.icon;e=(o.settings.icon=e)?n+"ico "+n+"i-"+o.settings.icon:"";var i=o.getEl().firstChild,r=i.getElementsByTagName("i")[0];e?(r&&r===i.firstChild||(r=document.createElement("i"),i.insertBefore(r,i.firstChild)),r.className=e):r&&i.removeChild(r)}),o.state.get
 ("checked")&&e(!0),o._super()}}),Ln=tinymce.util.Tools.resolve("tinymce.util.VK"),In=ve.extend({init:function(i){var r=this;r._super(i),i=r.settings,r.classes.add("combobox"),r.subinput=!0,r.ariaTarget="inp",i.menu=i.menu||i.values,i.menu&&(i.icon="caret"),r.on("click",function(t){var e=t.target,n=r.getEl();if(Mt.contains(n,e)||e===n)for(;e&&e!==n;)e.id&&-1!==e.id.indexOf("-open")&&(r.fire("action"),i.menu&&(r.showMenu(),t.aria&&r.menu.items()[0].focus())),e=e.parentNode}),r.on("keydown",function(t){var e;13===t.keyCode&&"INPUT"===t.target.nodeName&&(t.preventDefault(),r.parents().reverse().each(function(t){if(t.toJSON)return e=t,!1}),r.fire("submit",{data:e.toJSON()}))}),r.on("keyup",function(t){if("INPUT"===t.target.nodeName){var e=r.state.get("value"),n=t.target.value;n!=
 =e&&(r.state.set("value",n),r.fire("autocomplete",t))}}),r.on("mouseover",function(t){var e=r.tooltip().moveTo(-65535);if(r.statusLevel()&&-1!==t.target.className.indexOf(r.classPrefix+"status")){var n=r.statusMessage()||"Ok",i=e.text(n).show().testMoveRel(t.target,["bc-tc","bc-tl","bc-tr"]);e.classes.toggle("tooltip-n","bc-tc"===i),e.classes.toggle("tooltip-nw","bc-tl"===i),e.classes.toggle("tooltip-ne","bc-tr"===i),e.moveRel(t.target,i)}})},statusLevel:function(t){return 0<arguments.length&&this.state.set("statusLevel",t),this.state.get("statusLevel")},statusMessage:function(t){return 0<arguments.length&&this.state.set("statusMessage",t),this.state.get("statusMessage")},showMenu:function(){var t,e=this,n=e.settings;e.menu||((t=n.menu||[]).length?t={type:"menu&qu
 ot;,items:t}:t.type=t.type||"menu",e.menu=Ce.create(t).parent(e).renderTo(e.getContainerElm()),e.fire("createmenu"),e.menu.reflow(),e.menu.on("cancel",function(t){t.control===e.menu&&e.focus()}),e.menu.on("show hide",function(t){t.control.items().each(function(t){t.active(t.value()===e.value())})}).fire("show"),e.menu.on("select",function(t){e.value(t.control.value())}),e.on("focusin",function(t){"INPUT"===t.target.tagName.toUpperCase()&&e.menu.hide()}),e.aria("expanded",!0)),e.menu.show(),e.menu.layoutRect({w:e.layoutRect().w}),e.menu.moveRel(e.getEl(),e.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"])},focus:function(){this.getEl("inp").focus()},repaint:function(){var t,e,n=this,i=n.getEl(),r=n.getEl("open"),o=n.layoutRect(),s=0,a=i.firstChild;n.statusLevel()&&"none"!==n.statusLevel()&&(s=parseIn
 t(St.getRuntimeStyle(a,"padding-right"),10)-parseInt(St.getRuntimeStyle(a,"padding-left"),10)),t=r?o.w-St.getSize(r).width-10:o.w-10;var l=document;return l.all&&(!l.documentMode||l.documentMode<=8)&&(e=n.layoutRect().h-2+"px"),Mt(a).css({width:t-s,lineHeight:e}),n._super(),n},postRender:function(){var e=this;return Mt(this.getEl("inp")).on("change",function(t){e.state.set("value",t.target.value),e.fire("change",t)}),e._super()},renderHtml:function(){var t,e,n,i=this,r=i._id,o=i.settings,s=i.classPrefix,a=i.state.get("value")||"",l="",u="";return"spellcheck"in o&&(u+=' spellcheck="'+o.spellcheck+'"'),o.maxLength&&(u+=' maxlength="'+o.maxLength+'"'),o.size&&(u+=' size="'+o.size+'"'),o.subtype&&(u+=' type="'+o.subtype+'"'),n='<i id="'+r+'-status" class="mce-st
 atus mce-ico" style="display: none"></i>',i.disabled()&&(u+=' disabled="disabled"'),(t=o.icon)&&"caret"!==t&&(t=s+"ico "+s+"i-"+o.icon),e=i.state.get("text"),(t||e)&&(l='<div id="'+r+'-open" class="'+s+"btn "+s+'open" tabIndex="-1" role="button"><button id="'+r+'-action" type="button" hidefocus="1" tabindex="-1">'+("caret"!==t?'<i class="'+t+'"></i>':'<i class="'+s+'caret"></i>')+(e?(t?" ":"")+e:"")+"</button></div>",i.classes.add("has-open")),'<div id="'+r+'" class="'+i.classes+'"><input id="'+r+'-inp" class="'+s+'textbox" value="'+i.encode(a,!1)+'" hidefocus="1"'+u+' placeholder="'+i.encode
 (o.placeholder)+'" />'+n+l+"</div>"},value:function(t){return arguments.length?(this.state.set("value",t),this):(this.state.get("rendered")&&this.state.set("value",this.getEl("inp").value),this.state.get("value"))},showAutoComplete:function(t,i){var r=this;if(0!==t.length){r.menu?r.menu.items().remove():r.menu=Ce.create({type:"menu",classes:"combobox-menu",layout:"flow"}).parent(r).renderTo(),R.each(t,function(t){var e,n;r.menu.add({text:t.title,url:t.previewUrl,match:i,classes:"menu-item-ellipsis",onclick:(e=t.value,n=t.title,function(){r.fire("selectitem",{title:n,value:e})})})}),r.menu.renderNew(),r.hideMenu(),r.menu.on("cancel",function(t){t.control.parent()===r.menu&&(t.stopPropagation(),r.focus(),r.hideMenu())}),r.menu.on("select",function(){r.focus()});var e=r.layoutRect().w;r.menu.layoutRect({w:e,minW:0,maxW:e}),r.men
 u.repaint(),r.menu.reflow(),r.menu.show(),r.menu.moveRel(r.getEl(),r.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"])}else r.hideMenu()},hideMenu:function(){this.menu&&this.menu.hide()},bindStates:function(){var r=this;r.state.on("change:value",function(t){r.getEl("inp").value!==t.value&&(r.getEl("inp").value=t.value)}),r.state.on("change:disabled",function(t){r.getEl("inp").disabled=t.value}),r.state.on("change:statusLevel",function(t){var e=r.getEl("status"),n=r.classPrefix,i=t.value;St.css(e,"display","none"===i?"none":""),St.toggleClass(e,n+"i-checkmark","ok"===i),St.toggleClass(e,n+"i-warning","warn"===i),St.toggleClass(e,n+"i-error","error"===i),r.classes.toggle("has-status","none"!==i),r.repaint()}),St.on(r.getEl("status"),&quot
 ;mouseleave",function(){r.tooltip().hide()}),r.on("cancel",function(t){r.menu&&r.menu.visible()&&(t.stopPropagation(),r.hideMenu())});var n=function(t,e){e&&0<e.items().length&&e.items().eq(t)[0].focus()};return r.on("keydown",function(t){var e=t.keyCode;"INPUT"===t.target.nodeName&&(e===Ln.DOWN?(t.preventDefault(),r.fire("autocomplete"),n(0,r.menu)):e===Ln.UP&&(t.preventDefault(),n(-1,r.menu)))}),r._super()},remove:function(){Mt(this.getEl("inp")).off(),this.menu&&this.menu.remove(),this._super()}}),zn=In.extend({init:function(t){var e=this;t.spellcheck=!1,t.onaction&&(t.icon="none"),e._super(t),e.classes.add("colorbox"),e.on("change keyup postrender",function(){e.repaintColor(e.value())})},repaintColor:function(t){var e=this.getEl("open"),n=e?e.getElementsByTagName("i")[0]:null;if(n)try{n.style.background=t}catc
 h(i){}},bindStates:function(){var e=this;return e.state.on("change:value",function(t){e.state.get("rendered")&&e.repaintColor(t.value)}),e._super()}}),Fn=Wn.extend({showPanel:function(){var e=this,t=e.settings;if(e.classes.add("opened"),e.panel)e.panel.show();else{var n=t.panel;n.type&&(n={layout:"grid",items:n}),n.role=n.role||"dialog",n.popover=!0,n.autohide=!0,n.ariaRoot=!0,e.panel=new Ue(n).on("hide",function(){e.classes.remove("opened")}).on("cancel",function(t){t.stopPropagation(),e.focus(),e.hidePanel()}).parent(e).renderTo(e.getContainerElm()),e.panel.fire("show"),e.panel.reflow()}var i=e.panel.testMoveRel(e.getEl(),t.popoverAlign||(e.isRtl()?["bc-tc","bc-tl","bc-tr"]:["bc-tc","bc-tr","bc-tl","tc-bc","tc-br","tc-bl"]));e.panel.classes.toggle("start","l"===i.subst
 r(-1)),e.panel.classes.toggle("end","r"===i.substr(-1));var r="t"===i.substr(0,1);e.panel.classes.toggle("bottom",!r),e.panel.classes.toggle("top",r),e.panel.moveRel(e.getEl(),i)},hidePanel:function(){this.panel&&this.panel.hide()},postRender:function(){var e=this;return e.aria("haspopup",!0),e.on("click",function(t){t.control===e&&(e.panel&&e.panel.visible()?e.hidePanel():(e.showPanel(),e.panel.focus(!!t.aria)))}),e._super()},remove:function(){return this.panel&&(this.panel.remove(),this.panel=null),this._super()}}),Un=v.DOM,Vn=Fn.extend({init:function(t){this._super(t),this.classes.add("splitbtn"),this.classes.add("colorbutton")},color:function(t){return t?(this._color=t,this.getEl("preview").style.backgroundColor=t,this):this._color},resetColor:function(){return this._color=null,this.getEl("preview").style.backgroundColor=null,this},renderH
 tml:function(){var t=this,e=t._id,n=t.classPrefix,i=t.state.get("text"),r=t.settings.icon?n+"ico "+n+"i-"+t.settings.icon:"",o=t.settings.image?" style=\"background-image: url('"+t.settings.image+"')\"":"",s="";return i&&(t.classes.add("btn-has-text"),s='<span class="'+n+'txt">'+t.encode(i)+"</span>"),'<div id="'+e+'" class="'+t.classes+'" role="button" tabindex="-1" aria-haspopup="true"><button role="presentation" hidefocus="1" type="button" tabindex="-1">'+(r?'<i class="'+r+'"'+o+"></i>":"")+'<span id="'+e+'-preview" class="'+n+'preview"></span>'+s+'</button><button type="button" class="'+n+'open" hidefocus="1" tabindex="-1&quo
 t;> <i class="'+n+'caret"></i></button></div>'},postRender:function(){var e=this,n=e.settings.onclick;return e.on("click",function(t){t.aria&&"down"===t.aria.key||t.control!==e||Un.getParent(t.target,"."+e.classPrefix+"open")||(t.stopImmediatePropagation(),n.call(e,t))}),delete e.settings.onclick,e._super()}}),qn=tinymce.util.Tools.resolve("tinymce.util.Color"),Yn=ve.extend({Defaults:{classes:"widget colorpicker"},init:function(t){this._super(t)},postRender:function(){var n,i,r,o,s,a=this,l=a.color();function u(t,e){var n,i,r=St.getPos(t);return n=e.pageX-r.x,i=e.pageY-r.y,{x:n=Math.max(0,Math.min(n/t.clientWidth,1)),y:i=Math.max(0,Math.min(i/t.clientHeight,1))}}function c(t,e){var n=(360-t.h)/360;St.css(r,{top:100*n+"%"}),e||St.css(s,{left:t.s+"%",top:100-t.v+"%"}),o.style.background=qn({s:100,v:100,h:t.h}).toHex(),a.color().parse({s:t.s,v:t.v,h:t.h
 })}function t(t){var e;e=u(o,t),n.s=100*e.x,n.v=100*(1-e.y),c(n),a.fire("change")}function e(t){var e;e=u(i,t),(n=l.toHsv()).h=360*(1-e.y),c(n,!0),a.fire("change")}i=a.getEl("h"),r=a.getEl("hp"),o=a.getEl("sv"),s=a.getEl("svp"),a._repaint=function(){c(n=l.toHsv())},a._super(),a._svdraghelper=new Re(a._id+"-sv",{start:t,drag:t}),a._hdraghelper=new Re(a._id+"-h",{start:e,drag:e}),a._repaint()},rgb:function(){return this.color().toRgb()},value:function(t){if(!arguments.length)return this.color().toHex();this.color().parse(t),this._rendered&&this._repaint()},color:function(){return this._color||(this._color=qn()),this._color},renderHtml:function(){var t,e=this._id,o=this.classPrefix,s="#ff0000,#ff0080,#ff00ff,#8000ff,#0000ff,#0080ff,#00ffff,#00ff80,#00ff00,#80ff00,#ffff00,#ff8000,#ff0000";return t='<div id="'+e+'-h" class="'+o+'colorpicker-h" style="background: -
 ms-linear-gradient(top,'+s+");background: linear-gradient(to bottom,"+s+');">'+function(){var t,e,n,i,r="";for(n="filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=",t=0,e=(i=s.split(",")).length-1;t<e;t++)r+='<div class="'+o+'colorpicker-h-chunk" style="height:'+100/e+"%;"+n+i[t]+",endColorstr="+i[t+1]+");-ms-"+n+i[t]+",endColorstr="+i[t+1]+')"></div>';return r}()+'<div id="'+e+'-hp" class="'+o+'colorpicker-h-marker"></div></div>','<div id="'+e+'" class="'+this.classes+'"><div id="'+e+'-sv" class="'+o+'colorpicker-sv"><div class="'+o+'colorpicker-overlay1"><div class="'+o+'colorpicker-overlay2"><div id="'+e+'-svp" class="'+o+'colorpicker-selector1"><div class="'+o+'colorpicker-se
 lector2"></div></div></div></div></div>'+t+"</div>"}}),$n=ve.extend({init:function(t){t=R.extend({height:100,text:"Drop an image here",multiple:!1,accept:null},t),this._super(t),this.classes.add("dropzone"),t.multiple&&this.classes.add("multiple")},renderHtml:function(){var t,e,n=this.settings;return t={id:this._id,hidefocus:"1"},e=St.create("div",t,"<span>"+this.translate(n.text)+"</span>"),n.height&&St.css(e,"height",n.height+"px"),n.width&&St.css(e,"width",n.width+"px"),e.className=this.classes,e.outerHTML},postRender:function(){var i=this,t=function(t){t.preventDefault(),i.classes.toggle("dragenter"),i.getEl().className=i.classes};i._super(),i.$el.on("dragover",function(t){t.preventDefault()}),i.$el.on("dragenter",t),i.$el.on("dragleave",t),i.
 $el.on("drop",function(t){if(t.preventDefault(),!i.state.get("disabled")){var e=function(t){var e=i.settings.accept;if("string"!=typeof e)return t;var n=new RegExp("("+e.split(/\s*,\s*/).join("|")+")$","i");return R.grep(t,function(t){return n.test(t.name)})}(t.dataTransfer.files);i.value=function(){return e.length?i.settings.multiple?e:e[0]:null},e.length&&i.fire("change",t)}})},remove:function(){this.$el.off(),this._super()}}),Xn=ve.extend({init:function(t){var n=this;t.delimiter||(t.delimiter="\xbb"),n._super(t),n.classes.add("path"),n.canFocus=!0,n.on("click",function(t){var e;(e=t.target.getAttribute("data-index"))&&n.fire("select",{value:n.row()[e],index:e})}),n.row(n.settings.row)},focus:function(){return this.getEl().firstChild.focus(),this},row:function(t){return arguments.length?(this.state.set("row",t),this):this.state
 .get("row")},renderHtml:function(){return'<div id="'+this._id+'" class="'+this.classes+'">'+this._getDataPathHtml(this.state.get("row"))+"</div>"},bindStates:function(){var e=this;return e.state.on("change:row",function(t){e.innerHtml(e._getDataPathHtml(t.value))}),e._super()},_getDataPathHtml:function(t){var e,n,i=t||[],r="",o=this.classPrefix;for(e=0,n=i.length;e<n;e++)r+=(0<e?'<div class="'+o+'divider" aria-hidden="true"> '+this.settings.delimiter+" </div>":"")+'<div role="button" class="'+o+"path-item"+(e===n-1?" "+o+"last":"")+'" data-index="'+e+'" tabindex="-1" id="'+this._id+"-"+e+'" aria-level="'+(e+1)+'">'+i[e].name+"</div>";return r||(r='<div class="'+o+'path-item">\xa0</div>'),r}}),j
 n=Xn.extend({postRender:function(){var o=this,s=o.settings.editor;function a(t){if(1===t.nodeType){if("BR"===t.nodeName||t.getAttribute("data-mce-bogus"))return!0;if("bookmark"===t.getAttribute("data-mce-type"))return!0}return!1}return!1!==s.settings.elementpath&&(o.on("select",function(t){s.focus(),s.selection.select(this.row()[t.index].element),s.nodeChanged()}),s.on("nodeChange",function(t){for(var e=[],n=t.parents,i=n.length;i--;)if(1===n[i].nodeType&&!a(n[i])){var r=s.fire("ResolveName",{name:n[i].nodeName.toLowerCase(),target:n[i]});if(r.isDefaultPrevented()||e.push({name:r.name,element:n[i]}),r.isPropagationStopped())break}o.row(e)})),o._super()}}),Jn=Oe.extend({Defaults:{layout:"flex",align:"center",defaults:{flex:1}},renderHtml:function(){var t=this,e=t._layout,n=t.classPrefix;return t.classes.add("formitem"),e.preRender(t),'<div id="'+t._id+'" cl
 ass="'+t.classes+'" hidefocus="1" tabindex="-1">'+(t.settings.title?'<div id="'+t._id+'-title" class="'+n+'title">'+t.settings.title+"</div>":"")+'<div id="'+t._id+'-body" class="'+t.bodyClasses+'">'+(t.settings.html||"")+e.renderHtml(t)+"</div></div>"}}),Gn=Oe.extend({Defaults:{containerCls:"form",layout:"flex",direction:"column",align:"stretch",flex:1,padding:15,labelGap:30,spacing:10,callbacks:{submit:function(){this.submit()}}},preRender:function(){var i=this,t=i.items();i.settings.formItemDefaults||(i.settings.formItemDefaults={layout:"flex",autoResize:"overflow",defaults:{flex:1}}),t.each(function(t){var e,n=t.settings.label;n&&((e=new Jn(R.extend({items:{type:"label",id:t._id+"-l",text:n,flex:0,forId:t._id,disabled:t.disabled()}},i.settings.formItem
 Defaults))).type="formitem",t.aria("labelledby",t._id+"-l"),"undefined"==typeof t.settings.flex&&(t.settings.flex=1),i.replace(t,e),e.add(t))})},submit:function(){return this.fire("submit",{data:this.toJSON()})},postRender:function(){this._super(),this.fromJSON(this.settings.data)},bindStates:function(){var n=this;function t(){var t,e,i=0,r=[];if(!1!==n.settings.labelGapCalc)for(("children"===n.settings.labelGapCalc?n.find("formitem"):n.items()).filter("formitem").each(function(t){var e=t.items()[0],n=e.getEl().clientWidth;i=i<n?n:i,r.push(e)}),e=n.settings.labelGap||0,t=r.length;t--;)r[t].settings.minWidth=i+e}n._super(),n.on("show",t),t()}}),Kn=Gn.extend({Defaults:{containerCls:"fieldset",layout:"flex",direction:"column",align:"stretch",flex:1,padding:"25 15 5 15",labelGap:30,spacing:10,border:1},renderHtml:function(){var t=this,e=t
 ._layout,n=t.classPrefix;return t.preRender(),e.preRender(t),'<fieldset id="'+t._id+'" class="'+t.classes+'" hidefocus="1" tabindex="-1">'+(t.settings.title?'<legend id="'+t._id+'-title" class="'+n+'fieldset-title">'+t.settings.title+"</legend>":"")+'<div id="'+t._id+'-body" class="'+t.bodyClasses+'">'+(t.settings.html||"")+e.renderHtml(t)+"</div></fieldset>"}}),Zn=0,Qn=function(t){if(null===t||t===undefined)throw new Error("Node cannot be null or undefined");return{dom:lt(t)}},ti={fromHtml:function(t,e){var n=(e||document).createElement("div");if(n.innerHTML=t,!n.hasChildNodes()||1<n.childNodes.length)throw console.error("HTML does not have a single root node",t),"HTML must have a single root node";return Qn(n.childNodes[0])},fromTag:function(t,e){var n=(e||document).createElement(t);re
 turn Qn(n)},fromText:function(t,e){var n=(e||document).createTextNode(t);return Qn(n)},fromDom:Qn,fromPoint:function(t,e,n){var i=t.dom();return pt.from(i.elementFromPoint(e,n)).map(Qn)}},ei=(Node.ATTRIBUTE_NODE,Node.CDATA_SECTION_NODE,Node.COMMENT_NODE,Node.DOCUMENT_NODE),ni=(Node.DOCUMENT_TYPE_NODE,Node.DOCUMENT_FRAGMENT_NODE,Node.ELEMENT_NODE),ii=(Node.TEXT_NODE,Node.PROCESSING_INSTRUCTION_NODE,Node.ENTITY_REFERENCE_NODE,Node.ENTITY_NODE,Node.NOTATION_NODE,function(t,e){var n=function(t,e){for(var n=0;n<t.length;n++){var i=t[n];if(i.test(e))return i}return undefined}(t,e);if(!n)return{major:0,minor:0};var i=function(t){return Number(e.replace(n,"$"+t))};return oi(i(1),i(2))}),ri=function(){return oi(0,0)},oi=function(t,e){return{major:t,minor:e}},si={nu:oi,detect:function(t,e){var n=String(e).toLowerCase();return 0===t.length?ri():ii(t,n)},unknown:ri},ai="Firefox",li=function(t,e){return function(){return e===t}},ui=function(t){var e=t.current;return{curren
 t:e,version:t.version,isEdge:li("Edge",e),isChrome:li("Chrome",e),isIE:li("IE",e),isOpera:li("Opera",e),isFirefox:li(ai,e),isSafari:li("Safari",e)}},ci={unknown:function(){return ui({current:undefined,version:si.unknown()})},nu:ui,edge:lt("Edge"),chrome:lt("Chrome"),ie:lt("IE"),opera:lt("Opera"),firefox:lt(ai),safari:lt("Safari")},di="Windows",fi="Android",hi="Solaris",mi="FreeBSD",gi=function(t,e){return function(){return e===t}},pi=function(t){var e=t.current;return{current:e,version:t.version,isWindows:gi(di,e),isiOS:gi("iOS",e),isAndroid:gi(fi,e),isOSX:gi("OSX",e),isLinux:gi("Linux",e),isSolaris:gi(hi,e),isFreeBSD:gi(mi,e)}},vi={unknown:function(){return pi({current:undefined,version:si.unknown()})},nu:pi,windows:lt(di),ios:lt("iOS"),android:lt(fi),linux:lt("Linux"),osx:lt("OSX"),so
 laris:lt(hi),freebsd:lt(mi)},bi=function(t,e){var n=String(e).toLowerCase();return function(t,e){for(var n=0,i=t.length;n<i;n++){var r=t[n];if(e(r,n,t))return pt.some(r)}return pt.none()}(t,function(t){return t.search(n)})},yi=function(t,n){return bi(t,n).map(function(t){var e=si.detect(t.versionRegexes,n);return{current:t.name,version:e}})},xi=function(t,n){return bi(t,n).map(function(t){var e=si.detect(t.versionRegexes,n);return{current:t.name,version:e}})},wi=function(t,e){return-1!==t.indexOf(e)},_i=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,Ri=function(e){return function(t){return wi(t,e)}},Ci=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(t){return wi(t,"edge/")&&wi(t,"chrome")&&wi(t,"safari")&&wi(t,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,_i],search:function(t){return wi(t,"chrome")&&!wi(t,"chromefra
 me")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(t){return wi(t,"msie")||wi(t,"trident")}},{name:"Opera",versionRegexes:[_i,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:Ri("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:Ri("firefox")},{name:"Safari",versionRegexes:[_i,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(t){return(wi(t,"safari")||wi(t,"mobile/"))&&wi(t,"applewebkit")}}],ki=[{name:"Windows",search:Ri("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(t){return wi(t,"iphone")||wi(t,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:Ri("android&q
 uot;),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:Ri("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:Ri("linux"),versionRegexes:[]},{name:"Solaris",search:Ri("sunos"),versionRegexes:[]},{name:"FreeBSD",search:Ri("freebsd"),versionRegexes:[]}],Ei={browsers:lt(Ci),oses:lt(ki)},Hi=function(t){var e,n,i,r,o,s,a,l,u,c,d,f=Ei.browsers(),h=Ei.oses(),m=yi(f,t).fold(ci.unknown,ci.nu),g=xi(h,t).fold(vi.unknown,vi.nu);return{browser:m,os:g,deviceType:(n=m,i=t,r=(e=g).isiOS()&&!0===/ipad/i.test(i),o=e.isiOS()&&!r,s=e.isAndroid()&&3===e.version.major,a=e.isAndroid()&&4===e.version.major,l=r||s||a&&!0===/mobile/i.test(i),u=e.isiOS()||e.isAndroid(),c=u&&!l,d=n.isSafari()&&e.isiOS()&&!1===/safari/i.test(i),{isiPad:lt(r),isiPhone:lt(o),isTablet:lt(l),isPhone:lt(c),isTouch:lt(u),isAndroid:e.isAndroi
 d,isiOS:e.isiOS,isWebView:lt(d)})}},Ti=(Ke=!(Je=function(){var t=navigator.userAgent;return Hi(t)}),function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return Ke||(Ke=!0,Ge=Je.apply(null,t)),Ge}),Si=ni,Mi=ei,Ni=function(t){return t.nodeType!==Si&&t.nodeType!==Mi||0===t.childElementCount},Oi=(Ti().browser.isIE(),function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e]}("element","offset"),R.trim),Pi=function(e){return function(t){if(t&&1===t.nodeType){if(t.contentEditable===e)return!0;if(t.getAttribute("data-mce-contenteditable")===e)return!0}return!1}},Wi=Pi("true"),Di=Pi("false"),Ai=function(t,e,n,i,r){return{type:t,title:e,url:n,level:i,attach:r}},Bi=function(t){return t.innerText||t.textContent},Li=function(t){return t.id?t.id:(e="h",n=(new Date).getTime(),e+"_"+Math.floor(1e9*Math.random())+ ++Zn+String(n));var e,n},Ii=function(t){return(e=t)&&"A&
 quot;===e.nodeName&&(e.id||e.name)&&Fi(t);var e},zi=function(t){return t&&/^(H[1-6])$/.test(t.nodeName)},Fi=function(t){return function(t){for(;t=t.parentNode;){var e=t.contentEditable;if(e&&"inherit"!==e)return Wi(t)}return!1}(t)&&!Di(t)},Ui=function(t){return zi(t)&&Fi(t)},Vi=function(t){var e,n=Li(t);return Ai("header",Bi(t),"#"+n,zi(e=t)?parseInt(e.nodeName.substr(1),10):0,function(){t.id=n})},qi=function(t){var e=t.id||t.name,n=Bi(t);return Ai("anchor",n||"#"+e,"#"+e,0,at)},Yi=function(t){var e,n,i,r,o,s;return e="h1,h2,h3,h4,h5,h6,a:not([href])",n=t,_t((Ti().browser.isIE(),function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e]}("element","offset"),i=ti.fromDom(n),r=e,s=(o=i)===undefined?document:o.dom(),Ni(s)?[]:_t(s.querySelectorAll(r),ti.fromDom)),function(t){return t.dom()})},$i=function(t){return 0<Oi(t.title).length}
 ,Xi=function(t){var e,n=Yi(t);return Ct((e=n,_t(Ct(e,Ui),Vi)).concat(_t(Ct(n,Ii),qi)),$i)},ji={},Ji=function(t){return{title:t.title,value:{title:{raw:t.title},url:t.url,attach:t.attach}}},Gi=function(t,e){return{title:t,value:{title:t,url:e,attach:at}}},Ki=function(t,e,n){var i=e in t?t[e]:n;return!1===i?null:i},Zi=function(t,i,r,e){var n,o,s,a,l,u,c={title:"-"},d=function(t){var e=t.hasOwnProperty(r)?t[r]:[],n=Ct(e,function(t){return e=t,!wt(i,function(t){return t.url===e});var e});return R.map(n,function(t){return{title:t,value:{title:t,url:t,attach:at}}})},f=function(e){var t,n=Ct(i,function(t){return t.type===e});return t=n,R.map(t,Ji)};return!1===e.typeahead_urls?[]:"file"===r?(n=[tr(t,d(ji)),tr(t,f("header")),tr(t,(a=f("anchor"),l=Ki(e,"anchor_top","#top"),u=Ki(e,"anchor_bottom","#bottom"),null!==l&&a.unshift(Gi("<top>",l)),null!==u&&a.push(Gi("<bottom>&q
 uot;,u)),a))],o=function(t,e){return 0===t.length||0===e.length?t.concat(e):t.concat(c,e)},s=[],Rt(n,function(t){s=o(s,t)}),s):tr(t,d(ji))},Qi=function(t,e){var n,i,r,o=ji[e];/^https?/.test(t)&&(o?(n=o,i=t,r=xt(n,i),-1===r?pt.none():pt.some(r)).isNone()&&(ji[e]=o.slice(0,5).concat(t)):ji[e]=[t])},tr=function(t,e){var n=t.toLowerCase(),i=R.grep(e,function(t){return-1!==t.title.toLowerCase().indexOf(n)});return 1===i.length&&i[0].title===t?[]:i},er=function(o,t,n){var i=t.filepicker_validator_handler;i&&o.state.on("change:value",function(t){var e;0!==(e=t.value).length?i({url:e,type:n},function(t){var e,n,i,r=(n=(e=t).status,i=e.message,"valid"===n?{status:"ok",message:i}:"unknown"===n?{status:"warn",message:i}:"invalid"===n?{status:"warn",message:i}:{status:"none",message:""});o.statusMessage(r.message),o.statusLevel(r.status)}):o.statusLevel("none")})},
 nr=In.extend({Statics:{clearHistory:function(){ji={}}},init:function(t){var e,n,i,r,o,s,a,l,u=this,c=window.tinymce?window.tinymce.activeEditor:M.activeEditor,d=c.settings,f=t.filetype;t.spellcheck=!1,(i=d.file_picker_types||d.file_browser_callback_types)&&(i=R.makeMap(i,/[, ]/)),i&&!i[f]||(!(n=d.file_picker_callback)||i&&!i[f]?!(n=d.file_browser_callback)||i&&!i[f]||(e=function(){n(u.getEl("inp").id,u.value(),f,window)}):e=function(){var t=u.fire("beforecall").meta;t=R.extend({filetype:f},t),n.call(c,function(t,e){u.value(t).fire("change",{meta:e})},u.value(),t)}),e&&(t.icon="browse",t.onaction=e),u._super(t),u.classes.add("filepicker"),r=u,o=d,s=c.getBody(),a=f,l=function(t){var e=Xi(s),n=Zi(t,e,a,o);r.showAutoComplete(n,t)},r.on("autocomplete",function(){l(r.value())}),r.on("selectitem",function(t){var e=t.value;r.value(e.url);var n,i=(n=e.title).raw?n.raw:n;"image&q
 uot;===a?r.fire("change",{meta:{alt:i,attach:e.attach}}):r.fire("change",{meta:{text:i,attach:e.attach}}),r.focus()}),r.on("click",function(t){0===r.value().length&&"INPUT"===t.target.nodeName&&l("")}),r.on("PostRender",function(){r.getRoot().on("submit",function(t){t.isDefaultPrevented()||Qi(r.value(),a)})}),er(u,d,f)}}),ir=Pn.extend({recalc:function(t){var e=t.layoutRect(),n=t.paddingBox;t.items().filter(":visible").each(function(t){t.layoutRect({x:n.left,y:n.top,w:e.innerW-n.right-n.left,h:e.innerH-n.top-n.bottom}),t.recalc&&t.recalc()})}}),rr=Pn.extend({recalc:function(t){var e,n,i,r,o,s,a,l,u,c,d,f,h,m,g,p,v,b,y,x,w,_,R,C,k,E,H,T,S,M,N,O,P,W,D,A,B,L=[],I=Math.max,z=Math.min;for(i=t.items().filter(":visible"),r=t.layoutRect(),o=t.paddingBox,s=t.settings,f=t.isRtl()?s.direction||"row-reversed":s.direction,a=s.align,l=t.isRtl()?s.pack||"end":s.pack,
 u=s.spacing||0,"row-reversed"!==f&&"column-reverse"!==f||(i=i.set(i.toArray().reverse()),f=f.split("-")[0]),"column"===f?(C="y",_="h",R="minH",k="maxH",H="innerH",E="top",T="deltaH",S="contentH",W="left",O="w",M="x",N="innerW",P="minW",D="right",A="deltaW",B="contentW"):(C="x",_="w",R="minW",k="maxW",H="innerW",E="left",T="deltaW",S="contentW",W="top",O="h",M="y",N="innerH",P="minH",D="bottom",A="deltaH",B="contentH"),d=r[H]-o[E]-o[E],w=c=0,e=0,n=i.length;e<n;e++)m=(h=i[e]).layoutRect(),d-=e<n-1?u:0,0<(g=h.settings.flex)&&(c+=g,m[k]&&L.push(h),m.flex=g),d-=m[R],w<(p=o[W]+m[P]+o[D])&&(w=
 p);if((y={})[R]=d<0?r[R]-d+r[T]:r[H]-d+r[T],y[P]=w+r[A],y[S]=r[H]-d,y[B]=w,y.minW=z(y.minW,r.maxW),y.minH=z(y.minH,r.maxH),y.minW=I(y.minW,r.startMinWidth),y.minH=I(y.minH,r.startMinHeight),!r.autoResize||y.minW===r.minW&&y.minH===r.minH){for(b=d/c,e=0,n=L.length;e<n;e++)(v=(m=(h=L[e]).layoutRect())[k])<(p=m[R]+m.flex*b)?(d-=m[k]-m[R],c-=m.flex,m.flex=0,m.maxFlexSize=v):m.maxFlexSize=0;for(b=d/c,x=o[E],y={},0===c&&("end"===l?x=d+o[E]:"center"===l?(x=Math.round(r[H]/2-(r[H]-d)/2)+o[E])<0&&(x=o[E]):"justify"===l&&(x=o[E],u=Math.floor(d/(i.length-1)))),y[M]=o[W],e=0,n=i.length;e<n;e++)p=(m=(h=i[e]).layoutRect()).maxFlexSize||m[R],"center"===a?y[M]=Math.round(r[N]/2-m[O]/2):"stretch"===a?(y[O]=I(m[P]||0,r[N]-o[W]-o[D]),y[M]=o[W]):"end"===a&&(y[M]=r[N]-m[O]-o.top),0<m.flex&&(p+=m.flex*b),y[_]=p,y[C]=x,h.layoutRect(y),h.recalc&&h.recalc(),x+=p+u}else if(y.w
 =y.minW,y.h=y.minH,t.layoutRect(y),this.recalc(t),null===t._lastRect){var F=t.parent();F&&(F._lastRect=null,F.recalc())}}}),or=On.extend({Defaults:{containerClass:"flow-layout",controlClass:"flow-layout-item",endClass:"break"},recalc:function(t){t.items().filter(":visible").each(function(t){t.recalc&&t.recalc()})},isNative:function(){return!0}}),sr=function(t,e){return n=e,r=(i=t)===undefined?document:i.dom(),Ni(r)?pt.none():pt.from(r.querySelector(n)).map(ti.fromDom);var n,i,r},ar=function(t,e){return function(){t.execCommand("mceToggleFormat",!1,e)}},lr=function(t,e,n){var i=function(t){n(t,e)};t.formatter?t.formatter.formatChanged(e,i):t.on("init",function(){t.formatter.formatChanged(e,i)})},ur=function(t,n){return function(e){lr(t,n,function(t){e.control.active(t)})}},cr=function(i){var e=["alignleft","aligncenter","alignright","alignjustify"],r="alignleft&quo
 t;,t=[{text:"Left",icon:"alignleft",onclick:ar(i,"alignleft")},{text:"Center",icon:"aligncenter",onclick:ar(i,"aligncenter")},{text:"Right",icon:"alignright",onclick:ar(i,"alignright")},{text:"Justify",icon:"alignjustify",onclick:ar(i,"alignjustify")}];i.addMenuItem("align",{text:"Align",menu:t}),i.addButton("align",{type:"menubutton",icon:r,menu:t,onShowMenu:function(t){var n=t.control.menu;R.each(e,function(e,t){n.items().eq(t).each(function(t){return t.active(i.formatter.match(e))})})},onPostRender:function(t){var n=t.control;R.each(e,function(e,t){lr(i,e,function(t){n.icon(r),t&&n.icon(e)})})}}),R.each({alignleft:["Align left","JustifyLeft"],aligncenter:["Align center","JustifyCenter"],alignright:["Align right","JustifyRight"],alignjustify:["Justify&
 quot;,"JustifyFull"],alignnone:["No alignment","JustifyNone"]},function(t,e){i.addButton(e,{active:!1,tooltip:t[0],cmd:t[1],onPostRender:ur(i,e)})})},dr=function(t){return t?t.split(",")[0]:""},fr=function(l,u){return function(){var a=this;a.state.set("value",null),l.on("init nodeChange",function(t){var e,n,i,r,o=l.queryCommandValue("FontName"),s=(e=u,r=(n=o)?n.toLowerCase():"",R.each(e,function(t){t.value.toLowerCase()===r&&(i=t.value)}),R.each(e,function(t){i||dr(t.value).toLowerCase()!==dr(r).toLowerCase()||(i=t.value)}),i);a.value(s||null),!s&&o&&a.text(dr(o))})}},hr=function(n){n.addButton("fontselect",function(){var t,e=(t=function(t){for(var e=(t=t.replace(/;$/,"").split(";")).length;e--;)t[e]=t[e].split("=");return t}(n.settings.font_formats||"Andale Mono=andale mono,monospace;Arial=arial,helvetica,sans-serif;Arial Bla
 ck=arial black,sans-serif;Book Antiqua=book antiqua,palatino,serif;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,palatino,serif;Helvetica=helvetica,arial,sans-serif;Impact=impact,sans-serif;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco,monospace;Times New Roman=times new roman,times,serif;Trebuchet MS=trebuchet ms,geneva,sans-serif;Verdana=verdana,geneva,sans-serif;Webdings=webdings;Wingdings=wingdings,zapf dingbats"),R.map(t,function(t){return{text:{raw:t[0]},value:t[1],textStyle:-1===t[1].indexOf("dings")?"font-family:"+t[1]:""}}));return{type:"listbox",text:"Font Family",tooltip:"Font Family",values:e,fixedWidth:!0,onPostRender:fr(n,e),onselect:function(t){t.control.settings.value&&n.execCommand("FontName",!1,t.control.settings.value)}}})},mr=function(t){hr(t)},gr=function(t,e){return/[0-9.]+px$/.test(t)?(n=72*pars
 eInt(t,10)/96,i=e||0,r=Math.pow(10,i),Math.round(n*r)/r+"pt"):t;var n,i,r},pr=function(t,e,n){var i;return R.each(t,function(t){t.value===n?i=n:t.value===e&&(i=e)}),i},vr=function(n){n.addButton("fontsizeselect",function(){var t,s,a,e=(t=n.settings.fontsize_formats||"8pt 10pt 12pt 14pt 18pt 24pt 36pt",R.map(t.split(" "),function(t){var e=t,n=t,i=t.split("=");return 1<i.length&&(e=i[0],n=i[1]),{text:e,value:n}}));return{type:"listbox",text:"Font Sizes",tooltip:"Font Sizes",values:e,fixedWidth:!0,onPostRender:(s=n,a=e,function(){var o=this;s.on("init nodeChange",function(t){var e,n,i,r;if(e=s.queryCommandValue("FontSize"))for(i=3;!r&&0<=i;i--)n=gr(e,i),r=pr(a,n,e);o.value(r||null),r||o.text(n)})}),onclick:function(t){t.control.settings.value&&n.execCommand("FontSize",!1,t.control.settings.value)}}})},br=function(t){vr(t)},yr=function(n,t){
 var i=t.length;return R.each(t,function(t){t.menu&&(t.hidden=0===yr(n,t.menu));var e=t.format;e&&(t.hidden=!n.formatter.canApply(e)),t.hidden&&i--}),i},xr=function(n,t){var i=t.items().length;return t.items().each(function(t){t.menu&&t.visible(0<xr(n,t.menu)),!t.menu&&t.settings.menu&&t.visible(0<yr(n,t.settings.menu));var e=t.settings.format;e&&t.visible(n.formatter.canApply(e)),t.visible()||i--}),i},wr=function(t){var i,r,o,e,s,n,a,l,u=(r=0,o=[],e=[{title:"Headings",items:[{title:"Heading 1",format:"h1"},{title:"Heading 2",format:"h2"},{title:"Heading 3",format:"h3"},{title:"Heading 4",format:"h4"},{title:"Heading 5",format:"h5"},{title:"Heading 6",format:"h6"}]},{title:"Inline",items:[{title:"Bold",icon:"bold",format:"bold"},{title:"Italic",i
 con:"italic",format:"italic"},{title:"Underline",icon:"underline",format:"underline"},{title:"Strikethrough",icon:"strikethrough",format:"strikethrough"},{title:"Superscript",icon:"superscript",format:"superscript"},{title:"Subscript",icon:"subscript",format:"subscript"},{title:"Code",icon:"code",format:"code"}]},{title:"Blocks",items:[{title:"Paragraph",format:"p"},{title:"Blockquote",format:"blockquote"},{title:"Div",format:"div"},{title:"Pre",format:"pre"}]},{title:"Alignment",items:[{title:"Left",icon:"alignleft",format:"alignleft"},{title:"Center",icon:"aligncenter",format:"aligncenter"},{title:"Right",icon:"alignright",format:"a
 lignright"},{title:"Justify",icon:"alignjustify",format:"alignjustify"}]}],s=function(t){var i=[];if(t)return R.each(t,function(t){var e={text:t.title,icon:t.icon};if(t.items)e.menu=s(t.items);else{var n=t.format||"custom"+r++;t.format||(t.name=n,o.push(t)),e.format=n,e.cmd=t.cmd}i.push(e)}),i},(i=t).on("init",function(){R.each(o,function(t){i.formatter.register(t.name,t)})}),{type:"menu",items:i.settings.style_formats_merge?i.settings.style_formats?s(e.concat(i.settings.style_formats)):s(e):s(i.settings.style_formats||e),onPostRender:function(t){i.fire("renderFormatsMenu",{control:t.control})},itemDefaults:{preview:!0,textStyle:function(){if(this.settings.format)return i.formatter.getCssText(this.settings.format)},onPostRender:function(){var n=this;n.parent().on("show",function(){var t,e;(t=n.settings.format)&&(n.disabled(!i.formatter.canApply(t)),n.active(i.formatter.match(t))),(e=n.settin
 gs.cmd)&&n.active(i.queryCommandState(e))})},onclick:function(){this.settings.format&&ar(i,this.settings.format)(),this.settings.cmd&&i.execCommand(this.settings.cmd)}}});n=u,t.addMenuItem("formats",{text:"Formats",menu:n}),l=u,(a=t).addButton("styleselect",{type:"menubutton",text:"Formats",menu:l,onShowMenu:function(){a.settings.style_formats_autohide&&xr(a,this.menu)}})},_r=function(n,t){return function(){var r,o,s,e=[];return R.each(t,function(t){e.push({text:t[0],value:t[1],textStyle:function(){return n.formatter.getCssText(t[1])}})}),{type:"listbox",text:t[0][0],values:e,fixedWidth:!0,onselect:function(t){if(t.control){var e=t.control.value();ar(n,e)()}},onPostRender:(r=n,o=e,function(){var e=this;r.on("nodeChange",function(t){var n=r.formatter,i=null;R.each(t.parents,function(e){if(R.each(o,function(t){if(s?n.matchNode(e,s,{value:t.value})&&(i=t.value):n.matchNode(e,t.
 value)&&(i=t.value),i)return!1}),i)return!1}),e.value(i)})})}}},Rr=function(t){var e,n,i=function(t){for(var e=(t=t.replace(/;$/,"").split(";")).length;e--;)t[e]=t[e].split("=");return t}(t.settings.block_formats||"Paragraph=p;Heading 1=h1;Heading 2=h2;Heading 3=h3;Heading 4=h4;Heading 5=h5;Heading 6=h6;Preformatted=pre");t.addMenuItem("blockformats",{text:"Blocks",menu:(e=t,n=i,R.map(n,function(t){return{text:t[0],onclick:ar(e,t[1]),textStyle:function(){return e.formatter.getCssText(t[1])}}}))}),t.addButton("formatselect",_r(t,i))},Cr=function(e,t){var n,i;if("string"==typeof t)i=t.split(" ");else if(R.isArray(t))return function(t){for(var e=[],n=0,i=t.length;n<i;++n){if(!Array.prototype.isPrototypeOf(t[n]))throw new Error("Arr.flatten item "+n+" was not an array, input: "+t);Ht.apply(e,t[n])}return e}(R.map(t,function(t){return Cr(e,t)}));return n=R.grep(i,funct
 ion(t){return"|"===t||t in e.menuItems}),R.map(n,function(t){return"|"===t?{text:"-"}:e.menuItems[t]})},kr=function(t){return t&&"-"===t.text},Er=function(t){var e=Ct(t,function(t,e,n){return!kr(t)||!kr(n[e-1])});return Ct(e,function(t,e,n){return!kr(t)||0<e&&e<n.length-1})},Hr=function(t){var e,n,i,r,o=t.settings.insert_button_items;return Er(o?Cr(t,o):(e=t,n="insert",i=[{text:"-"}],r=R.grep(e.menuItems,function(t){return t.context===n}),R.each(r,function(t){"before"===t.separator&&i.push({text:"|"}),t.prependToContext?i.unshift(t):i.push(t),"after"===t.separator&&i.push({text:"|"})}),i))},Tr=function(t){var e;(e=t).addButton("insert",{type:"menubutton",icon:"insert",menu:[],oncreatemenu:function(){this.menu.add(Hr(e)),this.menu.renderNew()}})},Sr=function(t){var n,i,r;n=t,R.each({bold:"Bold",italic:"I
 talic",underline:"Underline",strikethrough:"Strikethrough",subscript:"Subscript",superscript:"Superscript"},function(t,e){n.addButton(e,{active:!1,tooltip:t,onPostRender:ur(n,e),onclick:ar(n,e)})}),i=t,R.each({outdent:["Decrease indent","Outdent"],indent:["Increase indent","Indent"],cut:["Cut","Cut"],copy:["Copy","Copy"],paste:["Paste","Paste"],help:["Help","mceHelp"],selectall:["Select all","SelectAll"],visualaid:["Visual aids","mceToggleVisualAid"],newdocument:["New document","mceNewDocument"],removeformat:["Clear formatting","RemoveFormat"],remove:["Remove","Delete"]},function(t,e){i.addButton(e,{tooltip:t[0],cmd:t[1]})}),r=t,R.each({blockquote:["Blockquote","mceBlockQuote"],subscript:["Subscrip
 t","Subscript"],superscript:["Superscript","Superscript"]},function(t,e){r.addButton(e,{active:!1,tooltip:t[0],cmd:t[1],onPostRender:ur(r,e)})})},Mr=function(t){var n;Sr(t),n=t,R.each({bold:["Bold","Bold","Meta+B"],italic:["Italic","Italic","Meta+I"],underline:["Underline","Underline","Meta+U"],strikethrough:["Strikethrough","Strikethrough"],subscript:["Subscript","Subscript"],superscript:["Superscript","Superscript"],removeformat:["Clear formatting","RemoveFormat"],newdocument:["New document","mceNewDocument"],cut:["Cut","Cut","Meta+X"],copy:["Copy","Copy","Meta+C"],paste:["Paste","Paste","Meta+V"],selectall:["Select all","SelectAll","Meta+A"]
 },function(t,e){n.addMenuItem(e,{text:t[0],icon:e,shortcut:t[2],cmd:t[1]})}),n.addMenuItem("codeformat",{text:"Code",icon:"code",onclick:ar(n,"code")})},Nr=function(n,i){return function(){var t=this,e=function(){var t="redo"===i?"hasRedo":"hasUndo";return!!n.undoManager&&n.undoManager[t]()};t.disabled(!e()),n.on("Undo Redo AddUndo TypingUndo ClearUndos SwitchMode",function(){t.disabled(n.readonly||!e())})}},Or=function(t){var e,n;(e=t).addMenuItem("undo",{text:"Undo",icon:"undo",shortcut:"Meta+Z",onPostRender:Nr(e,"undo"),cmd:"undo"}),e.addMenuItem("redo",{text:"Redo",icon:"redo",shortcut:"Meta+Y",onPostRender:Nr(e,"redo"),cmd:"redo"}),(n=t).addButton("undo",{tooltip:"Undo",onPostRender:Nr(n,"undo"),cmd:"undo"}),n.addButton("redo&quot
 ;,{tooltip:"Redo",onPostRender:Nr(n,"redo"),cmd:"redo"})},Pr=function(t){var e,n;(e=t).addMenuItem("visualaid",{text:"Visual aids",selectable:!0,onPostRender:(n=e,function(){var e=this;n.on("VisualAid",function(t){e.active(t.hasVisual)}),e.active(n.hasVisual)}),cmd:"mceToggleVisualAid"})},Wr={setup:function(t){var e;t.rtl&&(ue.rtl=!0),t.on("mousedown progressstate",function(){Ue.hideAll()}),(e=t).settings.ui_container&&(h.container=sr(ti.fromDom(document.body),e.settings.ui_container).fold(lt(null),function(t){return t.dom()})),ve.tooltips=!h.iOS,ue.translate=function(t){return M.translate(t)},Rr(t),cr(t),Mr(t),Or(t),br(t),mr(t),wr(t),Pr(t),Tr(t)}},Dr=Pn.extend({recalc:function(t){var e,n,i,r,o,s,a,l,u,c,d,f,h,m,g,p,v,b,y,x,w,_,R,C,k,E,H,T,S=[],M=[];e=t.settings,r=t.items().filter(":visible"),o=t.layoutRect(),i=e.columns||Math.ceil(Math.sqrt(r.length)),n=Math.ceil(r.length/i),b=
 e.spacingH||e.spacing||0,y=e.spacingV||e.spacing||0,x=e.alignH||e.align,w=e.alignV||e.align,p=t.paddingBox,T="reverseRows"in e?e.reverseRows:t.isRtl(),x&&"string"==typeof x&&(x=[x]),w&&"string"==typeof w&&(w=[w]);for(d=0;d<i;d++)S.push(0);for(f=0;f<n;f++)M.push(0);for(f=0;f<n;f++)for(d=0;d<i&&(c=r[f*i+d]);d++)C=(u=c.layoutRect()).minW,k=u.minH,S[d]=C>S[d]?C:S[d],M[f]=k>M[f]?k:M[f];for(E=o.innerW-p.left-p.right,d=_=0;d<i;d++)_+=S[d]+(0<d?b:0),E-=(0<d?b:0)+S[d];for(H=o.innerH-p.top-p.bottom,f=R=0;f<n;f++)R+=M[f]+(0<f?y:0),H-=(0<f?y:0)+M[f];if(_+=p.left+p.right,R+=p.top+p.bottom,(l={}).minW=_+(o.w-o.innerW),l.minH=R+(o.h-o.innerH),l.contentW=l.minW-o.deltaW,l.contentH=l.minH-o.deltaH,l.minW=Math.min(l.minW,o.maxW),l.minH=Math.min(l.minH,o.maxH),l.minW=Math.max(l.minW,o.startMinWidth),l.minH=Math.max(l.minH,o.startMinHeight),!o.autoResize||l.minW===o.minW&&l.minH===o.minH){v
 ar N;o.autoResize&&((l=t.layoutRect(l)).contentW=l.minW-o.deltaW,l.contentH=l.minH-o.deltaH),N="start"===e.packV?0:0<H?Math.floor(H/n):0;var O=0,P=e.flexWidths;if(P)for(d=0;d<P.length;d++)O+=P[d];else O=i;var W=E/O;for(d=0;d<i;d++)S[d]+=P?P[d]*W:W;for(m=p.top,f=0;f<n;f++){for(h=p.left,a=M[f]+N,d=0;d<i&&(c=r[T?f*i+i-1-d:f*i+d]);d++)g=c.settings,u=c.layoutRect(),s=Math.max(S[d],u.startMinWidth),u.x=h,u.y=m,"center"===(v=g.alignH||(x?x[d]||x[0]:null))?u.x=h+s/2-u.w/2:"right"===v?u.x=h+s-u.w:"stretch"===v&&(u.w=s),"center"===(v=g.alignV||(w?w[d]||w[0]:null))?u.y=m+a/2-u.h/2:"bottom"===v?u.y=m+a-u.h:"stretch"===v&&(u.h=a),c.layoutRect(u),h+=s+b,c.recalc&&c.recalc();m+=a+y}}else if(l.w=l.minW,l.h=l.minH,t.layoutRect(l),this.recalc(t),null===t._lastRect){var D=t.parent();D&&(D._lastRect=null,D.recalc())}}}),Ar=ve.extend({renderHtml:function(){var t=this;retur
 n t.classes.add("iframe"),t.canFocus=!1,'<iframe id="'+t._id+'" class="'+t.classes+'" tabindex="-1" src="'+(t.settings.url||"javascript:''")+'" frameborder="0"></iframe>'},src:function(t){this.getEl().src=t},html:function(t,e){var n=this,i=this.getEl().contentWindow.document.body;return i?(i.innerHTML=t,e&&e()):c.setTimeout(function(){n.html(t)}),this}}),Br=ve.extend({init:function(t){this._super(t),this.classes.add("widget").add("infobox"),this.canFocus=!1},severity:function(t){this.classes.remove("error"),this.classes.remove("warning"),this.classes.remove("success"),this.classes.add(t)},help:function(t){this.state.set("help",t)},renderHtml:function(){var t=this,e=t.classPrefix;return'<div id="'+t._id+'" class="'+t.classes+'"><div id="'+t._id+'-body">'+t.encode(t.state.get("text"))+'
 <button role="button" tabindex="-1"><i class="'+e+"ico "+e+'i-help"></i></button></div></div>'},bindStates:function(){var e=this;return e.state.on("change:text",function(t){e.getEl("body").firstChild.data=e.encode(t.value),e.state.get("rendered")&&e.updateLayoutRect()}),e.state.on("change:help",function(t){e.classes.toggle("has-help",t.value),e.state.get("rendered")&&e.updateLayoutRect()}),e._super()}}),Lr=ve.extend({init:function(t){var e=this;e._super(t),e.classes.add("widget").add("label"),e.canFocus=!1,t.multiline&&e.classes.add("autoscroll"),t.strong&&e.classes.add("strong")},initLayoutRect:function(){var t=this,e=t._super();return t.settings.multiline&&(St.getSize(t.getEl()).width>e.maxW&&(e.minW=e.maxW,t.classes.add("multiline")),t.getEl().sty
 le.width=e.minW+"px",e.startMinH=e.h=e.minH=Math.min(e.maxH,St.getSize(t.getEl()).height)),e},repaint:function(){return this.settings.multiline||(this.getEl().style.lineHeight=this.layoutRect().h+"px"),this._super()},severity:function(t){this.classes.remove("error"),this.classes.remove("warning"),this.classes.remove("success"),this.classes.add(t)},renderHtml:function(){var t,e,n=this,i=n.settings.forId,r=n.settings.html?n.settings.html:n.encode(n.state.get("text"));return!i&&(e=n.settings.forName)&&(t=n.getRoot().find("#"+e)[0])&&(i=t._id),i?'<label id="'+n._id+'" class="'+n.classes+'"'+(i?' for="'+i+'"':"")+">"+r+"</label>":'<span id="'+n._id+'" class="'+n.classes+'">'+r+"</span>"},bindStates:function(){var e=this;return e.state.on("change:text",function(t){e.innerHtm
 l(e.encode(t.value)),e.state.get("rendered")&&e.updateLayoutRect()}),e._super()}}),Ir=Oe.extend({Defaults:{role:"toolbar",layout:"flow"},init:function(t){this._super(t),this.classes.add("toolbar")},postRender:function(){return this.items().each(function(t){t.classes.add("toolbar-item")}),this._super()}}),zr=Ir.extend({Defaults:{role:"menubar",containerCls:"menubar",ariaRoot:!0,defaults:{type:"menubutton"}}}),Fr=Wn.extend({init:function(t){var e=this;e._renderOpen=!0,e._super(t),t=e.settings,e.classes.add("menubtn"),t.fixedWidth&&e.classes.add("fixed-width"),e.aria("haspopup",!0),e.state.set("menu",t.menu||e.render())},showMenu:function(t){var e,n=this;if(n.menu&&n.menu.visible()&&!1!==t)return n.hideMenu();n.menu||(e=n.state.get("menu")||[],n.classes.add("opened"),e.length?e={type:"menu",animate:!0,items
 :e}:(e.type=e.type||"menu",e.animate=!0),e.renderTo?n.menu=e.parent(n).show().renderTo():n.menu=Ce.create(e).parent(n).renderTo(),n.fire("createmenu"),n.menu.reflow(),n.menu.on("cancel",function(t){t.control.parent()===n.menu&&(t.stopPropagation(),n.focus(),n.hideMenu())}),n.menu.on("select",function(){n.focus()}),n.menu.on("show hide",function(t){"hide"===t.type&&t.control.parent()===n&&n.classes.remove("opened-under"),t.control===n.menu&&(n.activeMenu("show"===t.type),n.classes.toggle("opened","show"===t.type)),n.aria("expanded","show"===t.type)}).fire("show")),n.menu.show(),n.menu.layoutRect({w:n.layoutRect().w}),n.menu.repaint(),n.menu.moveRel(n.getEl(),n.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"]);var i=n.menu.layoutRect(),r=n.$el.offset().top+n.layoutRect().h;r>i.y&&
 r<i.y+i.h&&n.classes.add("opened-under"),n.fire("showmenu")},hideMenu:function(){this.menu&&(this.menu.items().each(function(t){t.hideMenu&&t.hideMenu()}),this.menu.hide())},activeMenu:function(t){this.classes.toggle("active",t)},renderHtml:function(){var t,e=this,n=e._id,i=e.classPrefix,r=e.settings.icon,o=e.state.get("text"),s="";return(t=e.settings.image)?(r="none","string"!=typeof t&&(t=window.getSelection?t[0]:t[1]),t=" style=\"background-image: url('"+t+"')\""):t="",o&&(e.classes.add("btn-has-text"),s='<span class="'+i+'txt">'+e.encode(o)+"</span>"),r=e.settings.icon?i+"ico "+i+"i-"+r:"",e.aria("role",e.parent()instanceof zr?"menuitem":"button"),'<div id="'+n+'" class="'+e.classes+'" tabindex="-1&qu
 ot; aria-labelledby="'+n+'"><button id="'+n+'-open" role="presentation" type="button" tabindex="-1">'+(r?'<i class="'+r+'"'+t+"></i>":"")+s+' <i class="'+i+'caret"></i></button></div>'},postRender:function(){var r=this;return r.on("click",function(t){t.control===r&&function(t,e){for(;t;){if(e===t)return!0;t=t.parentNode}return!1}(t.target,r.getEl())&&(r.focus(),r.showMenu(!t.aria),t.aria&&r.menu.items().filter(":visible")[0].focus())}),r.on("mouseenter",function(t){var e,n=t.control,i=r.parent();n&&i&&n instanceof Fr&&n.parent()===i&&(i.items().filter("MenuButton").each(function(t){t.hideMenu&&t!==n&&(t.menu&&t.menu.visible()&&(e=!0),t.hideMenu())}),e&&(n.focus(),n.showMenu()))}),r._super()},bindStates:function(){var
  t=this;return t.state.on("change:menu",function(){t.menu&&t.menu.remove(),t.menu=null}),t._super()},remove:function(){this._super(),this.menu&&this.menu.remove()}});function Ur(i,r){var o,s,a=this,l=ue.classPrefix;a.show=function(t,e){function n(){o&&(Mt(i).append('<div class="'+l+"throbber"+(r?" "+l+"throbber-inline":"")+'"></div>'),e&&e())}return a.hide(),o=!0,t?s=c.setTimeout(n,t):n(),a},a.hide=function(){var t=i.lastChild;return c.clearTimeout(s),t&&-1!==t.className.indexOf("throbber")&&t.parentNode.removeChild(t),o=!1,a}}var Vr=Ue.extend({Defaults:{defaultType:"menuitem",border:1,layout:"stack",role:"application",bodyRole:"menu",ariaRoot:!0},init:function(t){if(t.autohide=!0,t.constrainToViewport=!0,"function"==typeof t.items&&(t.itemsFactory=t.items,t.items=[]),t.itemDefaults)for(var e=t.ite
 ms,n=e.length;n--;)e[n]=R.extend({},t.itemDefaults,e[n]);this._super(t),this.classes.add("menu"),t.animate&&11!==h.ie&&this.classes.add("animate")},repaint:function(){return this.classes.toggle("menu-align",!0),this._super(),this.getEl().style.height="",this.getEl("body").style.height="",this},cancel:function(){this.hideAll(),this.fire("select")},load:function(){var e,n=this;function i(){n.throbber&&(n.throbber.hide(),n.throbber=null)}n.settings.itemsFactory&&(n.throbber||(n.throbber=new Ur(n.getEl("body"),!0),0===n.items().length?(n.throbber.show(),n.fire("loading")):n.throbber.show(100,function(){n.items().remove(),n.fire("loading")}),n.on("hide close",i)),n.requestTime=e=(new Date).getTime(),n.settings.itemsFactory(function(t){0!==t.length?n.requestTime===e&&(n.getEl().style.width="",n.getEl("body").style.width=&
 quot;",i(),n.items().remove(),n.getEl("body").innerHTML="",n.add(t),n.renderNew(),n.fire("loaded")):n.hide()}))},hideAll:function(){return this.find("menuitem").exec("hideMenu"),this._super()},preRender:function(){var n=this;return n.items().each(function(t){var e=t.settings;if(e.icon||e.image||e.selectable)return!(n._hasIcons=!0)}),n.settings.itemsFactory&&n.on("postrender",function(){n.settings.itemsFactory&&n.load()}),n.on("show hide",function(t){t.control===n&&("show"===t.type?c.setTimeout(function(){n.classes.add("in")},0):n.classes.remove("in"))}),n._super()}}),qr=Fr.extend({init:function(i){var e,r,o,n,s=this;s._super(i),i=s.settings,s._values=e=i.values,e&&("undefined"!=typeof i.value&&function t(e){for(var n=0;n<e.length;n++){if(r=e[n].selected||i.value===e[n].value)return o=o||e[n].text,s.state.set("value",e
 [n].value),!0;if(e[n].menu&&t(e[n].menu))return!0}}(e),!r&&0<e.length&&(o=e[0].text,s.state.set("value",e[0].value)),s.state.set("menu",e)),s.state.set("text",i.text||o),s.classes.add("listbox"),s.on("select",function(t){var e=t.control;n&&(t.lastControl=n),i.multiple?e.active(!e.active()):s.value(t.control.value()),n=e})},value:function(n){return 0===arguments.length?this.state.get("value"):(void 0===n||(this.settings.values&&!function e(t){return wt(t,function(t){return t.menu?e(t.menu):t.value===n})}(this.settings.values)?null===n&&this.state.set("value",null):this.state.set("value",n)),this)},bindStates:function(){var i=this;return i.on("show",function(t){var e,n;e=t.control,n=i.value(),e instanceof Vr&&e.items().each(function(t){t.hasMenus()||t.active(t.value()===n)})}),i.state.on("change:value",function(e){var n=function
  t(e,n){var i;if(e)for(var r=0;r<e.length;r++){if(e[r].value===n)return e[r];if(e[r].menu&&(i=t(e[r].menu,n)))return i}}(i.state.get("menu"),e.value);n?i.text(n.text):i.text(i.settings.text)}),i._super()}}),Yr=ve.extend({Defaults:{border:0,role:"menuitem"},init:function(t){var e,n=this;n._super(t),t=n.settings,n.classes.add("menu-item"),t.menu&&n.classes.add("menu-item-expand"),t.preview&&n.classes.add("menu-item-preview"),"-"!==(e=n.state.get("text"))&&"|"!==e||(n.classes.add("menu-item-sep"),n.aria("role","separator"),n.state.set("text","-")),t.selectable&&(n.aria("role","menuitemcheckbox"),n.classes.add("menu-item-checkbox"),t.icon="selected"),t.preview||t.selectable||n.classes.add("menu-item-normal"),n.on("mousedown",function(t){t.preventDefault()}),
 t.menu&&!t.ariaHideMenu&&n.aria("haspopup",!0)},hasMenus:function(){return!!this.settings.menu},showMenu:function(){var e,n=this,t=n.settings,i=n.parent();if(i.items().each(function(t){t!==n&&t.hideMenu()}),t.menu){(e=n.menu)?e.show():((e=t.menu).length?e={type:"menu",items:e}:e.type=e.type||"menu",i.settings.itemDefaults&&(e.itemDefaults=i.settings.itemDefaults),(e=n.menu=Ce.create(e).parent(n).renderTo()).reflow(),e.on("cancel",function(t){t.stopPropagation(),n.focus(),e.hide()}),e.on("show hide",function(t){t.control.items&&t.control.items().each(function(t){t.active(t.settings.selected)})}).fire("show"),e.on("hide",function(t){t.control===e&&n.classes.remove("selected")}),e.submenu=!0),e._parentMenu=i,e.classes.add("menu-sub");var r=e.testMoveRel(n.getEl(),n.isRtl()?["tl-tr","bl-br","tr-tl","br-bl"]:[&qu
 ot;tr-tl","br-bl","tl-tr","bl-br"]);e.moveRel(n.getEl(),r),r="menu-sub-"+(e.rel=r),e.classes.remove(e._lastRel).add(r),e._lastRel=r,n.classes.add("selected"),n.aria("expanded",!0)}},hideMenu:function(){var t=this;return t.menu&&(t.menu.items().each(function(t){t.hideMenu&&t.hideMenu()}),t.menu.hide(),t.aria("expanded",!1)),t},renderHtml:function(){var t,e=this,n=e._id,i=e.settings,r=e.classPrefix,o=e.state.get("text"),s=e.settings.icon,a="",l=i.shortcut,u=e.encode(i.url);function c(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function d(t){var e=i.match||"";return e?t.replace(new RegExp(c(e),"gi"),function(t){return"!mce~match["+t+"]mce~match!"}):t}function f(t){return t.replace(new RegExp(c("!mce~match["),"g"),"<b>").replace(new RegExp(c("]mce~match!"),"g"),&q
 uot;</b>")}return s&&e.parent().classes.add("menu-has-icons"),i.image&&(a=" style=\"background-image: url('"+i.image+"')\""),l&&(l=function(t){var e,n,i={};for(i=h.mac?{alt:"&#x2325;",ctrl:"&#x2318;",shift:"&#x21E7;",meta:"&#x2318;"}:{meta:"Ctrl"},t=t.split("+"),e=0;e<t.length;e++)(n=i[t[e].toLowerCase()])&&(t[e]=n);return t.join("+")}(l)),s=r+"ico "+r+"i-"+(e.settings.icon||"none"),t="-"!==o?'<i class="'+s+'"'+a+"></i>\xa0":"",o=f(e.encode(d(o))),u=f(e.encode(d(u))),'<div id="'+n+'" class="'+e.classes+'" tabindex="-1">'+t+("-"!==o?'<span id="'+n+'-text" class="'+r+'text">'+o+"</span>":"")+(l?'<div id="'+n+'-shortcut" class=
 "'+r+'menu-shortcut">'+l+"</div>":"")+(i.menu?'<div class="'+r+'caret"></div>':"")+(u?'<div class="'+r+'menu-item-link">'+u+"</div>":"")+"</div>"},postRender:function(){var e=this,n=e.settings,t=n.textStyle;if("function"==typeof t&&(t=t.call(this)),t){var i=e.getEl("text");i&&(i.setAttribute("style",t),e._textStyle=t)}return e.on("mouseenter click",function(t){t.control===e&&(n.menu||"click"!==t.type?(e.showMenu(),t.aria&&e.menu.focus(!0)):(e.fire("select"),c.requestAnimationFrame(function(){e.parent().hideAll()})))}),e._super(),e},hover:function(){return this.parent().items().each(function(t){t.classes.remove("selected")}),this.classes.toggle("selected",!0),this},active:function(t){return function(t,e){var n=t._textStyle;if(n){var i=t.getEl(&quo
 t;text");i.setAttribute("style",n),e&&(i.style.color="",i.style.backgroundColor="")}}(this,t),void 0!==t&&this.aria("checked",t),this._super(t)},remove:function(){this._super(),this.menu&&this.menu.remove()}}),$r=Bn.extend({Defaults:{classes:"radio",role:"radio"}}),Xr=ve.extend({renderHtml:function(){var t=this,e=t.classPrefix;return t.classes.add("resizehandle"),"both"===t.settings.direction&&t.classes.add("resizehandle-both"),t.canFocus=!1,'<div id="'+t._id+'" class="'+t.classes+'"><i class="'+e+"ico "+e+'i-resize"></i></div>'},postRender:function(){var e=this;e._super(),e.resizeDragHelper=new Re(this._id,{start:function(){e.fire("ResizeStart")},drag:function(t){"both"!==e.settings.direction&&(t.deltaX=0),e.fire("Resize",t)},stop:function(){e.fire("Re
 sizeEnd")}})},remove:function(){return this.resizeDragHelper&&this.resizeDragHelper.destroy(),this._super()}});function jr(t){var e="";if(t)for(var n=0;n<t.length;n++)e+='<option value="'+t[n]+'">'+t[n]+"</option>";return e}var Jr=ve.extend({Defaults:{classes:"selectbox",role:"selectbox",options:[]},init:function(t){var n=this;n._super(t),n.settings.size&&(n.size=n.settings.size),n.settings.options&&(n._options=n.settings.options),n.on("keydown",function(t){var e;13===t.keyCode&&(t.preventDefault(),n.parents().reverse().each(function(t){if(t.toJSON)return e=t,!1}),n.fire("submit",{data:e.toJSON()}))})},options:function(t){return arguments.length?(this.state.set("options",t),this):this.state.get("options")},renderHtml:function(){var t,e=this,n="";return t=jr(e._options),e.size&&(n=' size = "'+e.size+'"'),'<select 
 id="'+e._id+'" class="'+e.classes+'"'+n+">"+t+"</select>"},bindStates:function(){var e=this;return e.state.on("change:options",function(t){e.getEl().innerHTML=jr(t.value)}),e._super()}});function Gr(t,e,n){return t<e&&(t=e),n<t&&(t=n),t}function Kr(t,e,n){t.setAttribute("aria-"+e,n)}function Zr(t,e){var n,i,r,o,s;"v"===t.settings.orientation?(r="top",i="height",n="h"):(r="left",i="width",n="w"),s=t.getEl("handle"),o=((t.layoutRect()[n]||100)-St.getSize(s)[i])*((e-t._minValue)/(t._maxValue-t._minValue))+"px",s.style[r]=o,s.style.height=t.layoutRect().h+"px",Kr(s,"valuenow",e),Kr(s,"valuetext",""+t.settings.previewFilter(e)),Kr(s,"valuemin",t._minValue),Kr(s,"valuemax",t._maxValue)}var Qr=ve.extend({init:function(t){var e=this;t.previewFilter||(t.p
 reviewFilter=function(t){return Math.round(100*t)/100}),e._super(t),e.classes.add("slider"),"v"===t.orientation&&e.classes.add("vertical"),e._minValue=yt(t.minValue)?t.minValue:0,e._maxValue=yt(t.maxValue)?t.maxValue:100,e._initValue=e.state.get("value")},renderHtml:function(){var t=this._id,e=this.classPrefix;return'<div id="'+t+'" class="'+this.classes+'"><div id="'+t+'-handle" class="'+e+'slider-handle" role="slider" tabindex="-1"></div></div>'},reset:function(){this.value(this._initValue).repaint()},postRender:function(){var t,e,n,i,r,o,s,a,l,u,c,d,f,h,m=this;t=m._minValue,e=m._maxValue,"v"===m.settings.orientation?(n="screenY",i="top",r="height",o="h"):(n="screenX",i="left",r="width",o="w"),m._super(),function(o,s){function e(t){var e,n,i,r;e=Gr(e=(((e=m.value
 ())+(r=n=o))/((i=s)-r)+.05*t)*(i-n)-n,o,s),m.value(e),m.fire("dragstart",{value:e}),m.fire("drag",{value:e}),m.fire("dragend",{value:e})}m.on("keydown",function(t){switch(t.keyCode){case 37:case 38:e(-1);break;case 39:case 40:e(1)}})}(t,e),s=t,a=e,l=m.getEl("handle"),m._dragHelper=new Re(m._id,{handle:m._id+"-handle",start:function(t){u=t[n],c=parseInt(m.getEl("handle").style[i],10),d=(m.layoutRect()[o]||100)-St.getSize(l)[r],m.fire("dragstart",{value:h})},drag:function(t){var e=t[n]-u;f=Gr(c+e,0,d),l.style[i]=f+"px",h=s+f/d*(a-s),m.value(h),m.tooltip().text(""+m.settings.previewFilter(h)).show().moveRel(l,"bc tc"),m.fire("drag",{value:h})},stop:function(){m.tooltip().hide(),m.fire("dragend",{value:h})}})},repaint:function(){this._super(),Zr(this,this.value())},bindStates:function(){var e=this;return e.state.on("change:value",function(t){Zr(e,t.
 value)}),e._super()}}),to=ve.extend({renderHtml:function(){return this.classes.add("spacer"),this.canFocus=!1,'<div id="'+this._id+'" class="'+this.classes+'"></div>'}}),eo=Fr.extend({Defaults:{classes:"widget btn splitbtn",role:"button"},repaint:function(){var t,e,n=this.getEl(),i=this.layoutRect();return this._super(),t=n.firstChild,e=n.lastChild,Mt(t).css({width:i.w-St.getSize(e).width,height:i.h-2}),Mt(e).css({height:i.h-2}),this},activeMenu:function(t){Mt(this.getEl().lastChild).toggleClass(this.classPrefix+"active",t)},renderHtml:function(){var t,e,n=this,i=n._id,r=n.classPrefix,o=n.state.get("icon"),s=n.state.get("text"),a=n.settings,l="";return(t=a.image)?(o="none","string"!=typeof t&&(t=window.getSelection?t[0]:t[1]),t=" style=\"background-image: url('"+t+"')\""):t="",o=a.icon?r+"ico "+r+"i-&
 quot;+o:"",s&&(n.classes.add("btn-has-text"),l='<span class="'+r+'txt">'+n.encode(s)+"</span>"),e="boolean"==typeof a.active?' aria-pressed="'+a.active+'"':"",'<div id="'+i+'" class="'+n.classes+'" role="button"'+e+' tabindex="-1"><button type="button" hidefocus="1" tabindex="-1">'+(o?'<i class="'+o+'"'+t+"></i>":"")+l+'</button><button type="button" class="'+r+'open" hidefocus="1" tabindex="-1">'+(n._menuBtnText?(o?"\xa0":"")+n._menuBtnText:"")+' <i class="'+r+'caret"></i></button></div>'},postRender:function(){var n=this.settings.onclick;return this.on("click",function(t){var e=t.target;if(t.control===this)for(;e;){if(t.aria&&"down&qu
 ot;!==t.aria.key||"BUTTON"===e.nodeName&&-1===e.className.indexOf("open"))return t.stopImmediatePropagation(),void(n&&n.call(this,t));e=e.parentNode}}),delete this.settings.onclick,this._super()}}),no=or.extend({Defaults:{containerClass:"stack-layout",controlClass:"stack-layout-item",endClass:"break"},isNative:function(){return!0}}),io=We.extend({Defaults:{layout:"absolute",defaults:{type:"panel"}},activateTab:function(n){var t;this.activeTabId&&(t=this.getEl(this.activeTabId),Mt(t).removeClass(this.classPrefix+"active"),t.setAttribute("aria-selected","false")),this.activeTabId="t"+n,(t=this.getEl("t"+n)).setAttribute("aria-selected","true"),Mt(t).addClass(this.classPrefix+"active"),this.items()[n].show().fire("showtab"),this.reflow(),this.items().each(function(t,e){n!==e&&t.hide()})},renderHtm
 l:function(){var i=this,t=i._layout,r="",o=i.classPrefix;return i.preRender(),t.preRender(i),i.items().each(function(t,e){var n=i._id+"-t"+e;t.aria("role","tabpanel"),t.aria("labelledby",n),r+='<div id="'+n+'" class="'+o+'tab" unselectable="on" role="tab" aria-controls="'+t._id+'" aria-selected="false" tabIndex="-1">'+i.encode(t.settings.title)+"</div>"}),'<div id="'+i._id+'" class="'+i.classes+'" hidefocus="1" tabindex="-1"><div id="'+i._id+'-head" class="'+o+'tabs" role="tablist">'+r+'</div><div id="'+i._id+'-body" class="'+i.bodyClasses+'">'+t.renderHtml(i)+"</div></div>"},postRender:function(){var i=this;i._super(),i.settings.activeTab=i.settings.activeTab||0,i.activateTab(i.settings.activeTab),this.on(&qu
 ot;click",function(t){var e=t.target.parentNode;if(e&&e.id===i._id+"-head")for(var n=e.childNodes.length;n--;)e.childNodes[n]===t.target&&i.activateTab(n)})},initLayoutRect:function(){var t,e,n,i=this;e=(e=St.getSize(i.getEl("head")).width)<0?0:e,n=0,i.items().each(function(t){e=Math.max(e,t.layoutRect().minW),n=Math.max(n,t.layoutRect().minH)}),i.items().each(function(t){t.settings.x=0,t.settings.y=0,t.settings.w=e,t.settings.h=n,t.layoutRect({x:0,y:0,w:e,h:n})});var r=St.getSize(i.getEl("head")).height;return i.settings.minWidth=e,i.settings.minHeight=n+r,(t=i._super()).deltaH+=r,t.innerH=t.h-t.deltaH,t}}),ro=ve.extend({init:function(t){var n=this;n._super(t),n.classes.add("textbox"),t.multiline?n.classes.add("multiline"):(n.on("keydown",function(t){var e;13===t.keyCode&&(t.preventDefault(),n.parents().reverse().each(function(t){if(t.toJSON)return e=t,!1}),n.fire("submit",{data:e.
 toJSON()}))}),n.on("keyup",function(t){n.state.set("value",t.target.value)}))},repaint:function(){var t,e,n,i,r,o=this,s=0;t=o.getEl().style,e=o._layoutRect,r=o._lastRepaintRect||{};var a=document;return!o.settings.multiline&&a.all&&(!a.documentMode||a.documentMode<=8)&&(t.lineHeight=e.h-s+"px"),i=(n=o.borderBox).left+n.right+8,s=n.top+n.bottom+(o.settings.multiline?8:0),e.x!==r.x&&(t.left=e.x+"px",r.x=e.x),e.y!==r.y&&(t.top=e.y+"px",r.y=e.y),e.w!==r.w&&(t.width=e.w-i+"px",r.w=e.w),e.h!==r.h&&(t.height=e.h-s+"px",r.h=e.h),o._lastRepaintRect=r,o.fire("repaint",{},!1),o},renderHtml:function(){var e,t,n=this,i=n.settings;return e={id:n._id,hidefocus:"1"},R.each(["rows","spellcheck","maxLength","size","readonly","min","max","step","list","pattern&
 quot;,"placeholder","required","multiple"],function(t){e[t]=i[t]}),n.disabled()&&(e.disabled="disabled"),i.subtype&&(e.type=i.subtype),(t=St.create(i.multiline?"textarea":"input",e)).value=n.state.get("value"),t.className=n.classes.toString(),t.outerHTML},value:function(t){return arguments.length?(this.state.set("value",t),this):(this.state.get("rendered")&&this.state.set("value",this.getEl().value),this.state.get("value"))},postRender:function(){var e=this;e.getEl().value=e.state.get("value"),e._super(),e.$el.on("change",function(t){e.state.set("value",t.target.value),e.fire("change",t)})},bindStates:function(){var e=this;return e.state.on("change:value",function(t){e.getEl().value!==t.value&&(e.getEl().value=t.value)}),e.state.on("change:disabled",function(t){e.getEl().disabled=t.va
 lue}),e._super()},remove:function(){this.$el.off(),this._super()}}),oo=function(){return{Selector:Vt,Collection:$t,ReflowQueue:te,Control:ue,Factory:Ce,KeyboardNavigation:Ee,Container:Oe,DragHelper:Re,Scrollable:Pe,Panel:We,Movable:ge,Resizable:De,FloatPanel:Ue,Window:je,MessageBox:Ze,Tooltip:pe,Widget:ve,Progress:be,Notification:xe,Layout:On,AbsoluteLayout:Pn,Button:Wn,ButtonGroup:An,Checkbox:Bn,ComboBox:In,ColorBox:zn,PanelButton:Fn,ColorButton:Vn,ColorPicker:Yn,Path:Xn,ElementPath:jn,FormItem:Jn,Form:Gn,FieldSet:Kn,FilePicker:nr,FitLayout:ir,FlexLayout:rr,FlowLayout:or,FormatControls:Wr,GridLayout:Dr,Iframe:Ar,InfoBox:Br,Label:Lr,Toolbar:Ir,MenuBar:zr,MenuButton:Fr,MenuItem:Yr,Throbber:Ur,Menu:Vr,ListBox:qr,Radio:$r,ResizeHandle:Xr,SelectBox:Jr,Slider:Qr,Spacer:to,SplitButton:eo,StackLayout:no,TabPanel:io,TextBox:ro,DropZone:$n,BrowseButton:Dn}},so=function(n){n.ui?R.each(oo(),function(t,e){n.ui[e]=t}):n.ui=oo()};R.each(oo(),function(t,e){Ce.add(e,t)}),so(window.tinymce?window.ti
 nymce:{}),o.add("inlite",function(t){var e=Nn();return Wr.setup(t),Cn(t,e),Qe(t,e)})}();
</del><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of file
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+!function(_){"use strict";var u,t,e,n,i,r,o=tinymce.util.Tools.resolve("tinymce.ThemeManager"),h=tinymce.util.Tools.resolve("tinymce.Env"),v=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),c=tinymce.util.Tools.resolve("tinymce.util.Delay"),s=function(t){return t.reduce(function(t,e){return Array.isArray(e)?t.concat(s(e)):t.concat(e)},[])},a={flatten:s},l=function(t,e){for(var n=0;n<e.length;n++){var i=(0,e[n])(t);if(i)return i}return null},d=function(t,e){return{id:t,rect:e}},f=function(t){return{x:t.left,y:t.top,w:t.width,h:t.height}},m=function(t){return{left:t.x,top:t.y,width:t.w,height:t.h,right:t.x+t.w,bottom:t.y+t.h}},g=function(t){var e=v.DOM.getViewPort();return{x:t.x+e.x,y:t.y+e.y,w:t.w,h:t.h}},p=function(t){var e=t.getBoundingClientRect();return g({x:e.left,y:e.top,w:Math.max(t.clientWidth,t.offsetWidth),h:Math.max(t.clien
 tHeight,t.offsetHeight)})},b=function(t,e){return p(e)},y=function(t){return p(t.getContentAreaContainer()||t.getBody())},x=function(t){var e=t.selection.getBoundingClientRect();return e?g(f(e)):null},w=function(n,i){return function(t){for(var e=0;e<i.length;e++)if(i[e].predicate(n))return d(i[e].id,b(t,n));return null}},R=function(i,r){return function(t){for(var e=0;e<i.length;e++)for(var n=0;n<r.length;n++)if(r[n].predicate(i[e]))return d(r[n].id,b(t,i[e]));return null}},C=tinymce.util.Tools.resolve("tinymce.util.Tools"),k=function(t,e){return{id:t,predicate:e}},E=function(t){return C.map(t,function(t){return k(t.id,t.predicate)})},H=function(e){return function(t){return t.selection.isCollapsed()?null:d(e,x(t))}},T=function(i,r){return function(t){var e,n=t.schema.getTextBlockElements();for(e=0;e<i.length;e++)if("TABLE"===i[e].nodeName)return null;for(e=0;e<i.length;e++)if(i[e].nodeName in n)return t.dom.isEmpty(i[e])?d(r,x(t)):null;return null}}
 ,S=function(t){t.fire("SkinLoaded")},M=function(t){return t.fire("BeforeRenderUI")},N=tinymce.util.Tools.resolve("tinymce.EditorManager"),O=function(e){return function(t){return typeof t===e}},P=function(t){return Array.isArray(t)},W=function(t){return O("string")(t)},D=function(t){return O("number")(t)},A=function(t){return O("boolean")(t)},B=function(t){return O("function")(t)},L=(O("object"),P),I=function(t,e){if(e(t))return!0;throw new Error("Default value doesn't match requested type.")},z=function(r){return function(t,e,n){var i=t.settings;return I(n,r),e in i&&r(i[e])?i[e]:n}},F={getStringOr:z(W),getBoolOr:z(A),getNumberOr:z(D),getHandlerOr:z(B),getToolbarItemsOr:(u=L,function(t,e,n){var i,r,o,s,a,l=e in t.settings?t.settings[e]:n;return I(n,u),r=n,L(i=l)?i:W(i)?"string"==typeof(s=i)?(a=/[ ,]/,s.split(a).filter(function(t){return 0<t.length})):s:A(i)?(o=r,!1===i?[]:o
 ):r})},U=tinymce.util.Tools.resolve("tinymce.geom.Rect"),V=function(t,e){return{rect:t,position:e}},q=function(t,e){return{x:e.x,y:e.y,w:t.w,h:t.h}},Y=function(t,e,n,i,r){var o,s,a,l={x:i.x,y:i.y,w:i.w+(i.w<r.w+n.w?r.w:0),h:i.h+(i.h<r.h+n.h?r.h:0)};return o=U.findBestRelativePosition(r,n,l,t),n=U.clamp(n,l),o?(s=U.relativePosition(r,n,o),a=q(r,s),V(a,o)):(n=U.intersect(l,n))?((o=U.findBestRelativePosition(r,n,l,e))?(s=U.relativePosition(r,n,o),a=q(r,s)):a=q(r,n),V(a,o)):null},$=function(t,e,n){return Y(["cr-cl","cl-cr"],["bc-tc","bl-tl","br-tr"],t,e,n)},X=function(t,e,n){return Y(["tc-bc","bc-tc","tl-bl","bl-tl","tr-br","br-tr","cr-cl","cl-cr"],["bc-tc","bl-tl","br-tr","cr-cl"],t,e,n)},j=function(t,e,n,i){var r;return"function"==typeof t?(r=t({elementRect:m(e),contentAreaRect:m(n),panelRect
 :m(i)}),f(r)):i},J=function(t){return t.panelRect},G=function(t){return F.getToolbarItemsOr(t,"selection_toolbar",["bold","italic","|","quicklink","h2","h3","blockquote"])},K=function(t){return F.getToolbarItemsOr(t,"insert_toolbar",["quickimage","quicktable"])},Z=function(t){return F.getHandlerOr(t,"inline_toolbar_position_handler",J)},Q=function(t){var e,n,i,r,o=t.settings;return o.skin_url?(i=t,r=o.skin_url,i.documentBaseURI.toAbsolute(r)):(e=o.skin,n=N.baseURL+"/skins/",e?n+e:n+"lightgray")},tt=function(t){return!1===t.settings.skin},et=function(i,r){var t=Q(i),e=function(){var t,e,n;e=r,n=function(){t._skinLoaded=!0,S(t),e()},(t=i).initialized?n():t.on("init",n)};tt(i)?e():(v.DOM.styleSheetLoader.load(t+"/skin.min.css",e),i.contentCSS.push(t+"/content.inline.min.css"))},nt=function(t){var e,n,i,r,o=t.contextToo
 lbars;return a.flatten([o||[],(e=t,n="img",i="image",r="alignleft aligncenter alignright",{predicate:function(t){return e.dom.is(t,n)},id:i,items:r})])},it=function(t,e){var n,i,r,o,s;return s=(o=t).selection.getNode(),i=o.dom.getParents(s,"*"),r=E(e),(n=l(t,[w(i[0],r),H("text"),T(i,"insert"),R(i,r)]))&&n.rect?n:null},rt=function(i,r){return function(){var t,e,n;i.removed||(n=i,_.document.activeElement!==n.getBody())||(t=nt(i),(e=it(i,t))?r.show(i,e.id,e.rect,t):r.hide())}},ot=function(t,e){var n,i,r,o,s,a=c.throttle(rt(t,e),0),l=c.throttle((r=rt(n=t,i=e),function(){n.removed||i.inForm()||r()}),0),u=(o=t,s=e,function(){var t=nt(o),e=it(o,t);e&&s.reposition(o,e.id,e.rect)});t.on("blur hide ObjectResizeStart",e.hide),t.on("click",a),t.on("nodeChange mouseup",l),t.on("ResizeEditor keyup",a),t.on("ResizeWindow",u),v.DOM.bind(h.container,"scroll",u),t.on
 ("remove",function(){v.DOM.unbind(h.container,"scroll",u),e.remove()}),t.shortcuts.add("Alt+F10,F10","",e.focus)},st=function(t,e){return et(t,function(){var n,i;ot(t,e),i=e,(n=t).shortcuts.remove("meta+k"),n.shortcuts.add("meta+k","",function(){var t=nt(n),e=l(n,[H("quicklink")]);e&&i.show(n,e.id,e.rect,t)})}),{}},at=function(t,e){return t.inline?st(t,e):function(t){throw new Error(t)}("inlite theme only supports inline mode.")},lt=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e]},ut=function(t){return function(){return t}},ct=ut(!1),dt=ut(!0),ft=ct,ht=dt,mt=function(){return gt},gt=(i={fold:function(t,e){return t()},is:ft,isSome:ft,isNone:ht,getOr:n=function(t){return t},getOrThunk:e=function(t){return t()},getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:function(){return null},getOrUndefined:function(){return unde
 fined},or:n,orThunk:e,map:mt,ap:mt,each:function(){},bind:mt,flatten:mt,exists:ft,forall:ht,filter:mt,equals:t=function(t){return t.isNone()},equals_:t,toArray:function(){return[]},toString:ut("none()")},Object.freeze&&Object.freeze(i),i),pt=function(n){var t=function(){return n},e=function(){return r},i=function(t){return t(n)},r={fold:function(t,e){return e(n)},is:function(t){return n===t},isSome:ht,isNone:ft,getOr:t,getOrThunk:t,getOrDie:t,getOrNull:t,getOrUndefined:t,or:e,orThunk:e,map:function(t){return pt(t(n))},ap:function(t){return t.fold(mt,function(t){return pt(t(n))})},each:function(t){t(n)},bind:i,flatten:t,exists:i,forall:i,filter:function(t){return t(n)?r:gt},equals:function(t){return t.is(n)},equals_:function(t,e){return t.fold(ft,function(t){return e(n,t)})},toArray:function(){return[n]},toString:function(){return"some("+n+")"}};return r},vt={some:pt,none:mt,from:function(t){return null===t||t===undefined?gt:pt(t)}},bt=function(e
 ){return function(t){return function(t){if(null===t)return"null";var e=typeof t;return"object"===e&&Array.prototype.isPrototypeOf(t)?"array":"object"===e&&String.prototype.isPrototypeOf(t)?"string":e}(t)===e}},yt=bt("function"),xt=bt("number"),wt=(r=Array.prototype.indexOf)===undefined?function(t,e){return Ht(t,e)}:function(t,e){return r.call(t,e)},_t=function(t,e){return Et(t,e).isSome()},Rt=function(t,e){for(var n=t.length,i=new Array(n),r=0;r<n;r++){var o=t[r];i[r]=e(o,r,t)}return i},Ct=function(t,e){for(var n=0,i=t.length;n<i;n++)e(t[n],n,t)},kt=function(t,e){for(var n=[],i=0,r=t.length;i<r;i++){var o=t[i];e(o,i,t)&&n.push(o)}return n},Et=function(t,e){for(var n=0,i=t.length;n<i;n++)if(e(t[n],n,t))return vt.some(n);return vt.none()},Ht=function(t,e){for(var n=0,i=t.length;n<i;++n)if(t[n]===e)return n;return-1},Tt=Array.prototype.push,St=(Array.prototype.slice,yt(Array.fro
 m)&&Array.from,0),Mt={id:function(){return"mceu_"+St++},create:function(t,e,n){var i=_.document.createElement(t);return v.DOM.setAttribs(i,e),"string"==typeof n?i.innerHTML=n:C.each(n,function(t){t.nodeType&&i.appendChild(t)}),i},createFragment:function(t){return v.DOM.createFragment(t)},getWindowSize:function(){return v.DOM.getViewPort()},getSize:function(t){var e,n;if(t.getBoundingClientRect){var i=t.getBoundingClientRect();e=Math.max(i.width||i.right-i.left,t.offsetWidth),n=Math.max(i.height||i.bottom-i.bottom,t.offsetHeight)}else e=t.offsetWidth,n=t.offsetHeight;return{width:e,height:n}},getPos:function(t,e){return v.DOM.getPos(t,e||Mt.getContainer())},getContainer:function(){return h.container?h.container:_.document.body},getViewPort:function(t){return v.DOM.getViewPort(t)},get:function(t){return _.document.getElementById(t)},addClass:function(t,e){return v.DOM.addClass(t,e)},removeClass:function(t,e){return v.DOM.removeClass(t,e)},hasClass:f
 unction(t,e){return v.DOM.hasClass(t,e)},toggleClass:function(t,e,n){return v.DOM.toggleClass(t,e,n)},css:function(t,e,n){return v.DOM.setStyle(t,e,n)},getRuntimeStyle:function(t,e){return v.DOM.getStyle(t,e,!0)},on:function(t,e,n,i){return v.DOM.bind(t,e,n,i)},off:function(t,e,n){return v.DOM.unbind(t,e,n)},fire:function(t,e,n){return v.DOM.fire(t,e,n)},innerHtml:function(t,e){v.DOM.setHTML(t,e)}},Nt=tinymce.util.Tools.resolve("tinymce.dom.DomQuery"),Ot=tinymce.util.Tools.resolve("tinymce.util.Class"),Pt=tinymce.util.Tools.resolve("tinymce.util.EventDispatcher"),Wt=function(t){var e;if(t)return"number"==typeof t?{top:t=t||0,left:t,bottom:t,right:t}:(1===(e=(t=t.split(" ")).length)?t[1]=t[2]=t[3]=t[0]:2===e?(t[2]=t[0],t[3]=t[1]):3===e&&(t[3]=t[1]),{top:parseInt(t[0],10)||0,right:parseInt(t[1],10)||0,bottom:parseInt(t[2],10)||0,left:parseInt(t[3],10)||0})},Dt=function(i,t){function e(t){var e=parseFloat(function(t){var e=i.own
 erDocument.defaultView;if(e){var n=e.getComputedStyle(i,null);return n?(t=t.replace(/[A-Z]/g,function(t){return"-"+t}),n.getPropertyValue(t)):null}return i.currentStyle[t]}(t));return isNaN(e)?0:e}return{top:e(t+"TopWidth"),right:e(t+"RightWidth"),bottom:e(t+"BottomWidth"),left:e(t+"LeftWidth")}};function At(){}function Bt(t){this.cls=[],this.cls._map={},this.onchange=t||At,this.prefix=""}C.extend(Bt.prototype,{add:function(t){return t&&!this.contains(t)&&(this.cls._map[t]=!0,this.cls.push(t),this._change()),this},remove:function(t){if(this.contains(t)){var e=void 0;for(e=0;e<this.cls.length&&this.cls[e]!==t;e++);this.cls.splice(e,1),delete this.cls._map[t],this._change()}return this},toggle:function(t,e){var n=this.contains(t);return n!==e&&(n?this.remove(t):this.add(t),this._change()),this},contains:function(t){return!!this.cls._map[t]},_change:function(){delete this.clsValue,this.onchan
 ge.call(this)}}),Bt.prototype.toString=function(){var t;if(this.clsValue)return this.clsValue;t="";for(var e=0;e<this.cls.length;e++)0<e&&(t+=" "),t+=this.prefix+this.cls[e];return t};var Lt,It,zt,Ft=/^([\w\\*]+)?(?:#([\w\-\\]+))?(?:\.([\w\\\.]+))?(?:\[\@?([\w\\]+)([\^\$\*!~]?=)([\w\\]+)\])?(?:\:(.+))?/i,Ut=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,Vt=/^\s*|\s*$/g,qt=Ot.extend({init:function(t){var o=this.match;function s(t,e,n){var i;function r(t){t&&e.push(t)}return r(function(e){if(e)return e=e.toLowerCase(),function(t){return"*"===e||t.type===e}}((i=Ft.exec(t.replace(Vt,"")))[1])),r(function(e){if(e)return function(t){return t._name===e}}(i[2])),r(function(n){if(n)return n=n.split("."),function(t){for(var e=n.length;e--;)if(!t.classes.contains(n[e]))return!1;return!0}}(i[3])),r(function(n,i,r
 ){if(n)return function(t){var e=t[n]?t[n]():"";return i?"="===i?e===r:"*="===i?0<=e.indexOf(r):"~="===i?0<=(" "+e+" ").indexOf(" "+r+" "):"!="===i?e!==r:"^="===i?0===e.indexOf(r):"$="===i&&e.substr(e.length-r.length)===r:!!r}}(i[4],i[5],i[6])),r(function(i){var e;if(i)return(i=/(?:not\((.+)\))|(.+)/i.exec(i))[1]?(e=a(i[1],[]),function(t){return!o(t,e)}):(i=i[2],function(t,e,n){return"first"===i?0===e:"last"===i?e===n-1:"even"===i?e%2==0:"odd"===i?e%2==1:!!t[i]&&t[i]()})}(i[7])),e.pseudo=!!i[7],e.direct=n,e}function a(t,e){var n,i,r,o=[];do{if(Ut.exec(""),(i=Ut.exec(t))&&(t=i[3],o.push(i[1]),i[2])){n=i[3];break}}while(i);for(n&&a(n,e),t=[],r=0;r<o.length;r++)">"!==o[r]&&t.push(s(o[r],[],">"===o[r-1]));return e.push(t),e}this._selectors=a(t,[])},match:fu
 nction(t,e){var n,i,r,o,s,a,l,u,c,d,f,h,m;for(n=0,i=(e=e||this._selectors).length;n<i;n++){for(m=t,h=0,r=(o=(s=e[n]).length)-1;0<=r;r--)for(u=s[r];m;){if(u.pseudo)for(c=d=(f=m.parent().items()).length;c--&&f[c]!==m;);for(a=0,l=u.length;a<l;a++)if(!u[a](m,c,d)){a=l+1;break}if(a===l){h++;break}if(r===o-1)break;m=m.parent()}if(h===o)return!0}return!1},find:function(t){var e,n,u=[],i=this._selectors;function c(t,e,n){var i,r,o,s,a,l=e[n];for(i=0,r=t.length;i<r;i++){for(a=t[i],o=0,s=l.length;o<s;o++)if(!l[o](a,i,r)){o=s+1;break}if(o===s)n===e.length-1?u.push(a):a.items&&c(a.items(),e,n+1);else if(l.direct)return;a.items&&c(a.items(),e,n)}}if(t.items){for(e=0,n=i.length;e<n;e++)c(t.items(),i[e],0);1<n&&(u=function(t){for(var e,n=[],i=t.length;i--;)(e=t[i]).__checked||(n.push(e),e.__checked=1);for(i=n.length;i--;)delete n[i].__checked;return n}(u))}return Lt||(Lt=qt.Collection),new Lt(u)}}),Yt=Array.prototype.push,$t=Array.prototype.slic
 e;zt={length:0,init:function(t){t&&this.add(t)},add:function(t){return C.isArray(t)?Yt.apply(this,t):t instanceof It?this.add(t.toArray()):Yt.call(this,t),this},set:function(t){var e,n=this,i=n.length;for(n.length=0,n.add(t),e=n.length;e<i;e++)delete n[e];return n},filter:function(e){var t,n,i,r,o=[];for("string"==typeof e?(e=new qt(e),r=function(t){return e.match(t)}):r=e,t=0,n=this.length;t<n;t++)r(i=this[t])&&o.push(i);return new It(o)},slice:function(){return new It($t.apply(this,arguments))},eq:function(t){return-1===t?this.slice(t):this.slice(t,+t+1)},each:function(t){return C.each(this,t),this},toArray:function(){return C.toArray(this)},indexOf:function(t){for(var e=this.length;e--&&this[e]!==t;);return e},reverse:function(){return new It(C.toArray(this).reverse())},hasClass:function(t){return!!this[0]&&this[0].classes.contains(t)},prop:function(e,n){var t;return n!==undefined?(this.each(function(t){t[e]&&t[e](n)}),this)
 :(t=this[0])&&t[e]?t[e]():void 0},exec:function(e){var n=C.toArray(arguments).slice(1);return this.each(function(t){t[e]&&t[e].apply(t,n)}),this},remove:function(){for(var t=this.length;t--;)this[t].remove();return this},addClass:function(e){return this.each(function(t){t.classes.add(e)})},removeClass:function(e){return this.each(function(t){t.classes.remove(e)})}},C.each("fire on off show hide append prepend before after reflow".split(" "),function(n){zt[n]=function(){var e=C.toArray(arguments);return this.each(function(t){n in t&&t[n].apply(t,e)}),this}}),C.each("text name disabled active selected checked visible parent value data".split(" "),function(e){zt[e]=function(t){return this.prop(e,t)}}),It=Ot.extend(zt);var Xt=qt.Collection=It,jt=function(t){this.create=t.create};jt.create=function(r,o){return new jt({create:function(e,n){var i,t=function(t){e.set(n,t.value)};return e.on("change:"+n,function(t){r.s
 et(o,t.value)}),r.on("change:"+o,t),(i=e._bindings)||(i=e._bindings=[],e.on("destroy",function(){for(var t=i.length;t--;)i[t]()})),i.push(function(){r.off("change:"+o,t)}),r.get(o)}})};var Jt=tinymce.util.Tools.resolve("tinymce.util.Observable");function Gt(t){return 0<t.nodeType}var Kt,Zt,Qt=Ot.extend({Mixins:[Jt],init:function(t){var e,n;for(e in t=t||{})(n=t[e])instanceof jt&&(t[e]=n.create(this,e));this.data=t},set:function(e,n){var i,r,o=this.data[e];if(n instanceof jt&&(n=n.create(this,e)),"object"==typeof e){for(i in e)this.set(i,e[i]);return this}return function t(e,n){var i,r;if(e===n)return!0;if(null===e||null===n)return e===n;if("object"!=typeof e||"object"!=typeof n)return e===n;if(C.isArray(n)){if(e.length!==n.length)return!1;for(i=e.length;i--;)if(!t(e[i],n[i]))return!1}if(Gt(e)||Gt(n))return e===n;for(i in r={},n){if(!t(e[i],n[i]))return!1;r[i]=!0}for(i in e)if(!r[i]&&!t(e
 [i],n[i]))return!1;return!0}(o,n)||(this.data[e]=n,r={target:this,name:e,value:n,oldValue:o},this.fire("change:"+e,r),this.fire("change",r)),this},get:function(t){return this.data[t]},has:function(t){return t in this.data},bind:function(t){return jt.create(this,t)},destroy:function(){this.fire("destroy")}}),te={},ee={add:function(t){var e=t.parent();if(e){if(!e._layout||e._layout.isNative())return;te[e._id]||(te[e._id]=e),Kt||(Kt=!0,c.requestAnimationFrame(function(){var t,e;for(t in Kt=!1,te)(e=te[t]).state.get("rendered")&&e.reflow();te={}},_.document.body))}},remove:function(t){te[t._id]&&delete te[t._id]}},ne=function(t){return t?t.getRoot().uiContainer:null},ie={getUiContainerDelta:function(t){var e=ne(t);if(e&&"static"!==v.DOM.getStyle(e,"position",!0)){var n=v.DOM.getPos(e),i=e.scrollLeft-n.x,r=e.scrollTop-n.y;return vt.some({x:i,y:r})}return vt.none()},setUiContainer:function(t,e){var n=v.DOM
 .select(t.settings.ui_container)[0];e.getRoot().uiContainer=n},getUiContainer:ne,inheritUiContainer:function(t,e){return e.uiContainer=ne(t)}},re="onmousewheel"in _.document,oe=!1,se=0,ae={Statics:{classPrefix:"mce-"},isRtl:function(){return Zt.rtl},classPrefix:"mce-",init:function(e){var t,n,i=this;function r(t){var e;for(t=t.split(" "),e=0;e<t.length;e++)i.classes.add(t[e])}i.settings=e=C.extend({},i.Defaults,e),i._id=e.id||"mceu_"+se++,i._aria={role:e.role},i._elmCache={},i.$=Nt,i.state=new Qt({visible:!0,active:!1,disabled:!1,value:""}),i.data=new Qt(e.data),i.classes=new Bt(function(){i.state.get("rendered")&&(i.getEl().className=this.toString())}),i.classes.prefix=i.classPrefix,(t=e.classes)&&(i.Defaults&&(n=i.Defaults.classes)&&t!==n&&r(n),r(t)),C.each("title text name visible disabled active value".split(" "),function(t){t in e&&i[t](e[
 t])}),i.on("click",function(){if(i.disabled())return!1}),i.settings=e,i.borderBox=Wt(e.border),i.paddingBox=Wt(e.padding),i.marginBox=Wt(e.margin),e.hidden&&i.hide()},Properties:"parent,name",getContainerElm:function(){var t=ie.getUiContainer(this);return t||Mt.getContainer()},getParentCtrl:function(t){for(var e,n=this.getRoot().controlIdLookup;t&&n&&!(e=n[t.id]);)t=t.parentNode;return e},initLayoutRect:function(){var t,e,n,i,r,o,s,a,l,u,c=this,d=c.settings,f=c.getEl();t=c.borderBox=c.borderBox||Dt(f,"border"),c.paddingBox=c.paddingBox||Dt(f,"padding"),c.marginBox=c.marginBox||Dt(f,"margin"),u=Mt.getSize(f),a=d.minWidth,l=d.minHeight,r=a||u.width,o=l||u.height,n=d.width,i=d.height,s=void 0!==(s=d.autoResize)?s:!n&&!i,n=n||r,i=i||o;var h=t.left+t.right,m=t.top+t.bottom,g=d.maxWidth||65535,p=d.maxHeight||65535;return c._layoutRect=e={x:d.x||0,y:d.y||0,w:n,h:i,deltaW:h,deltaH:m,contentW:n-h,contentH:i-m,i
 nnerW:n-h,innerH:i-m,startMinWidth:a||0,startMinHeight:l||0,minW:Math.min(r,g),minH:Math.min(o,p),maxW:g,maxH:p,autoResize:s,scrollW:0},c._lastLayoutRect={},e},layoutRect:function(t){var e,n,i,r,o,s=this,a=s._layoutRect;return a||(a=s.initLayoutRect()),t?(i=a.deltaW,r=a.deltaH,t.x!==undefined&&(a.x=t.x),t.y!==undefined&&(a.y=t.y),t.minW!==undefined&&(a.minW=t.minW),t.minH!==undefined&&(a.minH=t.minH),(n=t.w)!==undefined&&(n=(n=n<a.minW?a.minW:n)>a.maxW?a.maxW:n,a.w=n,a.innerW=n-i),(n=t.h)!==undefined&&(n=(n=n<a.minH?a.minH:n)>a.maxH?a.maxH:n,a.h=n,a.innerH=n-r),(n=t.innerW)!==undefined&&(n=(n=n<a.minW-i?a.minW-i:n)>a.maxW-i?a.maxW-i:n,a.innerW=n,a.w=n+i),(n=t.innerH)!==undefined&&(n=(n=n<a.minH-r?a.minH-r:n)>a.maxH-r?a.maxH-r:n,a.innerH=n,a.h=n+r),t.contentW!==undefined&&(a.contentW=t.contentW),t.contentH!==undefined&&(a.contentH=t.contentH),(e=s._lastLayoutRect).x===a.x&&
 e.y===a.y&&e.w===a.w&&e.h===a.h||((o=Zt.repaintControls)&&o.map&&!o.map[s._id]&&(o.push(s),o.map[s._id]=!0),e.x=a.x,e.y=a.y,e.w=a.w,e.h=a.h),s):a},repaint:function(){var t,e,n,i,r,o,s,a,l,u,c=this;l=_.document.createRange?function(t){return t}:Math.round,t=c.getEl().style,i=c._layoutRect,a=c._lastRepaintRect||{},o=(r=c.borderBox).left+r.right,s=r.top+r.bottom,i.x!==a.x&&(t.left=l(i.x)+"px",a.x=i.x),i.y!==a.y&&(t.top=l(i.y)+"px",a.y=i.y),i.w!==a.w&&(u=l(i.w-o),t.width=(0<=u?u:0)+"px",a.w=i.w),i.h!==a.h&&(u=l(i.h-s),t.height=(0<=u?u:0)+"px",a.h=i.h),c._hasBody&&i.innerW!==a.innerW&&(u=l(i.innerW),(n=c.getEl("body"))&&((e=n.style).width=(0<=u?u:0)+"px"),a.innerW=i.innerW),c._hasBody&&i.innerH!==a.innerH&&(u=l(i.innerH),(n=n||c.getEl("body"))&&((e=e||n.style).height=(0<=u?u:0)+"px&qu
 ot;),a.innerH=i.innerH),c._lastRepaintRect=a,c.fire("repaint",{},!1)},updateLayoutRect:function(){var t=this;t.parent()._lastRect=null,Mt.css(t.getEl(),{width:"",height:""}),t._layoutRect=t._lastRepaintRect=t._lastLayoutRect=null,t.initLayoutRect()},on:function(t,e){var n,i,r,o=this;return le(o).on(t,"string"!=typeof(n=e)?n:function(t){return i||o.parentsAndSelf().each(function(t){var e=t.settings.callbacks;if(e&&(i=e[n]))return r=t,!1}),i?i.call(r,t):(t.action=n,void this.fire("execute",t))}),o},off:function(t,e){return le(this).off(t,e),this},fire:function(t,e,n){if((e=e||{}).control||(e.control=this),e=le(this).fire(t,e),!1!==n&&this.parent)for(var i=this.parent();i&&!e.isPropagationStopped();)i.fire(t,e,!1),i=i.parent();return e},hasEventListeners:function(t){return le(this).has(t)},parents:function(t){var e,n=new Xt;for(e=this.parent();e;e=e.parent())n.add(e);return t&&(n=n.filter(t)),n},parentsAn
 dSelf:function(t){return new Xt(this).add(this.parents(t))},next:function(){var t=this.parent().items();return t[t.indexOf(this)+1]},prev:function(){var t=this.parent().items();return t[t.indexOf(this)-1]},innerHtml:function(t){return this.$el.html(t),this},getEl:function(t){var e=t?this._id+"-"+t:this._id;return this._elmCache[e]||(this._elmCache[e]=Nt("#"+e)[0]),this._elmCache[e]},show:function(){return this.visible(!0)},hide:function(){return this.visible(!1)},focus:function(){try{this.getEl().focus()}catch(t){}return this},blur:function(){return this.getEl().blur(),this},aria:function(t,e){var n=this,i=n.getEl(n.ariaTarget);return void 0===e?n._aria[t]:(n._aria[t]=e,n.state.get("rendered")&&i.setAttribute("role"===t?t:"aria-"+t,e),n)},encode:function(t,e){return!1!==e&&(t=this.translate(t)),(t||"").replace(/[&<>"]/g,function(t){return"&#"+t.charCodeAt(0)+";"})},tran
 slate:function(t){return Zt.translate?Zt.translate(t):t},before:function(t){var e=this.parent();return e&&e.insert(t,e.items().indexOf(this),!0),this},after:function(t){var e=this.parent();return e&&e.insert(t,e.items().indexOf(this)),this},remove:function(){var e,t,n=this,i=n.getEl(),r=n.parent();if(n.items){var o=n.items().toArray();for(t=o.length;t--;)o[t].remove()}r&&r.items&&(e=[],r.items().each(function(t){t!==n&&e.push(t)}),r.items().set(e),r._lastRect=null),n._eventsRoot&&n._eventsRoot===n&&Nt(i).off();var s=n.getRoot().controlIdLookup;return s&&delete s[n._id],i&&i.parentNode&&i.parentNode.removeChild(i),n.state.set("rendered",!1),n.state.destroy(),n.fire("remove"),n},renderBefore:function(t){return Nt(t).before(this.renderHtml()),this.postRender(),this},renderTo:function(t){return Nt(t||this.getContainerElm()).append(this.renderHtml()),this.postRender(),this},preRender:funct
 ion(){},render:function(){},renderHtml:function(){return'<div id="'+this._id+'" class="'+this.classes+'"></div>'},postRender:function(){var t,e,n,i,r,o=this,s=o.settings;for(i in o.$el=Nt(o.getEl()),o.state.set("rendered",!0),s)0===i.indexOf("on")&&o.on(i.substr(2),s[i]);if(o._eventsRoot){for(n=o.parent();!r&&n;n=n.parent())r=n._eventsRoot;if(r)for(i in r._nativeEvents)o._nativeEvents[i]=!0}ue(o),s.style&&(t=o.getEl())&&(t.setAttribute("style",s.style),t.style.cssText=s.style),o.settings.border&&(e=o.borderBox,o.$el.css({"border-top-width":e.top,"border-right-width":e.right,"border-bottom-width":e.bottom,"border-left-width":e.left}));var a=o.getRoot();for(var l in a.controlIdLookup||(a.controlIdLookup={}),(a.controlIdLookup[o._id]=o)._aria)o.aria(l,o._aria[l]);!1===o.state.get("visible")&&(o.getEl().style.display="none&q
 uot;),o.bindStates(),o.state.on("change:visible",function(t){var e,n=t.value;o.state.get("rendered")&&(o.getEl().style.display=!1===n?"none":"",o.getEl().getBoundingClientRect()),(e=o.parent())&&(e._lastRect=null),o.fire(n?"show":"hide"),ee.add(o)}),o.fire("postrender",{},!1)},bindStates:function(){},scrollIntoView:function(t){var e,n,i,r,o,s,a=this.getEl(),l=a.parentNode,u=function(t,e){var n,i,r=t;for(n=i=0;r&&r!==e&&r.nodeType;)n+=r.offsetLeft||0,i+=r.offsetTop||0,r=r.offsetParent;return{x:n,y:i}}(a,l);return e=u.x,n=u.y,i=a.offsetWidth,r=a.offsetHeight,o=l.clientWidth,s=l.clientHeight,"end"===t?(e-=o-i,n-=s-r):"center"===t&&(e-=o/2-i/2,n-=s/2-r/2),l.scrollLeft=e,l.scrollTop=n,this},getRoot:function(){for(var t,e=this,n=[];e;){if(e.rootControl){t=e.rootControl;break}n.push(e),e=(t=e).parent()}t||(t=this);for(var i=n.length;i--;)n[i].rootControl=t;retur
 n t},reflow:function(){ee.remove(this);var t=this.parent();return t&&t._layout&&!t._layout.isNative()&&t.reflow(),this}};function le(n){return n._eventDispatcher||(n._eventDispatcher=new Pt({scope:n,toggleEvent:function(t,e){e&&Pt.isNative(t)&&(n._nativeEvents||(n._nativeEvents={}),n._nativeEvents[t]=!0,n.state.get("rendered")&&ue(n))}})),n._eventDispatcher}function ue(a){var t,e,n,l,i,r;function o(t){var e=a.getParentCtrl(t.target);e&&e.fire(t.type,t)}function s(){var t=l._lastHoverCtrl;t&&(t.fire("mouseleave",{target:t.getEl()}),t.parents().each(function(t){t.fire("mouseleave",{target:t.getEl()})}),l._lastHoverCtrl=null)}function u(t){var e,n,i,r=a.getParentCtrl(t.target),o=l._lastHoverCtrl,s=0;if(r!==o){if((n=(l._lastHoverCtrl=r).parents().toArray().reverse()).push(r),o){for((i=o.parents().toArray().reverse()).push(o),s=0;s<i.length&&n[s]===i[s];s++);for(e=i.length-1;s<=e;e
 --)(o=i[e]).fire("mouseleave",{target:o.getEl()})}for(e=s;e<n.length;e++)(r=n[e]).fire("mouseenter",{target:r.getEl()})}}function c(t){t.preventDefault(),"mousewheel"===t.type?(t.deltaY=-.025*t.wheelDelta,t.wheelDeltaX&&(t.deltaX=-.025*t.wheelDeltaX)):(t.deltaX=0,t.deltaY=t.detail),t=a.fire("wheel",t)}if(i=a._nativeEvents){for((n=a.parents().toArray()).unshift(a),t=0,e=n.length;!l&&t<e;t++)l=n[t]._eventsRoot;for(l||(l=n[n.length-1]||a),a._eventsRoot=l,e=t,t=0;t<e;t++)n[t]._eventsRoot=l;var d=l._delegates;for(r in d||(d=l._delegates={}),i){if(!i)return!1;"wheel"!==r||oe?("mouseenter"===r||"mouseleave"===r?l._hasMouseEnter||(Nt(l.getEl()).on("mouseleave",s).on("mouseover",u),l._hasMouseEnter=1):d[r]||(Nt(l.getEl()).on(r,o),d[r]=!0),i[r]=!1):re?Nt(a.getEl()).on("mousewheel",c):Nt(a.getEl()).on("DOMMouseScroll",c)}}}C.each("text title visible disabl
 ed active value".split(" "),function(e){ae[e]=function(t){return 0===arguments.length?this.state.get(e):(void 0!==t&&this.state.set(e,t),this)}});var ce=Zt=Ot.extend(ae),de=function(t){return"static"===Mt.getRuntimeStyle(t,"position")},fe=function(t){return t.state.get("fixed")};function he(t,e,n){var i,r,o,s,a,l,u,c,d,f;return d=me(),o=(r=Mt.getPos(e,ie.getUiContainer(t))).x,s=r.y,fe(t)&&de(_.document.body)&&(o-=d.x,s-=d.y),i=t.getEl(),a=(f=Mt.getSize(i)).width,l=f.height,u=(f=Mt.getSize(e)).width,c=f.height,"b"===(n=(n||"").split(""))[0]&&(s+=c),"r"===n[1]&&(o+=u),"c"===n[0]&&(s+=Math.round(c/2)),"c"===n[1]&&(o+=Math.round(u/2)),"b"===n[3]&&(s-=l),"r"===n[4]&&(o-=a),"c"===n[3]&&(s-=Math.round(l/2)),"c"===n[4]&&(o-=Math.round(a/2)),{x:o,y:s,w:a,h:l}}var
  me=function(){var t=_.window;return{x:Math.max(t.pageXOffset,_.document.body.scrollLeft,_.document.documentElement.scrollLeft),y:Math.max(t.pageYOffset,_.document.body.scrollTop,_.document.documentElement.scrollTop),w:t.innerWidth||_.document.documentElement.clientWidth,h:t.innerHeight||_.document.documentElement.clientHeight}},ge=function(t){var e,n=ie.getUiContainer(t);return n&&!fe(t)?{x:0,y:0,w:(e=n).scrollWidth-1,h:e.scrollHeight-1}:me()},pe={testMoveRel:function(t,e){for(var n=ge(this),i=0;i<e.length;i++){var r=he(this,t,e[i]);if(fe(this)){if(0<r.x&&r.x+r.w<n.w&&0<r.y&&r.y+r.h<n.h)return e[i]}else if(r.x>n.x&&r.x+r.w<n.w+n.x&&r.y>n.y&&r.y+r.h<n.h+n.y)return e[i]}return e[0]},moveRel:function(t,e){"string"!=typeof e&&(e=this.testMoveRel(t,e));var n=he(this,t,e);return this.moveTo(n.x,n.y)},moveBy:function(t,e){var n=this.layoutRect();return this.moveTo(n.x+t,n.y+e),this},moveTo
 :function(t,e){var n=this;function i(t,e,n){return t<0?0:e<t+n&&(t=e-n)<0?0:t}if(n.settings.constrainToViewport){var r=ge(this),o=n.layoutRect();t=i(t,r.w+r.x,o.w),e=i(e,r.h+r.y,o.h)}var s=ie.getUiContainer(n);return s&&de(s)&&!fe(n)&&(t-=s.scrollLeft,e-=s.scrollTop),s&&(t+=1,e+=1),n.state.get("rendered")?n.layoutRect({x:t,y:e}).repaint():(n.settings.x=t,n.settings.y=e),n.fire("move",{x:t,y:e}),n}},ve=ce.extend({Mixins:[pe],Defaults:{classes:"widget tooltip tooltip-n"},renderHtml:function(){var t=this,e=t.classPrefix;return'<div id="'+t._id+'" class="'+t.classes+'" role="presentation"><div class="'+e+'tooltip-arrow"></div><div class="'+e+'tooltip-inner">'+t.encode(t.state.get("text"))+"</div></div>"},bindStates:function(){var e=this;return e.state.on("change:text",function(t){e.getEl().lastC
 hild.innerHTML=e.encode(t.value)}),e._super()},repaint:function(){var t,e;t=this.getEl().style,e=this._layoutRect,t.left=e.x+"px",t.top=e.y+"px",t.zIndex=131070}}),be=ce.extend({init:function(i){var r=this;r._super(i),i=r.settings,r.canFocus=!0,i.tooltip&&!1!==be.tooltips&&(r.on("mouseenter",function(t){var e=r.tooltip().moveTo(-65535);if(t.control===r){var n=e.text(i.tooltip).show().testMoveRel(r.getEl(),["bc-tc","bc-tl","bc-tr"]);e.classes.toggle("tooltip-n","bc-tc"===n),e.classes.toggle("tooltip-nw","bc-tl"===n),e.classes.toggle("tooltip-ne","bc-tr"===n),e.moveRel(r.getEl(),n)}else e.hide()}),r.on("mouseleave mousedown click",function(){r.tooltip().remove(),r._tooltip=null})),r.aria("label",i.ariaLabel||i.tooltip)},tooltip:function(){return this._tooltip||(this._tooltip=new ve({type:"tooltip"}),ie.inheritUiContainer(
 this,this._tooltip),this._tooltip.renderTo()),this._tooltip},postRender:function(){var t=this,e=t.settings;t._super(),t.parent()||!e.width&&!e.height||(t.initLayoutRect(),t.repaint()),e.autofocus&&t.focus()},bindStates:function(){var e=this;function n(t){e.aria("disabled",t),e.classes.toggle("disabled",t)}function i(t){e.aria("pressed",t),e.classes.toggle("active",t)}return e.state.on("change:disabled",function(t){n(t.value)}),e.state.on("change:active",function(t){i(t.value)}),e.state.get("disabled")&&n(!0),e.state.get("active")&&i(!0),e._super()},remove:function(){this._super(),this._tooltip&&(this._tooltip.remove(),this._tooltip=null)}}),ye=be.extend({Defaults:{value:0},init:function(t){this._super(t),this.classes.add("progress"),this.settings.filter||(this.settings.filter=function(t){return Math.round(t)})},renderHtml:function(){var t=this._id,e=this.
 classPrefix;return'<div id="'+t+'" class="'+this.classes+'"><div class="'+e+'bar-container"><div class="'+e+'bar"></div></div><div class="'+e+'text">0%</div></div>'},postRender:function(){return this._super(),this.value(this.settings.value),this},bindStates:function(){var e=this;function n(t){t=e.settings.filter(t),e.getEl().lastChild.innerHTML=t+"%",e.getEl().firstChild.firstChild.style.width=t+"%"}return e.state.on("change:value",function(t){n(t.value)}),n(e.state.get("value")),e._super()}}),xe=function(t,e){t.getEl().lastChild.textContent=e+(t.progressBar?" "+t.progressBar.value()+"%":"")},we=ce.extend({Mixins:[pe],Defaults:{classes:"widget notification"},init:function(t){var e=this;e._super(t),e.maxWidth=t.maxWidth,t.text&&e.text(t.text),t.icon&&(e.icon=t.icon),t.color&&(e.color=t
 .color),t.type&&e.classes.add("notification-"+t.type),t.timeout&&(t.timeout<0||0<t.timeout)&&!t.closeButton?e.closeButton=!1:(e.classes.add("has-close"),e.closeButton=!0),t.progressBar&&(e.progressBar=new ye),e.on("click",function(t){-1!==t.target.className.indexOf(e.classPrefix+"close")&&e.close()})},renderHtml:function(){var t,e=this,n=e.classPrefix,i="",r="",o="";return e.icon&&(i='<i class="'+n+"ico "+n+"i-"+e.icon+'"></i>'),t=' style="max-width: '+e.maxWidth+"px;"+(e.color?"background-color: "+e.color+';"':'"'),e.closeButton&&(r='<button type="button" class="'+n+'close" aria-hidden="true">\xd7</button>'),e.progressBar&&(o=e.progressBar.renderHtml()),'<div id="'+e._id+'" class="'+e.classes+'"'+t+' role
 ="presentation">'+i+'<div class="'+n+'notification-inner">'+e.state.get("text")+"</div>"+o+r+'<div style="clip: rect(1px, 1px, 1px, 1px);height: 1px;overflow: hidden;position: absolute;width: 1px;" aria-live="assertive" aria-relevant="additions" aria-atomic="true"></div></div>'},postRender:function(){var t=this;return c.setTimeout(function(){t.$el.addClass(t.classPrefix+"in"),xe(t,t.state.get("text"))},100),t._super()},bindStates:function(){var e=this;return e.state.on("change:text",function(t){e.getEl().firstChild.innerHTML=t.value,xe(e,t.value)}),e.progressBar&&(e.progressBar.bindStates(),e.progressBar.state.on("change:value",function(t){xe(e,e.state.get("text"))})),e._super()},close:function(){return this.fire("close").isDefaultPrevented()||this.remove(),this},repaint:function(){var t,e;t=this.getEl().
 style,e=this._layoutRect,t.left=e.x+"px",t.top=e.y+"px",t.zIndex=65534}});function _e(o){var s=function(t){return t.inline?t.getElement():t.getContentAreaContainer()};return{open:function(t,e){var n,i=C.extend(t,{maxWidth:(n=s(o),Mt.getSize(n).width)}),r=new we(i);return 0<(r.args=i).timeout&&(r.timer=setTimeout(function(){r.close(),e()},i.timeout)),r.on("close",function(){e()}),r.renderTo(),r},close:function(t){t.close()},reposition:function(t){Ct(t,function(t){t.moveTo(0,0)}),function(n){if(0<n.length){var t=n.slice(0,1)[0],e=s(o);t.moveRel(e,"tc-tc"),Ct(n,function(t,e){0<e&&t.moveRel(n[e-1].getEl(),"bc-tc")})}}(t)},getArgs:function(t){return t.args}}}function Re(t){var e,n;if(t.changedTouches)for(e="screenX screenY pageX pageY clientX clientY".split(" "),n=0;n<e.length;n++)t[e[n]]=t.changedTouches[0][e[n]]}function Ce(t,h){var m,g,e,p,v,b,y,x=h.document||_.document;h=h||{};var w=x.ge
 tElementById(h.handle||t);e=function(t){var e,n,i,r,o,s,a,l,u,c,d,f=(e=x,u=Math.max,n=e.documentElement,i=e.body,r=u(n.scrollWidth,i.scrollWidth),o=u(n.clientWidth,i.clientWidth),s=u(n.offsetWidth,i.offsetWidth),a=u(n.scrollHeight,i.scrollHeight),l=u(n.clientHeight,i.clientHeight),{width:r<s?o:r,height:a<u(n.offsetHeight,i.offsetHeight)?l:a});Re(t),t.preventDefault(),g=t.button,c=w,b=t.screenX,y=t.screenY,d=_.window.getComputedStyle?_.window.getComputedStyle(c,null).getPropertyValue("cursor"):c.runtimeStyle.cursor,m=Nt("<div></div>").css({position:"absolute",top:0,left:0,width:f.width,height:f.height,zIndex:2147483647,opacity:1e-4,cursor:d}).appendTo(x.body),Nt(x).on("mousemove touchmove",v).on("mouseup touchend",p),h.start(t)},v=function(t){if(Re(t),t.button!==g)return p(t);t.deltaX=t.screenX-b,t.deltaY=t.screenY-y,t.preventDefault(),h.drag(t)},p=function(t){Re(t),Nt(x).off("mousemove touchmove",v).off(&q
 uot;mouseup touchend",p),m.remove(),h.stop&&h.stop(t)},this.destroy=function(){Nt(w).off()},Nt(w).on("mousedown touchstart",e)}var ke=tinymce.util.Tools.resolve("tinymce.ui.Factory"),Ee=function(t){return!!t.getAttribute("data-mce-tabstop")};function He(t){var o,r,n=t.root;function i(t){return t&&1===t.nodeType}try{o=_.document.activeElement}catch(e){o=_.document.body}function s(t){return i(t=t||o)?t.getAttribute("role"):null}function a(t){for(var e,n=t||o;n=n.parentNode;)if(e=s(n))return e}function l(t){var e=o;if(i(e))return e.getAttribute("aria-"+t)}function u(t){var e=t.tagName.toUpperCase();return"INPUT"===e||"TEXTAREA"===e||"SELECT"===e}function c(e){var r=[];return function t(e){if(1===e.nodeType&&"none"!==e.style.display&&!e.disabled){var n;(u(n=e)&&!n.hidden||Ee(n)||/^(button|menuitem|checkbox|tab|menuitemcheckbox|option|gridcell|slider)$/.t
 est(s(n)))&&r.push(e);for(var i=0;i<e.childNodes.length;i++)t(e.childNodes[i])}}(e||n.getEl()),r}function d(t){var e,n;(n=(t=t||r).parents().toArray()).unshift(t);for(var i=0;i<n.length&&!(e=n[i]).settings.ariaRoot;i++);return e}function f(t,e){return t<0?t=e.length-1:t>=e.length&&(t=0),e[t]&&e[t].focus(),t}function h(t,e){var n=-1,i=d();e=e||c(i.getEl());for(var r=0;r<e.length;r++)e[r]===o&&(n=r);n+=t,i.lastAriaIndex=f(n,e)}function m(){"tablist"===a()?h(-1,c(o.parentNode)):r.parent().submenu?b():h(-1)}function g(){var t=s(),e=a();"tablist"===e?h(1,c(o.parentNode)):"menuitem"===t&&"menu"===e&&l("haspopup")?y():h(1)}function p(){h(-1)}function v(){var t=s(),e=a();"menuitem"===t&&"menubar"===e?y():"button"===t&&l("haspopup")?y({key:"down"}):h(1)}function b(){r.fire("cancel")}function y(t){t
 =t||{},r.fire("click",{target:o,aria:t})}return r=n.getParentCtrl(o),n.on("keydown",function(t){function e(t,e){u(o)||Ee(o)||"slider"!==s(o)&&!1!==e(t)&&t.preventDefault()}if(!t.isDefaultPrevented())switch(t.keyCode){case 37:e(t,m);break;case 39:e(t,g);break;case 38:e(t,p);break;case 40:e(t,v);break;case 27:b();break;case 14:case 13:case 32:e(t,y);break;case 9:!function(t){if("tablist"===a()){var e=c(r.getEl("body"))[0];e&&e.focus()}else h(t.shiftKey?-1:1)}(t),t.preventDefault()}}),n.on("focusin",function(t){o=t.target,r=t.control}),{focusFirst:function(t){var e=d(t),n=c(e.getEl());e.settings.ariaRemember&&"lastAriaIndex"in e?f(e.lastAriaIndex,n):f(0,n)}}}var Te,Se,Me,Ne,Oe={},Pe=ce.extend({init:function(t){var e=this;e._super(t),(t=e.settings).fixed&&e.state.set("fixed",!0),e._items=new Xt,e.isRtl()&&e.classes.add("rtl"),e.bodyClasses=new Bt(func
 tion(){e.state.get("rendered")&&(e.getEl("body").className=this.toString())}),e.bodyClasses.prefix=e.classPrefix,e.classes.add("container"),e.bodyClasses.add("container-body"),t.containerCls&&e.classes.add(t.containerCls),e._layout=ke.create((t.layout||"")+"layout"),e.settings.items?e.add(e.settings.items):e.add(e.render()),e._hasBody=!0},items:function(){return this._items},find:function(t){return(t=Oe[t]=Oe[t]||new qt(t)).find(this)},add:function(t){return this.items().add(this.create(t)).parent(this),this},focus:function(t){var e,n,i,r=this;if(!t||!(n=r.keyboardNav||r.parents().eq(-1)[0].keyboardNav))return i=r.find("*"),r.statusbar&&i.add(r.statusbar.items()),i.each(function(t){if(t.settings.autofocus)return e=null,!1;t.canFocus&&(e=e||t)}),e&&e.focus(),r;n.focusFirst(r)},replace:function(t,e){for(var n,i=this.items(),r=i.length;r--;)if(i[r]===t){i[r]=e;break}0<=r&amp
 ;&((n=e.getEl())&&n.parentNode.removeChild(n),(n=t.getEl())&&n.parentNode.removeChild(n)),e.parent(this)},create:function(t){var e,n=this,i=[];return C.isArray(t)||(t=[t]),C.each(t,function(t){t&&(t instanceof ce||("string"==typeof t&&(t={type:t}),e=C.extend({},n.settings.defaults,t),t.type=e.type=e.type||t.type||n.settings.defaultType||(e.defaults?e.defaults.type:null),t=ke.create(e)),i.push(t))}),i},renderNew:function(){var i=this;return i.items().each(function(t,e){var n;t.parent(i),t.state.get("rendered")||((n=i.getEl("body")).hasChildNodes()&&e<=n.childNodes.length-1?Nt(n.childNodes[e]).before(t.renderHtml()):Nt(n).append(t.renderHtml()),t.postRender(),ee.add(t))}),i._layout.applyClasses(i.items().filter(":visible")),i._lastRect=null,i},append:function(t){return this.add(t).renderNew()},prepend:function(t){return this.items().set(this.create(t).concat(this.items().toArray())),this.renderNew()
 },insert:function(t,e,n){var i,r,o;return t=this.create(t),i=this.items(),!n&&e<i.length-1&&(e+=1),0<=e&&e<i.length&&(r=i.slice(0,e).toArray(),o=i.slice(e).toArray(),i.set(r.concat(t,o))),this.renderNew()},fromJSON:function(t){for(var e in t)this.find("#"+e).value(t[e]);return this},toJSON:function(){var i={};return this.find("*").each(function(t){var e=t.name(),n=t.value();e&&void 0!==n&&(i[e]=n)}),i},renderHtml:function(){var t=this,e=t._layout,n=this.settings.role;return t.preRender(),e.preRender(t),'<div id="'+t._id+'" class="'+t.classes+'"'+(n?' role="'+this.settings.role+'"':"")+'><div id="'+t._id+'-body" class="'+t.bodyClasses+'">'+(t.settings.html||"")+e.renderHtml(t)+"</div></div>"},postRender:function(){var t,e=this;return e.items().exec("postRender"),e._super(),e._layout.postRender(e)
 ,e.state.set("rendered",!0),e.settings.style&&e.$el.css(e.settings.style),e.settings.border&&(t=e.borderBox,e.$el.css({"border-top-width":t.top,"border-right-width":t.right,"border-bottom-width":t.bottom,"border-left-width":t.left})),e.parent()||(e.keyboardNav=He({root:e})),e},initLayoutRect:function(){var t=this._super();return this._layout.recalc(this),t},recalc:function(){var t=this,e=t._layoutRect,n=t._lastRect;if(!n||n.w!==e.w||n.h!==e.h)return t._layout.recalc(t),e=t.layoutRect(),t._lastRect={x:e.x,y:e.y,w:e.w,h:e.h},!0},reflow:function(){var t;if(ee.remove(this),this.visible()){for(ce.repaintControls=[],ce.repaintControls.map={},this.recalc(),t=ce.repaintControls.length;t--;)ce.repaintControls[t].repaint();"flow"!==this.settings.layout&&"stack"!==this.settings.layout&&this.repaint(),ce.repaintControls=[]}return this}}),We={init:function(){this.on("repaint",this.rend
 erScroll)},renderScroll:function(){var p=this,v=2;function n(){var m,g,t;function e(t,e,n,i,r,o){var s,a,l,u,c,d,f,h;if(a=p.getEl("scroll"+t)){if(f=e.toLowerCase(),h=n.toLowerCase(),Nt(p.getEl("absend")).css(f,p.layoutRect()[i]-1),!r)return void Nt(a).css("display","none");Nt(a).css("display","block"),s=p.getEl("body"),l=p.getEl("scroll"+t+"t"),u=s["client"+n]-2*v,c=(u-=m&&g?a["client"+o]:0)/s["scroll"+n],(d={})[f]=s["offset"+e]+v,d[h]=u,Nt(a).css(d),(d={})[f]=s["scroll"+e]*c,d[h]=u*c,Nt(l).css(d)}}t=p.getEl("body"),m=t.scrollWidth>t.clientWidth,g=t.scrollHeight>t.clientHeight,e("h","Left","Width","contentW",m,"Height"),e("v","Top","Height","contentH",g,"Width")}p.settings.autoScroll&&(p._hasScroll||(p._hasScroll=!0
 ,function(){function t(s,a,l,u,c){var d,t=p._id+"-scroll"+s,e=p.classPrefix;Nt(p.getEl()).append('<div id="'+t+'" class="'+e+"scrollbar "+e+"scrollbar-"+s+'"><div id="'+t+'t" class="'+e+'scrollbar-thumb"></div></div>'),p.draghelper=new Ce(t+"t",{start:function(){d=p.getEl("body")["scroll"+a],Nt("#"+t).addClass(e+"active")},drag:function(t){var e,n,i,r,o=p.layoutRect();n=o.contentW>o.innerW,i=o.contentH>o.innerH,r=p.getEl("body")["client"+l]-2*v,e=(r-=n&&i?p.getEl("scroll"+s)["client"+c]:0)/p.getEl("body")["scroll"+l],p.getEl("body")["scroll"+a]=d+t["delta"+u]/e},stop:function(){Nt("#"+t).removeClass(e+"active")}})}p.classes.add("scroll"),t("v","Top","Height","Y","Wi
 dth"),t("h","Left","Width","X","Height")}(),p.on("wheel",function(t){var e=p.getEl("body");e.scrollLeft+=10*(t.deltaX||0),e.scrollTop+=10*t.deltaY,n()}),Nt(p.getEl("body")).on("scroll",n)),n())}},De=Pe.extend({Defaults:{layout:"fit",containerCls:"panel"},Mixins:[We],renderHtml:function(){var t=this,e=t._layout,n=t.settings.html;return t.preRender(),e.preRender(t),void 0===n?n='<div id="'+t._id+'-body" class="'+t.bodyClasses+'">'+e.renderHtml(t)+"</div>":("function"==typeof n&&(n=n.call(t)),t._hasBody=!1),'<div id="'+t._id+'" class="'+t.classes+'" hidefocus="1" tabindex="-1" role="group">'+(t._preBodyHtml||"")+n+"</div>"}}),Ae={resizeToContent:function(){this._layoutRect.autoResize=!0,this._lastRect=null,this.reflow()},resizeTo:fun
 ction(t,e){if(t<=1||e<=1){var n=Mt.getWindowSize();t=t<=1?t*n.w:t,e=e<=1?e*n.h:e}return this._layoutRect.autoResize=!1,this.layoutRect({minW:t,minH:e,w:t,h:e}).reflow()},resizeBy:function(t,e){var n=this.layoutRect();return this.resizeTo(n.w+t,n.h+e)}},Be=[],Le=[];function Ie(t,e){for(;t;){if(t===e)return!0;t=t.parent()}}function ze(){Te||(Te=function(t){2!==t.button&&function(t){for(var e=Be.length;e--;){var n=Be[e],i=n.getParentCtrl(t.target);if(n.settings.autohide){if(i&&(Ie(i,n)||n.parent()===i))continue;(t=n.fire("autohide",{target:t.target})).isDefaultPrevented()||n.hide()}}}(t)},Nt(_.document).on("click touchstart",Te))}function Fe(r){var t=Mt.getViewPort().y;function e(t,e){for(var n,i=0;i<Be.length;i++)if(Be[i]!==r)for(n=Be[i].parent();n&&(n=n.parent());)n===r&&Be[i].fixed(t).moveBy(0,e).repaint()}r.settings.autofix&&(r.state.get("fixed")?r._autoFixY>t&&(r.fixed(!1).layoutRect({y
 :r._autoFixY}).repaint(),e(!1,r._autoFixY-t)):(r._autoFixY=r.layoutRect().y,r._autoFixY<t&&(r.fixed(!0).layoutRect({y:0}).repaint(),e(!0,t-r._autoFixY))))}function Ue(t,e){var n,i,r=Ve.zIndex||65535;if(t)Le.push(e);else for(n=Le.length;n--;)Le[n]===e&&Le.splice(n,1);if(Le.length)for(n=0;n<Le.length;n++)Le[n].modal&&(r++,i=Le[n]),Le[n].getEl().style.zIndex=r,Le[n].zIndex=r,r++;var o=Nt("#"+e.classPrefix+"modal-block",e.getContainerElm())[0];i?Nt(o).css("z-index",i.zIndex-1):o&&(o.parentNode.removeChild(o),Ne=!1),Ve.currentZIndex=r}var Ve=De.extend({Mixins:[pe,Ae],init:function(t){var i=this;i._super(t),(i._eventsRoot=i).classes.add("floatpanel"),t.autohide&&(ze(),function(){if(!Me){var t=_.document.documentElement,e=t.clientWidth,n=t.clientHeight;Me=function(){_.document.all&&e===t.clientWidth&&n===t.clientHeight||(e=t.clientWidth,n=t.clientHeight,Ve.hideAll())},Nt(_.window).on(&quot
 ;resize",Me)}}(),Be.push(i)),t.autofix&&(Se||(Se=function(){var t;for(t=Be.length;t--;)Fe(Be[t])},Nt(_.window).on("scroll",Se)),i.on("move",function(){Fe(this)})),i.on("postrender show",function(t){if(t.control===i){var e,n=i.classPrefix;i.modal&&!Ne&&((e=Nt("#"+n+"modal-block",i.getContainerElm()))[0]||(e=Nt('<div id="'+n+'modal-block" class="'+n+"reset "+n+'fade"></div>').appendTo(i.getContainerElm())),c.setTimeout(function(){e.addClass(n+"in"),Nt(i.getEl()).addClass(n+"in")}),Ne=!0),Ue(!0,i)}}),i.on("show",function(){i.parents().each(function(t){if(t.state.get("fixed"))return i.fixed(!0),!1})}),t.popover&&(i._preBodyHtml='<div class="'+i.classPrefix+'arrow"></div>',i.classes.add("popover").add("bottom").add(i.isRtl()?"end":"start")),i.aria("label&q
 uot;,t.ariaLabel),i.aria("labelledby",i._id),i.aria("describedby",i.describedBy||i._id+"-none")},fixed:function(t){var e=this;if(e.state.get("fixed")!==t){if(e.state.get("rendered")){var n=Mt.getViewPort();t?e.layoutRect().y-=n.y:e.layoutRect().y+=n.y}e.classes.toggle("fixed",t),e.state.set("fixed",t)}return e},show:function(){var t,e=this._super();for(t=Be.length;t--&&Be[t]!==this;);return-1===t&&Be.push(this),e},hide:function(){return qe(this),Ue(!1,this),this._super()},hideAll:function(){Ve.hideAll()},close:function(){return this.fire("close").isDefaultPrevented()||(this.remove(),Ue(!1,this)),this},remove:function(){qe(this),this._super()},postRender:function(){return this.settings.bodyRole&&this.getEl("body").setAttribute("role",this.settings.bodyRole),this._super()}});function qe(t){var e;for(e=Be.length;e--;)Be[e]===t&&Be.splice(e,1);for(e=Le.leng
 th;e--;)Le[e]===t&&Le.splice(e,1)}Ve.hideAll=function(){for(var t=Be.length;t--;){var e=Be[t];e&&e.settings.autohide&&(e.hide(),Be.splice(t,1))}};var Ye=[],$e="";function Xe(t){var e,n=Nt("meta[name=viewport]")[0];!1!==h.overrideViewPort&&(n||((n=_.document.createElement("meta")).setAttribute("name","viewport"),_.document.getElementsByTagName("head")[0].appendChild(n)),(e=n.getAttribute("content"))&&void 0!==$e&&($e=e),n.setAttribute("content",t?"width=device-width,initial-scale=1.0,user-scalable=0,minimum-scale=1.0,maximum-scale=1.0":$e))}function je(t,e){(function(){for(var t=0;t<Ye.length;t++)if(Ye[t]._fullscreen)return!0;return!1})()&&!1===e&&Nt([_.document.documentElement,_.document.body]).removeClass(t+"fullscreen")}var Je=Ve.extend({modal:!0,Defaults:{border:1,layout:"flex",containerCls:"panel&quo
 t;,role:"dialog",callbacks:{submit:function(){this.fire("submit",{data:this.toJSON()})},close:function(){this.close()}}},init:function(t){var n=this;n._super(t),n.isRtl()&&n.classes.add("rtl"),n.classes.add("window"),n.bodyClasses.add("window-body"),n.state.set("fixed",!0),t.buttons&&(n.statusbar=new De({layout:"flex",border:"1 0 0 0",spacing:3,padding:10,align:"center",pack:n.isRtl()?"start":"end",defaults:{type:"button"},items:t.buttons}),n.statusbar.classes.add("foot"),n.statusbar.parent(n)),n.on("click",function(t){var e=n.classPrefix+"close";(Mt.hasClass(t.target,e)||Mt.hasClass(t.target.parentNode,e))&&n.close()}),n.on("cancel",function(){n.close()}),n.on("move",function(t){t.control===n&&Ve.hideAll()}),n.aria("describedby",n.describedBy||n._id+"-none"),n.ari
 a("label",t.title),n._fullscreen=!1},recalc:function(){var t,e,n,i,r=this,o=r.statusbar;r._fullscreen&&(r.layoutRect(Mt.getWindowSize()),r.layoutRect().contentH=r.layoutRect().innerH),r._super(),t=r.layoutRect(),r.settings.title&&!r._fullscreen&&(e=t.headerW)>t.w&&(n=t.x-Math.max(0,e/2),r.layoutRect({w:e,x:n}),i=!0),o&&(o.layoutRect({w:r.layoutRect().innerW}).recalc(),(e=o.layoutRect().minW+t.deltaW)>t.w&&(n=t.x-Math.max(0,e-t.w),r.layoutRect({w:e,x:n}),i=!0)),i&&r.recalc()},initLayoutRect:function(){var t,e=this,n=e._super(),i=0;if(e.settings.title&&!e._fullscreen){t=e.getEl("head");var r=Mt.getSize(t);n.headerW=r.width,n.headerH=r.height,i+=n.headerH}e.statusbar&&(i+=e.statusbar.layoutRect().h),n.deltaH+=i,n.minH+=i,n.h+=i;var o=Mt.getWindowSize();return n.x=e.settings.x||Math.max(0,o.w/2-n.w/2),n.y=e.settings.y||Math.max(0,o.h/2-n.h/2),n},renderHtml:function(){var t=this,e=t._layout,
 n=t._id,i=t.classPrefix,r=t.settings,o="",s="",a=r.html;return t.preRender(),e.preRender(t),r.title&&(o='<div id="'+n+'-head" class="'+i+'window-head"><div id="'+n+'-title" class="'+i+'title">'+t.encode(r.title)+'</div><div id="'+n+'-dragh" class="'+i+'dragh"></div><button type="button" class="'+i+'close" aria-hidden="true"><i class="mce-ico mce-i-remove"></i></button></div>'),r.url&&(a='<iframe src="'+r.url+'" tabindex="-1"></iframe>'),void 0===a&&(a=e.renderHtml(t)),t.statusbar&&(s=t.statusbar.renderHtml()),'<div id="'+n+'" class="'+t.classes+'" hidefocus="1"><div class="'+t.classPrefix+'reset" role="application">'+o+'<div id="'+n+'-body" class="'+t.bodyClasses+'
 ">'+a+"</div>"+s+"</div></div>"},fullscreen:function(t){var n,e,i=this,r=_.document.documentElement,o=i.classPrefix;if(t!==i._fullscreen)if(Nt(_.window).on("resize",function(){var t;if(i._fullscreen)if(n)i._timer||(i._timer=c.setTimeout(function(){var t=Mt.getWindowSize();i.moveTo(0,0).resizeTo(t.w,t.h),i._timer=0},50));else{t=(new Date).getTime();var e=Mt.getWindowSize();i.moveTo(0,0).resizeTo(e.w,e.h),50<(new Date).getTime()-t&&(n=!0)}}),e=i.layoutRect(),i._fullscreen=t){i._initial={x:e.x,y:e.y,w:e.w,h:e.h},i.borderBox=Wt("0"),i.getEl("head").style.display="none",e.deltaH-=e.headerH+2,Nt([r,_.document.body]).addClass(o+"fullscreen"),i.classes.add("fullscreen");var s=Mt.getWindowSize();i.moveTo(0,0).resizeTo(s.w,s.h)}else i.borderBox=Wt(i.settings.border),i.getEl("head").style.display="",e.deltaH+=e.headerH,Nt([r,_.document.body]).removeClass(o+&q
 uot;fullscreen"),i.classes.remove("fullscreen"),i.moveTo(i._initial.x,i._initial.y).resizeTo(i._initial.w,i._initial.h);return i.reflow()},postRender:function(){var e,n=this;setTimeout(function(){n.classes.add("in"),n.fire("open")},0),n._super(),n.statusbar&&n.statusbar.postRender(),n.focus(),this.dragHelper=new Ce(n._id+"-dragh",{start:function(){e={x:n.layoutRect().x,y:n.layoutRect().y}},drag:function(t){n.moveTo(e.x+t.deltaX,e.y+t.deltaY)}}),n.on("submit",function(t){t.isDefaultPrevented()||n.close()}),Ye.push(n),Xe(!0)},submit:function(){return this.fire("submit",{data:this.toJSON()})},remove:function(){var t,e=this;for(e.dragHelper.destroy(),e._super(),e.statusbar&&this.statusbar.remove(),je(e.classPrefix,!1),t=Ye.length;t--;)Ye[t]===e&&Ye.splice(t,1);Xe(0<Ye.length)},getContentWindow:function(){var t=this.getEl().getElementsByTagName("iframe")[0];return t?t.contentWindow:null}
 });!function(){if(!h.desktop){var n={w:_.window.innerWidth,h:_.window.innerHeight};c.setInterval(function(){var t=_.window.innerWidth,e=_.window.innerHeight;n.w===t&&n.h===e||(n={w:t,h:e},Nt(_.window).trigger("resize"))},100)}Nt(_.window).on("resize",function(){var t,e,n=Mt.getWindowSize();for(t=0;t<Ye.length;t++)e=Ye[t].layoutRect(),Ye[t].moveTo(Ye[t].settings.x||Math.max(0,n.w/2-e.w/2),Ye[t].settings.y||Math.max(0,n.h/2-e.h/2))})}();var Ge,Ke,Ze,Qe=Je.extend({init:function(t){t={border:1,padding:20,layout:"flex",pack:"center",align:"center",containerCls:"panel",autoScroll:!0,buttons:{type:"button",text:"Ok",action:"ok"},items:{type:"label",multiline:!0,maxWidth:500,maxHeight:200}},this._super(t)},Statics:{OK:1,OK_CANCEL:2,YES_NO:3,YES_NO_CANCEL:4,msgBox:function(t){var e,i=t.callback||function(){};function n(t,e,n){return{type:"button",text:t,subtype:n?"pri
 mary":"",onClick:function(t){t.control.parents()[1].close(),i(e)}}}switch(t.buttons){case Qe.OK_CANCEL:e=[n("Ok",!0,!0),n("Cancel",!1)];break;case Qe.YES_NO:case Qe.YES_NO_CANCEL:e=[n("Yes",1,!0),n("No",0)],t.buttons===Qe.YES_NO_CANCEL&&e.push(n("Cancel",-1));break;default:e=[n("Ok",!0,!0)]}return new Je({padding:20,x:t.x,y:t.y,minWidth:300,minHeight:100,layout:"flex",pack:"center",align:"center",buttons:e,title:t.title,role:"alertdialog",items:{type:"label",multiline:!0,maxWidth:500,maxHeight:200,text:t.text},onPostRender:function(){this.aria("describedby",this.items()[0]._id)},onClose:t.onClose,onCancel:function(){i(!1)}}).renderTo(_.document.body).reflow()},alert:function(t,e){return"string"==typeof t&&(t={text:t}),t.callback=e,Qe.msgBox(t)},confirm:function(t,e){return"string"==typeof t&&(t={text:t}),t.
 callback=e,t.buttons=Qe.OK_CANCEL,Qe.msgBox(t)}}}),tn=function(t,e){return{renderUI:function(){return at(t,e)},getNotificationManagerImpl:function(){return _e(t)},getWindowManagerImpl:function(){return{open:function(n,t,e){var i;return n.title=n.title||" ",n.url=n.url||n.file,n.url&&(n.width=parseInt(n.width||320,10),n.height=parseInt(n.height||240,10)),n.body&&(n.items={defaults:n.defaults,type:n.bodyType||"form",items:n.body,data:n.data,callbacks:n.commands}),n.url||n.buttons||(n.buttons=[{text:"Ok",subtype:"primary",onclick:function(){i.find("form")[0].submit()}},{text:"Cancel",onclick:function(){i.close()}}]),(i=new Je(n)).on("close",function(){e(i)}),n.data&&i.on("postRender",function(){this.find("*").each(function(t){var e=t.name();e in n.data&&t.value(n.data[e])})}),i.features=n||{},i.params=t||{},i=i.renderTo(_.document.body).reflow()},alert:function(t,e,
 n){var i;return(i=Qe.alert(t,function(){e()})).on("close",function(){n(i)}),i},confirm:function(t,e,n){var i;return(i=Qe.confirm(t,function(t){e(t)})).on("close",function(){n(i)}),i},close:function(t){t.close()},getParams:function(t){return t.params},setParams:function(t,e){t.params=e}}}}},en="undefined"!=typeof _.window?_.window:Function("return this;")(),nn=function(t,e){return function(t,e){for(var n=e!==undefined&&null!==e?e:en,i=0;i<t.length&&n!==undefined&&null!==n;++i)n=n[t[i]];return n}(t.split("."),e)},rn=function(t,e){var n=nn(t,e);if(n===undefined||null===n)throw t+" not available on this browser";return n},on=tinymce.util.Tools.resolve("tinymce.util.Promise"),sn=function(n){return new on(function(t){var e=new(rn("FileReader"));e.onloadend=function(){t(e.result.split(",")[1])},e.readAsDataURL(n)})},an=function(){return new on(function(e){var t;(t=_.document
 .createElement("input")).type="file",t.style.position="fixed",t.style.left=0,t.style.top=0,t.style.opacity=.001,_.document.body.appendChild(t),t.onchange=function(t){e(Array.prototype.slice.call(t.target.files))},t.click(),t.parentNode.removeChild(t)})},ln=0,un=function(t){return t+ln+++(e=function(){return Math.round(4294967295*Math.random()).toString(36)},"s"+Date.now().toString(36)+e()+e()+e());var e},cn=function(r,o){var s={};function t(t){var e,n,i;n=o[t?"startContainer":"endContainer"],i=o[t?"startOffset":"endOffset"],1===n.nodeType&&(e=r.create("span",{"data-mce-type":"bookmark"}),n.hasChildNodes()?(i=Math.min(i,n.childNodes.length-1),t?n.insertBefore(e,n.childNodes[i]):r.insertAfter(e,n.childNodes[i])):n.appendChild(e),n=e,i=0),s[t?"startContainer":"endContainer"]=n,s[t?"startOffset":"endOffset"]=i}return t(!0),o.collap
 sed||t(),s},dn=function(r,o){function t(t){var e,n,i;e=i=o[t?"startContainer":"endContainer"],n=o[t?"startOffset":"endOffset"],e&&(1===e.nodeType&&(n=function(t){for(var e=t.parentNode.firstChild,n=0;e;){if(e===t)return n;1===e.nodeType&&"bookmark"===e.getAttribute("data-mce-type")||n++,e=e.nextSibling}return-1}(e),e=e.parentNode,r.remove(i)),o[t?"startContainer":"endContainer"]=e,o[t?"startOffset":"endOffset"]=n)}t(!0),t();var e=r.createRng();return e.setStart(o.startContainer,o.startOffset),o.endContainer&&e.setEnd(o.endContainer,o.endOffset),e},fn=tinymce.util.Tools.resolve("tinymce.dom.TreeWalker"),hn=tinymce.util.Tools.resolve("tinymce.dom.RangeUtils"),mn=function(t){return"A"===t.nodeName&&t.hasAttribute("href")},gn=function(t){var e,n,i,r,o,s,a,l;return r=t.selection,o=t.dom,s=r.getRng(),a=o,l=hn.ge
 tNode(s.startContainer,s.startOffset),e=a.getParent(l,mn)||l,n=hn.getNode(s.endContainer,s.endOffset),i=t.getBody(),C.grep(function(t,e,n){var i,r,o=[];for(i=new fn(e,t),r=e;r&&(1===r.nodeType&&o.push(r),r!==n);r=i.next());return o}(i,e,n),mn)},pn=function(t){var e,n,i,r,o;n=gn(e=t),r=e.dom,o=e.selection,i=cn(r,o.getRng()),C.each(n,function(t){e.dom.remove(t,!0)}),o.setRng(dn(r,i))},vn=function(t){t.selection.collapse(!1)},bn=function(t){t.focus(),pn(t),vn(t)},yn=function(t,e){var n,i,r,o,s,a=t.dom.getParent(t.selection.getStart(),"a[href]");a?(o=a,s=e,(r=t).focus(),r.dom.setAttrib(o,"href",s),vn(r)):(i=e,(n=t).execCommand("mceInsertLink",!1,{href:i}),vn(n))},xn=function(t,e,n){var i,r,o;t.plugins.table?t.plugins.table.insertTable(e,n):(r=e,o=n,(i=t).undoManager.transact(function(){var t,e;i.insertContent(function(t,e){var n,i,r;for(r='<table data-mce-id="mce" style="width: 100%">',r+="<tbody>",i
 =0;i<e;i++){for(r+="<tr>",n=0;n<t;n++)r+="<td><br></td>";r+="</tr>"}return r+="</tbody>",r+="</table>"}(r,o)),(t=i.dom.select("*[data-mce-id]")[0]).removeAttribute("data-mce-id"),e=i.dom.select("td,th",t),i.selection.setCursorLocation(e[0],0)}))},wn=function(t,e){t.execCommand("FormatBlock",!1,e)},_n=function(t,e,n){var i,r;r=(i=t.editorUpload.blobCache).create(un("mceu"),n,e),i.add(r),t.insertContent(t.dom.createHTML("img",{src:r.blobUri()}))},Rn=function(t,e){0===e.trim().length?bn(t):yn(t,e)},Cn=bn,kn=function(n,t){n.addButton("quicklink",{icon:"link",tooltip:"Insert/Edit link",stateSelector:"a[href]",onclick:function(){t.showForm(n,"quicklink")}}),n.addButton("quickimage",{icon:"image",tooltip:"Insert image",onclick:function(){an().then(function
 (t){var e=t[0];sn(e).then(function(t){_n(n,t,e)})})}}),n.addButton("quicktable",{icon:"table",tooltip:"Insert table",onclick:function(){t.hide(),xn(n,2,2)}}),function(e){for(var t=function(t){return function(){wn(e,t)}},n=1;n<6;n++){var i="h"+n;e.addButton(i,{text:i.toUpperCase(),tooltip:"Heading "+n,stateSelector:i,onclick:t(i),onPostRender:function(){this.getEl().firstChild.firstChild.style.fontWeight="bold"}})}}(n)},En=function(){var t=h.container;if(t&&"static"!==v.DOM.getStyle(t,"position",!0)){var e=v.DOM.getPos(t),n=e.x-t.scrollLeft,i=e.y-t.scrollTop;return vt.some({x:n,y:i})}return vt.none()},Hn=function(t){return/^www\.|\.(com|org|edu|gov|uk|net|ca|de|jp|fr|au|us|ru|ch|it|nl|se|no|es|mil)$/i.test(t.trim())},Tn=function(t){return/^https?:\/\//.test(t.trim())},Sn=function(t,e){return!Tn(e)&&Hn(e)?(n=t,i=e,new on(function(e){n.windowManager.confirm("The URL you entered seems
  to be an external link. Do you want to add the required http:// prefix?",function(t){e(!0===t?"http://"+i:i)})})):on.resolve(e);var n,i},Mn=function(r,e){var t,n,i,o={};return t="quicklink",n={items:[{type:"button",name:"unlink",icon:"unlink",onclick:function(){r.focus(),Cn(r),e()},tooltip:"Remove link"},{type:"filepicker",name:"linkurl",placeholder:"Paste or type a link",filetype:"file",onchange:function(t){var e=t.meta;e&&e.attach&&(o={href:this.value(),attach:e.attach})}},{type:"button",icon:"checkmark",subtype:"primary",tooltip:"Ok",onclick:"submit"}],onshow:function(t){if(t.control===this){var e,n="";(e=r.dom.getParent(r.selection.getStart(),"a[href]"))&&(n=r.dom.getAttrib(e,"href")),this.fromJSON({linkurl:n}),i=this.find("#unlink"),e?i.show():i.hide(),this.find
 ("#linkurl")[0].focus()}var i},onsubmit:function(t){Sn(r,t.data.linkurl).then(function(t){r.undoManager.transact(function(){t===o.href&&(o.attach(),o={}),Rn(r,t)}),e()})}},(i=ke.create(C.extend({type:"form",layout:"flex",direction:"row",padding:5,name:t,spacing:3},n))).on("show",function(){i.find("textbox").eq(0).each(function(t){t.focus()})}),i},Nn=function(n,t,e){var o,i,s=[];if(e)return C.each(L(i=e)?i:W(i)?i.split(/[ ,]/):[],function(t){if("|"===t)o=null;else if(n.buttons[t]){o||(o={type:"buttongroup",items:[]},s.push(o));var e=n.buttons[t];B(e)&&(e=e()),e.type=e.type||"button",(e=ke.create(e)).on("postRender",(i=n,r=e,function(){var e,t,n=(t=function(t,e){return{selector:t,handler:e}},(e=r).settings.stateSelector?t(e.settings.stateSelector,function(t){e.active(t)}):e.settings.disabledStateSelector?t(e.settings.disabledStateSelector,function(t){e.disabled(t)}):null
 );null!==n&&i.selection.selectorChanged(n.selector,n.handler)})),o.items.push(e)}var i,r}),ke.create({type:"toolbar",layout:"flow",name:t,items:s})},On=function(){var l,c,o=function(t){return 0<t.items().length},u=function(t,e){var n,i,r=(n=t,i=e,C.map(i,function(t){return Nn(n,t.id,t.items)})).concat([Nn(t,"text",G(t)),Nn(t,"insert",K(t)),Mn(t,p)]);return ke.create({type:"floatpanel",role:"dialog",classes:"tinymce tinymce-inline arrow",ariaLabel:"Inline toolbar",layout:"flex",direction:"column",align:"stretch",autohide:!1,autofix:!0,fixed:!0,border:1,items:C.grep(r,o),oncancel:function(){t.focus()}})},d=function(t){t&&t.show()},f=function(t,e){t.moveTo(e.x,e.y)},h=function(n,i){i=i?i.substr(0,2):"",C.each({t:"down",b:"up",c:"center"},function(t,e){n.classes.toggle("arrow-"+t,e===i.substr(0,1))}),"cr&q
 uot;===i?(n.classes.toggle("arrow-left",!0),n.classes.toggle("arrow-right",!1)):"cl"===i?(n.classes.toggle("arrow-left",!1),n.classes.toggle("arrow-right",!0)):C.each({l:"left",r:"right"},function(t,e){n.classes.toggle("arrow-"+t,e===i.substr(1,1))})},m=function(t,e){var n=t.items().filter("#"+e);return 0<n.length&&(n[0].show(),t.reflow(),!0)},g=function(t,e,n,i){var r,o,s,a;if(a=Z(n),r=y(n),o=v.DOM.getRect(t.getEl()),s="insert"===e?$(i,r,o):X(i,r,o)){var l=En().getOr({x:0,y:0}),u={x:s.rect.x-l.x,y:s.rect.y-l.y,w:s.rect.w,h:s.rect.h};return f(t,j(a,c=i,r,u)),h(t,s.position),!0}return!1},p=function(){l&&l.hide()};return{show:function(t,e,n,i){var r,o,s,a;l||(M(t),(l=u(t,i)).renderTo().reflow().moveTo(n.x,n.y),t.nodeChanged()),o=e,s=t,a=n,d(r=l),r.items().hide(),m(r,o)?!1===g(r,o,s,a)&&p():p()},showForm:function(t,e){if(l){if(l.items().hide(),!m(l,e))return vo
 id p();var n,i,r,o=void 0;d(l),l.items().hide(),m(l,e),r=Z(t),n=y(t),o=v.DOM.getRect(l.getEl()),(i=X(c,n,o))&&(o=i.rect,f(l,j(r,c,n,o)),h(l,i.position))}},reposition:function(t,e,n){l&&g(l,e,t,n)},inForm:function(){return l&&l.visible()&&0<l.items().filter("form:visible").length},hide:p,focus:function(){l&&l.find("toolbar:visible").eq(0).each(function(t){t.focus(!0)})},remove:function(){l&&(l.remove(),l=null)}}},Pn=Ot.extend({Defaults:{firstControlClass:"first",lastControlClass:"last"},init:function(t){this.settings=C.extend({},this.Defaults,t)},preRender:function(t){t.bodyClasses.add(this.settings.containerClass)},applyClasses:function(t){var e,n,i,r,o=this.settings;e=o.firstControlClass,n=o.lastControlClass,t.each(function(t){t.classes.remove(e).remove(n).add(o.controlClass),t.visible()&&(i||(i=t),r=t)}),i&&i.classes.add(e),r&&r.classes.add(n)},renderHtml:function(t){
 var e="";return this.applyClasses(t.items()),t.items().each(function(t){e+=t.renderHtml()}),e},recalc:function(){},postRender:function(){},isNative:function(){return!1}}),Wn=Pn.extend({Defaults:{containerClass:"abs-layout",controlClass:"abs-layout-item"},recalc:function(t){t.items().filter(":visible").each(function(t){var e=t.settings;t.layoutRect({x:e.x,y:e.y,w:e.w,h:e.h}),t.recalc&&t.recalc()})},renderHtml:function(t){return'<div id="'+t._id+'-absend" class="'+t.classPrefix+'abs-end"></div>'+this._super(t)}}),Dn=be.extend({Defaults:{classes:"widget btn",role:"button"},init:function(t){var e,n=this;n._super(t),t=n.settings,e=n.settings.size,n.on("click mousedown",function(t){t.preventDefault()}),n.on("touchstart",function(t){n.fire("click",t),t.preventDefault()}),t.subtype&&n.classes.add(t.subtype),e&&n.classes.add("btn-"+e),t.i
 con&&n.icon(t.icon)},icon:function(t){return arguments.length?(this.state.set("icon",t),this):this.state.get("icon")},repaint:function(){var t,e=this.getEl().firstChild;e&&((t=e.style).width=t.height="100%"),this._super()},renderHtml:function(){var t,e,n=this,i=n._id,r=n.classPrefix,o=n.state.get("icon"),s=n.state.get("text"),a="",l=n.settings;return(t=l.image)?(o="none","string"!=typeof t&&(t=_.window.getSelection?t[0]:t[1]),t=" style=\"background-image: url('"+t+"')\""):t="",s&&(n.classes.add("btn-has-text"),a='<span class="'+r+'txt">'+n.encode(s)+"</span>"),o=o?r+"ico "+r+"i-"+o:"",e="boolean"==typeof l.active?' aria-pressed="'+l.active+'"':"",'<div id="'+i+'" class="'+n.classes+'" tabindex="-1"'+e
 +'><button id="'+i+'-button" role="presentation" type="button" tabindex="-1">'+(o?'<i class="'+o+'"'+t+"></i>":"")+a+"</button></div>"},bindStates:function(){var o=this,n=o.$,i=o.classPrefix+"txt";function s(t){var e=n("span."+i,o.getEl());t?(e[0]||(n("button:first",o.getEl()).append('<span class="'+i+'"></span>'),e=n("span."+i,o.getEl())),e.html(o.encode(t))):e.remove(),o.classes.toggle("btn-has-text",!!t)}return o.state.on("change:text",function(t){s(t.value)}),o.state.on("change:icon",function(t){var e=t.value,n=o.classPrefix;e=(o.settings.icon=e)?n+"ico "+n+"i-"+o.settings.icon:"";var i=o.getEl().firstChild,r=i.getElementsByTagName("i")[0];e?(r&&r===i.firstChild||(r=_.document.createElement("i"),i.insertBefore(r,i.firstC
 hild)),r.className=e):r&&i.removeChild(r),s(o.state.get("text"))}),o._super()}}),An=Dn.extend({init:function(t){t=C.extend({text:"Browse...",multiple:!1,accept:null},t),this._super(t),this.classes.add("browsebutton"),t.multiple&&this.classes.add("multiple")},postRender:function(){var n=this,e=Mt.create("input",{type:"file",id:n._id+"-browse",accept:n.settings.accept});n._super(),Nt(e).on("change",function(t){var e=t.target.files;n.value=function(){return e.length?n.settings.multiple?e:e[0]:null},t.preventDefault(),e.length&&n.fire("change",t)}),Nt(e).on("click",function(t){t.stopPropagation()}),Nt(n.getEl("button")).on("click",function(t){t.stopPropagation(),e.click()}),n.getEl().appendChild(e)},remove:function(){Nt(this.getEl("button")).off(),Nt(this.getEl("input")).off(),this._super()}}),Bn=Pe.extend({Defaults:{defaultT
 ype:"button",role:"group"},renderHtml:function(){var t=this,e=t._layout;return t.classes.add("btn-group"),t.preRender(),e.preRender(t),'<div id="'+t._id+'" class="'+t.classes+'"><div id="'+t._id+'-body">'+(t.settings.html||"")+e.renderHtml(t)+"</div></div>"}}),Ln=be.extend({Defaults:{classes:"checkbox",role:"checkbox",checked:!1},init:function(t){var e=this;e._super(t),e.on("click mousedown",function(t){t.preventDefault()}),e.on("click",function(t){t.preventDefault(),e.disabled()||e.checked(!e.checked())}),e.checked(e.settings.checked)},checked:function(t){return arguments.length?(this.state.set("checked",t),this):this.state.get("checked")},value:function(t){return arguments.length?this.checked(t):this.checked()},renderHtml:function(){var t=this,e=t._id,n=t.classPrefix;return'<div id="'+e+'" class="'+t.c
 lasses+'" unselectable="on" aria-labelledby="'+e+'-al" tabindex="-1"><i class="'+n+"ico "+n+'i-checkbox"></i><span id="'+e+'-al" class="'+n+'label">'+t.encode(t.state.get("text"))+"</span></div>"},bindStates:function(){var o=this;function e(t){o.classes.toggle("checked",t),o.aria("checked",t)}return o.state.on("change:text",function(t){o.getEl("al").firstChild.data=o.translate(t.value)}),o.state.on("change:checked change:value",function(t){o.fire("change"),e(t.value)}),o.state.on("change:icon",function(t){var e=t.value,n=o.classPrefix;if(void 0===e)return o.settings.icon;e=(o.settings.icon=e)?n+"ico "+n+"i-"+o.settings.icon:"";var i=o.getEl().firstChild,r=i.getElementsByTagName("i")[0];e?(r&&r===i.firstChild||(r=_.document.createElement(&quo
 t;i"),i.insertBefore(r,i.firstChild)),r.className=e):r&&i.removeChild(r)}),o.state.get("checked")&&e(!0),o._super()}}),In=tinymce.util.Tools.resolve("tinymce.util.VK"),zn=be.extend({init:function(i){var r=this;r._super(i),i=r.settings,r.classes.add("combobox"),r.subinput=!0,r.ariaTarget="inp",i.menu=i.menu||i.values,i.menu&&(i.icon="caret"),r.on("click",function(t){var e=t.target,n=r.getEl();if(Nt.contains(n,e)||e===n)for(;e&&e!==n;)e.id&&-1!==e.id.indexOf("-open")&&(r.fire("action"),i.menu&&(r.showMenu(),t.aria&&r.menu.items()[0].focus())),e=e.parentNode}),r.on("keydown",function(t){var e;13===t.keyCode&&"INPUT"===t.target.nodeName&&(t.preventDefault(),r.parents().reverse().each(function(t){if(t.toJSON)return e=t,!1}),r.fire("submit",{data:e.toJSON()}))}),r.on("keyup",function(t){
 if("INPUT"===t.target.nodeName){var e=r.state.get("value"),n=t.target.value;n!==e&&(r.state.set("value",n),r.fire("autocomplete",t))}}),r.on("mouseover",function(t){var e=r.tooltip().moveTo(-65535);if(r.statusLevel()&&-1!==t.target.className.indexOf(r.classPrefix+"status")){var n=r.statusMessage()||"Ok",i=e.text(n).show().testMoveRel(t.target,["bc-tc","bc-tl","bc-tr"]);e.classes.toggle("tooltip-n","bc-tc"===i),e.classes.toggle("tooltip-nw","bc-tl"===i),e.classes.toggle("tooltip-ne","bc-tr"===i),e.moveRel(t.target,i)}})},statusLevel:function(t){return 0<arguments.length&&this.state.set("statusLevel",t),this.state.get("statusLevel")},statusMessage:function(t){return 0<arguments.length&&this.state.set("statusMessage",t),this.state.get("statusMessage")}
 ,showMenu:function(){var t,e=this,n=e.settings;e.menu||((t=n.menu||[]).length?t={type:"menu",items:t}:t.type=t.type||"menu",e.menu=ke.create(t).parent(e).renderTo(e.getContainerElm()),e.fire("createmenu"),e.menu.reflow(),e.menu.on("cancel",function(t){t.control===e.menu&&e.focus()}),e.menu.on("show hide",function(t){t.control.items().each(function(t){t.active(t.value()===e.value())})}).fire("show"),e.menu.on("select",function(t){e.value(t.control.value())}),e.on("focusin",function(t){"INPUT"===t.target.tagName.toUpperCase()&&e.menu.hide()}),e.aria("expanded",!0)),e.menu.show(),e.menu.layoutRect({w:e.layoutRect().w}),e.menu.moveRel(e.getEl(),e.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"])},focus:function(){this.getEl("inp").focus()},repaint:function(){var t,e,n=this,i=n.getEl(),r=n.getEl("open"),o=n.layoutRect()
 ,s=0,a=i.firstChild;n.statusLevel()&&"none"!==n.statusLevel()&&(s=parseInt(Mt.getRuntimeStyle(a,"padding-right"),10)-parseInt(Mt.getRuntimeStyle(a,"padding-left"),10)),t=r?o.w-Mt.getSize(r).width-10:o.w-10;var l=_.document;return l.all&&(!l.documentMode||l.documentMode<=8)&&(e=n.layoutRect().h-2+"px"),Nt(a).css({width:t-s,lineHeight:e}),n._super(),n},postRender:function(){var e=this;return Nt(this.getEl("inp")).on("change",function(t){e.state.set("value",t.target.value),e.fire("change",t)}),e._super()},renderHtml:function(){var t,e,n,i=this,r=i._id,o=i.settings,s=i.classPrefix,a=i.state.get("value")||"",l="",u="";return"spellcheck"in o&&(u+=' spellcheck="'+o.spellcheck+'"'),o.maxLength&&(u+=' maxlength="'+o.maxLength+'"'),o.size&&(u+=' size="'+o.size+'"'),o.subtype&am
 p;&(u+=' type="'+o.subtype+'"'),n='<i id="'+r+'-status" class="mce-status mce-ico" style="display: none"></i>',i.disabled()&&(u+=' disabled="disabled"'),(t=o.icon)&&"caret"!==t&&(t=s+"ico "+s+"i-"+o.icon),e=i.state.get("text"),(t||e)&&(l='<div id="'+r+'-open" class="'+s+"btn "+s+'open" tabIndex="-1" role="button"><button id="'+r+'-action" type="button" hidefocus="1" tabindex="-1">'+("caret"!==t?'<i class="'+t+'"></i>':'<i class="'+s+'caret"></i>')+(e?(t?" ":"")+e:"")+"</button></div>",i.classes.add("has-open")),'<div id="'+r+'" class="'+i.classes+'"><input id="'+r+'-inp" class="'+s+'textbox
 " value="'+i.encode(a,!1)+'" hidefocus="1"'+u+' placeholder="'+i.encode(o.placeholder)+'" />'+n+l+"</div>"},value:function(t){return arguments.length?(this.state.set("value",t),this):(this.state.get("rendered")&&this.state.set("value",this.getEl("inp").value),this.state.get("value"))},showAutoComplete:function(t,i){var r=this;if(0!==t.length){r.menu?r.menu.items().remove():r.menu=ke.create({type:"menu",classes:"combobox-menu",layout:"flow"}).parent(r).renderTo(),C.each(t,function(t){var e,n;r.menu.add({text:t.title,url:t.previewUrl,match:i,classes:"menu-item-ellipsis",onclick:(e=t.value,n=t.title,function(){r.fire("selectitem",{title:n,value:e})})})}),r.menu.renderNew(),r.hideMenu(),r.menu.on("cancel",function(t){t.control.parent()===r.menu&&(t.stopPropagation(),r.focus(),r.hideMenu())}),r.menu.on("se
 lect",function(){r.focus()});var e=r.layoutRect().w;r.menu.layoutRect({w:e,minW:0,maxW:e}),r.menu.repaint(),r.menu.reflow(),r.menu.show(),r.menu.moveRel(r.getEl(),r.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"])}else r.hideMenu()},hideMenu:function(){this.menu&&this.menu.hide()},bindStates:function(){var r=this;r.state.on("change:value",function(t){r.getEl("inp").value!==t.value&&(r.getEl("inp").value=t.value)}),r.state.on("change:disabled",function(t){r.getEl("inp").disabled=t.value}),r.state.on("change:statusLevel",function(t){var e=r.getEl("status"),n=r.classPrefix,i=t.value;Mt.css(e,"display","none"===i?"none":""),Mt.toggleClass(e,n+"i-checkmark","ok"===i),Mt.toggleClass(e,n+"i-warning","warn"===i),Mt.toggleClass(e,n+"i-error","error"===i),r.classes.togg
 le("has-status","none"!==i),r.repaint()}),Mt.on(r.getEl("status"),"mouseleave",function(){r.tooltip().hide()}),r.on("cancel",function(t){r.menu&&r.menu.visible()&&(t.stopPropagation(),r.hideMenu())});var n=function(t,e){e&&0<e.items().length&&e.items().eq(t)[0].focus()};return r.on("keydown",function(t){var e=t.keyCode;"INPUT"===t.target.nodeName&&(e===In.DOWN?(t.preventDefault(),r.fire("autocomplete"),n(0,r.menu)):e===In.UP&&(t.preventDefault(),n(-1,r.menu)))}),r._super()},remove:function(){Nt(this.getEl("inp")).off(),this.menu&&this.menu.remove(),this._super()}}),Fn=zn.extend({init:function(t){var e=this;t.spellcheck=!1,t.onaction&&(t.icon="none"),e._super(t),e.classes.add("colorbox"),e.on("change keyup postrender",function(){e.repaintColor(e.value())})},repaintColor:function(t){var e=this.getEl(&
 quot;open"),n=e?e.getElementsByTagName("i")[0]:null;if(n)try{n.style.background=t}catch(i){}},bindStates:function(){var e=this;return e.state.on("change:value",function(t){e.state.get("rendered")&&e.repaintColor(t.value)}),e._super()}}),Un=Dn.extend({showPanel:function(){var e=this,t=e.settings;if(e.classes.add("opened"),e.panel)e.panel.show();else{var n=t.panel;n.type&&(n={layout:"grid",items:n}),n.role=n.role||"dialog",n.popover=!0,n.autohide=!0,n.ariaRoot=!0,e.panel=new Ve(n).on("hide",function(){e.classes.remove("opened")}).on("cancel",function(t){t.stopPropagation(),e.focus(),e.hidePanel()}).parent(e).renderTo(e.getContainerElm()),e.panel.fire("show"),e.panel.reflow()}var i=e.panel.testMoveRel(e.getEl(),t.popoverAlign||(e.isRtl()?["bc-tc","bc-tl","bc-tr"]:["bc-tc","bc-tr","bc-tl","tc-bc",&q
 uot;tc-br","tc-bl"]));e.panel.classes.toggle("start","l"===i.substr(-1)),e.panel.classes.toggle("end","r"===i.substr(-1));var r="t"===i.substr(0,1);e.panel.classes.toggle("bottom",!r),e.panel.classes.toggle("top",r),e.panel.moveRel(e.getEl(),i)},hidePanel:function(){this.panel&&this.panel.hide()},postRender:function(){var e=this;return e.aria("haspopup",!0),e.on("click",function(t){t.control===e&&(e.panel&&e.panel.visible()?e.hidePanel():(e.showPanel(),e.panel.focus(!!t.aria)))}),e._super()},remove:function(){return this.panel&&(this.panel.remove(),this.panel=null),this._super()}}),Vn=v.DOM,qn=Un.extend({init:function(t){this._super(t),this.classes.add("splitbtn"),this.classes.add("colorbutton")},color:function(t){return t?(this._color=t,this.getEl("preview").style.backgroundColor=t,this):this._color},resetColor:functi
 on(){return this._color=null,this.getEl("preview").style.backgroundColor=null,this},renderHtml:function(){var t=this,e=t._id,n=t.classPrefix,i=t.state.get("text"),r=t.settings.icon?n+"ico "+n+"i-"+t.settings.icon:"",o=t.settings.image?" style=\"background-image: url('"+t.settings.image+"')\"":"",s="";return i&&(t.classes.add("btn-has-text"),s='<span class="'+n+'txt">'+t.encode(i)+"</span>"),'<div id="'+e+'" class="'+t.classes+'" role="button" tabindex="-1" aria-haspopup="true"><button role="presentation" hidefocus="1" type="button" tabindex="-1">'+(r?'<i class="'+r+'"'+o+"></i>":"")+'<span id="'+e+'-preview" class="'+n+'preview"></span>'+s+'</button><but
 ton type="button" class="'+n+'open" hidefocus="1" tabindex="-1"> <i class="'+n+'caret"></i></button></div>'},postRender:function(){var e=this,n=e.settings.onclick;return e.on("click",function(t){t.aria&&"down"===t.aria.key||t.control!==e||Vn.getParent(t.target,"."+e.classPrefix+"open")||(t.stopImmediatePropagation(),n.call(e,t))}),delete e.settings.onclick,e._super()}}),Yn=tinymce.util.Tools.resolve("tinymce.util.Color"),$n=be.extend({Defaults:{classes:"widget colorpicker"},init:function(t){this._super(t)},postRender:function(){var n,i,r,o,s,a=this,l=a.color();function u(t,e){var n,i,r=Mt.getPos(t);return n=e.pageX-r.x,i=e.pageY-r.y,{x:n=Math.max(0,Math.min(n/t.clientWidth,1)),y:i=Math.max(0,Math.min(i/t.clientHeight,1))}}function c(t,e){var n=(360-t.h)/360;Mt.css(r,{top:100*n+"%"}),e||Mt.css(s,{left:t.s+"%",top:100-t.v+
 "%"}),o.style.background=Yn({s:100,v:100,h:t.h}).toHex(),a.color().parse({s:t.s,v:t.v,h:t.h})}function t(t){var e;e=u(o,t),n.s=100*e.x,n.v=100*(1-e.y),c(n),a.fire("change")}function e(t){var e;e=u(i,t),(n=l.toHsv()).h=360*(1-e.y),c(n,!0),a.fire("change")}i=a.getEl("h"),r=a.getEl("hp"),o=a.getEl("sv"),s=a.getEl("svp"),a._repaint=function(){c(n=l.toHsv())},a._super(),a._svdraghelper=new Ce(a._id+"-sv",{start:t,drag:t}),a._hdraghelper=new Ce(a._id+"-h",{start:e,drag:e}),a._repaint()},rgb:function(){return this.color().toRgb()},value:function(t){if(!arguments.length)return this.color().toHex();this.color().parse(t),this._rendered&&this._repaint()},color:function(){return this._color||(this._color=Yn()),this._color},renderHtml:function(){var t,e=this._id,o=this.classPrefix,s="#ff0000,#ff0080,#ff00ff,#8000ff,#0000ff,#0080ff,#00ffff,#00ff80,#00ff00,#80ff00,#ffff00,#ff8000,#ff0000";re
 turn t='<div id="'+e+'-h" class="'+o+'colorpicker-h" style="background: -ms-linear-gradient(top,'+s+");background: linear-gradient(to bottom,"+s+');">'+function(){var t,e,n,i,r="";for(n="filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=",t=0,e=(i=s.split(",")).length-1;t<e;t++)r+='<div class="'+o+'colorpicker-h-chunk" style="height:'+100/e+"%;"+n+i[t]+",endColorstr="+i[t+1]+");-ms-"+n+i[t]+",endColorstr="+i[t+1]+')"></div>';return r}()+'<div id="'+e+'-hp" class="'+o+'colorpicker-h-marker"></div></div>','<div id="'+e+'" class="'+this.classes+'"><div id="'+e+'-sv" class="'+o+'colorpicker-sv"><div class="'+o+'colorpicker-overlay1"><div class="'+o+'colorpicker-overlay2"><div id="'+
 e+'-svp" class="'+o+'colorpicker-selector1"><div class="'+o+'colorpicker-selector2"></div></div></div></div></div>'+t+"</div>"}}),Xn=be.extend({init:function(t){t=C.extend({height:100,text:"Drop an image here",multiple:!1,accept:null},t),this._super(t),this.classes.add("dropzone"),t.multiple&&this.classes.add("multiple")},renderHtml:function(){var t,e,n=this.settings;return t={id:this._id,hidefocus:"1"},e=Mt.create("div",t,"<span>"+this.translate(n.text)+"</span>"),n.height&&Mt.css(e,"height",n.height+"px"),n.width&&Mt.css(e,"width",n.width+"px"),e.className=this.classes,e.outerHTML},postRender:function(){var i=this,t=function(t){t.preventDefault(),i.classes.toggle("dragenter"),i.getEl().className=i.classes};i._super(),i.$el.on("dragover",fu
 nction(t){t.preventDefault()}),i.$el.on("dragenter",t),i.$el.on("dragleave",t),i.$el.on("drop",function(t){if(t.preventDefault(),!i.state.get("disabled")){var e=function(t){var e=i.settings.accept;if("string"!=typeof e)return t;var n=new RegExp("("+e.split(/\s*,\s*/).join("|")+")$","i");return C.grep(t,function(t){return n.test(t.name)})}(t.dataTransfer.files);i.value=function(){return e.length?i.settings.multiple?e:e[0]:null},e.length&&i.fire("change",t)}})},remove:function(){this.$el.off(),this._super()}}),jn=be.extend({init:function(t){var n=this;t.delimiter||(t.delimiter="\xbb"),n._super(t),n.classes.add("path"),n.canFocus=!0,n.on("click",function(t){var e;(e=t.target.getAttribute("data-index"))&&n.fire("select",{value:n.row()[e],index:e})}),n.row(n.settings.row)},focus:function(){return this.getEl().firstChild.focu
 s(),this},row:function(t){return arguments.length?(this.state.set("row",t),this):this.state.get("row")},renderHtml:function(){return'<div id="'+this._id+'" class="'+this.classes+'">'+this._getDataPathHtml(this.state.get("row"))+"</div>"},bindStates:function(){var e=this;return e.state.on("change:row",function(t){e.innerHtml(e._getDataPathHtml(t.value))}),e._super()},_getDataPathHtml:function(t){var e,n,i=t||[],r="",o=this.classPrefix;for(e=0,n=i.length;e<n;e++)r+=(0<e?'<div class="'+o+'divider" aria-hidden="true"> '+this.settings.delimiter+" </div>":"")+'<div role="button" class="'+o+"path-item"+(e===n-1?" "+o+"last":"")+'" data-index="'+e+'" tabindex="-1" id="'+this._id+"-"+e+'" aria-level="'+(e+1)+'">'+i[e].name+"&
 lt;/div>";return r||(r='<div class="'+o+'path-item">\xa0</div>'),r}}),Jn=jn.extend({postRender:function(){var o=this,s=o.settings.editor;function a(t){if(1===t.nodeType){if("BR"===t.nodeName||t.getAttribute("data-mce-bogus"))return!0;if("bookmark"===t.getAttribute("data-mce-type"))return!0}return!1}return!1!==s.settings.elementpath&&(o.on("select",function(t){s.focus(),s.selection.select(this.row()[t.index].element),s.nodeChanged()}),s.on("nodeChange",function(t){for(var e=[],n=t.parents,i=n.length;i--;)if(1===n[i].nodeType&&!a(n[i])){var r=s.fire("ResolveName",{name:n[i].nodeName.toLowerCase(),target:n[i]});if(r.isDefaultPrevented()||e.push({name:r.name,element:n[i]}),r.isPropagationStopped())break}o.row(e)})),o._super()}}),Gn=Pe.extend({Defaults:{layout:"flex",align:"center",defaults:{flex:1}},renderHtml:function(){var t=this,e=t._layout,n=t.class
 Prefix;return t.classes.add("formitem"),e.preRender(t),'<div id="'+t._id+'" class="'+t.classes+'" hidefocus="1" tabindex="-1">'+(t.settings.title?'<div id="'+t._id+'-title" class="'+n+'title">'+t.settings.title+"</div>":"")+'<div id="'+t._id+'-body" class="'+t.bodyClasses+'">'+(t.settings.html||"")+e.renderHtml(t)+"</div></div>"}}),Kn=Pe.extend({Defaults:{containerCls:"form",layout:"flex",direction:"column",align:"stretch",flex:1,padding:15,labelGap:30,spacing:10,callbacks:{submit:function(){this.submit()}}},preRender:function(){var i=this,t=i.items();i.settings.formItemDefaults||(i.settings.formItemDefaults={layout:"flex",autoResize:"overflow",defaults:{flex:1}}),t.each(function(t){var e,n=t.settings.label;n&&((e=new Gn(C.extend({items:{type:"labe
 l",id:t._id+"-l",text:n,flex:0,forId:t._id,disabled:t.disabled()}},i.settings.formItemDefaults))).type="formitem",t.aria("labelledby",t._id+"-l"),"undefined"==typeof t.settings.flex&&(t.settings.flex=1),i.replace(t,e),e.add(t))})},submit:function(){return this.fire("submit",{data:this.toJSON()})},postRender:function(){this._super(),this.fromJSON(this.settings.data)},bindStates:function(){var n=this;function t(){var t,e,i=0,r=[];if(!1!==n.settings.labelGapCalc)for(("children"===n.settings.labelGapCalc?n.find("formitem"):n.items()).filter("formitem").each(function(t){var e=t.items()[0],n=e.getEl().clientWidth;i=i<n?n:i,r.push(e)}),e=n.settings.labelGap||0,t=r.length;t--;)r[t].settings.minWidth=i+e}n._super(),n.on("show",t),t()}}),Zn=Kn.extend({Defaults:{containerCls:"fieldset",layout:"flex",direction:"column",align:"stretch",flex:1
 ,padding:"25 15 5 15",labelGap:30,spacing:10,border:1},renderHtml:function(){var t=this,e=t._layout,n=t.classPrefix;return t.preRender(),e.preRender(t),'<fieldset id="'+t._id+'" class="'+t.classes+'" hidefocus="1" tabindex="-1">'+(t.settings.title?'<legend id="'+t._id+'-title" class="'+n+'fieldset-title">'+t.settings.title+"</legend>":"")+'<div id="'+t._id+'-body" class="'+t.bodyClasses+'">'+(t.settings.html||"")+e.renderHtml(t)+"</div></fieldset>"}}),Qn=0,ti=function(t){if(null===t||t===undefined)throw new Error("Node cannot be null or undefined");return{dom:ut(t)}},ei={fromHtml:function(t,e){var n=(e||_.document).createElement("div");if(n.innerHTML=t,!n.hasChildNodes()||1<n.childNodes.length)throw _.console.error("HTML does not have a single root node",t),new Error("HTML must have
  a single root node");return ti(n.childNodes[0])},fromTag:function(t,e){var n=(e||_.document).createElement(t);return ti(n)},fromText:function(t,e){var n=(e||_.document).createTextNode(t);return ti(n)},fromDom:ti,fromPoint:function(t,e,n){var i=t.dom();return vt.from(i.elementFromPoint(e,n)).map(ti)}},ni=(_.Node.ATTRIBUTE_NODE,_.Node.CDATA_SECTION_NODE,_.Node.COMMENT_NODE,_.Node.DOCUMENT_NODE),ii=(_.Node.DOCUMENT_TYPE_NODE,_.Node.DOCUMENT_FRAGMENT_NODE,_.Node.ELEMENT_NODE),ri=(_.Node.TEXT_NODE,_.Node.PROCESSING_INSTRUCTION_NODE,_.Node.ENTITY_REFERENCE_NODE,_.Node.ENTITY_NODE,_.Node.NOTATION_NODE,function(t,e){var n=function(t,e){for(var n=0;n<t.length;n++){var i=t[n];if(i.test(e))return i}return undefined}(t,e);if(!n)return{major:0,minor:0};var i=function(t){return Number(e.replace(n,"$"+t))};return si(i(1),i(2))}),oi=function(){return si(0,0)},si=function(t,e){return{major:t,minor:e}},ai={nu:si,detect:function(t,e){var n=String(e).toLowerCase();return 0===t.length
 ?oi():ri(t,n)},unknown:oi},li="Firefox",ui=function(t,e){return function(){return e===t}},ci=function(t){var e=t.current;return{current:e,version:t.version,isEdge:ui("Edge",e),isChrome:ui("Chrome",e),isIE:ui("IE",e),isOpera:ui("Opera",e),isFirefox:ui(li,e),isSafari:ui("Safari",e)}},di={unknown:function(){return ci({current:undefined,version:ai.unknown()})},nu:ci,edge:ut("Edge"),chrome:ut("Chrome"),ie:ut("IE"),opera:ut("Opera"),firefox:ut(li),safari:ut("Safari")},fi="Windows",hi="Android",mi="Solaris",gi="FreeBSD",pi=function(t,e){return function(){return e===t}},vi=function(t){var e=t.current;return{current:e,version:t.version,isWindows:pi(fi,e),isiOS:pi("iOS",e),isAndroid:pi(hi,e),isOSX:pi("OSX",e),isLinux:pi("Linux",e),isSolaris:pi(mi,e),isFreeBSD:pi(gi,e)}},bi={unknown:function(){return vi({current:unde
 fined,version:ai.unknown()})},nu:vi,windows:ut(fi),ios:ut("iOS"),android:ut(hi),linux:ut("Linux"),osx:ut("OSX"),solaris:ut(mi),freebsd:ut(gi)},yi=function(t,e){var n=String(e).toLowerCase();return function(t,e){for(var n=0,i=t.length;n<i;n++){var r=t[n];if(e(r,n,t))return vt.some(r)}return vt.none()}(t,function(t){return t.search(n)})},xi=function(t,n){return yi(t,n).map(function(t){var e=ai.detect(t.versionRegexes,n);return{current:t.name,version:e}})},wi=function(t,n){return yi(t,n).map(function(t){var e=ai.detect(t.versionRegexes,n);return{current:t.name,version:e}})},_i=function(t,e){return-1!==t.indexOf(e)},Ri=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,Ci=function(e){return function(t){return _i(t,e)}},ki=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(t){return _i(t,"edge/")&&_i(t,"chrome")&&_i(t,"safari")&&_i(t,"applewebkit")}},{name:"Chro
 me",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,Ri],search:function(t){return _i(t,"chrome")&&!_i(t,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(t){return _i(t,"msie")||_i(t,"trident")}},{name:"Opera",versionRegexes:[Ri,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:Ci("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:Ci("firefox")},{name:"Safari",versionRegexes:[Ri,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(t){return(_i(t,"safari")||_i(t,"mobile/"))&&_i(t,"applewebkit")}}],Ei=[{name:"Windows",search:Ci("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(t){return _i(t,"iphone")||_i(t,"ipad")},versionRegexes:[/.*?version\/\ ?
 ([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:Ci("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:Ci("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:Ci("linux"),versionRegexes:[]},{name:"Solaris",search:Ci("sunos"),versionRegexes:[]},{name:"FreeBSD",search:Ci("freebsd"),versionRegexes:[]}],Hi={browsers:ut(ki),oses:ut(Ei)},Ti=function(t){var e,n,i,r,o,s,a,l,u,c,d,f=Hi.browsers(),h=Hi.oses(),m=xi(f,t).fold(di.unknown,di.nu),g=wi(h,t).fold(bi.unknown,bi.nu);return{browser:m,os:g,deviceType:(n=m,i=t,r=(e=g).isiOS()&&!0===/ipad/i.test(i),o=e.isiOS()&&!r,s=e.isAndroid()&&3===e.version.major,a=e.isAndroid()&&4===e.version.major,l=r||s||a&&!0===/mobile/i.test(i),u=e.isiOS()||e.isAndroid(),c=u&&!l,d=n.isSafari()
 &&e.isiOS()&&!1===/safari/i.test(i),{isiPad:ut(r),isiPhone:ut(o),isTablet:ut(l),isPhone:ut(c),isTouch:ut(u),isAndroid:e.isAndroid,isiOS:e.isiOS,isWebView:ut(d)})}},Si=(Ze=!(Ge=function(){var t=_.navigator.userAgent;return Ti(t)}),function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return Ze||(Ze=!0,Ke=Ge.apply(null,t)),Ke}),Mi=ii,Ni=ni,Oi=function(t){return t.nodeType!==Mi&&t.nodeType!==Ni||0===t.childElementCount},Pi=(Si().browser.isIE(),function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e]}("element","offset"),C.trim),Wi=function(e){return function(t){if(t&&1===t.nodeType){if(t.contentEditable===e)return!0;if(t.getAttribute("data-mce-contenteditable")===e)return!0}return!1}},Di=Wi("true"),Ai=Wi("false"),Bi=function(t,e,n,i,r){return{type:t,title:e,url:n,level:i,attach:r}},Li=function(t){return t.innerText||t.textContent},Ii=function(t){return t.id?t.id:(e="h
 ",n=(new Date).getTime(),e+"_"+Math.floor(1e9*Math.random())+ ++Qn+String(n));var e,n},zi=function(t){return(e=t)&&"A"===e.nodeName&&(e.id||e.name)&&Ui(t);var e},Fi=function(t){return t&&/^(H[1-6])$/.test(t.nodeName)},Ui=function(t){return function(t){for(;t=t.parentNode;){var e=t.contentEditable;if(e&&"inherit"!==e)return Di(t)}return!1}(t)&&!Ai(t)},Vi=function(t){return Fi(t)&&Ui(t)},qi=function(t){var e,n=Ii(t);return Bi("header",Li(t),"#"+n,Fi(e=t)?parseInt(e.nodeName.substr(1),10):0,function(){t.id=n})},Yi=function(t){var e=t.id||t.name,n=Li(t);return Bi("anchor",n||"#"+e,"#"+e,0,lt)},$i=function(t){var e,n,i,r,o,s;return e="h1,h2,h3,h4,h5,h6,a:not([href])",n=t,Rt((Si().browser.isIE(),function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e]}("element","offset"),i=ei.fromDom(n),r=e,s=(o=i)===unde
 fined?_.document:o.dom(),Oi(s)?[]:Rt(s.querySelectorAll(r),ei.fromDom)),function(t){return t.dom()})},Xi=function(t){return 0<Pi(t.title).length},ji=function(t){var e,n=$i(t);return kt((e=n,Rt(kt(e,Vi),qi)).concat(Rt(kt(n,zi),Yi)),Xi)},Ji={},Gi=function(t){return{title:t.title,value:{title:{raw:t.title},url:t.url,attach:t.attach}}},Ki=function(t,e){return{title:t,value:{title:t,url:e,attach:lt}}},Zi=function(t,e,n){var i=e in t?t[e]:n;return!1===i?null:i},Qi=function(t,i,r,e){var n,o,s,a,l,u,c={title:"-"},d=function(t){var e=t.hasOwnProperty(r)?t[r]:[],n=kt(e,function(t){return e=t,!_t(i,function(t){return t.url===e});var e});return C.map(n,function(t){return{title:t,value:{title:t,url:t,attach:lt}}})},f=function(e){var t,n=kt(i,function(t){return t.type===e});return t=n,C.map(t,Gi)};return!1===e.typeahead_urls?[]:"file"===r?(n=[er(t,d(Ji)),er(t,f("header")),er(t,(a=f("anchor"),l=Zi(e,"anchor_top","#top"),u=Zi(e,"an
 chor_bottom","#bottom"),null!==l&&a.unshift(Ki("<top>",l)),null!==u&&a.push(Ki("<bottom>",u)),a))],o=function(t,e){return 0===t.length||0===e.length?t.concat(e):t.concat(c,e)},s=[],Ct(n,function(t){s=o(s,t)}),s):er(t,d(Ji))},tr=function(t,e){var n,i,r,o=Ji[e];/^https?/.test(t)&&(o?(n=o,i=t,r=wt(n,i),-1===r?vt.none():vt.some(r)).isNone()&&(Ji[e]=o.slice(0,5).concat(t)):Ji[e]=[t])},er=function(t,e){var n=t.toLowerCase(),i=C.grep(e,function(t){return-1!==t.title.toLowerCase().indexOf(n)});return 1===i.length&&i[0].title===t?[]:i},nr=function(o,t,n){var i=t.filepicker_validator_handler;i&&o.state.on("change:value",function(t){var e;0!==(e=t.value).length?i({url:e,type:n},function(t){var e,n,i,r=(n=(e=t).status,i=e.message,"valid"===n?{status:"ok",message:i}:"unknown"===n?{status:"warn",message:i}:"invalid"===n?{status:"warn"
 ,message:i}:{status:"none",message:""});o.statusMessage(r.message),o.statusLevel(r.status)}):o.statusLevel("none")})},ir=zn.extend({Statics:{clearHistory:function(){Ji={}}},init:function(t){var e,n,i,r,o,s,a,l,u=this,c=window.tinymce?window.tinymce.activeEditor:N.activeEditor,d=c.settings,f=t.filetype;t.spellcheck=!1,(i=d.file_picker_types||d.file_browser_callback_types)&&(i=C.makeMap(i,/[, ]/)),i&&!i[f]||(!(n=d.file_picker_callback)||i&&!i[f]?!(n=d.file_browser_callback)||i&&!i[f]||(e=function(){n(u.getEl("inp").id,u.value(),f,window)}):e=function(){var t=u.fire("beforecall").meta;t=C.extend({filetype:f},t),n.call(c,function(t,e){u.value(t).fire("change",{meta:e})},u.value(),t)}),e&&(t.icon="browse",t.onaction=e),u._super(t),u.classes.add("filepicker"),r=u,o=d,s=c.getBody(),a=f,l=function(t){var e=ji(s),n=Qi(t,e,a,o);r.showAutoComplete(n,t)},r.on("autocomplet
 e",function(){l(r.value())}),r.on("selectitem",function(t){var e=t.value;r.value(e.url);var n,i=(n=e.title).raw?n.raw:n;"image"===a?r.fire("change",{meta:{alt:i,attach:e.attach}}):r.fire("change",{meta:{text:i,attach:e.attach}}),r.focus()}),r.on("click",function(t){0===r.value().length&&"INPUT"===t.target.nodeName&&l("")}),r.on("PostRender",function(){r.getRoot().on("submit",function(t){t.isDefaultPrevented()||tr(r.value(),a)})}),nr(u,d,f)}}),rr=Wn.extend({recalc:function(t){var e=t.layoutRect(),n=t.paddingBox;t.items().filter(":visible").each(function(t){t.layoutRect({x:n.left,y:n.top,w:e.innerW-n.right-n.left,h:e.innerH-n.top-n.bottom}),t.recalc&&t.recalc()})}}),or=Wn.extend({recalc:function(t){var e,n,i,r,o,s,a,l,u,c,d,f,h,m,g,p,v,b,y,x,w,_,R,C,k,E,H,T,S,M,N,O,P,W,D,A,B,L=[],I=Math.max,z=Math.min;for(i=t.items().filter(":visible"),r=t.layoutRe
 ct(),o=t.paddingBox,s=t.settings,f=t.isRtl()?s.direction||"row-reversed":s.direction,a=s.align,l=t.isRtl()?s.pack||"end":s.pack,u=s.spacing||0,"row-reversed"!==f&&"column-reverse"!==f||(i=i.set(i.toArray().reverse()),f=f.split("-")[0]),"column"===f?(C="y",_="h",R="minH",k="maxH",H="innerH",E="top",T="deltaH",S="contentH",W="left",O="w",M="x",N="innerW",P="minW",D="right",A="deltaW",B="contentW"):(C="x",_="w",R="minW",k="maxW",H="innerW",E="left",T="deltaW",S="contentW",W="top",O="h",M="y",N="innerH",P="minH",D="bottom",A="deltaH",B="contentH"),d=r[H]-o[E]-o[E],w=c=0,e=0,n=i.length;e<n;e++)m=(h=i[e])
 .layoutRect(),d-=e<n-1?u:0,0<(g=h.settings.flex)&&(c+=g,m[k]&&L.push(h),m.flex=g),d-=m[R],w<(p=o[W]+m[P]+o[D])&&(w=p);if((y={})[R]=d<0?r[R]-d+r[T]:r[H]-d+r[T],y[P]=w+r[A],y[S]=r[H]-d,y[B]=w,y.minW=z(y.minW,r.maxW),y.minH=z(y.minH,r.maxH),y.minW=I(y.minW,r.startMinWidth),y.minH=I(y.minH,r.startMinHeight),!r.autoResize||y.minW===r.minW&&y.minH===r.minH){for(b=d/c,e=0,n=L.length;e<n;e++)(v=(m=(h=L[e]).layoutRect())[k])<(p=m[R]+m.flex*b)?(d-=m[k]-m[R],c-=m.flex,m.flex=0,m.maxFlexSize=v):m.maxFlexSize=0;for(b=d/c,x=o[E],y={},0===c&&("end"===l?x=d+o[E]:"center"===l?(x=Math.round(r[H]/2-(r[H]-d)/2)+o[E])<0&&(x=o[E]):"justify"===l&&(x=o[E],u=Math.floor(d/(i.length-1)))),y[M]=o[W],e=0,n=i.length;e<n;e++)p=(m=(h=i[e]).layoutRect()).maxFlexSize||m[R],"center"===a?y[M]=Math.round(r[N]/2-m[O]/2):"stretch"===a?(y[O]=I(m[P]||0,r[N]-o[W]-o[D]),y[M]=o[W]):"end"=
 ==a&&(y[M]=r[N]-m[O]-o.top),0<m.flex&&(p+=m.flex*b),y[_]=p,y[C]=x,h.layoutRect(y),h.recalc&&h.recalc(),x+=p+u}else if(y.w=y.minW,y.h=y.minH,t.layoutRect(y),this.recalc(t),null===t._lastRect){var F=t.parent();F&&(F._lastRect=null,F.recalc())}}}),sr=Pn.extend({Defaults:{containerClass:"flow-layout",controlClass:"flow-layout-item",endClass:"break"},recalc:function(t){t.items().filter(":visible").each(function(t){t.recalc&&t.recalc()})},isNative:function(){return!0}}),ar=function(t,e){return n=e,r=(i=t)===undefined?_.document:i.dom(),Oi(r)?vt.none():vt.from(r.querySelector(n)).map(ei.fromDom);var n,i,r},lr=function(t,e){return function(){t.execCommand("mceToggleFormat",!1,e)}},ur=function(t,e,n){var i=function(t){n(t,e)};t.formatter?t.formatter.formatChanged(e,i):t.on("init",function(){t.formatter.formatChanged(e,i)})},cr=function(t,n){return function(e){ur(t,n,function(t){e.control.ac
 tive(t)})}},dr=function(i){var e=["alignleft","aligncenter","alignright","alignjustify"],r="alignleft",t=[{text:"Left",icon:"alignleft",onclick:lr(i,"alignleft")},{text:"Center",icon:"aligncenter",onclick:lr(i,"aligncenter")},{text:"Right",icon:"alignright",onclick:lr(i,"alignright")},{text:"Justify",icon:"alignjustify",onclick:lr(i,"alignjustify")}];i.addMenuItem("align",{text:"Align",menu:t}),i.addButton("align",{type:"menubutton",icon:r,menu:t,onShowMenu:function(t){var n=t.control.menu;C.each(e,function(e,t){n.items().eq(t).each(function(t){return t.active(i.formatter.match(e))})})},onPostRender:function(t){var n=t.control;C.each(e,function(e,t){ur(i,e,function(t){n.icon(r),t&&n.icon(e)})})}}),C.each({alignleft:["Align left","JustifyLeft"],align
 center:["Align center","JustifyCenter"],alignright:["Align right","JustifyRight"],alignjustify:["Justify","JustifyFull"],alignnone:["No alignment","JustifyNone"]},function(t,e){i.addButton(e,{active:!1,tooltip:t[0],cmd:t[1],onPostRender:cr(i,e)})})},fr=function(t){return t?t.split(",")[0]:""},hr=function(l,u){return function(){var a=this;a.state.set("value",null),l.on("init nodeChange",function(t){var e,n,i,r,o=l.queryCommandValue("FontName"),s=(e=u,r=(n=o)?n.toLowerCase():"",C.each(e,function(t){t.value.toLowerCase()===r&&(i=t.value)}),C.each(e,function(t){i||fr(t.value).toLowerCase()!==fr(r).toLowerCase()||(i=t.value)}),i);a.value(s||null),!s&&o&&a.text(fr(o))})}},mr=function(n){n.addButton("fontselect",function(){var t,e=(t=function(t){for(var e=(t=t.replace(/;$/,"").split(";")).length;e--
 ;)t[e]=t[e].split("=");return t}(n.settings.font_formats||"Andale Mono=andale mono,monospace;Arial=arial,helvetica,sans-serif;Arial Black=arial black,sans-serif;Book Antiqua=book antiqua,palatino,serif;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,palatino,serif;Helvetica=helvetica,arial,sans-serif;Impact=impact,sans-serif;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco,monospace;Times New Roman=times new roman,times,serif;Trebuchet MS=trebuchet ms,geneva,sans-serif;Verdana=verdana,geneva,sans-serif;Webdings=webdings;Wingdings=wingdings,zapf dingbats"),C.map(t,function(t){return{text:{raw:t[0]},value:t[1],textStyle:-1===t[1].indexOf("dings")?"font-family:"+t[1]:""}}));return{type:"listbox",text:"Font Family",tooltip:"Font Family",values:e,fixedWidth:!0,onPostRender:hr(n,e),onselect:function(t){t.control.settings.value&
 &n.execCommand("FontName",!1,t.control.settings.value)}}})},gr=function(t){mr(t)},pr=function(t,e){return/[0-9.]+px$/.test(t)?(n=72*parseInt(t,10)/96,i=e||0,r=Math.pow(10,i),Math.round(n*r)/r+"pt"):t;var n,i,r},vr=function(t,e,n){var i;return C.each(t,function(t){t.value===n?i=n:t.value===e&&(i=e)}),i},br=function(n){n.addButton("fontsizeselect",function(){var t,s,a,e=(t=n.settings.fontsize_formats||"8pt 10pt 12pt 14pt 18pt 24pt 36pt",C.map(t.split(" "),function(t){var e=t,n=t,i=t.split("=");return 1<i.length&&(e=i[0],n=i[1]),{text:e,value:n}}));return{type:"listbox",text:"Font Sizes",tooltip:"Font Sizes",values:e,fixedWidth:!0,onPostRender:(s=n,a=e,function(){var o=this;s.on("init nodeChange",function(t){var e,n,i,r;if(e=s.queryCommandValue("FontSize"))for(i=3;!r&&0<=i;i--)n=pr(e,i),r=vr(a,n,e);o.value(r||null),r||o.text(n)})}),onclick:func
 tion(t){t.control.settings.value&&n.execCommand("FontSize",!1,t.control.settings.value)}}})},yr=function(t){br(t)},xr=function(n,t){var i=t.length;return C.each(t,function(t){t.menu&&(t.hidden=0===xr(n,t.menu));var e=t.format;e&&(t.hidden=!n.formatter.canApply(e)),t.hidden&&i--}),i},wr=function(n,t){var i=t.items().length;return t.items().each(function(t){t.menu&&t.visible(0<wr(n,t.menu)),!t.menu&&t.settings.menu&&t.visible(0<xr(n,t.settings.menu));var e=t.settings.format;e&&t.visible(n.formatter.canApply(e)),t.visible()||i--}),i},_r=function(t){var i,r,o,e,s,n,a,l,u=(r=0,o=[],e=[{title:"Headings",items:[{title:"Heading 1",format:"h1"},{title:"Heading 2",format:"h2"},{title:"Heading 3",format:"h3"},{title:"Heading 4",format:"h4"},{title:"Heading 5",format:"h5"},{title:"Heading 6",format
 :"h6"}]},{title:"Inline",items:[{title:"Bold",icon:"bold",format:"bold"},{title:"Italic",icon:"italic",format:"italic"},{title:"Underline",icon:"underline",format:"underline"},{title:"Strikethrough",icon:"strikethrough",format:"strikethrough"},{title:"Superscript",icon:"superscript",format:"superscript"},{title:"Subscript",icon:"subscript",format:"subscript"},{title:"Code",icon:"code",format:"code"}]},{title:"Blocks",items:[{title:"Paragraph",format:"p"},{title:"Blockquote",format:"blockquote"},{title:"Div",format:"div"},{title:"Pre",format:"pre"}]},{title:"Alignment",items:[{title:"Left",icon:"alignleft",format:"alignleft"},{tit
 le:"Center",icon:"aligncenter",format:"aligncenter"},{title:"Right",icon:"alignright",format:"alignright"},{title:"Justify",icon:"alignjustify",format:"alignjustify"}]}],s=function(t){var i=[];if(t)return C.each(t,function(t){var e={text:t.title,icon:t.icon};if(t.items)e.menu=s(t.items);else{var n=t.format||"custom"+r++;t.format||(t.name=n,o.push(t)),e.format=n,e.cmd=t.cmd}i.push(e)}),i},(i=t).on("init",function(){C.each(o,function(t){i.formatter.register(t.name,t)})}),{type:"menu",items:i.settings.style_formats_merge?i.settings.style_formats?s(e.concat(i.settings.style_formats)):s(e):s(i.settings.style_formats||e),onPostRender:function(t){i.fire("renderFormatsMenu",{control:t.control})},itemDefaults:{preview:!0,textStyle:function(){if(this.settings.format)return i.formatter.getCssText(this.settings.format)},onPostRender:function(){var n=this;n.parent().o
 n("show",function(){var t,e;(t=n.settings.format)&&(n.disabled(!i.formatter.canApply(t)),n.active(i.formatter.match(t))),(e=n.settings.cmd)&&n.active(i.queryCommandState(e))})},onclick:function(){this.settings.format&&lr(i,this.settings.format)(),this.settings.cmd&&i.execCommand(this.settings.cmd)}}});n=u,t.addMenuItem("formats",{text:"Formats",menu:n}),l=u,(a=t).addButton("styleselect",{type:"menubutton",text:"Formats",menu:l,onShowMenu:function(){a.settings.style_formats_autohide&&wr(a,this.menu)}})},Rr=function(n,t){return function(){var r,o,s,e=[];return C.each(t,function(t){e.push({text:t[0],value:t[1],textStyle:function(){return n.formatter.getCssText(t[1])}})}),{type:"listbox",text:t[0][0],values:e,fixedWidth:!0,onselect:function(t){if(t.control){var e=t.control.value();lr(n,e)()}},onPostRender:(r=n,o=e,function(){var e=this;r.on("nodeChange",function(t){var
  n=r.formatter,i=null;C.each(t.parents,function(e){if(C.each(o,function(t){if(s?n.matchNode(e,s,{value:t.value})&&(i=t.value):n.matchNode(e,t.value)&&(i=t.value),i)return!1}),i)return!1}),e.value(i)})})}}},Cr=function(t){var e,n,i=function(t){for(var e=(t=t.replace(/;$/,"").split(";")).length;e--;)t[e]=t[e].split("=");return t}(t.settings.block_formats||"Paragraph=p;Heading 1=h1;Heading 2=h2;Heading 3=h3;Heading 4=h4;Heading 5=h5;Heading 6=h6;Preformatted=pre");t.addMenuItem("blockformats",{text:"Blocks",menu:(e=t,n=i,C.map(n,function(t){return{text:t[0],onclick:lr(e,t[1]),textStyle:function(){return e.formatter.getCssText(t[1])}}}))}),t.addButton("formatselect",Rr(t,i))},kr=function(e,t){var n,i;if("string"==typeof t)i=t.split(" ");else if(C.isArray(t))return function(t){for(var e=[],n=0,i=t.length;n<i;++n){if(!Array.prototype.isPrototypeOf(t[n]))throw new Error("Arr.fl
 atten item "+n+" was not an array, input: "+t);Tt.apply(e,t[n])}return e}(C.map(t,function(t){return kr(e,t)}));return n=C.grep(i,function(t){return"|"===t||t in e.menuItems}),C.map(n,function(t){return"|"===t?{text:"-"}:e.menuItems[t]})},Er=function(t){return t&&"-"===t.text},Hr=function(t){var e=kt(t,function(t,e,n){return!Er(t)||!Er(n[e-1])});return kt(e,function(t,e,n){return!Er(t)||0<e&&e<n.length-1})},Tr=function(t){var e,n,i,r,o=t.settings.insert_button_items;return Hr(o?kr(t,o):(e=t,n="insert",i=[{text:"-"}],r=C.grep(e.menuItems,function(t){return t.context===n}),C.each(r,function(t){"before"===t.separator&&i.push({text:"|"}),t.prependToContext?i.unshift(t):i.push(t),"after"===t.separator&&i.push({text:"|"})}),i))},Sr=function(t){var e;(e=t).addButton("insert",{type:"menubutton",icon:"insert",me
 nu:[],oncreatemenu:function(){this.menu.add(Tr(e)),this.menu.renderNew()}})},Mr=function(t){var n,i,r;n=t,C.each({bold:"Bold",italic:"Italic",underline:"Underline",strikethrough:"Strikethrough",subscript:"Subscript",superscript:"Superscript"},function(t,e){n.addButton(e,{active:!1,tooltip:t,onPostRender:cr(n,e),onclick:lr(n,e)})}),i=t,C.each({outdent:["Decrease indent","Outdent"],indent:["Increase indent","Indent"],cut:["Cut","Cut"],copy:["Copy","Copy"],paste:["Paste","Paste"],help:["Help","mceHelp"],selectall:["Select all","SelectAll"],visualaid:["Visual aids","mceToggleVisualAid"],newdocument:["New document","mceNewDocument"],removeformat:["Clear formatting","RemoveFormat"],remove:["Remove","Delete"]},func
 tion(t,e){i.addButton(e,{tooltip:t[0],cmd:t[1]})}),r=t,C.each({blockquote:["Blockquote","mceBlockQuote"],subscript:["Subscript","Subscript"],superscript:["Superscript","Superscript"]},function(t,e){r.addButton(e,{active:!1,tooltip:t[0],cmd:t[1],onPostRender:cr(r,e)})})},Nr=function(t){var n;Mr(t),n=t,C.each({bold:["Bold","Bold","Meta+B"],italic:["Italic","Italic","Meta+I"],underline:["Underline","Underline","Meta+U"],strikethrough:["Strikethrough","Strikethrough"],subscript:["Subscript","Subscript"],superscript:["Superscript","Superscript"],removeformat:["Clear formatting","RemoveFormat"],newdocument:["New document","mceNewDocument"],cut:["Cut","Cut","Meta+X"],copy:["Copy","Copy","Me
 ta+C"],paste:["Paste","Paste","Meta+V"],selectall:["Select all","SelectAll","Meta+A"]},function(t,e){n.addMenuItem(e,{text:t[0],icon:e,shortcut:t[2],cmd:t[1]})}),n.addMenuItem("codeformat",{text:"Code",icon:"code",onclick:lr(n,"code")})},Or=function(n,i){return function(){var t=this,e=function(){var t="redo"===i?"hasRedo":"hasUndo";return!!n.undoManager&&n.undoManager[t]()};t.disabled(!e()),n.on("Undo Redo AddUndo TypingUndo ClearUndos SwitchMode",function(){t.disabled(n.readonly||!e())})}},Pr=function(t){var e,n;(e=t).addMenuItem("undo",{text:"Undo",icon:"undo",shortcut:"Meta+Z",onPostRender:Or(e,"undo"),cmd:"undo"}),e.addMenuItem("redo",{text:"Redo",icon:"redo",shortcut:"Meta+Y",onPostRender:Or(e,"redo"),cmd:"redo&quo
 t;}),(n=t).addButton("undo",{tooltip:"Undo",onPostRender:Or(n,"undo"),cmd:"undo"}),n.addButton("redo",{tooltip:"Redo",onPostRender:Or(n,"redo"),cmd:"redo"})},Wr=function(t){var e,n;(e=t).addMenuItem("visualaid",{text:"Visual aids",selectable:!0,onPostRender:(n=e,function(){var e=this;n.on("VisualAid",function(t){e.active(t.hasVisual)}),e.active(n.hasVisual)}),cmd:"mceToggleVisualAid"})},Dr={setup:function(t){var e;t.rtl&&(ce.rtl=!0),t.on("mousedown progressstate",function(){Ve.hideAll()}),(e=t).settings.ui_container&&(h.container=ar(ei.fromDom(_.document.body),e.settings.ui_container).fold(ut(null),function(t){return t.dom()})),be.tooltips=!h.iOS,ce.translate=function(t){return N.translate(t)},Cr(t),dr(t),Nr(t),Pr(t),yr(t),gr(t),_r(t),Wr(t),Sr(t)}},Ar=Wn.extend({recalc:function(t){var e,n,i,r,o,s,a,l,u,c,d,f,h,m,g,p,v,b,y,x,w,_,R,C,k,E,H,T
 ,S=[],M=[];e=t.settings,r=t.items().filter(":visible"),o=t.layoutRect(),i=e.columns||Math.ceil(Math.sqrt(r.length)),n=Math.ceil(r.length/i),b=e.spacingH||e.spacing||0,y=e.spacingV||e.spacing||0,x=e.alignH||e.align,w=e.alignV||e.align,p=t.paddingBox,T="reverseRows"in e?e.reverseRows:t.isRtl(),x&&"string"==typeof x&&(x=[x]),w&&"string"==typeof w&&(w=[w]);for(d=0;d<i;d++)S.push(0);for(f=0;f<n;f++)M.push(0);for(f=0;f<n;f++)for(d=0;d<i&&(c=r[f*i+d]);d++)C=(u=c.layoutRect()).minW,k=u.minH,S[d]=C>S[d]?C:S[d],M[f]=k>M[f]?k:M[f];for(E=o.innerW-p.left-p.right,d=_=0;d<i;d++)_+=S[d]+(0<d?b:0),E-=(0<d?b:0)+S[d];for(H=o.innerH-p.top-p.bottom,f=R=0;f<n;f++)R+=M[f]+(0<f?y:0),H-=(0<f?y:0)+M[f];if(_+=p.left+p.right,R+=p.top+p.bottom,(l={}).minW=_+(o.w-o.innerW),l.minH=R+(o.h-o.innerH),l.contentW=l.minW-o.deltaW,l.contentH=l.minH-o.deltaH,l.minW=Math.min(l.minW,o.maxW),l.minH=Math.min(l.
 minH,o.maxH),l.minW=Math.max(l.minW,o.startMinWidth),l.minH=Math.max(l.minH,o.startMinHeight),!o.autoResize||l.minW===o.minW&&l.minH===o.minH){var N;o.autoResize&&((l=t.layoutRect(l)).contentW=l.minW-o.deltaW,l.contentH=l.minH-o.deltaH),N="start"===e.packV?0:0<H?Math.floor(H/n):0;var O=0,P=e.flexWidths;if(P)for(d=0;d<P.length;d++)O+=P[d];else O=i;var W=E/O;for(d=0;d<i;d++)S[d]+=P?P[d]*W:W;for(m=p.top,f=0;f<n;f++){for(h=p.left,a=M[f]+N,d=0;d<i&&(c=r[T?f*i+i-1-d:f*i+d]);d++)g=c.settings,u=c.layoutRect(),s=Math.max(S[d],u.startMinWidth),u.x=h,u.y=m,"center"===(v=g.alignH||(x?x[d]||x[0]:null))?u.x=h+s/2-u.w/2:"right"===v?u.x=h+s-u.w:"stretch"===v&&(u.w=s),"center"===(v=g.alignV||(w?w[d]||w[0]:null))?u.y=m+a/2-u.h/2:"bottom"===v?u.y=m+a-u.h:"stretch"===v&&(u.h=a),c.layoutRect(u),h+=s+b,c.recalc&&c.recalc();m+=a+y}}else if(l.w=l.minW,l.h=l.minH,t.layoutRect(
 l),this.recalc(t),null===t._lastRect){var D=t.parent();D&&(D._lastRect=null,D.recalc())}}}),Br=be.extend({renderHtml:function(){var t=this;return t.classes.add("iframe"),t.canFocus=!1,'<iframe id="'+t._id+'" class="'+t.classes+'" tabindex="-1" src="'+(t.settings.url||"javascript:''")+'" frameborder="0"></iframe>'},src:function(t){this.getEl().src=t},html:function(t,e){var n=this,i=this.getEl().contentWindow.document.body;return i?(i.innerHTML=t,e&&e()):c.setTimeout(function(){n.html(t)}),this}}),Lr=be.extend({init:function(t){this._super(t),this.classes.add("widget").add("infobox"),this.canFocus=!1},severity:function(t){this.classes.remove("error"),this.classes.remove("warning"),this.classes.remove("success"),this.classes.add(t)},help:function(t){this.state.set("help",t)},renderHtml:function(){var t=this,e=t.classPrefix;return'
 <div id="'+t._id+'" class="'+t.classes+'"><div id="'+t._id+'-body">'+t.encode(t.state.get("text"))+'<button role="button" tabindex="-1"><i class="'+e+"ico "+e+'i-help"></i></button></div></div>'},bindStates:function(){var e=this;return e.state.on("change:text",function(t){e.getEl("body").firstChild.data=e.encode(t.value),e.state.get("rendered")&&e.updateLayoutRect()}),e.state.on("change:help",function(t){e.classes.toggle("has-help",t.value),e.state.get("rendered")&&e.updateLayoutRect()}),e._super()}}),Ir=be.extend({init:function(t){var e=this;e._super(t),e.classes.add("widget").add("label"),e.canFocus=!1,t.multiline&&e.classes.add("autoscroll"),t.strong&&e.classes.add("strong")},initLayoutRect:function(){var t=this,e=t._super()
 ;return t.settings.multiline&&(Mt.getSize(t.getEl()).width>e.maxW&&(e.minW=e.maxW,t.classes.add("multiline")),t.getEl().style.width=e.minW+"px",e.startMinH=e.h=e.minH=Math.min(e.maxH,Mt.getSize(t.getEl()).height)),e},repaint:function(){return this.settings.multiline||(this.getEl().style.lineHeight=this.layoutRect().h+"px"),this._super()},severity:function(t){this.classes.remove("error"),this.classes.remove("warning"),this.classes.remove("success"),this.classes.add(t)},renderHtml:function(){var t,e,n=this,i=n.settings.forId,r=n.settings.html?n.settings.html:n.encode(n.state.get("text"));return!i&&(e=n.settings.forName)&&(t=n.getRoot().find("#"+e)[0])&&(i=t._id),i?'<label id="'+n._id+'" class="'+n.classes+'"'+(i?' for="'+i+'"':"")+">"+r+"</label>":'<span id="'+n._id+'" class=&quot
 ;'+n.classes+'">'+r+"</span>"},bindStates:function(){var e=this;return e.state.on("change:text",function(t){e.innerHtml(e.encode(t.value)),e.state.get("rendered")&&e.updateLayoutRect()}),e._super()}}),zr=Pe.extend({Defaults:{role:"toolbar",layout:"flow"},init:function(t){this._super(t),this.classes.add("toolbar")},postRender:function(){return this.items().each(function(t){t.classes.add("toolbar-item")}),this._super()}}),Fr=zr.extend({Defaults:{role:"menubar",containerCls:"menubar",ariaRoot:!0,defaults:{type:"menubutton"}}}),Ur=Dn.extend({init:function(t){var e=this;e._renderOpen=!0,e._super(t),t=e.settings,e.classes.add("menubtn"),t.fixedWidth&&e.classes.add("fixed-width"),e.aria("haspopup",!0),e.state.set("menu",t.menu||e.render())},showMenu:function(t){var e,n=this;if(n.menu&&n.menu.visible()&&!1!=
 =t)return n.hideMenu();n.menu||(e=n.state.get("menu")||[],n.classes.add("opened"),e.length?e={type:"menu",animate:!0,items:e}:(e.type=e.type||"menu",e.animate=!0),e.renderTo?n.menu=e.parent(n).show().renderTo():n.menu=ke.create(e).parent(n).renderTo(),n.fire("createmenu"),n.menu.reflow(),n.menu.on("cancel",function(t){t.control.parent()===n.menu&&(t.stopPropagation(),n.focus(),n.hideMenu())}),n.menu.on("select",function(){n.focus()}),n.menu.on("show hide",function(t){"hide"===t.type&&t.control.parent()===n&&n.classes.remove("opened-under"),t.control===n.menu&&(n.activeMenu("show"===t.type),n.classes.toggle("opened","show"===t.type)),n.aria("expanded","show"===t.type)}).fire("show")),n.menu.show(),n.menu.layoutRect({w:n.layoutRect().w}),n.menu.repaint(),n.menu.moveRel(n.getEl(),n.isRtl()?["
 br-tr","tr-br"]:["bl-tl","tl-bl"]);var i=n.menu.layoutRect(),r=n.$el.offset().top+n.layoutRect().h;r>i.y&&r<i.y+i.h&&n.classes.add("opened-under"),n.fire("showmenu")},hideMenu:function(){this.menu&&(this.menu.items().each(function(t){t.hideMenu&&t.hideMenu()}),this.menu.hide())},activeMenu:function(t){this.classes.toggle("active",t)},renderHtml:function(){var t,e=this,n=e._id,i=e.classPrefix,r=e.settings.icon,o=e.state.get("text"),s="";return(t=e.settings.image)?(r="none","string"!=typeof t&&(t=_.window.getSelection?t[0]:t[1]),t=" style=\"background-image: url('"+t+"')\""):t="",o&&(e.classes.add("btn-has-text"),s='<span class="'+i+'txt">'+e.encode(o)+"</span>"),r=e.settings.icon?i+"ico "+i+"i-"+r:"",e.aria("role
 ",e.parent()instanceof Fr?"menuitem":"button"),'<div id="'+n+'" class="'+e.classes+'" tabindex="-1" aria-labelledby="'+n+'"><button id="'+n+'-open" role="presentation" type="button" tabindex="-1">'+(r?'<i class="'+r+'"'+t+"></i>":"")+s+' <i class="'+i+'caret"></i></button></div>'},postRender:function(){var r=this;return r.on("click",function(t){t.control===r&&function(t,e){for(;t;){if(e===t)return!0;t=t.parentNode}return!1}(t.target,r.getEl())&&(r.focus(),r.showMenu(!t.aria),t.aria&&r.menu.items().filter(":visible")[0].focus())}),r.on("mouseenter",function(t){var e,n=t.control,i=r.parent();n&&i&&n instanceof Ur&&n.parent()===i&&(i.items().filter("MenuButton").each(function(t){t.hideMenu&&t!=
 =n&&(t.menu&&t.menu.visible()&&(e=!0),t.hideMenu())}),e&&(n.focus(),n.showMenu()))}),r._super()},bindStates:function(){var t=this;return t.state.on("change:menu",function(){t.menu&&t.menu.remove(),t.menu=null}),t._super()},remove:function(){this._super(),this.menu&&this.menu.remove()}});function Vr(i,r){var o,s,a=this,l=ce.classPrefix;a.show=function(t,e){function n(){o&&(Nt(i).append('<div class="'+l+"throbber"+(r?" "+l+"throbber-inline":"")+'"></div>'),e&&e())}return a.hide(),o=!0,t?s=c.setTimeout(n,t):n(),a},a.hide=function(){var t=i.lastChild;return c.clearTimeout(s),t&&-1!==t.className.indexOf("throbber")&&t.parentNode.removeChild(t),o=!1,a}}var qr=Ve.extend({Defaults:{defaultType:"menuitem",border:1,layout:"stack",role:"application",bodyRole:"menu",ariaRoot:!0},init:function(t){
 if(t.autohide=!0,t.constrainToViewport=!0,"function"==typeof t.items&&(t.itemsFactory=t.items,t.items=[]),t.itemDefaults)for(var e=t.items,n=e.length;n--;)e[n]=C.extend({},t.itemDefaults,e[n]);this._super(t),this.classes.add("menu"),t.animate&&11!==h.ie&&this.classes.add("animate")},repaint:function(){return this.classes.toggle("menu-align",!0),this._super(),this.getEl().style.height="",this.getEl("body").style.height="",this},cancel:function(){this.hideAll(),this.fire("select")},load:function(){var e,n=this;function i(){n.throbber&&(n.throbber.hide(),n.throbber=null)}n.settings.itemsFactory&&(n.throbber||(n.throbber=new Vr(n.getEl("body"),!0),0===n.items().length?(n.throbber.show(),n.fire("loading")):n.throbber.show(100,function(){n.items().remove(),n.fire("loading")}),n.on("hide close",i)),n.requestTime=e=(new Date).getTime
 (),n.settings.itemsFactory(function(t){0!==t.length?n.requestTime===e&&(n.getEl().style.width="",n.getEl("body").style.width="",i(),n.items().remove(),n.getEl("body").innerHTML="",n.add(t),n.renderNew(),n.fire("loaded")):n.hide()}))},hideAll:function(){return this.find("menuitem").exec("hideMenu"),this._super()},preRender:function(){var n=this;return n.items().each(function(t){var e=t.settings;if(e.icon||e.image||e.selectable)return!(n._hasIcons=!0)}),n.settings.itemsFactory&&n.on("postrender",function(){n.settings.itemsFactory&&n.load()}),n.on("show hide",function(t){t.control===n&&("show"===t.type?c.setTimeout(function(){n.classes.add("in")},0):n.classes.remove("in"))}),n._super()}}),Yr=Ur.extend({init:function(i){var e,r,o,n,s=this;s._super(i),i=s.settings,s._values=e=i.values,e&&("undefined"!=typeof i.
 value&&function t(e){for(var n=0;n<e.length;n++){if(r=e[n].selected||i.value===e[n].value)return o=o||e[n].text,s.state.set("value",e[n].value),!0;if(e[n].menu&&t(e[n].menu))return!0}}(e),!r&&0<e.length&&(o=e[0].text,s.state.set("value",e[0].value)),s.state.set("menu",e)),s.state.set("text",i.text||o),s.classes.add("listbox"),s.on("select",function(t){var e=t.control;n&&(t.lastControl=n),i.multiple?e.active(!e.active()):s.value(t.control.value()),n=e})},value:function(n){return 0===arguments.length?this.state.get("value"):(void 0===n||(this.settings.values&&!function e(t){return _t(t,function(t){return t.menu?e(t.menu):t.value===n})}(this.settings.values)?null===n&&this.state.set("value",null):this.state.set("value",n)),this)},bindStates:function(){var i=this;return i.on("show",function(t){var e,n;e=t.control,n=i.value(),e 
 instanceof qr&&e.items().each(function(t){t.hasMenus()||t.active(t.value()===n)})}),i.state.on("change:value",function(e){var n=function t(e,n){var i;if(e)for(var r=0;r<e.length;r++){if(e[r].value===n)return e[r];if(e[r].menu&&(i=t(e[r].menu,n)))return i}}(i.state.get("menu"),e.value);n?i.text(n.text):i.text(i.settings.text)}),i._super()}}),$r=be.extend({Defaults:{border:0,role:"menuitem"},init:function(t){var e,n=this;n._super(t),t=n.settings,n.classes.add("menu-item"),t.menu&&n.classes.add("menu-item-expand"),t.preview&&n.classes.add("menu-item-preview"),"-"!==(e=n.state.get("text"))&&"|"!==e||(n.classes.add("menu-item-sep"),n.aria("role","separator"),n.state.set("text","-")),t.selectable&&(n.aria("role","menuitemcheckbox"),n.classes.add("menu-item-checkbox"),t.ic
 on="selected"),t.preview||t.selectable||n.classes.add("menu-item-normal"),n.on("mousedown",function(t){t.preventDefault()}),t.menu&&!t.ariaHideMenu&&n.aria("haspopup",!0)},hasMenus:function(){return!!this.settings.menu},showMenu:function(){var e,n=this,t=n.settings,i=n.parent();if(i.items().each(function(t){t!==n&&t.hideMenu()}),t.menu){(e=n.menu)?e.show():((e=t.menu).length?e={type:"menu",items:e}:e.type=e.type||"menu",i.settings.itemDefaults&&(e.itemDefaults=i.settings.itemDefaults),(e=n.menu=ke.create(e).parent(n).renderTo()).reflow(),e.on("cancel",function(t){t.stopPropagation(),n.focus(),e.hide()}),e.on("show hide",function(t){t.control.items&&t.control.items().each(function(t){t.active(t.settings.selected)})}).fire("show"),e.on("hide",function(t){t.control===e&&n.classes.remove("selected")}),e.submenu=!0),e._parentMenu=i,
 e.classes.add("menu-sub");var r=e.testMoveRel(n.getEl(),n.isRtl()?["tl-tr","bl-br","tr-tl","br-bl"]:["tr-tl","br-bl","tl-tr","bl-br"]);e.moveRel(n.getEl(),r),r="menu-sub-"+(e.rel=r),e.classes.remove(e._lastRel).add(r),e._lastRel=r,n.classes.add("selected"),n.aria("expanded",!0)}},hideMenu:function(){var t=this;return t.menu&&(t.menu.items().each(function(t){t.hideMenu&&t.hideMenu()}),t.menu.hide(),t.aria("expanded",!1)),t},renderHtml:function(){var t,e=this,n=e._id,i=e.settings,r=e.classPrefix,o=e.state.get("text"),s=e.settings.icon,a="",l=i.shortcut,u=e.encode(i.url);function c(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function d(t){var e=i.match||"";return e?t.replace(new RegExp(c(e),"gi"),function(t){return"!mce~match["+t+"]mce~match!"}):t}function f(t){re
 turn t.replace(new RegExp(c("!mce~match["),"g"),"<b>").replace(new RegExp(c("]mce~match!"),"g"),"</b>")}return s&&e.parent().classes.add("menu-has-icons"),i.image&&(a=" style=\"background-image: url('"+i.image+"')\""),l&&(l=function(t){var e,n,i={};for(i=h.mac?{alt:"&#x2325;",ctrl:"&#x2318;",shift:"&#x21E7;",meta:"&#x2318;"}:{meta:"Ctrl"},t=t.split("+"),e=0;e<t.length;e++)(n=i[t[e].toLowerCase()])&&(t[e]=n);return t.join("+")}(l)),s=r+"ico "+r+"i-"+(e.settings.icon||"none"),t="-"!==o?'<i class="'+s+'"'+a+"></i>\xa0":"",o=f(e.encode(d(o))),u=f(e.encode(d(u))),'<div id="'+n+'" class="'+e.classes+'" tabindex="-1">'+t+("-"!==o?'<
 span id="'+n+'-text" class="'+r+'text">'+o+"</span>":"")+(l?'<div id="'+n+'-shortcut" class="'+r+'menu-shortcut">'+l+"</div>":"")+(i.menu?'<div class="'+r+'caret"></div>':"")+(u?'<div class="'+r+'menu-item-link">'+u+"</div>":"")+"</div>"},postRender:function(){var e=this,n=e.settings,t=n.textStyle;if("function"==typeof t&&(t=t.call(this)),t){var i=e.getEl("text");i&&(i.setAttribute("style",t),e._textStyle=t)}return e.on("mouseenter click",function(t){t.control===e&&(n.menu||"click"!==t.type?(e.showMenu(),t.aria&&e.menu.focus(!0)):(e.fire("select"),c.requestAnimationFrame(function(){e.parent().hideAll()})))}),e._super(),e},hover:function(){return this.parent().items().each(function(t){t.classes.remove(&quo
 t;selected")}),this.classes.toggle("selected",!0),this},active:function(t){return function(t,e){var n=t._textStyle;if(n){var i=t.getEl("text");i.setAttribute("style",n),e&&(i.style.color="",i.style.backgroundColor="")}}(this,t),void 0!==t&&this.aria("checked",t),this._super(t)},remove:function(){this._super(),this.menu&&this.menu.remove()}}),Xr=Ln.extend({Defaults:{classes:"radio",role:"radio"}}),jr=be.extend({renderHtml:function(){var t=this,e=t.classPrefix;return t.classes.add("resizehandle"),"both"===t.settings.direction&&t.classes.add("resizehandle-both"),t.canFocus=!1,'<div id="'+t._id+'" class="'+t.classes+'"><i class="'+e+"ico "+e+'i-resize"></i></div>'},postRender:function(){var e=this;e._super(),e.resizeDragHelper=new Ce(this._id,{start:function(){e.fire("Resize
 Start")},drag:function(t){"both"!==e.settings.direction&&(t.deltaX=0),e.fire("Resize",t)},stop:function(){e.fire("ResizeEnd")}})},remove:function(){return this.resizeDragHelper&&this.resizeDragHelper.destroy(),this._super()}});function Jr(t){var e="";if(t)for(var n=0;n<t.length;n++)e+='<option value="'+t[n]+'">'+t[n]+"</option>";return e}var Gr=be.extend({Defaults:{classes:"selectbox",role:"selectbox",options:[]},init:function(t){var n=this;n._super(t),n.settings.size&&(n.size=n.settings.size),n.settings.options&&(n._options=n.settings.options),n.on("keydown",function(t){var e;13===t.keyCode&&(t.preventDefault(),n.parents().reverse().each(function(t){if(t.toJSON)return e=t,!1}),n.fire("submit",{data:e.toJSON()}))})},options:function(t){return arguments.length?(this.state.set("options",t),this):this.state.get("o
 ptions")},renderHtml:function(){var t,e=this,n="";return t=Jr(e._options),e.size&&(n=' size = "'+e.size+'"'),'<select id="'+e._id+'" class="'+e.classes+'"'+n+">"+t+"</select>"},bindStates:function(){var e=this;return e.state.on("change:options",function(t){e.getEl().innerHTML=Jr(t.value)}),e._super()}});function Kr(t,e,n){return t<e&&(t=e),n<t&&(t=n),t}function Zr(t,e,n){t.setAttribute("aria-"+e,n)}function Qr(t,e){var n,i,r,o,s;"v"===t.settings.orientation?(r="top",i="height",n="h"):(r="left",i="width",n="w"),s=t.getEl("handle"),o=((t.layoutRect()[n]||100)-Mt.getSize(s)[i])*((e-t._minValue)/(t._maxValue-t._minValue))+"px",s.style[r]=o,s.style.height=t.layoutRect().h+"px",Zr(s,"valuenow",e),Zr(s,"valuetext",""+t.settings.previewFi
 lter(e)),Zr(s,"valuemin",t._minValue),Zr(s,"valuemax",t._maxValue)}var to=be.extend({init:function(t){var e=this;t.previewFilter||(t.previewFilter=function(t){return Math.round(100*t)/100}),e._super(t),e.classes.add("slider"),"v"===t.orientation&&e.classes.add("vertical"),e._minValue=xt(t.minValue)?t.minValue:0,e._maxValue=xt(t.maxValue)?t.maxValue:100,e._initValue=e.state.get("value")},renderHtml:function(){var t=this._id,e=this.classPrefix;return'<div id="'+t+'" class="'+this.classes+'"><div id="'+t+'-handle" class="'+e+'slider-handle" role="slider" tabindex="-1"></div></div>'},reset:function(){this.value(this._initValue).repaint()},postRender:function(){var t,e,n,i,r,o,s,a,l,u,c,d,f,h,m=this;t=m._minValue,e=m._maxValue,"v"===m.settings.orientation?(n="screenY",i="top",r="height",o="h&qu
 ot;):(n="screenX",i="left",r="width",o="w"),m._super(),function(o,s){function e(t){var e,n,i,r;e=Kr(e=(((e=m.value())+(r=n=o))/((i=s)-r)+.05*t)*(i-n)-n,o,s),m.value(e),m.fire("dragstart",{value:e}),m.fire("drag",{value:e}),m.fire("dragend",{value:e})}m.on("keydown",function(t){switch(t.keyCode){case 37:case 38:e(-1);break;case 39:case 40:e(1)}})}(t,e),s=t,a=e,l=m.getEl("handle"),m._dragHelper=new Ce(m._id,{handle:m._id+"-handle",start:function(t){u=t[n],c=parseInt(m.getEl("handle").style[i],10),d=(m.layoutRect()[o]||100)-Mt.getSize(l)[r],m.fire("dragstart",{value:h})},drag:function(t){var e=t[n]-u;f=Kr(c+e,0,d),l.style[i]=f+"px",h=s+f/d*(a-s),m.value(h),m.tooltip().text(""+m.settings.previewFilter(h)).show().moveRel(l,"bc tc"),m.fire("drag",{value:h})},stop:function(){m.tooltip().hide(),m.fire("dragend",{value:h})}}
 )},repaint:function(){this._super(),Qr(this,this.value())},bindStates:function(){var e=this;return e.state.on("change:value",function(t){Qr(e,t.value)}),e._super()}}),eo=be.extend({renderHtml:function(){return this.classes.add("spacer"),this.canFocus=!1,'<div id="'+this._id+'" class="'+this.classes+'"></div>'}}),no=Ur.extend({Defaults:{classes:"widget btn splitbtn",role:"button"},repaint:function(){var t,e,n=this.getEl(),i=this.layoutRect();return this._super(),t=n.firstChild,e=n.lastChild,Nt(t).css({width:i.w-Mt.getSize(e).width,height:i.h-2}),Nt(e).css({height:i.h-2}),this},activeMenu:function(t){Nt(this.getEl().lastChild).toggleClass(this.classPrefix+"active",t)},renderHtml:function(){var t,e,n=this,i=n._id,r=n.classPrefix,o=n.state.get("icon"),s=n.state.get("text"),a=n.settings,l="";return(t=a.image)?(o="none","string"!=typeof t&&(t=_.window
 .getSelection?t[0]:t[1]),t=" style=\"background-image: url('"+t+"')\""):t="",o=a.icon?r+"ico "+r+"i-"+o:"",s&&(n.classes.add("btn-has-text"),l='<span class="'+r+'txt">'+n.encode(s)+"</span>"),e="boolean"==typeof a.active?' aria-pressed="'+a.active+'"':"",'<div id="'+i+'" class="'+n.classes+'" role="button"'+e+' tabindex="-1"><button type="button" hidefocus="1" tabindex="-1">'+(o?'<i class="'+o+'"'+t+"></i>":"")+l+'</button><button type="button" class="'+r+'open" hidefocus="1" tabindex="-1">'+(n._menuBtnText?(o?"\xa0":"")+n._menuBtnText:"")+' <i class="'+r+'caret"></i></button></div>'},postRender:func
 tion(){var n=this.settings.onclick;return this.on("click",function(t){var e=t.target;if(t.control===this)for(;e;){if(t.aria&&"down"!==t.aria.key||"BUTTON"===e.nodeName&&-1===e.className.indexOf("open"))return t.stopImmediatePropagation(),void(n&&n.call(this,t));e=e.parentNode}}),delete this.settings.onclick,this._super()}}),io=sr.extend({Defaults:{containerClass:"stack-layout",controlClass:"stack-layout-item",endClass:"break"},isNative:function(){return!0}}),ro=De.extend({Defaults:{layout:"absolute",defaults:{type:"panel"}},activateTab:function(n){var t;this.activeTabId&&(t=this.getEl(this.activeTabId),Nt(t).removeClass(this.classPrefix+"active"),t.setAttribute("aria-selected","false")),this.activeTabId="t"+n,(t=this.getEl("t"+n)).setAttribute("aria-selected","true"),Nt(t).addClass(this.classPr
 efix+"active"),this.items()[n].show().fire("showtab"),this.reflow(),this.items().each(function(t,e){n!==e&&t.hide()})},renderHtml:function(){var i=this,t=i._layout,r="",o=i.classPrefix;return i.preRender(),t.preRender(i),i.items().each(function(t,e){var n=i._id+"-t"+e;t.aria("role","tabpanel"),t.aria("labelledby",n),r+='<div id="'+n+'" class="'+o+'tab" unselectable="on" role="tab" aria-controls="'+t._id+'" aria-selected="false" tabIndex="-1">'+i.encode(t.settings.title)+"</div>"}),'<div id="'+i._id+'" class="'+i.classes+'" hidefocus="1" tabindex="-1"><div id="'+i._id+'-head" class="'+o+'tabs" role="tablist">'+r+'</div><div id="'+i._id+'-body" class="'+i.bodyClasses+'">'+t.renderHtml(i)+"</div>
 </div>"},postRender:function(){var i=this;i._super(),i.settings.activeTab=i.settings.activeTab||0,i.activateTab(i.settings.activeTab),this.on("click",function(t){var e=t.target.parentNode;if(e&&e.id===i._id+"-head")for(var n=e.childNodes.length;n--;)e.childNodes[n]===t.target&&i.activateTab(n)})},initLayoutRect:function(){var t,e,n,i=this;e=(e=Mt.getSize(i.getEl("head")).width)<0?0:e,n=0,i.items().each(function(t){e=Math.max(e,t.layoutRect().minW),n=Math.max(n,t.layoutRect().minH)}),i.items().each(function(t){t.settings.x=0,t.settings.y=0,t.settings.w=e,t.settings.h=n,t.layoutRect({x:0,y:0,w:e,h:n})});var r=Mt.getSize(i.getEl("head")).height;return i.settings.minWidth=e,i.settings.minHeight=n+r,(t=i._super()).deltaH+=r,t.innerH=t.h-t.deltaH,t}}),oo=be.extend({init:function(t){var n=this;n._super(t),n.classes.add("textbox"),t.multiline?n.classes.add("multiline"):(n.on("keydown",functio
 n(t){var e;13===t.keyCode&&(t.preventDefault(),n.parents().reverse().each(function(t){if(t.toJSON)return e=t,!1}),n.fire("submit",{data:e.toJSON()}))}),n.on("keyup",function(t){n.state.set("value",t.target.value)}))},repaint:function(){var t,e,n,i,r,o=this,s=0;t=o.getEl().style,e=o._layoutRect,r=o._lastRepaintRect||{};var a=_.document;return!o.settings.multiline&&a.all&&(!a.documentMode||a.documentMode<=8)&&(t.lineHeight=e.h-s+"px"),i=(n=o.borderBox).left+n.right+8,s=n.top+n.bottom+(o.settings.multiline?8:0),e.x!==r.x&&(t.left=e.x+"px",r.x=e.x),e.y!==r.y&&(t.top=e.y+"px",r.y=e.y),e.w!==r.w&&(t.width=e.w-i+"px",r.w=e.w),e.h!==r.h&&(t.height=e.h-s+"px",r.h=e.h),o._lastRepaintRect=r,o.fire("repaint",{},!1),o},renderHtml:function(){var e,t,n=this,i=n.settings;return e={id:n._id,hidefocus:"1"},C.each(["rows",&quot
 ;spellcheck","maxLength","size","readonly","min","max","step","list","pattern","placeholder","required","multiple"],function(t){e[t]=i[t]}),n.disabled()&&(e.disabled="disabled"),i.subtype&&(e.type=i.subtype),(t=Mt.create(i.multiline?"textarea":"input",e)).value=n.state.get("value"),t.className=n.classes.toString(),t.outerHTML},value:function(t){return arguments.length?(this.state.set("value",t),this):(this.state.get("rendered")&&this.state.set("value",this.getEl().value),this.state.get("value"))},postRender:function(){var e=this;e.getEl().value=e.state.get("value"),e._super(),e.$el.on("change",function(t){e.state.set("value",t.target.value),e.fire("change",t)})},bindStates:function(){var e=this;return e.state.on("change:val
 ue",function(t){e.getEl().value!==t.value&&(e.getEl().value=t.value)}),e.state.on("change:disabled",function(t){e.getEl().disabled=t.value}),e._super()},remove:function(){this.$el.off(),this._super()}}),so=function(){return{Selector:qt,Collection:Xt,ReflowQueue:ee,Control:ce,Factory:ke,KeyboardNavigation:He,Container:Pe,DragHelper:Ce,Scrollable:We,Panel:De,Movable:pe,Resizable:Ae,FloatPanel:Ve,Window:Je,MessageBox:Qe,Tooltip:ve,Widget:be,Progress:ye,Notification:we,Layout:Pn,AbsoluteLayout:Wn,Button:Dn,ButtonGroup:Bn,Checkbox:Ln,ComboBox:zn,ColorBox:Fn,PanelButton:Un,ColorButton:qn,ColorPicker:$n,Path:jn,ElementPath:Jn,FormItem:Gn,Form:Kn,FieldSet:Zn,FilePicker:ir,FitLayout:rr,FlexLayout:or,FlowLayout:sr,FormatControls:Dr,GridLayout:Ar,Iframe:Br,InfoBox:Lr,Label:Ir,Toolbar:zr,MenuBar:Fr,MenuButton:Ur,MenuItem:$r,Throbber:Vr,Menu:qr,ListBox:Yr,Radio:Xr,ResizeHandle:jr,SelectBox:Gr,Slider:to,Spacer:eo,SplitButton:no,StackLayout:io,TabPanel:ro,TextBox:oo,DropZone
 :Xn,BrowseButton:An}},ao=function(n){n.ui?C.each(so(),function(t,e){n.ui[e]=t}):n.ui=so()};C.each(so(),function(t,e){ke.add(e,t)}),ao(window.tinymce?window.tinymce:{}),o.add("inlite",function(t){var e=On();return Dr.setup(t),kn(t,e),tn(t,e)})}(window);
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of file
</span></span></pre></div>
<a id="trunksrcjs_enqueuesvendortinymcethemesmodernthemejs"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/js/_enqueues/vendor/tinymce/themes/modern/theme.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/js/_enqueues/vendor/tinymce/themes/modern/theme.js      2019-05-15 19:53:42 UTC (rev 45315)
+++ trunk/src/js/_enqueues/vendor/tinymce/themes/modern/theme.js        2019-05-15 23:44:37 UTC (rev 45316)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,5 @@
</span><span class="cx" style="display: block; padding: 0 10px"> (function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-var modern = (function () {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+var modern = (function (domGlobals) {
</ins><span class="cx" style="display: block; padding: 0 10px">     'use strict';
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var global = tinymce.util.Tools.resolve('tinymce.ThemeManager');
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -172,13 +172,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var eq = function (o) {
</span><span class="cx" style="display: block; padding: 0 10px">         return o.isNone();
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var call$$1 = function (thunk) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var call = function (thunk) {
</ins><span class="cx" style="display: block; padding: 0 10px">         return thunk();
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var id = function (n) {
</span><span class="cx" style="display: block; padding: 0 10px">         return n;
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var noop$$1 = function () {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var noop = function () {
</ins><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var nul = function () {
</span><span class="cx" style="display: block; padding: 0 10px">         return null;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -194,7 +194,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         isSome: never$1,
</span><span class="cx" style="display: block; padding: 0 10px">         isNone: always$1,
</span><span class="cx" style="display: block; padding: 0 10px">         getOr: id,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        getOrThunk: call$$1,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        getOrThunk: call,
</ins><span class="cx" style="display: block; padding: 0 10px">         getOrDie: function (msg) {
</span><span class="cx" style="display: block; padding: 0 10px">           throw new Error(msg || 'error: getOrDie called on none.');
</span><span class="cx" style="display: block; padding: 0 10px">         },
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -201,10 +201,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">         getOrNull: nul,
</span><span class="cx" style="display: block; padding: 0 10px">         getOrUndefined: undef,
</span><span class="cx" style="display: block; padding: 0 10px">         or: id,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        orThunk: call$$1,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        orThunk: call,
</ins><span class="cx" style="display: block; padding: 0 10px">         map: none,
</span><span class="cx" style="display: block; padding: 0 10px">         ap: none,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        each: noop$$1,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        each: noop,
</ins><span class="cx" style="display: block; padding: 0 10px">         bind: none,
</span><span class="cx" style="display: block; padding: 0 10px">         flatten: none,
</span><span class="cx" style="display: block; padding: 0 10px">         exists: never$1,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1194,8 +1194,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">       id: function () {
</span><span class="cx" style="display: block; padding: 0 10px">         return 'mceu_' + count++;
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      create: function (name$$1, attrs, children) {
-        var elm = document.createElement(name$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      create: function (name, attrs, children) {
+        var elm = domGlobals.document.createElement(name);
</ins><span class="cx" style="display: block; padding: 0 10px">         global$3.DOM.setAttribs(elm, attrs);
</span><span class="cx" style="display: block; padding: 0 10px">         if (typeof children === 'string') {
</span><span class="cx" style="display: block; padding: 0 10px">           elm.innerHTML = children;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1233,13 +1233,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return global$3.DOM.getPos(elm, root || funcs.getContainer());
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       getContainer: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return global$8.container ? global$8.container : document.body;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return global$8.container ? global$8.container : domGlobals.document.body;
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       getViewPort: function (win) {
</span><span class="cx" style="display: block; padding: 0 10px">         return global$3.DOM.getViewPort(win);
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       get: function (id) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return document.getElementById(id);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return domGlobals.document.getElementById(id);
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       addClass: function (elm, cls) {
</span><span class="cx" style="display: block; padding: 0 10px">         return global$3.DOM.addClass(elm, cls);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1253,20 +1253,20 @@
</span><span class="cx" style="display: block; padding: 0 10px">       toggleClass: function (elm, cls, state) {
</span><span class="cx" style="display: block; padding: 0 10px">         return global$3.DOM.toggleClass(elm, cls, state);
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      css: function (elm, name$$1, value) {
-        return global$3.DOM.setStyle(elm, name$$1, value);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      css: function (elm, name, value) {
+        return global$3.DOM.setStyle(elm, name, value);
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      getRuntimeStyle: function (elm, name$$1) {
-        return global$3.DOM.getStyle(elm, name$$1, true);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      getRuntimeStyle: function (elm, name) {
+        return global$3.DOM.getStyle(elm, name, true);
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      on: function (target, name$$1, callback, scope) {
-        return global$3.DOM.bind(target, name$$1, callback, scope);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      on: function (target, name, callback, scope) {
+        return global$3.DOM.bind(target, name, callback, scope);
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      off: function (target, name$$1, callback) {
-        return global$3.DOM.unbind(target, name$$1, callback);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      off: function (target, name, callback) {
+        return global$3.DOM.unbind(target, name, callback);
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      fire: function (target, name$$1, args) {
-        return global$3.DOM.fire(target, name$$1, args);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      fire: function (target, name, args) {
+        return global$3.DOM.fire(target, name, args);
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       innerHtml: function (elm, html) {
</span><span class="cx" style="display: block; padding: 0 10px">         global$3.DOM.setHTML(elm, html);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1285,7 +1285,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       pos = funcs.getPos(targetElm, UiContainer.getUiContainer(ctrl));
</span><span class="cx" style="display: block; padding: 0 10px">       x = pos.x;
</span><span class="cx" style="display: block; padding: 0 10px">       y = pos.y;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      if (isFixed(ctrl) && isStatic(document.body)) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      if (isFixed(ctrl) && isStatic(domGlobals.document.body)) {
</ins><span class="cx" style="display: block; padding: 0 10px">         x -= viewport.x;
</span><span class="cx" style="display: block; padding: 0 10px">         y -= viewport.y;
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1337,11 +1337,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var getWindowViewPort = function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var win = window;
-      var x = Math.max(win.pageXOffset, document.body.scrollLeft, document.documentElement.scrollLeft);
-      var y = Math.max(win.pageYOffset, document.body.scrollTop, document.documentElement.scrollTop);
-      var w = win.innerWidth || document.documentElement.clientWidth;
-      var h = win.innerHeight || document.documentElement.clientHeight;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var win = domGlobals.window;
+      var x = Math.max(win.pageXOffset, domGlobals.document.body.scrollLeft, domGlobals.document.documentElement.scrollLeft);
+      var y = Math.max(win.pageYOffset, domGlobals.document.body.scrollTop, domGlobals.document.documentElement.scrollTop);
+      var w = win.innerWidth || domGlobals.document.documentElement.clientWidth;
+      var h = win.innerHeight || domGlobals.document.documentElement.clientHeight;
</ins><span class="cx" style="display: block; padding: 0 10px">       return {
</span><span class="cx" style="display: block; padding: 0 10px">         x: x,
</span><span class="cx" style="display: block; padding: 0 10px">         y: y,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1378,12 +1378,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return this.moveTo(pos.x, pos.y);
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       moveBy: function (dx, dy) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this, rect = self$$1.layoutRect();
-        self$$1.moveTo(rect.x + dx, rect.y + dy);
-        return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this, rect = self.layoutRect();
+        self.moveTo(rect.x + dx, rect.y + dy);
+        return self;
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       moveTo: function (x, y) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">         function constrain(value, max, size) {
</span><span class="cx" style="display: block; padding: 0 10px">           if (value < 0) {
</span><span class="cx" style="display: block; padding: 0 10px">             return 0;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1394,14 +1394,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           return value;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (self$$1.settings.constrainToViewport) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (self.settings.constrainToViewport) {
</ins><span class="cx" style="display: block; padding: 0 10px">           var viewPortRect = getViewPortRect(this);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          var layoutRect = self$$1.layoutRect();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          var layoutRect = self.layoutRect();
</ins><span class="cx" style="display: block; padding: 0 10px">           x = constrain(x, viewPortRect.w + viewPortRect.x, layoutRect.w);
</span><span class="cx" style="display: block; padding: 0 10px">           y = constrain(y, viewPortRect.h + viewPortRect.y, layoutRect.h);
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var uiContainer = UiContainer.getUiContainer(self$$1);
-        if (uiContainer && isStatic(uiContainer) && !isFixed(self$$1)) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var uiContainer = UiContainer.getUiContainer(self);
+        if (uiContainer && isStatic(uiContainer) && !isFixed(self)) {
</ins><span class="cx" style="display: block; padding: 0 10px">           x -= uiContainer.scrollLeft;
</span><span class="cx" style="display: block; padding: 0 10px">           y -= uiContainer.scrollTop;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1409,20 +1409,20 @@
</span><span class="cx" style="display: block; padding: 0 10px">           x += 1;
</span><span class="cx" style="display: block; padding: 0 10px">           y += 1;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (self$$1.state.get('rendered')) {
-          self$$1.layoutRect({
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (self.state.get('rendered')) {
+          self.layoutRect({
</ins><span class="cx" style="display: block; padding: 0 10px">             x: x,
</span><span class="cx" style="display: block; padding: 0 10px">             y: y
</span><span class="cx" style="display: block; padding: 0 10px">           }).repaint();
</span><span class="cx" style="display: block; padding: 0 10px">         } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.settings.x = x;
-          self$$1.settings.y = y;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.settings.x = x;
+          self.settings.y = y;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.fire('move', {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.fire('move', {
</ins><span class="cx" style="display: block; padding: 0 10px">           x: x,
</span><span class="cx" style="display: block; padding: 0 10px">           y: y
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return self;
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2046,13 +2046,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var dirtyCtrls = {}, animationFrameRequested;
</span><span class="cx" style="display: block; padding: 0 10px">     var ReflowQueue = {
</span><span class="cx" style="display: block; padding: 0 10px">       add: function (ctrl) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var parent$$1 = ctrl.parent();
-        if (parent$$1) {
-          if (!parent$$1._layout || parent$$1._layout.isNative()) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var parent = ctrl.parent();
+        if (parent) {
+          if (!parent._layout || parent._layout.isNative()) {
</ins><span class="cx" style="display: block; padding: 0 10px">             return;
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (!dirtyCtrls[parent$$1._id]) {
-            dirtyCtrls[parent$$1._id] = parent$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (!dirtyCtrls[parent._id]) {
+            dirtyCtrls[parent._id] = parent;
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           if (!animationFrameRequested) {
</span><span class="cx" style="display: block; padding: 0 10px">             animationFrameRequested = true;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2066,7 +2066,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px">               }
</span><span class="cx" style="display: block; padding: 0 10px">               dirtyCtrls = {};
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            }, document.body);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            }, domGlobals.document.body);
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2077,7 +2077,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var hasMouseWheelEventSupport = 'onmousewheel' in document;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var hasMouseWheelEventSupport = 'onmousewheel' in domGlobals.document;
</ins><span class="cx" style="display: block; padding: 0 10px">     var hasWheelEventSupport = false;
</span><span class="cx" style="display: block; padding: 0 10px">     var classPrefix = 'mce-';
</span><span class="cx" style="display: block; padding: 0 10px">     var Control, idCounter = 0;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2088,37 +2088,37 @@
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       classPrefix: classPrefix,
</span><span class="cx" style="display: block; padding: 0 10px">       init: function (settings) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">         var classes, defaultClasses;
</span><span class="cx" style="display: block; padding: 0 10px">         function applyClasses(classes) {
</span><span class="cx" style="display: block; padding: 0 10px">           var i;
</span><span class="cx" style="display: block; padding: 0 10px">           classes = classes.split(' ');
</span><span class="cx" style="display: block; padding: 0 10px">           for (i = 0; i < classes.length; i++) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            self$$1.classes.add(classes[i]);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            self.classes.add(classes[i]);
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.settings = settings = global$2.extend({}, self$$1.Defaults, settings);
-        self$$1._id = settings.id || 'mceu_' + idCounter++;
-        self$$1._aria = { role: settings.role };
-        self$$1._elmCache = {};
-        self$$1.$ = global$9;
-        self$$1.state = new ObservableObject({
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.settings = settings = global$2.extend({}, self.Defaults, settings);
+        self._id = settings.id || 'mceu_' + idCounter++;
+        self._aria = { role: settings.role };
+        self._elmCache = {};
+        self.$ = global$9;
+        self.state = new ObservableObject({
</ins><span class="cx" style="display: block; padding: 0 10px">           visible: true,
</span><span class="cx" style="display: block; padding: 0 10px">           active: false,
</span><span class="cx" style="display: block; padding: 0 10px">           disabled: false,
</span><span class="cx" style="display: block; padding: 0 10px">           value: ''
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.data = new ObservableObject(settings.data);
-        self$$1.classes = new ClassList(function () {
-          if (self$$1.state.get('rendered')) {
-            self$$1.getEl().className = this.toString();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.data = new ObservableObject(settings.data);
+        self.classes = new ClassList(function () {
+          if (self.state.get('rendered')) {
+            self.getEl().className = this.toString();
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.classes.prefix = self$$1.classPrefix;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.classes.prefix = self.classPrefix;
</ins><span class="cx" style="display: block; padding: 0 10px">         classes = settings.classes;
</span><span class="cx" style="display: block; padding: 0 10px">         if (classes) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (self$$1.Defaults) {
-            defaultClasses = self$$1.Defaults.classes;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (self.Defaults) {
+            defaultClasses = self.Defaults.classes;
</ins><span class="cx" style="display: block; padding: 0 10px">             if (defaultClasses && classes !== defaultClasses) {
</span><span class="cx" style="display: block; padding: 0 10px">               applyClasses(defaultClasses);
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2125,22 +2125,22 @@
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           applyClasses(classes);
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        global$2.each('title text name visible disabled active value'.split(' '), function (name$$1) {
-          if (name$$1 in settings) {
-            self$$1[name$$1](settings[name$$1]);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        global$2.each('title text name visible disabled active value'.split(' '), function (name) {
+          if (name in settings) {
+            self[name](settings[name]);
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.on('click', function () {
-          if (self$$1.disabled()) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.on('click', function () {
+          if (self.disabled()) {
</ins><span class="cx" style="display: block; padding: 0 10px">             return false;
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.settings = settings;
-        self$$1.borderBox = BoxUtils.parseBox(settings.border);
-        self$$1.paddingBox = BoxUtils.parseBox(settings.padding);
-        self$$1.marginBox = BoxUtils.parseBox(settings.margin);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.settings = settings;
+        self.borderBox = BoxUtils.parseBox(settings.border);
+        self.paddingBox = BoxUtils.parseBox(settings.padding);
+        self.marginBox = BoxUtils.parseBox(settings.margin);
</ins><span class="cx" style="display: block; padding: 0 10px">         if (settings.hidden) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.hide();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.hide();
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       Properties: 'parent,name',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2161,15 +2161,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return ctrl;
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       initLayoutRect: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        var settings = self$$1.settings;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        var settings = self.settings;
</ins><span class="cx" style="display: block; padding: 0 10px">         var borderBox, layoutRect;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var elm = self$$1.getEl();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var elm = self.getEl();
</ins><span class="cx" style="display: block; padding: 0 10px">         var width, height, minWidth, minHeight, autoResize;
</span><span class="cx" style="display: block; padding: 0 10px">         var startMinWidth, startMinHeight, initialSize;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        borderBox = self$$1.borderBox = self$$1.borderBox || BoxUtils.measureBox(elm, 'border');
-        self$$1.paddingBox = self$$1.paddingBox || BoxUtils.measureBox(elm, 'padding');
-        self$$1.marginBox = self$$1.marginBox || BoxUtils.measureBox(elm, 'margin');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        borderBox = self.borderBox = self.borderBox || BoxUtils.measureBox(elm, 'border');
+        self.paddingBox = self.paddingBox || BoxUtils.measureBox(elm, 'padding');
+        self.marginBox = self.marginBox || BoxUtils.measureBox(elm, 'margin');
</ins><span class="cx" style="display: block; padding: 0 10px">         initialSize = funcs.getSize(elm);
</span><span class="cx" style="display: block; padding: 0 10px">         startMinWidth = settings.minWidth;
</span><span class="cx" style="display: block; padding: 0 10px">         startMinHeight = settings.minHeight;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2185,7 +2185,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         var deltaH = borderBox.top + borderBox.bottom;
</span><span class="cx" style="display: block; padding: 0 10px">         var maxW = settings.maxWidth || 65535;
</span><span class="cx" style="display: block; padding: 0 10px">         var maxH = settings.maxHeight || 65535;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1._layoutRect = layoutRect = {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self._layoutRect = layoutRect = {
</ins><span class="cx" style="display: block; padding: 0 10px">           x: settings.x || 0,
</span><span class="cx" style="display: block; padding: 0 10px">           y: settings.y || 0,
</span><span class="cx" style="display: block; padding: 0 10px">           w: width,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2205,14 +2205,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">           autoResize: autoResize,
</span><span class="cx" style="display: block; padding: 0 10px">           scrollW: 0
</span><span class="cx" style="display: block; padding: 0 10px">         };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1._lastLayoutRect = {};
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self._lastLayoutRect = {};
</ins><span class="cx" style="display: block; padding: 0 10px">         return layoutRect;
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       layoutRect: function (newRect) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        var curRect = self$$1._layoutRect, lastLayoutRect, size, deltaWidth, deltaHeight, repaintControls;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        var curRect = self._layoutRect, lastLayoutRect, size, deltaWidth, deltaHeight, repaintControls;
</ins><span class="cx" style="display: block; padding: 0 10px">         if (!curRect) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          curRect = self$$1.initLayoutRect();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          curRect = self.initLayoutRect();
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (newRect) {
</span><span class="cx" style="display: block; padding: 0 10px">           deltaWidth = curRect.deltaW;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2263,13 +2263,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">           if (newRect.contentH !== undefined) {
</span><span class="cx" style="display: block; padding: 0 10px">             curRect.contentH = newRect.contentH;
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          lastLayoutRect = self$$1._lastLayoutRect;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          lastLayoutRect = self._lastLayoutRect;
</ins><span class="cx" style="display: block; padding: 0 10px">           if (lastLayoutRect.x !== curRect.x || lastLayoutRect.y !== curRect.y || lastLayoutRect.w !== curRect.w || lastLayoutRect.h !== curRect.h) {
</span><span class="cx" style="display: block; padding: 0 10px">             repaintControls = Control.repaintControls;
</span><span class="cx" style="display: block; padding: 0 10px">             if (repaintControls) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              if (repaintControls.map && !repaintControls.map[self$$1._id]) {
-                repaintControls.push(self$$1);
-                repaintControls.map[self$$1._id] = true;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              if (repaintControls.map && !repaintControls.map[self._id]) {
+                repaintControls.push(self);
+                repaintControls.map[self._id] = true;
</ins><span class="cx" style="display: block; padding: 0 10px">               }
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">             lastLayoutRect.x = curRect.x;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2277,21 +2277,21 @@
</span><span class="cx" style="display: block; padding: 0 10px">             lastLayoutRect.w = curRect.w;
</span><span class="cx" style="display: block; padding: 0 10px">             lastLayoutRect.h = curRect.h;
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          return self;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         return curRect;
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       repaint: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">         var style, bodyStyle, bodyElm, rect, borderBox;
</span><span class="cx" style="display: block; padding: 0 10px">         var borderW, borderH, lastRepaintRect, round, value;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        round = !document.createRange ? Math.round : function (value) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        round = !domGlobals.document.createRange ? Math.round : function (value) {
</ins><span class="cx" style="display: block; padding: 0 10px">           return value;
</span><span class="cx" style="display: block; padding: 0 10px">         };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        style = self$$1.getEl().style;
-        rect = self$$1._layoutRect;
-        lastRepaintRect = self$$1._lastRepaintRect || {};
-        borderBox = self$$1.borderBox;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        style = self.getEl().style;
+        rect = self._layoutRect;
+        lastRepaintRect = self._lastRepaintRect || {};
+        borderBox = self.borderBox;
</ins><span class="cx" style="display: block; padding: 0 10px">         borderW = borderBox.left + borderBox.right;
</span><span class="cx" style="display: block; padding: 0 10px">         borderH = borderBox.top + borderBox.bottom;
</span><span class="cx" style="display: block; padding: 0 10px">         if (rect.x !== lastRepaintRect.x) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2312,9 +2312,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">           style.height = (value >= 0 ? value : 0) + 'px';
</span><span class="cx" style="display: block; padding: 0 10px">           lastRepaintRect.h = rect.h;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (self$$1._hasBody && rect.innerW !== lastRepaintRect.innerW) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (self._hasBody && rect.innerW !== lastRepaintRect.innerW) {
</ins><span class="cx" style="display: block; padding: 0 10px">           value = round(rect.innerW);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          bodyElm = self$$1.getEl('body');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          bodyElm = self.getEl('body');
</ins><span class="cx" style="display: block; padding: 0 10px">           if (bodyElm) {
</span><span class="cx" style="display: block; padding: 0 10px">             bodyStyle = bodyElm.style;
</span><span class="cx" style="display: block; padding: 0 10px">             bodyStyle.width = (value >= 0 ? value : 0) + 'px';
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2321,9 +2321,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           lastRepaintRect.innerW = rect.innerW;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (self$$1._hasBody && rect.innerH !== lastRepaintRect.innerH) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (self._hasBody && rect.innerH !== lastRepaintRect.innerH) {
</ins><span class="cx" style="display: block; padding: 0 10px">           value = round(rect.innerH);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          bodyElm = bodyElm || self$$1.getEl('body');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          bodyElm = bodyElm || self.getEl('body');
</ins><span class="cx" style="display: block; padding: 0 10px">           if (bodyElm) {
</span><span class="cx" style="display: block; padding: 0 10px">             bodyStyle = bodyStyle || bodyElm.style;
</span><span class="cx" style="display: block; padding: 0 10px">             bodyStyle.height = (value >= 0 ? value : 0) + 'px';
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2330,31 +2330,31 @@
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           lastRepaintRect.innerH = rect.innerH;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1._lastRepaintRect = lastRepaintRect;
-        self$$1.fire('repaint', {}, false);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self._lastRepaintRect = lastRepaintRect;
+        self.fire('repaint', {}, false);
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       updateLayoutRect: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        self$$1.parent()._lastRect = null;
-        funcs.css(self$$1.getEl(), {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        self.parent()._lastRect = null;
+        funcs.css(self.getEl(), {
</ins><span class="cx" style="display: block; padding: 0 10px">           width: '',
</span><span class="cx" style="display: block; padding: 0 10px">           height: ''
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1._layoutRect = self$$1._lastRepaintRect = self$$1._lastLayoutRect = null;
-        self$$1.initLayoutRect();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self._layoutRect = self._lastRepaintRect = self._lastLayoutRect = null;
+        self.initLayoutRect();
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      on: function (name$$1, callback) {
-        var self$$1 = this;
-        function resolveCallbackName(name$$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      on: function (name, callback) {
+        var self = this;
+        function resolveCallbackName(name) {
</ins><span class="cx" style="display: block; padding: 0 10px">           var callback, scope;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (typeof name$$1 !== 'string') {
-            return name$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (typeof name !== 'string') {
+            return name;
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           return function (e) {
</span><span class="cx" style="display: block; padding: 0 10px">             if (!callback) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              self$$1.parentsAndSelf().each(function (ctrl) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              self.parentsAndSelf().each(function (ctrl) {
</ins><span class="cx" style="display: block; padding: 0 10px">                 var callbacks = ctrl.settings.callbacks;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if (callbacks && (callback = callbacks[name$$1])) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                if (callbacks && (callback = callbacks[name])) {
</ins><span class="cx" style="display: block; padding: 0 10px">                   scope = ctrl;
</span><span class="cx" style="display: block; padding: 0 10px">                   return false;
</span><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2361,7 +2361,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">               });
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">             if (!callback) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              e.action = name$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              e.action = name;
</ins><span class="cx" style="display: block; padding: 0 10px">               this.fire('execute', e);
</span><span class="cx" style="display: block; padding: 0 10px">               return;
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2368,36 +2368,36 @@
</span><span class="cx" style="display: block; padding: 0 10px">             return callback.call(scope, e);
</span><span class="cx" style="display: block; padding: 0 10px">           };
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        getEventDispatcher(self$$1).on(name$$1, resolveCallbackName(callback));
-        return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        getEventDispatcher(self).on(name, resolveCallbackName(callback));
+        return self;
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      off: function (name$$1, callback) {
-        getEventDispatcher(this).off(name$$1, callback);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      off: function (name, callback) {
+        getEventDispatcher(this).off(name, callback);
</ins><span class="cx" style="display: block; padding: 0 10px">         return this;
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      fire: function (name$$1, args, bubble) {
-        var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      fire: function (name, args, bubble) {
+        var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">         args = args || {};
</span><span class="cx" style="display: block; padding: 0 10px">         if (!args.control) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          args.control = self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          args.control = self;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        args = getEventDispatcher(self$$1).fire(name$$1, args);
-        if (bubble !== false && self$$1.parent) {
-          var parent$$1 = self$$1.parent();
-          while (parent$$1 && !args.isPropagationStopped()) {
-            parent$$1.fire(name$$1, args, false);
-            parent$$1 = parent$$1.parent();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        args = getEventDispatcher(self).fire(name, args);
+        if (bubble !== false && self.parent) {
+          var parent = self.parent();
+          while (parent && !args.isPropagationStopped()) {
+            parent.fire(name, args, false);
+            parent = parent.parent();
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         return args;
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      hasEventListeners: function (name$$1) {
-        return getEventDispatcher(this).has(name$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      hasEventListeners: function (name) {
+        return getEventDispatcher(this).has(name);
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       parents: function (selector) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">         var ctrl, parents = new Collection$2();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        for (ctrl = self$$1.parent(); ctrl; ctrl = ctrl.parent()) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        for (ctrl = self.parent(); ctrl; ctrl = ctrl.parent()) {
</ins><span class="cx" style="display: block; padding: 0 10px">           parents.add(ctrl);
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (selector) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2444,16 +2444,16 @@
</span><span class="cx" style="display: block; padding: 0 10px">         this.getEl().blur();
</span><span class="cx" style="display: block; padding: 0 10px">         return this;
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      aria: function (name$$1, value) {
-        var self$$1 = this, elm = self$$1.getEl(self$$1.ariaTarget);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      aria: function (name, value) {
+        var self = this, elm = self.getEl(self.ariaTarget);
</ins><span class="cx" style="display: block; padding: 0 10px">         if (typeof value === 'undefined') {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          return self$$1._aria[name$$1];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          return self._aria[name];
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1._aria[name$$1] = value;
-        if (self$$1.state.get('rendered')) {
-          elm.setAttribute(name$$1 === 'role' ? name$$1 : 'aria-' + name$$1, value);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self._aria[name] = value;
+        if (self.state.get('rendered')) {
+          elm.setAttribute(name === 'role' ? name : 'aria-' + name, value);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return self;
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       encode: function (text, translate) {
</span><span class="cx" style="display: block; padding: 0 10px">         if (translate !== false) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2467,55 +2467,55 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return Control.translate ? Control.translate(text) : text;
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       before: function (items) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this, parent$$1 = self$$1.parent();
-        if (parent$$1) {
-          parent$$1.insert(items, parent$$1.items().indexOf(self$$1), true);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this, parent = self.parent();
+        if (parent) {
+          parent.insert(items, parent.items().indexOf(self), true);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return self;
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       after: function (items) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this, parent$$1 = self$$1.parent();
-        if (parent$$1) {
-          parent$$1.insert(items, parent$$1.items().indexOf(self$$1));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this, parent = self.parent();
+        if (parent) {
+          parent.insert(items, parent.items().indexOf(self));
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return self;
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       remove: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        var elm = self$$1.getEl();
-        var parent$$1 = self$$1.parent();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        var elm = self.getEl();
+        var parent = self.parent();
</ins><span class="cx" style="display: block; padding: 0 10px">         var newItems, i;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (self$$1.items) {
-          var controls = self$$1.items().toArray();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (self.items) {
+          var controls = self.items().toArray();
</ins><span class="cx" style="display: block; padding: 0 10px">           i = controls.length;
</span><span class="cx" style="display: block; padding: 0 10px">           while (i--) {
</span><span class="cx" style="display: block; padding: 0 10px">             controls[i].remove();
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (parent$$1 && parent$$1.items) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (parent && parent.items) {
</ins><span class="cx" style="display: block; padding: 0 10px">           newItems = [];
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          parent$$1.items().each(function (item) {
-            if (item !== self$$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          parent.items().each(function (item) {
+            if (item !== self) {
</ins><span class="cx" style="display: block; padding: 0 10px">               newItems.push(item);
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          parent$$1.items().set(newItems);
-          parent$$1._lastRect = null;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          parent.items().set(newItems);
+          parent._lastRect = null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (self$$1._eventsRoot && self$$1._eventsRoot === self$$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (self._eventsRoot && self._eventsRoot === self) {
</ins><span class="cx" style="display: block; padding: 0 10px">           global$9(elm).off();
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var lookup = self$$1.getRoot().controlIdLookup;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var lookup = self.getRoot().controlIdLookup;
</ins><span class="cx" style="display: block; padding: 0 10px">         if (lookup) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          delete lookup[self$$1._id];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          delete lookup[self._id];
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (elm && elm.parentNode) {
</span><span class="cx" style="display: block; padding: 0 10px">           elm.parentNode.removeChild(elm);
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.state.set('rendered', false);
-        self$$1.state.destroy();
-        self$$1.fire('remove');
-        return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.state.set('rendered', false);
+        self.state.destroy();
+        self.fire('remove');
+        return self;
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       renderBefore: function (elm) {
</span><span class="cx" style="display: block; padding: 0 10px">         global$9(elm).before(this.renderHtml());
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2535,37 +2535,37 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return '<div id="' + this._id + '" class="' + this.classes + '"></div>';
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       postRender: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        var settings = self$$1.settings;
-        var elm, box, parent$$1, name$$1, parentEventsRoot;
-        self$$1.$el = global$9(self$$1.getEl());
-        self$$1.state.set('rendered', true);
-        for (name$$1 in settings) {
-          if (name$$1.indexOf('on') === 0) {
-            self$$1.on(name$$1.substr(2), settings[name$$1]);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        var settings = self.settings;
+        var elm, box, parent, name, parentEventsRoot;
+        self.$el = global$9(self.getEl());
+        self.state.set('rendered', true);
+        for (name in settings) {
+          if (name.indexOf('on') === 0) {
+            self.on(name.substr(2), settings[name]);
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (self$$1._eventsRoot) {
-          for (parent$$1 = self$$1.parent(); !parentEventsRoot && parent$$1; parent$$1 = parent$$1.parent()) {
-            parentEventsRoot = parent$$1._eventsRoot;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (self._eventsRoot) {
+          for (parent = self.parent(); !parentEventsRoot && parent; parent = parent.parent()) {
+            parentEventsRoot = parent._eventsRoot;
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           if (parentEventsRoot) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            for (name$$1 in parentEventsRoot._nativeEvents) {
-              self$$1._nativeEvents[name$$1] = true;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            for (name in parentEventsRoot._nativeEvents) {
+              self._nativeEvents[name] = true;
</ins><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        bindPendingEvents(self$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        bindPendingEvents(self);
</ins><span class="cx" style="display: block; padding: 0 10px">         if (settings.style) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          elm = self$$1.getEl();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          elm = self.getEl();
</ins><span class="cx" style="display: block; padding: 0 10px">           if (elm) {
</span><span class="cx" style="display: block; padding: 0 10px">             elm.setAttribute('style', settings.style);
</span><span class="cx" style="display: block; padding: 0 10px">             elm.style.cssText = settings.style;
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (self$$1.settings.border) {
-          box = self$$1.borderBox;
-          self$$1.$el.css({
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (self.settings.border) {
+          box = self.borderBox;
+          self.$el.css({
</ins><span class="cx" style="display: block; padding: 0 10px">             'border-top-width': box.top,
</span><span class="cx" style="display: block; padding: 0 10px">             'border-right-width': box.right,
</span><span class="cx" style="display: block; padding: 0 10px">             'border-bottom-width': box.bottom,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2572,44 +2572,44 @@
</span><span class="cx" style="display: block; padding: 0 10px">             'border-left-width': box.left
</span><span class="cx" style="display: block; padding: 0 10px">           });
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var root = self$$1.getRoot();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var root = self.getRoot();
</ins><span class="cx" style="display: block; padding: 0 10px">         if (!root.controlIdLookup) {
</span><span class="cx" style="display: block; padding: 0 10px">           root.controlIdLookup = {};
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        root.controlIdLookup[self$$1._id] = self$$1;
-        for (var key in self$$1._aria) {
-          self$$1.aria(key, self$$1._aria[key]);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        root.controlIdLookup[self._id] = self;
+        for (var key in self._aria) {
+          self.aria(key, self._aria[key]);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (self$$1.state.get('visible') === false) {
-          self$$1.getEl().style.display = 'none';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (self.state.get('visible') === false) {
+          self.getEl().style.display = 'none';
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.bindStates();
-        self$$1.state.on('change:visible', function (e) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.bindStates();
+        self.state.on('change:visible', function (e) {
</ins><span class="cx" style="display: block; padding: 0 10px">           var state = e.value;
</span><span class="cx" style="display: block; padding: 0 10px">           var parentCtrl;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (self$$1.state.get('rendered')) {
-            self$$1.getEl().style.display = state === false ? 'none' : '';
-            self$$1.getEl().getBoundingClientRect();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (self.state.get('rendered')) {
+            self.getEl().style.display = state === false ? 'none' : '';
+            self.getEl().getBoundingClientRect();
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          parentCtrl = self$$1.parent();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          parentCtrl = self.parent();
</ins><span class="cx" style="display: block; padding: 0 10px">           if (parentCtrl) {
</span><span class="cx" style="display: block; padding: 0 10px">             parentCtrl._lastRect = null;
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.fire(state ? 'show' : 'hide');
-          ReflowQueue.add(self$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.fire(state ? 'show' : 'hide');
+          ReflowQueue.add(self);
</ins><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.fire('postrender', {}, false);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.fire('postrender', {}, false);
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       bindStates: function () {
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       scrollIntoView: function (align) {
</span><span class="cx" style="display: block; padding: 0 10px">         function getOffset(elm, rootElm) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          var x, y, parent$$1 = elm;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          var x, y, parent = elm;
</ins><span class="cx" style="display: block; padding: 0 10px">           x = y = 0;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          while (parent$$1 && parent$$1 !== rootElm && parent$$1.nodeType) {
-            x += parent$$1.offsetLeft || 0;
-            y += parent$$1.offsetTop || 0;
-            parent$$1 = parent$$1.offsetParent;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          while (parent && parent !== rootElm && parent.nodeType) {
+            x += parent.offsetLeft || 0;
+            y += parent.offsetTop || 0;
+            parent = parent.offsetParent;
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           return {
</span><span class="cx" style="display: block; padding: 0 10px">             x: x,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2659,20 +2659,20 @@
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       reflow: function () {
</span><span class="cx" style="display: block; padding: 0 10px">         ReflowQueue.remove(this);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var parent$$1 = this.parent();
-        if (parent$$1 && parent$$1._layout && !parent$$1._layout.isNative()) {
-          parent$$1.reflow();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var parent = this.parent();
+        if (parent && parent._layout && !parent._layout.isNative()) {
+          parent.reflow();
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         return this;
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    global$2.each('text title visible disabled active value'.split(' '), function (name$$1) {
-      proto$1[name$$1] = function (value) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    global$2.each('text title visible disabled active value'.split(' '), function (name) {
+      proto$1[name] = function (value) {
</ins><span class="cx" style="display: block; padding: 0 10px">         if (arguments.length === 0) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          return this.state.get(name$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          return this.state.get(name);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (typeof value !== 'undefined') {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          this.state.set(name$$1, value);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          this.state.set(name, value);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         return this;
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2682,12 +2682,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">       if (!obj._eventDispatcher) {
</span><span class="cx" style="display: block; padding: 0 10px">         obj._eventDispatcher = new global$b({
</span><span class="cx" style="display: block; padding: 0 10px">           scope: obj,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          toggleEvent: function (name$$1, state) {
-            if (state && global$b.isNative(name$$1)) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          toggleEvent: function (name, state) {
+            if (state && global$b.isNative(name)) {
</ins><span class="cx" style="display: block; padding: 0 10px">               if (!obj._nativeEvents) {
</span><span class="cx" style="display: block; padding: 0 10px">                 obj._nativeEvents = {};
</span><span class="cx" style="display: block; padding: 0 10px">               }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              obj._nativeEvents[name$$1] = true;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              obj._nativeEvents[name] = true;
</ins><span class="cx" style="display: block; padding: 0 10px">               if (obj.state.get('rendered')) {
</span><span class="cx" style="display: block; padding: 0 10px">                 bindPendingEvents(obj);
</span><span class="cx" style="display: block; padding: 0 10px">               }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2698,7 +2698,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return obj._eventDispatcher;
</span><span class="cx" style="display: block; padding: 0 10px">     }
</span><span class="cx" style="display: block; padding: 0 10px">     function bindPendingEvents(eventCtrl) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var i, l, parents, eventRootCtrl, nativeEvents, name$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var i, l, parents, eventRootCtrl, nativeEvents, name;
</ins><span class="cx" style="display: block; padding: 0 10px">       function delegate(e) {
</span><span class="cx" style="display: block; padding: 0 10px">         var control = eventCtrl.getParentCtrl(e.target);
</span><span class="cx" style="display: block; padding: 0 10px">         if (control) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2771,11 +2771,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">         if (!eventRootDelegates) {
</span><span class="cx" style="display: block; padding: 0 10px">           eventRootDelegates = eventRootCtrl._delegates = {};
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        for (name$$1 in nativeEvents) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        for (name in nativeEvents) {
</ins><span class="cx" style="display: block; padding: 0 10px">           if (!nativeEvents) {
</span><span class="cx" style="display: block; padding: 0 10px">             return false;
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (name$$1 === 'wheel' && !hasWheelEventSupport) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (name === 'wheel' && !hasWheelEventSupport) {
</ins><span class="cx" style="display: block; padding: 0 10px">             if (hasMouseWheelEventSupport) {
</span><span class="cx" style="display: block; padding: 0 10px">               global$9(eventCtrl.getEl()).on('mousewheel', fixWheelEvent);
</span><span class="cx" style="display: block; padding: 0 10px">             } else {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2783,16 +2783,16 @@
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">             continue;
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (name$$1 === 'mouseenter' || name$$1 === 'mouseleave') {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (name === 'mouseenter' || name === 'mouseleave') {
</ins><span class="cx" style="display: block; padding: 0 10px">             if (!eventRootCtrl._hasMouseEnter) {
</span><span class="cx" style="display: block; padding: 0 10px">               global$9(eventRootCtrl.getEl()).on('mouseleave', mouseLeaveHandler).on('mouseover', mouseEnterHandler);
</span><span class="cx" style="display: block; padding: 0 10px">               eventRootCtrl._hasMouseEnter = 1;
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          } else if (!eventRootDelegates[name$$1]) {
-            global$9(eventRootCtrl.getEl()).on(name$$1, delegate);
-            eventRootDelegates[name$$1] = true;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          } else if (!eventRootDelegates[name]) {
+            global$9(eventRootCtrl.getEl()).on(name, delegate);
+            eventRootDelegates[name] = true;
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          nativeEvents[name$$1] = false;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          nativeEvents[name] = false;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2808,9 +2808,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return node && node.nodeType === 1;
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       try {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        focusedElement = document.activeElement;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        focusedElement = domGlobals.document.activeElement;
</ins><span class="cx" style="display: block; padding: 0 10px">       } catch (ex) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        focusedElement = document.body;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        focusedElement = domGlobals.document.body;
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       focusedControl = root.getParentCtrl(focusedElement);
</span><span class="cx" style="display: block; padding: 0 10px">       function getRole(elm) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2821,17 +2821,17 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return null;
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       function getParentRole(elm) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var role, parent$$1 = elm || focusedElement;
-        while (parent$$1 = parent$$1.parentNode) {
-          if (role = getRole(parent$$1)) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var role, parent = elm || focusedElement;
+        while (parent = parent.parentNode) {
+          if (role = getRole(parent)) {
</ins><span class="cx" style="display: block; padding: 0 10px">             return role;
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      function getAriaProp(name$$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      function getAriaProp(name) {
</ins><span class="cx" style="display: block; padding: 0 10px">         var elm = focusedElement;
</span><span class="cx" style="display: block; padding: 0 10px">         if (isElement(elm)) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          return elm.getAttribute('aria-' + name$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          return elm.getAttribute('aria-' + name);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       function isTextInputElement(elm) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3289,9 +3289,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">     }
</span><span class="cx" style="display: block; padding: 0 10px">     function DragHelper (id, settings) {
</span><span class="cx" style="display: block; padding: 0 10px">       var $eventOverlay;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var doc = settings.document || document;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var doc = settings.document || domGlobals.document;
</ins><span class="cx" style="display: block; padding: 0 10px">       var downButton;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var start, stop$$1, drag, startX, startY;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var start, stop, drag, startX, startY;
</ins><span class="cx" style="display: block; padding: 0 10px">       settings = settings || {};
</span><span class="cx" style="display: block; padding: 0 10px">       var handleElement = doc.getElementById(settings.handle || id);
</span><span class="cx" style="display: block; padding: 0 10px">       start = function (e) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3303,8 +3303,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">         handleElm = handleElement;
</span><span class="cx" style="display: block; padding: 0 10px">         startX = e.screenX;
</span><span class="cx" style="display: block; padding: 0 10px">         startY = e.screenY;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (window.getComputedStyle) {
-          cursor = window.getComputedStyle(handleElm, null).getPropertyValue('cursor');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (domGlobals.window.getComputedStyle) {
+          cursor = domGlobals.window.getComputedStyle(handleElm, null).getPropertyValue('cursor');
</ins><span class="cx" style="display: block; padding: 0 10px">         } else {
</span><span class="cx" style="display: block; padding: 0 10px">           cursor = handleElm.runtimeStyle.cursor;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3318,13 +3318,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">           opacity: 0.0001,
</span><span class="cx" style="display: block; padding: 0 10px">           cursor: cursor
</span><span class="cx" style="display: block; padding: 0 10px">         }).appendTo(doc.body);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        global$9(doc).on('mousemove touchmove', drag).on('mouseup touchend', stop$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        global$9(doc).on('mousemove touchmove', drag).on('mouseup touchend', stop);
</ins><span class="cx" style="display: block; padding: 0 10px">         settings.start(e);
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       drag = function (e) {
</span><span class="cx" style="display: block; padding: 0 10px">         updateWithTouchData(e);
</span><span class="cx" style="display: block; padding: 0 10px">         if (e.button !== downButton) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          return stop$$1(e);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          return stop(e);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         e.deltaX = e.screenX - startX;
</span><span class="cx" style="display: block; padding: 0 10px">         e.deltaY = e.screenY - startY;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3331,9 +3331,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">         e.preventDefault();
</span><span class="cx" style="display: block; padding: 0 10px">         settings.drag(e);
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      stop$$1 = function (e) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      stop = function (e) {
</ins><span class="cx" style="display: block; padding: 0 10px">         updateWithTouchData(e);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        global$9(doc).off('mousemove touchmove', drag).off('mouseup touchend', stop$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        global$9(doc).off('mousemove touchmove', drag).off('mouseup touchend', stop);
</ins><span class="cx" style="display: block; padding: 0 10px">         $eventOverlay.remove();
</span><span class="cx" style="display: block; padding: 0 10px">         if (settings.stop) {
</span><span class="cx" style="display: block; padding: 0 10px">           settings.stop(e);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3490,9 +3490,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var visiblePanels = [];
</span><span class="cx" style="display: block; padding: 0 10px">     var zOrder = [];
</span><span class="cx" style="display: block; padding: 0 10px">     var hasModal;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    function isChildOf(ctrl, parent$$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    function isChildOf(ctrl, parent) {
</ins><span class="cx" style="display: block; padding: 0 10px">       while (ctrl) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (ctrl === parent$$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (ctrl === parent) {
</ins><span class="cx" style="display: block; padding: 0 10px">           return true;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         ctrl = ctrl.parent();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3523,7 +3523,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           skipOrHidePanels(e);
</span><span class="cx" style="display: block; padding: 0 10px">         };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        global$9(document).on('click touchstart', documentClickHandler);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        global$9(domGlobals.document).on('click touchstart', documentClickHandler);
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     }
</span><span class="cx" style="display: block; padding: 0 10px">     function bindDocumentScrollHandler() {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3535,32 +3535,32 @@
</span><span class="cx" style="display: block; padding: 0 10px">             repositionPanel(visiblePanels[i]);
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        global$9(window).on('scroll', documentScrollHandler);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        global$9(domGlobals.window).on('scroll', documentScrollHandler);
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     }
</span><span class="cx" style="display: block; padding: 0 10px">     function bindWindowResizeHandler() {
</span><span class="cx" style="display: block; padding: 0 10px">       if (!windowResizeHandler) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var docElm_1 = document.documentElement;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var docElm_1 = domGlobals.document.documentElement;
</ins><span class="cx" style="display: block; padding: 0 10px">         var clientWidth_1 = docElm_1.clientWidth, clientHeight_1 = docElm_1.clientHeight;
</span><span class="cx" style="display: block; padding: 0 10px">         windowResizeHandler = function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (!document.all || clientWidth_1 !== docElm_1.clientWidth || clientHeight_1 !== docElm_1.clientHeight) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (!domGlobals.document.all || clientWidth_1 !== docElm_1.clientWidth || clientHeight_1 !== docElm_1.clientHeight) {
</ins><span class="cx" style="display: block; padding: 0 10px">             clientWidth_1 = docElm_1.clientWidth;
</span><span class="cx" style="display: block; padding: 0 10px">             clientHeight_1 = docElm_1.clientHeight;
</span><span class="cx" style="display: block; padding: 0 10px">             FloatPanel.hideAll();
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        global$9(window).on('resize', windowResizeHandler);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        global$9(domGlobals.window).on('resize', windowResizeHandler);
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     }
</span><span class="cx" style="display: block; padding: 0 10px">     function repositionPanel(panel) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var scrollY$$1 = funcs.getViewPort().y;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var scrollY = funcs.getViewPort().y;
</ins><span class="cx" style="display: block; padding: 0 10px">       function toggleFixedChildPanels(fixed, deltaY) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var parent$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var parent;
</ins><span class="cx" style="display: block; padding: 0 10px">         for (var i = 0; i < visiblePanels.length; i++) {
</span><span class="cx" style="display: block; padding: 0 10px">           if (visiblePanels[i] !== panel) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            parent$$1 = visiblePanels[i].parent();
-            while (parent$$1 && (parent$$1 = parent$$1.parent())) {
-              if (parent$$1 === panel) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            parent = visiblePanels[i].parent();
+            while (parent && (parent = parent.parent())) {
+              if (parent === panel) {
</ins><span class="cx" style="display: block; padding: 0 10px">                 visiblePanels[i].fixed(fixed).moveBy(0, deltaY).repaint();
</span><span class="cx" style="display: block; padding: 0 10px">               }
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3570,14 +3570,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">       if (panel.settings.autofix) {
</span><span class="cx" style="display: block; padding: 0 10px">         if (!panel.state.get('fixed')) {
</span><span class="cx" style="display: block; padding: 0 10px">           panel._autoFixY = panel.layoutRect().y;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (panel._autoFixY < scrollY$$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (panel._autoFixY < scrollY) {
</ins><span class="cx" style="display: block; padding: 0 10px">             panel.fixed(true).layoutRect({ y: 0 }).repaint();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            toggleFixedChildPanels(true, scrollY$$1 - panel._autoFixY);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            toggleFixedChildPanels(true, scrollY - panel._autoFixY);
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (panel._autoFixY > scrollY$$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (panel._autoFixY > scrollY) {
</ins><span class="cx" style="display: block; padding: 0 10px">             panel.fixed(false).layoutRect({ y: panel._autoFixY }).repaint();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            toggleFixedChildPanels(false, panel._autoFixY - scrollY$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            toggleFixedChildPanels(false, panel._autoFixY - scrollY);
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3620,83 +3620,83 @@
</span><span class="cx" style="display: block; padding: 0 10px">         Resizable
</span><span class="cx" style="display: block; padding: 0 10px">       ],
</span><span class="cx" style="display: block; padding: 0 10px">       init: function (settings) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        self$$1._super(settings);
-        self$$1._eventsRoot = self$$1;
-        self$$1.classes.add('floatpanel');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        self._super(settings);
+        self._eventsRoot = self;
+        self.classes.add('floatpanel');
</ins><span class="cx" style="display: block; padding: 0 10px">         if (settings.autohide) {
</span><span class="cx" style="display: block; padding: 0 10px">           bindDocumentClickHandler();
</span><span class="cx" style="display: block; padding: 0 10px">           bindWindowResizeHandler();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          visiblePanels.push(self$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          visiblePanels.push(self);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (settings.autofix) {
</span><span class="cx" style="display: block; padding: 0 10px">           bindDocumentScrollHandler();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.on('move', function () {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.on('move', function () {
</ins><span class="cx" style="display: block; padding: 0 10px">             repositionPanel(this);
</span><span class="cx" style="display: block; padding: 0 10px">           });
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.on('postrender show', function (e) {
-          if (e.control === self$$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.on('postrender show', function (e) {
+          if (e.control === self) {
</ins><span class="cx" style="display: block; padding: 0 10px">             var $modalBlockEl_1;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            var prefix_1 = self$$1.classPrefix;
-            if (self$$1.modal && !hasModal) {
-              $modalBlockEl_1 = global$9('#' + prefix_1 + 'modal-block', self$$1.getContainerElm());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            var prefix_1 = self.classPrefix;
+            if (self.modal && !hasModal) {
+              $modalBlockEl_1 = global$9('#' + prefix_1 + 'modal-block', self.getContainerElm());
</ins><span class="cx" style="display: block; padding: 0 10px">               if (!$modalBlockEl_1[0]) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $modalBlockEl_1 = global$9('<div id="' + prefix_1 + 'modal-block" class="' + prefix_1 + 'reset ' + prefix_1 + 'fade"></div>').appendTo(self$$1.getContainerElm());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $modalBlockEl_1 = global$9('<div id="' + prefix_1 + 'modal-block" class="' + prefix_1 + 'reset ' + prefix_1 + 'fade"></div>').appendTo(self.getContainerElm());
</ins><span class="cx" style="display: block; padding: 0 10px">               }
</span><span class="cx" style="display: block; padding: 0 10px">               global$7.setTimeout(function () {
</span><span class="cx" style="display: block; padding: 0 10px">                 $modalBlockEl_1.addClass(prefix_1 + 'in');
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                global$9(self$$1.getEl()).addClass(prefix_1 + 'in');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                global$9(self.getEl()).addClass(prefix_1 + 'in');
</ins><span class="cx" style="display: block; padding: 0 10px">               });
</span><span class="cx" style="display: block; padding: 0 10px">               hasModal = true;
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            addRemove(true, self$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            addRemove(true, self);
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.on('show', function () {
-          self$$1.parents().each(function (ctrl) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.on('show', function () {
+          self.parents().each(function (ctrl) {
</ins><span class="cx" style="display: block; padding: 0 10px">             if (ctrl.state.get('fixed')) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              self$$1.fixed(true);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              self.fixed(true);
</ins><span class="cx" style="display: block; padding: 0 10px">               return false;
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           });
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><span class="cx" style="display: block; padding: 0 10px">         if (settings.popover) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1._preBodyHtml = '<div class="' + self$$1.classPrefix + 'arrow"></div>';
-          self$$1.classes.add('popover').add('bottom').add(self$$1.isRtl() ? 'end' : 'start');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self._preBodyHtml = '<div class="' + self.classPrefix + 'arrow"></div>';
+          self.classes.add('popover').add('bottom').add(self.isRtl() ? 'end' : 'start');
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.aria('label', settings.ariaLabel);
-        self$$1.aria('labelledby', self$$1._id);
-        self$$1.aria('describedby', self$$1.describedBy || self$$1._id + '-none');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.aria('label', settings.ariaLabel);
+        self.aria('labelledby', self._id);
+        self.aria('describedby', self.describedBy || self._id + '-none');
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       fixed: function (state) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        if (self$$1.state.get('fixed') !== state) {
-          if (self$$1.state.get('rendered')) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        if (self.state.get('fixed') !== state) {
+          if (self.state.get('rendered')) {
</ins><span class="cx" style="display: block; padding: 0 10px">             var viewport = funcs.getViewPort();
</span><span class="cx" style="display: block; padding: 0 10px">             if (state) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              self$$1.layoutRect().y -= viewport.y;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              self.layoutRect().y -= viewport.y;
</ins><span class="cx" style="display: block; padding: 0 10px">             } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              self$$1.layoutRect().y += viewport.y;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              self.layoutRect().y += viewport.y;
</ins><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.classes.toggle('fixed', state);
-          self$$1.state.set('fixed', state);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.classes.toggle('fixed', state);
+          self.state.set('fixed', state);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return self;
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       show: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">         var i;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var state = self$$1._super();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var state = self._super();
</ins><span class="cx" style="display: block; padding: 0 10px">         i = visiblePanels.length;
</span><span class="cx" style="display: block; padding: 0 10px">         while (i--) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (visiblePanels[i] === self$$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (visiblePanels[i] === self) {
</ins><span class="cx" style="display: block; padding: 0 10px">             break;
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (i === -1) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          visiblePanels.push(self$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          visiblePanels.push(self);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         return state;
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3709,12 +3709,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">         FloatPanel.hideAll();
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       close: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        if (!self$$1.fire('close').isDefaultPrevented()) {
-          self$$1.remove();
-          addRemove(false, self$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        if (!self.fire('close').isDefaultPrevented()) {
+          self.remove();
+          addRemove(false, self);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return self;
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       remove: function () {
</span><span class="cx" style="display: block; padding: 0 10px">         removeVisiblePanel(this);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3721,11 +3721,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">         this._super();
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       postRender: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        if (self$$1.settings.bodyRole) {
-          this.getEl('body').setAttribute('role', self$$1.settings.bodyRole);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        if (self.settings.bodyRole) {
+          this.getEl('body').setAttribute('role', self.settings.bodyRole);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return self$$1._super();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return self._super();
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     });
</span><span class="cx" style="display: block; padding: 0 10px">     FloatPanel.hideAll = function () {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4227,9 +4227,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return;
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       if (!viewport) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        viewport = document.createElement('meta');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        viewport = domGlobals.document.createElement('meta');
</ins><span class="cx" style="display: block; padding: 0 10px">         viewport.setAttribute('name', 'viewport');
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        document.getElementsByTagName('head')[0].appendChild(viewport);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        domGlobals.document.getElementsByTagName('head')[0].appendChild(viewport);
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       contentValue = viewport.getAttribute('content');
</span><span class="cx" style="display: block; padding: 0 10px">       if (contentValue && typeof oldMetaValue !== 'undefined') {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4240,8 +4240,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">     function toggleBodyFullScreenClasses(classPrefix, state) {
</span><span class="cx" style="display: block; padding: 0 10px">       if (checkFullscreenWindows() && state === false) {
</span><span class="cx" style="display: block; padding: 0 10px">         global$9([
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          document.documentElement,
-          document.body
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          domGlobals.document.documentElement,
+          domGlobals.document.body
</ins><span class="cx" style="display: block; padding: 0 10px">         ]).removeClass(classPrefix + 'fullscreen');
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4256,17 +4256,17 @@
</span><span class="cx" style="display: block; padding: 0 10px">     function handleWindowResize() {
</span><span class="cx" style="display: block; padding: 0 10px">       if (!global$8.desktop) {
</span><span class="cx" style="display: block; padding: 0 10px">         var lastSize_1 = {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          w: window.innerWidth,
-          h: window.innerHeight
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          w: domGlobals.window.innerWidth,
+          h: domGlobals.window.innerHeight
</ins><span class="cx" style="display: block; padding: 0 10px">         };
</span><span class="cx" style="display: block; padding: 0 10px">         global$7.setInterval(function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          var w = window.innerWidth, h = window.innerHeight;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          var w = domGlobals.window.innerWidth, h = domGlobals.window.innerHeight;
</ins><span class="cx" style="display: block; padding: 0 10px">           if (lastSize_1.w !== w || lastSize_1.h !== h) {
</span><span class="cx" style="display: block; padding: 0 10px">             lastSize_1 = {
</span><span class="cx" style="display: block; padding: 0 10px">               w: w,
</span><span class="cx" style="display: block; padding: 0 10px">               h: h
</span><span class="cx" style="display: block; padding: 0 10px">             };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            global$9(window).trigger('resize');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            global$9(domGlobals.window).trigger('resize');
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }, 100);
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4279,9 +4279,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">           windows[i].moveTo(windows[i].settings.x || Math.max(0, rect.w / 2 - layoutRect.w / 2), windows[i].settings.y || Math.max(0, rect.h / 2 - layoutRect.h / 2));
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      global$9(window).on('resize', reposition);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      global$9(domGlobals.window).on('resize', reposition);
</ins><span class="cx" style="display: block; padding: 0 10px">     }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var Window$$1 = FloatPanel.extend({
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var Window = FloatPanel.extend({
</ins><span class="cx" style="display: block; padding: 0 10px">       modal: true,
</span><span class="cx" style="display: block; padding: 0 10px">       Defaults: {
</span><span class="cx" style="display: block; padding: 0 10px">         border: 1,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4298,61 +4298,61 @@
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       init: function (settings) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        self$$1._super(settings);
-        if (self$$1.isRtl()) {
-          self$$1.classes.add('rtl');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        self._super(settings);
+        if (self.isRtl()) {
+          self.classes.add('rtl');
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.classes.add('window');
-        self$$1.bodyClasses.add('window-body');
-        self$$1.state.set('fixed', true);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.classes.add('window');
+        self.bodyClasses.add('window-body');
+        self.state.set('fixed', true);
</ins><span class="cx" style="display: block; padding: 0 10px">         if (settings.buttons) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.statusbar = new Panel({
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.statusbar = new Panel({
</ins><span class="cx" style="display: block; padding: 0 10px">             layout: 'flex',
</span><span class="cx" style="display: block; padding: 0 10px">             border: '1 0 0 0',
</span><span class="cx" style="display: block; padding: 0 10px">             spacing: 3,
</span><span class="cx" style="display: block; padding: 0 10px">             padding: 10,
</span><span class="cx" style="display: block; padding: 0 10px">             align: 'center',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            pack: self$$1.isRtl() ? 'start' : 'end',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            pack: self.isRtl() ? 'start' : 'end',
</ins><span class="cx" style="display: block; padding: 0 10px">             defaults: { type: 'button' },
</span><span class="cx" style="display: block; padding: 0 10px">             items: settings.buttons
</span><span class="cx" style="display: block; padding: 0 10px">           });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.statusbar.classes.add('foot');
-          self$$1.statusbar.parent(self$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.statusbar.classes.add('foot');
+          self.statusbar.parent(self);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.on('click', function (e) {
-          var closeClass = self$$1.classPrefix + 'close';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.on('click', function (e) {
+          var closeClass = self.classPrefix + 'close';
</ins><span class="cx" style="display: block; padding: 0 10px">           if (funcs.hasClass(e.target, closeClass) || funcs.hasClass(e.target.parentNode, closeClass)) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            self$$1.close();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            self.close();
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.on('cancel', function () {
-          self$$1.close();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.on('cancel', function () {
+          self.close();
</ins><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.on('move', function (e) {
-          if (e.control === self$$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.on('move', function (e) {
+          if (e.control === self) {
</ins><span class="cx" style="display: block; padding: 0 10px">             FloatPanel.hideAll();
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.aria('describedby', self$$1.describedBy || self$$1._id + '-none');
-        self$$1.aria('label', settings.title);
-        self$$1._fullscreen = false;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.aria('describedby', self.describedBy || self._id + '-none');
+        self.aria('label', settings.title);
+        self._fullscreen = false;
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       recalc: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        var statusbar$$1 = self$$1.statusbar;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        var statusbar = self.statusbar;
</ins><span class="cx" style="display: block; padding: 0 10px">         var layoutRect, width, x, needsRecalc;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (self$$1._fullscreen) {
-          self$$1.layoutRect(funcs.getWindowSize());
-          self$$1.layoutRect().contentH = self$$1.layoutRect().innerH;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (self._fullscreen) {
+          self.layoutRect(funcs.getWindowSize());
+          self.layoutRect().contentH = self.layoutRect().innerH;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1._super();
-        layoutRect = self$$1.layoutRect();
-        if (self$$1.settings.title && !self$$1._fullscreen) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self._super();
+        layoutRect = self.layoutRect();
+        if (self.settings.title && !self._fullscreen) {
</ins><span class="cx" style="display: block; padding: 0 10px">           width = layoutRect.headerW;
</span><span class="cx" style="display: block; padding: 0 10px">           if (width > layoutRect.w) {
</span><span class="cx" style="display: block; padding: 0 10px">             x = layoutRect.x - Math.max(0, width / 2);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            self$$1.layoutRect({
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            self.layoutRect({
</ins><span class="cx" style="display: block; padding: 0 10px">               w: width,
</span><span class="cx" style="display: block; padding: 0 10px">               x: x
</span><span class="cx" style="display: block; padding: 0 10px">             });
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4359,12 +4359,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">             needsRecalc = true;
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (statusbar$$1) {
-          statusbar$$1.layoutRect({ w: self$$1.layoutRect().innerW }).recalc();
-          width = statusbar$$1.layoutRect().minW + layoutRect.deltaW;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (statusbar) {
+          statusbar.layoutRect({ w: self.layoutRect().innerW }).recalc();
+          width = statusbar.layoutRect().minW + layoutRect.deltaW;
</ins><span class="cx" style="display: block; padding: 0 10px">           if (width > layoutRect.w) {
</span><span class="cx" style="display: block; padding: 0 10px">             x = layoutRect.x - Math.max(0, width - layoutRect.w);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            self$$1.layoutRect({
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            self.layoutRect({
</ins><span class="cx" style="display: block; padding: 0 10px">               w: width,
</span><span class="cx" style="display: block; padding: 0 10px">               x: x
</span><span class="cx" style="display: block; padding: 0 10px">             });
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4372,141 +4372,141 @@
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (needsRecalc) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.recalc();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.recalc();
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       initLayoutRect: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        var layoutRect = self$$1._super();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        var layoutRect = self._super();
</ins><span class="cx" style="display: block; padding: 0 10px">         var deltaH = 0, headEl;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (self$$1.settings.title && !self$$1._fullscreen) {
-          headEl = self$$1.getEl('head');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (self.settings.title && !self._fullscreen) {
+          headEl = self.getEl('head');
</ins><span class="cx" style="display: block; padding: 0 10px">           var size = funcs.getSize(headEl);
</span><span class="cx" style="display: block; padding: 0 10px">           layoutRect.headerW = size.width;
</span><span class="cx" style="display: block; padding: 0 10px">           layoutRect.headerH = size.height;
</span><span class="cx" style="display: block; padding: 0 10px">           deltaH += layoutRect.headerH;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (self$$1.statusbar) {
-          deltaH += self$$1.statusbar.layoutRect().h;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (self.statusbar) {
+          deltaH += self.statusbar.layoutRect().h;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         layoutRect.deltaH += deltaH;
</span><span class="cx" style="display: block; padding: 0 10px">         layoutRect.minH += deltaH;
</span><span class="cx" style="display: block; padding: 0 10px">         layoutRect.h += deltaH;
</span><span class="cx" style="display: block; padding: 0 10px">         var rect = funcs.getWindowSize();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        layoutRect.x = self$$1.settings.x || Math.max(0, rect.w / 2 - layoutRect.w / 2);
-        layoutRect.y = self$$1.settings.y || Math.max(0, rect.h / 2 - layoutRect.h / 2);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        layoutRect.x = self.settings.x || Math.max(0, rect.w / 2 - layoutRect.w / 2);
+        layoutRect.y = self.settings.y || Math.max(0, rect.h / 2 - layoutRect.h / 2);
</ins><span class="cx" style="display: block; padding: 0 10px">         return layoutRect;
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       renderHtml: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this, layout = self$$1._layout, id = self$$1._id, prefix = self$$1.classPrefix;
-        var settings = self$$1.settings;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this, layout = self._layout, id = self._id, prefix = self.classPrefix;
+        var settings = self.settings;
</ins><span class="cx" style="display: block; padding: 0 10px">         var headerHtml = '', footerHtml = '', html = settings.html;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.preRender();
-        layout.preRender(self$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.preRender();
+        layout.preRender(self);
</ins><span class="cx" style="display: block; padding: 0 10px">         if (settings.title) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          headerHtml = '<div id="' + id + '-head" class="' + prefix + 'window-head">' + '<div id="' + id + '-title" class="' + prefix + 'title">' + self$$1.encode(settings.title) + '</div>' + '<div id="' + id + '-dragh" class="' + prefix + 'dragh"></div>' + '<button type="button" class="' + prefix + 'close" aria-hidden="true">' + '<i class="mce-ico mce-i-remove"></i>' + '</button>' + '</div>';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          headerHtml = '<div id="' + id + '-head" class="' + prefix + 'window-head">' + '<div id="' + id + '-title" class="' + prefix + 'title">' + self.encode(settings.title) + '</div>' + '<div id="' + id + '-dragh" class="' + prefix + 'dragh"></div>' + '<button type="button" class="' + prefix + 'close" aria-hidden="true">' + '<i class="mce-ico mce-i-remove"></i>' + '</button>' + '</div>';
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (settings.url) {
</span><span class="cx" style="display: block; padding: 0 10px">           html = '<iframe src="' + settings.url + '" tabindex="-1"></iframe>';
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (typeof html === 'undefined') {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          html = layout.renderHtml(self$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          html = layout.renderHtml(self);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (self$$1.statusbar) {
-          footerHtml = self$$1.statusbar.renderHtml();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (self.statusbar) {
+          footerHtml = self.statusbar.renderHtml();
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return '<div id="' + id + '" class="' + self$$1.classes + '" hidefocus="1">' + '<div class="' + self$$1.classPrefix + 'reset" role="application">' + headerHtml + '<div id="' + id + '-body" class="' + self$$1.bodyClasses + '">' + html + '</div>' + footerHtml + '</div>' + '</div>';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return '<div id="' + id + '" class="' + self.classes + '" hidefocus="1">' + '<div class="' + self.classPrefix + 'reset" role="application">' + headerHtml + '<div id="' + id + '-body" class="' + self.bodyClasses + '">' + html + '</div>' + footerHtml + '</div>' + '</div>';
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       fullscreen: function (state) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        var documentElement = document.documentElement;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        var documentElement = domGlobals.document.documentElement;
</ins><span class="cx" style="display: block; padding: 0 10px">         var slowRendering;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var prefix = self$$1.classPrefix;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var prefix = self.classPrefix;
</ins><span class="cx" style="display: block; padding: 0 10px">         var layoutRect;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (state !== self$$1._fullscreen) {
-          global$9(window).on('resize', function () {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (state !== self._fullscreen) {
+          global$9(domGlobals.window).on('resize', function () {
</ins><span class="cx" style="display: block; padding: 0 10px">             var time;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            if (self$$1._fullscreen) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            if (self._fullscreen) {
</ins><span class="cx" style="display: block; padding: 0 10px">               if (!slowRendering) {
</span><span class="cx" style="display: block; padding: 0 10px">                 time = new Date().getTime();
</span><span class="cx" style="display: block; padding: 0 10px">                 var rect = funcs.getWindowSize();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                self$$1.moveTo(0, 0).resizeTo(rect.w, rect.h);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                self.moveTo(0, 0).resizeTo(rect.w, rect.h);
</ins><span class="cx" style="display: block; padding: 0 10px">                 if (new Date().getTime() - time > 50) {
</span><span class="cx" style="display: block; padding: 0 10px">                   slowRendering = true;
</span><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px">               } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if (!self$$1._timer) {
-                  self$$1._timer = global$7.setTimeout(function () {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                if (!self._timer) {
+                  self._timer = global$7.setTimeout(function () {
</ins><span class="cx" style="display: block; padding: 0 10px">                     var rect = funcs.getWindowSize();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                    self$$1.moveTo(0, 0).resizeTo(rect.w, rect.h);
-                    self$$1._timer = 0;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                    self.moveTo(0, 0).resizeTo(rect.w, rect.h);
+                    self._timer = 0;
</ins><span class="cx" style="display: block; padding: 0 10px">                   }, 50);
</span><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px">               }
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          layoutRect = self$$1.layoutRect();
-          self$$1._fullscreen = state;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          layoutRect = self.layoutRect();
+          self._fullscreen = state;
</ins><span class="cx" style="display: block; padding: 0 10px">           if (!state) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            self$$1.borderBox = BoxUtils.parseBox(self$$1.settings.border);
-            self$$1.getEl('head').style.display = '';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            self.borderBox = BoxUtils.parseBox(self.settings.border);
+            self.getEl('head').style.display = '';
</ins><span class="cx" style="display: block; padding: 0 10px">             layoutRect.deltaH += layoutRect.headerH;
</span><span class="cx" style="display: block; padding: 0 10px">             global$9([
</span><span class="cx" style="display: block; padding: 0 10px">               documentElement,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              document.body
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              domGlobals.document.body
</ins><span class="cx" style="display: block; padding: 0 10px">             ]).removeClass(prefix + 'fullscreen');
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            self$$1.classes.remove('fullscreen');
-            self$$1.moveTo(self$$1._initial.x, self$$1._initial.y).resizeTo(self$$1._initial.w, self$$1._initial.h);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            self.classes.remove('fullscreen');
+            self.moveTo(self._initial.x, self._initial.y).resizeTo(self._initial.w, self._initial.h);
</ins><span class="cx" style="display: block; padding: 0 10px">           } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            self$$1._initial = {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            self._initial = {
</ins><span class="cx" style="display: block; padding: 0 10px">               x: layoutRect.x,
</span><span class="cx" style="display: block; padding: 0 10px">               y: layoutRect.y,
</span><span class="cx" style="display: block; padding: 0 10px">               w: layoutRect.w,
</span><span class="cx" style="display: block; padding: 0 10px">               h: layoutRect.h
</span><span class="cx" style="display: block; padding: 0 10px">             };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            self$$1.borderBox = BoxUtils.parseBox('0');
-            self$$1.getEl('head').style.display = 'none';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            self.borderBox = BoxUtils.parseBox('0');
+            self.getEl('head').style.display = 'none';
</ins><span class="cx" style="display: block; padding: 0 10px">             layoutRect.deltaH -= layoutRect.headerH + 2;
</span><span class="cx" style="display: block; padding: 0 10px">             global$9([
</span><span class="cx" style="display: block; padding: 0 10px">               documentElement,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              document.body
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              domGlobals.document.body
</ins><span class="cx" style="display: block; padding: 0 10px">             ]).addClass(prefix + 'fullscreen');
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            self$$1.classes.add('fullscreen');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            self.classes.add('fullscreen');
</ins><span class="cx" style="display: block; padding: 0 10px">             var rect = funcs.getWindowSize();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            self$$1.moveTo(0, 0).resizeTo(rect.w, rect.h);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            self.moveTo(0, 0).resizeTo(rect.w, rect.h);
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return self$$1.reflow();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return self.reflow();
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       postRender: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">         var startPos;
</span><span class="cx" style="display: block; padding: 0 10px">         setTimeout(function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.classes.add('in');
-          self$$1.fire('open');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.classes.add('in');
+          self.fire('open');
</ins><span class="cx" style="display: block; padding: 0 10px">         }, 0);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1._super();
-        if (self$$1.statusbar) {
-          self$$1.statusbar.postRender();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self._super();
+        if (self.statusbar) {
+          self.statusbar.postRender();
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.focus();
-        this.dragHelper = new DragHelper(self$$1._id + '-dragh', {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.focus();
+        this.dragHelper = new DragHelper(self._id + '-dragh', {
</ins><span class="cx" style="display: block; padding: 0 10px">           start: function () {
</span><span class="cx" style="display: block; padding: 0 10px">             startPos = {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              x: self$$1.layoutRect().x,
-              y: self$$1.layoutRect().y
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              x: self.layoutRect().x,
+              y: self.layoutRect().y
</ins><span class="cx" style="display: block; padding: 0 10px">             };
</span><span class="cx" style="display: block; padding: 0 10px">           },
</span><span class="cx" style="display: block; padding: 0 10px">           drag: function (e) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            self$$1.moveTo(startPos.x + e.deltaX, startPos.y + e.deltaY);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            self.moveTo(startPos.x + e.deltaX, startPos.y + e.deltaY);
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.on('submit', function (e) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.on('submit', function (e) {
</ins><span class="cx" style="display: block; padding: 0 10px">           if (!e.isDefaultPrevented()) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            self$$1.close();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            self.close();
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        windows.push(self$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        windows.push(self);
</ins><span class="cx" style="display: block; padding: 0 10px">         toggleFullScreenState(true);
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       submit: function () {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4513,17 +4513,17 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return this.fire('submit', { data: this.toJSON() });
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       remove: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">         var i;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.dragHelper.destroy();
-        self$$1._super();
-        if (self$$1.statusbar) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.dragHelper.destroy();
+        self._super();
+        if (self.statusbar) {
</ins><span class="cx" style="display: block; padding: 0 10px">           this.statusbar.remove();
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        toggleBodyFullScreenClasses(self$$1.classPrefix, false);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        toggleBodyFullScreenClasses(self.classPrefix, false);
</ins><span class="cx" style="display: block; padding: 0 10px">         i = windows.length;
</span><span class="cx" style="display: block; padding: 0 10px">         while (i--) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (windows[i] === self$$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (windows[i] === self) {
</ins><span class="cx" style="display: block; padding: 0 10px">             windows.splice(i, 1);
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4536,7 +4536,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     });
</span><span class="cx" style="display: block; padding: 0 10px">     handleWindowResize();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var MessageBox = Window$$1.extend({
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var MessageBox = Window.extend({
</ins><span class="cx" style="display: block; padding: 0 10px">       init: function (settings) {
</span><span class="cx" style="display: block; padding: 0 10px">         settings = {
</span><span class="cx" style="display: block; padding: 0 10px">           border: 1,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4569,7 +4569,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">           var buttons;
</span><span class="cx" style="display: block; padding: 0 10px">           var callback = settings.callback || function () {
</span><span class="cx" style="display: block; padding: 0 10px">           };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          function createButton(text, status$$1, primary) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          function createButton(text, status, primary) {
</ins><span class="cx" style="display: block; padding: 0 10px">             return {
</span><span class="cx" style="display: block; padding: 0 10px">               type: 'button',
</span><span class="cx" style="display: block; padding: 0 10px">               text: text,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4576,7 +4576,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">               subtype: primary ? 'primary' : '',
</span><span class="cx" style="display: block; padding: 0 10px">               onClick: function (e) {
</span><span class="cx" style="display: block; padding: 0 10px">                 e.control.parents()[1].close();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                callback(status$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                callback(status);
</ins><span class="cx" style="display: block; padding: 0 10px">               }
</span><span class="cx" style="display: block; padding: 0 10px">             };
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4601,7 +4601,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">             buttons = [createButton('Ok', true, true)];
</span><span class="cx" style="display: block; padding: 0 10px">             break;
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          return new Window$$1({
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          return new Window({
</ins><span class="cx" style="display: block; padding: 0 10px">             padding: 20,
</span><span class="cx" style="display: block; padding: 0 10px">             x: settings.x,
</span><span class="cx" style="display: block; padding: 0 10px">             y: settings.y,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4627,7 +4627,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">             onCancel: function () {
</span><span class="cx" style="display: block; padding: 0 10px">               callback(false);
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          }).renderTo(document.body).reflow();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          }).renderTo(domGlobals.document.body).reflow();
</ins><span class="cx" style="display: block; padding: 0 10px">         },
</span><span class="cx" style="display: block; padding: 0 10px">         alert: function (settings, callback) {
</span><span class="cx" style="display: block; padding: 0 10px">           if (typeof settings === 'string') {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4648,7 +4648,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     });
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     function WindowManagerImpl (editor) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var open$$1 = function (args, params, closeCallback) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var open = function (args, params, closeCallback) {
</ins><span class="cx" style="display: block; padding: 0 10px">         var win;
</span><span class="cx" style="display: block; padding: 0 10px">         args.title = args.title || ' ';
</span><span class="cx" style="display: block; padding: 0 10px">         args.url = args.url || args.file;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4682,7 +4682,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           ];
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        win = new Window$$1(args);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        win = new Window(args);
</ins><span class="cx" style="display: block; padding: 0 10px">         win.on('close', function () {
</span><span class="cx" style="display: block; padding: 0 10px">           closeCallback(win);
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4689,9 +4689,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">         if (args.data) {
</span><span class="cx" style="display: block; padding: 0 10px">           win.on('postRender', function () {
</span><span class="cx" style="display: block; padding: 0 10px">             this.find('*').each(function (ctrl) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              var name$$1 = ctrl.name();
-              if (name$$1 in args.data) {
-                ctrl.value(args.data[name$$1]);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              var name = ctrl.name();
+              if (name in args.data) {
+                ctrl.value(args.data[name]);
</ins><span class="cx" style="display: block; padding: 0 10px">               }
</span><span class="cx" style="display: block; padding: 0 10px">             });
</span><span class="cx" style="display: block; padding: 0 10px">           });
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4698,10 +4698,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         win.features = args || {};
</span><span class="cx" style="display: block; padding: 0 10px">         win.params = params || {};
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        win = win.renderTo(document.body).reflow();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        win = win.renderTo(domGlobals.document.body).reflow();
</ins><span class="cx" style="display: block; padding: 0 10px">         return win;
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var alert$$1 = function (message, choiceCallback, closeCallback) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var alert = function (message, choiceCallback, closeCallback) {
</ins><span class="cx" style="display: block; padding: 0 10px">         var win;
</span><span class="cx" style="display: block; padding: 0 10px">         win = MessageBox.alert(message, function () {
</span><span class="cx" style="display: block; padding: 0 10px">           choiceCallback();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4711,7 +4711,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><span class="cx" style="display: block; padding: 0 10px">         return win;
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var confirm$$1 = function (message, choiceCallback, closeCallback) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var confirm = function (message, choiceCallback, closeCallback) {
</ins><span class="cx" style="display: block; padding: 0 10px">         var win;
</span><span class="cx" style="display: block; padding: 0 10px">         win = MessageBox.confirm(message, function (state) {
</span><span class="cx" style="display: block; padding: 0 10px">           choiceCallback(state);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4721,20 +4721,20 @@
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><span class="cx" style="display: block; padding: 0 10px">         return win;
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var close$$1 = function (window$$1) {
-        window$$1.close();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var close = function (window) {
+        window.close();
</ins><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var getParams = function (window$$1) {
-        return window$$1.params;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var getParams = function (window) {
+        return window.params;
</ins><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var setParams = function (window$$1, params) {
-        window$$1.params = params;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var setParams = function (window, params) {
+        window.params = params;
</ins><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       return {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        open: open$$1,
-        alert: alert$$1,
-        confirm: confirm$$1,
-        close: close$$1,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        open: open,
+        alert: alert,
+        confirm: confirm,
+        close: close,
</ins><span class="cx" style="display: block; padding: 0 10px">         getParams: getParams,
</span><span class="cx" style="display: block; padding: 0 10px">         setParams: setParams
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4847,26 +4847,26 @@
</span><span class="cx" style="display: block; padding: 0 10px">         role: 'button'
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       init: function (settings) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">         var size;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1._super(settings);
-        settings = self$$1.settings;
-        size = self$$1.settings.size;
-        self$$1.on('click mousedown', function (e) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self._super(settings);
+        settings = self.settings;
+        size = self.settings.size;
+        self.on('click mousedown', function (e) {
</ins><span class="cx" style="display: block; padding: 0 10px">           e.preventDefault();
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.on('touchstart', function (e) {
-          self$$1.fire('click', e);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.on('touchstart', function (e) {
+          self.fire('click', e);
</ins><span class="cx" style="display: block; padding: 0 10px">           e.preventDefault();
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><span class="cx" style="display: block; padding: 0 10px">         if (settings.subtype) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.classes.add(settings.subtype);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.classes.add(settings.subtype);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (size) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.classes.add('btn-' + size);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.classes.add('btn-' + size);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (settings.icon) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.icon(settings.icon);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.icon(settings.icon);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       icon: function (icon) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4886,17 +4886,17 @@
</span><span class="cx" style="display: block; padding: 0 10px">         this._super();
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       renderHtml: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this, id = self$$1._id, prefix = self$$1.classPrefix;
-        var icon = self$$1.state.get('icon'), image;
-        var text = self$$1.state.get('text');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this, id = self._id, prefix = self.classPrefix;
+        var icon = self.state.get('icon'), image;
+        var text = self.state.get('text');
</ins><span class="cx" style="display: block; padding: 0 10px">         var textHtml = '';
</span><span class="cx" style="display: block; padding: 0 10px">         var ariaPressed;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var settings = self$$1.settings;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var settings = self.settings;
</ins><span class="cx" style="display: block; padding: 0 10px">         image = settings.image;
</span><span class="cx" style="display: block; padding: 0 10px">         if (image) {
</span><span class="cx" style="display: block; padding: 0 10px">           icon = 'none';
</span><span class="cx" style="display: block; padding: 0 10px">           if (typeof image !== 'string') {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            image = window.getSelection ? image[0] : image[1];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            image = domGlobals.window.getSelection ? image[0] : image[1];
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           image = ' style="background-image: url(\'' + image + '\')"';
</span><span class="cx" style="display: block; padding: 0 10px">         } else {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4903,41 +4903,41 @@
</span><span class="cx" style="display: block; padding: 0 10px">           image = '';
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (text) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.classes.add('btn-has-text');
-          textHtml = '<span class="' + prefix + 'txt">' + self$$1.encode(text) + '</span>';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.classes.add('btn-has-text');
+          textHtml = '<span class="' + prefix + 'txt">' + self.encode(text) + '</span>';
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         icon = icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';
</span><span class="cx" style="display: block; padding: 0 10px">         ariaPressed = typeof settings.active === 'boolean' ? ' aria-pressed="' + settings.active + '"' : '';
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return '<div id="' + id + '" class="' + self$$1.classes + '" tabindex="-1"' + ariaPressed + '>' + '<button id="' + id + '-button" role="presentation" type="button" tabindex="-1">' + (icon ? '<i class="' + icon + '"' + image + '></i>' : '') + textHtml + '</button>' + '</div>';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return '<div id="' + id + '" class="' + self.classes + '" tabindex="-1"' + ariaPressed + '>' + '<button id="' + id + '-button" role="presentation" type="button" tabindex="-1">' + (icon ? '<i class="' + icon + '"' + image + '></i>' : '') + textHtml + '</button>' + '</div>';
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       bindStates: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this, $ = self$$1.$, textCls = self$$1.classPrefix + 'txt';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this, $ = self.$, textCls = self.classPrefix + 'txt';
</ins><span class="cx" style="display: block; padding: 0 10px">         function setButtonText(text) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          var $span = $('span.' + textCls, self$$1.getEl());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          var $span = $('span.' + textCls, self.getEl());
</ins><span class="cx" style="display: block; padding: 0 10px">           if (text) {
</span><span class="cx" style="display: block; padding: 0 10px">             if (!$span[0]) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              $('button:first', self$$1.getEl()).append('<span class="' + textCls + '"></span>');
-              $span = $('span.' + textCls, self$$1.getEl());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              $('button:first', self.getEl()).append('<span class="' + textCls + '"></span>');
+              $span = $('span.' + textCls, self.getEl());
</ins><span class="cx" style="display: block; padding: 0 10px">             }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            $span.html(self$$1.encode(text));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            $span.html(self.encode(text));
</ins><span class="cx" style="display: block; padding: 0 10px">           } else {
</span><span class="cx" style="display: block; padding: 0 10px">             $span.remove();
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.classes.toggle('btn-has-text', !!text);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.classes.toggle('btn-has-text', !!text);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.state.on('change:text', function (e) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.state.on('change:text', function (e) {
</ins><span class="cx" style="display: block; padding: 0 10px">           setButtonText(e.value);
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.state.on('change:icon', function (e) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.state.on('change:icon', function (e) {
</ins><span class="cx" style="display: block; padding: 0 10px">           var icon = e.value;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          var prefix = self$$1.classPrefix;
-          self$$1.settings.icon = icon;
-          icon = icon ? prefix + 'ico ' + prefix + 'i-' + self$$1.settings.icon : '';
-          var btnElm = self$$1.getEl().firstChild;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          var prefix = self.classPrefix;
+          self.settings.icon = icon;
+          icon = icon ? prefix + 'ico ' + prefix + 'i-' + self.settings.icon : '';
+          var btnElm = self.getEl().firstChild;
</ins><span class="cx" style="display: block; padding: 0 10px">           var iconElm = btnElm.getElementsByTagName('i')[0];
</span><span class="cx" style="display: block; padding: 0 10px">           if (icon) {
</span><span class="cx" style="display: block; padding: 0 10px">             if (!iconElm || iconElm !== btnElm.firstChild) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              iconElm = document.createElement('i');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              iconElm = domGlobals.document.createElement('i');
</ins><span class="cx" style="display: block; padding: 0 10px">               btnElm.insertBefore(iconElm, btnElm.firstChild);
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">             iconElm.className = icon;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4944,9 +4944,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">           } else if (iconElm) {
</span><span class="cx" style="display: block; padding: 0 10px">             btnElm.removeChild(iconElm);
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          setButtonText(self$$1.state.get('text'));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          setButtonText(self.state.get('text'));
</ins><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return self$$1._super();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return self._super();
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     });
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5025,18 +5025,18 @@
</span><span class="cx" style="display: block; padding: 0 10px">         checked: false
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       init: function (settings) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        self$$1._super(settings);
-        self$$1.on('click mousedown', function (e) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        self._super(settings);
+        self.on('click mousedown', function (e) {
</ins><span class="cx" style="display: block; padding: 0 10px">           e.preventDefault();
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.on('click', function (e) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.on('click', function (e) {
</ins><span class="cx" style="display: block; padding: 0 10px">           e.preventDefault();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (!self$$1.disabled()) {
-            self$$1.checked(!self$$1.checked());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (!self.disabled()) {
+            self.checked(!self.checked());
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.checked(self$$1.settings.checked);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.checked(self.settings.checked);
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       checked: function (state) {
</span><span class="cx" style="display: block; padding: 0 10px">         if (!arguments.length) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5052,35 +5052,35 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return this.checked(state);
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       renderHtml: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this, id = self$$1._id, prefix = self$$1.classPrefix;
-        return '<div id="' + id + '" class="' + self$$1.classes + '" unselectable="on" aria-labelledby="' + id + '-al" tabindex="-1">' + '<i class="' + prefix + 'ico ' + prefix + 'i-checkbox"></i>' + '<span id="' + id + '-al" class="' + prefix + 'label">' + self$$1.encode(self$$1.state.get('text')) + '</span>' + '</div>';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this, id = self._id, prefix = self.classPrefix;
+        return '<div id="' + id + '" class="' + self.classes + '" unselectable="on" aria-labelledby="' + id + '-al" tabindex="-1">' + '<i class="' + prefix + 'ico ' + prefix + 'i-checkbox"></i>' + '<span id="' + id + '-al" class="' + prefix + 'label">' + self.encode(self.state.get('text')) + '</span>' + '</div>';
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       bindStates: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">         function checked(state) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.classes.toggle('checked', state);
-          self$$1.aria('checked', state);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.classes.toggle('checked', state);
+          self.aria('checked', state);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.state.on('change:text', function (e) {
-          self$$1.getEl('al').firstChild.data = self$$1.translate(e.value);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.state.on('change:text', function (e) {
+          self.getEl('al').firstChild.data = self.translate(e.value);
</ins><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.state.on('change:checked change:value', function (e) {
-          self$$1.fire('change');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.state.on('change:checked change:value', function (e) {
+          self.fire('change');
</ins><span class="cx" style="display: block; padding: 0 10px">           checked(e.value);
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.state.on('change:icon', function (e) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.state.on('change:icon', function (e) {
</ins><span class="cx" style="display: block; padding: 0 10px">           var icon = e.value;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          var prefix = self$$1.classPrefix;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          var prefix = self.classPrefix;
</ins><span class="cx" style="display: block; padding: 0 10px">           if (typeof icon === 'undefined') {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            return self$$1.settings.icon;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            return self.settings.icon;
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.settings.icon = icon;
-          icon = icon ? prefix + 'ico ' + prefix + 'i-' + self$$1.settings.icon : '';
-          var btnElm = self$$1.getEl().firstChild;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.settings.icon = icon;
+          icon = icon ? prefix + 'ico ' + prefix + 'i-' + self.settings.icon : '';
+          var btnElm = self.getEl().firstChild;
</ins><span class="cx" style="display: block; padding: 0 10px">           var iconElm = btnElm.getElementsByTagName('i')[0];
</span><span class="cx" style="display: block; padding: 0 10px">           if (icon) {
</span><span class="cx" style="display: block; padding: 0 10px">             if (!iconElm || iconElm !== btnElm.firstChild) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              iconElm = document.createElement('i');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              iconElm = domGlobals.document.createElement('i');
</ins><span class="cx" style="display: block; padding: 0 10px">               btnElm.insertBefore(iconElm, btnElm.firstChild);
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">             iconElm.className = icon;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5088,10 +5088,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">             btnElm.removeChild(iconElm);
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (self$$1.state.get('checked')) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (self.state.get('checked')) {
</ins><span class="cx" style="display: block; padding: 0 10px">           checked(true);
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return self$$1._super();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return self._super();
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     });
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5099,29 +5099,29 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var ComboBox = Widget.extend({
</span><span class="cx" style="display: block; padding: 0 10px">       init: function (settings) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        self$$1._super(settings);
-        settings = self$$1.settings;
-        self$$1.classes.add('combobox');
-        self$$1.subinput = true;
-        self$$1.ariaTarget = 'inp';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        self._super(settings);
+        settings = self.settings;
+        self.classes.add('combobox');
+        self.subinput = true;
+        self.ariaTarget = 'inp';
</ins><span class="cx" style="display: block; padding: 0 10px">         settings.menu = settings.menu || settings.values;
</span><span class="cx" style="display: block; padding: 0 10px">         if (settings.menu) {
</span><span class="cx" style="display: block; padding: 0 10px">           settings.icon = 'caret';
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.on('click', function (e) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.on('click', function (e) {
</ins><span class="cx" style="display: block; padding: 0 10px">           var elm = e.target;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          var root = self$$1.getEl();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          var root = self.getEl();
</ins><span class="cx" style="display: block; padding: 0 10px">           if (!global$9.contains(root, elm) && elm !== root) {
</span><span class="cx" style="display: block; padding: 0 10px">             return;
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           while (elm && elm !== root) {
</span><span class="cx" style="display: block; padding: 0 10px">             if (elm.id && elm.id.indexOf('-open') !== -1) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              self$$1.fire('action');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              self.fire('action');
</ins><span class="cx" style="display: block; padding: 0 10px">               if (settings.menu) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                self$$1.showMenu();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                self.showMenu();
</ins><span class="cx" style="display: block; padding: 0 10px">                 if (e.aria) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                  self$$1.menu.items()[0].focus();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                  self.menu.items()[0].focus();
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px">               }
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5128,33 +5128,33 @@
</span><span class="cx" style="display: block; padding: 0 10px">             elm = elm.parentNode;
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.on('keydown', function (e) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.on('keydown', function (e) {
</ins><span class="cx" style="display: block; padding: 0 10px">           var rootControl;
</span><span class="cx" style="display: block; padding: 0 10px">           if (e.keyCode === 13 && e.target.nodeName === 'INPUT') {
</span><span class="cx" style="display: block; padding: 0 10px">             e.preventDefault();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            self$$1.parents().reverse().each(function (ctrl) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            self.parents().reverse().each(function (ctrl) {
</ins><span class="cx" style="display: block; padding: 0 10px">               if (ctrl.toJSON) {
</span><span class="cx" style="display: block; padding: 0 10px">                 rootControl = ctrl;
</span><span class="cx" style="display: block; padding: 0 10px">                 return false;
</span><span class="cx" style="display: block; padding: 0 10px">               }
</span><span class="cx" style="display: block; padding: 0 10px">             });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            self$$1.fire('submit', { data: rootControl.toJSON() });
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            self.fire('submit', { data: rootControl.toJSON() });
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.on('keyup', function (e) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.on('keyup', function (e) {
</ins><span class="cx" style="display: block; padding: 0 10px">           if (e.target.nodeName === 'INPUT') {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            var oldValue = self$$1.state.get('value');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            var oldValue = self.state.get('value');
</ins><span class="cx" style="display: block; padding: 0 10px">             var newValue = e.target.value;
</span><span class="cx" style="display: block; padding: 0 10px">             if (newValue !== oldValue) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              self$$1.state.set('value', newValue);
-              self$$1.fire('autocomplete', e);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              self.state.set('value', newValue);
+              self.fire('autocomplete', e);
</ins><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.on('mouseover', function (e) {
-          var tooltip = self$$1.tooltip().moveTo(-65535);
-          if (self$$1.statusLevel() && e.target.className.indexOf(self$$1.classPrefix + 'status') !== -1) {
-            var statusMessage = self$$1.statusMessage() || 'Ok';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.on('mouseover', function (e) {
+          var tooltip = self.tooltip().moveTo(-65535);
+          if (self.statusLevel() && e.target.className.indexOf(self.classPrefix + 'status') !== -1) {
+            var statusMessage = self.statusMessage() || 'Ok';
</ins><span class="cx" style="display: block; padding: 0 10px">             var rel = tooltip.text(statusMessage).show().testMoveRel(e.target, [
</span><span class="cx" style="display: block; padding: 0 10px">               'bc-tc',
</span><span class="cx" style="display: block; padding: 0 10px">               'bc-tl',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5180,10 +5180,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return this.state.get('statusMessage');
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       showMenu: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        var settings = self$$1.settings;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        var settings = self.settings;
</ins><span class="cx" style="display: block; padding: 0 10px">         var menu;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (!self$$1.menu) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (!self.menu) {
</ins><span class="cx" style="display: block; padding: 0 10px">           menu = settings.menu || [];
</span><span class="cx" style="display: block; padding: 0 10px">           if (menu.length) {
</span><span class="cx" style="display: block; padding: 0 10px">             menu = {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5193,32 +5193,32 @@
</span><span class="cx" style="display: block; padding: 0 10px">           } else {
</span><span class="cx" style="display: block; padding: 0 10px">             menu.type = menu.type || 'menu';
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.menu = global$4.create(menu).parent(self$$1).renderTo(self$$1.getContainerElm());
-          self$$1.fire('createmenu');
-          self$$1.menu.reflow();
-          self$$1.menu.on('cancel', function (e) {
-            if (e.control === self$$1.menu) {
-              self$$1.focus();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.menu = global$4.create(menu).parent(self).renderTo(self.getContainerElm());
+          self.fire('createmenu');
+          self.menu.reflow();
+          self.menu.on('cancel', function (e) {
+            if (e.control === self.menu) {
+              self.focus();
</ins><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.menu.on('show hide', function (e) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.menu.on('show hide', function (e) {
</ins><span class="cx" style="display: block; padding: 0 10px">             e.control.items().each(function (ctrl) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              ctrl.active(ctrl.value() === self$$1.value());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              ctrl.active(ctrl.value() === self.value());
</ins><span class="cx" style="display: block; padding: 0 10px">             });
</span><span class="cx" style="display: block; padding: 0 10px">           }).fire('show');
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.menu.on('select', function (e) {
-            self$$1.value(e.control.value());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.menu.on('select', function (e) {
+            self.value(e.control.value());
</ins><span class="cx" style="display: block; padding: 0 10px">           });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.on('focusin', function (e) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.on('focusin', function (e) {
</ins><span class="cx" style="display: block; padding: 0 10px">             if (e.target.tagName.toUpperCase() === 'INPUT') {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              self$$1.menu.hide();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              self.menu.hide();
</ins><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.aria('expanded', true);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.aria('expanded', true);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.menu.show();
-        self$$1.menu.layoutRect({ w: self$$1.layoutRect().w });
-        self$$1.menu.moveRel(self$$1.getEl(), self$$1.isRtl() ? [
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.menu.show();
+        self.menu.layoutRect({ w: self.layoutRect().w });
+        self.menu.moveRel(self.getEl(), self.isRtl() ? [
</ins><span class="cx" style="display: block; padding: 0 10px">           'br-tr',
</span><span class="cx" style="display: block; padding: 0 10px">           'tr-br'
</span><span class="cx" style="display: block; padding: 0 10px">         ] : [
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5230,10 +5230,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">         this.getEl('inp').focus();
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       repaint: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this, elm = self$$1.getEl(), openElm = self$$1.getEl('open'), rect = self$$1.layoutRect();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this, elm = self.getEl(), openElm = self.getEl('open'), rect = self.layoutRect();
</ins><span class="cx" style="display: block; padding: 0 10px">         var width, lineHeight, innerPadding = 0;
</span><span class="cx" style="display: block; padding: 0 10px">         var inputElm = elm.firstChild;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (self$$1.statusLevel() && self$$1.statusLevel() !== 'none') {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (self.statusLevel() && self.statusLevel() !== 'none') {
</ins><span class="cx" style="display: block; padding: 0 10px">           innerPadding = parseInt(funcs.getRuntimeStyle(inputElm, 'padding-right'), 10) - parseInt(funcs.getRuntimeStyle(inputElm, 'padding-left'), 10);
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (openElm) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5241,28 +5241,28 @@
</span><span class="cx" style="display: block; padding: 0 10px">         } else {
</span><span class="cx" style="display: block; padding: 0 10px">           width = rect.w - 10;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var doc = document;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var doc = domGlobals.document;
</ins><span class="cx" style="display: block; padding: 0 10px">         if (doc.all && (!doc.documentMode || doc.documentMode <= 8)) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          lineHeight = self$$1.layoutRect().h - 2 + 'px';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          lineHeight = self.layoutRect().h - 2 + 'px';
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         global$9(inputElm).css({
</span><span class="cx" style="display: block; padding: 0 10px">           width: width - innerPadding,
</span><span class="cx" style="display: block; padding: 0 10px">           lineHeight: lineHeight
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1._super();
-        return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self._super();
+        return self;
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       postRender: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">         global$9(this.getEl('inp')).on('change', function (e) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.state.set('value', e.target.value);
-          self$$1.fire('change', e);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.state.set('value', e.target.value);
+          self.fire('change', e);
</ins><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return self$$1._super();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return self._super();
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       renderHtml: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this, id = self$$1._id, settings = self$$1.settings, prefix = self$$1.classPrefix;
-        var value = self$$1.state.get('value') || '';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this, id = self._id, settings = self.settings, prefix = self.classPrefix;
+        var value = self.state.get('value') || '';
</ins><span class="cx" style="display: block; padding: 0 10px">         var icon, text, openBtnHtml = '', extraAttrs = '', statusHtml = '';
</span><span class="cx" style="display: block; padding: 0 10px">         if ('spellcheck' in settings) {
</span><span class="cx" style="display: block; padding: 0 10px">           extraAttrs += ' spellcheck="' + settings.spellcheck + '"';
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5277,7 +5277,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">           extraAttrs += ' type="' + settings.subtype + '"';
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         statusHtml = '<i id="' + id + '-status" class="mce-status mce-ico" style="display: none"></i>';
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (self$$1.disabled()) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (self.disabled()) {
</ins><span class="cx" style="display: block; padding: 0 10px">           extraAttrs += ' disabled="disabled"';
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         icon = settings.icon;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5284,12 +5284,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">         if (icon && icon !== 'caret') {
</span><span class="cx" style="display: block; padding: 0 10px">           icon = prefix + 'ico ' + prefix + 'i-' + settings.icon;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        text = self$$1.state.get('text');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        text = self.state.get('text');
</ins><span class="cx" style="display: block; padding: 0 10px">         if (icon || text) {
</span><span class="cx" style="display: block; padding: 0 10px">           openBtnHtml = '<div id="' + id + '-open" class="' + prefix + 'btn ' + prefix + 'open" tabIndex="-1" role="button">' + '<button id="' + id + '-action" type="button" hidefocus="1" tabindex="-1">' + (icon !== 'caret' ? '<i class="' + icon + '"></i>' : '<i class="' + prefix + 'caret"></i>') + (text ? (icon ? ' ' : '') + text : '') + '</button>' + '</div>';
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.classes.add('has-open');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.classes.add('has-open');
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return '<div id="' + id + '" class="' + self$$1.classes + '">' + '<input id="' + id + '-inp" class="' + prefix + 'textbox" value="' + self$$1.encode(value, false) + '" hidefocus="1"' + extraAttrs + ' placeholder="' + self$$1.encode(settings.placeholder) + '" />' + statusHtml + openBtnHtml + '</div>';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return '<div id="' + id + '" class="' + self.classes + '">' + '<input id="' + id + '-inp" class="' + prefix + 'textbox" value="' + self.encode(value, false) + '" hidefocus="1"' + extraAttrs + ' placeholder="' + self.encode(settings.placeholder) + '" />' + statusHtml + openBtnHtml + '</div>';
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       value: function (value) {
</span><span class="cx" style="display: block; padding: 0 10px">         if (arguments.length) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5302,30 +5302,30 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return this.state.get('value');
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       showAutoComplete: function (items, term) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">         if (items.length === 0) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.hideMenu();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.hideMenu();
</ins><span class="cx" style="display: block; padding: 0 10px">           return;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         var insert = function (value, title) {
</span><span class="cx" style="display: block; padding: 0 10px">           return function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            self$$1.fire('selectitem', {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            self.fire('selectitem', {
</ins><span class="cx" style="display: block; padding: 0 10px">               title: title,
</span><span class="cx" style="display: block; padding: 0 10px">               value: value
</span><span class="cx" style="display: block; padding: 0 10px">             });
</span><span class="cx" style="display: block; padding: 0 10px">           };
</span><span class="cx" style="display: block; padding: 0 10px">         };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (self$$1.menu) {
-          self$$1.menu.items().remove();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (self.menu) {
+          self.menu.items().remove();
</ins><span class="cx" style="display: block; padding: 0 10px">         } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.menu = global$4.create({
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.menu = global$4.create({
</ins><span class="cx" style="display: block; padding: 0 10px">             type: 'menu',
</span><span class="cx" style="display: block; padding: 0 10px">             classes: 'combobox-menu',
</span><span class="cx" style="display: block; padding: 0 10px">             layout: 'flow'
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          }).parent(self$$1).renderTo();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          }).parent(self).renderTo();
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         global$2.each(items, function (item) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.menu.add({
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.menu.add({
</ins><span class="cx" style="display: block; padding: 0 10px">             text: item.title,
</span><span class="cx" style="display: block; padding: 0 10px">             url: item.previewUrl,
</span><span class="cx" style="display: block; padding: 0 10px">             match: term,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5333,28 +5333,28 @@
</span><span class="cx" style="display: block; padding: 0 10px">             onclick: insert(item.value, item.title)
</span><span class="cx" style="display: block; padding: 0 10px">           });
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.menu.renderNew();
-        self$$1.hideMenu();
-        self$$1.menu.on('cancel', function (e) {
-          if (e.control.parent() === self$$1.menu) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.menu.renderNew();
+        self.hideMenu();
+        self.menu.on('cancel', function (e) {
+          if (e.control.parent() === self.menu) {
</ins><span class="cx" style="display: block; padding: 0 10px">             e.stopPropagation();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            self$$1.focus();
-            self$$1.hideMenu();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            self.focus();
+            self.hideMenu();
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.menu.on('select', function () {
-          self$$1.focus();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.menu.on('select', function () {
+          self.focus();
</ins><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var maxW = self$$1.layoutRect().w;
-        self$$1.menu.layoutRect({
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var maxW = self.layoutRect().w;
+        self.menu.layoutRect({
</ins><span class="cx" style="display: block; padding: 0 10px">           w: maxW,
</span><span class="cx" style="display: block; padding: 0 10px">           minW: 0,
</span><span class="cx" style="display: block; padding: 0 10px">           maxW: maxW
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.menu.repaint();
-        self$$1.menu.reflow();
-        self$$1.menu.show();
-        self$$1.menu.moveRel(self$$1.getEl(), self$$1.isRtl() ? [
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.menu.repaint();
+        self.menu.reflow();
+        self.menu.show();
+        self.menu.moveRel(self.getEl(), self.isRtl() ? [
</ins><span class="cx" style="display: block; padding: 0 10px">           'br-tr',
</span><span class="cx" style="display: block; padding: 0 10px">           'tr-br'
</span><span class="cx" style="display: block; padding: 0 10px">         ] : [
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5368,32 +5368,32 @@
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       bindStates: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        self$$1.state.on('change:value', function (e) {
-          if (self$$1.getEl('inp').value !== e.value) {
-            self$$1.getEl('inp').value = e.value;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        self.state.on('change:value', function (e) {
+          if (self.getEl('inp').value !== e.value) {
+            self.getEl('inp').value = e.value;
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.state.on('change:disabled', function (e) {
-          self$$1.getEl('inp').disabled = e.value;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.state.on('change:disabled', function (e) {
+          self.getEl('inp').disabled = e.value;
</ins><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.state.on('change:statusLevel', function (e) {
-          var statusIconElm = self$$1.getEl('status');
-          var prefix = self$$1.classPrefix, value = e.value;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.state.on('change:statusLevel', function (e) {
+          var statusIconElm = self.getEl('status');
+          var prefix = self.classPrefix, value = e.value;
</ins><span class="cx" style="display: block; padding: 0 10px">           funcs.css(statusIconElm, 'display', value === 'none' ? 'none' : '');
</span><span class="cx" style="display: block; padding: 0 10px">           funcs.toggleClass(statusIconElm, prefix + 'i-checkmark', value === 'ok');
</span><span class="cx" style="display: block; padding: 0 10px">           funcs.toggleClass(statusIconElm, prefix + 'i-warning', value === 'warn');
</span><span class="cx" style="display: block; padding: 0 10px">           funcs.toggleClass(statusIconElm, prefix + 'i-error', value === 'error');
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.classes.toggle('has-status', value !== 'none');
-          self$$1.repaint();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.classes.toggle('has-status', value !== 'none');
+          self.repaint();
</ins><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        funcs.on(self$$1.getEl('status'), 'mouseleave', function () {
-          self$$1.tooltip().hide();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        funcs.on(self.getEl('status'), 'mouseleave', function () {
+          self.tooltip().hide();
</ins><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.on('cancel', function (e) {
-          if (self$$1.menu && self$$1.menu.visible()) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.on('cancel', function (e) {
+          if (self.menu && self.menu.visible()) {
</ins><span class="cx" style="display: block; padding: 0 10px">             e.stopPropagation();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            self$$1.hideMenu();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            self.hideMenu();
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><span class="cx" style="display: block; padding: 0 10px">         var focusIdx = function (idx, menu) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5401,20 +5401,20 @@
</span><span class="cx" style="display: block; padding: 0 10px">             menu.items().eq(idx)[0].focus();
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.on('keydown', function (e) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.on('keydown', function (e) {
</ins><span class="cx" style="display: block; padding: 0 10px">           var keyCode = e.keyCode;
</span><span class="cx" style="display: block; padding: 0 10px">           if (e.target.nodeName === 'INPUT') {
</span><span class="cx" style="display: block; padding: 0 10px">             if (keyCode === global$d.DOWN) {
</span><span class="cx" style="display: block; padding: 0 10px">               e.preventDefault();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              self$$1.fire('autocomplete');
-              focusIdx(0, self$$1.menu);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              self.fire('autocomplete');
+              focusIdx(0, self.menu);
</ins><span class="cx" style="display: block; padding: 0 10px">             } else if (keyCode === global$d.UP) {
</span><span class="cx" style="display: block; padding: 0 10px">               e.preventDefault();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              focusIdx(-1, self$$1.menu);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              focusIdx(-1, self.menu);
</ins><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return self$$1._super();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return self._super();
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       remove: function () {
</span><span class="cx" style="display: block; padding: 0 10px">         global$9(this.getEl('inp')).off();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6025,28 +6025,29 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var fromHtml = function (html, scope) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var doc = scope || document;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var doc = scope || domGlobals.document;
</ins><span class="cx" style="display: block; padding: 0 10px">       var div = doc.createElement('div');
</span><span class="cx" style="display: block; padding: 0 10px">       div.innerHTML = html;
</span><span class="cx" style="display: block; padding: 0 10px">       if (!div.hasChildNodes() || div.childNodes.length > 1) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        console.error('HTML does not have a single root node', html);
-        throw 'HTML must have a single root node';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        domGlobals.console.error('HTML does not have a single root node', html);
+        throw new Error('HTML must have a single root node');
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       return fromDom(div.childNodes[0]);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var fromTag = function (tag, scope) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var doc = scope || document;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var doc = scope || domGlobals.document;
</ins><span class="cx" style="display: block; padding: 0 10px">       var node = doc.createElement(tag);
</span><span class="cx" style="display: block; padding: 0 10px">       return fromDom(node);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var fromText = function (text, scope) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var doc = scope || document;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var doc = scope || domGlobals.document;
</ins><span class="cx" style="display: block; padding: 0 10px">       var node = doc.createTextNode(text);
</span><span class="cx" style="display: block; padding: 0 10px">       return fromDom(node);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var fromDom = function (node) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      if (node === null || node === undefined)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      if (node === null || node === undefined) {
</ins><span class="cx" style="display: block; padding: 0 10px">         throw new Error('Node cannot be null or undefined');
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      }
</ins><span class="cx" style="display: block; padding: 0 10px">       return { dom: constant(node) };
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var fromPoint = function (docElm, x, y) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6053,7 +6054,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var doc = docElm.dom();
</span><span class="cx" style="display: block; padding: 0 10px">       return Option.from(doc.elementFromPoint(x, y)).map(fromDom);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var Element$$1 = {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var Element = {
</ins><span class="cx" style="display: block; padding: 0 10px">       fromHtml: fromHtml,
</span><span class="cx" style="display: block; padding: 0 10px">       fromTag: fromTag,
</span><span class="cx" style="display: block; padding: 0 10px">       fromText: fromText,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6077,18 +6078,18 @@
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var ATTRIBUTE = Node.ATTRIBUTE_NODE;
-    var CDATA_SECTION = Node.CDATA_SECTION_NODE;
-    var COMMENT = Node.COMMENT_NODE;
-    var DOCUMENT = Node.DOCUMENT_NODE;
-    var DOCUMENT_TYPE = Node.DOCUMENT_TYPE_NODE;
-    var DOCUMENT_FRAGMENT = Node.DOCUMENT_FRAGMENT_NODE;
-    var ELEMENT = Node.ELEMENT_NODE;
-    var TEXT = Node.TEXT_NODE;
-    var PROCESSING_INSTRUCTION = Node.PROCESSING_INSTRUCTION_NODE;
-    var ENTITY_REFERENCE = Node.ENTITY_REFERENCE_NODE;
-    var ENTITY = Node.ENTITY_NODE;
-    var NOTATION = Node.NOTATION_NODE;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var ATTRIBUTE = domGlobals.Node.ATTRIBUTE_NODE;
+    var CDATA_SECTION = domGlobals.Node.CDATA_SECTION_NODE;
+    var COMMENT = domGlobals.Node.COMMENT_NODE;
+    var DOCUMENT = domGlobals.Node.DOCUMENT_NODE;
+    var DOCUMENT_TYPE = domGlobals.Node.DOCUMENT_TYPE_NODE;
+    var DOCUMENT_FRAGMENT = domGlobals.Node.DOCUMENT_FRAGMENT_NODE;
+    var ELEMENT = domGlobals.Node.ELEMENT_NODE;
+    var TEXT = domGlobals.Node.TEXT_NODE;
+    var PROCESSING_INSTRUCTION = domGlobals.Node.PROCESSING_INSTRUCTION_NODE;
+    var ENTITY_REFERENCE = domGlobals.Node.ENTITY_REFERENCE_NODE;
+    var ENTITY = domGlobals.Node.ENTITY_NODE;
+    var NOTATION = domGlobals.Node.NOTATION_NODE;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var Immutable = function () {
</span><span class="cx" style="display: block; padding: 0 10px">       var fields = [];
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6111,7 +6112,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var Global = typeof window !== 'undefined' ? window : Function('return this;')();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var Global = typeof domGlobals.window !== 'undefined' ? domGlobals.window : Function('return this;')();
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var path = function (parts, scope) {
</span><span class="cx" style="display: block; padding: 0 10px">       var o = scope !== undefined && scope !== null ? scope : Global;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6148,7 +6149,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var documentPositionContainedBy = function (a, b) {
</span><span class="cx" style="display: block; padding: 0 10px">       return compareDocumentPosition(a, b, node().DOCUMENT_POSITION_CONTAINED_BY);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var Node$1 = {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var Node = {
</ins><span class="cx" style="display: block; padding: 0 10px">       documentPositionPreceding: documentPositionPreceding,
</span><span class="cx" style="display: block; padding: 0 10px">       documentPositionContainedBy: documentPositionContainedBy
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6161,7 +6162,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       return undefined;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var find$2 = function (regexes, agent) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var find$1 = function (regexes, agent) {
</ins><span class="cx" style="display: block; padding: 0 10px">       var r = firstMatch(regexes, agent);
</span><span class="cx" style="display: block; padding: 0 10px">       if (!r)
</span><span class="cx" style="display: block; padding: 0 10px">         return {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6177,7 +6178,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var cleanedAgent = String(agent).toLowerCase();
</span><span class="cx" style="display: block; padding: 0 10px">       if (versionRegexes.length === 0)
</span><span class="cx" style="display: block; padding: 0 10px">         return unknown();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return find$2(versionRegexes, cleanedAgent);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return find$1(versionRegexes, cleanedAgent);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var unknown = function () {
</span><span class="cx" style="display: block; padding: 0 10px">       return nu(0, 0);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6331,7 +6332,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       detectOs: detectOs
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var contains$1 = function (str, substr) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var contains = function (str, substr) {
</ins><span class="cx" style="display: block; padding: 0 10px">       return str.indexOf(substr) !== -1;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6338,7 +6339,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var normalVersionRegex = /.*?version\/\ ?([0-9]+)\.([0-9]+).*/;
</span><span class="cx" style="display: block; padding: 0 10px">     var checkContains = function (target) {
</span><span class="cx" style="display: block; padding: 0 10px">       return function (uastring) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return contains$1(uastring, target);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return contains(uastring, target);
</ins><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var browsers = [
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6346,7 +6347,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         name: 'Edge',
</span><span class="cx" style="display: block; padding: 0 10px">         versionRegexes: [/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],
</span><span class="cx" style="display: block; padding: 0 10px">         search: function (uastring) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          var monstrosity = contains$1(uastring, 'edge/') && contains$1(uastring, 'chrome') && contains$1(uastring, 'safari') && contains$1(uastring, 'applewebkit');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          var monstrosity = contains(uastring, 'edge/') && contains(uastring, 'chrome') && contains(uastring, 'safari') && contains(uastring, 'applewebkit');
</ins><span class="cx" style="display: block; padding: 0 10px">           return monstrosity;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6357,7 +6358,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">           normalVersionRegex
</span><span class="cx" style="display: block; padding: 0 10px">         ],
</span><span class="cx" style="display: block; padding: 0 10px">         search: function (uastring) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          return contains$1(uastring, 'chrome') && !contains$1(uastring, 'chromeframe');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          return contains(uastring, 'chrome') && !contains(uastring, 'chromeframe');
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6367,7 +6368,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">           /.*?rv:([0-9]+)\.([0-9]+).*/
</span><span class="cx" style="display: block; padding: 0 10px">         ],
</span><span class="cx" style="display: block; padding: 0 10px">         search: function (uastring) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          return contains$1(uastring, 'msie') || contains$1(uastring, 'trident');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          return contains(uastring, 'msie') || contains(uastring, 'trident');
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6390,7 +6391,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">           /.*?cpu os ([0-9]+)_([0-9]+).*/
</span><span class="cx" style="display: block; padding: 0 10px">         ],
</span><span class="cx" style="display: block; padding: 0 10px">         search: function (uastring) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          return (contains$1(uastring, 'safari') || contains$1(uastring, 'mobile/')) && contains$1(uastring, 'applewebkit');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          return (contains(uastring, 'safari') || contains(uastring, 'mobile/')) && contains(uastring, 'applewebkit');
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     ];
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6403,7 +6404,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       {
</span><span class="cx" style="display: block; padding: 0 10px">         name: 'iOS',
</span><span class="cx" style="display: block; padding: 0 10px">         search: function (uastring) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          return contains$1(uastring, 'iphone') || contains$1(uastring, 'ipad');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          return contains(uastring, 'iphone') || contains(uastring, 'ipad');
</ins><span class="cx" style="display: block; padding: 0 10px">         },
</span><span class="cx" style="display: block; padding: 0 10px">         versionRegexes: [
</span><span class="cx" style="display: block; padding: 0 10px">           /.*?version\/\ ?([0-9]+)\.([0-9]+).*/,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6457,7 +6458,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var PlatformDetection = { detect: detect$2 };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var detect$3 = cached(function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var userAgent = navigator.userAgent;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var userAgent = domGlobals.navigator.userAgent;
</ins><span class="cx" style="display: block; padding: 0 10px">       return PlatformDetection.detect(userAgent);
</span><span class="cx" style="display: block; padding: 0 10px">     });
</span><span class="cx" style="display: block; padding: 0 10px">     var PlatformDetection$1 = { detect: detect$3 };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6468,31 +6469,32 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return dom.nodeType !== ELEMENT$1 && dom.nodeType !== DOCUMENT$1 || dom.childElementCount === 0;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var all = function (selector, scope) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var base = scope === undefined ? document : scope.dom();
-      return bypassSelector(base) ? [] : map(base.querySelectorAll(selector), Element$$1.fromDom);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var base = scope === undefined ? domGlobals.document : scope.dom();
+      return bypassSelector(base) ? [] : map(base.querySelectorAll(selector), Element.fromDom);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var one = function (selector, scope) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var base = scope === undefined ? document : scope.dom();
-      return bypassSelector(base) ? Option.none() : Option.from(base.querySelector(selector)).map(Element$$1.fromDom);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var base = scope === undefined ? domGlobals.document : scope.dom();
+      return bypassSelector(base) ? Option.none() : Option.from(base.querySelector(selector)).map(Element.fromDom);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var regularContains = function (e1, e2) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var d1 = e1.dom(), d2 = e2.dom();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var d1 = e1.dom();
+      var d2 = e2.dom();
</ins><span class="cx" style="display: block; padding: 0 10px">       return d1 === d2 ? false : d1.contains(d2);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var ieContains = function (e1, e2) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return Node$1.documentPositionContainedBy(e1.dom(), e2.dom());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return Node.documentPositionContainedBy(e1.dom(), e2.dom());
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var browser = PlatformDetection$1.detect().browser;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var contains$2 = browser.isIE() ? ieContains : regularContains;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var contains$1 = browser.isIE() ? ieContains : regularContains;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var spot = Immutable('element', 'offset');
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var descendants$1 = function (scope, selector) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var descendants = function (scope, selector) {
</ins><span class="cx" style="display: block; padding: 0 10px">       return all(selector, scope);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var trim$1 = global$2.trim;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var trim = global$2.trim;
</ins><span class="cx" style="display: block; padding: 0 10px">     var hasContentEditableState = function (value) {
</span><span class="cx" style="display: block; padding: 0 10px">       return function (node) {
</span><span class="cx" style="display: block; padding: 0 10px">         if (node && node.nodeType === 1) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6527,7 +6529,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return false;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var select = function (selector, root) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return map(descendants$1(Element$$1.fromDom(root), selector), function (element) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return map(descendants(Element.fromDom(root), selector), function (element) {
</ins><span class="cx" style="display: block; padding: 0 10px">         return element.dom();
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6578,13 +6580,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return elms;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var hasTitle = function (target) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return trim$1(target.title).length > 0;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return trim(target.title).length > 0;
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var find$3 = function (elm) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var find$2 = function (elm) {
</ins><span class="cx" style="display: block; padding: 0 10px">       var elms = getTargetElements(elm);
</span><span class="cx" style="display: block; padding: 0 10px">       return filter(getHeaderTargets(elms).concat(getAnchorTargets(elms)), hasTitle);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var LinkTargets = { find: find$3 };
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var LinkTargets = { find: find$2 };
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var getActiveEditor = function () {
</span><span class="cx" style="display: block; padding: 0 10px">       return window.tinymce ? window.tinymce.activeEditor : global$1.activeEditor;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -7030,7 +7032,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     });
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var descendant$1 = function (scope, selector) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var descendant = function (scope, selector) {
</ins><span class="cx" style="display: block; padding: 0 10px">       return one(selector, scope);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -7973,7 +7975,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var setupUiContainer = function (editor) {
</span><span class="cx" style="display: block; padding: 0 10px">       if (editor.settings.ui_container) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        global$8.container = descendant$1(Element$$1.fromDom(document.body), editor.settings.ui_container).fold(constant(null), function (elm) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        global$8.container = descendant(Element.fromDom(domGlobals.document.body), editor.settings.ui_container).fold(constant(null), function (elm) {
</ins><span class="cx" style="display: block; padding: 0 10px">           return elm.dom();
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -8310,9 +8312,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     });
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    function isChildOf$1(node, parent$$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    function isChildOf$1(node, parent) {
</ins><span class="cx" style="display: block; padding: 0 10px">       while (node) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (parent$$1 === node) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (parent === node) {
</ins><span class="cx" style="display: block; padding: 0 10px">           return true;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         node = node.parentNode;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -8321,26 +8323,26 @@
</span><span class="cx" style="display: block; padding: 0 10px">     }
</span><span class="cx" style="display: block; padding: 0 10px">     var MenuButton = Button.extend({
</span><span class="cx" style="display: block; padding: 0 10px">       init: function (settings) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        self$$1._renderOpen = true;
-        self$$1._super(settings);
-        settings = self$$1.settings;
-        self$$1.classes.add('menubtn');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        self._renderOpen = true;
+        self._super(settings);
+        settings = self.settings;
+        self.classes.add('menubtn');
</ins><span class="cx" style="display: block; padding: 0 10px">         if (settings.fixedWidth) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.classes.add('fixed-width');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.classes.add('fixed-width');
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.aria('haspopup', true);
-        self$$1.state.set('menu', settings.menu || self$$1.render());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.aria('haspopup', true);
+        self.state.set('menu', settings.menu || self.render());
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       showMenu: function (toggle) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">         var menu;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (self$$1.menu && self$$1.menu.visible() && toggle !== false) {
-          return self$$1.hideMenu();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (self.menu && self.menu.visible() && toggle !== false) {
+          return self.hideMenu();
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (!self$$1.menu) {
-          menu = self$$1.state.get('menu') || [];
-          self$$1.classes.add('opened');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (!self.menu) {
+          menu = self.state.get('menu') || [];
+          self.classes.add('opened');
</ins><span class="cx" style="display: block; padding: 0 10px">           if (menu.length) {
</span><span class="cx" style="display: block; padding: 0 10px">             menu = {
</span><span class="cx" style="display: block; padding: 0 10px">               type: 'menu',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -8352,37 +8354,37 @@
</span><span class="cx" style="display: block; padding: 0 10px">             menu.animate = true;
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           if (!menu.renderTo) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            self$$1.menu = global$4.create(menu).parent(self$$1).renderTo();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            self.menu = global$4.create(menu).parent(self).renderTo();
</ins><span class="cx" style="display: block; padding: 0 10px">           } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            self$$1.menu = menu.parent(self$$1).show().renderTo();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            self.menu = menu.parent(self).show().renderTo();
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.fire('createmenu');
-          self$$1.menu.reflow();
-          self$$1.menu.on('cancel', function (e) {
-            if (e.control.parent() === self$$1.menu) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.fire('createmenu');
+          self.menu.reflow();
+          self.menu.on('cancel', function (e) {
+            if (e.control.parent() === self.menu) {
</ins><span class="cx" style="display: block; padding: 0 10px">               e.stopPropagation();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              self$$1.focus();
-              self$$1.hideMenu();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              self.focus();
+              self.hideMenu();
</ins><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.menu.on('select', function () {
-            self$$1.focus();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.menu.on('select', function () {
+            self.focus();
</ins><span class="cx" style="display: block; padding: 0 10px">           });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.menu.on('show hide', function (e) {
-            if (e.type === 'hide' && e.control.parent() === self$$1) {
-              self$$1.classes.remove('opened-under');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.menu.on('show hide', function (e) {
+            if (e.type === 'hide' && e.control.parent() === self) {
+              self.classes.remove('opened-under');
</ins><span class="cx" style="display: block; padding: 0 10px">             }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            if (e.control === self$$1.menu) {
-              self$$1.activeMenu(e.type === 'show');
-              self$$1.classes.toggle('opened', e.type === 'show');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            if (e.control === self.menu) {
+              self.activeMenu(e.type === 'show');
+              self.classes.toggle('opened', e.type === 'show');
</ins><span class="cx" style="display: block; padding: 0 10px">             }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            self$$1.aria('expanded', e.type === 'show');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            self.aria('expanded', e.type === 'show');
</ins><span class="cx" style="display: block; padding: 0 10px">           }).fire('show');
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.menu.show();
-        self$$1.menu.layoutRect({ w: self$$1.layoutRect().w });
-        self$$1.menu.repaint();
-        self$$1.menu.moveRel(self$$1.getEl(), self$$1.isRtl() ? [
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.menu.show();
+        self.menu.layoutRect({ w: self.layoutRect().w });
+        self.menu.repaint();
+        self.menu.moveRel(self.getEl(), self.isRtl() ? [
</ins><span class="cx" style="display: block; padding: 0 10px">           'br-tr',
</span><span class="cx" style="display: block; padding: 0 10px">           'tr-br'
</span><span class="cx" style="display: block; padding: 0 10px">         ] : [
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -8389,22 +8391,22 @@
</span><span class="cx" style="display: block; padding: 0 10px">           'bl-tl',
</span><span class="cx" style="display: block; padding: 0 10px">           'tl-bl'
</span><span class="cx" style="display: block; padding: 0 10px">         ]);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var menuLayoutRect = self$$1.menu.layoutRect();
-        var selfBottom = self$$1.$el.offset().top + self$$1.layoutRect().h;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var menuLayoutRect = self.menu.layoutRect();
+        var selfBottom = self.$el.offset().top + self.layoutRect().h;
</ins><span class="cx" style="display: block; padding: 0 10px">         if (selfBottom > menuLayoutRect.y && selfBottom < menuLayoutRect.y + menuLayoutRect.h) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.classes.add('opened-under');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.classes.add('opened-under');
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.fire('showmenu');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.fire('showmenu');
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       hideMenu: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        if (self$$1.menu) {
-          self$$1.menu.items().each(function (item) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        if (self.menu) {
+          self.menu.items().each(function (item) {
</ins><span class="cx" style="display: block; padding: 0 10px">             if (item.hideMenu) {
</span><span class="cx" style="display: block; padding: 0 10px">               item.hideMenu();
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.menu.hide();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.menu.hide();
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       activeMenu: function (state) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -8411,15 +8413,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">         this.classes.toggle('active', state);
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       renderHtml: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this, id = self$$1._id, prefix = self$$1.classPrefix;
-        var icon = self$$1.settings.icon, image;
-        var text = self$$1.state.get('text');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this, id = self._id, prefix = self.classPrefix;
+        var icon = self.settings.icon, image;
+        var text = self.state.get('text');
</ins><span class="cx" style="display: block; padding: 0 10px">         var textHtml = '';
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        image = self$$1.settings.image;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        image = self.settings.image;
</ins><span class="cx" style="display: block; padding: 0 10px">         if (image) {
</span><span class="cx" style="display: block; padding: 0 10px">           icon = 'none';
</span><span class="cx" style="display: block; padding: 0 10px">           if (typeof image !== 'string') {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            image = window.getSelection ? image[0] : image[1];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            image = domGlobals.window.getSelection ? image[0] : image[1];
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           image = ' style="background-image: url(\'' + image + '\')"';
</span><span class="cx" style="display: block; padding: 0 10px">         } else {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -8426,30 +8428,30 @@
</span><span class="cx" style="display: block; padding: 0 10px">           image = '';
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (text) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.classes.add('btn-has-text');
-          textHtml = '<span class="' + prefix + 'txt">' + self$$1.encode(text) + '</span>';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.classes.add('btn-has-text');
+          textHtml = '<span class="' + prefix + 'txt">' + self.encode(text) + '</span>';
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        icon = self$$1.settings.icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';
-        self$$1.aria('role', self$$1.parent() instanceof MenuBar ? 'menuitem' : 'button');
-        return '<div id="' + id + '" class="' + self$$1.classes + '" tabindex="-1" aria-labelledby="' + id + '">' + '<button id="' + id + '-open" role="presentation" type="button" tabindex="-1">' + (icon ? '<i class="' + icon + '"' + image + '></i>' : '') + textHtml + ' <i class="' + prefix + 'caret"></i>' + '</button>' + '</div>';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        icon = self.settings.icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';
+        self.aria('role', self.parent() instanceof MenuBar ? 'menuitem' : 'button');
+        return '<div id="' + id + '" class="' + self.classes + '" tabindex="-1" aria-labelledby="' + id + '">' + '<button id="' + id + '-open" role="presentation" type="button" tabindex="-1">' + (icon ? '<i class="' + icon + '"' + image + '></i>' : '') + textHtml + ' <i class="' + prefix + 'caret"></i>' + '</button>' + '</div>';
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       postRender: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        self$$1.on('click', function (e) {
-          if (e.control === self$$1 && isChildOf$1(e.target, self$$1.getEl())) {
-            self$$1.focus();
-            self$$1.showMenu(!e.aria);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        self.on('click', function (e) {
+          if (e.control === self && isChildOf$1(e.target, self.getEl())) {
+            self.focus();
+            self.showMenu(!e.aria);
</ins><span class="cx" style="display: block; padding: 0 10px">             if (e.aria) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              self$$1.menu.items().filter(':visible')[0].focus();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              self.menu.items().filter(':visible')[0].focus();
</ins><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.on('mouseenter', function (e) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.on('mouseenter', function (e) {
</ins><span class="cx" style="display: block; padding: 0 10px">           var overCtrl = e.control;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          var parent$$1 = self$$1.parent();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          var parent = self.parent();
</ins><span class="cx" style="display: block; padding: 0 10px">           var hasVisibleSiblingMenu;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (overCtrl && parent$$1 && overCtrl instanceof MenuButton && overCtrl.parent() === parent$$1) {
-            parent$$1.items().filter('MenuButton').each(function (ctrl) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (overCtrl && parent && overCtrl instanceof MenuButton && overCtrl.parent() === parent) {
+            parent.items().filter('MenuButton').each(function (ctrl) {
</ins><span class="cx" style="display: block; padding: 0 10px">               if (ctrl.hideMenu && ctrl !== overCtrl) {
</span><span class="cx" style="display: block; padding: 0 10px">                 if (ctrl.menu && ctrl.menu.visible()) {
</span><span class="cx" style="display: block; padding: 0 10px">                   hasVisibleSiblingMenu = true;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -8463,17 +8465,17 @@
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return self$$1._super();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return self._super();
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       bindStates: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        self$$1.state.on('change:menu', function () {
-          if (self$$1.menu) {
-            self$$1.menu.remove();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        self.state.on('change:menu', function () {
+          if (self.menu) {
+            self.menu.remove();
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.menu = null;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.menu = null;
</ins><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return self$$1._super();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return self._super();
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       remove: function () {
</span><span class="cx" style="display: block; padding: 0 10px">         this._super();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -9230,11 +9232,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">         role: 'button'
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       repaint: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        var elm = self$$1.getEl();
-        var rect = self$$1.layoutRect();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        var elm = self.getEl();
+        var rect = self.layoutRect();
</ins><span class="cx" style="display: block; padding: 0 10px">         var mainButtonElm, menuButtonElm;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1._super();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self._super();
</ins><span class="cx" style="display: block; padding: 0 10px">         mainButtonElm = elm.firstChild;
</span><span class="cx" style="display: block; padding: 0 10px">         menuButtonElm = elm.lastChild;
</span><span class="cx" style="display: block; padding: 0 10px">         global$9(mainButtonElm).css({
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -9242,26 +9244,26 @@
</span><span class="cx" style="display: block; padding: 0 10px">           height: rect.h - 2
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><span class="cx" style="display: block; padding: 0 10px">         global$9(menuButtonElm).css({ height: rect.h - 2 });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return self;
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       activeMenu: function (state) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        global$9(self$$1.getEl().lastChild).toggleClass(self$$1.classPrefix + 'active', state);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        global$9(self.getEl().lastChild).toggleClass(self.classPrefix + 'active', state);
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       renderHtml: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        var id = self$$1._id;
-        var prefix = self$$1.classPrefix;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        var id = self._id;
+        var prefix = self.classPrefix;
</ins><span class="cx" style="display: block; padding: 0 10px">         var image;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var icon = self$$1.state.get('icon');
-        var text = self$$1.state.get('text');
-        var settings = self$$1.settings;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var icon = self.state.get('icon');
+        var text = self.state.get('text');
+        var settings = self.settings;
</ins><span class="cx" style="display: block; padding: 0 10px">         var textHtml = '', ariaPressed;
</span><span class="cx" style="display: block; padding: 0 10px">         image = settings.image;
</span><span class="cx" style="display: block; padding: 0 10px">         if (image) {
</span><span class="cx" style="display: block; padding: 0 10px">           icon = 'none';
</span><span class="cx" style="display: block; padding: 0 10px">           if (typeof image !== 'string') {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            image = window.getSelection ? image[0] : image[1];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            image = domGlobals.window.getSelection ? image[0] : image[1];
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           image = ' style="background-image: url(\'' + image + '\')"';
</span><span class="cx" style="display: block; padding: 0 10px">         } else {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -9269,15 +9271,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         icon = settings.icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';
</span><span class="cx" style="display: block; padding: 0 10px">         if (text) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.classes.add('btn-has-text');
-          textHtml = '<span class="' + prefix + 'txt">' + self$$1.encode(text) + '</span>';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.classes.add('btn-has-text');
+          textHtml = '<span class="' + prefix + 'txt">' + self.encode(text) + '</span>';
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         ariaPressed = typeof settings.active === 'boolean' ? ' aria-pressed="' + settings.active + '"' : '';
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return '<div id="' + id + '" class="' + self$$1.classes + '" role="button"' + ariaPressed + ' tabindex="-1">' + '<button type="button" hidefocus="1" tabindex="-1">' + (icon ? '<i class="' + icon + '"' + image + '></i>' : '') + textHtml + '</button>' + '<button type="button" class="' + prefix + 'open" hidefocus="1" tabindex="-1">' + (self$$1._menuBtnText ? (icon ? '\xA0' : '') + self$$1._menuBtnText : '') + ' <i class="' + prefix + 'caret"></i>' + '</button>' + '</div>';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return '<div id="' + id + '" class="' + self.classes + '" role="button"' + ariaPressed + ' tabindex="-1">' + '<button type="button" hidefocus="1" tabindex="-1">' + (icon ? '<i class="' + icon + '"' + image + '></i>' : '') + textHtml + '</button>' + '<button type="button" class="' + prefix + 'open" hidefocus="1" tabindex="-1">' + (self._menuBtnText ? (icon ? '\xA0' : '') + self._menuBtnText : '') + ' <i class="' + prefix + 'caret"></i>' + '</button>' + '</div>';
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       postRender: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this, onClickHandler = self$$1.settings.onclick;
-        self$$1.on('click', function (e) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this, onClickHandler = self.settings.onclick;
+        self.on('click', function (e) {
</ins><span class="cx" style="display: block; padding: 0 10px">           var node = e.target;
</span><span class="cx" style="display: block; padding: 0 10px">           if (e.control === this) {
</span><span class="cx" style="display: block; padding: 0 10px">             while (node) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -9292,8 +9294,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        delete self$$1.settings.onclick;
-        return self$$1._super();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        delete self.settings.onclick;
+        return self._super();
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     });
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -9398,43 +9400,43 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var TextBox = Widget.extend({
</span><span class="cx" style="display: block; padding: 0 10px">       init: function (settings) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        self$$1._super(settings);
-        self$$1.classes.add('textbox');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        self._super(settings);
+        self.classes.add('textbox');
</ins><span class="cx" style="display: block; padding: 0 10px">         if (settings.multiline) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.classes.add('multiline');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.classes.add('multiline');
</ins><span class="cx" style="display: block; padding: 0 10px">         } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.on('keydown', function (e) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.on('keydown', function (e) {
</ins><span class="cx" style="display: block; padding: 0 10px">             var rootControl;
</span><span class="cx" style="display: block; padding: 0 10px">             if (e.keyCode === 13) {
</span><span class="cx" style="display: block; padding: 0 10px">               e.preventDefault();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              self$$1.parents().reverse().each(function (ctrl) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              self.parents().reverse().each(function (ctrl) {
</ins><span class="cx" style="display: block; padding: 0 10px">                 if (ctrl.toJSON) {
</span><span class="cx" style="display: block; padding: 0 10px">                   rootControl = ctrl;
</span><span class="cx" style="display: block; padding: 0 10px">                   return false;
</span><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px">               });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              self$$1.fire('submit', { data: rootControl.toJSON() });
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              self.fire('submit', { data: rootControl.toJSON() });
</ins><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.on('keyup', function (e) {
-            self$$1.state.set('value', e.target.value);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.on('keyup', function (e) {
+            self.state.set('value', e.target.value);
</ins><span class="cx" style="display: block; padding: 0 10px">           });
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       repaint: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">         var style, rect, borderBox, borderW, borderH = 0, lastRepaintRect;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        style = self$$1.getEl().style;
-        rect = self$$1._layoutRect;
-        lastRepaintRect = self$$1._lastRepaintRect || {};
-        var doc = document;
-        if (!self$$1.settings.multiline && doc.all && (!doc.documentMode || doc.documentMode <= 8)) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        style = self.getEl().style;
+        rect = self._layoutRect;
+        lastRepaintRect = self._lastRepaintRect || {};
+        var doc = domGlobals.document;
+        if (!self.settings.multiline && doc.all && (!doc.documentMode || doc.documentMode <= 8)) {
</ins><span class="cx" style="display: block; padding: 0 10px">           style.lineHeight = rect.h - borderH + 'px';
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        borderBox = self$$1.borderBox;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        borderBox = self.borderBox;
</ins><span class="cx" style="display: block; padding: 0 10px">         borderW = borderBox.left + borderBox.right + 8;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        borderH = borderBox.top + borderBox.bottom + (self$$1.settings.multiline ? 8 : 0);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        borderH = borderBox.top + borderBox.bottom + (self.settings.multiline ? 8 : 0);
</ins><span class="cx" style="display: block; padding: 0 10px">         if (rect.x !== lastRepaintRect.x) {
</span><span class="cx" style="display: block; padding: 0 10px">           style.left = rect.x + 'px';
</span><span class="cx" style="display: block; padding: 0 10px">           lastRepaintRect.x = rect.x;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -9451,16 +9453,16 @@
</span><span class="cx" style="display: block; padding: 0 10px">           style.height = rect.h - borderH + 'px';
</span><span class="cx" style="display: block; padding: 0 10px">           lastRepaintRect.h = rect.h;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1._lastRepaintRect = lastRepaintRect;
-        self$$1.fire('repaint', {}, false);
-        return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self._lastRepaintRect = lastRepaintRect;
+        self.fire('repaint', {}, false);
+        return self;
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       renderHtml: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        var settings = self$$1.settings;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        var settings = self.settings;
</ins><span class="cx" style="display: block; padding: 0 10px">         var attrs, elm;
</span><span class="cx" style="display: block; padding: 0 10px">         attrs = {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          id: self$$1._id,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          id: self._id,
</ins><span class="cx" style="display: block; padding: 0 10px">           hidefocus: '1'
</span><span class="cx" style="display: block; padding: 0 10px">         };
</span><span class="cx" style="display: block; padding: 0 10px">         global$2.each([
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -9477,10 +9479,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">           'placeholder',
</span><span class="cx" style="display: block; padding: 0 10px">           'required',
</span><span class="cx" style="display: block; padding: 0 10px">           'multiple'
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        ], function (name$$1) {
-          attrs[name$$1] = settings[name$$1];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        ], function (name) {
+          attrs[name] = settings[name];
</ins><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (self$$1.disabled()) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (self.disabled()) {
</ins><span class="cx" style="display: block; padding: 0 10px">           attrs.disabled = 'disabled';
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (settings.subtype) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -9487,8 +9489,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">           attrs.type = settings.subtype;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         elm = funcs.create(settings.multiline ? 'textarea' : 'input', attrs);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        elm.value = self$$1.state.get('value');
-        elm.className = self$$1.classes.toString();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        elm.value = self.state.get('value');
+        elm.className = self.classes.toString();
</ins><span class="cx" style="display: block; padding: 0 10px">         return elm.outerHTML;
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       value: function (value) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -9502,25 +9504,25 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return this.state.get('value');
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       postRender: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        self$$1.getEl().value = self$$1.state.get('value');
-        self$$1._super();
-        self$$1.$el.on('change', function (e) {
-          self$$1.state.set('value', e.target.value);
-          self$$1.fire('change', e);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        self.getEl().value = self.state.get('value');
+        self._super();
+        self.$el.on('change', function (e) {
+          self.state.set('value', e.target.value);
+          self.fire('change', e);
</ins><span class="cx" style="display: block; padding: 0 10px">         });
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       bindStates: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        self$$1.state.on('change:value', function (e) {
-          if (self$$1.getEl().value !== e.value) {
-            self$$1.getEl().value = e.value;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        self.state.on('change:value', function (e) {
+          if (self.getEl().value !== e.value) {
+            self.getEl().value = e.value;
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.state.on('change:disabled', function (e) {
-          self$$1.getEl().disabled = e.value;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.state.on('change:disabled', function (e) {
+          self.getEl().disabled = e.value;
</ins><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return self$$1._super();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return self._super();
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       remove: function () {
</span><span class="cx" style="display: block; padding: 0 10px">         this.$el.off();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -9543,7 +9545,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         Movable: Movable,
</span><span class="cx" style="display: block; padding: 0 10px">         Resizable: Resizable,
</span><span class="cx" style="display: block; padding: 0 10px">         FloatPanel: FloatPanel,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        Window: Window$$1,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        Window: Window,
</ins><span class="cx" style="display: block; padding: 0 10px">         MessageBox: MessageBox,
</span><span class="cx" style="display: block; padding: 0 10px">         Tooltip: Tooltip,
</span><span class="cx" style="display: block; padding: 0 10px">         Widget: Widget,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -9623,5 +9625,5 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     return Theme;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-}());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+}(window));
</ins><span class="cx" style="display: block; padding: 0 10px"> })();
</span></span></pre></div>
<a id="trunksrcjs_enqueuesvendortinymcethemesmodernthememinjs"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/js/_enqueues/vendor/tinymce/themes/modern/theme.min.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/js/_enqueues/vendor/tinymce/themes/modern/theme.min.js  2019-05-15 19:53:42 UTC (rev 45315)
+++ trunk/src/js/_enqueues/vendor/tinymce/themes/modern/theme.min.js    2019-05-15 23:44:37 UTC (rev 45316)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1 +1 @@
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-!function(){"use strict";var e,t,n,i,r,o=tinymce.util.Tools.resolve("tinymce.ThemeManager"),h=tinymce.util.Tools.resolve("tinymce.EditorManager"),w=tinymce.util.Tools.resolve("tinymce.util.Tools"),d=function(e){return!1!==c(e)},c=function(e){return e.getParam("menubar")},f=function(e){return e.getParam("toolbar_items_size")},m=function(e){return e.getParam("menu")},g=function(e){return!1===e.settings.skin},p=function(e){var t=e.getParam("resize","vertical");return!1===t?"none":"both"===t?"both":"vertical"},v=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),b=tinymce.util.Tools.resolve("tinymce.ui.Factory"),y=tinymce.util.Tools.resolve("tinymce.util.I18n"),s=function(e){return e.fire("SkinLoaded")},x=function(e){return 
 e.fire("ResizeEditor")},_=function(e){return e.fire("BeforeRenderUI")},a=function(t,n){return function(){var e=t.find(n)[0];e&&e.focus(!0)}},R=function(e,t){e.shortcuts.add("Alt+F9","",a(t,"menubar")),e.shortcuts.add("Alt+F10,F10","",a(t,"toolbar")),e.shortcuts.add("Alt+F11","",a(t,"elementpath")),t.on("cancel",function(){e.focus()})},C=tinymce.util.Tools.resolve("tinymce.geom.Rect"),u=tinymce.util.Tools.resolve("tinymce.util.Delay"),E=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t]},k=function(e){return function(){return e}},l=k(!1),H=k(!0),S=l,T=H,M=function(){return N},N=(i={fold:function(e,t){return e()},is:S,isSome:S,isNone:T,getOr:n=function(e){return e},getOrThunk:t=function(e){return e()},getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:function(){return null}
 ,getOrUndefined:function(){return undefined},or:n,orThunk:t,map:M,ap:M,each:function(){},bind:M,flatten:M,exists:S,forall:T,filter:M,equals:e=function(e){return e.isNone()},equals_:e,toArray:function(){return[]},toString:k("none()")},Object.freeze&&Object.freeze(i),i),P=function(n){var e=function(){return n},t=function(){return r},i=function(e){return e(n)},r={fold:function(e,t){return t(n)},is:function(e){return n===e},isSome:T,isNone:S,getOr:e,getOrThunk:e,getOrDie:e,getOrNull:e,getOrUndefined:e,or:t,orThunk:t,map:function(e){return P(e(n))},ap:function(e){return e.fold(M,function(e){return P(e(n))})},each:function(e){e(n)},bind:i,flatten:e,exists:i,forall:i,filter:function(e){return e(n)?r:N},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 r},W={some:P,none:M,from:function(e){return null===e||e===undefined?N:P(e
 )}},D=function(e){return e?e.getRoot().uiContainer:null},O={getUiContainerDelta:function(e){var t=D(e);if(t&&"static"!==v.DOM.getStyle(t,"position",!0)){var n=v.DOM.getPos(t),i=t.scrollLeft-n.x,r=t.scrollTop-n.y;return W.some({x:i,y:r})}return W.none()},setUiContainer:function(e,t){var n=v.DOM.select(e.settings.ui_container)[0];t.getRoot().uiContainer=n},getUiContainer:D,inheritUiContainer:function(e,t){return t.uiContainer=D(e)}},A=function(i,e,r){var o,s=[];if(e)return w.each(e.split(/[ ,]/),function(t){var e,n=function(){var e=i.selection;t.settings.stateSelector&&e.selectorChanged(t.settings.stateSelector,function(e){t.active(e)},!0),t.settings.disabledStateSelector&&e.selectorChanged(t.settings.disabledStateSelector,function(e){t.disabled(e)})};"|"===t?o=null:(o||(o={type:"buttongroup",items:[]},s.push(o)),i.buttons[t]&&(e=t,"function"==typeof(t=i.buttons[e])&&(t=t()),t.type=t.type||"
 button",t.size=r,t=b.create(t),o.items.push(t),i.initialized?n():i.on("init",n)))}),{type:"toolbar",layout:"flow",items:s}},B=A,L=function(n,i){var e,t,r=[];if(w.each(!1===(t=(e=n).getParam("toolbar"))?[]:w.isArray(t)?w.grep(t,function(e){return 0<e.length}):function(e,t){for(var n=[],i=1;i<10;i++){var r=e["toolbar"+i];if(!r)break;n.push(r)}var o=e.toolbar?[e.toolbar]:[t];return 0<n.length?n:o}(e.settings,"undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image"),function(e){var t;(t=e)&&r.push(A(n,t,i))}),r.length)return{type:"panel",layout:"stack",classes:"toolbar-grp",ariaRoot:!0,ariaRemember:!0,items:r}},z=v.DOM,I=function(e){return{left:e.x,top:e.y,width:e.w,height:e.h,right:e.x+e.w,bottom:e.y+e.h}},F=function(e,t){e.moveTo(t.left,t.top)},U=function(e,t,n,i,r,o){return o=I({x:t,y:n,w:o.w,h:o.h
 }),e&&(o=e({elementRect:I(i),contentAreaRect:I(r),panelRect:o})),o},V=function(x){var i,o=function(){return x.contextToolbars||[]},n=function(e,t){var n,i,r,o,s,a,l,u=x.getParam("inline_toolbar_position_handler");if(!x.removed){if(!e||!e.toolbar.panel)return c=x,void w.each(c.contextToolbars,function(e){e.panel&&e.panel.hide()});var c,d,f,h,m;l=["bc-tc","tc-bc","tl-bl","bl-tl","tr-br","br-tr"],s=e.toolbar.panel,t&&s.show(),d=e.element,f=z.getPos(x.getContentAreaContainer()),h=x.dom.getRect(d),"BODY"===(m=x.dom.getRoot()).nodeName&&(h.x-=m.ownerDocument.documentElement.scrollLeft||m.scrollLeft,h.y-=m.ownerDocument.documentElement.scrollTop||m.scrollTop),h.x+=f.x,h.y+=f.y,r=h,i=z.getRect(s.getEl()),o=z.getRect(x.getContentAreaContainer()||x.getBody());var g,p,v,b=O.getUiContainerDelta(s).getOr({x:0,y:0});if(r.x+=b.x,r.y+=b.y,i.x+=b.x,i.y+=b.y,o.x+=b.x,o.y+=b.y,"inline&q
 uot;!==z.getStyle(e.element,"display",!0)){var y=e.element.getBoundingClientRect();r.w=y.width,r.h=y.height}x.inline||(o.w=x.getDoc().documentElement.offsetWidth),x.selection.controlSelection.isResizable(e.element)&&r.w<25&&(r=C.inflate(r,0,8)),n=C.findBestRelativePosition(i,r,o,l),r=C.clamp(r,o),n?(a=C.relativePosition(i,r,n),F(s,U(u,a.x,a.y,r,o,i))):(o.h+=i.h,(r=C.intersect(o,r))?(n=C.findBestRelativePosition(i,r,o,["bc-tc","bl-tl","br-tr"]))?(a=C.relativePosition(i,r,n),F(s,U(u,a.x,a.y,r,o,i))):F(s,U(u,r.x,r.y,r,o,i)):s.hide()),g=s,v=function(e,t){return e===t},p=(p=n)?p.substr(0,2):"",w.each({t:"down",b:"up"},function(e,t){g.classes.toggle("arrow-"+e,v(t,p.substr(0,1)))}),w.each({l:"left",r:"right"},function(e,t){g.classes.toggle("arrow-"+e,v(t,p.substr(1,1)))})}},r=function(e){return function(){u.requestAnimationFrame(function(){x.selection&&n
 (a(x.selection.getNode()),e)})}},t=function(e){var t;if(e.toolbar.panel)return e.toolbar.panel.show(),void n(e);t=b.create({type:"floatpanel",role:"dialog",classes:"tinymce tinymce-inline arrow",ariaLabel:"Inline toolbar",layout:"flex",direction:"column",align:"stretch",autohide:!1,autofix:!0,fixed:!0,border:1,items:B(x,e.toolbar.items),oncancel:function(){x.focus()}}),O.setUiContainer(x,t),function(e){if(!i){var t=r(!0),n=O.getUiContainer(e);i=x.selection.getScrollContainer()||x.getWin(),z.bind(i,"scroll",t),z.bind(n,"scroll",t),x.on("remove",function(){z.unbind(i,"scroll",t),z.unbind(n,"scroll",t)})}}(t),(e.toolbar.panel=t).renderTo().reflow(),n(e)},s=function(){w.each(o(),function(e){e.panel&&e.panel.hide()})},a=function(e){var t,n,i,r=o();for(t=(i=x.$(e).parents().add(e)).length-1;0<=t;t--)for(n=r.length-1;0<=n;n--)if(r[n].predicate(i[t]))return{t
 oolbar:r[n],element:i[t]};return null};x.on("click keyup setContent ObjectResized",function(e){("setcontent"!==e.type||e.selection)&&u.setEditorTimeout(x,function(){var e;(e=a(x.selection.getNode()))?(s(),t(e)):s()})}),x.on("blur hide contextmenu",s),x.on("ObjectResizeStart",function(){var e=a(x.selection.getNode());e&&e.toolbar.panel&&e.toolbar.panel.hide()}),x.on("ResizeEditor ResizeWindow",r(!0)),x.on("nodeChange",r(!1)),x.on("remove",function(){w.each(o(),function(e){e.panel&&e.panel.remove()}),x.contextToolbars={}}),x.shortcuts.add("ctrl+F9","",function(){var e=a(x.selection.getNode());e&&e.toolbar.panel&&e.toolbar.panel.items()[0].focus()})},Y=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}},$=Y("function"),q=Y("number"),X=(r=Array.prototype.indexOf)===undefined?function(e,t){return Q(e,t)}:function(e,t){return r.call(e,t)},j=function(e,t){return Z(e,t).isSome()},J=function(e,t){for(var n=e.length,i=new Array(n),r=0;r<n;r++){var o=e[r];i[r]=t(o,r,e)}return i},G=function(e,t){for(var n=0,i=e.length;n<i;n++)t(e[n],n,e)},K=function(e,t){for(var n=[],i=0,r=e.length;i<r;i++){var o=e[i];t(o,i,e)&&n.push(o)}return n},Z=function(e,t){for(var n=0,i=e.length;n<i;n++)if(t(e[n],n,e))return W.some(n);return W.none()},Q=function(e,t){for(var n=0,i=e.length;n<i;++n)if(e[n]===t)return n;return-1},ee=Array.prototype.push,te=(Array.prototype.slice,$(Array.from)&&Array.from,{file:{title:"File",items:"newdocument restoredraft | preview | print"},edit:{title:"Edit",items:"undo redo | cut copy paste pastetext | selectall&qu
 ot;},view:{title:"View",items:"code | visualaid visualchars visualblocks | spellchecker | preview fullscreen"},insert:{title:"Insert",items:"image link media template codesample inserttable | charmap hr | pagebreak nonbreaking anchor toc | insertdatetime"},format:{title:"Format",items:"bold italic underline strikethrough superscript subscript codeformat | blockformats align | removeformat"},tools:{title:"Tools",items:"spellchecker spellcheckerlanguage | a11ycheck code"},table:{title:"Table"},help:{title:"Help"}}),ne=function(e,t){return"|"===e?{name:"|",item:{text:"|"}}:t?{name:e,item:t}:null},ie=function(e){return e&&"|"===e.item.text},re=function(n,e,t,i){var r,o,s,a,l,u,c;return e?(o=e[i],a=!0):o=te[i],o&&(r={text:o.title},s=[],w.each((o.items||"").split(/[ ,]/),function(e){var t=ne(e,n[e]);t&&s.push(t)}),a||
 w.each(n,function(e,t){var n;e.context!==i||(n=t,Z(s,function(e){return e.name===n}).isSome())||("before"===e.separator&&s.push({name:"|",item:{text:"|"}}),e.prependToContext?s.unshift(ne(t,e)):s.push(ne(t,e)),"after"===e.separator&&s.push({name:"|",item:{text:"|"}}))}),r.menu=J((l=t,u=K(s,function(e){return!1===l.hasOwnProperty(e.name)}),c=K(u,function(e,t,n){return!ie(e)||!ie(n[t-1])}),K(c,function(e,t,n){return!ie(e)||0<t&&t<n.length-1})),function(e){return e.item}),!r.menu.length)?null:r},oe=function(e){for(var t,n=[],i=function(e){var t,n=[],i=m(e);if(i)for(t in i)n.push(t);else for(t in te)n.push(t);return n}(e),r=w.makeMap((t=e,t.getParam("removed_menuitems","")).split(/[ ,]/)),o=c(e),s="string"==typeof o?o.split(/[ ,]/):i,a=0;a<s.length;a++){var l=s[a],u=re(e.menuItems,m(e),r,l);u&&n.push(u)}return n},se=v.DOM,ae=function(e){return{width:e.client
 Width,height:e.clientHeight}},le=function(e,t,n){var i,r,o,s;i=e.getContainer(),r=e.getContentAreaContainer().firstChild,o=ae(i),s=ae(r),null!==t&&(t=Math.max(e.getParam("min_width",100,"number"),t),t=Math.min(e.getParam("max_width",65535,"number"),t),se.setStyle(i,"width",t+(o.width-s.width)),se.setStyle(r,"width",t)),n=Math.max(e.getParam("min_height",100,"number"),n),n=Math.min(e.getParam("max_height",65535,"number"),n),se.setStyle(r,"height",n),x(e)},ue=le,ce=function(e,t,n){var i=e.getContentAreaContainer();le(e,i.clientWidth+t,i.clientHeight+n)},de=tinymce.util.Tools.resolve("tinymce.Env"),fe=function(e,t,n){var i,r=e.settings[n];r&&r((i=t.getEl("body"),{element:function(){return i}}))},he=function(c,d,f){return function(e){var t,n,i,r,o,s=e.control,a=s.parents().filter("panel")[0],l=a.find("#"+d)[0],u=(t=f,n=d,w.
 grep(t,function(e){return e.name===n})[0]);i=d,r=a,o=f,w.each(o,function(e){var t=r.items().filter("#"+e.name)[0];t&&t.visible()&&e.name!==i&&(fe(e,t,"onhide"),t.visible(!1))}),s.parent().items().each(function(e){e.active(!1)}),l&&l.visible()?(fe(u,l,"onhide"),l.hide(),s.active(!1)):(l?l.show():(l=b.create({type:"container",name:d,layout:"stack",classes:"sidebar-panel",html:""}),a.prepend(l),fe(u,l,"onrender")),fe(u,l,"onshow"),s.active(!0)),x(c)}},me=function(e){return!(de.ie&&!(11<=de.ie)||!e.sidebars)&&0<e.sidebars.length},ge=function(n){return{type:"panel",name:"sidebar",layout:"stack",classes:"sidebar",items:[{type:"toolbar",layout:"stack",classes:"sidebar-toolbar",items:w.map(n.sidebars,function(e){var t=e.settings;return{type:"button",icon:t.icon,image:t.i
 mage,tooltip:t.tooltip,onclick:he(n,e.name,n.sidebars)}})}]}},pe=function(e){var t=function(){e._skinLoaded=!0,s(e)};return function(){e.initialized?t():e.on("init",t)}},ve=v.DOM,be=function(e){return{type:"panel",name:"iframe",layout:"stack",classes:"edit-area",border:e,html:""}},ye=function(t,e,n){var i,r,o,s,a;if(!1===g(t)&&n.skinUiCss?ve.styleSheetLoader.load(n.skinUiCss,pe(t)):pe(t)(),i=e.panel=b.create({type:"panel",role:"application",classes:"tinymce",style:"visibility: hidden",layout:"stack",border:1,items:[{type:"container",classes:"top-part",items:[!1===d(t)?null:{type:"menubar",border:"0 0 1 0",items:oe(t)},L(t,f(t))]},me(t)?(s=t,{type:"panel",layout:"stack",classes:"edit-aria-container",border:"1 0 0 0",items:[be("0"),ge(s)]}):be("1 0 0 0")]}),O.setUiContai
 ner(t,i),"none"!==p(t)&&(r={type:"resizehandle",direction:p(t),onResizeStart:function(){var e=t.getContentAreaContainer().firstChild;o={width:e.clientWidth,height:e.clientHeight}},onResize:function(e){"both"===p(t)?ue(t,o.width+e.deltaX,o.height+e.deltaY):ue(t,null,o.height+e.deltaY)}}),t.getParam("statusbar",!0,"boolean")){var l=y.translate(["Powered by {0}",'<a href="https://www.tiny.cloud/?utm_campaign=editor_referral&amp;utm_medium=poweredby&amp;utm_source=tinymce" rel="noopener" target="_blank" role="presentation" tabindex="-1">Tiny</a>']),u=t.getParam("branding",!0,"boolean")?{type:"label",classes:"branding",html:" "+l}:null;i.add({type:"panel",name:"statusbar",classes:"statusbar",layout:"flow",border:"1 0 0 0",ariaRoot:!0,items:[{type:"e
 lementpath",editor:t},r,u]})}return _(t),t.on("SwitchMode",(a=i,function(e){a.find("*").disabled("readonly"===e.mode)})),i.renderBefore(n.targetNode).reflow(),t.getParam("readonly",!1,"boolean")&&t.setMode("readonly"),n.width&&ve.setStyle(i.getEl(),"width",n.width),t.on("remove",function(){i.remove(),i=null}),R(t,i),V(t),{iframeContainer:i.find("#iframe")[0].getEl(),editorContainer:i.getEl()}},xe=tinymce.util.Tools.resolve("tinymce.dom.DomQuery"),we=0,_e={id:function(){return"mceu_"+we++},create:function(e,t,n){var i=document.createElement(e);return v.DOM.setAttribs(i,t),"string"==typeof n?i.innerHTML=n:w.each(n,function(e){e.nodeType&&i.appendChild(e)}),i},createFragment:function(e){return v.DOM.createFragment(e)},getWindowSize:function(){return v.DOM.getViewPort()},getSize:function(e){var t,n;if(e.getBoundingClientRect){var i=e.getBou
 ndingClientRect();t=Math.max(i.width||i.right-i.left,e.offsetWidth),n=Math.max(i.height||i.bottom-i.bottom,e.offsetHeight)}else t=e.offsetWidth,n=e.offsetHeight;return{width:t,height:n}},getPos:function(e,t){return v.DOM.getPos(e,t||_e.getContainer())},getContainer:function(){return de.container?de.container:document.body},getViewPort:function(e){return v.DOM.getViewPort(e)},get:function(e){return document.getElementById(e)},addClass:function(e,t){return v.DOM.addClass(e,t)},removeClass:function(e,t){return v.DOM.removeClass(e,t)},hasClass:function(e,t){return v.DOM.hasClass(e,t)},toggleClass:function(e,t,n){return v.DOM.toggleClass(e,t,n)},css:function(e,t,n){return v.DOM.setStyle(e,t,n)},getRuntimeStyle:function(e,t){return v.DOM.getStyle(e,t,!0)},on:function(e,t,n,i){return v.DOM.bind(e,t,n,i)},off:function(e,t,n){return v.DOM.unbind(e,t,n)},fire:function(e,t,n){return v.DOM.fire(e,t,n)},innerHtml:function(e,t){v.DOM.setHTML(e,t)}},Re=function(e){return"static"===_e.get
 RuntimeStyle(e,"position")},Ce=function(e){return e.state.get("fixed")};function Ee(e,t,n){var i,r,o,s,a,l,u,c,d,f;return d=ke(),o=(r=_e.getPos(t,O.getUiContainer(e))).x,s=r.y,Ce(e)&&Re(document.body)&&(o-=d.x,s-=d.y),i=e.getEl(),a=(f=_e.getSize(i)).width,l=f.height,u=(f=_e.getSize(t)).width,c=f.height,"b"===(n=(n||"").split(""))[0]&&(s+=c),"r"===n[1]&&(o+=u),"c"===n[0]&&(s+=Math.round(c/2)),"c"===n[1]&&(o+=Math.round(u/2)),"b"===n[3]&&(s-=l),"r"===n[4]&&(o-=a),"c"===n[3]&&(s-=Math.round(l/2)),"c"===n[4]&&(o-=Math.round(a/2)),{x:o,y:s,w:a,h:l}}var ke=function(){var e=window;return{x:Math.max(e.pageXOffset,document.body.scrollLeft,document.documentElement.scrollLeft),y:Math.max(e.pageYOffset,document.body.scrollTop,document.documentElement.scrollTop),w:e.innerWidth||document.documentElem
 ent.clientWidth,h:e.innerHeight||document.documentElement.clientHeight}},He=function(e){var t,n=O.getUiContainer(e);return n&&!Ce(e)?{x:0,y:0,w:(t=n).scrollWidth-1,h:t.scrollHeight-1}:ke()},Se={testMoveRel:function(e,t){for(var n=He(this),i=0;i<t.length;i++){var r=Ee(this,e,t[i]);if(Ce(this)){if(0<r.x&&r.x+r.w<n.w&&0<r.y&&r.y+r.h<n.h)return t[i]}else if(r.x>n.x&&r.x+r.w<n.w+n.x&&r.y>n.y&&r.y+r.h<n.h+n.y)return t[i]}return t[0]},moveRel:function(e,t){"string"!=typeof t&&(t=this.testMoveRel(e,t));var n=Ee(this,e,t);return this.moveTo(n.x,n.y)},moveBy:function(e,t){var n=this.layoutRect();return this.moveTo(n.x+e,n.y+t),this},moveTo:function(e,t){var n=this;function i(e,t,n){return e<0?0:t<e+n&&(e=t-n)<0?0:e}if(n.settings.constrainToViewport){var r=He(this),o=n.layoutRect();e=i(e,r.w+r.x,o.w),t=i(t,r.h+r.y,o.h)}var s=O.getUiContainer(n);return s&&Re(s)&&
 !Ce(n)&&(e-=s.scrollLeft,t-=s.scrollTop),s&&(e+=1,t+=1),n.state.get("rendered")?n.layoutRect({x:e,y:t}).repaint():(n.settings.x=e,n.settings.y=t),n.fire("move",{x:e,y:t}),n}},Te=tinymce.util.Tools.resolve("tinymce.util.Class"),Me=tinymce.util.Tools.resolve("tinymce.util.EventDispatcher"),Ne=function(e){var t;if(e)return"number"==typeof e?{top:e=e||0,left:e,bottom:e,right:e}:(1===(t=(e=e.split(" ")).length)?e[1]=e[2]=e[3]=e[0]:2===t?(e[2]=e[0],e[3]=e[1]):3===t&&(e[3]=e[1]),{top:parseInt(e[0],10)||0,right:parseInt(e[1],10)||0,bottom:parseInt(e[2],10)||0,left:parseInt(e[3],10)||0})},Pe=function(i,e){function t(e){var t=parseFloat(function(e){var t=i.ownerDocument.defaultView;if(t){var n=t.getComputedStyle(i,null);return n?(e=e.replace(/[A-Z]/g,function(e){return"-"+e}),n.getPropertyValue(e)):null}return i.currentStyle[e]}(e));return isNaN(t)?0:t}return{top:t(e+"TopWidth"),right:t(e+&
 quot;RightWidth"),bottom:t(e+"BottomWidth"),left:t(e+"LeftWidth")}};function We(){}function De(e){this.cls=[],this.cls._map={},this.onchange=e||We,this.prefix=""}w.extend(De.prototype,{add:function(e){return e&&!this.contains(e)&&(this.cls._map[e]=!0,this.cls.push(e),this._change()),this},remove:function(e){if(this.contains(e)){var t=void 0;for(t=0;t<this.cls.length&&this.cls[t]!==e;t++);this.cls.splice(t,1),delete this.cls._map[e],this._change()}return this},toggle:function(e,t){var n=this.contains(e);return n!==t&&(n?this.remove(e):this.add(e),this._change()),this},contains:function(e){return!!this.cls._map[e]},_change:function(){delete this.clsValue,this.onchange.call(this)}}),De.prototype.toString=function(){var e;if(this.clsValue)return this.clsValue;e="";for(var t=0;t<this.cls.length;t++)0<t&&(e+=" "),e+=this.prefix+this.cls[t];return e};var Oe,Ae,Be,Le=/^([\w\\*]+)?(?:#([\w
 \-\\]+))?(?:\.([\w\\\.]+))?(?:\[\@?([\w\\]+)([\^\$\*!~]?=)([\w\\]+)\])?(?:\:(.+))?/i,ze=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,Ie=/^\s*|\s*$/g,Fe=Te.extend({init:function(e){var o=this.match;function s(e,t,n){var i;function r(e){e&&t.push(e)}return r(function(t){if(t)return t=t.toLowerCase(),function(e){return"*"===t||e.type===t}}((i=Le.exec(e.replace(Ie,"")))[1])),r(function(t){if(t)return function(e){return e._name===t}}(i[2])),r(function(n){if(n)return n=n.split("."),function(e){for(var t=n.length;t--;)if(!e.classes.contains(n[t]))return!1;return!0}}(i[3])),r(function(n,i,r){if(n)return function(e){var t=e[n]?e[n]():"";return i?"="===i?t===r:"*="===i?0<=t.indexOf(r):"~="===i?0<=(" "+t+" ").indexOf(" "+r+" "):"!="===i?t!==r:"
 ^="===i?0===t.indexOf(r):"$="===i&&t.substr(t.length-r.length)===r:!!r}}(i[4],i[5],i[6])),r(function(i){var t;if(i)return(i=/(?:not\((.+)\))|(.+)/i.exec(i))[1]?(t=a(i[1],[]),function(e){return!o(e,t)}):(i=i[2],function(e,t,n){return"first"===i?0===t:"last"===i?t===n-1:"even"===i?t%2==0:"odd"===i?t%2==1:!!e[i]&&e[i]()})}(i[7])),t.pseudo=!!i[7],t.direct=n,t}function a(e,t){var n,i,r,o=[];do{if(ze.exec(""),(i=ze.exec(e))&&(e=i[3],o.push(i[1]),i[2])){n=i[3];break}}while(i);for(n&&a(n,t),e=[],r=0;r<o.length;r++)">"!==o[r]&&e.push(s(o[r],[],">"===o[r-1]));return t.push(e),t}this._selectors=a(e,[])},match:function(e,t){var n,i,r,o,s,a,l,u,c,d,f,h,m;for(n=0,i=(t=t||this._selectors).length;n<i;n++){for(m=e,h=0,r=(o=(s=t[n]).length)-1;0<=r;r--)for(u=s[r];m;){if(u.pseudo)for(c=d=(f=m.parent().items()).length;c--&&f[c]!==m;);for(a=0,l=u.length;a<
 l;a++)if(!u[a](m,c,d)){a=l+1;break}if(a===l){h++;break}if(r===o-1)break;m=m.parent()}if(h===o)return!0}return!1},find:function(e){var t,n,u=[],i=this._selectors;function c(e,t,n){var i,r,o,s,a,l=t[n];for(i=0,r=e.length;i<r;i++){for(a=e[i],o=0,s=l.length;o<s;o++)if(!l[o](a,i,r)){o=s+1;break}if(o===s)n===t.length-1?u.push(a):a.items&&c(a.items(),t,n+1);else if(l.direct)return;a.items&&c(a.items(),t,n)}}if(e.items){for(t=0,n=i.length;t<n;t++)c(e.items(),i[t],0);1<n&&(u=function(e){for(var t,n=[],i=e.length;i--;)(t=e[i]).__checked||(n.push(t),t.__checked=1);for(i=n.length;i--;)delete n[i].__checked;return n}(u))}return Oe||(Oe=Fe.Collection),new Oe(u)}}),Ue=Array.prototype.push,Ve=Array.prototype.slice;Be={length:0,init:function(e){e&&this.add(e)},add:function(e){return w.isArray(e)?Ue.apply(this,e):e instanceof Ae?this.add(e.toArray()):Ue.call(this,e),this},set:function(e){var t,n=this,i=n.length;for(n.length=0,n.add(e),t=n.length;t<i;t++)
 delete n[t];return n},filter:function(t){var e,n,i,r,o=[];for("string"==typeof t?(t=new Fe(t),r=function(e){return t.match(e)}):r=t,e=0,n=this.length;e<n;e++)r(i=this[e])&&o.push(i);return new Ae(o)},slice:function(){return new Ae(Ve.apply(this,arguments))},eq:function(e){return-1===e?this.slice(e):this.slice(e,+e+1)},each:function(e){return w.each(this,e),this},toArray:function(){return w.toArray(this)},indexOf:function(e){for(var t=this.length;t--&&this[t]!==e;);return t},reverse:function(){return new Ae(w.toArray(this).reverse())},hasClass:function(e){return!!this[0]&&this[0].classes.contains(e)},prop:function(t,n){var e;return n!==undefined?(this.each(function(e){e[t]&&e[t](n)}),this):(e=this[0])&&e[t]?e[t]():void 0},exec:function(t){var n=w.toArray(arguments).slice(1);return this.each(function(e){e[t]&&e[t].apply(e,n)}),this},remove:function(){for(var e=this.length;e--;)this[e].remove();return this},addClass:function(
 t){return this.each(function(e){e.classes.add(t)})},removeClass:function(t){return this.each(function(e){e.classes.remove(t)})}},w.each("fire on off show hide append prepend before after reflow".split(" "),function(n){Be[n]=function(){var t=w.toArray(arguments);return this.each(function(e){n in e&&e[n].apply(e,t)}),this}}),w.each("text name disabled active selected checked visible parent value data".split(" "),function(t){Be[t]=function(e){return this.prop(t,e)}}),Ae=Te.extend(Be);var Ye=Fe.Collection=Ae,$e=function(e){this.create=e.create};$e.create=function(r,o){return new $e({create:function(t,n){var i,e=function(e){t.set(n,e.value)};return t.on("change:"+n,function(e){r.set(o,e.value)}),r.on("change:"+o,e),(i=t._bindings)||(i=t._bindings=[],t.on("destroy",function(){for(var e=i.length;e--;)i[e]()})),i.push(function(){r.off("change:"+o,e)}),r.get(o)}})};var qe=tinymce.util.Tools.resolve("
 tinymce.util.Observable");function Xe(e){return 0<e.nodeType}var je,Je,Ge=Te.extend({Mixins:[qe],init:function(e){var t,n;for(t in e=e||{})(n=e[t])instanceof $e&&(e[t]=n.create(this,t));this.data=e},set:function(t,n){var i,r,o=this.data[t];if(n instanceof $e&&(n=n.create(this,t)),"object"==typeof t){for(i in t)this.set(i,t[i]);return this}return function e(t,n){var i,r;if(t===n)return!0;if(null===t||null===n)return t===n;if("object"!=typeof t||"object"!=typeof n)return t===n;if(w.isArray(n)){if(t.length!==n.length)return!1;for(i=t.length;i--;)if(!e(t[i],n[i]))return!1}if(Xe(t)||Xe(n))return t===n;for(i in r={},n){if(!e(t[i],n[i]))return!1;r[i]=!0}for(i in t)if(!r[i]&&!e(t[i],n[i]))return!1;return!0}(o,n)||(this.data[t]=n,r={target:this,name:t,value:n,oldValue:o},this.fire("change:"+t,r),this.fire("change",r)),this},get:function(e){return this.data[e]},has:function(e){return e in this.data},bind:functio
 n(e){return $e.create(this,e)},destroy:function(){this.fire("destroy")}}),Ke={},Ze={add:function(e){var t=e.parent();if(t){if(!t._layout||t._layout.isNative())return;Ke[t._id]||(Ke[t._id]=t),je||(je=!0,u.requestAnimationFrame(function(){var e,t;for(e in je=!1,Ke)(t=Ke[e]).state.get("rendered")&&t.reflow();Ke={}},document.body))}},remove:function(e){Ke[e._id]&&delete Ke[e._id]}},Qe="onmousewheel"in document,et=!1,tt=0,nt={Statics:{classPrefix:"mce-"},isRtl:function(){return Je.rtl},classPrefix:"mce-",init:function(t){var e,n,i=this;function r(e){var t;for(e=e.split(" "),t=0;t<e.length;t++)i.classes.add(e[t])}i.settings=t=w.extend({},i.Defaults,t),i._id=t.id||"mceu_"+tt++,i._aria={role:t.role},i._elmCache={},i.$=xe,i.state=new Ge({visible:!0,active:!1,disabled:!1,value:""}),i.data=new Ge(t.data),i.classes=new De(function(){i.state.get("rendered")&&(i.getEl().className=t
 his.toString())}),i.classes.prefix=i.classPrefix,(e=t.classes)&&(i.Defaults&&(n=i.Defaults.classes)&&e!==n&&r(n),r(e)),w.each("title text name visible disabled active value".split(" "),function(e){e in t&&i[e](t[e])}),i.on("click",function(){if(i.disabled())return!1}),i.settings=t,i.borderBox=Ne(t.border),i.paddingBox=Ne(t.padding),i.marginBox=Ne(t.margin),t.hidden&&i.hide()},Properties:"parent,name",getContainerElm:function(){var e=O.getUiContainer(this);return e||_e.getContainer()},getParentCtrl:function(e){for(var t,n=this.getRoot().controlIdLookup;e&&n&&!(t=n[e.id]);)e=e.parentNode;return t},initLayoutRect:function(){var e,t,n,i,r,o,s,a,l,u,c=this,d=c.settings,f=c.getEl();e=c.borderBox=c.borderBox||Pe(f,"border"),c.paddingBox=c.paddingBox||Pe(f,"padding"),c.marginBox=c.marginBox||Pe(f,"margin"),u=_e.getSize(f),a=d.minWidth,l=d.minHeight,r=a||u.wid
 th,o=l||u.height,n=d.width,i=d.height,s=void 0!==(s=d.autoResize)?s:!n&&!i,n=n||r,i=i||o;var h=e.left+e.right,m=e.top+e.bottom,g=d.maxWidth||65535,p=d.maxHeight||65535;return c._layoutRect=t={x:d.x||0,y:d.y||0,w:n,h:i,deltaW:h,deltaH:m,contentW:n-h,contentH:i-m,innerW:n-h,innerH:i-m,startMinWidth:a||0,startMinHeight:l||0,minW:Math.min(r,g),minH:Math.min(o,p),maxW:g,maxH:p,autoResize:s,scrollW:0},c._lastLayoutRect={},t},layoutRect:function(e){var t,n,i,r,o,s=this,a=s._layoutRect;return a||(a=s.initLayoutRect()),e?(i=a.deltaW,r=a.deltaH,e.x!==undefined&&(a.x=e.x),e.y!==undefined&&(a.y=e.y),e.minW!==undefined&&(a.minW=e.minW),e.minH!==undefined&&(a.minH=e.minH),(n=e.w)!==undefined&&(n=(n=n<a.minW?a.minW:n)>a.maxW?a.maxW:n,a.w=n,a.innerW=n-i),(n=e.h)!==undefined&&(n=(n=n<a.minH?a.minH:n)>a.maxH?a.maxH:n,a.h=n,a.innerH=n-r),(n=e.innerW)!==undefined&&(n=(n=n<a.minW-i?a.minW-i:n)>a.maxW-i?a.maxW-i:n,a.innerW=
 n,a.w=n+i),(n=e.innerH)!==undefined&&(n=(n=n<a.minH-r?a.minH-r:n)>a.maxH-r?a.maxH-r:n,a.innerH=n,a.h=n+r),e.contentW!==undefined&&(a.contentW=e.contentW),e.contentH!==undefined&&(a.contentH=e.contentH),(t=s._lastLayoutRect).x===a.x&&t.y===a.y&&t.w===a.w&&t.h===a.h||((o=Je.repaintControls)&&o.map&&!o.map[s._id]&&(o.push(s),o.map[s._id]=!0),t.x=a.x,t.y=a.y,t.w=a.w,t.h=a.h),s):a},repaint:function(){var e,t,n,i,r,o,s,a,l,u,c=this;l=document.createRange?function(e){return e}:Math.round,e=c.getEl().style,i=c._layoutRect,a=c._lastRepaintRect||{},o=(r=c.borderBox).left+r.right,s=r.top+r.bottom,i.x!==a.x&&(e.left=l(i.x)+"px",a.x=i.x),i.y!==a.y&&(e.top=l(i.y)+"px",a.y=i.y),i.w!==a.w&&(u=l(i.w-o),e.width=(0<=u?u:0)+"px",a.w=i.w),i.h!==a.h&&(u=l(i.h-s),e.height=(0<=u?u:0)+"px",a.h=i.h),c._hasBody&&i.innerW!==a.innerW&&(u=l(i.
 innerW),(n=c.getEl("body"))&&((t=n.style).width=(0<=u?u:0)+"px"),a.innerW=i.innerW),c._hasBody&&i.innerH!==a.innerH&&(u=l(i.innerH),(n=n||c.getEl("body"))&&((t=t||n.style).height=(0<=u?u:0)+"px"),a.innerH=i.innerH),c._lastRepaintRect=a,c.fire("repaint",{},!1)},updateLayoutRect:function(){var e=this;e.parent()._lastRect=null,_e.css(e.getEl(),{width:"",height:""}),e._layoutRect=e._lastRepaintRect=e._lastLayoutRect=null,e.initLayoutRect()},on:function(e,t){var n,i,r,o=this;return it(o).on(e,"string"!=typeof(n=t)?n:function(e){return i||o.parentsAndSelf().each(function(e){var t=e.settings.callbacks;if(t&&(i=t[n]))return r=e,!1}),i?i.call(r,e):(e.action=n,void this.fire("execute",e))}),o},off:function(e,t){return it(this).off(e,t),this},fire:function(e,t,n){if((t=t||{}).control||(t.control=this),t=it(this).fire(e,t),!1!==n&&this.parent)for(var i=
 this.parent();i&&!t.isPropagationStopped();)i.fire(e,t,!1),i=i.parent();return t},hasEventListeners:function(e){return it(this).has(e)},parents:function(e){var t,n=new Ye;for(t=this.parent();t;t=t.parent())n.add(t);return e&&(n=n.filter(e)),n},parentsAndSelf:function(e){return new Ye(this).add(this.parents(e))},next:function(){var e=this.parent().items();return e[e.indexOf(this)+1]},prev:function(){var e=this.parent().items();return e[e.indexOf(this)-1]},innerHtml:function(e){return this.$el.html(e),this},getEl:function(e){var t=e?this._id+"-"+e:this._id;return this._elmCache[t]||(this._elmCache[t]=xe("#"+t)[0]),this._elmCache[t]},show:function(){return this.visible(!0)},hide:function(){return this.visible(!1)},focus:function(){try{this.getEl().focus()}catch(e){}return this},blur:function(){return this.getEl().blur(),this},aria:function(e,t){var n=this,i=n.getEl(n.ariaTarget);return void 0===t?n._aria[e]:(n._aria[e]=t,n.state.get("rendered&qu
 ot;)&&i.setAttribute("role"===e?e:"aria-"+e,t),n)},encode:function(e,t){return!1!==t&&(e=this.translate(e)),(e||"").replace(/[&<>"]/g,function(e){return"&#"+e.charCodeAt(0)+";"})},translate:function(e){return Je.translate?Je.translate(e):e},before:function(e){var t=this.parent();return t&&t.insert(e,t.items().indexOf(this),!0),this},after:function(e){var t=this.parent();return t&&t.insert(e,t.items().indexOf(this)),this},remove:function(){var t,e,n=this,i=n.getEl(),r=n.parent();if(n.items){var o=n.items().toArray();for(e=o.length;e--;)o[e].remove()}r&&r.items&&(t=[],r.items().each(function(e){e!==n&&t.push(e)}),r.items().set(t),r._lastRect=null),n._eventsRoot&&n._eventsRoot===n&&xe(i).off();var s=n.getRoot().controlIdLookup;return s&&delete s[n._id],i&&i.parentNode&&i.parentNode.removeChild(i),n.state.set("rendered&
 quot;,!1),n.state.destroy(),n.fire("remove"),n},renderBefore:function(e){return xe(e).before(this.renderHtml()),this.postRender(),this},renderTo:function(e){return xe(e||this.getContainerElm()).append(this.renderHtml()),this.postRender(),this},preRender:function(){},render:function(){},renderHtml:function(){return'<div id="'+this._id+'" class="'+this.classes+'"></div>'},postRender:function(){var e,t,n,i,r,o=this,s=o.settings;for(i in o.$el=xe(o.getEl()),o.state.set("rendered",!0),s)0===i.indexOf("on")&&o.on(i.substr(2),s[i]);if(o._eventsRoot){for(n=o.parent();!r&&n;n=n.parent())r=n._eventsRoot;if(r)for(i in r._nativeEvents)o._nativeEvents[i]=!0}rt(o),s.style&&(e=o.getEl())&&(e.setAttribute("style",s.style),e.style.cssText=s.style),o.settings.border&&(t=o.borderBox,o.$el.css({"border-top-width":t.top,"border-right-width":t.right,"border-bottom-width
 ":t.bottom,"border-left-width":t.left}));var a=o.getRoot();for(var l in a.controlIdLookup||(a.controlIdLookup={}),(a.controlIdLookup[o._id]=o)._aria)o.aria(l,o._aria[l]);!1===o.state.get("visible")&&(o.getEl().style.display="none"),o.bindStates(),o.state.on("change:visible",function(e){var t,n=e.value;o.state.get("rendered")&&(o.getEl().style.display=!1===n?"none":"",o.getEl().getBoundingClientRect()),(t=o.parent())&&(t._lastRect=null),o.fire(n?"show":"hide"),Ze.add(o)}),o.fire("postrender",{},!1)},bindStates:function(){},scrollIntoView:function(e){var t,n,i,r,o,s,a=this.getEl(),l=a.parentNode,u=function(e,t){var n,i,r=e;for(n=i=0;r&&r!==t&&r.nodeType;)n+=r.offsetLeft||0,i+=r.offsetTop||0,r=r.offsetParent;return{x:n,y:i}}(a,l);return t=u.x,n=u.y,i=a.offsetWidth,r=a.offsetHeight,o=l.clientWidth,s=l.clientHeight,"end"===e?(t-=o-i,n-
 =s-r):"center"===e&&(t-=o/2-i/2,n-=s/2-r/2),l.scrollLeft=t,l.scrollTop=n,this},getRoot:function(){for(var e,t=this,n=[];t;){if(t.rootControl){e=t.rootControl;break}n.push(t),t=(e=t).parent()}e||(e=this);for(var i=n.length;i--;)n[i].rootControl=e;return e},reflow:function(){Ze.remove(this);var e=this.parent();return e&&e._layout&&!e._layout.isNative()&&e.reflow(),this}};function it(n){return n._eventDispatcher||(n._eventDispatcher=new Me({scope:n,toggleEvent:function(e,t){t&&Me.isNative(e)&&(n._nativeEvents||(n._nativeEvents={}),n._nativeEvents[e]=!0,n.state.get("rendered")&&rt(n))}})),n._eventDispatcher}function rt(a){var e,t,n,l,i,r;function o(e){var t=a.getParentCtrl(e.target);t&&t.fire(e.type,e)}function s(){var e=l._lastHoverCtrl;e&&(e.fire("mouseleave",{target:e.getEl()}),e.parents().each(function(e){e.fire("mouseleave",{target:e.getEl()})}),l._lastHoverCtrl=null)}fun
 ction u(e){var t,n,i,r=a.getParentCtrl(e.target),o=l._lastHoverCtrl,s=0;if(r!==o){if((n=(l._lastHoverCtrl=r).parents().toArray().reverse()).push(r),o){for((i=o.parents().toArray().reverse()).push(o),s=0;s<i.length&&n[s]===i[s];s++);for(t=i.length-1;s<=t;t--)(o=i[t]).fire("mouseleave",{target:o.getEl()})}for(t=s;t<n.length;t++)(r=n[t]).fire("mouseenter",{target:r.getEl()})}}function c(e){e.preventDefault(),"mousewheel"===e.type?(e.deltaY=-.025*e.wheelDelta,e.wheelDeltaX&&(e.deltaX=-.025*e.wheelDeltaX)):(e.deltaX=0,e.deltaY=e.detail),e=a.fire("wheel",e)}if(i=a._nativeEvents){for((n=a.parents().toArray()).unshift(a),e=0,t=n.length;!l&&e<t;e++)l=n[e]._eventsRoot;for(l||(l=n[n.length-1]||a),a._eventsRoot=l,t=e,e=0;e<t;e++)n[e]._eventsRoot=l;var d=l._delegates;for(r in d||(d=l._delegates={}),i){if(!i)return!1;"wheel"!==r||et?("mouseenter"===r||"mouseleave"===r?l._hasMouseEnter||(xe
 (l.getEl()).on("mouseleave",s).on("mouseover",u),l._hasMouseEnter=1):d[r]||(xe(l.getEl()).on(r,o),d[r]=!0),i[r]=!1):Qe?xe(a.getEl()).on("mousewheel",c):xe(a.getEl()).on("DOMMouseScroll",c)}}}w.each("text title visible disabled active value".split(" "),function(t){nt[t]=function(e){return 0===arguments.length?this.state.get(t):(void 0!==e&&this.state.set(t,e),this)}});var ot=Je=Te.extend(nt),st=function(e){return!!e.getAttribute("data-mce-tabstop")};function at(e){var o,r,n=e.root;function i(e){return e&&1===e.nodeType}try{o=document.activeElement}catch(t){o=document.body}function s(e){return i(e=e||o)?e.getAttribute("role"):null}function a(e){for(var t,n=e||o;n=n.parentNode;)if(t=s(n))return t}function l(e){var t=o;if(i(t))return t.getAttribute("aria-"+e)}function u(e){var t=e.tagName.toUpperCase();return"INPUT"===t||"TEXTAREA"===t||"SELECT"===t}fun
 ction c(t){var r=[];return function e(t){if(1===t.nodeType&&"none"!==t.style.display&&!t.disabled){var n;(u(n=t)&&!n.hidden||st(n)||/^(button|menuitem|checkbox|tab|menuitemcheckbox|option|gridcell|slider)$/.test(s(n)))&&r.push(t);for(var i=0;i<t.childNodes.length;i++)e(t.childNodes[i])}}(t||n.getEl()),r}function d(e){var t,n;(n=(e=e||r).parents().toArray()).unshift(e);for(var i=0;i<n.length&&!(t=n[i]).settings.ariaRoot;i++);return t}function f(e,t){return e<0?e=t.length-1:e>=t.length&&(e=0),t[e]&&t[e].focus(),e}function h(e,t){var n=-1,i=d();t=t||c(i.getEl());for(var r=0;r<t.length;r++)t[r]===o&&(n=r);n+=e,i.lastAriaIndex=f(n,t)}function m(){"tablist"===a()?h(-1,c(o.parentNode)):r.parent().submenu?b():h(-1)}function g(){var e=s(),t=a();"tablist"===t?h(1,c(o.parentNode)):"menuitem"===e&&"menu"===t&&l("haspopup")?y():h(1)}function p
 (){h(-1)}function v(){var e=s(),t=a();"menuitem"===e&&"menubar"===t?y():"button"===e&&l("haspopup")?y({key:"down"}):h(1)}function b(){r.fire("cancel")}function y(e){e=e||{},r.fire("click",{target:o,aria:e})}return r=n.getParentCtrl(o),n.on("keydown",function(e){function t(e,t){u(o)||st(o)||"slider"!==s(o)&&!1!==t(e)&&e.preventDefault()}if(!e.isDefaultPrevented())switch(e.keyCode){case 37:t(e,m);break;case 39:t(e,g);break;case 38:t(e,p);break;case 40:t(e,v);break;case 27:b();break;case 14:case 13:case 32:t(e,y);break;case 9:!function(e){if("tablist"===a()){var t=c(r.getEl("body"))[0];t&&t.focus()}else h(e.shiftKey?-1:1)}(e),e.preventDefault()}}),n.on("focusin",function(e){o=e.target,r=e.control}),{focusFirst:function(e){var t=d(e),n=c(t.getEl());t.settings.ariaRemember&&"lastAriaIndex"in t?f(t.lastAriaIndex,n
 ):f(0,n)}}}var lt={},ut=ot.extend({init:function(e){var t=this;t._super(e),(e=t.settings).fixed&&t.state.set("fixed",!0),t._items=new Ye,t.isRtl()&&t.classes.add("rtl"),t.bodyClasses=new De(function(){t.state.get("rendered")&&(t.getEl("body").className=this.toString())}),t.bodyClasses.prefix=t.classPrefix,t.classes.add("container"),t.bodyClasses.add("container-body"),e.containerCls&&t.classes.add(e.containerCls),t._layout=b.create((e.layout||"")+"layout"),t.settings.items?t.add(t.settings.items):t.add(t.render()),t._hasBody=!0},items:function(){return this._items},find:function(e){return(e=lt[e]=lt[e]||new Fe(e)).find(this)},add:function(e){return this.items().add(this.create(e)).parent(this),this},focus:function(e){var t,n,i,r=this;if(!e||!(n=r.keyboardNav||r.parents().eq(-1)[0].keyboardNav))return i=r.find("*"),r.statusbar&&i.add(r.statusbar.items()),i.
 each(function(e){if(e.settings.autofocus)return t=null,!1;e.canFocus&&(t=t||e)}),t&&t.focus(),r;n.focusFirst(r)},replace:function(e,t){for(var n,i=this.items(),r=i.length;r--;)if(i[r]===e){i[r]=t;break}0<=r&&((n=t.getEl())&&n.parentNode.removeChild(n),(n=e.getEl())&&n.parentNode.removeChild(n)),t.parent(this)},create:function(e){var t,n=this,i=[];return w.isArray(e)||(e=[e]),w.each(e,function(e){e&&(e instanceof ot||("string"==typeof e&&(e={type:e}),t=w.extend({},n.settings.defaults,e),e.type=t.type=t.type||e.type||n.settings.defaultType||(t.defaults?t.defaults.type:null),e=b.create(t)),i.push(e))}),i},renderNew:function(){var i=this;return i.items().each(function(e,t){var n;e.parent(i),e.state.get("rendered")||((n=i.getEl("body")).hasChildNodes()&&t<=n.childNodes.length-1?xe(n.childNodes[t]).before(e.renderHtml()):xe(n).append(e.renderHtml()),e.postRender(),Ze.add(e))}),i._layout.app
 lyClasses(i.items().filter(":visible")),i._lastRect=null,i},append:function(e){return this.add(e).renderNew()},prepend:function(e){return this.items().set(this.create(e).concat(this.items().toArray())),this.renderNew()},insert:function(e,t,n){var i,r,o;return e=this.create(e),i=this.items(),!n&&t<i.length-1&&(t+=1),0<=t&&t<i.length&&(r=i.slice(0,t).toArray(),o=i.slice(t).toArray(),i.set(r.concat(e,o))),this.renderNew()},fromJSON:function(e){for(var t in e)this.find("#"+t).value(e[t]);return this},toJSON:function(){var i={};return this.find("*").each(function(e){var t=e.name(),n=e.value();t&&void 0!==n&&(i[t]=n)}),i},renderHtml:function(){var e=this,t=e._layout,n=this.settings.role;return e.preRender(),t.preRender(e),'<div id="'+e._id+'" class="'+e.classes+'"'+(n?' role="'+this.settings.role+'"':"")+'><div id="'+e._id+'-body" class="'+
 e.bodyClasses+'">'+(e.settings.html||"")+t.renderHtml(e)+"</div></div>"},postRender:function(){var e,t=this;return t.items().exec("postRender"),t._super(),t._layout.postRender(t),t.state.set("rendered",!0),t.settings.style&&t.$el.css(t.settings.style),t.settings.border&&(e=t.borderBox,t.$el.css({"border-top-width":e.top,"border-right-width":e.right,"border-bottom-width":e.bottom,"border-left-width":e.left})),t.parent()||(t.keyboardNav=at({root:t})),t},initLayoutRect:function(){var e=this._super();return this._layout.recalc(this),e},recalc:function(){var e=this,t=e._layoutRect,n=e._lastRect;if(!n||n.w!==t.w||n.h!==t.h)return e._layout.recalc(e),t=e.layoutRect(),e._lastRect={x:t.x,y:t.y,w:t.w,h:t.h},!0},reflow:function(){var e;if(Ze.remove(this),this.visible()){for(ot.repaintControls=[],ot.repaintControls.map={},this.recalc(),e=ot.repaintControls.length;e--;)ot.repaintCo
 ntrols[e].repaint();"flow"!==this.settings.layout&&"stack"!==this.settings.layout&&this.repaint(),ot.repaintControls=[]}return this}});function ct(e){var t,n;if(e.changedTouches)for(t="screenX screenY pageX pageY clientX clientY".split(" "),n=0;n<t.length;n++)e[t[n]]=e.changedTouches[0][t[n]]}function dt(e,h){var m,g,t,p,v,b,y,x=h.document||document;h=h||{};var w=x.getElementById(h.handle||e);t=function(e){var t,n,i,r,o,s,a,l,u,c,d,f=(t=x,u=Math.max,n=t.documentElement,i=t.body,r=u(n.scrollWidth,i.scrollWidth),o=u(n.clientWidth,i.clientWidth),s=u(n.offsetWidth,i.offsetWidth),a=u(n.scrollHeight,i.scrollHeight),l=u(n.clientHeight,i.clientHeight),{width:r<s?o:r,height:a<u(n.offsetHeight,i.offsetHeight)?l:a});ct(e),e.preventDefault(),g=e.button,c=w,b=e.screenX,y=e.screenY,d=window.getComputedStyle?window.getComputedStyle(c,null).getPropertyValue("cursor"):c.runtimeStyle.cursor,m=xe("<div></div>&q
 uot;).css({position:"absolute",top:0,left:0,width:f.width,height:f.height,zIndex:2147483647,opacity:1e-4,cursor:d}).appendTo(x.body),xe(x).on("mousemove touchmove",v).on("mouseup touchend",p),h.start(e)},v=function(e){if(ct(e),e.button!==g)return p(e);e.deltaX=e.screenX-b,e.deltaY=e.screenY-y,e.preventDefault(),h.drag(e)},p=function(e){ct(e),xe(x).off("mousemove touchmove",v).off("mouseup touchend",p),m.remove(),h.stop&&h.stop(e)},this.destroy=function(){xe(w).off()},xe(w).on("mousedown touchstart",t)}var ft,ht,mt,gt,pt={init:function(){this.on("repaint",this.renderScroll)},renderScroll:function(){var p=this,v=2;function n(){var m,g,e;function t(e,t,n,i,r,o){var s,a,l,u,c,d,f,h;if(a=p.getEl("scroll"+e)){if(f=t.toLowerCase(),h=n.toLowerCase(),xe(p.getEl("absend")).css(f,p.layoutRect()[i]-1),!r)return void xe(a).css("display","none");xe(a).css("display",&quot
 ;block"),s=p.getEl("body"),l=p.getEl("scroll"+e+"t"),u=s["client"+n]-2*v,c=(u-=m&&g?a["client"+o]:0)/s["scroll"+n],(d={})[f]=s["offset"+t]+v,d[h]=u,xe(a).css(d),(d={})[f]=s["scroll"+t]*c,d[h]=u*c,xe(l).css(d)}}e=p.getEl("body"),m=e.scrollWidth>e.clientWidth,g=e.scrollHeight>e.clientHeight,t("h","Left","Width","contentW",m,"Height"),t("v","Top","Height","contentH",g,"Width")}p.settings.autoScroll&&(p._hasScroll||(p._hasScroll=!0,function(){function e(s,a,l,u,c){var d,e=p._id+"-scroll"+s,t=p.classPrefix;xe(p.getEl()).append('<div id="'+e+'" class="'+t+"scrollbar "+t+"scrollbar-"+s+'"><div id="'+e+'t" class="'+t+'scrollbar-thumb"></div></div>'),p.draghelper=new dt(e+"t",
 {start:function(){d=p.getEl("body")["scroll"+a],xe("#"+e).addClass(t+"active")},drag:function(e){var t,n,i,r,o=p.layoutRect();n=o.contentW>o.innerW,i=o.contentH>o.innerH,r=p.getEl("body")["client"+l]-2*v,t=(r-=n&&i?p.getEl("scroll"+s)["client"+c]:0)/p.getEl("body")["scroll"+l],p.getEl("body")["scroll"+a]=d+e["delta"+u]/t},stop:function(){xe("#"+e).removeClass(t+"active")}})}p.classes.add("scroll"),e("v","Top","Height","Y","Width"),e("h","Left","Width","X","Height")}(),p.on("wheel",function(e){var t=p.getEl("body");t.scrollLeft+=10*(e.deltaX||0),t.scrollTop+=10*e.deltaY,n()}),xe(p.getEl("body")).on("scroll",n)),n())}},vt=ut.extend({Defaults:{layout:"fit",containerCl
 s:"panel"},Mixins:[pt],renderHtml:function(){var e=this,t=e._layout,n=e.settings.html;return e.preRender(),t.preRender(e),void 0===n?n='<div id="'+e._id+'-body" class="'+e.bodyClasses+'">'+t.renderHtml(e)+"</div>":("function"==typeof n&&(n=n.call(e)),e._hasBody=!1),'<div id="'+e._id+'" class="'+e.classes+'" hidefocus="1" tabindex="-1" role="group">'+(e._preBodyHtml||"")+n+"</div>"}}),bt={resizeToContent:function(){this._layoutRect.autoResize=!0,this._lastRect=null,this.reflow()},resizeTo:function(e,t){if(e<=1||t<=1){var n=_e.getWindowSize();e=e<=1?e*n.w:e,t=t<=1?t*n.h:t}return this._layoutRect.autoResize=!1,this.layoutRect({minW:e,minH:t,w:e,h:t}).reflow()},resizeBy:function(e,t){var n=this.layoutRect();return this.resizeTo(n.w+e,n.h+t)}},yt=[],xt=[];function wt(e,t){for(;e;){if(e===t)return!0;e=e.parent()}}function _t(){
 ft||(ft=function(e){2!==e.button&&function(e){for(var t=yt.length;t--;){var n=yt[t],i=n.getParentCtrl(e.target);if(n.settings.autohide){if(i&&(wt(i,n)||n.parent()===i))continue;(e=n.fire("autohide",{target:e.target})).isDefaultPrevented()||n.hide()}}}(e)},xe(document).on("click touchstart",ft))}function Rt(r){var e=_e.getViewPort().y;function t(e,t){for(var n,i=0;i<yt.length;i++)if(yt[i]!==r)for(n=yt[i].parent();n&&(n=n.parent());)n===r&&yt[i].fixed(e).moveBy(0,t).repaint()}r.settings.autofix&&(r.state.get("fixed")?r._autoFixY>e&&(r.fixed(!1).layoutRect({y:r._autoFixY}).repaint(),t(!1,r._autoFixY-e)):(r._autoFixY=r.layoutRect().y,r._autoFixY<e&&(r.fixed(!0).layoutRect({y:0}).repaint(),t(!0,e-r._autoFixY))))}function Ct(e,t){var n,i,r=Et.zIndex||65535;if(e)xt.push(t);else for(n=xt.length;n--;)xt[n]===t&&xt.splice(n,1);if(xt.length)for(n=0;n<xt.length;n++)xt[n].modal&&(r++
 ,i=xt[n]),xt[n].getEl().style.zIndex=r,xt[n].zIndex=r,r++;var o=xe("#"+t.classPrefix+"modal-block",t.getContainerElm())[0];i?xe(o).css("z-index",i.zIndex-1):o&&(o.parentNode.removeChild(o),gt=!1),Et.currentZIndex=r}var Et=vt.extend({Mixins:[Se,bt],init:function(e){var i=this;i._super(e),(i._eventsRoot=i).classes.add("floatpanel"),e.autohide&&(_t(),function(){if(!mt){var e=document.documentElement,t=e.clientWidth,n=e.clientHeight;mt=function(){document.all&&t===e.clientWidth&&n===e.clientHeight||(t=e.clientWidth,n=e.clientHeight,Et.hideAll())},xe(window).on("resize",mt)}}(),yt.push(i)),e.autofix&&(ht||(ht=function(){var e;for(e=yt.length;e--;)Rt(yt[e])},xe(window).on("scroll",ht)),i.on("move",function(){Rt(this)})),i.on("postrender show",function(e){if(e.control===i){var t,n=i.classPrefix;i.modal&&!gt&&((t=xe("#"+n+"modal-block",i
 .getContainerElm()))[0]||(t=xe('<div id="'+n+'modal-block" class="'+n+"reset "+n+'fade"></div>').appendTo(i.getContainerElm())),u.setTimeout(function(){t.addClass(n+"in"),xe(i.getEl()).addClass(n+"in")}),gt=!0),Ct(!0,i)}}),i.on("show",function(){i.parents().each(function(e){if(e.state.get("fixed"))return i.fixed(!0),!1})}),e.popover&&(i._preBodyHtml='<div class="'+i.classPrefix+'arrow"></div>',i.classes.add("popover").add("bottom").add(i.isRtl()?"end":"start")),i.aria("label",e.ariaLabel),i.aria("labelledby",i._id),i.aria("describedby",i.describedBy||i._id+"-none")},fixed:function(e){var t=this;if(t.state.get("fixed")!==e){if(t.state.get("rendered")){var n=_e.getViewPort();e?t.layoutRect().y-=n.y:t.layoutRect().y+=n.y}t.classes.toggle("fixed",e),t.state.set("f
 ixed",e)}return t},show:function(){var e,t=this._super();for(e=yt.length;e--&&yt[e]!==this;);return-1===e&&yt.push(this),t},hide:function(){return kt(this),Ct(!1,this),this._super()},hideAll:function(){Et.hideAll()},close:function(){return this.fire("close").isDefaultPrevented()||(this.remove(),Ct(!1,this)),this},remove:function(){kt(this),this._super()},postRender:function(){return this.settings.bodyRole&&this.getEl("body").setAttribute("role",this.settings.bodyRole),this._super()}});function kt(e){var t;for(t=yt.length;t--;)yt[t]===e&&yt.splice(t,1);for(t=xt.length;t--;)xt[t]===e&&xt.splice(t,1)}Et.hideAll=function(){for(var e=yt.length;e--;){var t=yt[e];t&&t.settings.autohide&&(t.hide(),yt.splice(e,1))}};var Ht=function(s,n,e){var a,i,l=v.DOM,t=s.getParam("fixed_toolbar_container");t&&(i=l.select(t)[0]);var r=function(){if(a&&a.moveRel&&a.visible()&&amp
 ;!a._fixed){var e=s.selection.getScrollContainer(),t=s.getBody(),n=0,i=0;if(e){var r=l.getPos(t),o=l.getPos(e);n=Math.max(0,o.x-r.x),i=Math.max(0,o.y-r.y)}a.fixed(!1).moveRel(t,s.rtl?["tr-br","br-tr"]:["tl-bl","bl-tl","tr-br"]).moveBy(n,i)}},o=function(){a&&(a.show(),r(),l.addClass(s.getBody(),"mce-edit-focus"))},u=function(){a&&(a.hide(),Et.hideAll(),l.removeClass(s.getBody(),"mce-edit-focus"))},c=function(){var e,t;a?a.visible()||o():(a=n.panel=b.create({type:i?"panel":"floatpanel",role:"application",classes:"tinymce tinymce-inline",layout:"flex",direction:"column",align:"stretch",autohide:!1,autofix:!0,fixed:(e=i,t=s,!(!e||t.settings.ui_container)),border:1,items:[!1===d(s)?null:{type:"menubar",border:"0 0 1 0",items:oe(s)},L(s,f(s))]}),O.setUiContainer(s,a),_(s),i?a.renderTo(i).reflow():a.renderTo().reflow
 (),R(s,a),o(),V(s),s.on("nodeChange",r),s.on("ResizeWindow",r),s.on("activate",o),s.on("deactivate",u),s.nodeChanged())};return s.settings.content_editable=!0,s.on("focus",function(){!1===g(s)&&e.skinUiCss?l.styleSheetLoader.load(e.skinUiCss,c,c):c()}),s.on("blur hide",u),s.on("remove",function(){a&&(a.remove(),a=null)}),!1===g(s)&&e.skinUiCss?l.styleSheetLoader.load(e.skinUiCss,pe(s)):pe(s)(),{}};function St(i,r){var o,s,a=this,l=ot.classPrefix;a.show=function(e,t){function n(){o&&(xe(i).append('<div class="'+l+"throbber"+(r?" "+l+"throbber-inline":"")+'"></div>'),t&&t())}return a.hide(),o=!0,e?s=u.setTimeout(n,e):n(),a},a.hide=function(){var e=i.lastChild;return u.clearTimeout(s),e&&-1!==e.className.indexOf("throbber")&&e.parentNode.removeChild(e),o=!1,a}}var Tt=function(e,t){var n;e.on
 ("ProgressState",function(e){n=n||new St(t.panel.getEl("body")),e.state?n.show(e.time):n.hide()})},Mt=function(e,t,n){var i=function(e){var t=e.settings,n=t.skin,i=t.skin_url;if(!1!==n){var r=n||"lightgray";i=i?e.documentBaseURI.toAbsolute(i):h.baseURL+"/skins/"+r}return i}(e);return i&&(n.skinUiCss=i+"/skin.min.css",e.contentCSS.push(i+"/content"+(e.inline?".inline":"")+".min.css")),Tt(e,t),e.getParam("inline",!1,"boolean")?Ht(e,t,n):ye(e,t,n)},Nt=ot.extend({Mixins:[Se],Defaults:{classes:"widget tooltip tooltip-n"},renderHtml:function(){var e=this,t=e.classPrefix;return'<div id="'+e._id+'" class="'+e.classes+'" role="presentation"><div class="'+t+'tooltip-arrow"></div><div class="'+t+'tooltip-inner">'+e.encode(e.state.get("text"))+"</div></div>"},bindS
 tates:function(){var t=this;return t.state.on("change:text",function(e){t.getEl().lastChild.innerHTML=t.encode(e.value)}),t._super()},repaint:function(){var e,t;e=this.getEl().style,t=this._layoutRect,e.left=t.x+"px",e.top=t.y+"px",e.zIndex=131070}}),Pt=ot.extend({init:function(i){var r=this;r._super(i),i=r.settings,r.canFocus=!0,i.tooltip&&!1!==Pt.tooltips&&(r.on("mouseenter",function(e){var t=r.tooltip().moveTo(-65535);if(e.control===r){var n=t.text(i.tooltip).show().testMoveRel(r.getEl(),["bc-tc","bc-tl","bc-tr"]);t.classes.toggle("tooltip-n","bc-tc"===n),t.classes.toggle("tooltip-nw","bc-tl"===n),t.classes.toggle("tooltip-ne","bc-tr"===n),t.moveRel(r.getEl(),n)}else t.hide()}),r.on("mouseleave mousedown click",function(){r.tooltip().remove(),r._tooltip=null})),r.aria("label",i.ariaLabel||i.tooltip)},tooltip:function
 (){return this._tooltip||(this._tooltip=new Nt({type:"tooltip"}),O.inheritUiContainer(this,this._tooltip),this._tooltip.renderTo()),this._tooltip},postRender:function(){var e=this,t=e.settings;e._super(),e.parent()||!t.width&&!t.height||(e.initLayoutRect(),e.repaint()),t.autofocus&&e.focus()},bindStates:function(){var t=this;function n(e){t.aria("disabled",e),t.classes.toggle("disabled",e)}function i(e){t.aria("pressed",e),t.classes.toggle("active",e)}return t.state.on("change:disabled",function(e){n(e.value)}),t.state.on("change:active",function(e){i(e.value)}),t.state.get("disabled")&&n(!0),t.state.get("active")&&i(!0),t._super()},remove:function(){this._super(),this._tooltip&&(this._tooltip.remove(),this._tooltip=null)}}),Wt=Pt.extend({Defaults:{value:0},init:function(e){this._super(e),this.classes.add("progress"),this.settings.filter||(this.
 settings.filter=function(e){return Math.round(e)})},renderHtml:function(){var e=this._id,t=this.classPrefix;return'<div id="'+e+'" class="'+this.classes+'"><div class="'+t+'bar-container"><div class="'+t+'bar"></div></div><div class="'+t+'text">0%</div></div>'},postRender:function(){return this._super(),this.value(this.settings.value),this},bindStates:function(){var t=this;function n(e){e=t.settings.filter(e),t.getEl().lastChild.innerHTML=e+"%",t.getEl().firstChild.firstChild.style.width=e+"%"}return t.state.on("change:value",function(e){n(e.value)}),n(t.state.get("value")),t._super()}}),Dt=function(e,t){e.getEl().lastChild.textContent=t+(e.progressBar?" "+e.progressBar.value()+"%":"")},Ot=ot.extend({Mixins:[Se],Defaults:{classes:"widget notification"},init:function(e){var t=this;t._super(e),t.maxWidth=e.max
 Width,e.text&&t.text(e.text),e.icon&&(t.icon=e.icon),e.color&&(t.color=e.color),e.type&&t.classes.add("notification-"+e.type),e.timeout&&(e.timeout<0||0<e.timeout)&&!e.closeButton?t.closeButton=!1:(t.classes.add("has-close"),t.closeButton=!0),e.progressBar&&(t.progressBar=new Wt),t.on("click",function(e){-1!==e.target.className.indexOf(t.classPrefix+"close")&&t.close()})},renderHtml:function(){var e,t=this,n=t.classPrefix,i="",r="",o="";return t.icon&&(i='<i class="'+n+"ico "+n+"i-"+t.icon+'"></i>'),e=' style="max-width: '+t.maxWidth+"px;"+(t.color?"background-color: "+t.color+';"':'"'),t.closeButton&&(r='<button type="button" class="'+n+'close" aria-hidden="true">\xd7</button>'),t.progressBar&&(o=t.progr
 essBar.renderHtml()),'<div id="'+t._id+'" class="'+t.classes+'"'+e+' role="presentation">'+i+'<div class="'+n+'notification-inner">'+t.state.get("text")+"</div>"+o+r+'<div style="clip: rect(1px, 1px, 1px, 1px);height: 1px;overflow: hidden;position: absolute;width: 1px;" aria-live="assertive" aria-relevant="additions" aria-atomic="true"></div></div>'},postRender:function(){var e=this;return u.setTimeout(function(){e.$el.addClass(e.classPrefix+"in"),Dt(e,e.state.get("text"))},100),e._super()},bindStates:function(){var t=this;return t.state.on("change:text",function(e){t.getEl().firstChild.innerHTML=e.value,Dt(t,e.value)}),t.progressBar&&(t.progressBar.bindStates(),t.progressBar.state.on("change:value",function(e){Dt(t,t.state.get("text"))})),t._super()},close:function(){return this.fire("c
 lose").isDefaultPrevented()||this.remove(),this},repaint:function(){var e,t;e=this.getEl().style,t=this._layoutRect,e.left=t.x+"px",e.top=t.y+"px",e.zIndex=65534}});function At(o){var s=function(e){return e.inline?e.getElement():e.getContentAreaContainer()};return{open:function(e,t){var n,i=w.extend(e,{maxWidth:(n=s(o),_e.getSize(n).width)}),r=new Ot(i);return 0<(r.args=i).timeout&&(r.timer=setTimeout(function(){r.close(),t()},i.timeout)),r.on("close",function(){t()}),r.renderTo(),r},close:function(e){e.close()},reposition:function(e){G(e,function(e){e.moveTo(0,0)}),function(n){if(0<n.length){var e=n.slice(0,1)[0],t=s(o);e.moveRel(t,"tc-tc"),G(n,function(e,t){0<t&&e.moveRel(n[t-1].getEl(),"bc-tc")})}}(e)},getArgs:function(e){return e.args}}}var Bt=[],Lt="";function zt(e){var t,n=xe("meta[name=viewport]")[0];!1!==de.overrideViewPort&&(n||((n=document.createElement("meta&qu
 ot;)).setAttribute("name","viewport"),document.getElementsByTagName("head")[0].appendChild(n)),(t=n.getAttribute("content"))&&void 0!==Lt&&(Lt=t),n.setAttribute("content",e?"width=device-width,initial-scale=1.0,user-scalable=0,minimum-scale=1.0,maximum-scale=1.0":Lt))}function It(e,t){(function(){for(var e=0;e<Bt.length;e++)if(Bt[e]._fullscreen)return!0;return!1})()&&!1===t&&xe([document.documentElement,document.body]).removeClass(e+"fullscreen")}var Ft=Et.extend({modal:!0,Defaults:{border:1,layout:"flex",containerCls:"panel",role:"dialog",callbacks:{submit:function(){this.fire("submit",{data:this.toJSON()})},close:function(){this.close()}}},init:function(e){var n=this;n._super(e),n.isRtl()&&n.classes.add("rtl"),n.classes.add("window"),n.bodyClasses.add("window-body"),n.state.set("fixed",!0),e
 .buttons&&(n.statusbar=new vt({layout:"flex",border:"1 0 0 0",spacing:3,padding:10,align:"center",pack:n.isRtl()?"start":"end",defaults:{type:"button"},items:e.buttons}),n.statusbar.classes.add("foot"),n.statusbar.parent(n)),n.on("click",function(e){var t=n.classPrefix+"close";(_e.hasClass(e.target,t)||_e.hasClass(e.target.parentNode,t))&&n.close()}),n.on("cancel",function(){n.close()}),n.on("move",function(e){e.control===n&&Et.hideAll()}),n.aria("describedby",n.describedBy||n._id+"-none"),n.aria("label",e.title),n._fullscreen=!1},recalc:function(){var e,t,n,i,r=this,o=r.statusbar;r._fullscreen&&(r.layoutRect(_e.getWindowSize()),r.layoutRect().contentH=r.layoutRect().innerH),r._super(),e=r.layoutRect(),r.settings.title&&!r._fullscreen&&(t=e.headerW)>e.w&&(n=e.x-Math.max(0,t/2),r.layoutRe
 ct({w:t,x:n}),i=!0),o&&(o.layoutRect({w:r.layoutRect().innerW}).recalc(),(t=o.layoutRect().minW+e.deltaW)>e.w&&(n=e.x-Math.max(0,t-e.w),r.layoutRect({w:t,x:n}),i=!0)),i&&r.recalc()},initLayoutRect:function(){var e,t=this,n=t._super(),i=0;if(t.settings.title&&!t._fullscreen){e=t.getEl("head");var r=_e.getSize(e);n.headerW=r.width,n.headerH=r.height,i+=n.headerH}t.statusbar&&(i+=t.statusbar.layoutRect().h),n.deltaH+=i,n.minH+=i,n.h+=i;var o=_e.getWindowSize();return n.x=t.settings.x||Math.max(0,o.w/2-n.w/2),n.y=t.settings.y||Math.max(0,o.h/2-n.h/2),n},renderHtml:function(){var e=this,t=e._layout,n=e._id,i=e.classPrefix,r=e.settings,o="",s="",a=r.html;return e.preRender(),t.preRender(e),r.title&&(o='<div id="'+n+'-head" class="'+i+'window-head"><div id="'+n+'-title" class="'+i+'title">'+e.encode(r.title)+'</div><div id="'+n+'-dragh" cla
 ss="'+i+'dragh"></div><button type="button" class="'+i+'close" aria-hidden="true"><i class="mce-ico mce-i-remove"></i></button></div>'),r.url&&(a='<iframe src="'+r.url+'" tabindex="-1"></iframe>'),void 0===a&&(a=t.renderHtml(e)),e.statusbar&&(s=e.statusbar.renderHtml()),'<div id="'+n+'" class="'+e.classes+'" hidefocus="1"><div class="'+e.classPrefix+'reset" role="application">'+o+'<div id="'+n+'-body" class="'+e.bodyClasses+'">'+a+"</div>"+s+"</div></div>"},fullscreen:function(e){var n,t,i=this,r=document.documentElement,o=i.classPrefix;if(e!==i._fullscreen)if(xe(window).on("resize",function(){var e;if(i._fullscreen)if(n)i._timer||(i._timer=u.setTimeout(function(){var e=_e.getWindowSize();i.moveTo(0,0).resi
 zeTo(e.w,e.h),i._timer=0},50));else{e=(new Date).getTime();var t=_e.getWindowSize();i.moveTo(0,0).resizeTo(t.w,t.h),50<(new Date).getTime()-e&&(n=!0)}}),t=i.layoutRect(),i._fullscreen=e){i._initial={x:t.x,y:t.y,w:t.w,h:t.h},i.borderBox=Ne("0"),i.getEl("head").style.display="none",t.deltaH-=t.headerH+2,xe([r,document.body]).addClass(o+"fullscreen"),i.classes.add("fullscreen");var s=_e.getWindowSize();i.moveTo(0,0).resizeTo(s.w,s.h)}else i.borderBox=Ne(i.settings.border),i.getEl("head").style.display="",t.deltaH+=t.headerH,xe([r,document.body]).removeClass(o+"fullscreen"),i.classes.remove("fullscreen"),i.moveTo(i._initial.x,i._initial.y).resizeTo(i._initial.w,i._initial.h);return i.reflow()},postRender:function(){var t,n=this;setTimeout(function(){n.classes.add("in"),n.fire("open")},0),n._super(),n.statusbar&&n.statusbar.postRender(),n.focus(),this.dragHelpe
 r=new dt(n._id+"-dragh",{start:function(){t={x:n.layoutRect().x,y:n.layoutRect().y}},drag:function(e){n.moveTo(t.x+e.deltaX,t.y+e.deltaY)}}),n.on("submit",function(e){e.isDefaultPrevented()||n.close()}),Bt.push(n),zt(!0)},submit:function(){return this.fire("submit",{data:this.toJSON()})},remove:function(){var e,t=this;for(t.dragHelper.destroy(),t._super(),t.statusbar&&this.statusbar.remove(),It(t.classPrefix,!1),e=Bt.length;e--;)Bt[e]===t&&Bt.splice(e,1);zt(0<Bt.length)},getContentWindow:function(){var e=this.getEl().getElementsByTagName("iframe")[0];return e?e.contentWindow:null}});!function(){if(!de.desktop){var n={w:window.innerWidth,h:window.innerHeight};u.setInterval(function(){var e=window.innerWidth,t=window.innerHeight;n.w===e&&n.h===t||(n={w:e,h:t},xe(window).trigger("resize"))},100)}xe(window).on("resize",function(){var e,t,n=_e.getWindowSize();for(e=0;e<Bt.length;e++)t=Bt[e].layoutRe
 ct(),Bt[e].moveTo(Bt[e].settings.x||Math.max(0,n.w/2-t.w/2),Bt[e].settings.y||Math.max(0,n.h/2-t.h/2))})}();var Ut,Vt,Yt,$t=Ft.extend({init:function(e){e={border:1,padding:20,layout:"flex",pack:"center",align:"center",containerCls:"panel",autoScroll:!0,buttons:{type:"button",text:"Ok",action:"ok"},items:{type:"label",multiline:!0,maxWidth:500,maxHeight:200}},this._super(e)},Statics:{OK:1,OK_CANCEL:2,YES_NO:3,YES_NO_CANCEL:4,msgBox:function(e){var t,i=e.callback||function(){};function n(e,t,n){return{type:"button",text:e,subtype:n?"primary":"",onClick:function(e){e.control.parents()[1].close(),i(t)}}}switch(e.buttons){case $t.OK_CANCEL:t=[n("Ok",!0,!0),n("Cancel",!1)];break;case $t.YES_NO:case $t.YES_NO_CANCEL:t=[n("Yes",1,!0),n("No",0)],e.buttons===$t.YES_NO_CANCEL&&t.push(n("Cancel",-1));break;default:t=[n("Ok&q
 uot;,!0,!0)]}return new Ft({padding:20,x:e.x,y:e.y,minWidth:300,minHeight:100,layout:"flex",pack:"center",align:"center",buttons:t,title:e.title,role:"alertdialog",items:{type:"label",multiline:!0,maxWidth:500,maxHeight:200,text:e.text},onPostRender:function(){this.aria("describedby",this.items()[0]._id)},onClose:e.onClose,onCancel:function(){i(!1)}}).renderTo(document.body).reflow()},alert:function(e,t){return"string"==typeof e&&(e={text:e}),e.callback=t,$t.msgBox(e)},confirm:function(e,t){return"string"==typeof e&&(e={text:e}),e.callback=t,e.buttons=$t.OK_CANCEL,$t.msgBox(e)}}}),qt=function(n){return{renderUI:function(e){return Mt(n,this,e)},resizeTo:function(e,t){return ue(n,e,t)},resizeBy:function(e,t){return ce(n,e,t)},getNotificationManagerImpl:function(){return At(n)},getWindowManagerImpl:function(){return{open:function(n,e,t){var i;return n.title=n.title||" ",n.url=n.url
 ||n.file,n.url&&(n.width=parseInt(n.width||320,10),n.height=parseInt(n.height||240,10)),n.body&&(n.items={defaults:n.defaults,type:n.bodyType||"form",items:n.body,data:n.data,callbacks:n.commands}),n.url||n.buttons||(n.buttons=[{text:"Ok",subtype:"primary",onclick:function(){i.find("form")[0].submit()}},{text:"Cancel",onclick:function(){i.close()}}]),(i=new Ft(n)).on("close",function(){t(i)}),n.data&&i.on("postRender",function(){this.find("*").each(function(e){var t=e.name();t in n.data&&e.value(n.data[t])})}),i.features=n||{},i.params=e||{},i=i.renderTo(document.body).reflow()},alert:function(e,t,n){var i;return(i=$t.alert(e,function(){t()})).on("close",function(){n(i)}),i},confirm:function(e,t,n){var i;return(i=$t.confirm(e,function(e){t(e)})).on("close",function(){n(i)}),i},close:function(e){e.close()},getParams:function(e){return e.params},setParams
 :function(e,t){e.params=t}}}}},Xt=Te.extend({Defaults:{firstControlClass:"first",lastControlClass:"last"},init:function(e){this.settings=w.extend({},this.Defaults,e)},preRender:function(e){e.bodyClasses.add(this.settings.containerClass)},applyClasses:function(e){var t,n,i,r,o=this.settings;t=o.firstControlClass,n=o.lastControlClass,e.each(function(e){e.classes.remove(t).remove(n).add(o.controlClass),e.visible()&&(i||(i=e),r=e)}),i&&i.classes.add(t),r&&r.classes.add(n)},renderHtml:function(e){var t="";return this.applyClasses(e.items()),e.items().each(function(e){t+=e.renderHtml()}),t},recalc:function(){},postRender:function(){},isNative:function(){return!1}}),jt=Xt.extend({Defaults:{containerClass:"abs-layout",controlClass:"abs-layout-item"},recalc:function(e){e.items().filter(":visible").each(function(e){var t=e.settings;e.layoutRect({x:t.x,y:t.y,w:t.w,h:t.h}),e.recalc&&e.recalc()})},renderH
 tml:function(e){return'<div id="'+e._id+'-absend" class="'+e.classPrefix+'abs-end"></div>'+this._super(e)}}),Jt=Pt.extend({Defaults:{classes:"widget btn",role:"button"},init:function(e){var t,n=this;n._super(e),e=n.settings,t=n.settings.size,n.on("click mousedown",function(e){e.preventDefault()}),n.on("touchstart",function(e){n.fire("click",e),e.preventDefault()}),e.subtype&&n.classes.add(e.subtype),t&&n.classes.add("btn-"+t),e.icon&&n.icon(e.icon)},icon:function(e){return arguments.length?(this.state.set("icon",e),this):this.state.get("icon")},repaint:function(){var e,t=this.getEl().firstChild;t&&((e=t.style).width=e.height="100%"),this._super()},renderHtml:function(){var e,t,n=this,i=n._id,r=n.classPrefix,o=n.state.get("icon"),s=n.state.get("text"),a="",l=n.settings;return(e=l.image)?(o="none&qu
 ot;,"string"!=typeof e&&(e=window.getSelection?e[0]:e[1]),e=" style=\"background-image: url('"+e+"')\""):e="",s&&(n.classes.add("btn-has-text"),a='<span class="'+r+'txt">'+n.encode(s)+"</span>"),o=o?r+"ico "+r+"i-"+o:"",t="boolean"==typeof l.active?' aria-pressed="'+l.active+'"':"",'<div id="'+i+'" class="'+n.classes+'" tabindex="-1"'+t+'><button id="'+i+'-button" role="presentation" type="button" tabindex="-1">'+(o?'<i class="'+o+'"'+e+"></i>":"")+a+"</button></div>"},bindStates:function(){var o=this,n=o.$,i=o.classPrefix+"txt";function s(e){var t=n("span."+i,o.getEl());e?(t[0]||(n("button:first",o.getEl()).append('<span class="'+i+'&qu
 ot;></span>'),t=n("span."+i,o.getEl())),t.html(o.encode(e))):t.remove(),o.classes.toggle("btn-has-text",!!e)}return o.state.on("change:text",function(e){s(e.value)}),o.state.on("change:icon",function(e){var t=e.value,n=o.classPrefix;t=(o.settings.icon=t)?n+"ico "+n+"i-"+o.settings.icon:"";var i=o.getEl().firstChild,r=i.getElementsByTagName("i")[0];t?(r&&r===i.firstChild||(r=document.createElement("i"),i.insertBefore(r,i.firstChild)),r.className=t):r&&i.removeChild(r),s(o.state.get("text"))}),o._super()}}),Gt=Jt.extend({init:function(e){e=w.extend({text:"Browse...",multiple:!1,accept:null},e),this._super(e),this.classes.add("browsebutton"),e.multiple&&this.classes.add("multiple")},postRender:function(){var n=this,t=_e.create("input",{type:"file",id:n._id+"-browse",accept:n.settings.accept});n._
 super(),xe(t).on("change",function(e){var t=e.target.files;n.value=function(){return t.length?n.settings.multiple?t:t[0]:null},e.preventDefault(),t.length&&n.fire("change",e)}),xe(t).on("click",function(e){e.stopPropagation()}),xe(n.getEl("button")).on("click",function(e){e.stopPropagation(),t.click()}),n.getEl().appendChild(t)},remove:function(){xe(this.getEl("button")).off(),xe(this.getEl("input")).off(),this._super()}}),Kt=ut.extend({Defaults:{defaultType:"button",role:"group"},renderHtml:function(){var e=this,t=e._layout;return e.classes.add("btn-group"),e.preRender(),t.preRender(e),'<div id="'+e._id+'" class="'+e.classes+'"><div id="'+e._id+'-body">'+(e.settings.html||"")+t.renderHtml(e)+"</div></div>"}}),Zt=Pt.extend({Defaults:{classes:"checkbox",role:"checkbox",checked:!1},init
 :function(e){var t=this;t._super(e),t.on("click mousedown",function(e){e.preventDefault()}),t.on("click",function(e){e.preventDefault(),t.disabled()||t.checked(!t.checked())}),t.checked(t.settings.checked)},checked:function(e){return arguments.length?(this.state.set("checked",e),this):this.state.get("checked")},value:function(e){return arguments.length?this.checked(e):this.checked()},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix;return'<div id="'+t+'" class="'+e.classes+'" unselectable="on" aria-labelledby="'+t+'-al" tabindex="-1"><i class="'+n+"ico "+n+'i-checkbox"></i><span id="'+t+'-al" class="'+n+'label">'+e.encode(e.state.get("text"))+"</span></div>"},bindStates:function(){var o=this;function t(e){o.classes.toggle("checked",e),o.aria("checked",e)}return o.state.on(
 "change:text",function(e){o.getEl("al").firstChild.data=o.translate(e.value)}),o.state.on("change:checked change:value",function(e){o.fire("change"),t(e.value)}),o.state.on("change:icon",function(e){var t=e.value,n=o.classPrefix;if(void 0===t)return o.settings.icon;t=(o.settings.icon=t)?n+"ico "+n+"i-"+o.settings.icon:"";var i=o.getEl().firstChild,r=i.getElementsByTagName("i")[0];t?(r&&r===i.firstChild||(r=document.createElement("i"),i.insertBefore(r,i.firstChild)),r.className=t):r&&i.removeChild(r)}),o.state.get("checked")&&t(!0),o._super()}}),Qt=tinymce.util.Tools.resolve("tinymce.util.VK"),en=Pt.extend({init:function(i){var r=this;r._super(i),i=r.settings,r.classes.add("combobox"),r.subinput=!0,r.ariaTarget="inp",i.menu=i.menu||i.values,i.menu&&(i.icon="caret"),r.on("click",function(e){var t
 =e.target,n=r.getEl();if(xe.contains(n,t)||t===n)for(;t&&t!==n;)t.id&&-1!==t.id.indexOf("-open")&&(r.fire("action"),i.menu&&(r.showMenu(),e.aria&&r.menu.items()[0].focus())),t=t.parentNode}),r.on("keydown",function(e){var t;13===e.keyCode&&"INPUT"===e.target.nodeName&&(e.preventDefault(),r.parents().reverse().each(function(e){if(e.toJSON)return t=e,!1}),r.fire("submit",{data:t.toJSON()}))}),r.on("keyup",function(e){if("INPUT"===e.target.nodeName){var t=r.state.get("value"),n=e.target.value;n!==t&&(r.state.set("value",n),r.fire("autocomplete",e))}}),r.on("mouseover",function(e){var t=r.tooltip().moveTo(-65535);if(r.statusLevel()&&-1!==e.target.className.indexOf(r.classPrefix+"status")){var n=r.statusMessage()||"Ok",i=t.text(n).show().testMoveRel(e.target,["bc-tc","bc-tl&
 quot;,"bc-tr"]);t.classes.toggle("tooltip-n","bc-tc"===i),t.classes.toggle("tooltip-nw","bc-tl"===i),t.classes.toggle("tooltip-ne","bc-tr"===i),t.moveRel(e.target,i)}})},statusLevel:function(e){return 0<arguments.length&&this.state.set("statusLevel",e),this.state.get("statusLevel")},statusMessage:function(e){return 0<arguments.length&&this.state.set("statusMessage",e),this.state.get("statusMessage")},showMenu:function(){var e,t=this,n=t.settings;t.menu||((e=n.menu||[]).length?e={type:"menu",items:e}:e.type=e.type||"menu",t.menu=b.create(e).parent(t).renderTo(t.getContainerElm()),t.fire("createmenu"),t.menu.reflow(),t.menu.on("cancel",function(e){e.control===t.menu&&t.focus()}),t.menu.on("show hide",function(e){e.control.items().each(function(e){e.active(e.value()===t.value())})}).fire("show&
 quot;),t.menu.on("select",function(e){t.value(e.control.value())}),t.on("focusin",function(e){"INPUT"===e.target.tagName.toUpperCase()&&t.menu.hide()}),t.aria("expanded",!0)),t.menu.show(),t.menu.layoutRect({w:t.layoutRect().w}),t.menu.moveRel(t.getEl(),t.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"])},focus:function(){this.getEl("inp").focus()},repaint:function(){var e,t,n=this,i=n.getEl(),r=n.getEl("open"),o=n.layoutRect(),s=0,a=i.firstChild;n.statusLevel()&&"none"!==n.statusLevel()&&(s=parseInt(_e.getRuntimeStyle(a,"padding-right"),10)-parseInt(_e.getRuntimeStyle(a,"padding-left"),10)),e=r?o.w-_e.getSize(r).width-10:o.w-10;var l=document;return l.all&&(!l.documentMode||l.documentMode<=8)&&(t=n.layoutRect().h-2+"px"),xe(a).css({width:e-s,lineHeight:t}),n._super(),n},postRender:function(){var t=this;retu
 rn xe(this.getEl("inp")).on("change",function(e){t.state.set("value",e.target.value),t.fire("change",e)}),t._super()},renderHtml:function(){var e,t,n,i=this,r=i._id,o=i.settings,s=i.classPrefix,a=i.state.get("value")||"",l="",u="";return"spellcheck"in o&&(u+=' spellcheck="'+o.spellcheck+'"'),o.maxLength&&(u+=' maxlength="'+o.maxLength+'"'),o.size&&(u+=' size="'+o.size+'"'),o.subtype&&(u+=' type="'+o.subtype+'"'),n='<i id="'+r+'-status" class="mce-status mce-ico" style="display: none"></i>',i.disabled()&&(u+=' disabled="disabled"'),(e=o.icon)&&"caret"!==e&&(e=s+"ico "+s+"i-"+o.icon),t=i.state.get("text"),(e||t)&&(l='<div id="'+r+'-open" class="'+s+"btn "+s+'open" tabInde
 x="-1" role="button"><button id="'+r+'-action" type="button" hidefocus="1" tabindex="-1">'+("caret"!==e?'<i class="'+e+'"></i>':'<i class="'+s+'caret"></i>')+(t?(e?" ":"")+t:"")+"</button></div>",i.classes.add("has-open")),'<div id="'+r+'" class="'+i.classes+'"><input id="'+r+'-inp" class="'+s+'textbox" value="'+i.encode(a,!1)+'" hidefocus="1"'+u+' placeholder="'+i.encode(o.placeholder)+'" />'+n+l+"</div>"},value:function(e){return arguments.length?(this.state.set("value",e),this):(this.state.get("rendered")&&this.state.set("value",this.getEl("inp").value),this.state.get("value"))},showAutoComplete:function(e,i){var r=this;if(0!==e.length){r.menu?r
 .menu.items().remove():r.menu=b.create({type:"menu",classes:"combobox-menu",layout:"flow"}).parent(r).renderTo(),w.each(e,function(e){var t,n;r.menu.add({text:e.title,url:e.previewUrl,match:i,classes:"menu-item-ellipsis",onclick:(t=e.value,n=e.title,function(){r.fire("selectitem",{title:n,value:t})})})}),r.menu.renderNew(),r.hideMenu(),r.menu.on("cancel",function(e){e.control.parent()===r.menu&&(e.stopPropagation(),r.focus(),r.hideMenu())}),r.menu.on("select",function(){r.focus()});var t=r.layoutRect().w;r.menu.layoutRect({w:t,minW:0,maxW:t}),r.menu.repaint(),r.menu.reflow(),r.menu.show(),r.menu.moveRel(r.getEl(),r.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"])}else r.hideMenu()},hideMenu:function(){this.menu&&this.menu.hide()},bindStates:function(){var r=this;r.state.on("change:value",function(e){r.getEl("inp").value!==e.value&&(r.g
 etEl("inp").value=e.value)}),r.state.on("change:disabled",function(e){r.getEl("inp").disabled=e.value}),r.state.on("change:statusLevel",function(e){var t=r.getEl("status"),n=r.classPrefix,i=e.value;_e.css(t,"display","none"===i?"none":""),_e.toggleClass(t,n+"i-checkmark","ok"===i),_e.toggleClass(t,n+"i-warning","warn"===i),_e.toggleClass(t,n+"i-error","error"===i),r.classes.toggle("has-status","none"!==i),r.repaint()}),_e.on(r.getEl("status"),"mouseleave",function(){r.tooltip().hide()}),r.on("cancel",function(e){r.menu&&r.menu.visible()&&(e.stopPropagation(),r.hideMenu())});var n=function(e,t){t&&0<t.items().length&&t.items().eq(e)[0].focus()};return r.on("keydown",function(e){var t=e.keyCode;"INPUT"===e.target.nodeName&&(t=
 ==Qt.DOWN?(e.preventDefault(),r.fire("autocomplete"),n(0,r.menu)):t===Qt.UP&&(e.preventDefault(),n(-1,r.menu)))}),r._super()},remove:function(){xe(this.getEl("inp")).off(),this.menu&&this.menu.remove(),this._super()}}),tn=en.extend({init:function(e){var t=this;e.spellcheck=!1,e.onaction&&(e.icon="none"),t._super(e),t.classes.add("colorbox"),t.on("change keyup postrender",function(){t.repaintColor(t.value())})},repaintColor:function(e){var t=this.getEl("open"),n=t?t.getElementsByTagName("i")[0]:null;if(n)try{n.style.background=e}catch(i){}},bindStates:function(){var t=this;return t.state.on("change:value",function(e){t.state.get("rendered")&&t.repaintColor(e.value)}),t._super()}}),nn=Jt.extend({showPanel:function(){var t=this,e=t.settings;if(t.classes.add("opened"),t.panel)t.panel.show();else{var n=e.panel;n.type&&(n={layout:"grid",item
 s:n}),n.role=n.role||"dialog",n.popover=!0,n.autohide=!0,n.ariaRoot=!0,t.panel=new Et(n).on("hide",function(){t.classes.remove("opened")}).on("cancel",function(e){e.stopPropagation(),t.focus(),t.hidePanel()}).parent(t).renderTo(t.getContainerElm()),t.panel.fire("show"),t.panel.reflow()}var i=t.panel.testMoveRel(t.getEl(),e.popoverAlign||(t.isRtl()?["bc-tc","bc-tl","bc-tr"]:["bc-tc","bc-tr","bc-tl","tc-bc","tc-br","tc-bl"]));t.panel.classes.toggle("start","l"===i.substr(-1)),t.panel.classes.toggle("end","r"===i.substr(-1));var r="t"===i.substr(0,1);t.panel.classes.toggle("bottom",!r),t.panel.classes.toggle("top",r),t.panel.moveRel(t.getEl(),i)},hidePanel:function(){this.panel&&this.panel.hide()},postRender:function(){var t=this;return t.aria("haspopup",!0),t.o
 n("click",function(e){e.control===t&&(t.panel&&t.panel.visible()?t.hidePanel():(t.showPanel(),t.panel.focus(!!e.aria)))}),t._super()},remove:function(){return this.panel&&(this.panel.remove(),this.panel=null),this._super()}}),rn=v.DOM,on=nn.extend({init:function(e){this._super(e),this.classes.add("splitbtn"),this.classes.add("colorbutton")},color:function(e){return e?(this._color=e,this.getEl("preview").style.backgroundColor=e,this):this._color},resetColor:function(){return this._color=null,this.getEl("preview").style.backgroundColor=null,this},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix,i=e.state.get("text"),r=e.settings.icon?n+"ico "+n+"i-"+e.settings.icon:"",o=e.settings.image?" style=\"background-image: url('"+e.settings.image+"')\"":"",s="";return i&&(e.classes.add("btn-has-text"),s='&l
 t;span class="'+n+'txt">'+e.encode(i)+"</span>"),'<div id="'+t+'" class="'+e.classes+'" role="button" tabindex="-1" aria-haspopup="true"><button role="presentation" hidefocus="1" type="button" tabindex="-1">'+(r?'<i class="'+r+'"'+o+"></i>":"")+'<span id="'+t+'-preview" class="'+n+'preview"></span>'+s+'</button><button type="button" class="'+n+'open" hidefocus="1" tabindex="-1"> <i class="'+n+'caret"></i></button></div>'},postRender:function(){var t=this,n=t.settings.onclick;return t.on("click",function(e){e.aria&&"down"===e.aria.key||e.control!==t||rn.getParent(e.target,"."+t.classPrefix+"open")||(e.stopImmediatePropagation(),n.call(t,e))}),delete t
 .settings.onclick,t._super()}}),sn=tinymce.util.Tools.resolve("tinymce.util.Color"),an=Pt.extend({Defaults:{classes:"widget colorpicker"},init:function(e){this._super(e)},postRender:function(){var n,i,r,o,s,a=this,l=a.color();function u(e,t){var n,i,r=_e.getPos(e);return n=t.pageX-r.x,i=t.pageY-r.y,{x:n=Math.max(0,Math.min(n/e.clientWidth,1)),y:i=Math.max(0,Math.min(i/e.clientHeight,1))}}function c(e,t){var n=(360-e.h)/360;_e.css(r,{top:100*n+"%"}),t||_e.css(s,{left:e.s+"%",top:100-e.v+"%"}),o.style.background=sn({s:100,v:100,h:e.h}).toHex(),a.color().parse({s:e.s,v:e.v,h:e.h})}function e(e){var t;t=u(o,e),n.s=100*t.x,n.v=100*(1-t.y),c(n),a.fire("change")}function t(e){var t;t=u(i,e),(n=l.toHsv()).h=360*(1-t.y),c(n,!0),a.fire("change")}i=a.getEl("h"),r=a.getEl("hp"),o=a.getEl("sv"),s=a.getEl("svp"),a._repaint=function(){c(n=l.toHsv())},a._super(),a._svdraghelper=new dt(a._id
 +"-sv",{start:e,drag:e}),a._hdraghelper=new dt(a._id+"-h",{start:t,drag:t}),a._repaint()},rgb:function(){return this.color().toRgb()},value:function(e){if(!arguments.length)return this.color().toHex();this.color().parse(e),this._rendered&&this._repaint()},color:function(){return this._color||(this._color=sn()),this._color},renderHtml:function(){var e,t=this._id,o=this.classPrefix,s="#ff0000,#ff0080,#ff00ff,#8000ff,#0000ff,#0080ff,#00ffff,#00ff80,#00ff00,#80ff00,#ffff00,#ff8000,#ff0000";return e='<div id="'+t+'-h" class="'+o+'colorpicker-h" style="background: -ms-linear-gradient(top,'+s+");background: linear-gradient(to bottom,"+s+');">'+function(){var e,t,n,i,r="";for(n="filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=",e=0,t=(i=s.split(",")).length-1;e<t;e++)r+='<div class="'+o+'colorpicker-h-chunk" style="height:'+100
 /t+"%;"+n+i[e]+",endColorstr="+i[e+1]+");-ms-"+n+i[e]+",endColorstr="+i[e+1]+')"></div>';return r}()+'<div id="'+t+'-hp" class="'+o+'colorpicker-h-marker"></div></div>','<div id="'+t+'" class="'+this.classes+'"><div id="'+t+'-sv" class="'+o+'colorpicker-sv"><div class="'+o+'colorpicker-overlay1"><div class="'+o+'colorpicker-overlay2"><div id="'+t+'-svp" class="'+o+'colorpicker-selector1"><div class="'+o+'colorpicker-selector2"></div></div></div></div></div>'+e+"</div>"}}),ln=Pt.extend({init:function(e){e=w.extend({height:100,text:"Drop an image here",multiple:!1,accept:null},e),this._super(e),this.classes.add("dropzone"),e.multiple&&this.classes.add("multiple")},renderHtml:function(){va
 r e,t,n=this.settings;return e={id:this._id,hidefocus:"1"},t=_e.create("div",e,"<span>"+this.translate(n.text)+"</span>"),n.height&&_e.css(t,"height",n.height+"px"),n.width&&_e.css(t,"width",n.width+"px"),t.className=this.classes,t.outerHTML},postRender:function(){var i=this,e=function(e){e.preventDefault(),i.classes.toggle("dragenter"),i.getEl().className=i.classes};i._super(),i.$el.on("dragover",function(e){e.preventDefault()}),i.$el.on("dragenter",e),i.$el.on("dragleave",e),i.$el.on("drop",function(e){if(e.preventDefault(),!i.state.get("disabled")){var t=function(e){var t=i.settings.accept;if("string"!=typeof t)return e;var n=new RegExp("("+t.split(/\s*,\s*/).join("|")+")$","i");return w.grep(e,function(e){return n.test(e.name)})}(e.dataTransfer.files);i.value=funct
 ion(){return t.length?i.settings.multiple?t:t[0]:null},t.length&&i.fire("change",e)}})},remove:function(){this.$el.off(),this._super()}}),un=Pt.extend({init:function(e){var n=this;e.delimiter||(e.delimiter="\xbb"),n._super(e),n.classes.add("path"),n.canFocus=!0,n.on("click",function(e){var t;(t=e.target.getAttribute("data-index"))&&n.fire("select",{value:n.row()[t],index:t})}),n.row(n.settings.row)},focus:function(){return this.getEl().firstChild.focus(),this},row:function(e){return arguments.length?(this.state.set("row",e),this):this.state.get("row")},renderHtml:function(){return'<div id="'+this._id+'" class="'+this.classes+'">'+this._getDataPathHtml(this.state.get("row"))+"</div>"},bindStates:function(){var t=this;return t.state.on("change:row",function(e){t.innerHtml(t._getDataPathHtml(e.value))}),t._super()},_getDataPathHtm
 l:function(e){var t,n,i=e||[],r="",o=this.classPrefix;for(t=0,n=i.length;t<n;t++)r+=(0<t?'<div class="'+o+'divider" aria-hidden="true"> '+this.settings.delimiter+" </div>":"")+'<div role="button" class="'+o+"path-item"+(t===n-1?" "+o+"last":"")+'" data-index="'+t+'" tabindex="-1" id="'+this._id+"-"+t+'" aria-level="'+(t+1)+'">'+i[t].name+"</div>";return r||(r='<div class="'+o+'path-item">\xa0</div>'),r}}),cn=un.extend({postRender:function(){var o=this,s=o.settings.editor;function a(e){if(1===e.nodeType){if("BR"===e.nodeName||e.getAttribute("data-mce-bogus"))return!0;if("bookmark"===e.getAttribute("data-mce-type"))return!0}return!1}return!1!==s.settings.elementpath&&(o.on("select",function(e){s.focus(),s.sele
 ction.select(this.row()[e.index].element),s.nodeChanged()}),s.on("nodeChange",function(e){for(var t=[],n=e.parents,i=n.length;i--;)if(1===n[i].nodeType&&!a(n[i])){var r=s.fire("ResolveName",{name:n[i].nodeName.toLowerCase(),target:n[i]});if(r.isDefaultPrevented()||t.push({name:r.name,element:n[i]}),r.isPropagationStopped())break}o.row(t)})),o._super()}}),dn=ut.extend({Defaults:{layout:"flex",align:"center",defaults:{flex:1}},renderHtml:function(){var e=this,t=e._layout,n=e.classPrefix;return e.classes.add("formitem"),t.preRender(e),'<div id="'+e._id+'" class="'+e.classes+'" hidefocus="1" tabindex="-1">'+(e.settings.title?'<div id="'+e._id+'-title" class="'+n+'title">'+e.settings.title+"</div>":"")+'<div id="'+e._id+'-body" class="'+e.bodyClasses+'">'+(e.settings.html||"")+t.renderHtml(e)+"
 </div></div>"}}),fn=ut.extend({Defaults:{containerCls:"form",layout:"flex",direction:"column",align:"stretch",flex:1,padding:15,labelGap:30,spacing:10,callbacks:{submit:function(){this.submit()}}},preRender:function(){var i=this,e=i.items();i.settings.formItemDefaults||(i.settings.formItemDefaults={layout:"flex",autoResize:"overflow",defaults:{flex:1}}),e.each(function(e){var t,n=e.settings.label;n&&((t=new dn(w.extend({items:{type:"label",id:e._id+"-l",text:n,flex:0,forId:e._id,disabled:e.disabled()}},i.settings.formItemDefaults))).type="formitem",e.aria("labelledby",e._id+"-l"),"undefined"==typeof e.settings.flex&&(e.settings.flex=1),i.replace(e,t),t.add(e))})},submit:function(){return this.fire("submit",{data:this.toJSON()})},postRender:function(){this._super(),this.fromJSON(this.settings.data)},bindStates:function(){va
 r n=this;function e(){var e,t,i=0,r=[];if(!1!==n.settings.labelGapCalc)for(("children"===n.settings.labelGapCalc?n.find("formitem"):n.items()).filter("formitem").each(function(e){var t=e.items()[0],n=t.getEl().clientWidth;i=i<n?n:i,r.push(t)}),t=n.settings.labelGap||0,e=r.length;e--;)r[e].settings.minWidth=i+t}n._super(),n.on("show",e),e()}}),hn=fn.extend({Defaults:{containerCls:"fieldset",layout:"flex",direction:"column",align:"stretch",flex:1,padding:"25 15 5 15",labelGap:30,spacing:10,border:1},renderHtml:function(){var e=this,t=e._layout,n=e.classPrefix;return e.preRender(),t.preRender(e),'<fieldset id="'+e._id+'" class="'+e.classes+'" hidefocus="1" tabindex="-1">'+(e.settings.title?'<legend id="'+e._id+'-title" class="'+n+'fieldset-title">'+e.settings.title+"</legend>":"")+'<div id=&quot
 ;'+e._id+'-body" class="'+e.bodyClasses+'">'+(e.settings.html||"")+t.renderHtml(e)+"</div></fieldset>"}}),mn=0,gn=function(e){if(null===e||e===undefined)throw new Error("Node cannot be null or undefined");return{dom:k(e)}},pn={fromHtml:function(e,t){var n=(t||document).createElement("div");if(n.innerHTML=e,!n.hasChildNodes()||1<n.childNodes.length)throw console.error("HTML does not have a single root node",e),"HTML must have a single root node";return gn(n.childNodes[0])},fromTag:function(e,t){var n=(t||document).createElement(e);return gn(n)},fromText:function(e,t){var n=(t||document).createTextNode(e);return gn(n)},fromDom:gn,fromPoint:function(e,t,n){var i=e.dom();return W.from(i.elementFromPoint(t,n)).map(gn)}},vn=(Node.ATTRIBUTE_NODE,Node.CDATA_SECTION_NODE,Node.COMMENT_NODE,Node.DOCUMENT_NODE),bn=(Node.DOCUMENT_TYPE_NODE,Node.DOCUMENT_FRAGMENT_NODE,Node.ELEMENT_NODE),yn=(Node.TEXT_NODE
 ,Node.PROCESSING_INSTRUCTION_NODE,Node.ENTITY_REFERENCE_NODE,Node.ENTITY_NODE,Node.NOTATION_NODE,"undefined"!=typeof window?window:Function("return this;")(),function(e,t){var n=function(e,t){for(var n=0;n<e.length;n++){var i=e[n];if(i.test(t))return i}return undefined}(e,t);if(!n)return{major:0,minor:0};var i=function(e){return Number(t.replace(n,"$"+e))};return wn(i(1),i(2))}),xn=function(){return wn(0,0)},wn=function(e,t){return{major:e,minor:t}},_n={nu:wn,detect:function(e,t){var n=String(t).toLowerCase();return 0===e.length?xn():yn(e,n)},unknown:xn},Rn="Firefox",Cn=function(e,t){return function(){return t===e}},En=function(e){var t=e.current;return{current:t,version:e.version,isEdge:Cn("Edge",t),isChrome:Cn("Chrome",t),isIE:Cn("IE",t),isOpera:Cn("Opera",t),isFirefox:Cn(Rn,t),isSafari:Cn("Safari",t)}},kn={unknown:function(){return En({current:undefined,version:_n.unknown()})},nu:En,edge:
 k("Edge"),chrome:k("Chrome"),ie:k("IE"),opera:k("Opera"),firefox:k(Rn),safari:k("Safari")},Hn="Windows",Sn="Android",Tn="Solaris",Mn="FreeBSD",Nn=function(e,t){return function(){return t===e}},Pn=function(e){var t=e.current;return{current:t,version:e.version,isWindows:Nn(Hn,t),isiOS:Nn("iOS",t),isAndroid:Nn(Sn,t),isOSX:Nn("OSX",t),isLinux:Nn("Linux",t),isSolaris:Nn(Tn,t),isFreeBSD:Nn(Mn,t)}},Wn={unknown:function(){return Pn({current:undefined,version:_n.unknown()})},nu:Pn,windows:k(Hn),ios:k("iOS"),android:k(Sn),linux:k("Linux"),osx:k("OSX"),solaris:k(Tn),freebsd:k(Mn)},Dn=function(e,t){var n=String(t).toLowerCase();return function(e,t){for(var n=0,i=e.length;n<i;n++){var r=e[n];if(t(r,n,e))return W.some(r)}return W.none()}(e,function(e){return e.search(n)})},On=function(e,n){return Dn(e,n).map(function(e){var t=_n.detect(e.versionR
 egexes,n);return{current:e.name,version:t}})},An=function(e,n){return Dn(e,n).map(function(e){var t=_n.detect(e.versionRegexes,n);return{current:e.name,version:t}})},Bn=function(e,t){return-1!==e.indexOf(t)},Ln=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,zn=function(t){return function(e){return Bn(e,t)}},In=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(e){return Bn(e,"edge/")&&Bn(e,"chrome")&&Bn(e,"safari")&&Bn(e,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,Ln],search:function(e){return Bn(e,"chrome")&&!Bn(e,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(e){return Bn(e,"msie")||Bn(e,"trident")}},{name:"Opera",versionRegexes:[Ln,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:zn("opera")},{nam
 e:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:zn("firefox")},{name:"Safari",versionRegexes:[Ln,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(e){return(Bn(e,"safari")||Bn(e,"mobile/"))&&Bn(e,"applewebkit")}}],Fn=[{name:"Windows",search:zn("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(e){return Bn(e,"iphone")||Bn(e,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:zn("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:zn("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:zn("linux"),versionRegexes:[]},{name:"Solaris",search:zn("sunos"),versionRegexe
 s:[]},{name:"FreeBSD",search:zn("freebsd"),versionRegexes:[]}],Un={browsers:k(In),oses:k(Fn)},Vn=function(e){var t,n,i,r,o,s,a,l,u,c,d,f=Un.browsers(),h=Un.oses(),m=On(f,e).fold(kn.unknown,kn.nu),g=An(h,e).fold(Wn.unknown,Wn.nu);return{browser:m,os:g,deviceType:(n=m,i=e,r=(t=g).isiOS()&&!0===/ipad/i.test(i),o=t.isiOS()&&!r,s=t.isAndroid()&&3===t.version.major,a=t.isAndroid()&&4===t.version.major,l=r||s||a&&!0===/mobile/i.test(i),u=t.isiOS()||t.isAndroid(),c=u&&!l,d=n.isSafari()&&t.isiOS()&&!1===/safari/i.test(i),{isiPad:k(r),isiPhone:k(o),isTablet:k(l),isPhone:k(c),isTouch:k(u),isAndroid:t.isAndroid,isiOS:t.isiOS,isWebView:k(d)})}},Yn=(Yt=!(Ut=function(){var e=navigator.userAgent;return Vn(e)}),function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return Yt||(Yt=!0,Vt=Ut.apply(null,e)),Vt}),$n=bn,qn=vn,Xn=function(e){return e.nodeType!==$n&&e.nodeType!==qn||0===e.childElemen
 tCount},jn=(Yn().browser.isIE(),function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t]}("element","offset"),w.trim),Jn=function(t){return function(e){if(e&&1===e.nodeType){if(e.contentEditable===t)return!0;if(e.getAttribute("data-mce-contenteditable")===t)return!0}return!1}},Gn=Jn("true"),Kn=Jn("false"),Zn=function(e,t,n,i,r){return{type:e,title:t,url:n,level:i,attach:r}},Qn=function(e){return e.innerText||e.textContent},ei=function(e){return e.id?e.id:(t="h",n=(new Date).getTime(),t+"_"+Math.floor(1e9*Math.random())+ ++mn+String(n));var t,n},ti=function(e){return(t=e)&&"A"===t.nodeName&&(t.id||t.name)&&ii(e);var t},ni=function(e){return e&&/^(H[1-6])$/.test(e.nodeName)},ii=function(e){return function(e){for(;e=e.parentNode;){var t=e.contentEditable;if(t&&"inherit"!==t)return Gn(e)}return!1}(e)&&!Kn(e)},ri=function(e){retu
 rn ni(e)&&ii(e)},oi=function(e){var t,n=ei(e);return Zn("header",Qn(e),"#"+n,ni(t=e)?parseInt(t.nodeName.substr(1),10):0,function(){e.id=n})},si=function(e){var t=e.id||e.name,n=Qn(e);return Zn("anchor",n||"#"+t,"#"+t,0,E)},ai=function(e){var t,n,i,r,o,s;return t="h1,h2,h3,h4,h5,h6,a:not([href])",n=e,J((Yn().browser.isIE(),function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t]}("element","offset"),i=pn.fromDom(n),r=t,s=(o=i)===undefined?document:o.dom(),Xn(s)?[]:J(s.querySelectorAll(r),pn.fromDom)),function(e){return e.dom()})},li=function(e){return 0<jn(e.title).length},ui=function(e){var t,n=ai(e);return K((t=n,J(K(t,ri),oi)).concat(J(K(n,ti),si)),li)},ci={},di=function(e){return{title:e.title,value:{title:{raw:e.title},url:e.url,attach:e.attach}}},fi=function(e,t){return{title:e,value:{title:e,url:t,attach:E}}},hi=function(e,t,n){var i=t in e?e[t]:n;return!1===i?null:i},mi=
 function(e,i,r,t){var n,o,s,a,l,u,c={title:"-"},d=function(e){var t=e.hasOwnProperty(r)?e[r]:[],n=K(t,function(e){return t=e,!j(i,function(e){return e.url===t});var t});return w.map(n,function(e){return{title:e,value:{title:e,url:e,attach:E}}})},f=function(t){var e,n=K(i,function(e){return e.type===t});return e=n,w.map(e,di)};return!1===t.typeahead_urls?[]:"file"===r?(n=[pi(e,d(ci)),pi(e,f("header")),pi(e,(a=f("anchor"),l=hi(t,"anchor_top","#top"),u=hi(t,"anchor_bottom","#bottom"),null!==l&&a.unshift(fi("<top>",l)),null!==u&&a.push(fi("<bottom>",u)),a))],o=function(e,t){return 0===e.length||0===t.length?e.concat(t):e.concat(c,t)},s=[],G(n,function(e){s=o(s,e)}),s):pi(e,d(ci))},gi=function(e,t){var n,i,r,o=ci[t];/^https?/.test(e)&&(o?(n=o,i=e,r=X(n,i),-1===r?W.none():W.some(r)).isNone()&&(ci[t]=o.slice(0,5).concat(e)):ci[t]=[e])},pi=function(
 e,t){var n=e.toLowerCase(),i=w.grep(t,function(e){return-1!==e.title.toLowerCase().indexOf(n)});return 1===i.length&&i[0].title===e?[]:i},vi=function(o,e,n){var i=e.filepicker_validator_handler;i&&o.state.on("change:value",function(e){var t;0!==(t=e.value).length?i({url:t,type:n},function(e){var t,n,i,r=(n=(t=e).status,i=t.message,"valid"===n?{status:"ok",message:i}:"unknown"===n?{status:"warn",message:i}:"invalid"===n?{status:"warn",message:i}:{status:"none",message:""});o.statusMessage(r.message),o.statusLevel(r.status)}):o.statusLevel("none")})},bi=en.extend({Statics:{clearHistory:function(){ci={}}},init:function(e){var t,n,i,r,o,s,a,l,u=this,c=window.tinymce?window.tinymce.activeEditor:h.activeEditor,d=c.settings,f=e.filetype;e.spellcheck=!1,(i=d.file_picker_types||d.file_browser_callback_types)&&(i=w.makeMap(i,/[, ]/)),i&&!i[f]||(!(n=d.file_picker_
 callback)||i&&!i[f]?!(n=d.file_browser_callback)||i&&!i[f]||(t=function(){n(u.getEl("inp").id,u.value(),f,window)}):t=function(){var e=u.fire("beforecall").meta;e=w.extend({filetype:f},e),n.call(c,function(e,t){u.value(e).fire("change",{meta:t})},u.value(),e)}),t&&(e.icon="browse",e.onaction=t),u._super(e),u.classes.add("filepicker"),r=u,o=d,s=c.getBody(),a=f,l=function(e){var t=ui(s),n=mi(e,t,a,o);r.showAutoComplete(n,e)},r.on("autocomplete",function(){l(r.value())}),r.on("selectitem",function(e){var t=e.value;r.value(t.url);var n,i=(n=t.title).raw?n.raw:n;"image"===a?r.fire("change",{meta:{alt:i,attach:t.attach}}):r.fire("change",{meta:{text:i,attach:t.attach}}),r.focus()}),r.on("click",function(e){0===r.value().length&&"INPUT"===e.target.nodeName&&l("")}),r.on("PostRender",function(){r.getRoot().on(&quo
 t;submit",function(e){e.isDefaultPrevented()||gi(r.value(),a)})}),vi(u,d,f)}}),yi=jt.extend({recalc:function(e){var t=e.layoutRect(),n=e.paddingBox;e.items().filter(":visible").each(function(e){e.layoutRect({x:n.left,y:n.top,w:t.innerW-n.right-n.left,h:t.innerH-n.top-n.bottom}),e.recalc&&e.recalc()})}}),xi=jt.extend({recalc:function(e){var t,n,i,r,o,s,a,l,u,c,d,f,h,m,g,p,v,b,y,x,w,_,R,C,E,k,H,S,T,M,N,P,W,D,O,A,B,L=[],z=Math.max,I=Math.min;for(i=e.items().filter(":visible"),r=e.layoutRect(),o=e.paddingBox,s=e.settings,f=e.isRtl()?s.direction||"row-reversed":s.direction,a=s.align,l=e.isRtl()?s.pack||"end":s.pack,u=s.spacing||0,"row-reversed"!==f&&"column-reverse"!==f||(i=i.set(i.toArray().reverse()),f=f.split("-")[0]),"column"===f?(C="y",_="h",R="minH",E="maxH",H="innerH",k="top",S="deltaH",T="contentH",D=&
 quot;left",P="w",M="x",N="innerW",W="minW",O="right",A="deltaW",B="contentW"):(C="x",_="w",R="minW",E="maxW",H="innerW",k="left",S="deltaW",T="contentW",D="top",P="h",M="y",N="innerH",W="minH",O="bottom",A="deltaH",B="contentH"),d=r[H]-o[k]-o[k],w=c=0,t=0,n=i.length;t<n;t++)m=(h=i[t]).layoutRect(),d-=t<n-1?u:0,0<(g=h.settings.flex)&&(c+=g,m[E]&&L.push(h),m.flex=g),d-=m[R],w<(p=o[D]+m[W]+o[O])&&(w=p);if((y={})[R]=d<0?r[R]-d+r[S]:r[H]-d+r[S],y[W]=w+r[A],y[T]=r[H]-d,y[B]=w,y.minW=I(y.minW,r.maxW),y.minH=I(y.minH,r.maxH),y.minW=z(y.minW,r.startMinWidth),y.minH=z(y.minH,r.startMinHeight),!r.autoResize||y.minW===r.minW&&y.minH===r.minH){for(b=d/c,t=0,n=L.length;t<n;t++)(v=(m=(h=L[t]).layoutRect())[E])<(p=m
 [R]+m.flex*b)?(d-=m[E]-m[R],c-=m.flex,m.flex=0,m.maxFlexSize=v):m.maxFlexSize=0;for(b=d/c,x=o[k],y={},0===c&&("end"===l?x=d+o[k]:"center"===l?(x=Math.round(r[H]/2-(r[H]-d)/2)+o[k])<0&&(x=o[k]):"justify"===l&&(x=o[k],u=Math.floor(d/(i.length-1)))),y[M]=o[D],t=0,n=i.length;t<n;t++)p=(m=(h=i[t]).layoutRect()).maxFlexSize||m[R],"center"===a?y[M]=Math.round(r[N]/2-m[P]/2):"stretch"===a?(y[P]=z(m[W]||0,r[N]-o[D]-o[O]),y[M]=o[D]):"end"===a&&(y[M]=r[N]-m[P]-o.top),0<m.flex&&(p+=m.flex*b),y[_]=p,y[C]=x,h.layoutRect(y),h.recalc&&h.recalc(),x+=p+u}else if(y.w=y.minW,y.h=y.minH,e.layoutRect(y),this.recalc(e),null===e._lastRect){var F=e.parent();F&&(F._lastRect=null,F.recalc())}}}),wi=Xt.extend({Defaults:{containerClass:"flow-layout",controlClass:"flow-layout-item",endClass:"break"},recalc:function(e){e.items().filter(":visible").eac
 h(function(e){e.recalc&&e.recalc()})},isNative:function(){return!0}}),_i=function(e,t){return n=t,r=(i=e)===undefined?document:i.dom(),Xn(r)?W.none():W.from(r.querySelector(n)).map(pn.fromDom);var n,i,r},Ri=function(e,t){return function(){e.execCommand("mceToggleFormat",!1,t)}},Ci=function(e,t,n){var i=function(e){n(e,t)};e.formatter?e.formatter.formatChanged(t,i):e.on("init",function(){e.formatter.formatChanged(t,i)})},Ei=function(e,n){return function(t){Ci(e,n,function(e){t.control.active(e)})}},ki=function(i){var t=["alignleft","aligncenter","alignright","alignjustify"],r="alignleft",e=[{text:"Left",icon:"alignleft",onclick:Ri(i,"alignleft")},{text:"Center",icon:"aligncenter",onclick:Ri(i,"aligncenter")},{text:"Right",icon:"alignright",onclick:Ri(i,"alignright")},{text:"Justify",icon:"alignjustify&qu
 ot;,onclick:Ri(i,"alignjustify")}];i.addMenuItem("align",{text:"Align",menu:e}),i.addButton("align",{type:"menubutton",icon:r,menu:e,onShowMenu:function(e){var n=e.control.menu;w.each(t,function(t,e){n.items().eq(e).each(function(e){return e.active(i.formatter.match(t))})})},onPostRender:function(e){var n=e.control;w.each(t,function(t,e){Ci(i,t,function(e){n.icon(r),e&&n.icon(t)})})}}),w.each({alignleft:["Align left","JustifyLeft"],aligncenter:["Align center","JustifyCenter"],alignright:["Align right","JustifyRight"],alignjustify:["Justify","JustifyFull"],alignnone:["No alignment","JustifyNone"]},function(e,t){i.addButton(t,{active:!1,tooltip:e[0],cmd:e[1],onPostRender:Ei(i,t)})})},Hi=function(e){return e?e.split(",")[0]:""},Si=function(l,u){return function(){var a=this;a.state.set("value",null),l.
 on("init nodeChange",function(e){var t,n,i,r,o=l.queryCommandValue("FontName"),s=(t=u,r=(n=o)?n.toLowerCase():"",w.each(t,function(e){e.value.toLowerCase()===r&&(i=e.value)}),w.each(t,function(e){i||Hi(e.value).toLowerCase()!==Hi(r).toLowerCase()||(i=e.value)}),i);a.value(s||null),!s&&o&&a.text(Hi(o))})}},Ti=function(n){n.addButton("fontselect",function(){var e,t=(e=function(e){for(var t=(e=e.replace(/;$/,"").split(";")).length;t--;)e[t]=e[t].split("=");return e}(n.settings.font_formats||"Andale Mono=andale mono,monospace;Arial=arial,helvetica,sans-serif;Arial Black=arial black,sans-serif;Book Antiqua=book antiqua,palatino,serif;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,palatino,serif;Helvetica=helvetica,arial,sans-serif;Impact=impact,sans-serif;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco,monospa
 ce;Times New Roman=times new roman,times,serif;Trebuchet MS=trebuchet ms,geneva,sans-serif;Verdana=verdana,geneva,sans-serif;Webdings=webdings;Wingdings=wingdings,zapf dingbats"),w.map(e,function(e){return{text:{raw:e[0]},value:e[1],textStyle:-1===e[1].indexOf("dings")?"font-family:"+e[1]:""}}));return{type:"listbox",text:"Font Family",tooltip:"Font Family",values:t,fixedWidth:!0,onPostRender:Si(n,t),onselect:function(e){e.control.settings.value&&n.execCommand("FontName",!1,e.control.settings.value)}}})},Mi=function(e){Ti(e)},Ni=function(e,t){return/[0-9.]+px$/.test(e)?(n=72*parseInt(e,10)/96,i=t||0,r=Math.pow(10,i),Math.round(n*r)/r+"pt"):e;var n,i,r},Pi=function(e,t,n){var i;return w.each(e,function(e){e.value===n?i=n:e.value===t&&(i=t)}),i},Wi=function(n){n.addButton("fontsizeselect",function(){var e,s,a,t=(e=n.settings.fontsize_formats||"8pt 10pt 12pt 14pt 18pt 24p
 t 36pt",w.map(e.split(" "),function(e){var t=e,n=e,i=e.split("=");return 1<i.length&&(t=i[0],n=i[1]),{text:t,value:n}}));return{type:"listbox",text:"Font Sizes",tooltip:"Font Sizes",values:t,fixedWidth:!0,onPostRender:(s=n,a=t,function(){var o=this;s.on("init nodeChange",function(e){var t,n,i,r;if(t=s.queryCommandValue("FontSize"))for(i=3;!r&&0<=i;i--)n=Ni(t,i),r=Pi(a,n,t);o.value(r||null),r||o.text(n)})}),onclick:function(e){e.control.settings.value&&n.execCommand("FontSize",!1,e.control.settings.value)}}})},Di=function(e){Wi(e)},Oi=function(n,e){var i=e.length;return w.each(e,function(e){e.menu&&(e.hidden=0===Oi(n,e.menu));var t=e.format;t&&(e.hidden=!n.formatter.canApply(t)),e.hidden&&i--}),i},Ai=function(n,e){var i=e.items().length;return e.items().each(function(e){e.menu&&e.visible(0<Ai(n,e.menu)),!e.menu&&e.settings.menu&
 amp;&e.visible(0<Oi(n,e.settings.menu));var t=e.settings.format;t&&e.visible(n.formatter.canApply(t)),e.visible()||i--}),i},Bi=function(e){var i,r,o,t,s,n,a,l,u=(r=0,o=[],t=[{title:"Headings",items:[{title:"Heading 1",format:"h1"},{title:"Heading 2",format:"h2"},{title:"Heading 3",format:"h3"},{title:"Heading 4",format:"h4"},{title:"Heading 5",format:"h5"},{title:"Heading 6",format:"h6"}]},{title:"Inline",items:[{title:"Bold",icon:"bold",format:"bold"},{title:"Italic",icon:"italic",format:"italic"},{title:"Underline",icon:"underline",format:"underline"},{title:"Strikethrough",icon:"strikethrough",format:"strikethrough"},{title:"Superscript",icon:"superscript",format:"superscript"},{t
 itle:"Subscript",icon:"subscript",format:"subscript"},{title:"Code",icon:"code",format:"code"}]},{title:"Blocks",items:[{title:"Paragraph",format:"p"},{title:"Blockquote",format:"blockquote"},{title:"Div",format:"div"},{title:"Pre",format:"pre"}]},{title:"Alignment",items:[{title:"Left",icon:"alignleft",format:"alignleft"},{title:"Center",icon:"aligncenter",format:"aligncenter"},{title:"Right",icon:"alignright",format:"alignright"},{title:"Justify",icon:"alignjustify",format:"alignjustify"}]}],s=function(e){var i=[];if(e)return w.each(e,function(e){var t={text:e.title,icon:e.icon};if(e.items)t.menu=s(e.items);else{var n=e.format||"custom"+r++;e.format||(e.name=n,o.push(e)),t.format=n,t.cmd=e.cmd}i.
 push(t)}),i},(i=e).on("init",function(){w.each(o,function(e){i.formatter.register(e.name,e)})}),{type:"menu",items:i.settings.style_formats_merge?i.settings.style_formats?s(t.concat(i.settings.style_formats)):s(t):s(i.settings.style_formats||t),onPostRender:function(e){i.fire("renderFormatsMenu",{control:e.control})},itemDefaults:{preview:!0,textStyle:function(){if(this.settings.format)return i.formatter.getCssText(this.settings.format)},onPostRender:function(){var n=this;n.parent().on("show",function(){var e,t;(e=n.settings.format)&&(n.disabled(!i.formatter.canApply(e)),n.active(i.formatter.match(e))),(t=n.settings.cmd)&&n.active(i.queryCommandState(t))})},onclick:function(){this.settings.format&&Ri(i,this.settings.format)(),this.settings.cmd&&i.execCommand(this.settings.cmd)}}});n=u,e.addMenuItem("formats",{text:"Formats",menu:n}),l=u,(a=e).addButton("styleselect",{type:"menu
 button",text:"Formats",menu:l,onShowMenu:function(){a.settings.style_formats_autohide&&Ai(a,this.menu)}})},Li=function(n,e){return function(){var r,o,s,t=[];return w.each(e,function(e){t.push({text:e[0],value:e[1],textStyle:function(){return n.formatter.getCssText(e[1])}})}),{type:"listbox",text:e[0][0],values:t,fixedWidth:!0,onselect:function(e){if(e.control){var t=e.control.value();Ri(n,t)()}},onPostRender:(r=n,o=t,function(){var t=this;r.on("nodeChange",function(e){var n=r.formatter,i=null;w.each(e.parents,function(t){if(w.each(o,function(e){if(s?n.matchNode(t,s,{value:e.value})&&(i=e.value):n.matchNode(t,e.value)&&(i=e.value),i)return!1}),i)return!1}),t.value(i)})})}}},zi=function(e){var t,n,i=function(e){for(var t=(e=e.replace(/;$/,"").split(";")).length;t--;)e[t]=e[t].split("=");return e}(e.settings.block_formats||"Paragraph=p;Heading 1=h1;Heading 2=h2;Heading 3=h3;Heading 4=h4;Headin
 g 5=h5;Heading 6=h6;Preformatted=pre");e.addMenuItem("blockformats",{text:"Blocks",menu:(t=e,n=i,w.map(n,function(e){return{text:e[0],onclick:Ri(t,e[1]),textStyle:function(){return t.formatter.getCssText(e[1])}}}))}),e.addButton("formatselect",Li(e,i))},Ii=function(t,e){var n,i;if("string"==typeof e)i=e.split(" ");else if(w.isArray(e))return function(e){for(var t=[],n=0,i=e.length;n<i;++n){if(!Array.prototype.isPrototypeOf(e[n]))throw new Error("Arr.flatten item "+n+" was not an array, input: "+e);ee.apply(t,e[n])}return t}(w.map(e,function(e){return Ii(t,e)}));return n=w.grep(i,function(e){return"|"===e||e in t.menuItems}),w.map(n,function(e){return"|"===e?{text:"-"}:t.menuItems[e]})},Fi=function(e){return e&&"-"===e.text},Ui=function(e){var t=K(e,function(e,t,n){return!Fi(e)||!Fi(n[t-1])});return K(t,function(e,t,n){return!Fi(e)||0<t&&t<n.leng
 th-1})},Vi=function(e){var t,n,i,r,o=e.settings.insert_button_items;return Ui(o?Ii(e,o):(t=e,n="insert",i=[{text:"-"}],r=w.grep(t.menuItems,function(e){return e.context===n}),w.each(r,function(e){"before"===e.separator&&i.push({text:"|"}),e.prependToContext?i.unshift(e):i.push(e),"after"===e.separator&&i.push({text:"|"})}),i))},Yi=function(e){var t;(t=e).addButton("insert",{type:"menubutton",icon:"insert",menu:[],oncreatemenu:function(){this.menu.add(Vi(t)),this.menu.renderNew()}})},$i=function(e){var n,i,r;n=e,w.each({bold:"Bold",italic:"Italic",underline:"Underline",strikethrough:"Strikethrough",subscript:"Subscript",superscript:"Superscript"},function(e,t){n.addButton(t,{active:!1,tooltip:e,onPostRender:Ei(n,t),onclick:Ri(n,t)})}),i=e,w.each({outdent:["Decrease indent","Outdent"],indent:["Inc
 rease indent","Indent"],cut:["Cut","Cut"],copy:["Copy","Copy"],paste:["Paste","Paste"],help:["Help","mceHelp"],selectall:["Select all","SelectAll"],visualaid:["Visual aids","mceToggleVisualAid"],newdocument:["New document","mceNewDocument"],removeformat:["Clear formatting","RemoveFormat"],remove:["Remove","Delete"]},function(e,t){i.addButton(t,{tooltip:e[0],cmd:e[1]})}),r=e,w.each({blockquote:["Blockquote","mceBlockQuote"],subscript:["Subscript","Subscript"],superscript:["Superscript","Superscript"]},function(e,t){r.addButton(t,{active:!1,tooltip:e[0],cmd:e[1],onPostRender:Ei(r,t)})})},qi=function(e){var n;$i(e),n=e,w.each({bold:["Bold","Bold","Meta+B"],italic:["Italic","Italic",&quo
 t;Meta+I"],underline:["Underline","Underline","Meta+U"],strikethrough:["Strikethrough","Strikethrough"],subscript:["Subscript","Subscript"],superscript:["Superscript","Superscript"],removeformat:["Clear formatting","RemoveFormat"],newdocument:["New document","mceNewDocument"],cut:["Cut","Cut","Meta+X"],copy:["Copy","Copy","Meta+C"],paste:["Paste","Paste","Meta+V"],selectall:["Select all","SelectAll","Meta+A"]},function(e,t){n.addMenuItem(t,{text:e[0],icon:t,shortcut:e[2],cmd:e[1]})}),n.addMenuItem("codeformat",{text:"Code",icon:"code",onclick:Ri(n,"code")})},Xi=function(n,i){return function(){var e=this,t=function(){var e="redo"===i?"hasRedo":"hasUndo";return!!n.u
 ndoManager&&n.undoManager[e]()};e.disabled(!t()),n.on("Undo Redo AddUndo TypingUndo ClearUndos SwitchMode",function(){e.disabled(n.readonly||!t())})}},ji=function(e){var t,n;(t=e).addMenuItem("undo",{text:"Undo",icon:"undo",shortcut:"Meta+Z",onPostRender:Xi(t,"undo"),cmd:"undo"}),t.addMenuItem("redo",{text:"Redo",icon:"redo",shortcut:"Meta+Y",onPostRender:Xi(t,"redo"),cmd:"redo"}),(n=e).addButton("undo",{tooltip:"Undo",onPostRender:Xi(n,"undo"),cmd:"undo"}),n.addButton("redo",{tooltip:"Redo",onPostRender:Xi(n,"redo"),cmd:"redo"})},Ji=function(e){var t,n;(t=e).addMenuItem("visualaid",{text:"Visual aids",selectable:!0,onPostRender:(n=t,function(){var t=this;n.on("VisualAid",function(e){t.active(e.hasVisual)}),t.active(n.hasVisual)}),cmd:&quo
 t;mceToggleVisualAid"})},Gi={setup:function(e){var t;e.rtl&&(ot.rtl=!0),e.on("mousedown progressstate",function(){Et.hideAll()}),(t=e).settings.ui_container&&(de.container=_i(pn.fromDom(document.body),t.settings.ui_container).fold(k(null),function(e){return e.dom()})),Pt.tooltips=!de.iOS,ot.translate=function(e){return h.translate(e)},zi(e),ki(e),qi(e),ji(e),Di(e),Mi(e),Bi(e),Ji(e),Yi(e)}},Ki=jt.extend({recalc:function(e){var t,n,i,r,o,s,a,l,u,c,d,f,h,m,g,p,v,b,y,x,w,_,R,C,E,k,H,S,T=[],M=[];t=e.settings,r=e.items().filter(":visible"),o=e.layoutRect(),i=t.columns||Math.ceil(Math.sqrt(r.length)),n=Math.ceil(r.length/i),b=t.spacingH||t.spacing||0,y=t.spacingV||t.spacing||0,x=t.alignH||t.align,w=t.alignV||t.align,p=e.paddingBox,S="reverseRows"in t?t.reverseRows:e.isRtl(),x&&"string"==typeof x&&(x=[x]),w&&"string"==typeof w&&(w=[w]);for(d=0;d<i;d++)T.push(0);for(f=0;f<n;f++)M.push
 (0);for(f=0;f<n;f++)for(d=0;d<i&&(c=r[f*i+d]);d++)C=(u=c.layoutRect()).minW,E=u.minH,T[d]=C>T[d]?C:T[d],M[f]=E>M[f]?E:M[f];for(k=o.innerW-p.left-p.right,d=_=0;d<i;d++)_+=T[d]+(0<d?b:0),k-=(0<d?b:0)+T[d];for(H=o.innerH-p.top-p.bottom,f=R=0;f<n;f++)R+=M[f]+(0<f?y:0),H-=(0<f?y:0)+M[f];if(_+=p.left+p.right,R+=p.top+p.bottom,(l={}).minW=_+(o.w-o.innerW),l.minH=R+(o.h-o.innerH),l.contentW=l.minW-o.deltaW,l.contentH=l.minH-o.deltaH,l.minW=Math.min(l.minW,o.maxW),l.minH=Math.min(l.minH,o.maxH),l.minW=Math.max(l.minW,o.startMinWidth),l.minH=Math.max(l.minH,o.startMinHeight),!o.autoResize||l.minW===o.minW&&l.minH===o.minH){var N;o.autoResize&&((l=e.layoutRect(l)).contentW=l.minW-o.deltaW,l.contentH=l.minH-o.deltaH),N="start"===t.packV?0:0<H?Math.floor(H/n):0;var P=0,W=t.flexWidths;if(W)for(d=0;d<W.length;d++)P+=W[d];else P=i;var D=k/P;for(d=0;d<i;d++)T[d]+=W?W[d]*D:D;for(m=p.top,f=0;f<n;f++){for(h=p.left,a=M[f]+N,d=0;
 d<i&&(c=r[S?f*i+i-1-d:f*i+d]);d++)g=c.settings,u=c.layoutRect(),s=Math.max(T[d],u.startMinWidth),u.x=h,u.y=m,"center"===(v=g.alignH||(x?x[d]||x[0]:null))?u.x=h+s/2-u.w/2:"right"===v?u.x=h+s-u.w:"stretch"===v&&(u.w=s),"center"===(v=g.alignV||(w?w[d]||w[0]:null))?u.y=m+a/2-u.h/2:"bottom"===v?u.y=m+a-u.h:"stretch"===v&&(u.h=a),c.layoutRect(u),h+=s+b,c.recalc&&c.recalc();m+=a+y}}else if(l.w=l.minW,l.h=l.minH,e.layoutRect(l),this.recalc(e),null===e._lastRect){var O=e.parent();O&&(O._lastRect=null,O.recalc())}}}),Zi=Pt.extend({renderHtml:function(){var e=this;return e.classes.add("iframe"),e.canFocus=!1,'<iframe id="'+e._id+'" class="'+e.classes+'" tabindex="-1" src="'+(e.settings.url||"javascript:''")+'" frameborder="0"></iframe>'},src:function(e){this.getEl().src=e},html:function(e,t){var n=this,i=this.ge
 tEl().contentWindow.document.body;return i?(i.innerHTML=e,t&&t()):u.setTimeout(function(){n.html(e)}),this}}),Qi=Pt.extend({init:function(e){this._super(e),this.classes.add("widget").add("infobox"),this.canFocus=!1},severity:function(e){this.classes.remove("error"),this.classes.remove("warning"),this.classes.remove("success"),this.classes.add(e)},help:function(e){this.state.set("help",e)},renderHtml:function(){var e=this,t=e.classPrefix;return'<div id="'+e._id+'" class="'+e.classes+'"><div id="'+e._id+'-body">'+e.encode(e.state.get("text"))+'<button role="button" tabindex="-1"><i class="'+t+"ico "+t+'i-help"></i></button></div></div>'},bindStates:function(){var t=this;return t.state.on("change:text",function(e){t.getEl("body").firstChild.data=t.encode(e.value),t.state.ge
 t("rendered")&&t.updateLayoutRect()}),t.state.on("change:help",function(e){t.classes.toggle("has-help",e.value),t.state.get("rendered")&&t.updateLayoutRect()}),t._super()}}),er=Pt.extend({init:function(e){var t=this;t._super(e),t.classes.add("widget").add("label"),t.canFocus=!1,e.multiline&&t.classes.add("autoscroll"),e.strong&&t.classes.add("strong")},initLayoutRect:function(){var e=this,t=e._super();return e.settings.multiline&&(_e.getSize(e.getEl()).width>t.maxW&&(t.minW=t.maxW,e.classes.add("multiline")),e.getEl().style.width=t.minW+"px",t.startMinH=t.h=t.minH=Math.min(t.maxH,_e.getSize(e.getEl()).height)),t},repaint:function(){return this.settings.multiline||(this.getEl().style.lineHeight=this.layoutRect().h+"px"),this._super()},severity:function(e){this.classes.remove("error"),this.classes.remove("warnin
 g"),this.classes.remove("success"),this.classes.add(e)},renderHtml:function(){var e,t,n=this,i=n.settings.forId,r=n.settings.html?n.settings.html:n.encode(n.state.get("text"));return!i&&(t=n.settings.forName)&&(e=n.getRoot().find("#"+t)[0])&&(i=e._id),i?'<label id="'+n._id+'" class="'+n.classes+'"'+(i?' for="'+i+'"':"")+">"+r+"</label>":'<span id="'+n._id+'" class="'+n.classes+'">'+r+"</span>"},bindStates:function(){var t=this;return t.state.on("change:text",function(e){t.innerHtml(t.encode(e.value)),t.state.get("rendered")&&t.updateLayoutRect()}),t._super()}}),tr=ut.extend({Defaults:{role:"toolbar",layout:"flow"},init:function(e){this._super(e),this.classes.add("toolbar")},postRender:function(){return this.items().each(function(e){e.classes.add("tool
 bar-item")}),this._super()}}),nr=tr.extend({Defaults:{role:"menubar",containerCls:"menubar",ariaRoot:!0,defaults:{type:"menubutton"}}}),ir=Jt.extend({init:function(e){var t=this;t._renderOpen=!0,t._super(e),e=t.settings,t.classes.add("menubtn"),e.fixedWidth&&t.classes.add("fixed-width"),t.aria("haspopup",!0),t.state.set("menu",e.menu||t.render())},showMenu:function(e){var t,n=this;if(n.menu&&n.menu.visible()&&!1!==e)return n.hideMenu();n.menu||(t=n.state.get("menu")||[],n.classes.add("opened"),t.length?t={type:"menu",animate:!0,items:t}:(t.type=t.type||"menu",t.animate=!0),t.renderTo?n.menu=t.parent(n).show().renderTo():n.menu=b.create(t).parent(n).renderTo(),n.fire("createmenu"),n.menu.reflow(),n.menu.on("cancel",function(e){e.control.parent()===n.menu&&(e.stopPropagation(),n.focus(),n.hideMenu())}),n.menu.on("se
 lect",function(){n.focus()}),n.menu.on("show hide",function(e){"hide"===e.type&&e.control.parent()===n&&n.classes.remove("opened-under"),e.control===n.menu&&(n.activeMenu("show"===e.type),n.classes.toggle("opened","show"===e.type)),n.aria("expanded","show"===e.type)}).fire("show")),n.menu.show(),n.menu.layoutRect({w:n.layoutRect().w}),n.menu.repaint(),n.menu.moveRel(n.getEl(),n.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"]);var i=n.menu.layoutRect(),r=n.$el.offset().top+n.layoutRect().h;r>i.y&&r<i.y+i.h&&n.classes.add("opened-under"),n.fire("showmenu")},hideMenu:function(){this.menu&&(this.menu.items().each(function(e){e.hideMenu&&e.hideMenu()}),this.menu.hide())},activeMenu:function(e){this.classes.toggle("active",e)},renderHtml:function(){var e,t=this,n=t._id,
 i=t.classPrefix,r=t.settings.icon,o=t.state.get("text"),s="";return(e=t.settings.image)?(r="none","string"!=typeof e&&(e=window.getSelection?e[0]:e[1]),e=" style=\"background-image: url('"+e+"')\""):e="",o&&(t.classes.add("btn-has-text"),s='<span class="'+i+'txt">'+t.encode(o)+"</span>"),r=t.settings.icon?i+"ico "+i+"i-"+r:"",t.aria("role",t.parent()instanceof nr?"menuitem":"button"),'<div id="'+n+'" class="'+t.classes+'" tabindex="-1" aria-labelledby="'+n+'"><button id="'+n+'-open" role="presentation" type="button" tabindex="-1">'+(r?'<i class="'+r+'"'+e+"></i>":"")+s+' <i class="'+i+'caret"></i></button></div>'},postRende
 r:function(){var r=this;return r.on("click",function(e){e.control===r&&function(e,t){for(;e;){if(t===e)return!0;e=e.parentNode}return!1}(e.target,r.getEl())&&(r.focus(),r.showMenu(!e.aria),e.aria&&r.menu.items().filter(":visible")[0].focus())}),r.on("mouseenter",function(e){var t,n=e.control,i=r.parent();n&&i&&n instanceof ir&&n.parent()===i&&(i.items().filter("MenuButton").each(function(e){e.hideMenu&&e!==n&&(e.menu&&e.menu.visible()&&(t=!0),e.hideMenu())}),t&&(n.focus(),n.showMenu()))}),r._super()},bindStates:function(){var e=this;return e.state.on("change:menu",function(){e.menu&&e.menu.remove(),e.menu=null}),e._super()},remove:function(){this._super(),this.menu&&this.menu.remove()}}),rr=Et.extend({Defaults:{defaultType:"menuitem",border:1,layout:"stack",role:"application",bodyRole:"men
 u",ariaRoot:!0},init:function(e){if(e.autohide=!0,e.constrainToViewport=!0,"function"==typeof e.items&&(e.itemsFactory=e.items,e.items=[]),e.itemDefaults)for(var t=e.items,n=t.length;n--;)t[n]=w.extend({},e.itemDefaults,t[n]);this._super(e),this.classes.add("menu"),e.animate&&11!==de.ie&&this.classes.add("animate")},repaint:function(){return this.classes.toggle("menu-align",!0),this._super(),this.getEl().style.height="",this.getEl("body").style.height="",this},cancel:function(){this.hideAll(),this.fire("select")},load:function(){var t,n=this;function i(){n.throbber&&(n.throbber.hide(),n.throbber=null)}n.settings.itemsFactory&&(n.throbber||(n.throbber=new St(n.getEl("body"),!0),0===n.items().length?(n.throbber.show(),n.fire("loading")):n.throbber.show(100,function(){n.items().remove(),n.fire("loading")}),n.on("hide close"
 ,i)),n.requestTime=t=(new Date).getTime(),n.settings.itemsFactory(function(e){0!==e.length?n.requestTime===t&&(n.getEl().style.width="",n.getEl("body").style.width="",i(),n.items().remove(),n.getEl("body").innerHTML="",n.add(e),n.renderNew(),n.fire("loaded")):n.hide()}))},hideAll:function(){return this.find("menuitem").exec("hideMenu"),this._super()},preRender:function(){var n=this;return n.items().each(function(e){var t=e.settings;if(t.icon||t.image||t.selectable)return!(n._hasIcons=!0)}),n.settings.itemsFactory&&n.on("postrender",function(){n.settings.itemsFactory&&n.load()}),n.on("show hide",function(e){e.control===n&&("show"===e.type?u.setTimeout(function(){n.classes.add("in")},0):n.classes.remove("in"))}),n._super()}}),or=ir.extend({init:function(i){var t,r,o,n,s=this;s._super(i),i=s.settings,s._values=t=i.values,t&amp
 ;&("undefined"!=typeof i.value&&function e(t){for(var n=0;n<t.length;n++){if(r=t[n].selected||i.value===t[n].value)return o=o||t[n].text,s.state.set("value",t[n].value),!0;if(t[n].menu&&e(t[n].menu))return!0}}(t),!r&&0<t.length&&(o=t[0].text,s.state.set("value",t[0].value)),s.state.set("menu",t)),s.state.set("text",i.text||o),s.classes.add("listbox"),s.on("select",function(e){var t=e.control;n&&(e.lastControl=n),i.multiple?t.active(!t.active()):s.value(e.control.value()),n=t})},value:function(n){return 0===arguments.length?this.state.get("value"):(void 0===n||(this.settings.values&&!function t(e){return j(e,function(e){return e.menu?t(e.menu):e.value===n})}(this.settings.values)?null===n&&this.state.set("value",null):this.state.set("value",n)),this)},bindStates:function(){var i=this;return i.on("show",function
 (e){var t,n;t=e.control,n=i.value(),t instanceof rr&&t.items().each(function(e){e.hasMenus()||e.active(e.value()===n)})}),i.state.on("change:value",function(t){var n=function e(t,n){var i;if(t)for(var r=0;r<t.length;r++){if(t[r].value===n)return t[r];if(t[r].menu&&(i=e(t[r].menu,n)))return i}}(i.state.get("menu"),t.value);n?i.text(n.text):i.text(i.settings.text)}),i._super()}}),sr=Pt.extend({Defaults:{border:0,role:"menuitem"},init:function(e){var t,n=this;n._super(e),e=n.settings,n.classes.add("menu-item"),e.menu&&n.classes.add("menu-item-expand"),e.preview&&n.classes.add("menu-item-preview"),"-"!==(t=n.state.get("text"))&&"|"!==t||(n.classes.add("menu-item-sep"),n.aria("role","separator"),n.state.set("text","-")),e.selectable&&(n.aria("role","menuitemcheckbox"),n.classes.ad
 d("menu-item-checkbox"),e.icon="selected"),e.preview||e.selectable||n.classes.add("menu-item-normal"),n.on("mousedown",function(e){e.preventDefault()}),e.menu&&!e.ariaHideMenu&&n.aria("haspopup",!0)},hasMenus:function(){return!!this.settings.menu},showMenu:function(){var t,n=this,e=n.settings,i=n.parent();if(i.items().each(function(e){e!==n&&e.hideMenu()}),e.menu){(t=n.menu)?t.show():((t=e.menu).length?t={type:"menu",items:t}:t.type=t.type||"menu",i.settings.itemDefaults&&(t.itemDefaults=i.settings.itemDefaults),(t=n.menu=b.create(t).parent(n).renderTo()).reflow(),t.on("cancel",function(e){e.stopPropagation(),n.focus(),t.hide()}),t.on("show hide",function(e){e.control.items&&e.control.items().each(function(e){e.active(e.settings.selected)})}).fire("show"),t.on("hide",function(e){e.control===t&&n.classes.remove("selected&qu
 ot;)}),t.submenu=!0),t._parentMenu=i,t.classes.add("menu-sub");var r=t.testMoveRel(n.getEl(),n.isRtl()?["tl-tr","bl-br","tr-tl","br-bl"]:["tr-tl","br-bl","tl-tr","bl-br"]);t.moveRel(n.getEl(),r),r="menu-sub-"+(t.rel=r),t.classes.remove(t._lastRel).add(r),t._lastRel=r,n.classes.add("selected"),n.aria("expanded",!0)}},hideMenu:function(){var e=this;return e.menu&&(e.menu.items().each(function(e){e.hideMenu&&e.hideMenu()}),e.menu.hide(),e.aria("expanded",!1)),e},renderHtml:function(){var e,t=this,n=t._id,i=t.settings,r=t.classPrefix,o=t.state.get("text"),s=t.settings.icon,a="",l=i.shortcut,u=t.encode(i.url);function c(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function d(e){var t=i.match||"";return t?e.replace(new RegExp(c(t),"gi"),function(e){return"!mce~match["+e+"]
 mce~match!"}):e}function f(e){return e.replace(new RegExp(c("!mce~match["),"g"),"<b>").replace(new RegExp(c("]mce~match!"),"g"),"</b>")}return s&&t.parent().classes.add("menu-has-icons"),i.image&&(a=" style=\"background-image: url('"+i.image+"')\""),l&&(l=function(e){var t,n,i={};for(i=de.mac?{alt:"&#x2325;",ctrl:"&#x2318;",shift:"&#x21E7;",meta:"&#x2318;"}:{meta:"Ctrl"},e=e.split("+"),t=0;t<e.length;t++)(n=i[e[t].toLowerCase()])&&(e[t]=n);return e.join("+")}(l)),s=r+"ico "+r+"i-"+(t.settings.icon||"none"),e="-"!==o?'<i class="'+s+'"'+a+"></i>\xa0":"",o=f(t.encode(d(o))),u=f(t.encode(d(u))),'<div id="'+n+'" class="'+t.classes+'" tabindex="-1
 ">'+e+("-"!==o?'<span id="'+n+'-text" class="'+r+'text">'+o+"</span>":"")+(l?'<div id="'+n+'-shortcut" class="'+r+'menu-shortcut">'+l+"</div>":"")+(i.menu?'<div class="'+r+'caret"></div>':"")+(u?'<div class="'+r+'menu-item-link">'+u+"</div>":"")+"</div>"},postRender:function(){var t=this,n=t.settings,e=n.textStyle;if("function"==typeof e&&(e=e.call(this)),e){var i=t.getEl("text");i&&(i.setAttribute("style",e),t._textStyle=e)}return t.on("mouseenter click",function(e){e.control===t&&(n.menu||"click"!==e.type?(t.showMenu(),e.aria&&t.menu.focus(!0)):(t.fire("select"),u.requestAnimationFrame(function(){t.parent().hideAll()})))}),t._super(),t},hover:function(){return this.parent().items().
 each(function(e){e.classes.remove("selected")}),this.classes.toggle("selected",!0),this},active:function(e){return function(e,t){var n=e._textStyle;if(n){var i=e.getEl("text");i.setAttribute("style",n),t&&(i.style.color="",i.style.backgroundColor="")}}(this,e),void 0!==e&&this.aria("checked",e),this._super(e)},remove:function(){this._super(),this.menu&&this.menu.remove()}}),ar=Zt.extend({Defaults:{classes:"radio",role:"radio"}}),lr=Pt.extend({renderHtml:function(){var e=this,t=e.classPrefix;return e.classes.add("resizehandle"),"both"===e.settings.direction&&e.classes.add("resizehandle-both"),e.canFocus=!1,'<div id="'+e._id+'" class="'+e.classes+'"><i class="'+t+"ico "+t+'i-resize"></i></div>'},postRender:function(){var t=this;t._super(),t.resizeDragHelper=new dt(this._id
 ,{start:function(){t.fire("ResizeStart")},drag:function(e){"both"!==t.settings.direction&&(e.deltaX=0),t.fire("Resize",e)},stop:function(){t.fire("ResizeEnd")}})},remove:function(){return this.resizeDragHelper&&this.resizeDragHelper.destroy(),this._super()}});function ur(e){var t="";if(e)for(var n=0;n<e.length;n++)t+='<option value="'+e[n]+'">'+e[n]+"</option>";return t}var cr=Pt.extend({Defaults:{classes:"selectbox",role:"selectbox",options:[]},init:function(e){var n=this;n._super(e),n.settings.size&&(n.size=n.settings.size),n.settings.options&&(n._options=n.settings.options),n.on("keydown",function(e){var t;13===e.keyCode&&(e.preventDefault(),n.parents().reverse().each(function(e){if(e.toJSON)return t=e,!1}),n.fire("submit",{data:t.toJSON()}))})},options:function(e){return arguments.length?(this.state.set("options
 ",e),this):this.state.get("options")},renderHtml:function(){var e,t=this,n="";return e=ur(t._options),t.size&&(n=' size = "'+t.size+'"'),'<select id="'+t._id+'" class="'+t.classes+'"'+n+">"+e+"</select>"},bindStates:function(){var t=this;return t.state.on("change:options",function(e){t.getEl().innerHTML=ur(e.value)}),t._super()}});function dr(e,t,n){return e<t&&(e=t),n<e&&(e=n),e}function fr(e,t,n){e.setAttribute("aria-"+t,n)}function hr(e,t){var n,i,r,o,s;"v"===e.settings.orientation?(r="top",i="height",n="h"):(r="left",i="width",n="w"),s=e.getEl("handle"),o=((e.layoutRect()[n]||100)-_e.getSize(s)[i])*((t-e._minValue)/(e._maxValue-e._minValue))+"px",s.style[r]=o,s.style.height=e.layoutRect().h+"px",fr(s,"valuenow",t),fr(s,"valuetext&q
 uot;,""+e.settings.previewFilter(t)),fr(s,"valuemin",e._minValue),fr(s,"valuemax",e._maxValue)}var mr=Pt.extend({init:function(e){var t=this;e.previewFilter||(e.previewFilter=function(e){return Math.round(100*e)/100}),t._super(e),t.classes.add("slider"),"v"===e.orientation&&t.classes.add("vertical"),t._minValue=q(e.minValue)?e.minValue:0,t._maxValue=q(e.maxValue)?e.maxValue:100,t._initValue=t.state.get("value")},renderHtml:function(){var e=this._id,t=this.classPrefix;return'<div id="'+e+'" class="'+this.classes+'"><div id="'+e+'-handle" class="'+t+'slider-handle" role="slider" tabindex="-1"></div></div>'},reset:function(){this.value(this._initValue).repaint()},postRender:function(){var e,t,n,i,r,o,s,a,l,u,c,d,f,h,m=this;e=m._minValue,t=m._maxValue,"v"===m.settings.orientation?(n="screenY",i="top&quo
 t;,r="height",o="h"):(n="screenX",i="left",r="width",o="w"),m._super(),function(o,s){function t(e){var t,n,i,r;t=dr(t=(((t=m.value())+(r=n=o))/((i=s)-r)+.05*e)*(i-n)-n,o,s),m.value(t),m.fire("dragstart",{value:t}),m.fire("drag",{value:t}),m.fire("dragend",{value:t})}m.on("keydown",function(e){switch(e.keyCode){case 37:case 38:t(-1);break;case 39:case 40:t(1)}})}(e,t),s=e,a=t,l=m.getEl("handle"),m._dragHelper=new dt(m._id,{handle:m._id+"-handle",start:function(e){u=e[n],c=parseInt(m.getEl("handle").style[i],10),d=(m.layoutRect()[o]||100)-_e.getSize(l)[r],m.fire("dragstart",{value:h})},drag:function(e){var t=e[n]-u;f=dr(c+t,0,d),l.style[i]=f+"px",h=s+f/d*(a-s),m.value(h),m.tooltip().text(""+m.settings.previewFilter(h)).show().moveRel(l,"bc tc"),m.fire("drag",{value:h})},stop:function(){m.tooltip().hide(),m.f
 ire("dragend",{value:h})}})},repaint:function(){this._super(),hr(this,this.value())},bindStates:function(){var t=this;return t.state.on("change:value",function(e){hr(t,e.value)}),t._super()}}),gr=Pt.extend({renderHtml:function(){return this.classes.add("spacer"),this.canFocus=!1,'<div id="'+this._id+'" class="'+this.classes+'"></div>'}}),pr=ir.extend({Defaults:{classes:"widget btn splitbtn",role:"button"},repaint:function(){var e,t,n=this.getEl(),i=this.layoutRect();return this._super(),e=n.firstChild,t=n.lastChild,xe(e).css({width:i.w-_e.getSize(t).width,height:i.h-2}),xe(t).css({height:i.h-2}),this},activeMenu:function(e){xe(this.getEl().lastChild).toggleClass(this.classPrefix+"active",e)},renderHtml:function(){var e,t,n=this,i=n._id,r=n.classPrefix,o=n.state.get("icon"),s=n.state.get("text"),a=n.settings,l="";return(e=a.image)?(o="none","string&
 quot;!=typeof e&&(e=window.getSelection?e[0]:e[1]),e=" style=\"background-image: url('"+e+"')\""):e="",o=a.icon?r+"ico "+r+"i-"+o:"",s&&(n.classes.add("btn-has-text"),l='<span class="'+r+'txt">'+n.encode(s)+"</span>"),t="boolean"==typeof a.active?' aria-pressed="'+a.active+'"':"",'<div id="'+i+'" class="'+n.classes+'" role="button"'+t+' tabindex="-1"><button type="button" hidefocus="1" tabindex="-1">'+(o?'<i class="'+o+'"'+e+"></i>":"")+l+'</button><button type="button" class="'+r+'open" hidefocus="1" tabindex="-1">'+(n._menuBtnText?(o?"\xa0":"")+n._menuBtnText:"")+' <i class="'+r+'caret"></i></button
 ></div>'},postRender:function(){var n=this.settings.onclick;return this.on("click",function(e){var t=e.target;if(e.control===this)for(;t;){if(e.aria&&"down"!==e.aria.key||"BUTTON"===t.nodeName&&-1===t.className.indexOf("open"))return e.stopImmediatePropagation(),void(n&&n.call(this,e));t=t.parentNode}}),delete this.settings.onclick,this._super()}}),vr=wi.extend({Defaults:{containerClass:"stack-layout",controlClass:"stack-layout-item",endClass:"break"},isNative:function(){return!0}}),br=vt.extend({Defaults:{layout:"absolute",defaults:{type:"panel"}},activateTab:function(n){var e;this.activeTabId&&(e=this.getEl(this.activeTabId),xe(e).removeClass(this.classPrefix+"active"),e.setAttribute("aria-selected","false")),this.activeTabId="t"+n,(e=this.getEl("t"+n)).setAttribute("aria-selected","true&
 quot;),xe(e).addClass(this.classPrefix+"active"),this.items()[n].show().fire("showtab"),this.reflow(),this.items().each(function(e,t){n!==t&&e.hide()})},renderHtml:function(){var i=this,e=i._layout,r="",o=i.classPrefix;return i.preRender(),e.preRender(i),i.items().each(function(e,t){var n=i._id+"-t"+t;e.aria("role","tabpanel"),e.aria("labelledby",n),r+='<div id="'+n+'" class="'+o+'tab" unselectable="on" role="tab" aria-controls="'+e._id+'" aria-selected="false" tabIndex="-1">'+i.encode(e.settings.title)+"</div>"}),'<div id="'+i._id+'" class="'+i.classes+'" hidefocus="1" tabindex="-1"><div id="'+i._id+'-head" class="'+o+'tabs" role="tablist">'+r+'</div><div id="'+i._id+'-body" class="'+i.bodyClasses+'">'+
 e.renderHtml(i)+"</div></div>"},postRender:function(){var i=this;i._super(),i.settings.activeTab=i.settings.activeTab||0,i.activateTab(i.settings.activeTab),this.on("click",function(e){var t=e.target.parentNode;if(t&&t.id===i._id+"-head")for(var n=t.childNodes.length;n--;)t.childNodes[n]===e.target&&i.activateTab(n)})},initLayoutRect:function(){var e,t,n,i=this;t=(t=_e.getSize(i.getEl("head")).width)<0?0:t,n=0,i.items().each(function(e){t=Math.max(t,e.layoutRect().minW),n=Math.max(n,e.layoutRect().minH)}),i.items().each(function(e){e.settings.x=0,e.settings.y=0,e.settings.w=t,e.settings.h=n,e.layoutRect({x:0,y:0,w:t,h:n})});var r=_e.getSize(i.getEl("head")).height;return i.settings.minWidth=t,i.settings.minHeight=n+r,(e=i._super()).deltaH+=r,e.innerH=e.h-e.deltaH,e}}),yr=Pt.extend({init:function(e){var n=this;n._super(e),n.classes.add("textbox"),e.multiline?n.classes.add("multiline")
 :(n.on("keydown",function(e){var t;13===e.keyCode&&(e.preventDefault(),n.parents().reverse().each(function(e){if(e.toJSON)return t=e,!1}),n.fire("submit",{data:t.toJSON()}))}),n.on("keyup",function(e){n.state.set("value",e.target.value)}))},repaint:function(){var e,t,n,i,r,o=this,s=0;e=o.getEl().style,t=o._layoutRect,r=o._lastRepaintRect||{};var a=document;return!o.settings.multiline&&a.all&&(!a.documentMode||a.documentMode<=8)&&(e.lineHeight=t.h-s+"px"),i=(n=o.borderBox).left+n.right+8,s=n.top+n.bottom+(o.settings.multiline?8:0),t.x!==r.x&&(e.left=t.x+"px",r.x=t.x),t.y!==r.y&&(e.top=t.y+"px",r.y=t.y),t.w!==r.w&&(e.width=t.w-i+"px",r.w=t.w),t.h!==r.h&&(e.height=t.h-s+"px",r.h=t.h),o._lastRepaintRect=r,o.fire("repaint",{},!1),o},renderHtml:function(){var t,e,n=this,i=n.settings;return t={id:n._id,hidefocus:"1"
 },w.each(["rows","spellcheck","maxLength","size","readonly","min","max","step","list","pattern","placeholder","required","multiple"],function(e){t[e]=i[e]}),n.disabled()&&(t.disabled="disabled"),i.subtype&&(t.type=i.subtype),(e=_e.create(i.multiline?"textarea":"input",t)).value=n.state.get("value"),e.className=n.classes.toString(),e.outerHTML},value:function(e){return arguments.length?(this.state.set("value",e),this):(this.state.get("rendered")&&this.state.set("value",this.getEl().value),this.state.get("value"))},postRender:function(){var t=this;t.getEl().value=t.state.get("value"),t._super(),t.$el.on("change",function(e){t.state.set("value",e.target.value),t.fire("change",e)})},bindStates:function(){var t=this;re
 turn t.state.on("change:value",function(e){t.getEl().value!==e.value&&(t.getEl().value=e.value)}),t.state.on("change:disabled",function(e){t.getEl().disabled=e.value}),t._super()},remove:function(){this.$el.off(),this._super()}}),xr=function(){return{Selector:Fe,Collection:Ye,ReflowQueue:Ze,Control:ot,Factory:b,KeyboardNavigation:at,Container:ut,DragHelper:dt,Scrollable:pt,Panel:vt,Movable:Se,Resizable:bt,FloatPanel:Et,Window:Ft,MessageBox:$t,Tooltip:Nt,Widget:Pt,Progress:Wt,Notification:Ot,Layout:Xt,AbsoluteLayout:jt,Button:Jt,ButtonGroup:Kt,Checkbox:Zt,ComboBox:en,ColorBox:tn,PanelButton:nn,ColorButton:on,ColorPicker:an,Path:un,ElementPath:cn,FormItem:dn,Form:fn,FieldSet:hn,FilePicker:bi,FitLayout:yi,FlexLayout:xi,FlowLayout:wi,FormatControls:Gi,GridLayout:Ki,Iframe:Zi,InfoBox:Qi,Label:er,Toolbar:tr,MenuBar:nr,MenuButton:ir,MenuItem:sr,Throbber:St,Menu:rr,ListBox:or,Radio:ar,ResizeHandle:lr,SelectBox:cr,Slider:mr,Spacer:gr,SplitButton:pr,StackLayout:vr,
 TabPanel:br,TextBox:yr,DropZone:ln,BrowseButton:Gt}},wr=function(n){n.ui?w.each(xr(),function(e,t){n.ui[t]=e}):n.ui=xr()};w.each(xr(),function(e,t){b.add(t,e)}),wr(window.tinymce?window.tinymce:{}),o.add("modern",function(e){return Gi.setup(e),qt(e)})}();
</del><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of file
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+!function(_){"use strict";var e,t,n,i,r,o=tinymce.util.Tools.resolve("tinymce.ThemeManager"),h=tinymce.util.Tools.resolve("tinymce.EditorManager"),w=tinymce.util.Tools.resolve("tinymce.util.Tools"),d=function(e){return!1!==c(e)},c=function(e){return e.getParam("menubar")},f=function(e){return e.getParam("toolbar_items_size")},m=function(e){return e.getParam("menu")},g=function(e){return!1===e.settings.skin},p=function(e){var t=e.getParam("resize","vertical");return!1===t?"none":"both"===t?"both":"vertical"},v=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),b=tinymce.util.Tools.resolve("tinymce.ui.Factory"),y=tinymce.util.Tools.resolve("tinymce.util.I18n"),s=function(e){return e.fire("SkinLoaded")},x=function(e){return
  e.fire("ResizeEditor")},R=function(e){return e.fire("BeforeRenderUI")},a=function(t,n){return function(){var e=t.find(n)[0];e&&e.focus(!0)}},C=function(e,t){e.shortcuts.add("Alt+F9","",a(t,"menubar")),e.shortcuts.add("Alt+F10,F10","",a(t,"toolbar")),e.shortcuts.add("Alt+F11","",a(t,"elementpath")),t.on("cancel",function(){e.focus()})},E=tinymce.util.Tools.resolve("tinymce.geom.Rect"),u=tinymce.util.Tools.resolve("tinymce.util.Delay"),k=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t]},H=function(e){return function(){return e}},l=H(!1),S=H(!0),T=l,M=S,N=function(){return P},P=(i={fold:function(e,t){return e()},is:T,isSome:T,isNone:M,getOr:n=function(e){return e},getOrThunk:t=function(e){return e()},getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:function(){return null
 },getOrUndefined:function(){return undefined},or:n,orThunk:t,map:N,ap:N,each:function(){},bind:N,flatten:N,exists:T,forall:M,filter:N,equals:e=function(e){return e.isNone()},equals_:e,toArray:function(){return[]},toString:H("none()")},Object.freeze&&Object.freeze(i),i),W=function(n){var e=function(){return n},t=function(){return r},i=function(e){return e(n)},r={fold:function(e,t){return t(n)},is:function(e){return n===e},isSome:M,isNone:T,getOr:e,getOrThunk:e,getOrDie:e,getOrNull:e,getOrUndefined:e,or:t,orThunk:t,map:function(e){return W(e(n))},ap:function(e){return e.fold(N,function(e){return W(e(n))})},each:function(e){e(n)},bind:i,flatten:e,exists:i,forall:i,filter:function(e){return e(n)?r:P},equals:function(e){return e.is(n)},equals_:function(e,t){return e.fold(T,function(e){return t(n,e)})},toArray:function(){return[n]},toString:function(){return"some("+n+")"}};return r},D={some:W,none:N,from:function(e){return null===e||e===undefined?P:W(
 e)}},O=function(e){return e?e.getRoot().uiContainer:null},A={getUiContainerDelta:function(e){var t=O(e);if(t&&"static"!==v.DOM.getStyle(t,"position",!0)){var n=v.DOM.getPos(t),i=t.scrollLeft-n.x,r=t.scrollTop-n.y;return D.some({x:i,y:r})}return D.none()},setUiContainer:function(e,t){var n=v.DOM.select(e.settings.ui_container)[0];t.getRoot().uiContainer=n},getUiContainer:O,inheritUiContainer:function(e,t){return t.uiContainer=O(e)}},B=function(i,e,r){var o,s=[];if(e)return w.each(e.split(/[ ,]/),function(t){var e,n=function(){var e=i.selection;t.settings.stateSelector&&e.selectorChanged(t.settings.stateSelector,function(e){t.active(e)},!0),t.settings.disabledStateSelector&&e.selectorChanged(t.settings.disabledStateSelector,function(e){t.disabled(e)})};"|"===t?o=null:(o||(o={type:"buttongroup",items:[]},s.push(o)),i.buttons[t]&&(e=t,"function"==typeof(t=i.buttons[e])&&(t=t()),t.type=t.type||&quot
 ;button",t.size=r,t=b.create(t),o.items.push(t),i.initialized?n():i.on("init",n)))}),{type:"toolbar",layout:"flow",items:s}},L=B,z=function(n,i){var e,t,r=[];if(w.each(!1===(t=(e=n).getParam("toolbar"))?[]:w.isArray(t)?w.grep(t,function(e){return 0<e.length}):function(e,t){for(var n=[],i=1;i<10;i++){var r=e["toolbar"+i];if(!r)break;n.push(r)}var o=e.toolbar?[e.toolbar]:[t];return 0<n.length?n:o}(e.settings,"undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image"),function(e){var t;(t=e)&&r.push(B(n,t,i))}),r.length)return{type:"panel",layout:"stack",classes:"toolbar-grp",ariaRoot:!0,ariaRemember:!0,items:r}},I=v.DOM,F=function(e){return{left:e.x,top:e.y,width:e.w,height:e.h,right:e.x+e.w,bottom:e.y+e.h}},U=function(e,t){e.moveTo(t.left,t.top)},V=function(e,t,n,i,r,o){return o=F({x:t,y:n,w:o.w,h:o.
 h}),e&&(o=e({elementRect:F(i),contentAreaRect:F(r),panelRect:o})),o},Y=function(x){var i,o=function(){return x.contextToolbars||[]},n=function(e,t){var n,i,r,o,s,a,l,u=x.getParam("inline_toolbar_position_handler");if(!x.removed){if(!e||!e.toolbar.panel)return c=x,void w.each(c.contextToolbars,function(e){e.panel&&e.panel.hide()});var c,d,f,h,m;l=["bc-tc","tc-bc","tl-bl","bl-tl","tr-br","br-tr"],s=e.toolbar.panel,t&&s.show(),d=e.element,f=I.getPos(x.getContentAreaContainer()),h=x.dom.getRect(d),"BODY"===(m=x.dom.getRoot()).nodeName&&(h.x-=m.ownerDocument.documentElement.scrollLeft||m.scrollLeft,h.y-=m.ownerDocument.documentElement.scrollTop||m.scrollTop),h.x+=f.x,h.y+=f.y,r=h,i=I.getRect(s.getEl()),o=I.getRect(x.getContentAreaContainer()||x.getBody());var g,p,v,b=A.getUiContainerDelta(s).getOr({x:0,y:0});if(r.x+=b.x,r.y+=b.y,i.x+=b.x,i.y+=b.y,o.x+=b.x,o.y+=b.y,"inline&
 quot;!==I.getStyle(e.element,"display",!0)){var y=e.element.getBoundingClientRect();r.w=y.width,r.h=y.height}x.inline||(o.w=x.getDoc().documentElement.offsetWidth),x.selection.controlSelection.isResizable(e.element)&&r.w<25&&(r=E.inflate(r,0,8)),n=E.findBestRelativePosition(i,r,o,l),r=E.clamp(r,o),n?(a=E.relativePosition(i,r,n),U(s,V(u,a.x,a.y,r,o,i))):(o.h+=i.h,(r=E.intersect(o,r))?(n=E.findBestRelativePosition(i,r,o,["bc-tc","bl-tl","br-tr"]))?(a=E.relativePosition(i,r,n),U(s,V(u,a.x,a.y,r,o,i))):U(s,V(u,r.x,r.y,r,o,i)):s.hide()),g=s,v=function(e,t){return e===t},p=(p=n)?p.substr(0,2):"",w.each({t:"down",b:"up"},function(e,t){g.classes.toggle("arrow-"+e,v(t,p.substr(0,1)))}),w.each({l:"left",r:"right"},function(e,t){g.classes.toggle("arrow-"+e,v(t,p.substr(1,1)))})}},r=function(e){return function(){u.requestAnimationFrame(function(){x.selection&&
 n(a(x.selection.getNode()),e)})}},t=function(e){var t;if(e.toolbar.panel)return e.toolbar.panel.show(),void n(e);t=b.create({type:"floatpanel",role:"dialog",classes:"tinymce tinymce-inline arrow",ariaLabel:"Inline toolbar",layout:"flex",direction:"column",align:"stretch",autohide:!1,autofix:!0,fixed:!0,border:1,items:L(x,e.toolbar.items),oncancel:function(){x.focus()}}),A.setUiContainer(x,t),function(e){if(!i){var t=r(!0),n=A.getUiContainer(e);i=x.selection.getScrollContainer()||x.getWin(),I.bind(i,"scroll",t),I.bind(n,"scroll",t),x.on("remove",function(){I.unbind(i,"scroll",t),I.unbind(n,"scroll",t)})}}(t),(e.toolbar.panel=t).renderTo().reflow(),n(e)},s=function(){w.each(o(),function(e){e.panel&&e.panel.hide()})},a=function(e){var t,n,i,r=o();for(t=(i=x.$(e).parents().add(e)).length-1;0<=t;t--)for(n=r.length-1;0<=n;n--)if(r[n].predicate(i[t]))return{
 toolbar:r[n],element:i[t]};return null};x.on("click keyup setContent ObjectResized",function(e){("setcontent"!==e.type||e.selection)&&u.setEditorTimeout(x,function(){var e;(e=a(x.selection.getNode()))?(s(),t(e)):s()})}),x.on("blur hide contextmenu",s),x.on("ObjectResizeStart",function(){var e=a(x.selection.getNode());e&&e.toolbar.panel&&e.toolbar.panel.hide()}),x.on("ResizeEditor ResizeWindow",r(!0)),x.on("nodeChange",r(!1)),x.on("remove",function(){w.each(o(),function(e){e.panel&&e.panel.remove()}),x.contextToolbars={}}),x.shortcuts.add("ctrl+F9","",function(){var e=a(x.selection.getNode());e&&e.toolbar.panel&&e.toolbar.panel.items()[0].focus()})},$=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":"objec
 t"===t&&String.prototype.isPrototypeOf(e)?"string":t}(e)===t}},q=$("function"),X=$("number"),j=(r=Array.prototype.indexOf)===undefined?function(e,t){return ee(e,t)}:function(e,t){return r.call(e,t)},J=function(e,t){return Q(e,t).isSome()},G=function(e,t){for(var n=e.length,i=new Array(n),r=0;r<n;r++){var o=e[r];i[r]=t(o,r,e)}return i},K=function(e,t){for(var n=0,i=e.length;n<i;n++)t(e[n],n,e)},Z=function(e,t){for(var n=[],i=0,r=e.length;i<r;i++){var o=e[i];t(o,i,e)&&n.push(o)}return n},Q=function(e,t){for(var n=0,i=e.length;n<i;n++)if(t(e[n],n,e))return D.some(n);return D.none()},ee=function(e,t){for(var n=0,i=e.length;n<i;++n)if(e[n]===t)return n;return-1},te=Array.prototype.push,ne=(Array.prototype.slice,q(Array.from)&&Array.from,{file:{title:"File",items:"newdocument restoredraft | preview | print"},edit:{title:"Edit",items:"undo redo | cut copy paste pastetext | selectall
 "},view:{title:"View",items:"code | visualaid visualchars visualblocks | spellchecker | preview fullscreen"},insert:{title:"Insert",items:"image link media template codesample inserttable | charmap hr | pagebreak nonbreaking anchor toc | insertdatetime"},format:{title:"Format",items:"bold italic underline strikethrough superscript subscript codeformat | blockformats align | removeformat"},tools:{title:"Tools",items:"spellchecker spellcheckerlanguage | a11ycheck code"},table:{title:"Table"},help:{title:"Help"}}),ie=function(e,t){return"|"===e?{name:"|",item:{text:"|"}}:t?{name:e,item:t}:null},re=function(e){return e&&"|"===e.item.text},oe=function(n,e,t,i){var r,o,s,a,l,u,c;return e?(o=e[i],a=!0):o=ne[i],o&&(r={text:o.title},s=[],w.each((o.items||"").split(/[ ,]/),function(e){var t=ie(e,n[e]);t&&s.push(t)}),
 a||w.each(n,function(e,t){var n;e.context!==i||(n=t,Q(s,function(e){return e.name===n}).isSome())||("before"===e.separator&&s.push({name:"|",item:{text:"|"}}),e.prependToContext?s.unshift(ie(t,e)):s.push(ie(t,e)),"after"===e.separator&&s.push({name:"|",item:{text:"|"}}))}),r.menu=G((l=t,u=Z(s,function(e){return!1===l.hasOwnProperty(e.name)}),c=Z(u,function(e,t,n){return!re(e)||!re(n[t-1])}),Z(c,function(e,t,n){return!re(e)||0<t&&t<n.length-1})),function(e){return e.item}),!r.menu.length)?null:r},se=function(e){for(var t,n=[],i=function(e){var t,n=[],i=m(e);if(i)for(t in i)n.push(t);else for(t in ne)n.push(t);return n}(e),r=w.makeMap((t=e,t.getParam("removed_menuitems","")).split(/[ ,]/)),o=c(e),s="string"==typeof o?o.split(/[ ,]/):i,a=0;a<s.length;a++){var l=s[a],u=oe(e.menuItems,m(e),r,l);u&&n.push(u)}return n},ae=v.DOM,le=function(e){return{width:e.cli
 entWidth,height:e.clientHeight}},ue=function(e,t,n){var i,r,o,s;i=e.getContainer(),r=e.getContentAreaContainer().firstChild,o=le(i),s=le(r),null!==t&&(t=Math.max(e.getParam("min_width",100,"number"),t),t=Math.min(e.getParam("max_width",65535,"number"),t),ae.setStyle(i,"width",t+(o.width-s.width)),ae.setStyle(r,"width",t)),n=Math.max(e.getParam("min_height",100,"number"),n),n=Math.min(e.getParam("max_height",65535,"number"),n),ae.setStyle(r,"height",n),x(e)},ce=ue,de=function(e,t,n){var i=e.getContentAreaContainer();ue(e,i.clientWidth+t,i.clientHeight+n)},fe=tinymce.util.Tools.resolve("tinymce.Env"),he=function(e,t,n){var i,r=e.settings[n];r&&r((i=t.getEl("body"),{element:function(){return i}}))},me=function(c,d,f){return function(e){var t,n,i,r,o,s=e.control,a=s.parents().filter("panel")[0],l=a.find("#"+d)[0],u=(t=f,n=d
 ,w.grep(t,function(e){return e.name===n})[0]);i=d,r=a,o=f,w.each(o,function(e){var t=r.items().filter("#"+e.name)[0];t&&t.visible()&&e.name!==i&&(he(e,t,"onhide"),t.visible(!1))}),s.parent().items().each(function(e){e.active(!1)}),l&&l.visible()?(he(u,l,"onhide"),l.hide(),s.active(!1)):(l?l.show():(l=b.create({type:"container",name:d,layout:"stack",classes:"sidebar-panel",html:""}),a.prepend(l),he(u,l,"onrender")),he(u,l,"onshow"),s.active(!0)),x(c)}},ge=function(e){return!(fe.ie&&!(11<=fe.ie)||!e.sidebars)&&0<e.sidebars.length},pe=function(n){return{type:"panel",name:"sidebar",layout:"stack",classes:"sidebar",items:[{type:"toolbar",layout:"stack",classes:"sidebar-toolbar",items:w.map(n.sidebars,function(e){var t=e.settings;return{type:"button",icon:t.icon,image:
 t.image,tooltip:t.tooltip,onclick:me(n,e.name,n.sidebars)}})}]}},ve=function(e){var t=function(){e._skinLoaded=!0,s(e)};return function(){e.initialized?t():e.on("init",t)}},be=v.DOM,ye=function(e){return{type:"panel",name:"iframe",layout:"stack",classes:"edit-area",border:e,html:""}},xe=function(t,e,n){var i,r,o,s,a;if(!1===g(t)&&n.skinUiCss?be.styleSheetLoader.load(n.skinUiCss,ve(t)):ve(t)(),i=e.panel=b.create({type:"panel",role:"application",classes:"tinymce",style:"visibility: hidden",layout:"stack",border:1,items:[{type:"container",classes:"top-part",items:[!1===d(t)?null:{type:"menubar",border:"0 0 1 0",items:se(t)},z(t,f(t))]},ge(t)?(s=t,{type:"panel",layout:"stack",classes:"edit-aria-container",border:"1 0 0 0",items:[ye("0"),pe(s)]}):ye("1 0 0 0")]}),A.setUiCon
 tainer(t,i),"none"!==p(t)&&(r={type:"resizehandle",direction:p(t),onResizeStart:function(){var e=t.getContentAreaContainer().firstChild;o={width:e.clientWidth,height:e.clientHeight}},onResize:function(e){"both"===p(t)?ce(t,o.width+e.deltaX,o.height+e.deltaY):ce(t,null,o.height+e.deltaY)}}),t.getParam("statusbar",!0,"boolean")){var l=y.translate(["Powered by {0}",'<a href="https://www.tiny.cloud/?utm_campaign=editor_referral&amp;utm_medium=poweredby&amp;utm_source=tinymce" rel="noopener" target="_blank" role="presentation" tabindex="-1">Tiny</a>']),u=t.getParam("branding",!0,"boolean")?{type:"label",classes:"branding",html:" "+l}:null;i.add({type:"panel",name:"statusbar",classes:"statusbar",layout:"flow",border:"1 0 0 0",ariaRoot:!0,items:[{type:&quo
 t;elementpath",editor:t},r,u]})}return R(t),t.on("SwitchMode",(a=i,function(e){a.find("*").disabled("readonly"===e.mode)})),i.renderBefore(n.targetNode).reflow(),t.getParam("readonly",!1,"boolean")&&t.setMode("readonly"),n.width&&be.setStyle(i.getEl(),"width",n.width),t.on("remove",function(){i.remove(),i=null}),C(t,i),Y(t),{iframeContainer:i.find("#iframe")[0].getEl(),editorContainer:i.getEl()}},we=tinymce.util.Tools.resolve("tinymce.dom.DomQuery"),_e=0,Re={id:function(){return"mceu_"+_e++},create:function(e,t,n){var i=_.document.createElement(e);return v.DOM.setAttribs(i,t),"string"==typeof n?i.innerHTML=n:w.each(n,function(e){e.nodeType&&i.appendChild(e)}),i},createFragment:function(e){return v.DOM.createFragment(e)},getWindowSize:function(){return v.DOM.getViewPort()},getSize:function(e){var t,n;if(e.getBoundingClientRect){var i=e.g
 etBoundingClientRect();t=Math.max(i.width||i.right-i.left,e.offsetWidth),n=Math.max(i.height||i.bottom-i.bottom,e.offsetHeight)}else t=e.offsetWidth,n=e.offsetHeight;return{width:t,height:n}},getPos:function(e,t){return v.DOM.getPos(e,t||Re.getContainer())},getContainer:function(){return fe.container?fe.container:_.document.body},getViewPort:function(e){return v.DOM.getViewPort(e)},get:function(e){return _.document.getElementById(e)},addClass:function(e,t){return v.DOM.addClass(e,t)},removeClass:function(e,t){return v.DOM.removeClass(e,t)},hasClass:function(e,t){return v.DOM.hasClass(e,t)},toggleClass:function(e,t,n){return v.DOM.toggleClass(e,t,n)},css:function(e,t,n){return v.DOM.setStyle(e,t,n)},getRuntimeStyle:function(e,t){return v.DOM.getStyle(e,t,!0)},on:function(e,t,n,i){return v.DOM.bind(e,t,n,i)},off:function(e,t,n){return v.DOM.unbind(e,t,n)},fire:function(e,t,n){return v.DOM.fire(e,t,n)},innerHtml:function(e,t){v.DOM.setHTML(e,t)}},Ce=function(e){return"static"
 ===Re.getRuntimeStyle(e,"position")},Ee=function(e){return e.state.get("fixed")};function ke(e,t,n){var i,r,o,s,a,l,u,c,d,f;return d=He(),o=(r=Re.getPos(t,A.getUiContainer(e))).x,s=r.y,Ee(e)&&Ce(_.document.body)&&(o-=d.x,s-=d.y),i=e.getEl(),a=(f=Re.getSize(i)).width,l=f.height,u=(f=Re.getSize(t)).width,c=f.height,"b"===(n=(n||"").split(""))[0]&&(s+=c),"r"===n[1]&&(o+=u),"c"===n[0]&&(s+=Math.round(c/2)),"c"===n[1]&&(o+=Math.round(u/2)),"b"===n[3]&&(s-=l),"r"===n[4]&&(o-=a),"c"===n[3]&&(s-=Math.round(l/2)),"c"===n[4]&&(o-=Math.round(a/2)),{x:o,y:s,w:a,h:l}}var He=function(){var e=_.window;return{x:Math.max(e.pageXOffset,_.document.body.scrollLeft,_.document.documentElement.scrollLeft),y:Math.max(e.pageYOffset,_.document.body.scrollTop,_.document.documentElement.scrollTop),w:e.innerWidth||
 _.document.documentElement.clientWidth,h:e.innerHeight||_.document.documentElement.clientHeight}},Se=function(e){var t,n=A.getUiContainer(e);return n&&!Ee(e)?{x:0,y:0,w:(t=n).scrollWidth-1,h:t.scrollHeight-1}:He()},Te={testMoveRel:function(e,t){for(var n=Se(this),i=0;i<t.length;i++){var r=ke(this,e,t[i]);if(Ee(this)){if(0<r.x&&r.x+r.w<n.w&&0<r.y&&r.y+r.h<n.h)return t[i]}else if(r.x>n.x&&r.x+r.w<n.w+n.x&&r.y>n.y&&r.y+r.h<n.h+n.y)return t[i]}return t[0]},moveRel:function(e,t){"string"!=typeof t&&(t=this.testMoveRel(e,t));var n=ke(this,e,t);return this.moveTo(n.x,n.y)},moveBy:function(e,t){var n=this.layoutRect();return this.moveTo(n.x+e,n.y+t),this},moveTo:function(e,t){var n=this;function i(e,t,n){return e<0?0:t<e+n&&(e=t-n)<0?0:e}if(n.settings.constrainToViewport){var r=Se(this),o=n.layoutRect();e=i(e,r.w+r.x,o.w),t=i(t,r.h+r.y,o.h)}var s=A.getUiContainer(n);return s
 &&Ce(s)&&!Ee(n)&&(e-=s.scrollLeft,t-=s.scrollTop),s&&(e+=1,t+=1),n.state.get("rendered")?n.layoutRect({x:e,y:t}).repaint():(n.settings.x=e,n.settings.y=t),n.fire("move",{x:e,y:t}),n}},Me=tinymce.util.Tools.resolve("tinymce.util.Class"),Ne=tinymce.util.Tools.resolve("tinymce.util.EventDispatcher"),Pe=function(e){var t;if(e)return"number"==typeof e?{top:e=e||0,left:e,bottom:e,right:e}:(1===(t=(e=e.split(" ")).length)?e[1]=e[2]=e[3]=e[0]:2===t?(e[2]=e[0],e[3]=e[1]):3===t&&(e[3]=e[1]),{top:parseInt(e[0],10)||0,right:parseInt(e[1],10)||0,bottom:parseInt(e[2],10)||0,left:parseInt(e[3],10)||0})},We=function(i,e){function t(e){var t=parseFloat(function(e){var t=i.ownerDocument.defaultView;if(t){var n=t.getComputedStyle(i,null);return n?(e=e.replace(/[A-Z]/g,function(e){return"-"+e}),n.getPropertyValue(e)):null}return i.currentStyle[e]}(e));return isNaN(t)?0:t}return{top:t(e+"To
 pWidth"),right:t(e+"RightWidth"),bottom:t(e+"BottomWidth"),left:t(e+"LeftWidth")}};function De(){}function Oe(e){this.cls=[],this.cls._map={},this.onchange=e||De,this.prefix=""}w.extend(Oe.prototype,{add:function(e){return e&&!this.contains(e)&&(this.cls._map[e]=!0,this.cls.push(e),this._change()),this},remove:function(e){if(this.contains(e)){var t=void 0;for(t=0;t<this.cls.length&&this.cls[t]!==e;t++);this.cls.splice(t,1),delete this.cls._map[e],this._change()}return this},toggle:function(e,t){var n=this.contains(e);return n!==t&&(n?this.remove(e):this.add(e),this._change()),this},contains:function(e){return!!this.cls._map[e]},_change:function(){delete this.clsValue,this.onchange.call(this)}}),Oe.prototype.toString=function(){var e;if(this.clsValue)return this.clsValue;e="";for(var t=0;t<this.cls.length;t++)0<t&&(e+=" "),e+=this.prefix+this.cls[t];return e};var Ae,Be,Le
 ,ze=/^([\w\\*]+)?(?:#([\w\-\\]+))?(?:\.([\w\\\.]+))?(?:\[\@?([\w\\]+)([\^\$\*!~]?=)([\w\\]+)\])?(?:\:(.+))?/i,Ie=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,Fe=/^\s*|\s*$/g,Ue=Me.extend({init:function(e){var o=this.match;function s(e,t,n){var i;function r(e){e&&t.push(e)}return r(function(t){if(t)return t=t.toLowerCase(),function(e){return"*"===t||e.type===t}}((i=ze.exec(e.replace(Fe,"")))[1])),r(function(t){if(t)return function(e){return e._name===t}}(i[2])),r(function(n){if(n)return n=n.split("."),function(e){for(var t=n.length;t--;)if(!e.classes.contains(n[t]))return!1;return!0}}(i[3])),r(function(n,i,r){if(n)return function(e){var t=e[n]?e[n]():"";return i?"="===i?t===r:"*="===i?0<=t.indexOf(r):"~="===i?0<=(" "+t+" ").indexOf(" "+r+" "):"
 !="===i?t!==r:"^="===i?0===t.indexOf(r):"$="===i&&t.substr(t.length-r.length)===r:!!r}}(i[4],i[5],i[6])),r(function(i){var t;if(i)return(i=/(?:not\((.+)\))|(.+)/i.exec(i))[1]?(t=a(i[1],[]),function(e){return!o(e,t)}):(i=i[2],function(e,t,n){return"first"===i?0===t:"last"===i?t===n-1:"even"===i?t%2==0:"odd"===i?t%2==1:!!e[i]&&e[i]()})}(i[7])),t.pseudo=!!i[7],t.direct=n,t}function a(e,t){var n,i,r,o=[];do{if(Ie.exec(""),(i=Ie.exec(e))&&(e=i[3],o.push(i[1]),i[2])){n=i[3];break}}while(i);for(n&&a(n,t),e=[],r=0;r<o.length;r++)">"!==o[r]&&e.push(s(o[r],[],">"===o[r-1]));return t.push(e),t}this._selectors=a(e,[])},match:function(e,t){var n,i,r,o,s,a,l,u,c,d,f,h,m;for(n=0,i=(t=t||this._selectors).length;n<i;n++){for(m=e,h=0,r=(o=(s=t[n]).length)-1;0<=r;r--)for(u=s[r];m;){if(u.pseudo)for(c=d=(f=m.parent().items()).length;c--&&f[c]!==m;)
 ;for(a=0,l=u.length;a<l;a++)if(!u[a](m,c,d)){a=l+1;break}if(a===l){h++;break}if(r===o-1)break;m=m.parent()}if(h===o)return!0}return!1},find:function(e){var t,n,u=[],i=this._selectors;function c(e,t,n){var i,r,o,s,a,l=t[n];for(i=0,r=e.length;i<r;i++){for(a=e[i],o=0,s=l.length;o<s;o++)if(!l[o](a,i,r)){o=s+1;break}if(o===s)n===t.length-1?u.push(a):a.items&&c(a.items(),t,n+1);else if(l.direct)return;a.items&&c(a.items(),t,n)}}if(e.items){for(t=0,n=i.length;t<n;t++)c(e.items(),i[t],0);1<n&&(u=function(e){for(var t,n=[],i=e.length;i--;)(t=e[i]).__checked||(n.push(t),t.__checked=1);for(i=n.length;i--;)delete n[i].__checked;return n}(u))}return Ae||(Ae=Ue.Collection),new Ae(u)}}),Ve=Array.prototype.push,Ye=Array.prototype.slice;Le={length:0,init:function(e){e&&this.add(e)},add:function(e){return w.isArray(e)?Ve.apply(this,e):e instanceof Be?this.add(e.toArray()):Ve.call(this,e),this},set:function(e){var t,n=this,i=n.length;for(n.length=0,n.add(
 e),t=n.length;t<i;t++)delete n[t];return n},filter:function(t){var e,n,i,r,o=[];for("string"==typeof t?(t=new Ue(t),r=function(e){return t.match(e)}):r=t,e=0,n=this.length;e<n;e++)r(i=this[e])&&o.push(i);return new Be(o)},slice:function(){return new Be(Ye.apply(this,arguments))},eq:function(e){return-1===e?this.slice(e):this.slice(e,+e+1)},each:function(e){return w.each(this,e),this},toArray:function(){return w.toArray(this)},indexOf:function(e){for(var t=this.length;t--&&this[t]!==e;);return t},reverse:function(){return new Be(w.toArray(this).reverse())},hasClass:function(e){return!!this[0]&&this[0].classes.contains(e)},prop:function(t,n){var e;return n!==undefined?(this.each(function(e){e[t]&&e[t](n)}),this):(e=this[0])&&e[t]?e[t]():void 0},exec:function(t){var n=w.toArray(arguments).slice(1);return this.each(function(e){e[t]&&e[t].apply(e,n)}),this},remove:function(){for(var e=this.length;e--;)this[e].remove();return
  this},addClass:function(t){return this.each(function(e){e.classes.add(t)})},removeClass:function(t){return this.each(function(e){e.classes.remove(t)})}},w.each("fire on off show hide append prepend before after reflow".split(" "),function(n){Le[n]=function(){var t=w.toArray(arguments);return this.each(function(e){n in e&&e[n].apply(e,t)}),this}}),w.each("text name disabled active selected checked visible parent value data".split(" "),function(t){Le[t]=function(e){return this.prop(t,e)}}),Be=Me.extend(Le);var $e=Ue.Collection=Be,qe=function(e){this.create=e.create};qe.create=function(r,o){return new qe({create:function(t,n){var i,e=function(e){t.set(n,e.value)};return t.on("change:"+n,function(e){r.set(o,e.value)}),r.on("change:"+o,e),(i=t._bindings)||(i=t._bindings=[],t.on("destroy",function(){for(var e=i.length;e--;)i[e]()})),i.push(function(){r.off("change:"+o,e)}),r.get(o)}})};var Xe=tinymce.
 util.Tools.resolve("tinymce.util.Observable");function je(e){return 0<e.nodeType}var Je,Ge,Ke=Me.extend({Mixins:[Xe],init:function(e){var t,n;for(t in e=e||{})(n=e[t])instanceof qe&&(e[t]=n.create(this,t));this.data=e},set:function(t,n){var i,r,o=this.data[t];if(n instanceof qe&&(n=n.create(this,t)),"object"==typeof t){for(i in t)this.set(i,t[i]);return this}return function e(t,n){var i,r;if(t===n)return!0;if(null===t||null===n)return t===n;if("object"!=typeof t||"object"!=typeof n)return t===n;if(w.isArray(n)){if(t.length!==n.length)return!1;for(i=t.length;i--;)if(!e(t[i],n[i]))return!1}if(je(t)||je(n))return t===n;for(i in r={},n){if(!e(t[i],n[i]))return!1;r[i]=!0}for(i in t)if(!r[i]&&!e(t[i],n[i]))return!1;return!0}(o,n)||(this.data[t]=n,r={target:this,name:t,value:n,oldValue:o},this.fire("change:"+t,r),this.fire("change",r)),this},get:function(e){return this.data[e]},has:function(e){return e i
 n this.data},bind:function(e){return qe.create(this,e)},destroy:function(){this.fire("destroy")}}),Ze={},Qe={add:function(e){var t=e.parent();if(t){if(!t._layout||t._layout.isNative())return;Ze[t._id]||(Ze[t._id]=t),Je||(Je=!0,u.requestAnimationFrame(function(){var e,t;for(e in Je=!1,Ze)(t=Ze[e]).state.get("rendered")&&t.reflow();Ze={}},_.document.body))}},remove:function(e){Ze[e._id]&&delete Ze[e._id]}},et="onmousewheel"in _.document,tt=!1,nt=0,it={Statics:{classPrefix:"mce-"},isRtl:function(){return Ge.rtl},classPrefix:"mce-",init:function(t){var e,n,i=this;function r(e){var t;for(e=e.split(" "),t=0;t<e.length;t++)i.classes.add(e[t])}i.settings=t=w.extend({},i.Defaults,t),i._id=t.id||"mceu_"+nt++,i._aria={role:t.role},i._elmCache={},i.$=we,i.state=new Ke({visible:!0,active:!1,disabled:!1,value:""}),i.data=new Ke(t.data),i.classes=new Oe(function(){i.state.get("rendered")&am
 p;&(i.getEl().className=this.toString())}),i.classes.prefix=i.classPrefix,(e=t.classes)&&(i.Defaults&&(n=i.Defaults.classes)&&e!==n&&r(n),r(e)),w.each("title text name visible disabled active value".split(" "),function(e){e in t&&i[e](t[e])}),i.on("click",function(){if(i.disabled())return!1}),i.settings=t,i.borderBox=Pe(t.border),i.paddingBox=Pe(t.padding),i.marginBox=Pe(t.margin),t.hidden&&i.hide()},Properties:"parent,name",getContainerElm:function(){var e=A.getUiContainer(this);return e||Re.getContainer()},getParentCtrl:function(e){for(var t,n=this.getRoot().controlIdLookup;e&&n&&!(t=n[e.id]);)e=e.parentNode;return t},initLayoutRect:function(){var e,t,n,i,r,o,s,a,l,u,c=this,d=c.settings,f=c.getEl();e=c.borderBox=c.borderBox||We(f,"border"),c.paddingBox=c.paddingBox||We(f,"padding"),c.marginBox=c.marginBox||We(f,"margin"),u=Re.getSize(f),a=d.minW
 idth,l=d.minHeight,r=a||u.width,o=l||u.height,n=d.width,i=d.height,s=void 0!==(s=d.autoResize)?s:!n&&!i,n=n||r,i=i||o;var h=e.left+e.right,m=e.top+e.bottom,g=d.maxWidth||65535,p=d.maxHeight||65535;return c._layoutRect=t={x:d.x||0,y:d.y||0,w:n,h:i,deltaW:h,deltaH:m,contentW:n-h,contentH:i-m,innerW:n-h,innerH:i-m,startMinWidth:a||0,startMinHeight:l||0,minW:Math.min(r,g),minH:Math.min(o,p),maxW:g,maxH:p,autoResize:s,scrollW:0},c._lastLayoutRect={},t},layoutRect:function(e){var t,n,i,r,o,s=this,a=s._layoutRect;return a||(a=s.initLayoutRect()),e?(i=a.deltaW,r=a.deltaH,e.x!==undefined&&(a.x=e.x),e.y!==undefined&&(a.y=e.y),e.minW!==undefined&&(a.minW=e.minW),e.minH!==undefined&&(a.minH=e.minH),(n=e.w)!==undefined&&(n=(n=n<a.minW?a.minW:n)>a.maxW?a.maxW:n,a.w=n,a.innerW=n-i),(n=e.h)!==undefined&&(n=(n=n<a.minH?a.minH:n)>a.maxH?a.maxH:n,a.h=n,a.innerH=n-r),(n=e.innerW)!==undefined&&(n=(n=n<a.minW-i?a.minW-i:n)>
 a.maxW-i?a.maxW-i:n,a.innerW=n,a.w=n+i),(n=e.innerH)!==undefined&&(n=(n=n<a.minH-r?a.minH-r:n)>a.maxH-r?a.maxH-r:n,a.innerH=n,a.h=n+r),e.contentW!==undefined&&(a.contentW=e.contentW),e.contentH!==undefined&&(a.contentH=e.contentH),(t=s._lastLayoutRect).x===a.x&&t.y===a.y&&t.w===a.w&&t.h===a.h||((o=Ge.repaintControls)&&o.map&&!o.map[s._id]&&(o.push(s),o.map[s._id]=!0),t.x=a.x,t.y=a.y,t.w=a.w,t.h=a.h),s):a},repaint:function(){var e,t,n,i,r,o,s,a,l,u,c=this;l=_.document.createRange?function(e){return e}:Math.round,e=c.getEl().style,i=c._layoutRect,a=c._lastRepaintRect||{},o=(r=c.borderBox).left+r.right,s=r.top+r.bottom,i.x!==a.x&&(e.left=l(i.x)+"px",a.x=i.x),i.y!==a.y&&(e.top=l(i.y)+"px",a.y=i.y),i.w!==a.w&&(u=l(i.w-o),e.width=(0<=u?u:0)+"px",a.w=i.w),i.h!==a.h&&(u=l(i.h-s),e.height=(0<=u?u:0)+"px",a.h=i.h),c._hasBody&&i.inn
 erW!==a.innerW&&(u=l(i.innerW),(n=c.getEl("body"))&&((t=n.style).width=(0<=u?u:0)+"px"),a.innerW=i.innerW),c._hasBody&&i.innerH!==a.innerH&&(u=l(i.innerH),(n=n||c.getEl("body"))&&((t=t||n.style).height=(0<=u?u:0)+"px"),a.innerH=i.innerH),c._lastRepaintRect=a,c.fire("repaint",{},!1)},updateLayoutRect:function(){var e=this;e.parent()._lastRect=null,Re.css(e.getEl(),{width:"",height:""}),e._layoutRect=e._lastRepaintRect=e._lastLayoutRect=null,e.initLayoutRect()},on:function(e,t){var n,i,r,o=this;return rt(o).on(e,"string"!=typeof(n=t)?n:function(e){return i||o.parentsAndSelf().each(function(e){var t=e.settings.callbacks;if(t&&(i=t[n]))return r=e,!1}),i?i.call(r,e):(e.action=n,void this.fire("execute",e))}),o},off:function(e,t){return rt(this).off(e,t),this},fire:function(e,t,n){if((t=t||{}).control||(t.control=this),t=rt(this).fire(e,t),!1!==n&
 amp;&this.parent)for(var i=this.parent();i&&!t.isPropagationStopped();)i.fire(e,t,!1),i=i.parent();return t},hasEventListeners:function(e){return rt(this).has(e)},parents:function(e){var t,n=new $e;for(t=this.parent();t;t=t.parent())n.add(t);return e&&(n=n.filter(e)),n},parentsAndSelf:function(e){return new $e(this).add(this.parents(e))},next:function(){var e=this.parent().items();return e[e.indexOf(this)+1]},prev:function(){var e=this.parent().items();return e[e.indexOf(this)-1]},innerHtml:function(e){return this.$el.html(e),this},getEl:function(e){var t=e?this._id+"-"+e:this._id;return this._elmCache[t]||(this._elmCache[t]=we("#"+t)[0]),this._elmCache[t]},show:function(){return this.visible(!0)},hide:function(){return this.visible(!1)},focus:function(){try{this.getEl().focus()}catch(e){}return this},blur:function(){return this.getEl().blur(),this},aria:function(e,t){var n=this,i=n.getEl(n.ariaTarget);return void 0===t?n._aria[e]:(n._aria[e]=
 t,n.state.get("rendered")&&i.setAttribute("role"===e?e:"aria-"+e,t),n)},encode:function(e,t){return!1!==t&&(e=this.translate(e)),(e||"").replace(/[&<>"]/g,function(e){return"&#"+e.charCodeAt(0)+";"})},translate:function(e){return Ge.translate?Ge.translate(e):e},before:function(e){var t=this.parent();return t&&t.insert(e,t.items().indexOf(this),!0),this},after:function(e){var t=this.parent();return t&&t.insert(e,t.items().indexOf(this)),this},remove:function(){var t,e,n=this,i=n.getEl(),r=n.parent();if(n.items){var o=n.items().toArray();for(e=o.length;e--;)o[e].remove()}r&&r.items&&(t=[],r.items().each(function(e){e!==n&&t.push(e)}),r.items().set(t),r._lastRect=null),n._eventsRoot&&n._eventsRoot===n&&we(i).off();var s=n.getRoot().controlIdLookup;return s&&delete s[n._id],i&&i.parentNode&&i.parentNode.removeChild
 (i),n.state.set("rendered",!1),n.state.destroy(),n.fire("remove"),n},renderBefore:function(e){return we(e).before(this.renderHtml()),this.postRender(),this},renderTo:function(e){return we(e||this.getContainerElm()).append(this.renderHtml()),this.postRender(),this},preRender:function(){},render:function(){},renderHtml:function(){return'<div id="'+this._id+'" class="'+this.classes+'"></div>'},postRender:function(){var e,t,n,i,r,o=this,s=o.settings;for(i in o.$el=we(o.getEl()),o.state.set("rendered",!0),s)0===i.indexOf("on")&&o.on(i.substr(2),s[i]);if(o._eventsRoot){for(n=o.parent();!r&&n;n=n.parent())r=n._eventsRoot;if(r)for(i in r._nativeEvents)o._nativeEvents[i]=!0}ot(o),s.style&&(e=o.getEl())&&(e.setAttribute("style",s.style),e.style.cssText=s.style),o.settings.border&&(t=o.borderBox,o.$el.css({"border-top-width":t.top,"border-right-width":t.
 right,"border-bottom-width":t.bottom,"border-left-width":t.left}));var a=o.getRoot();for(var l in a.controlIdLookup||(a.controlIdLookup={}),(a.controlIdLookup[o._id]=o)._aria)o.aria(l,o._aria[l]);!1===o.state.get("visible")&&(o.getEl().style.display="none"),o.bindStates(),o.state.on("change:visible",function(e){var t,n=e.value;o.state.get("rendered")&&(o.getEl().style.display=!1===n?"none":"",o.getEl().getBoundingClientRect()),(t=o.parent())&&(t._lastRect=null),o.fire(n?"show":"hide"),Qe.add(o)}),o.fire("postrender",{},!1)},bindStates:function(){},scrollIntoView:function(e){var t,n,i,r,o,s,a=this.getEl(),l=a.parentNode,u=function(e,t){var n,i,r=e;for(n=i=0;r&&r!==t&&r.nodeType;)n+=r.offsetLeft||0,i+=r.offsetTop||0,r=r.offsetParent;return{x:n,y:i}}(a,l);return t=u.x,n=u.y,i=a.offsetWidth,r=a.offsetHeight,o=l.clientWidth,s=l.clientHeight
 ,"end"===e?(t-=o-i,n-=s-r):"center"===e&&(t-=o/2-i/2,n-=s/2-r/2),l.scrollLeft=t,l.scrollTop=n,this},getRoot:function(){for(var e,t=this,n=[];t;){if(t.rootControl){e=t.rootControl;break}n.push(t),t=(e=t).parent()}e||(e=this);for(var i=n.length;i--;)n[i].rootControl=e;return e},reflow:function(){Qe.remove(this);var e=this.parent();return e&&e._layout&&!e._layout.isNative()&&e.reflow(),this}};function rt(n){return n._eventDispatcher||(n._eventDispatcher=new Ne({scope:n,toggleEvent:function(e,t){t&&Ne.isNative(e)&&(n._nativeEvents||(n._nativeEvents={}),n._nativeEvents[e]=!0,n.state.get("rendered")&&ot(n))}})),n._eventDispatcher}function ot(a){var e,t,n,l,i,r;function o(e){var t=a.getParentCtrl(e.target);t&&t.fire(e.type,e)}function s(){var e=l._lastHoverCtrl;e&&(e.fire("mouseleave",{target:e.getEl()}),e.parents().each(function(e){e.fire("mouseleave",{target:e.getEl()
 })}),l._lastHoverCtrl=null)}function u(e){var t,n,i,r=a.getParentCtrl(e.target),o=l._lastHoverCtrl,s=0;if(r!==o){if((n=(l._lastHoverCtrl=r).parents().toArray().reverse()).push(r),o){for((i=o.parents().toArray().reverse()).push(o),s=0;s<i.length&&n[s]===i[s];s++);for(t=i.length-1;s<=t;t--)(o=i[t]).fire("mouseleave",{target:o.getEl()})}for(t=s;t<n.length;t++)(r=n[t]).fire("mouseenter",{target:r.getEl()})}}function c(e){e.preventDefault(),"mousewheel"===e.type?(e.deltaY=-.025*e.wheelDelta,e.wheelDeltaX&&(e.deltaX=-.025*e.wheelDeltaX)):(e.deltaX=0,e.deltaY=e.detail),e=a.fire("wheel",e)}if(i=a._nativeEvents){for((n=a.parents().toArray()).unshift(a),e=0,t=n.length;!l&&e<t;e++)l=n[e]._eventsRoot;for(l||(l=n[n.length-1]||a),a._eventsRoot=l,t=e,e=0;e<t;e++)n[e]._eventsRoot=l;var d=l._delegates;for(r in d||(d=l._delegates={}),i){if(!i)return!1;"wheel"!==r||tt?("mouseenter"===r||"mouseleave&
 quot;===r?l._hasMouseEnter||(we(l.getEl()).on("mouseleave",s).on("mouseover",u),l._hasMouseEnter=1):d[r]||(we(l.getEl()).on(r,o),d[r]=!0),i[r]=!1):et?we(a.getEl()).on("mousewheel",c):we(a.getEl()).on("DOMMouseScroll",c)}}}w.each("text title visible disabled active value".split(" "),function(t){it[t]=function(e){return 0===arguments.length?this.state.get(t):(void 0!==e&&this.state.set(t,e),this)}});var st=Ge=Me.extend(it),at=function(e){return!!e.getAttribute("data-mce-tabstop")};function lt(e){var o,r,n=e.root;function i(e){return e&&1===e.nodeType}try{o=_.document.activeElement}catch(t){o=_.document.body}function s(e){return i(e=e||o)?e.getAttribute("role"):null}function a(e){for(var t,n=e||o;n=n.parentNode;)if(t=s(n))return t}function l(e){var t=o;if(i(t))return t.getAttribute("aria-"+e)}function u(e){var t=e.tagName.toUpperCase();return"INPUT"===t||"TEXTAREA&qu
 ot;===t||"SELECT"===t}function c(t){var r=[];return function e(t){if(1===t.nodeType&&"none"!==t.style.display&&!t.disabled){var n;(u(n=t)&&!n.hidden||at(n)||/^(button|menuitem|checkbox|tab|menuitemcheckbox|option|gridcell|slider)$/.test(s(n)))&&r.push(t);for(var i=0;i<t.childNodes.length;i++)e(t.childNodes[i])}}(t||n.getEl()),r}function d(e){var t,n;(n=(e=e||r).parents().toArray()).unshift(e);for(var i=0;i<n.length&&!(t=n[i]).settings.ariaRoot;i++);return t}function f(e,t){return e<0?e=t.length-1:e>=t.length&&(e=0),t[e]&&t[e].focus(),e}function h(e,t){var n=-1,i=d();t=t||c(i.getEl());for(var r=0;r<t.length;r++)t[r]===o&&(n=r);n+=e,i.lastAriaIndex=f(n,t)}function m(){"tablist"===a()?h(-1,c(o.parentNode)):r.parent().submenu?b():h(-1)}function g(){var e=s(),t=a();"tablist"===t?h(1,c(o.parentNode)):"menuitem"===e&&"menu"===t&&l("
 haspopup")?y():h(1)}function p(){h(-1)}function v(){var e=s(),t=a();"menuitem"===e&&"menubar"===t?y():"button"===e&&l("haspopup")?y({key:"down"}):h(1)}function b(){r.fire("cancel")}function y(e){e=e||{},r.fire("click",{target:o,aria:e})}return r=n.getParentCtrl(o),n.on("keydown",function(e){function t(e,t){u(o)||at(o)||"slider"!==s(o)&&!1!==t(e)&&e.preventDefault()}if(!e.isDefaultPrevented())switch(e.keyCode){case 37:t(e,m);break;case 39:t(e,g);break;case 38:t(e,p);break;case 40:t(e,v);break;case 27:b();break;case 14:case 13:case 32:t(e,y);break;case 9:!function(e){if("tablist"===a()){var t=c(r.getEl("body"))[0];t&&t.focus()}else h(e.shiftKey?-1:1)}(e),e.preventDefault()}}),n.on("focusin",function(e){o=e.target,r=e.control}),{focusFirst:function(e){var t=d(e),n=c(t.getEl());t.settings.ariaRemember&&"lastAria
 Index"in t?f(t.lastAriaIndex,n):f(0,n)}}}var ut={},ct=st.extend({init:function(e){var t=this;t._super(e),(e=t.settings).fixed&&t.state.set("fixed",!0),t._items=new $e,t.isRtl()&&t.classes.add("rtl"),t.bodyClasses=new Oe(function(){t.state.get("rendered")&&(t.getEl("body").className=this.toString())}),t.bodyClasses.prefix=t.classPrefix,t.classes.add("container"),t.bodyClasses.add("container-body"),e.containerCls&&t.classes.add(e.containerCls),t._layout=b.create((e.layout||"")+"layout"),t.settings.items?t.add(t.settings.items):t.add(t.render()),t._hasBody=!0},items:function(){return this._items},find:function(e){return(e=ut[e]=ut[e]||new Ue(e)).find(this)},add:function(e){return this.items().add(this.create(e)).parent(this),this},focus:function(e){var t,n,i,r=this;if(!e||!(n=r.keyboardNav||r.parents().eq(-1)[0].keyboardNav))return i=r.find("*"),r.statusbar&amp
 ;&i.add(r.statusbar.items()),i.each(function(e){if(e.settings.autofocus)return t=null,!1;e.canFocus&&(t=t||e)}),t&&t.focus(),r;n.focusFirst(r)},replace:function(e,t){for(var n,i=this.items(),r=i.length;r--;)if(i[r]===e){i[r]=t;break}0<=r&&((n=t.getEl())&&n.parentNode.removeChild(n),(n=e.getEl())&&n.parentNode.removeChild(n)),t.parent(this)},create:function(e){var t,n=this,i=[];return w.isArray(e)||(e=[e]),w.each(e,function(e){e&&(e instanceof st||("string"==typeof e&&(e={type:e}),t=w.extend({},n.settings.defaults,e),e.type=t.type=t.type||e.type||n.settings.defaultType||(t.defaults?t.defaults.type:null),e=b.create(t)),i.push(e))}),i},renderNew:function(){var i=this;return i.items().each(function(e,t){var n;e.parent(i),e.state.get("rendered")||((n=i.getEl("body")).hasChildNodes()&&t<=n.childNodes.length-1?we(n.childNodes[t]).before(e.renderHtml()):we(n).append(e.renderHtml()),e.post
 Render(),Qe.add(e))}),i._layout.applyClasses(i.items().filter(":visible")),i._lastRect=null,i},append:function(e){return this.add(e).renderNew()},prepend:function(e){return this.items().set(this.create(e).concat(this.items().toArray())),this.renderNew()},insert:function(e,t,n){var i,r,o;return e=this.create(e),i=this.items(),!n&&t<i.length-1&&(t+=1),0<=t&&t<i.length&&(r=i.slice(0,t).toArray(),o=i.slice(t).toArray(),i.set(r.concat(e,o))),this.renderNew()},fromJSON:function(e){for(var t in e)this.find("#"+t).value(e[t]);return this},toJSON:function(){var i={};return this.find("*").each(function(e){var t=e.name(),n=e.value();t&&void 0!==n&&(i[t]=n)}),i},renderHtml:function(){var e=this,t=e._layout,n=this.settings.role;return e.preRender(),t.preRender(e),'<div id="'+e._id+'" class="'+e.classes+'"'+(n?' role="'+this.settings.role+'"':"")+'><div id="
 '+e._id+'-body" class="'+e.bodyClasses+'">'+(e.settings.html||"")+t.renderHtml(e)+"</div></div>"},postRender:function(){var e,t=this;return t.items().exec("postRender"),t._super(),t._layout.postRender(t),t.state.set("rendered",!0),t.settings.style&&t.$el.css(t.settings.style),t.settings.border&&(e=t.borderBox,t.$el.css({"border-top-width":e.top,"border-right-width":e.right,"border-bottom-width":e.bottom,"border-left-width":e.left})),t.parent()||(t.keyboardNav=lt({root:t})),t},initLayoutRect:function(){var e=this._super();return this._layout.recalc(this),e},recalc:function(){var e=this,t=e._layoutRect,n=e._lastRect;if(!n||n.w!==t.w||n.h!==t.h)return e._layout.recalc(e),t=e.layoutRect(),e._lastRect={x:t.x,y:t.y,w:t.w,h:t.h},!0},reflow:function(){var e;if(Qe.remove(this),this.visible()){for(st.repaintControls=[],st.repaintControls.map={},this.recalc(),e=st.repai
 ntControls.length;e--;)st.repaintControls[e].repaint();"flow"!==this.settings.layout&&"stack"!==this.settings.layout&&this.repaint(),st.repaintControls=[]}return this}});function dt(e){var t,n;if(e.changedTouches)for(t="screenX screenY pageX pageY clientX clientY".split(" "),n=0;n<t.length;n++)e[t[n]]=e.changedTouches[0][t[n]]}function ft(e,h){var m,g,t,p,v,b,y,x=h.document||_.document;h=h||{};var w=x.getElementById(h.handle||e);t=function(e){var t,n,i,r,o,s,a,l,u,c,d,f=(t=x,u=Math.max,n=t.documentElement,i=t.body,r=u(n.scrollWidth,i.scrollWidth),o=u(n.clientWidth,i.clientWidth),s=u(n.offsetWidth,i.offsetWidth),a=u(n.scrollHeight,i.scrollHeight),l=u(n.clientHeight,i.clientHeight),{width:r<s?o:r,height:a<u(n.offsetHeight,i.offsetHeight)?l:a});dt(e),e.preventDefault(),g=e.button,c=w,b=e.screenX,y=e.screenY,d=_.window.getComputedStyle?_.window.getComputedStyle(c,null).getPropertyValue("cursor"):c.runtimeStyle.cu
 rsor,m=we("<div></div>").css({position:"absolute",top:0,left:0,width:f.width,height:f.height,zIndex:2147483647,opacity:1e-4,cursor:d}).appendTo(x.body),we(x).on("mousemove touchmove",v).on("mouseup touchend",p),h.start(e)},v=function(e){if(dt(e),e.button!==g)return p(e);e.deltaX=e.screenX-b,e.deltaY=e.screenY-y,e.preventDefault(),h.drag(e)},p=function(e){dt(e),we(x).off("mousemove touchmove",v).off("mouseup touchend",p),m.remove(),h.stop&&h.stop(e)},this.destroy=function(){we(w).off()},we(w).on("mousedown touchstart",t)}var ht,mt,gt,pt,vt={init:function(){this.on("repaint",this.renderScroll)},renderScroll:function(){var p=this,v=2;function n(){var m,g,e;function t(e,t,n,i,r,o){var s,a,l,u,c,d,f,h;if(a=p.getEl("scroll"+e)){if(f=t.toLowerCase(),h=n.toLowerCase(),we(p.getEl("absend")).css(f,p.layoutRect()[i]-1),!r)return void we(a).css("display","none&q
 uot;);we(a).css("display","block"),s=p.getEl("body"),l=p.getEl("scroll"+e+"t"),u=s["client"+n]-2*v,c=(u-=m&&g?a["client"+o]:0)/s["scroll"+n],(d={})[f]=s["offset"+t]+v,d[h]=u,we(a).css(d),(d={})[f]=s["scroll"+t]*c,d[h]=u*c,we(l).css(d)}}e=p.getEl("body"),m=e.scrollWidth>e.clientWidth,g=e.scrollHeight>e.clientHeight,t("h","Left","Width","contentW",m,"Height"),t("v","Top","Height","contentH",g,"Width")}p.settings.autoScroll&&(p._hasScroll||(p._hasScroll=!0,function(){function e(s,a,l,u,c){var d,e=p._id+"-scroll"+s,t=p.classPrefix;we(p.getEl()).append('<div id="'+e+'" class="'+t+"scrollbar "+t+"scrollbar-"+s+'"><div id="'+e+'t" class="'+t+'scrollbar-thumb"></div></div&g
 t;'),p.draghelper=new ft(e+"t",{start:function(){d=p.getEl("body")["scroll"+a],we("#"+e).addClass(t+"active")},drag:function(e){var t,n,i,r,o=p.layoutRect();n=o.contentW>o.innerW,i=o.contentH>o.innerH,r=p.getEl("body")["client"+l]-2*v,t=(r-=n&&i?p.getEl("scroll"+s)["client"+c]:0)/p.getEl("body")["scroll"+l],p.getEl("body")["scroll"+a]=d+e["delta"+u]/t},stop:function(){we("#"+e).removeClass(t+"active")}})}p.classes.add("scroll"),e("v","Top","Height","Y","Width"),e("h","Left","Width","X","Height")}(),p.on("wheel",function(e){var t=p.getEl("body");t.scrollLeft+=10*(e.deltaX||0),t.scrollTop+=10*e.deltaY,n()}),we(p.getEl("body")).on("scroll",n)),n())}},bt=ct.extend({Def
 aults:{layout:"fit",containerCls:"panel"},Mixins:[vt],renderHtml:function(){var e=this,t=e._layout,n=e.settings.html;return e.preRender(),t.preRender(e),void 0===n?n='<div id="'+e._id+'-body" class="'+e.bodyClasses+'">'+t.renderHtml(e)+"</div>":("function"==typeof n&&(n=n.call(e)),e._hasBody=!1),'<div id="'+e._id+'" class="'+e.classes+'" hidefocus="1" tabindex="-1" role="group">'+(e._preBodyHtml||"")+n+"</div>"}}),yt={resizeToContent:function(){this._layoutRect.autoResize=!0,this._lastRect=null,this.reflow()},resizeTo:function(e,t){if(e<=1||t<=1){var n=Re.getWindowSize();e=e<=1?e*n.w:e,t=t<=1?t*n.h:t}return this._layoutRect.autoResize=!1,this.layoutRect({minW:e,minH:t,w:e,h:t}).reflow()},resizeBy:function(e,t){var n=this.layoutRect();return this.resizeTo(n.w+e,n.h+t)}},xt=[],wt=[];function _t(e,t){for(;e;){if(e=
 ==t)return!0;e=e.parent()}}function Rt(){ht||(ht=function(e){2!==e.button&&function(e){for(var t=xt.length;t--;){var n=xt[t],i=n.getParentCtrl(e.target);if(n.settings.autohide){if(i&&(_t(i,n)||n.parent()===i))continue;(e=n.fire("autohide",{target:e.target})).isDefaultPrevented()||n.hide()}}}(e)},we(_.document).on("click touchstart",ht))}function Ct(r){var e=Re.getViewPort().y;function t(e,t){for(var n,i=0;i<xt.length;i++)if(xt[i]!==r)for(n=xt[i].parent();n&&(n=n.parent());)n===r&&xt[i].fixed(e).moveBy(0,t).repaint()}r.settings.autofix&&(r.state.get("fixed")?r._autoFixY>e&&(r.fixed(!1).layoutRect({y:r._autoFixY}).repaint(),t(!1,r._autoFixY-e)):(r._autoFixY=r.layoutRect().y,r._autoFixY<e&&(r.fixed(!0).layoutRect({y:0}).repaint(),t(!0,e-r._autoFixY))))}function Et(e,t){var n,i,r=kt.zIndex||65535;if(e)wt.push(t);else for(n=wt.length;n--;)wt[n]===t&&wt.splice(n,1);if(wt.length)for(n=0;n
 <wt.length;n++)wt[n].modal&&(r++,i=wt[n]),wt[n].getEl().style.zIndex=r,wt[n].zIndex=r,r++;var o=we("#"+t.classPrefix+"modal-block",t.getContainerElm())[0];i?we(o).css("z-index",i.zIndex-1):o&&(o.parentNode.removeChild(o),pt=!1),kt.currentZIndex=r}var kt=bt.extend({Mixins:[Te,yt],init:function(e){var i=this;i._super(e),(i._eventsRoot=i).classes.add("floatpanel"),e.autohide&&(Rt(),function(){if(!gt){var e=_.document.documentElement,t=e.clientWidth,n=e.clientHeight;gt=function(){_.document.all&&t===e.clientWidth&&n===e.clientHeight||(t=e.clientWidth,n=e.clientHeight,kt.hideAll())},we(_.window).on("resize",gt)}}(),xt.push(i)),e.autofix&&(mt||(mt=function(){var e;for(e=xt.length;e--;)Ct(xt[e])},we(_.window).on("scroll",mt)),i.on("move",function(){Ct(this)})),i.on("postrender show",function(e){if(e.control===i){var t,n=i.classPrefix;i.modal&&!pt&&a
 mp;((t=we("#"+n+"modal-block",i.getContainerElm()))[0]||(t=we('<div id="'+n+'modal-block" class="'+n+"reset "+n+'fade"></div>').appendTo(i.getContainerElm())),u.setTimeout(function(){t.addClass(n+"in"),we(i.getEl()).addClass(n+"in")}),pt=!0),Et(!0,i)}}),i.on("show",function(){i.parents().each(function(e){if(e.state.get("fixed"))return i.fixed(!0),!1})}),e.popover&&(i._preBodyHtml='<div class="'+i.classPrefix+'arrow"></div>',i.classes.add("popover").add("bottom").add(i.isRtl()?"end":"start")),i.aria("label",e.ariaLabel),i.aria("labelledby",i._id),i.aria("describedby",i.describedBy||i._id+"-none")},fixed:function(e){var t=this;if(t.state.get("fixed")!==e){if(t.state.get("rendered")){var n=Re.getViewPort();e?t.layoutRect().y-=n.y:t.layoutRect().y+=n.y}t.clas
 ses.toggle("fixed",e),t.state.set("fixed",e)}return t},show:function(){var e,t=this._super();for(e=xt.length;e--&&xt[e]!==this;);return-1===e&&xt.push(this),t},hide:function(){return Ht(this),Et(!1,this),this._super()},hideAll:function(){kt.hideAll()},close:function(){return this.fire("close").isDefaultPrevented()||(this.remove(),Et(!1,this)),this},remove:function(){Ht(this),this._super()},postRender:function(){return this.settings.bodyRole&&this.getEl("body").setAttribute("role",this.settings.bodyRole),this._super()}});function Ht(e){var t;for(t=xt.length;t--;)xt[t]===e&&xt.splice(t,1);for(t=wt.length;t--;)wt[t]===e&&wt.splice(t,1)}kt.hideAll=function(){for(var e=xt.length;e--;){var t=xt[e];t&&t.settings.autohide&&(t.hide(),xt.splice(e,1))}};var St=function(s,n,e){var a,i,l=v.DOM,t=s.getParam("fixed_toolbar_container");t&&(i=l.select(t)[0]);var r=function(){if
 (a&&a.moveRel&&a.visible()&&!a._fixed){var e=s.selection.getScrollContainer(),t=s.getBody(),n=0,i=0;if(e){var r=l.getPos(t),o=l.getPos(e);n=Math.max(0,o.x-r.x),i=Math.max(0,o.y-r.y)}a.fixed(!1).moveRel(t,s.rtl?["tr-br","br-tr"]:["tl-bl","bl-tl","tr-br"]).moveBy(n,i)}},o=function(){a&&(a.show(),r(),l.addClass(s.getBody(),"mce-edit-focus"))},u=function(){a&&(a.hide(),kt.hideAll(),l.removeClass(s.getBody(),"mce-edit-focus"))},c=function(){var e,t;a?a.visible()||o():(a=n.panel=b.create({type:i?"panel":"floatpanel",role:"application",classes:"tinymce tinymce-inline",layout:"flex",direction:"column",align:"stretch",autohide:!1,autofix:!0,fixed:(e=i,t=s,!(!e||t.settings.ui_container)),border:1,items:[!1===d(s)?null:{type:"menubar",border:"0 0 1 0",items:se(s)},z(s,f(s))]}),A.setUiContainer(s,a
 ),R(s),i?a.renderTo(i).reflow():a.renderTo().reflow(),C(s,a),o(),Y(s),s.on("nodeChange",r),s.on("ResizeWindow",r),s.on("activate",o),s.on("deactivate",u),s.nodeChanged())};return s.settings.content_editable=!0,s.on("focus",function(){!1===g(s)&&e.skinUiCss?l.styleSheetLoader.load(e.skinUiCss,c,c):c()}),s.on("blur hide",u),s.on("remove",function(){a&&(a.remove(),a=null)}),!1===g(s)&&e.skinUiCss?l.styleSheetLoader.load(e.skinUiCss,ve(s)):ve(s)(),{}};function Tt(i,r){var o,s,a=this,l=st.classPrefix;a.show=function(e,t){function n(){o&&(we(i).append('<div class="'+l+"throbber"+(r?" "+l+"throbber-inline":"")+'"></div>'),t&&t())}return a.hide(),o=!0,e?s=u.setTimeout(n,e):n(),a},a.hide=function(){var e=i.lastChild;return u.clearTimeout(s),e&&-1!==e.className.indexOf("throbber")&&e.parentNode.rem
 oveChild(e),o=!1,a}}var Mt=function(e,t){var n;e.on("ProgressState",function(e){n=n||new Tt(t.panel.getEl("body")),e.state?n.show(e.time):n.hide()})},Nt=function(e,t,n){var i=function(e){var t=e.settings,n=t.skin,i=t.skin_url;if(!1!==n){var r=n||"lightgray";i=i?e.documentBaseURI.toAbsolute(i):h.baseURL+"/skins/"+r}return i}(e);return i&&(n.skinUiCss=i+"/skin.min.css",e.contentCSS.push(i+"/content"+(e.inline?".inline":"")+".min.css")),Mt(e,t),e.getParam("inline",!1,"boolean")?St(e,t,n):xe(e,t,n)},Pt=st.extend({Mixins:[Te],Defaults:{classes:"widget tooltip tooltip-n"},renderHtml:function(){var e=this,t=e.classPrefix;return'<div id="'+e._id+'" class="'+e.classes+'" role="presentation"><div class="'+t+'tooltip-arrow"></div><div class="'+t+'tooltip-inner">'+e.encode(e.state.get("text&
 quot;))+"</div></div>"},bindStates:function(){var t=this;return t.state.on("change:text",function(e){t.getEl().lastChild.innerHTML=t.encode(e.value)}),t._super()},repaint:function(){var e,t;e=this.getEl().style,t=this._layoutRect,e.left=t.x+"px",e.top=t.y+"px",e.zIndex=131070}}),Wt=st.extend({init:function(i){var r=this;r._super(i),i=r.settings,r.canFocus=!0,i.tooltip&&!1!==Wt.tooltips&&(r.on("mouseenter",function(e){var t=r.tooltip().moveTo(-65535);if(e.control===r){var n=t.text(i.tooltip).show().testMoveRel(r.getEl(),["bc-tc","bc-tl","bc-tr"]);t.classes.toggle("tooltip-n","bc-tc"===n),t.classes.toggle("tooltip-nw","bc-tl"===n),t.classes.toggle("tooltip-ne","bc-tr"===n),t.moveRel(r.getEl(),n)}else t.hide()}),r.on("mouseleave mousedown click",function(){r.tooltip().remove(),r._tooltip=null})),r.aria("la
 bel",i.ariaLabel||i.tooltip)},tooltip:function(){return this._tooltip||(this._tooltip=new Pt({type:"tooltip"}),A.inheritUiContainer(this,this._tooltip),this._tooltip.renderTo()),this._tooltip},postRender:function(){var e=this,t=e.settings;e._super(),e.parent()||!t.width&&!t.height||(e.initLayoutRect(),e.repaint()),t.autofocus&&e.focus()},bindStates:function(){var t=this;function n(e){t.aria("disabled",e),t.classes.toggle("disabled",e)}function i(e){t.aria("pressed",e),t.classes.toggle("active",e)}return t.state.on("change:disabled",function(e){n(e.value)}),t.state.on("change:active",function(e){i(e.value)}),t.state.get("disabled")&&n(!0),t.state.get("active")&&i(!0),t._super()},remove:function(){this._super(),this._tooltip&&(this._tooltip.remove(),this._tooltip=null)}}),Dt=Wt.extend({Defaults:{value:0},init:function(e){this._super(e),this.classes.add
 ("progress"),this.settings.filter||(this.settings.filter=function(e){return Math.round(e)})},renderHtml:function(){var e=this._id,t=this.classPrefix;return'<div id="'+e+'" class="'+this.classes+'"><div class="'+t+'bar-container"><div class="'+t+'bar"></div></div><div class="'+t+'text">0%</div></div>'},postRender:function(){return this._super(),this.value(this.settings.value),this},bindStates:function(){var t=this;function n(e){e=t.settings.filter(e),t.getEl().lastChild.innerHTML=e+"%",t.getEl().firstChild.firstChild.style.width=e+"%"}return t.state.on("change:value",function(e){n(e.value)}),n(t.state.get("value")),t._super()}}),Ot=function(e,t){e.getEl().lastChild.textContent=t+(e.progressBar?" "+e.progressBar.value()+"%":"")},At=st.extend({Mixins:[Te],Defaults:{classes:"widget notification"},init:
 function(e){var t=this;t._super(e),t.maxWidth=e.maxWidth,e.text&&t.text(e.text),e.icon&&(t.icon=e.icon),e.color&&(t.color=e.color),e.type&&t.classes.add("notification-"+e.type),e.timeout&&(e.timeout<0||0<e.timeout)&&!e.closeButton?t.closeButton=!1:(t.classes.add("has-close"),t.closeButton=!0),e.progressBar&&(t.progressBar=new Dt),t.on("click",function(e){-1!==e.target.className.indexOf(t.classPrefix+"close")&&t.close()})},renderHtml:function(){var e,t=this,n=t.classPrefix,i="",r="",o="";return t.icon&&(i='<i class="'+n+"ico "+n+"i-"+t.icon+'"></i>'),e=' style="max-width: '+t.maxWidth+"px;"+(t.color?"background-color: "+t.color+';"':'"'),t.closeButton&&(r='<button type="button" class="'+n+'close" aria-hidden="true">\xd7
 </button>'),t.progressBar&&(o=t.progressBar.renderHtml()),'<div id="'+t._id+'" class="'+t.classes+'"'+e+' role="presentation">'+i+'<div class="'+n+'notification-inner">'+t.state.get("text")+"</div>"+o+r+'<div style="clip: rect(1px, 1px, 1px, 1px);height: 1px;overflow: hidden;position: absolute;width: 1px;" aria-live="assertive" aria-relevant="additions" aria-atomic="true"></div></div>'},postRender:function(){var e=this;return u.setTimeout(function(){e.$el.addClass(e.classPrefix+"in"),Ot(e,e.state.get("text"))},100),e._super()},bindStates:function(){var t=this;return t.state.on("change:text",function(e){t.getEl().firstChild.innerHTML=e.value,Ot(t,e.value)}),t.progressBar&&(t.progressBar.bindStates(),t.progressBar.state.on("change:value",function(e){Ot(t,t.state.get("text"))})),t.
 _super()},close:function(){return this.fire("close").isDefaultPrevented()||this.remove(),this},repaint:function(){var e,t;e=this.getEl().style,t=this._layoutRect,e.left=t.x+"px",e.top=t.y+"px",e.zIndex=65534}});function Bt(o){var s=function(e){return e.inline?e.getElement():e.getContentAreaContainer()};return{open:function(e,t){var n,i=w.extend(e,{maxWidth:(n=s(o),Re.getSize(n).width)}),r=new At(i);return 0<(r.args=i).timeout&&(r.timer=setTimeout(function(){r.close(),t()},i.timeout)),r.on("close",function(){t()}),r.renderTo(),r},close:function(e){e.close()},reposition:function(e){K(e,function(e){e.moveTo(0,0)}),function(n){if(0<n.length){var e=n.slice(0,1)[0],t=s(o);e.moveRel(t,"tc-tc"),K(n,function(e,t){0<t&&e.moveRel(n[t-1].getEl(),"bc-tc")})}}(e)},getArgs:function(e){return e.args}}}var Lt=[],zt="";function It(e){var t,n=we("meta[name=viewport]")[0];!1!==fe.overrideViewPort&am
 p;&(n||((n=_.document.createElement("meta")).setAttribute("name","viewport"),_.document.getElementsByTagName("head")[0].appendChild(n)),(t=n.getAttribute("content"))&&void 0!==zt&&(zt=t),n.setAttribute("content",e?"width=device-width,initial-scale=1.0,user-scalable=0,minimum-scale=1.0,maximum-scale=1.0":zt))}function Ft(e,t){(function(){for(var e=0;e<Lt.length;e++)if(Lt[e]._fullscreen)return!0;return!1})()&&!1===t&&we([_.document.documentElement,_.document.body]).removeClass(e+"fullscreen")}var Ut=kt.extend({modal:!0,Defaults:{border:1,layout:"flex",containerCls:"panel",role:"dialog",callbacks:{submit:function(){this.fire("submit",{data:this.toJSON()})},close:function(){this.close()}}},init:function(e){var n=this;n._super(e),n.isRtl()&&n.classes.add("rtl"),n.classes.add("window"),n.bodyClasses.add(&
 quot;window-body"),n.state.set("fixed",!0),e.buttons&&(n.statusbar=new bt({layout:"flex",border:"1 0 0 0",spacing:3,padding:10,align:"center",pack:n.isRtl()?"start":"end",defaults:{type:"button"},items:e.buttons}),n.statusbar.classes.add("foot"),n.statusbar.parent(n)),n.on("click",function(e){var t=n.classPrefix+"close";(Re.hasClass(e.target,t)||Re.hasClass(e.target.parentNode,t))&&n.close()}),n.on("cancel",function(){n.close()}),n.on("move",function(e){e.control===n&&kt.hideAll()}),n.aria("describedby",n.describedBy||n._id+"-none"),n.aria("label",e.title),n._fullscreen=!1},recalc:function(){var e,t,n,i,r=this,o=r.statusbar;r._fullscreen&&(r.layoutRect(Re.getWindowSize()),r.layoutRect().contentH=r.layoutRect().innerH),r._super(),e=r.layoutRect(),r.settings.title&&!r._fullscreen&&(t=e
 .headerW)>e.w&&(n=e.x-Math.max(0,t/2),r.layoutRect({w:t,x:n}),i=!0),o&&(o.layoutRect({w:r.layoutRect().innerW}).recalc(),(t=o.layoutRect().minW+e.deltaW)>e.w&&(n=e.x-Math.max(0,t-e.w),r.layoutRect({w:t,x:n}),i=!0)),i&&r.recalc()},initLayoutRect:function(){var e,t=this,n=t._super(),i=0;if(t.settings.title&&!t._fullscreen){e=t.getEl("head");var r=Re.getSize(e);n.headerW=r.width,n.headerH=r.height,i+=n.headerH}t.statusbar&&(i+=t.statusbar.layoutRect().h),n.deltaH+=i,n.minH+=i,n.h+=i;var o=Re.getWindowSize();return n.x=t.settings.x||Math.max(0,o.w/2-n.w/2),n.y=t.settings.y||Math.max(0,o.h/2-n.h/2),n},renderHtml:function(){var e=this,t=e._layout,n=e._id,i=e.classPrefix,r=e.settings,o="",s="",a=r.html;return e.preRender(),t.preRender(e),r.title&&(o='<div id="'+n+'-head" class="'+i+'window-head"><div id="'+n+'-title" class="'+i+'title">'+e.encode(r
 .title)+'</div><div id="'+n+'-dragh" class="'+i+'dragh"></div><button type="button" class="'+i+'close" aria-hidden="true"><i class="mce-ico mce-i-remove"></i></button></div>'),r.url&&(a='<iframe src="'+r.url+'" tabindex="-1"></iframe>'),void 0===a&&(a=t.renderHtml(e)),e.statusbar&&(s=e.statusbar.renderHtml()),'<div id="'+n+'" class="'+e.classes+'" hidefocus="1"><div class="'+e.classPrefix+'reset" role="application">'+o+'<div id="'+n+'-body" class="'+e.bodyClasses+'">'+a+"</div>"+s+"</div></div>"},fullscreen:function(e){var n,t,i=this,r=_.document.documentElement,o=i.classPrefix;if(e!==i._fullscreen)if(we(_.window).on("resize",function(){var e;if(i._fullscreen)if(n)i._timer||(i._timer=u.se
 tTimeout(function(){var e=Re.getWindowSize();i.moveTo(0,0).resizeTo(e.w,e.h),i._timer=0},50));else{e=(new Date).getTime();var t=Re.getWindowSize();i.moveTo(0,0).resizeTo(t.w,t.h),50<(new Date).getTime()-e&&(n=!0)}}),t=i.layoutRect(),i._fullscreen=e){i._initial={x:t.x,y:t.y,w:t.w,h:t.h},i.borderBox=Pe("0"),i.getEl("head").style.display="none",t.deltaH-=t.headerH+2,we([r,_.document.body]).addClass(o+"fullscreen"),i.classes.add("fullscreen");var s=Re.getWindowSize();i.moveTo(0,0).resizeTo(s.w,s.h)}else i.borderBox=Pe(i.settings.border),i.getEl("head").style.display="",t.deltaH+=t.headerH,we([r,_.document.body]).removeClass(o+"fullscreen"),i.classes.remove("fullscreen"),i.moveTo(i._initial.x,i._initial.y).resizeTo(i._initial.w,i._initial.h);return i.reflow()},postRender:function(){var t,n=this;setTimeout(function(){n.classes.add("in"),n.fire("open")},0),n._super(),n.s
 tatusbar&&n.statusbar.postRender(),n.focus(),this.dragHelper=new ft(n._id+"-dragh",{start:function(){t={x:n.layoutRect().x,y:n.layoutRect().y}},drag:function(e){n.moveTo(t.x+e.deltaX,t.y+e.deltaY)}}),n.on("submit",function(e){e.isDefaultPrevented()||n.close()}),Lt.push(n),It(!0)},submit:function(){return this.fire("submit",{data:this.toJSON()})},remove:function(){var e,t=this;for(t.dragHelper.destroy(),t._super(),t.statusbar&&this.statusbar.remove(),Ft(t.classPrefix,!1),e=Lt.length;e--;)Lt[e]===t&&Lt.splice(e,1);It(0<Lt.length)},getContentWindow:function(){var e=this.getEl().getElementsByTagName("iframe")[0];return e?e.contentWindow:null}});!function(){if(!fe.desktop){var n={w:_.window.innerWidth,h:_.window.innerHeight};u.setInterval(function(){var e=_.window.innerWidth,t=_.window.innerHeight;n.w===e&&n.h===t||(n={w:e,h:t},we(_.window).trigger("resize"))},100)}we(_.window).on("resize",func
 tion(){var e,t,n=Re.getWindowSize();for(e=0;e<Lt.length;e++)t=Lt[e].layoutRect(),Lt[e].moveTo(Lt[e].settings.x||Math.max(0,n.w/2-t.w/2),Lt[e].settings.y||Math.max(0,n.h/2-t.h/2))})}();var Vt,Yt,$t,qt=Ut.extend({init:function(e){e={border:1,padding:20,layout:"flex",pack:"center",align:"center",containerCls:"panel",autoScroll:!0,buttons:{type:"button",text:"Ok",action:"ok"},items:{type:"label",multiline:!0,maxWidth:500,maxHeight:200}},this._super(e)},Statics:{OK:1,OK_CANCEL:2,YES_NO:3,YES_NO_CANCEL:4,msgBox:function(e){var t,i=e.callback||function(){};function n(e,t,n){return{type:"button",text:e,subtype:n?"primary":"",onClick:function(e){e.control.parents()[1].close(),i(t)}}}switch(e.buttons){case qt.OK_CANCEL:t=[n("Ok",!0,!0),n("Cancel",!1)];break;case qt.YES_NO:case qt.YES_NO_CANCEL:t=[n("Yes",1,!0),n("No",0)],e.buttons===qt.YES_NO
 _CANCEL&&t.push(n("Cancel",-1));break;default:t=[n("Ok",!0,!0)]}return new Ut({padding:20,x:e.x,y:e.y,minWidth:300,minHeight:100,layout:"flex",pack:"center",align:"center",buttons:t,title:e.title,role:"alertdialog",items:{type:"label",multiline:!0,maxWidth:500,maxHeight:200,text:e.text},onPostRender:function(){this.aria("describedby",this.items()[0]._id)},onClose:e.onClose,onCancel:function(){i(!1)}}).renderTo(_.document.body).reflow()},alert:function(e,t){return"string"==typeof e&&(e={text:e}),e.callback=t,qt.msgBox(e)},confirm:function(e,t){return"string"==typeof e&&(e={text:e}),e.callback=t,e.buttons=qt.OK_CANCEL,qt.msgBox(e)}}}),Xt=function(n){return{renderUI:function(e){return Nt(n,this,e)},resizeTo:function(e,t){return ce(n,e,t)},resizeBy:function(e,t){return de(n,e,t)},getNotificationManagerImpl:function(){return Bt(n)},getWindowManagerImpl:function(){re
 turn{open:function(n,e,t){var i;return n.title=n.title||" ",n.url=n.url||n.file,n.url&&(n.width=parseInt(n.width||320,10),n.height=parseInt(n.height||240,10)),n.body&&(n.items={defaults:n.defaults,type:n.bodyType||"form",items:n.body,data:n.data,callbacks:n.commands}),n.url||n.buttons||(n.buttons=[{text:"Ok",subtype:"primary",onclick:function(){i.find("form")[0].submit()}},{text:"Cancel",onclick:function(){i.close()}}]),(i=new Ut(n)).on("close",function(){t(i)}),n.data&&i.on("postRender",function(){this.find("*").each(function(e){var t=e.name();t in n.data&&e.value(n.data[t])})}),i.features=n||{},i.params=e||{},i=i.renderTo(_.document.body).reflow()},alert:function(e,t,n){var i;return(i=qt.alert(e,function(){t()})).on("close",function(){n(i)}),i},confirm:function(e,t,n){var i;return(i=qt.confirm(e,function(e){t(e)})).on("close",function(){n(i)
 }),i},close:function(e){e.close()},getParams:function(e){return e.params},setParams:function(e,t){e.params=t}}}}},jt=Me.extend({Defaults:{firstControlClass:"first",lastControlClass:"last"},init:function(e){this.settings=w.extend({},this.Defaults,e)},preRender:function(e){e.bodyClasses.add(this.settings.containerClass)},applyClasses:function(e){var t,n,i,r,o=this.settings;t=o.firstControlClass,n=o.lastControlClass,e.each(function(e){e.classes.remove(t).remove(n).add(o.controlClass),e.visible()&&(i||(i=e),r=e)}),i&&i.classes.add(t),r&&r.classes.add(n)},renderHtml:function(e){var t="";return this.applyClasses(e.items()),e.items().each(function(e){t+=e.renderHtml()}),t},recalc:function(){},postRender:function(){},isNative:function(){return!1}}),Jt=jt.extend({Defaults:{containerClass:"abs-layout",controlClass:"abs-layout-item"},recalc:function(e){e.items().filter(":visible").each(function(e){var t=e.setti
 ngs;e.layoutRect({x:t.x,y:t.y,w:t.w,h:t.h}),e.recalc&&e.recalc()})},renderHtml:function(e){return'<div id="'+e._id+'-absend" class="'+e.classPrefix+'abs-end"></div>'+this._super(e)}}),Gt=Wt.extend({Defaults:{classes:"widget btn",role:"button"},init:function(e){var t,n=this;n._super(e),e=n.settings,t=n.settings.size,n.on("click mousedown",function(e){e.preventDefault()}),n.on("touchstart",function(e){n.fire("click",e),e.preventDefault()}),e.subtype&&n.classes.add(e.subtype),t&&n.classes.add("btn-"+t),e.icon&&n.icon(e.icon)},icon:function(e){return arguments.length?(this.state.set("icon",e),this):this.state.get("icon")},repaint:function(){var e,t=this.getEl().firstChild;t&&((e=t.style).width=e.height="100%"),this._super()},renderHtml:function(){var e,t,n=this,i=n._id,r=n.classPrefix,o=n.state.get("icon"),s=n.state.g
 et("text"),a="",l=n.settings;return(e=l.image)?(o="none","string"!=typeof e&&(e=_.window.getSelection?e[0]:e[1]),e=" style=\"background-image: url('"+e+"')\""):e="",s&&(n.classes.add("btn-has-text"),a='<span class="'+r+'txt">'+n.encode(s)+"</span>"),o=o?r+"ico "+r+"i-"+o:"",t="boolean"==typeof l.active?' aria-pressed="'+l.active+'"':"",'<div id="'+i+'" class="'+n.classes+'" tabindex="-1"'+t+'><button id="'+i+'-button" role="presentation" type="button" tabindex="-1">'+(o?'<i class="'+o+'"'+e+"></i>":"")+a+"</button></div>"},bindStates:function(){var o=this,n=o.$,i=o.classPrefix+"txt";function s(e){var t=n("span."+i,o.getEl());
 e?(t[0]||(n("button:first",o.getEl()).append('<span class="'+i+'"></span>'),t=n("span."+i,o.getEl())),t.html(o.encode(e))):t.remove(),o.classes.toggle("btn-has-text",!!e)}return o.state.on("change:text",function(e){s(e.value)}),o.state.on("change:icon",function(e){var t=e.value,n=o.classPrefix;t=(o.settings.icon=t)?n+"ico "+n+"i-"+o.settings.icon:"";var i=o.getEl().firstChild,r=i.getElementsByTagName("i")[0];t?(r&&r===i.firstChild||(r=_.document.createElement("i"),i.insertBefore(r,i.firstChild)),r.className=t):r&&i.removeChild(r),s(o.state.get("text"))}),o._super()}}),Kt=Gt.extend({init:function(e){e=w.extend({text:"Browse...",multiple:!1,accept:null},e),this._super(e),this.classes.add("browsebutton"),e.multiple&&this.classes.add("multiple")},postRender:function(){var n=this,t=Re.create("input&q
 uot;,{type:"file",id:n._id+"-browse",accept:n.settings.accept});n._super(),we(t).on("change",function(e){var t=e.target.files;n.value=function(){return t.length?n.settings.multiple?t:t[0]:null},e.preventDefault(),t.length&&n.fire("change",e)}),we(t).on("click",function(e){e.stopPropagation()}),we(n.getEl("button")).on("click",function(e){e.stopPropagation(),t.click()}),n.getEl().appendChild(t)},remove:function(){we(this.getEl("button")).off(),we(this.getEl("input")).off(),this._super()}}),Zt=ct.extend({Defaults:{defaultType:"button",role:"group"},renderHtml:function(){var e=this,t=e._layout;return e.classes.add("btn-group"),e.preRender(),t.preRender(e),'<div id="'+e._id+'" class="'+e.classes+'"><div id="'+e._id+'-body">'+(e.settings.html||"")+t.renderHtml(e)+"</div></div>"}}),Qt=Wt.ex
 tend({Defaults:{classes:"checkbox",role:"checkbox",checked:!1},init:function(e){var t=this;t._super(e),t.on("click mousedown",function(e){e.preventDefault()}),t.on("click",function(e){e.preventDefault(),t.disabled()||t.checked(!t.checked())}),t.checked(t.settings.checked)},checked:function(e){return arguments.length?(this.state.set("checked",e),this):this.state.get("checked")},value:function(e){return arguments.length?this.checked(e):this.checked()},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix;return'<div id="'+t+'" class="'+e.classes+'" unselectable="on" aria-labelledby="'+t+'-al" tabindex="-1"><i class="'+n+"ico "+n+'i-checkbox"></i><span id="'+t+'-al" class="'+n+'label">'+e.encode(e.state.get("text"))+"</span></div>"},bindStates:function(){var o=this;function t(e){o
 .classes.toggle("checked",e),o.aria("checked",e)}return o.state.on("change:text",function(e){o.getEl("al").firstChild.data=o.translate(e.value)}),o.state.on("change:checked change:value",function(e){o.fire("change"),t(e.value)}),o.state.on("change:icon",function(e){var t=e.value,n=o.classPrefix;if(void 0===t)return o.settings.icon;t=(o.settings.icon=t)?n+"ico "+n+"i-"+o.settings.icon:"";var i=o.getEl().firstChild,r=i.getElementsByTagName("i")[0];t?(r&&r===i.firstChild||(r=_.document.createElement("i"),i.insertBefore(r,i.firstChild)),r.className=t):r&&i.removeChild(r)}),o.state.get("checked")&&t(!0),o._super()}}),en=tinymce.util.Tools.resolve("tinymce.util.VK"),tn=Wt.extend({init:function(i){var r=this;r._super(i),i=r.settings,r.classes.add("combobox"),r.subinput=!0,r.ariaTarget="inp",i.menu=i.menu||i.v
 alues,i.menu&&(i.icon="caret"),r.on("click",function(e){var t=e.target,n=r.getEl();if(we.contains(n,t)||t===n)for(;t&&t!==n;)t.id&&-1!==t.id.indexOf("-open")&&(r.fire("action"),i.menu&&(r.showMenu(),e.aria&&r.menu.items()[0].focus())),t=t.parentNode}),r.on("keydown",function(e){var t;13===e.keyCode&&"INPUT"===e.target.nodeName&&(e.preventDefault(),r.parents().reverse().each(function(e){if(e.toJSON)return t=e,!1}),r.fire("submit",{data:t.toJSON()}))}),r.on("keyup",function(e){if("INPUT"===e.target.nodeName){var t=r.state.get("value"),n=e.target.value;n!==t&&(r.state.set("value",n),r.fire("autocomplete",e))}}),r.on("mouseover",function(e){var t=r.tooltip().moveTo(-65535);if(r.statusLevel()&&-1!==e.target.className.indexOf(r.classPrefix+"status")){var n=r.statusMessage(
 )||"Ok",i=t.text(n).show().testMoveRel(e.target,["bc-tc","bc-tl","bc-tr"]);t.classes.toggle("tooltip-n","bc-tc"===i),t.classes.toggle("tooltip-nw","bc-tl"===i),t.classes.toggle("tooltip-ne","bc-tr"===i),t.moveRel(e.target,i)}})},statusLevel:function(e){return 0<arguments.length&&this.state.set("statusLevel",e),this.state.get("statusLevel")},statusMessage:function(e){return 0<arguments.length&&this.state.set("statusMessage",e),this.state.get("statusMessage")},showMenu:function(){var e,t=this,n=t.settings;t.menu||((e=n.menu||[]).length?e={type:"menu",items:e}:e.type=e.type||"menu",t.menu=b.create(e).parent(t).renderTo(t.getContainerElm()),t.fire("createmenu"),t.menu.reflow(),t.menu.on("cancel",function(e){e.control===t.menu&&t.focus()}),t.menu.on("show hide",function(e
 ){e.control.items().each(function(e){e.active(e.value()===t.value())})}).fire("show"),t.menu.on("select",function(e){t.value(e.control.value())}),t.on("focusin",function(e){"INPUT"===e.target.tagName.toUpperCase()&&t.menu.hide()}),t.aria("expanded",!0)),t.menu.show(),t.menu.layoutRect({w:t.layoutRect().w}),t.menu.moveRel(t.getEl(),t.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"])},focus:function(){this.getEl("inp").focus()},repaint:function(){var e,t,n=this,i=n.getEl(),r=n.getEl("open"),o=n.layoutRect(),s=0,a=i.firstChild;n.statusLevel()&&"none"!==n.statusLevel()&&(s=parseInt(Re.getRuntimeStyle(a,"padding-right"),10)-parseInt(Re.getRuntimeStyle(a,"padding-left"),10)),e=r?o.w-Re.getSize(r).width-10:o.w-10;var l=_.document;return l.all&&(!l.documentMode||l.documentMode<=8)&&(t=n.layoutRect().h-2+"px&quo
 t;),we(a).css({width:e-s,lineHeight:t}),n._super(),n},postRender:function(){var t=this;return we(this.getEl("inp")).on("change",function(e){t.state.set("value",e.target.value),t.fire("change",e)}),t._super()},renderHtml:function(){var e,t,n,i=this,r=i._id,o=i.settings,s=i.classPrefix,a=i.state.get("value")||"",l="",u="";return"spellcheck"in o&&(u+=' spellcheck="'+o.spellcheck+'"'),o.maxLength&&(u+=' maxlength="'+o.maxLength+'"'),o.size&&(u+=' size="'+o.size+'"'),o.subtype&&(u+=' type="'+o.subtype+'"'),n='<i id="'+r+'-status" class="mce-status mce-ico" style="display: none"></i>',i.disabled()&&(u+=' disabled="disabled"'),(e=o.icon)&&"caret"!==e&&(e=s+"ico "+s+"i-"+o.icon),t=i.state.get("text"),(e||t)&&(
 l='<div id="'+r+'-open" class="'+s+"btn "+s+'open" tabIndex="-1" role="button"><button id="'+r+'-action" type="button" hidefocus="1" tabindex="-1">'+("caret"!==e?'<i class="'+e+'"></i>':'<i class="'+s+'caret"></i>')+(t?(e?" ":"")+t:"")+"</button></div>",i.classes.add("has-open")),'<div id="'+r+'" class="'+i.classes+'"><input id="'+r+'-inp" class="'+s+'textbox" value="'+i.encode(a,!1)+'" hidefocus="1"'+u+' placeholder="'+i.encode(o.placeholder)+'" />'+n+l+"</div>"},value:function(e){return arguments.length?(this.state.set("value",e),this):(this.state.get("rendered")&&this.state.set("value",this.getEl("inp").value),this.state.g
 et("value"))},showAutoComplete:function(e,i){var r=this;if(0!==e.length){r.menu?r.menu.items().remove():r.menu=b.create({type:"menu",classes:"combobox-menu",layout:"flow"}).parent(r).renderTo(),w.each(e,function(e){var t,n;r.menu.add({text:e.title,url:e.previewUrl,match:i,classes:"menu-item-ellipsis",onclick:(t=e.value,n=e.title,function(){r.fire("selectitem",{title:n,value:t})})})}),r.menu.renderNew(),r.hideMenu(),r.menu.on("cancel",function(e){e.control.parent()===r.menu&&(e.stopPropagation(),r.focus(),r.hideMenu())}),r.menu.on("select",function(){r.focus()});var t=r.layoutRect().w;r.menu.layoutRect({w:t,minW:0,maxW:t}),r.menu.repaint(),r.menu.reflow(),r.menu.show(),r.menu.moveRel(r.getEl(),r.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"])}else r.hideMenu()},hideMenu:function(){this.menu&&this.menu.hide()},bindStates:function(){var r=this;r.state.on(
 "change:value",function(e){r.getEl("inp").value!==e.value&&(r.getEl("inp").value=e.value)}),r.state.on("change:disabled",function(e){r.getEl("inp").disabled=e.value}),r.state.on("change:statusLevel",function(e){var t=r.getEl("status"),n=r.classPrefix,i=e.value;Re.css(t,"display","none"===i?"none":""),Re.toggleClass(t,n+"i-checkmark","ok"===i),Re.toggleClass(t,n+"i-warning","warn"===i),Re.toggleClass(t,n+"i-error","error"===i),r.classes.toggle("has-status","none"!==i),r.repaint()}),Re.on(r.getEl("status"),"mouseleave",function(){r.tooltip().hide()}),r.on("cancel",function(e){r.menu&&r.menu.visible()&&(e.stopPropagation(),r.hideMenu())});var n=function(e,t){t&&0<t.items().length&&t.items().eq(e)[0].focus()};return r.on("k
 eydown",function(e){var t=e.keyCode;"INPUT"===e.target.nodeName&&(t===en.DOWN?(e.preventDefault(),r.fire("autocomplete"),n(0,r.menu)):t===en.UP&&(e.preventDefault(),n(-1,r.menu)))}),r._super()},remove:function(){we(this.getEl("inp")).off(),this.menu&&this.menu.remove(),this._super()}}),nn=tn.extend({init:function(e){var t=this;e.spellcheck=!1,e.onaction&&(e.icon="none"),t._super(e),t.classes.add("colorbox"),t.on("change keyup postrender",function(){t.repaintColor(t.value())})},repaintColor:function(e){var t=this.getEl("open"),n=t?t.getElementsByTagName("i")[0]:null;if(n)try{n.style.background=e}catch(i){}},bindStates:function(){var t=this;return t.state.on("change:value",function(e){t.state.get("rendered")&&t.repaintColor(e.value)}),t._super()}}),rn=Gt.extend({showPanel:function(){var t=this,e=t.settings;if(t.classes.add("opened")
 ,t.panel)t.panel.show();else{var n=e.panel;n.type&&(n={layout:"grid",items:n}),n.role=n.role||"dialog",n.popover=!0,n.autohide=!0,n.ariaRoot=!0,t.panel=new kt(n).on("hide",function(){t.classes.remove("opened")}).on("cancel",function(e){e.stopPropagation(),t.focus(),t.hidePanel()}).parent(t).renderTo(t.getContainerElm()),t.panel.fire("show"),t.panel.reflow()}var i=t.panel.testMoveRel(t.getEl(),e.popoverAlign||(t.isRtl()?["bc-tc","bc-tl","bc-tr"]:["bc-tc","bc-tr","bc-tl","tc-bc","tc-br","tc-bl"]));t.panel.classes.toggle("start","l"===i.substr(-1)),t.panel.classes.toggle("end","r"===i.substr(-1));var r="t"===i.substr(0,1);t.panel.classes.toggle("bottom",!r),t.panel.classes.toggle("top",r),t.panel.moveRel(t.getEl(),i)},hidePanel:function(){this.panel&&thi
 s.panel.hide()},postRender:function(){var t=this;return t.aria("haspopup",!0),t.on("click",function(e){e.control===t&&(t.panel&&t.panel.visible()?t.hidePanel():(t.showPanel(),t.panel.focus(!!e.aria)))}),t._super()},remove:function(){return this.panel&&(this.panel.remove(),this.panel=null),this._super()}}),on=v.DOM,sn=rn.extend({init:function(e){this._super(e),this.classes.add("splitbtn"),this.classes.add("colorbutton")},color:function(e){return e?(this._color=e,this.getEl("preview").style.backgroundColor=e,this):this._color},resetColor:function(){return this._color=null,this.getEl("preview").style.backgroundColor=null,this},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix,i=e.state.get("text"),r=e.settings.icon?n+"ico "+n+"i-"+e.settings.icon:"",o=e.settings.image?" style=\"background-image: url('"+e.settings.image+"')\"":&
 quot;",s="";return i&&(e.classes.add("btn-has-text"),s='<span class="'+n+'txt">'+e.encode(i)+"</span>"),'<div id="'+t+'" class="'+e.classes+'" role="button" tabindex="-1" aria-haspopup="true"><button role="presentation" hidefocus="1" type="button" tabindex="-1">'+(r?'<i class="'+r+'"'+o+"></i>":"")+'<span id="'+t+'-preview" class="'+n+'preview"></span>'+s+'</button><button type="button" class="'+n+'open" hidefocus="1" tabindex="-1"> <i class="'+n+'caret"></i></button></div>'},postRender:function(){var t=this,n=t.settings.onclick;return t.on("click",function(e){e.aria&&"down"===e.aria.key||e.control!==t||on.getParent(e.target,".&q
 uot;+t.classPrefix+"open")||(e.stopImmediatePropagation(),n.call(t,e))}),delete t.settings.onclick,t._super()}}),an=tinymce.util.Tools.resolve("tinymce.util.Color"),ln=Wt.extend({Defaults:{classes:"widget colorpicker"},init:function(e){this._super(e)},postRender:function(){var n,i,r,o,s,a=this,l=a.color();function u(e,t){var n,i,r=Re.getPos(e);return n=t.pageX-r.x,i=t.pageY-r.y,{x:n=Math.max(0,Math.min(n/e.clientWidth,1)),y:i=Math.max(0,Math.min(i/e.clientHeight,1))}}function c(e,t){var n=(360-e.h)/360;Re.css(r,{top:100*n+"%"}),t||Re.css(s,{left:e.s+"%",top:100-e.v+"%"}),o.style.background=an({s:100,v:100,h:e.h}).toHex(),a.color().parse({s:e.s,v:e.v,h:e.h})}function e(e){var t;t=u(o,e),n.s=100*t.x,n.v=100*(1-t.y),c(n),a.fire("change")}function t(e){var t;t=u(i,e),(n=l.toHsv()).h=360*(1-t.y),c(n,!0),a.fire("change")}i=a.getEl("h"),r=a.getEl("hp"),o=a.getEl("sv"),s=a.getEl(&qu
 ot;svp"),a._repaint=function(){c(n=l.toHsv())},a._super(),a._svdraghelper=new ft(a._id+"-sv",{start:e,drag:e}),a._hdraghelper=new ft(a._id+"-h",{start:t,drag:t}),a._repaint()},rgb:function(){return this.color().toRgb()},value:function(e){if(!arguments.length)return this.color().toHex();this.color().parse(e),this._rendered&&this._repaint()},color:function(){return this._color||(this._color=an()),this._color},renderHtml:function(){var e,t=this._id,o=this.classPrefix,s="#ff0000,#ff0080,#ff00ff,#8000ff,#0000ff,#0080ff,#00ffff,#00ff80,#00ff00,#80ff00,#ffff00,#ff8000,#ff0000";return e='<div id="'+t+'-h" class="'+o+'colorpicker-h" style="background: -ms-linear-gradient(top,'+s+");background: linear-gradient(to bottom,"+s+');">'+function(){var e,t,n,i,r="";for(n="filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=",e=0,t=(i=s.split(",")).length-1
 ;e<t;e++)r+='<div class="'+o+'colorpicker-h-chunk" style="height:'+100/t+"%;"+n+i[e]+",endColorstr="+i[e+1]+");-ms-"+n+i[e]+",endColorstr="+i[e+1]+')"></div>';return r}()+'<div id="'+t+'-hp" class="'+o+'colorpicker-h-marker"></div></div>','<div id="'+t+'" class="'+this.classes+'"><div id="'+t+'-sv" class="'+o+'colorpicker-sv"><div class="'+o+'colorpicker-overlay1"><div class="'+o+'colorpicker-overlay2"><div id="'+t+'-svp" class="'+o+'colorpicker-selector1"><div class="'+o+'colorpicker-selector2"></div></div></div></div></div>'+e+"</div>"}}),un=Wt.extend({init:function(e){e=w.extend({height:100,text:"Drop an image here",multiple:!1,accept:null},e),this._super(e),this.classes.add("dropzone&
 quot;),e.multiple&&this.classes.add("multiple")},renderHtml:function(){var e,t,n=this.settings;return e={id:this._id,hidefocus:"1"},t=Re.create("div",e,"<span>"+this.translate(n.text)+"</span>"),n.height&&Re.css(t,"height",n.height+"px"),n.width&&Re.css(t,"width",n.width+"px"),t.className=this.classes,t.outerHTML},postRender:function(){var i=this,e=function(e){e.preventDefault(),i.classes.toggle("dragenter"),i.getEl().className=i.classes};i._super(),i.$el.on("dragover",function(e){e.preventDefault()}),i.$el.on("dragenter",e),i.$el.on("dragleave",e),i.$el.on("drop",function(e){if(e.preventDefault(),!i.state.get("disabled")){var t=function(e){var t=i.settings.accept;if("string"!=typeof t)return e;var n=new RegExp("("+t.split(/\s*,\s*/).join("|")+")$","i&quot
 ;);return w.grep(e,function(e){return n.test(e.name)})}(e.dataTransfer.files);i.value=function(){return t.length?i.settings.multiple?t:t[0]:null},t.length&&i.fire("change",e)}})},remove:function(){this.$el.off(),this._super()}}),cn=Wt.extend({init:function(e){var n=this;e.delimiter||(e.delimiter="\xbb"),n._super(e),n.classes.add("path"),n.canFocus=!0,n.on("click",function(e){var t;(t=e.target.getAttribute("data-index"))&&n.fire("select",{value:n.row()[t],index:t})}),n.row(n.settings.row)},focus:function(){return this.getEl().firstChild.focus(),this},row:function(e){return arguments.length?(this.state.set("row",e),this):this.state.get("row")},renderHtml:function(){return'<div id="'+this._id+'" class="'+this.classes+'">'+this._getDataPathHtml(this.state.get("row"))+"</div>"},bindStates:function(){var t=this;return t.state.on("change:r
 ow",function(e){t.innerHtml(t._getDataPathHtml(e.value))}),t._super()},_getDataPathHtml:function(e){var t,n,i=e||[],r="",o=this.classPrefix;for(t=0,n=i.length;t<n;t++)r+=(0<t?'<div class="'+o+'divider" aria-hidden="true"> '+this.settings.delimiter+" </div>":"")+'<div role="button" class="'+o+"path-item"+(t===n-1?" "+o+"last":"")+'" data-index="'+t+'" tabindex="-1" id="'+this._id+"-"+t+'" aria-level="'+(t+1)+'">'+i[t].name+"</div>";return r||(r='<div class="'+o+'path-item">\xa0</div>'),r}}),dn=cn.extend({postRender:function(){var o=this,s=o.settings.editor;function a(e){if(1===e.nodeType){if("BR"===e.nodeName||e.getAttribute("data-mce-bogus"))return!0;if("bookmark"===e.getAttribute("data-mce-type"))return!0}return!1}retur
 n!1!==s.settings.elementpath&&(o.on("select",function(e){s.focus(),s.selection.select(this.row()[e.index].element),s.nodeChanged()}),s.on("nodeChange",function(e){for(var t=[],n=e.parents,i=n.length;i--;)if(1===n[i].nodeType&&!a(n[i])){var r=s.fire("ResolveName",{name:n[i].nodeName.toLowerCase(),target:n[i]});if(r.isDefaultPrevented()||t.push({name:r.name,element:n[i]}),r.isPropagationStopped())break}o.row(t)})),o._super()}}),fn=ct.extend({Defaults:{layout:"flex",align:"center",defaults:{flex:1}},renderHtml:function(){var e=this,t=e._layout,n=e.classPrefix;return e.classes.add("formitem"),t.preRender(e),'<div id="'+e._id+'" class="'+e.classes+'" hidefocus="1" tabindex="-1">'+(e.settings.title?'<div id="'+e._id+'-title" class="'+n+'title">'+e.settings.title+"</div>":"")+'<div id="'+e._id+'-body" clas
 s="'+e.bodyClasses+'">'+(e.settings.html||"")+t.renderHtml(e)+"</div></div>"}}),hn=ct.extend({Defaults:{containerCls:"form",layout:"flex",direction:"column",align:"stretch",flex:1,padding:15,labelGap:30,spacing:10,callbacks:{submit:function(){this.submit()}}},preRender:function(){var i=this,e=i.items();i.settings.formItemDefaults||(i.settings.formItemDefaults={layout:"flex",autoResize:"overflow",defaults:{flex:1}}),e.each(function(e){var t,n=e.settings.label;n&&((t=new fn(w.extend({items:{type:"label",id:e._id+"-l",text:n,flex:0,forId:e._id,disabled:e.disabled()}},i.settings.formItemDefaults))).type="formitem",e.aria("labelledby",e._id+"-l"),"undefined"==typeof e.settings.flex&&(e.settings.flex=1),i.replace(e,t),t.add(e))})},submit:function(){return this.fire("submit",{data:this.toJSON()})},post
 Render:function(){this._super(),this.fromJSON(this.settings.data)},bindStates:function(){var n=this;function e(){var e,t,i=0,r=[];if(!1!==n.settings.labelGapCalc)for(("children"===n.settings.labelGapCalc?n.find("formitem"):n.items()).filter("formitem").each(function(e){var t=e.items()[0],n=t.getEl().clientWidth;i=i<n?n:i,r.push(t)}),t=n.settings.labelGap||0,e=r.length;e--;)r[e].settings.minWidth=i+t}n._super(),n.on("show",e),e()}}),mn=hn.extend({Defaults:{containerCls:"fieldset",layout:"flex",direction:"column",align:"stretch",flex:1,padding:"25 15 5 15",labelGap:30,spacing:10,border:1},renderHtml:function(){var e=this,t=e._layout,n=e.classPrefix;return e.preRender(),t.preRender(e),'<fieldset id="'+e._id+'" class="'+e.classes+'" hidefocus="1" tabindex="-1">'+(e.settings.title?'<legend id="'+e._id+'-title" class="'+n+'fieldset-ti
 tle">'+e.settings.title+"</legend>":"")+'<div id="'+e._id+'-body" class="'+e.bodyClasses+'">'+(e.settings.html||"")+t.renderHtml(e)+"</div></fieldset>"}}),gn=0,pn=function(e){if(null===e||e===undefined)throw new Error("Node cannot be null or undefined");return{dom:H(e)}},vn={fromHtml:function(e,t){var n=(t||_.document).createElement("div");if(n.innerHTML=e,!n.hasChildNodes()||1<n.childNodes.length)throw _.console.error("HTML does not have a single root node",e),new Error("HTML must have a single root node");return pn(n.childNodes[0])},fromTag:function(e,t){var n=(t||_.document).createElement(e);return pn(n)},fromText:function(e,t){var n=(t||_.document).createTextNode(e);return pn(n)},fromDom:pn,fromPoint:function(e,t,n){var i=e.dom();return D.from(i.elementFromPoint(t,n)).map(pn)}},bn=(_.Node.ATTRIBUTE_NODE,_.Node.CDATA_SECTION_NODE,_.Node.COMMENT_NO
 DE,_.Node.DOCUMENT_NODE),yn=(_.Node.DOCUMENT_TYPE_NODE,_.Node.DOCUMENT_FRAGMENT_NODE,_.Node.ELEMENT_NODE),xn=(_.Node.TEXT_NODE,_.Node.PROCESSING_INSTRUCTION_NODE,_.Node.ENTITY_REFERENCE_NODE,_.Node.ENTITY_NODE,_.Node.NOTATION_NODE,"undefined"!=typeof _.window?_.window:Function("return this;")(),function(e,t){var n=function(e,t){for(var n=0;n<e.length;n++){var i=e[n];if(i.test(t))return i}return undefined}(e,t);if(!n)return{major:0,minor:0};var i=function(e){return Number(t.replace(n,"$"+e))};return _n(i(1),i(2))}),wn=function(){return _n(0,0)},_n=function(e,t){return{major:e,minor:t}},Rn={nu:_n,detect:function(e,t){var n=String(t).toLowerCase();return 0===e.length?wn():xn(e,n)},unknown:wn},Cn="Firefox",En=function(e,t){return function(){return t===e}},kn=function(e){var t=e.current;return{current:t,version:e.version,isEdge:En("Edge",t),isChrome:En("Chrome",t),isIE:En("IE",t),isOpera:En("Opera",t),isFi
 refox:En(Cn,t),isSafari:En("Safari",t)}},Hn={unknown:function(){return kn({current:undefined,version:Rn.unknown()})},nu:kn,edge:H("Edge"),chrome:H("Chrome"),ie:H("IE"),opera:H("Opera"),firefox:H(Cn),safari:H("Safari")},Sn="Windows",Tn="Android",Mn="Solaris",Nn="FreeBSD",Pn=function(e,t){return function(){return t===e}},Wn=function(e){var t=e.current;return{current:t,version:e.version,isWindows:Pn(Sn,t),isiOS:Pn("iOS",t),isAndroid:Pn(Tn,t),isOSX:Pn("OSX",t),isLinux:Pn("Linux",t),isSolaris:Pn(Mn,t),isFreeBSD:Pn(Nn,t)}},Dn={unknown:function(){return Wn({current:undefined,version:Rn.unknown()})},nu:Wn,windows:H(Sn),ios:H("iOS"),android:H(Tn),linux:H("Linux"),osx:H("OSX"),solaris:H(Mn),freebsd:H(Nn)},On=function(e,t){var n=String(t).toLowerCase();return function(e,t){for(var n=0,i=e.length;n<i;n++){var r=e[n];if(t(r,n,e))return
  D.some(r)}return D.none()}(e,function(e){return e.search(n)})},An=function(e,n){return On(e,n).map(function(e){var t=Rn.detect(e.versionRegexes,n);return{current:e.name,version:t}})},Bn=function(e,n){return On(e,n).map(function(e){var t=Rn.detect(e.versionRegexes,n);return{current:e.name,version:t}})},Ln=function(e,t){return-1!==e.indexOf(t)},zn=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,In=function(t){return function(e){return Ln(e,t)}},Fn=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(e){return Ln(e,"edge/")&&Ln(e,"chrome")&&Ln(e,"safari")&&Ln(e,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,zn],search:function(e){return Ln(e,"chrome")&&!Ln(e,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(e){return Ln(e,"msie")||L
 n(e,"trident")}},{name:"Opera",versionRegexes:[zn,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:In("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:In("firefox")},{name:"Safari",versionRegexes:[zn,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(e){return(Ln(e,"safari")||Ln(e,"mobile/"))&&Ln(e,"applewebkit")}}],Un=[{name:"Windows",search:In("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(e){return Ln(e,"iphone")||Ln(e,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:In("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:In("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{n
 ame:"Linux",search:In("linux"),versionRegexes:[]},{name:"Solaris",search:In("sunos"),versionRegexes:[]},{name:"FreeBSD",search:In("freebsd"),versionRegexes:[]}],Vn={browsers:H(Fn),oses:H(Un)},Yn=function(e){var t,n,i,r,o,s,a,l,u,c,d,f=Vn.browsers(),h=Vn.oses(),m=An(f,e).fold(Hn.unknown,Hn.nu),g=Bn(h,e).fold(Dn.unknown,Dn.nu);return{browser:m,os:g,deviceType:(n=m,i=e,r=(t=g).isiOS()&&!0===/ipad/i.test(i),o=t.isiOS()&&!r,s=t.isAndroid()&&3===t.version.major,a=t.isAndroid()&&4===t.version.major,l=r||s||a&&!0===/mobile/i.test(i),u=t.isiOS()||t.isAndroid(),c=u&&!l,d=n.isSafari()&&t.isiOS()&&!1===/safari/i.test(i),{isiPad:H(r),isiPhone:H(o),isTablet:H(l),isPhone:H(c),isTouch:H(u),isAndroid:t.isAndroid,isiOS:t.isiOS,isWebView:H(d)})}},$n=($t=!(Vt=function(){var e=_.navigator.userAgent;return Yn(e)}),function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[
 t];return $t||($t=!0,Yt=Vt.apply(null,e)),Yt}),qn=yn,Xn=bn,jn=function(e){return e.nodeType!==qn&&e.nodeType!==Xn||0===e.childElementCount},Jn=($n().browser.isIE(),function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t]}("element","offset"),w.trim),Gn=function(t){return function(e){if(e&&1===e.nodeType){if(e.contentEditable===t)return!0;if(e.getAttribute("data-mce-contenteditable")===t)return!0}return!1}},Kn=Gn("true"),Zn=Gn("false"),Qn=function(e,t,n,i,r){return{type:e,title:t,url:n,level:i,attach:r}},ei=function(e){return e.innerText||e.textContent},ti=function(e){return e.id?e.id:(t="h",n=(new Date).getTime(),t+"_"+Math.floor(1e9*Math.random())+ ++gn+String(n));var t,n},ni=function(e){return(t=e)&&"A"===t.nodeName&&(t.id||t.name)&&ri(e);var t},ii=function(e){return e&&/^(H[1-6])$/.test(e.nodeName)},ri=function(e){return function(e){for(;e
 =e.parentNode;){var t=e.contentEditable;if(t&&"inherit"!==t)return Kn(e)}return!1}(e)&&!Zn(e)},oi=function(e){return ii(e)&&ri(e)},si=function(e){var t,n=ti(e);return Qn("header",ei(e),"#"+n,ii(t=e)?parseInt(t.nodeName.substr(1),10):0,function(){e.id=n})},ai=function(e){var t=e.id||e.name,n=ei(e);return Qn("anchor",n||"#"+t,"#"+t,0,k)},li=function(e){var t,n,i,r,o,s;return t="h1,h2,h3,h4,h5,h6,a:not([href])",n=e,G(($n().browser.isIE(),function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t]}("element","offset"),i=vn.fromDom(n),r=t,s=(o=i)===undefined?_.document:o.dom(),jn(s)?[]:G(s.querySelectorAll(r),vn.fromDom)),function(e){return e.dom()})},ui=function(e){return 0<Jn(e.title).length},ci=function(e){var t,n=li(e);return Z((t=n,G(Z(t,oi),si)).concat(G(Z(n,ni),ai)),ui)},di={},fi=function(e){return{title:e.title,value:{title:{raw:e.title},url:e.url,attac
 h:e.attach}}},hi=function(e,t){return{title:e,value:{title:e,url:t,attach:k}}},mi=function(e,t,n){var i=t in e?e[t]:n;return!1===i?null:i},gi=function(e,i,r,t){var n,o,s,a,l,u,c={title:"-"},d=function(e){var t=e.hasOwnProperty(r)?e[r]:[],n=Z(t,function(e){return t=e,!J(i,function(e){return e.url===t});var t});return w.map(n,function(e){return{title:e,value:{title:e,url:e,attach:k}}})},f=function(t){var e,n=Z(i,function(e){return e.type===t});return e=n,w.map(e,fi)};return!1===t.typeahead_urls?[]:"file"===r?(n=[vi(e,d(di)),vi(e,f("header")),vi(e,(a=f("anchor"),l=mi(t,"anchor_top","#top"),u=mi(t,"anchor_bottom","#bottom"),null!==l&&a.unshift(hi("<top>",l)),null!==u&&a.push(hi("<bottom>",u)),a))],o=function(e,t){return 0===e.length||0===t.length?e.concat(t):e.concat(c,t)},s=[],K(n,function(e){s=o(s,e)}),s):vi(e,d(di))},pi=function(e,t){var n,i,r,o=di[t];/^http
 s?/.test(e)&&(o?(n=o,i=e,r=j(n,i),-1===r?D.none():D.some(r)).isNone()&&(di[t]=o.slice(0,5).concat(e)):di[t]=[e])},vi=function(e,t){var n=e.toLowerCase(),i=w.grep(t,function(e){return-1!==e.title.toLowerCase().indexOf(n)});return 1===i.length&&i[0].title===e?[]:i},bi=function(o,e,n){var i=e.filepicker_validator_handler;i&&o.state.on("change:value",function(e){var t;0!==(t=e.value).length?i({url:t,type:n},function(e){var t,n,i,r=(n=(t=e).status,i=t.message,"valid"===n?{status:"ok",message:i}:"unknown"===n?{status:"warn",message:i}:"invalid"===n?{status:"warn",message:i}:{status:"none",message:""});o.statusMessage(r.message),o.statusLevel(r.status)}):o.statusLevel("none")})},yi=tn.extend({Statics:{clearHistory:function(){di={}}},init:function(e){var t,n,i,r,o,s,a,l,u=this,c=window.tinymce?window.tinymce.activeEditor:h.activeEditor,d=c.settings,f=e.filetype
 ;e.spellcheck=!1,(i=d.file_picker_types||d.file_browser_callback_types)&&(i=w.makeMap(i,/[, ]/)),i&&!i[f]||(!(n=d.file_picker_callback)||i&&!i[f]?!(n=d.file_browser_callback)||i&&!i[f]||(t=function(){n(u.getEl("inp").id,u.value(),f,window)}):t=function(){var e=u.fire("beforecall").meta;e=w.extend({filetype:f},e),n.call(c,function(e,t){u.value(e).fire("change",{meta:t})},u.value(),e)}),t&&(e.icon="browse",e.onaction=t),u._super(e),u.classes.add("filepicker"),r=u,o=d,s=c.getBody(),a=f,l=function(e){var t=ci(s),n=gi(e,t,a,o);r.showAutoComplete(n,e)},r.on("autocomplete",function(){l(r.value())}),r.on("selectitem",function(e){var t=e.value;r.value(t.url);var n,i=(n=t.title).raw?n.raw:n;"image"===a?r.fire("change",{meta:{alt:i,attach:t.attach}}):r.fire("change",{meta:{text:i,attach:t.attach}}),r.focus()}),r.on("click",function(e){0===r.value
 ().length&&"INPUT"===e.target.nodeName&&l("")}),r.on("PostRender",function(){r.getRoot().on("submit",function(e){e.isDefaultPrevented()||pi(r.value(),a)})}),bi(u,d,f)}}),xi=Jt.extend({recalc:function(e){var t=e.layoutRect(),n=e.paddingBox;e.items().filter(":visible").each(function(e){e.layoutRect({x:n.left,y:n.top,w:t.innerW-n.right-n.left,h:t.innerH-n.top-n.bottom}),e.recalc&&e.recalc()})}}),wi=Jt.extend({recalc:function(e){var t,n,i,r,o,s,a,l,u,c,d,f,h,m,g,p,v,b,y,x,w,_,R,C,E,k,H,S,T,M,N,P,W,D,O,A,B,L=[],z=Math.max,I=Math.min;for(i=e.items().filter(":visible"),r=e.layoutRect(),o=e.paddingBox,s=e.settings,f=e.isRtl()?s.direction||"row-reversed":s.direction,a=s.align,l=e.isRtl()?s.pack||"end":s.pack,u=s.spacing||0,"row-reversed"!==f&&"column-reverse"!==f||(i=i.set(i.toArray().reverse()),f=f.split("-")[0]),"column"===f?(C="y&quot
 ;,_="h",R="minH",E="maxH",H="innerH",k="top",S="deltaH",T="contentH",D="left",P="w",M="x",N="innerW",W="minW",O="right",A="deltaW",B="contentW"):(C="x",_="w",R="minW",E="maxW",H="innerW",k="left",S="deltaW",T="contentW",D="top",P="h",M="y",N="innerH",W="minH",O="bottom",A="deltaH",B="contentH"),d=r[H]-o[k]-o[k],w=c=0,t=0,n=i.length;t<n;t++)m=(h=i[t]).layoutRect(),d-=t<n-1?u:0,0<(g=h.settings.flex)&&(c+=g,m[E]&&L.push(h),m.flex=g),d-=m[R],w<(p=o[D]+m[W]+o[O])&&(w=p);if((y={})[R]=d<0?r[R]-d+r[S]:r[H]-d+r[S],y[W]=w+r[A],y[T]=r[H]-d,y[B]=w,y.minW=I(y.minW,r.maxW),y.minH=I(y.minH,r.maxH),y.minW=z(y.minW,r.startMinWidth),y.minH=z(y.minH,r.startMi
 nHeight),!r.autoResize||y.minW===r.minW&&y.minH===r.minH){for(b=d/c,t=0,n=L.length;t<n;t++)(v=(m=(h=L[t]).layoutRect())[E])<(p=m[R]+m.flex*b)?(d-=m[E]-m[R],c-=m.flex,m.flex=0,m.maxFlexSize=v):m.maxFlexSize=0;for(b=d/c,x=o[k],y={},0===c&&("end"===l?x=d+o[k]:"center"===l?(x=Math.round(r[H]/2-(r[H]-d)/2)+o[k])<0&&(x=o[k]):"justify"===l&&(x=o[k],u=Math.floor(d/(i.length-1)))),y[M]=o[D],t=0,n=i.length;t<n;t++)p=(m=(h=i[t]).layoutRect()).maxFlexSize||m[R],"center"===a?y[M]=Math.round(r[N]/2-m[P]/2):"stretch"===a?(y[P]=z(m[W]||0,r[N]-o[D]-o[O]),y[M]=o[D]):"end"===a&&(y[M]=r[N]-m[P]-o.top),0<m.flex&&(p+=m.flex*b),y[_]=p,y[C]=x,h.layoutRect(y),h.recalc&&h.recalc(),x+=p+u}else if(y.w=y.minW,y.h=y.minH,e.layoutRect(y),this.recalc(e),null===e._lastRect){var F=e.parent();F&&(F._lastRect=null,F.recalc())}}}),_i=jt.extend({Defaults:{containerClass:"flow-la
 yout",controlClass:"flow-layout-item",endClass:"break"},recalc:function(e){e.items().filter(":visible").each(function(e){e.recalc&&e.recalc()})},isNative:function(){return!0}}),Ri=function(e,t){return n=t,r=(i=e)===undefined?_.document:i.dom(),jn(r)?D.none():D.from(r.querySelector(n)).map(vn.fromDom);var n,i,r},Ci=function(e,t){return function(){e.execCommand("mceToggleFormat",!1,t)}},Ei=function(e,t,n){var i=function(e){n(e,t)};e.formatter?e.formatter.formatChanged(t,i):e.on("init",function(){e.formatter.formatChanged(t,i)})},ki=function(e,n){return function(t){Ei(e,n,function(e){t.control.active(e)})}},Hi=function(i){var t=["alignleft","aligncenter","alignright","alignjustify"],r="alignleft",e=[{text:"Left",icon:"alignleft",onclick:Ci(i,"alignleft")},{text:"Center",icon:"aligncenter",onclick:Ci(i,"aligncenter")
 },{text:"Right",icon:"alignright",onclick:Ci(i,"alignright")},{text:"Justify",icon:"alignjustify",onclick:Ci(i,"alignjustify")}];i.addMenuItem("align",{text:"Align",menu:e}),i.addButton("align",{type:"menubutton",icon:r,menu:e,onShowMenu:function(e){var n=e.control.menu;w.each(t,function(t,e){n.items().eq(e).each(function(e){return e.active(i.formatter.match(t))})})},onPostRender:function(e){var n=e.control;w.each(t,function(t,e){Ei(i,t,function(e){n.icon(r),e&&n.icon(t)})})}}),w.each({alignleft:["Align left","JustifyLeft"],aligncenter:["Align center","JustifyCenter"],alignright:["Align right","JustifyRight"],alignjustify:["Justify","JustifyFull"],alignnone:["No alignment","JustifyNone"]},function(e,t){i.addButton(t,{active:!1,tooltip:e[0],cmd:e[1],onPostRender:ki(i,t)})})},Si=f
 unction(e){return e?e.split(",")[0]:""},Ti=function(l,u){return function(){var a=this;a.state.set("value",null),l.on("init nodeChange",function(e){var t,n,i,r,o=l.queryCommandValue("FontName"),s=(t=u,r=(n=o)?n.toLowerCase():"",w.each(t,function(e){e.value.toLowerCase()===r&&(i=e.value)}),w.each(t,function(e){i||Si(e.value).toLowerCase()!==Si(r).toLowerCase()||(i=e.value)}),i);a.value(s||null),!s&&o&&a.text(Si(o))})}},Mi=function(n){n.addButton("fontselect",function(){var e,t=(e=function(e){for(var t=(e=e.replace(/;$/,"").split(";")).length;t--;)e[t]=e[t].split("=");return e}(n.settings.font_formats||"Andale Mono=andale mono,monospace;Arial=arial,helvetica,sans-serif;Arial Black=arial black,sans-serif;Book Antiqua=book antiqua,palatino,serif;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,palatino,serif;Helve
 tica=helvetica,arial,sans-serif;Impact=impact,sans-serif;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco,monospace;Times New Roman=times new roman,times,serif;Trebuchet MS=trebuchet ms,geneva,sans-serif;Verdana=verdana,geneva,sans-serif;Webdings=webdings;Wingdings=wingdings,zapf dingbats"),w.map(e,function(e){return{text:{raw:e[0]},value:e[1],textStyle:-1===e[1].indexOf("dings")?"font-family:"+e[1]:""}}));return{type:"listbox",text:"Font Family",tooltip:"Font Family",values:t,fixedWidth:!0,onPostRender:Ti(n,t),onselect:function(e){e.control.settings.value&&n.execCommand("FontName",!1,e.control.settings.value)}}})},Ni=function(e){Mi(e)},Pi=function(e,t){return/[0-9.]+px$/.test(e)?(n=72*parseInt(e,10)/96,i=t||0,r=Math.pow(10,i),Math.round(n*r)/r+"pt"):e;var n,i,r},Wi=function(e,t,n){var i;return w.each(e,function(e){e.value===n?i=n:e.value===t&&(i=t)}),i
 },Di=function(n){n.addButton("fontsizeselect",function(){var e,s,a,t=(e=n.settings.fontsize_formats||"8pt 10pt 12pt 14pt 18pt 24pt 36pt",w.map(e.split(" "),function(e){var t=e,n=e,i=e.split("=");return 1<i.length&&(t=i[0],n=i[1]),{text:t,value:n}}));return{type:"listbox",text:"Font Sizes",tooltip:"Font Sizes",values:t,fixedWidth:!0,onPostRender:(s=n,a=t,function(){var o=this;s.on("init nodeChange",function(e){var t,n,i,r;if(t=s.queryCommandValue("FontSize"))for(i=3;!r&&0<=i;i--)n=Pi(t,i),r=Wi(a,n,t);o.value(r||null),r||o.text(n)})}),onclick:function(e){e.control.settings.value&&n.execCommand("FontSize",!1,e.control.settings.value)}}})},Oi=function(e){Di(e)},Ai=function(n,e){var i=e.length;return w.each(e,function(e){e.menu&&(e.hidden=0===Ai(n,e.menu));var t=e.format;t&&(e.hidden=!n.formatter.canApply(t)),e.hidden&&i--}),i},Bi=funct
 ion(n,e){var i=e.items().length;return e.items().each(function(e){e.menu&&e.visible(0<Bi(n,e.menu)),!e.menu&&e.settings.menu&&e.visible(0<Ai(n,e.settings.menu));var t=e.settings.format;t&&e.visible(n.formatter.canApply(t)),e.visible()||i--}),i},Li=function(e){var i,r,o,t,s,n,a,l,u=(r=0,o=[],t=[{title:"Headings",items:[{title:"Heading 1",format:"h1"},{title:"Heading 2",format:"h2"},{title:"Heading 3",format:"h3"},{title:"Heading 4",format:"h4"},{title:"Heading 5",format:"h5"},{title:"Heading 6",format:"h6"}]},{title:"Inline",items:[{title:"Bold",icon:"bold",format:"bold"},{title:"Italic",icon:"italic",format:"italic"},{title:"Underline",icon:"underline",format:"underline"},{title:"Strikethrough",icon:"stri
 kethrough",format:"strikethrough"},{title:"Superscript",icon:"superscript",format:"superscript"},{title:"Subscript",icon:"subscript",format:"subscript"},{title:"Code",icon:"code",format:"code"}]},{title:"Blocks",items:[{title:"Paragraph",format:"p"},{title:"Blockquote",format:"blockquote"},{title:"Div",format:"div"},{title:"Pre",format:"pre"}]},{title:"Alignment",items:[{title:"Left",icon:"alignleft",format:"alignleft"},{title:"Center",icon:"aligncenter",format:"aligncenter"},{title:"Right",icon:"alignright",format:"alignright"},{title:"Justify",icon:"alignjustify",format:"alignjustify"}]}],s=function(e){var i=[];if(e)return w.each(e,function(e){var t={text:e.titl
 e,icon:e.icon};if(e.items)t.menu=s(e.items);else{var n=e.format||"custom"+r++;e.format||(e.name=n,o.push(e)),t.format=n,t.cmd=e.cmd}i.push(t)}),i},(i=e).on("init",function(){w.each(o,function(e){i.formatter.register(e.name,e)})}),{type:"menu",items:i.settings.style_formats_merge?i.settings.style_formats?s(t.concat(i.settings.style_formats)):s(t):s(i.settings.style_formats||t),onPostRender:function(e){i.fire("renderFormatsMenu",{control:e.control})},itemDefaults:{preview:!0,textStyle:function(){if(this.settings.format)return i.formatter.getCssText(this.settings.format)},onPostRender:function(){var n=this;n.parent().on("show",function(){var e,t;(e=n.settings.format)&&(n.disabled(!i.formatter.canApply(e)),n.active(i.formatter.match(e))),(t=n.settings.cmd)&&n.active(i.queryCommandState(t))})},onclick:function(){this.settings.format&&Ci(i,this.settings.format)(),this.settings.cmd&&i.execCommand(this.setting
 s.cmd)}}});n=u,e.addMenuItem("formats",{text:"Formats",menu:n}),l=u,(a=e).addButton("styleselect",{type:"menubutton",text:"Formats",menu:l,onShowMenu:function(){a.settings.style_formats_autohide&&Bi(a,this.menu)}})},zi=function(n,e){return function(){var r,o,s,t=[];return w.each(e,function(e){t.push({text:e[0],value:e[1],textStyle:function(){return n.formatter.getCssText(e[1])}})}),{type:"listbox",text:e[0][0],values:t,fixedWidth:!0,onselect:function(e){if(e.control){var t=e.control.value();Ci(n,t)()}},onPostRender:(r=n,o=t,function(){var t=this;r.on("nodeChange",function(e){var n=r.formatter,i=null;w.each(e.parents,function(t){if(w.each(o,function(e){if(s?n.matchNode(t,s,{value:e.value})&&(i=e.value):n.matchNode(t,e.value)&&(i=e.value),i)return!1}),i)return!1}),t.value(i)})})}}},Ii=function(e){var t,n,i=function(e){for(var t=(e=e.replace(/;$/,"").split(";")).length;t--;
 )e[t]=e[t].split("=");return e}(e.settings.block_formats||"Paragraph=p;Heading 1=h1;Heading 2=h2;Heading 3=h3;Heading 4=h4;Heading 5=h5;Heading 6=h6;Preformatted=pre");e.addMenuItem("blockformats",{text:"Blocks",menu:(t=e,n=i,w.map(n,function(e){return{text:e[0],onclick:Ci(t,e[1]),textStyle:function(){return t.formatter.getCssText(e[1])}}}))}),e.addButton("formatselect",zi(e,i))},Fi=function(t,e){var n,i;if("string"==typeof e)i=e.split(" ");else if(w.isArray(e))return function(e){for(var t=[],n=0,i=e.length;n<i;++n){if(!Array.prototype.isPrototypeOf(e[n]))throw new Error("Arr.flatten item "+n+" was not an array, input: "+e);te.apply(t,e[n])}return t}(w.map(e,function(e){return Fi(t,e)}));return n=w.grep(i,function(e){return"|"===e||e in t.menuItems}),w.map(n,function(e){return"|"===e?{text:"-"}:t.menuItems[e]})},Ui=function(e){return e&&"-"===e
 .text},Vi=function(e){var t=Z(e,function(e,t,n){return!Ui(e)||!Ui(n[t-1])});return Z(t,function(e,t,n){return!Ui(e)||0<t&&t<n.length-1})},Yi=function(e){var t,n,i,r,o=e.settings.insert_button_items;return Vi(o?Fi(e,o):(t=e,n="insert",i=[{text:"-"}],r=w.grep(t.menuItems,function(e){return e.context===n}),w.each(r,function(e){"before"===e.separator&&i.push({text:"|"}),e.prependToContext?i.unshift(e):i.push(e),"after"===e.separator&&i.push({text:"|"})}),i))},$i=function(e){var t;(t=e).addButton("insert",{type:"menubutton",icon:"insert",menu:[],oncreatemenu:function(){this.menu.add(Yi(t)),this.menu.renderNew()}})},qi=function(e){var n,i,r;n=e,w.each({bold:"Bold",italic:"Italic",underline:"Underline",strikethrough:"Strikethrough",subscript:"Subscript",superscript:"Superscript"},function(e,t){n.addButton(t,{acti
 ve:!1,tooltip:e,onPostRender:ki(n,t),onclick:Ci(n,t)})}),i=e,w.each({outdent:["Decrease indent","Outdent"],indent:["Increase indent","Indent"],cut:["Cut","Cut"],copy:["Copy","Copy"],paste:["Paste","Paste"],help:["Help","mceHelp"],selectall:["Select all","SelectAll"],visualaid:["Visual aids","mceToggleVisualAid"],newdocument:["New document","mceNewDocument"],removeformat:["Clear formatting","RemoveFormat"],remove:["Remove","Delete"]},function(e,t){i.addButton(t,{tooltip:e[0],cmd:e[1]})}),r=e,w.each({blockquote:["Blockquote","mceBlockQuote"],subscript:["Subscript","Subscript"],superscript:["Superscript","Superscript"]},function(e,t){r.addButton(t,{active:!1,tooltip:e[0],cmd:e[1],onPostRender:ki(r,t)})})},Xi=fu
 nction(e){var n;qi(e),n=e,w.each({bold:["Bold","Bold","Meta+B"],italic:["Italic","Italic","Meta+I"],underline:["Underline","Underline","Meta+U"],strikethrough:["Strikethrough","Strikethrough"],subscript:["Subscript","Subscript"],superscript:["Superscript","Superscript"],removeformat:["Clear formatting","RemoveFormat"],newdocument:["New document","mceNewDocument"],cut:["Cut","Cut","Meta+X"],copy:["Copy","Copy","Meta+C"],paste:["Paste","Paste","Meta+V"],selectall:["Select all","SelectAll","Meta+A"]},function(e,t){n.addMenuItem(t,{text:e[0],icon:t,shortcut:e[2],cmd:e[1]})}),n.addMenuItem("codeformat",{text:"Code",icon:"code",onclick:Ci(n,"code&quo
 t;)})},ji=function(n,i){return function(){var e=this,t=function(){var e="redo"===i?"hasRedo":"hasUndo";return!!n.undoManager&&n.undoManager[e]()};e.disabled(!t()),n.on("Undo Redo AddUndo TypingUndo ClearUndos SwitchMode",function(){e.disabled(n.readonly||!t())})}},Ji=function(e){var t,n;(t=e).addMenuItem("undo",{text:"Undo",icon:"undo",shortcut:"Meta+Z",onPostRender:ji(t,"undo"),cmd:"undo"}),t.addMenuItem("redo",{text:"Redo",icon:"redo",shortcut:"Meta+Y",onPostRender:ji(t,"redo"),cmd:"redo"}),(n=e).addButton("undo",{tooltip:"Undo",onPostRender:ji(n,"undo"),cmd:"undo"}),n.addButton("redo",{tooltip:"Redo",onPostRender:ji(n,"redo"),cmd:"redo"})},Gi=function(e){var t,n;(t=e).addMenuItem("visualaid",{text:"Visual aids",selec
 table:!0,onPostRender:(n=t,function(){var t=this;n.on("VisualAid",function(e){t.active(e.hasVisual)}),t.active(n.hasVisual)}),cmd:"mceToggleVisualAid"})},Ki={setup:function(e){var t;e.rtl&&(st.rtl=!0),e.on("mousedown progressstate",function(){kt.hideAll()}),(t=e).settings.ui_container&&(fe.container=Ri(vn.fromDom(_.document.body),t.settings.ui_container).fold(H(null),function(e){return e.dom()})),Wt.tooltips=!fe.iOS,st.translate=function(e){return h.translate(e)},Ii(e),Hi(e),Xi(e),Ji(e),Oi(e),Ni(e),Li(e),Gi(e),$i(e)}},Zi=Jt.extend({recalc:function(e){var t,n,i,r,o,s,a,l,u,c,d,f,h,m,g,p,v,b,y,x,w,_,R,C,E,k,H,S,T=[],M=[];t=e.settings,r=e.items().filter(":visible"),o=e.layoutRect(),i=t.columns||Math.ceil(Math.sqrt(r.length)),n=Math.ceil(r.length/i),b=t.spacingH||t.spacing||0,y=t.spacingV||t.spacing||0,x=t.alignH||t.align,w=t.alignV||t.align,p=e.paddingBox,S="reverseRows"in t?t.reverseRows:e.isRtl(),x&&"strin
 g"==typeof x&&(x=[x]),w&&"string"==typeof w&&(w=[w]);for(d=0;d<i;d++)T.push(0);for(f=0;f<n;f++)M.push(0);for(f=0;f<n;f++)for(d=0;d<i&&(c=r[f*i+d]);d++)C=(u=c.layoutRect()).minW,E=u.minH,T[d]=C>T[d]?C:T[d],M[f]=E>M[f]?E:M[f];for(k=o.innerW-p.left-p.right,d=_=0;d<i;d++)_+=T[d]+(0<d?b:0),k-=(0<d?b:0)+T[d];for(H=o.innerH-p.top-p.bottom,f=R=0;f<n;f++)R+=M[f]+(0<f?y:0),H-=(0<f?y:0)+M[f];if(_+=p.left+p.right,R+=p.top+p.bottom,(l={}).minW=_+(o.w-o.innerW),l.minH=R+(o.h-o.innerH),l.contentW=l.minW-o.deltaW,l.contentH=l.minH-o.deltaH,l.minW=Math.min(l.minW,o.maxW),l.minH=Math.min(l.minH,o.maxH),l.minW=Math.max(l.minW,o.startMinWidth),l.minH=Math.max(l.minH,o.startMinHeight),!o.autoResize||l.minW===o.minW&&l.minH===o.minH){var N;o.autoResize&&((l=e.layoutRect(l)).contentW=l.minW-o.deltaW,l.contentH=l.minH-o.deltaH),N="start"===t.packV?0:0<H?Math.floor(H/n):0;var P=0,W=t.flexWidths;if
 (W)for(d=0;d<W.length;d++)P+=W[d];else P=i;var D=k/P;for(d=0;d<i;d++)T[d]+=W?W[d]*D:D;for(m=p.top,f=0;f<n;f++){for(h=p.left,a=M[f]+N,d=0;d<i&&(c=r[S?f*i+i-1-d:f*i+d]);d++)g=c.settings,u=c.layoutRect(),s=Math.max(T[d],u.startMinWidth),u.x=h,u.y=m,"center"===(v=g.alignH||(x?x[d]||x[0]:null))?u.x=h+s/2-u.w/2:"right"===v?u.x=h+s-u.w:"stretch"===v&&(u.w=s),"center"===(v=g.alignV||(w?w[d]||w[0]:null))?u.y=m+a/2-u.h/2:"bottom"===v?u.y=m+a-u.h:"stretch"===v&&(u.h=a),c.layoutRect(u),h+=s+b,c.recalc&&c.recalc();m+=a+y}}else if(l.w=l.minW,l.h=l.minH,e.layoutRect(l),this.recalc(e),null===e._lastRect){var O=e.parent();O&&(O._lastRect=null,O.recalc())}}}),Qi=Wt.extend({renderHtml:function(){var e=this;return e.classes.add("iframe"),e.canFocus=!1,'<iframe id="'+e._id+'" class="'+e.classes+'" tabindex="-1" src="'+(e.settings.url||"javas
 cript:''")+'" frameborder="0"></iframe>'},src:function(e){this.getEl().src=e},html:function(e,t){var n=this,i=this.getEl().contentWindow.document.body;return i?(i.innerHTML=e,t&&t()):u.setTimeout(function(){n.html(e)}),this}}),er=Wt.extend({init:function(e){this._super(e),this.classes.add("widget").add("infobox"),this.canFocus=!1},severity:function(e){this.classes.remove("error"),this.classes.remove("warning"),this.classes.remove("success"),this.classes.add(e)},help:function(e){this.state.set("help",e)},renderHtml:function(){var e=this,t=e.classPrefix;return'<div id="'+e._id+'" class="'+e.classes+'"><div id="'+e._id+'-body">'+e.encode(e.state.get("text"))+'<button role="button" tabindex="-1"><i class="'+t+"ico "+t+'i-help"></i></button></div></div>'},bindStates:
 function(){var t=this;return t.state.on("change:text",function(e){t.getEl("body").firstChild.data=t.encode(e.value),t.state.get("rendered")&&t.updateLayoutRect()}),t.state.on("change:help",function(e){t.classes.toggle("has-help",e.value),t.state.get("rendered")&&t.updateLayoutRect()}),t._super()}}),tr=Wt.extend({init:function(e){var t=this;t._super(e),t.classes.add("widget").add("label"),t.canFocus=!1,e.multiline&&t.classes.add("autoscroll"),e.strong&&t.classes.add("strong")},initLayoutRect:function(){var e=this,t=e._super();return e.settings.multiline&&(Re.getSize(e.getEl()).width>t.maxW&&(t.minW=t.maxW,e.classes.add("multiline")),e.getEl().style.width=t.minW+"px",t.startMinH=t.h=t.minH=Math.min(t.maxH,Re.getSize(e.getEl()).height)),t},repaint:function(){return this.settings.multiline||(this.getEl().style.lineHeig
 ht=this.layoutRect().h+"px"),this._super()},severity:function(e){this.classes.remove("error"),this.classes.remove("warning"),this.classes.remove("success"),this.classes.add(e)},renderHtml:function(){var e,t,n=this,i=n.settings.forId,r=n.settings.html?n.settings.html:n.encode(n.state.get("text"));return!i&&(t=n.settings.forName)&&(e=n.getRoot().find("#"+t)[0])&&(i=e._id),i?'<label id="'+n._id+'" class="'+n.classes+'"'+(i?' for="'+i+'"':"")+">"+r+"</label>":'<span id="'+n._id+'" class="'+n.classes+'">'+r+"</span>"},bindStates:function(){var t=this;return t.state.on("change:text",function(e){t.innerHtml(t.encode(e.value)),t.state.get("rendered")&&t.updateLayoutRect()}),t._super()}}),nr=ct.extend({Defaults:{role:"toolbar",layout:"flow"},init:fun
 ction(e){this._super(e),this.classes.add("toolbar")},postRender:function(){return this.items().each(function(e){e.classes.add("toolbar-item")}),this._super()}}),ir=nr.extend({Defaults:{role:"menubar",containerCls:"menubar",ariaRoot:!0,defaults:{type:"menubutton"}}}),rr=Gt.extend({init:function(e){var t=this;t._renderOpen=!0,t._super(e),e=t.settings,t.classes.add("menubtn"),e.fixedWidth&&t.classes.add("fixed-width"),t.aria("haspopup",!0),t.state.set("menu",e.menu||t.render())},showMenu:function(e){var t,n=this;if(n.menu&&n.menu.visible()&&!1!==e)return n.hideMenu();n.menu||(t=n.state.get("menu")||[],n.classes.add("opened"),t.length?t={type:"menu",animate:!0,items:t}:(t.type=t.type||"menu",t.animate=!0),t.renderTo?n.menu=t.parent(n).show().renderTo():n.menu=b.create(t).parent(n).renderTo(),n.fire("createmenu"),n.menu.reflow
 (),n.menu.on("cancel",function(e){e.control.parent()===n.menu&&(e.stopPropagation(),n.focus(),n.hideMenu())}),n.menu.on("select",function(){n.focus()}),n.menu.on("show hide",function(e){"hide"===e.type&&e.control.parent()===n&&n.classes.remove("opened-under"),e.control===n.menu&&(n.activeMenu("show"===e.type),n.classes.toggle("opened","show"===e.type)),n.aria("expanded","show"===e.type)}).fire("show")),n.menu.show(),n.menu.layoutRect({w:n.layoutRect().w}),n.menu.repaint(),n.menu.moveRel(n.getEl(),n.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"]);var i=n.menu.layoutRect(),r=n.$el.offset().top+n.layoutRect().h;r>i.y&&r<i.y+i.h&&n.classes.add("opened-under"),n.fire("showmenu")},hideMenu:function(){this.menu&&(this.menu.items().each(function(e){e.hideMenu&&a
 mp;e.hideMenu()}),this.menu.hide())},activeMenu:function(e){this.classes.toggle("active",e)},renderHtml:function(){var e,t=this,n=t._id,i=t.classPrefix,r=t.settings.icon,o=t.state.get("text"),s="";return(e=t.settings.image)?(r="none","string"!=typeof e&&(e=_.window.getSelection?e[0]:e[1]),e=" style=\"background-image: url('"+e+"')\""):e="",o&&(t.classes.add("btn-has-text"),s='<span class="'+i+'txt">'+t.encode(o)+"</span>"),r=t.settings.icon?i+"ico "+i+"i-"+r:"",t.aria("role",t.parent()instanceof ir?"menuitem":"button"),'<div id="'+n+'" class="'+t.classes+'" tabindex="-1" aria-labelledby="'+n+'"><button id="'+n+'-open" role="presentation" type="button" tabindex="-1">'+(r?'<i class=&quot
 ;'+r+'"'+e+"></i>":"")+s+' <i class="'+i+'caret"></i></button></div>'},postRender:function(){var r=this;return r.on("click",function(e){e.control===r&&function(e,t){for(;e;){if(t===e)return!0;e=e.parentNode}return!1}(e.target,r.getEl())&&(r.focus(),r.showMenu(!e.aria),e.aria&&r.menu.items().filter(":visible")[0].focus())}),r.on("mouseenter",function(e){var t,n=e.control,i=r.parent();n&&i&&n instanceof rr&&n.parent()===i&&(i.items().filter("MenuButton").each(function(e){e.hideMenu&&e!==n&&(e.menu&&e.menu.visible()&&(t=!0),e.hideMenu())}),t&&(n.focus(),n.showMenu()))}),r._super()},bindStates:function(){var e=this;return e.state.on("change:menu",function(){e.menu&&e.menu.remove(),e.menu=null}),e._super()},remove:function(){this._super(),this.menu&&this.menu.re
 move()}}),or=kt.extend({Defaults:{defaultType:"menuitem",border:1,layout:"stack",role:"application",bodyRole:"menu",ariaRoot:!0},init:function(e){if(e.autohide=!0,e.constrainToViewport=!0,"function"==typeof e.items&&(e.itemsFactory=e.items,e.items=[]),e.itemDefaults)for(var t=e.items,n=t.length;n--;)t[n]=w.extend({},e.itemDefaults,t[n]);this._super(e),this.classes.add("menu"),e.animate&&11!==fe.ie&&this.classes.add("animate")},repaint:function(){return this.classes.toggle("menu-align",!0),this._super(),this.getEl().style.height="",this.getEl("body").style.height="",this},cancel:function(){this.hideAll(),this.fire("select")},load:function(){var t,n=this;function i(){n.throbber&&(n.throbber.hide(),n.throbber=null)}n.settings.itemsFactory&&(n.throbber||(n.throbber=new Tt(n.getEl("body"),!0),0===n.items().length?(n.thro
 bber.show(),n.fire("loading")):n.throbber.show(100,function(){n.items().remove(),n.fire("loading")}),n.on("hide close",i)),n.requestTime=t=(new Date).getTime(),n.settings.itemsFactory(function(e){0!==e.length?n.requestTime===t&&(n.getEl().style.width="",n.getEl("body").style.width="",i(),n.items().remove(),n.getEl("body").innerHTML="",n.add(e),n.renderNew(),n.fire("loaded")):n.hide()}))},hideAll:function(){return this.find("menuitem").exec("hideMenu"),this._super()},preRender:function(){var n=this;return n.items().each(function(e){var t=e.settings;if(t.icon||t.image||t.selectable)return!(n._hasIcons=!0)}),n.settings.itemsFactory&&n.on("postrender",function(){n.settings.itemsFactory&&n.load()}),n.on("show hide",function(e){e.control===n&&("show"===e.type?u.setTimeout(function(){n.classes.add("in")},0):n.c
 lasses.remove("in"))}),n._super()}}),sr=rr.extend({init:function(i){var t,r,o,n,s=this;s._super(i),i=s.settings,s._values=t=i.values,t&&("undefined"!=typeof i.value&&function e(t){for(var n=0;n<t.length;n++){if(r=t[n].selected||i.value===t[n].value)return o=o||t[n].text,s.state.set("value",t[n].value),!0;if(t[n].menu&&e(t[n].menu))return!0}}(t),!r&&0<t.length&&(o=t[0].text,s.state.set("value",t[0].value)),s.state.set("menu",t)),s.state.set("text",i.text||o),s.classes.add("listbox"),s.on("select",function(e){var t=e.control;n&&(e.lastControl=n),i.multiple?t.active(!t.active()):s.value(e.control.value()),n=t})},value:function(n){return 0===arguments.length?this.state.get("value"):(void 0===n||(this.settings.values&&!function t(e){return J(e,function(e){return e.menu?t(e.menu):e.value===n})}(this.settings.values)?null===n&&this.
 state.set("value",null):this.state.set("value",n)),this)},bindStates:function(){var i=this;return i.on("show",function(e){var t,n;t=e.control,n=i.value(),t instanceof or&&t.items().each(function(e){e.hasMenus()||e.active(e.value()===n)})}),i.state.on("change:value",function(t){var n=function e(t,n){var i;if(t)for(var r=0;r<t.length;r++){if(t[r].value===n)return t[r];if(t[r].menu&&(i=e(t[r].menu,n)))return i}}(i.state.get("menu"),t.value);n?i.text(n.text):i.text(i.settings.text)}),i._super()}}),ar=Wt.extend({Defaults:{border:0,role:"menuitem"},init:function(e){var t,n=this;n._super(e),e=n.settings,n.classes.add("menu-item"),e.menu&&n.classes.add("menu-item-expand"),e.preview&&n.classes.add("menu-item-preview"),"-"!==(t=n.state.get("text"))&&"|"!==t||(n.classes.add("menu-item-sep"),n.aria("role","sep
 arator"),n.state.set("text","-")),e.selectable&&(n.aria("role","menuitemcheckbox"),n.classes.add("menu-item-checkbox"),e.icon="selected"),e.preview||e.selectable||n.classes.add("menu-item-normal"),n.on("mousedown",function(e){e.preventDefault()}),e.menu&&!e.ariaHideMenu&&n.aria("haspopup",!0)},hasMenus:function(){return!!this.settings.menu},showMenu:function(){var t,n=this,e=n.settings,i=n.parent();if(i.items().each(function(e){e!==n&&e.hideMenu()}),e.menu){(t=n.menu)?t.show():((t=e.menu).length?t={type:"menu",items:t}:t.type=t.type||"menu",i.settings.itemDefaults&&(t.itemDefaults=i.settings.itemDefaults),(t=n.menu=b.create(t).parent(n).renderTo()).reflow(),t.on("cancel",function(e){e.stopPropagation(),n.focus(),t.hide()}),t.on("show hide",function(e){e.control.items&&e.control.items().each(function(e){
 e.active(e.settings.selected)})}).fire("show"),t.on("hide",function(e){e.control===t&&n.classes.remove("selected")}),t.submenu=!0),t._parentMenu=i,t.classes.add("menu-sub");var r=t.testMoveRel(n.getEl(),n.isRtl()?["tl-tr","bl-br","tr-tl","br-bl"]:["tr-tl","br-bl","tl-tr","bl-br"]);t.moveRel(n.getEl(),r),r="menu-sub-"+(t.rel=r),t.classes.remove(t._lastRel).add(r),t._lastRel=r,n.classes.add("selected"),n.aria("expanded",!0)}},hideMenu:function(){var e=this;return e.menu&&(e.menu.items().each(function(e){e.hideMenu&&e.hideMenu()}),e.menu.hide(),e.aria("expanded",!1)),e},renderHtml:function(){var e,t=this,n=t._id,i=t.settings,r=t.classPrefix,o=t.state.get("text"),s=t.settings.icon,a="",l=i.shortcut,u=t.encode(i.url);function c(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&&quo
 t;)}function d(e){var t=i.match||"";return t?e.replace(new RegExp(c(t),"gi"),function(e){return"!mce~match["+e+"]mce~match!"}):e}function f(e){return e.replace(new RegExp(c("!mce~match["),"g"),"<b>").replace(new RegExp(c("]mce~match!"),"g"),"</b>")}return s&&t.parent().classes.add("menu-has-icons"),i.image&&(a=" style=\"background-image: url('"+i.image+"')\""),l&&(l=function(e){var t,n,i={};for(i=fe.mac?{alt:"&#x2325;",ctrl:"&#x2318;",shift:"&#x21E7;",meta:"&#x2318;"}:{meta:"Ctrl"},e=e.split("+"),t=0;t<e.length;t++)(n=i[e[t].toLowerCase()])&&(e[t]=n);return e.join("+")}(l)),s=r+"ico "+r+"i-"+(t.settings.icon||"none"),e="-"!==o?'<i class="'+s+'"'+a+"></
 i>\xa0":"",o=f(t.encode(d(o))),u=f(t.encode(d(u))),'<div id="'+n+'" class="'+t.classes+'" tabindex="-1">'+e+("-"!==o?'<span id="'+n+'-text" class="'+r+'text">'+o+"</span>":"")+(l?'<div id="'+n+'-shortcut" class="'+r+'menu-shortcut">'+l+"</div>":"")+(i.menu?'<div class="'+r+'caret"></div>':"")+(u?'<div class="'+r+'menu-item-link">'+u+"</div>":"")+"</div>"},postRender:function(){var t=this,n=t.settings,e=n.textStyle;if("function"==typeof e&&(e=e.call(this)),e){var i=t.getEl("text");i&&(i.setAttribute("style",e),t._textStyle=e)}return t.on("mouseenter click",function(e){e.control===t&&(n.menu||"click"!==e.type?(t.showMenu(),e.aria&&t.menu.focus(!0)):(t
 .fire("select"),u.requestAnimationFrame(function(){t.parent().hideAll()})))}),t._super(),t},hover:function(){return this.parent().items().each(function(e){e.classes.remove("selected")}),this.classes.toggle("selected",!0),this},active:function(e){return function(e,t){var n=e._textStyle;if(n){var i=e.getEl("text");i.setAttribute("style",n),t&&(i.style.color="",i.style.backgroundColor="")}}(this,e),void 0!==e&&this.aria("checked",e),this._super(e)},remove:function(){this._super(),this.menu&&this.menu.remove()}}),lr=Qt.extend({Defaults:{classes:"radio",role:"radio"}}),ur=Wt.extend({renderHtml:function(){var e=this,t=e.classPrefix;return e.classes.add("resizehandle"),"both"===e.settings.direction&&e.classes.add("resizehandle-both"),e.canFocus=!1,'<div id="'+e._id+'" class="'+e.classes+'"><i class=&qu
 ot;'+t+"ico "+t+'i-resize"></i></div>'},postRender:function(){var t=this;t._super(),t.resizeDragHelper=new ft(this._id,{start:function(){t.fire("ResizeStart")},drag:function(e){"both"!==t.settings.direction&&(e.deltaX=0),t.fire("Resize",e)},stop:function(){t.fire("ResizeEnd")}})},remove:function(){return this.resizeDragHelper&&this.resizeDragHelper.destroy(),this._super()}});function cr(e){var t="";if(e)for(var n=0;n<e.length;n++)t+='<option value="'+e[n]+'">'+e[n]+"</option>";return t}var dr=Wt.extend({Defaults:{classes:"selectbox",role:"selectbox",options:[]},init:function(e){var n=this;n._super(e),n.settings.size&&(n.size=n.settings.size),n.settings.options&&(n._options=n.settings.options),n.on("keydown",function(e){var t;13===e.keyCode&&(e.preventDefault(),n.parents().reverse().each(function(e){if
 (e.toJSON)return t=e,!1}),n.fire("submit",{data:t.toJSON()}))})},options:function(e){return arguments.length?(this.state.set("options",e),this):this.state.get("options")},renderHtml:function(){var e,t=this,n="";return e=cr(t._options),t.size&&(n=' size = "'+t.size+'"'),'<select id="'+t._id+'" class="'+t.classes+'"'+n+">"+e+"</select>"},bindStates:function(){var t=this;return t.state.on("change:options",function(e){t.getEl().innerHTML=cr(e.value)}),t._super()}});function fr(e,t,n){return e<t&&(e=t),n<e&&(e=n),e}function hr(e,t,n){e.setAttribute("aria-"+t,n)}function mr(e,t){var n,i,r,o,s;"v"===e.settings.orientation?(r="top",i="height",n="h"):(r="left",i="width",n="w"),s=e.getEl("handle"),o=((e.layoutRect()[n]||100)-Re.getSize(s)[i])*((t-e._minValue)/(e._m
 axValue-e._minValue))+"px",s.style[r]=o,s.style.height=e.layoutRect().h+"px",hr(s,"valuenow",t),hr(s,"valuetext",""+e.settings.previewFilter(t)),hr(s,"valuemin",e._minValue),hr(s,"valuemax",e._maxValue)}var gr=Wt.extend({init:function(e){var t=this;e.previewFilter||(e.previewFilter=function(e){return Math.round(100*e)/100}),t._super(e),t.classes.add("slider"),"v"===e.orientation&&t.classes.add("vertical"),t._minValue=X(e.minValue)?e.minValue:0,t._maxValue=X(e.maxValue)?e.maxValue:100,t._initValue=t.state.get("value")},renderHtml:function(){var e=this._id,t=this.classPrefix;return'<div id="'+e+'" class="'+this.classes+'"><div id="'+e+'-handle" class="'+t+'slider-handle" role="slider" tabindex="-1"></div></div>'},reset:function(){this.value(this._initValue).repaint()},postRender:functio
 n(){var e,t,n,i,r,o,s,a,l,u,c,d,f,h,m=this;e=m._minValue,t=m._maxValue,"v"===m.settings.orientation?(n="screenY",i="top",r="height",o="h"):(n="screenX",i="left",r="width",o="w"),m._super(),function(o,s){function t(e){var t,n,i,r;t=fr(t=(((t=m.value())+(r=n=o))/((i=s)-r)+.05*e)*(i-n)-n,o,s),m.value(t),m.fire("dragstart",{value:t}),m.fire("drag",{value:t}),m.fire("dragend",{value:t})}m.on("keydown",function(e){switch(e.keyCode){case 37:case 38:t(-1);break;case 39:case 40:t(1)}})}(e,t),s=e,a=t,l=m.getEl("handle"),m._dragHelper=new ft(m._id,{handle:m._id+"-handle",start:function(e){u=e[n],c=parseInt(m.getEl("handle").style[i],10),d=(m.layoutRect()[o]||100)-Re.getSize(l)[r],m.fire("dragstart",{value:h})},drag:function(e){var t=e[n]-u;f=fr(c+t,0,d),l.style[i]=f+"px",h=s+f/d*(a-s),m.value(h),m.tooltip().text(&quo
 t;"+m.settings.previewFilter(h)).show().moveRel(l,"bc tc"),m.fire("drag",{value:h})},stop:function(){m.tooltip().hide(),m.fire("dragend",{value:h})}})},repaint:function(){this._super(),mr(this,this.value())},bindStates:function(){var t=this;return t.state.on("change:value",function(e){mr(t,e.value)}),t._super()}}),pr=Wt.extend({renderHtml:function(){return this.classes.add("spacer"),this.canFocus=!1,'<div id="'+this._id+'" class="'+this.classes+'"></div>'}}),vr=rr.extend({Defaults:{classes:"widget btn splitbtn",role:"button"},repaint:function(){var e,t,n=this.getEl(),i=this.layoutRect();return this._super(),e=n.firstChild,t=n.lastChild,we(e).css({width:i.w-Re.getSize(t).width,height:i.h-2}),we(t).css({height:i.h-2}),this},activeMenu:function(e){we(this.getEl().lastChild).toggleClass(this.classPrefix+"active",e)},renderHtml:function(){var e,t,n=this,i=n._id,r=n.classPr
 efix,o=n.state.get("icon"),s=n.state.get("text"),a=n.settings,l="";return(e=a.image)?(o="none","string"!=typeof e&&(e=_.window.getSelection?e[0]:e[1]),e=" style=\"background-image: url('"+e+"')\""):e="",o=a.icon?r+"ico "+r+"i-"+o:"",s&&(n.classes.add("btn-has-text"),l='<span class="'+r+'txt">'+n.encode(s)+"</span>"),t="boolean"==typeof a.active?' aria-pressed="'+a.active+'"':"",'<div id="'+i+'" class="'+n.classes+'" role="button"'+t+' tabindex="-1"><button type="button" hidefocus="1" tabindex="-1">'+(o?'<i class="'+o+'"'+e+"></i>":"")+l+'</button><button type="button" class="'+r+'open" hidefocus="1" tabindex="-1&q
 uot;>'+(n._menuBtnText?(o?"\xa0":"")+n._menuBtnText:"")+' <i class="'+r+'caret"></i></button></div>'},postRender:function(){var n=this.settings.onclick;return this.on("click",function(e){var t=e.target;if(e.control===this)for(;t;){if(e.aria&&"down"!==e.aria.key||"BUTTON"===t.nodeName&&-1===t.className.indexOf("open"))return e.stopImmediatePropagation(),void(n&&n.call(this,e));t=t.parentNode}}),delete this.settings.onclick,this._super()}}),br=_i.extend({Defaults:{containerClass:"stack-layout",controlClass:"stack-layout-item",endClass:"break"},isNative:function(){return!0}}),yr=bt.extend({Defaults:{layout:"absolute",defaults:{type:"panel"}},activateTab:function(n){var e;this.activeTabId&&(e=this.getEl(this.activeTabId),we(e).removeClass(this.classPrefix+"active"),e.setAttribute("aria-
 selected","false")),this.activeTabId="t"+n,(e=this.getEl("t"+n)).setAttribute("aria-selected","true"),we(e).addClass(this.classPrefix+"active"),this.items()[n].show().fire("showtab"),this.reflow(),this.items().each(function(e,t){n!==t&&e.hide()})},renderHtml:function(){var i=this,e=i._layout,r="",o=i.classPrefix;return i.preRender(),e.preRender(i),i.items().each(function(e,t){var n=i._id+"-t"+t;e.aria("role","tabpanel"),e.aria("labelledby",n),r+='<div id="'+n+'" class="'+o+'tab" unselectable="on" role="tab" aria-controls="'+e._id+'" aria-selected="false" tabIndex="-1">'+i.encode(e.settings.title)+"</div>"}),'<div id="'+i._id+'" class="'+i.classes+'" hidefocus="1" tabindex="-1"><div id="'+i._id+'-head" cl
 ass="'+o+'tabs" role="tablist">'+r+'</div><div id="'+i._id+'-body" class="'+i.bodyClasses+'">'+e.renderHtml(i)+"</div></div>"},postRender:function(){var i=this;i._super(),i.settings.activeTab=i.settings.activeTab||0,i.activateTab(i.settings.activeTab),this.on("click",function(e){var t=e.target.parentNode;if(t&&t.id===i._id+"-head")for(var n=t.childNodes.length;n--;)t.childNodes[n]===e.target&&i.activateTab(n)})},initLayoutRect:function(){var e,t,n,i=this;t=(t=Re.getSize(i.getEl("head")).width)<0?0:t,n=0,i.items().each(function(e){t=Math.max(t,e.layoutRect().minW),n=Math.max(n,e.layoutRect().minH)}),i.items().each(function(e){e.settings.x=0,e.settings.y=0,e.settings.w=t,e.settings.h=n,e.layoutRect({x:0,y:0,w:t,h:n})});var r=Re.getSize(i.getEl("head")).height;return i.settings.minWidth=t,i.settings.minHeight=n+r,(e=i._super()).deltaH+=r,e.innerH=e.h-e
 .deltaH,e}}),xr=Wt.extend({init:function(e){var n=this;n._super(e),n.classes.add("textbox"),e.multiline?n.classes.add("multiline"):(n.on("keydown",function(e){var t;13===e.keyCode&&(e.preventDefault(),n.parents().reverse().each(function(e){if(e.toJSON)return t=e,!1}),n.fire("submit",{data:t.toJSON()}))}),n.on("keyup",function(e){n.state.set("value",e.target.value)}))},repaint:function(){var e,t,n,i,r,o=this,s=0;e=o.getEl().style,t=o._layoutRect,r=o._lastRepaintRect||{};var a=_.document;return!o.settings.multiline&&a.all&&(!a.documentMode||a.documentMode<=8)&&(e.lineHeight=t.h-s+"px"),i=(n=o.borderBox).left+n.right+8,s=n.top+n.bottom+(o.settings.multiline?8:0),t.x!==r.x&&(e.left=t.x+"px",r.x=t.x),t.y!==r.y&&(e.top=t.y+"px",r.y=t.y),t.w!==r.w&&(e.width=t.w-i+"px",r.w=t.w),t.h!==r.h&&(e.height=t.h-s+"px",r.h=t.h
 ),o._lastRepaintRect=r,o.fire("repaint",{},!1),o},renderHtml:function(){var t,e,n=this,i=n.settings;return t={id:n._id,hidefocus:"1"},w.each(["rows","spellcheck","maxLength","size","readonly","min","max","step","list","pattern","placeholder","required","multiple"],function(e){t[e]=i[e]}),n.disabled()&&(t.disabled="disabled"),i.subtype&&(t.type=i.subtype),(e=Re.create(i.multiline?"textarea":"input",t)).value=n.state.get("value"),e.className=n.classes.toString(),e.outerHTML},value:function(e){return arguments.length?(this.state.set("value",e),this):(this.state.get("rendered")&&this.state.set("value",this.getEl().value),this.state.get("value"))},postRender:function(){var t=this;t.getEl().value=t.state.get("value"),t._super(),t
 .$el.on("change",function(e){t.state.set("value",e.target.value),t.fire("change",e)})},bindStates:function(){var t=this;return t.state.on("change:value",function(e){t.getEl().value!==e.value&&(t.getEl().value=e.value)}),t.state.on("change:disabled",function(e){t.getEl().disabled=e.value}),t._super()},remove:function(){this.$el.off(),this._super()}}),wr=function(){return{Selector:Ue,Collection:$e,ReflowQueue:Qe,Control:st,Factory:b,KeyboardNavigation:lt,Container:ct,DragHelper:ft,Scrollable:vt,Panel:bt,Movable:Te,Resizable:yt,FloatPanel:kt,Window:Ut,MessageBox:qt,Tooltip:Pt,Widget:Wt,Progress:Dt,Notification:At,Layout:jt,AbsoluteLayout:Jt,Button:Gt,ButtonGroup:Zt,Checkbox:Qt,ComboBox:tn,ColorBox:nn,PanelButton:rn,ColorButton:sn,ColorPicker:ln,Path:cn,ElementPath:dn,FormItem:fn,Form:hn,FieldSet:mn,FilePicker:yi,FitLayout:xi,FlexLayout:wi,FlowLayout:_i,FormatControls:Ki,GridLayout:Zi,Iframe:Qi,InfoBox:er,Label:tr,Toolbar:nr,Menu
 Bar:ir,MenuButton:rr,MenuItem:ar,Throbber:Tt,Menu:or,ListBox:sr,Radio:lr,ResizeHandle:ur,SelectBox:dr,Slider:gr,Spacer:pr,SplitButton:vr,StackLayout:br,TabPanel:yr,TextBox:xr,DropZone:un,BrowseButton:Kt}},_r=function(n){n.ui?w.each(wr(),function(e,t){n.ui[t]=e}):n.ui=wr()};w.each(wr(),function(e,t){b.add(t,e)}),_r(window.tinymce?window.tinymce:{}),o.add("modern",function(e){return Ki.setup(e),Xt(e)})}(window);
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of file
</span></span></pre></div>
<a id="trunksrcjs_enqueuesvendortinymcetinymcejs"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/js/_enqueues/vendor/tinymce/tinymce.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/js/_enqueues/vendor/tinymce/tinymce.js  2019-05-15 19:53:42 UTC (rev 45315)
+++ trunk/src/js/_enqueues/vendor/tinymce/tinymce.js    2019-05-15 23:44:37 UTC (rev 45316)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,6 +1,6 @@
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-// 4.9.2 (2018-12-17)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+// 4.9.4 (2019-03-20)
</ins><span class="cx" style="display: block; padding: 0 10px"> (function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-(function () {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+(function (domGlobals) {
</ins><span class="cx" style="display: block; padding: 0 10px">     'use strict';
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var noop = function () {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -66,13 +66,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var eq = function (o) {
</span><span class="cx" style="display: block; padding: 0 10px">         return o.isNone();
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var call$$1 = function (thunk) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var call = function (thunk) {
</ins><span class="cx" style="display: block; padding: 0 10px">         return thunk();
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var id = function (n) {
</span><span class="cx" style="display: block; padding: 0 10px">         return n;
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var noop$$1 = function () {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var noop = function () {
</ins><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var nul = function () {
</span><span class="cx" style="display: block; padding: 0 10px">         return null;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -88,7 +88,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         isSome: never$1,
</span><span class="cx" style="display: block; padding: 0 10px">         isNone: always$1,
</span><span class="cx" style="display: block; padding: 0 10px">         getOr: id,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        getOrThunk: call$$1,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        getOrThunk: call,
</ins><span class="cx" style="display: block; padding: 0 10px">         getOrDie: function (msg) {
</span><span class="cx" style="display: block; padding: 0 10px">           throw new Error(msg || 'error: getOrDie called on none.');
</span><span class="cx" style="display: block; padding: 0 10px">         },
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -95,10 +95,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">         getOrNull: nul,
</span><span class="cx" style="display: block; padding: 0 10px">         getOrUndefined: undef,
</span><span class="cx" style="display: block; padding: 0 10px">         or: id,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        orThunk: call$$1,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        orThunk: call,
</ins><span class="cx" style="display: block; padding: 0 10px">         map: none,
</span><span class="cx" style="display: block; padding: 0 10px">         ap: none,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        each: noop$$1,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        each: noop,
</ins><span class="cx" style="display: block; padding: 0 10px">         bind: none,
</span><span class="cx" style="display: block; padding: 0 10px">         flatten: none,
</span><span class="cx" style="display: block; padding: 0 10px">         exists: never$1,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -368,7 +368,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return slice.call(x);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var Global = typeof window !== 'undefined' ? window : Function('return this;')();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var Global = typeof domGlobals.window !== 'undefined' ? domGlobals.window : Function('return this;')();
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var path = function (parts, scope) {
</span><span class="cx" style="display: block; padding: 0 10px">       var o = scope !== undefined && scope !== null ? scope : Global;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -406,10 +406,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">       revokeObjectURL: revokeObjectURL
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var nav = navigator, userAgent = nav.userAgent;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var nav = domGlobals.navigator, userAgent = nav.userAgent;
</ins><span class="cx" style="display: block; padding: 0 10px">     var opera, webkit, ie, ie11, ie12, gecko, mac, iDevice, android, fileApi, phone, tablet, windowsPhone;
</span><span class="cx" style="display: block; padding: 0 10px">     var matchMediaQuery = function (query) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return 'matchMedia' in window ? matchMedia(query).matches : false;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return 'matchMedia' in domGlobals.window ? domGlobals.matchMedia(query).matches : false;
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     opera = false;
</span><span class="cx" style="display: block; padding: 0 10px">     android = /Android/.test(userAgent);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -422,7 +422,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     gecko = !webkit && !ie11 && /Gecko/.test(userAgent);
</span><span class="cx" style="display: block; padding: 0 10px">     mac = userAgent.indexOf('Mac') !== -1;
</span><span class="cx" style="display: block; padding: 0 10px">     iDevice = /(iPad|iPhone)/.test(userAgent);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    fileApi = 'FormData' in window && 'FileReader' in window && 'URL' in window && !!URL.createObjectURL;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    fileApi = 'FormData' in domGlobals.window && 'FileReader' in domGlobals.window && 'URL' in domGlobals.window && !!URL.createObjectURL;
</ins><span class="cx" style="display: block; padding: 0 10px">     phone = matchMediaQuery('only screen and (max-device-width: 480px)') && (android || iDevice);
</span><span class="cx" style="display: block; padding: 0 10px">     tablet = matchMediaQuery('only screen and (min-width: 800px)') && (android || iDevice);
</span><span class="cx" style="display: block; padding: 0 10px">     windowsPhone = userAgent.indexOf('Windows Phone') !== -1;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -441,8 +441,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">       contentEditable: contentEditable,
</span><span class="cx" style="display: block; padding: 0 10px">       transparentSrc: 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7',
</span><span class="cx" style="display: block; padding: 0 10px">       caretAfter: ie !== 8,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      range: window.getSelection && 'Range' in window,
-      documentMode: ie && !ie12 ? document.documentMode || 7 : 10,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      range: domGlobals.window.getSelection && 'Range' in domGlobals.window,
+      documentMode: ie && !ie12 ? domGlobals.document.documentMode || 7 : 10,
</ins><span class="cx" style="display: block; padding: 0 10px">       fileApi: fileApi,
</span><span class="cx" style="display: block; padding: 0 10px">       ceFalse: ie === false || ie > 8,
</span><span class="cx" style="display: block; padding: 0 10px">       cacheSuffix: null,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -625,8 +625,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var promiseObj = window.Promise ? window.Promise : promise();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var requestAnimationFramePromise;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var requestAnimationFrame$$1 = function (callback, element) {
-      var i, requestAnimationFrameFunc = window.requestAnimationFrame;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var requestAnimationFrame = function (callback, element) {
+      var i, requestAnimationFrameFunc = domGlobals.window.requestAnimationFrame;
</ins><span class="cx" style="display: block; padding: 0 10px">       var vendors = [
</span><span class="cx" style="display: block; padding: 0 10px">         'ms',
</span><span class="cx" style="display: block; padding: 0 10px">         'moz',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -633,10 +633,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">         'webkit'
</span><span class="cx" style="display: block; padding: 0 10px">       ];
</span><span class="cx" style="display: block; padding: 0 10px">       var featurefill = function (callback) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        window.setTimeout(callback, 0);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        domGlobals.window.setTimeout(callback, 0);
</ins><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       for (i = 0; i < vendors.length && !requestAnimationFrameFunc; i++) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        requestAnimationFrameFunc = window[vendors[i] + 'RequestAnimationFrame'];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        requestAnimationFrameFunc = domGlobals.window[vendors[i] + 'RequestAnimationFrame'];
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       if (!requestAnimationFrameFunc) {
</span><span class="cx" style="display: block; padding: 0 10px">         requestAnimationFrameFunc = featurefill;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -683,9 +683,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         requestAnimationFramePromise = new promiseObj(function (resolve) {
</span><span class="cx" style="display: block; padding: 0 10px">           if (!element) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            element = document.body;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            element = domGlobals.document.body;
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          requestAnimationFrame$$1(resolve, element);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          requestAnimationFrame(resolve, element);
</ins><span class="cx" style="display: block; padding: 0 10px">         }).then(callback);
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       setTimeout: wrappedSetTimeout,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -725,8 +725,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">       webkitMovementY: 1,
</span><span class="cx" style="display: block; padding: 0 10px">       keyIdentifier: 1
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var hasIsDefaultPrevented = function (event$$1) {
-      return event$$1.isDefaultPrevented === returnTrue || event$$1.isDefaultPrevented === returnFalse;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var hasIsDefaultPrevented = function (event) {
+      return event.isDefaultPrevented === returnTrue || event.isDefaultPrevented === returnFalse;
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var returnFalse = function () {
</span><span class="cx" style="display: block; padding: 0 10px">       return false;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -734,23 +734,23 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var returnTrue = function () {
</span><span class="cx" style="display: block; padding: 0 10px">       return true;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var addEvent = function (target, name$$1, callback, capture) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var addEvent = function (target, name, callback, capture) {
</ins><span class="cx" style="display: block; padding: 0 10px">       if (target.addEventListener) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        target.addEventListener(name$$1, callback, capture || false);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        target.addEventListener(name, callback, capture || false);
</ins><span class="cx" style="display: block; padding: 0 10px">       } else if (target.attachEvent) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        target.attachEvent('on' + name$$1, callback);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        target.attachEvent('on' + name, callback);
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var removeEvent = function (target, name$$1, callback, capture) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var removeEvent = function (target, name, callback, capture) {
</ins><span class="cx" style="display: block; padding: 0 10px">       if (target.removeEventListener) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        target.removeEventListener(name$$1, callback, capture || false);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        target.removeEventListener(name, callback, capture || false);
</ins><span class="cx" style="display: block; padding: 0 10px">       } else if (target.detachEvent) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        target.detachEvent('on' + name$$1, callback);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        target.detachEvent('on' + name, callback);
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var getTargetFromShadowDom = function (event$$1, defaultTarget) {
-      if (event$$1.composedPath) {
-        var composedPath = event$$1.composedPath();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var getTargetFromShadowDom = function (event, defaultTarget) {
+      if (event.composedPath) {
+        var composedPath = event.composedPath();
</ins><span class="cx" style="display: block; padding: 0 10px">         if (composedPath && composedPath.length > 0) {
</span><span class="cx" style="display: block; padding: 0 10px">           return composedPath[0];
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -758,28 +758,28 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return defaultTarget;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var fix = function (originalEvent, data) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var name$$1;
-      var event$$1 = data || {};
-      for (name$$1 in originalEvent) {
-        if (!deprecated[name$$1]) {
-          event$$1[name$$1] = originalEvent[name$$1];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var name;
+      var event = data || {};
+      for (name in originalEvent) {
+        if (!deprecated[name]) {
+          event[name] = originalEvent[name];
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      if (!event$$1.target) {
-        event$$1.target = event$$1.srcElement || document;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      if (!event.target) {
+        event.target = event.srcElement || domGlobals.document;
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       if (Env.experimentalShadowDom) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        event$$1.target = getTargetFromShadowDom(originalEvent, event$$1.target);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        event.target = getTargetFromShadowDom(originalEvent, event.target);
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       if (originalEvent && mouseEventRe.test(originalEvent.type) && originalEvent.pageX === undefined && originalEvent.clientX !== undefined) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var eventDoc = event$$1.target.ownerDocument || document;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var eventDoc = event.target.ownerDocument || domGlobals.document;
</ins><span class="cx" style="display: block; padding: 0 10px">         var doc = eventDoc.documentElement;
</span><span class="cx" style="display: block; padding: 0 10px">         var body = eventDoc.body;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        event$$1.pageX = originalEvent.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);
-        event$$1.pageY = originalEvent.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        event.pageX = originalEvent.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);
+        event.pageY = originalEvent.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      event$$1.preventDefault = function () {
-        event$$1.isDefaultPrevented = returnTrue;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      event.preventDefault = function () {
+        event.isDefaultPrevented = returnTrue;
</ins><span class="cx" style="display: block; padding: 0 10px">         if (originalEvent) {
</span><span class="cx" style="display: block; padding: 0 10px">           if (originalEvent.preventDefault) {
</span><span class="cx" style="display: block; padding: 0 10px">             originalEvent.preventDefault();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -788,8 +788,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      event$$1.stopPropagation = function () {
-        event$$1.isPropagationStopped = returnTrue;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      event.stopPropagation = function () {
+        event.isPropagationStopped = returnTrue;
</ins><span class="cx" style="display: block; padding: 0 10px">         if (originalEvent) {
</span><span class="cx" style="display: block; padding: 0 10px">           if (originalEvent.stopPropagation) {
</span><span class="cx" style="display: block; padding: 0 10px">             originalEvent.stopPropagation();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -798,24 +798,24 @@
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      event$$1.stopImmediatePropagation = function () {
-        event$$1.isImmediatePropagationStopped = returnTrue;
-        event$$1.stopPropagation();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      event.stopImmediatePropagation = function () {
+        event.isImmediatePropagationStopped = returnTrue;
+        event.stopPropagation();
</ins><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      if (hasIsDefaultPrevented(event$$1) === false) {
-        event$$1.isDefaultPrevented = returnFalse;
-        event$$1.isPropagationStopped = returnFalse;
-        event$$1.isImmediatePropagationStopped = returnFalse;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      if (hasIsDefaultPrevented(event) === false) {
+        event.isDefaultPrevented = returnFalse;
+        event.isPropagationStopped = returnFalse;
+        event.isImmediatePropagationStopped = returnFalse;
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      if (typeof event$$1.metaKey === 'undefined') {
-        event$$1.metaKey = false;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      if (typeof event.metaKey === 'undefined') {
+        event.metaKey = false;
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return event$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return event;
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var bindOnReady = function (win, callback, eventUtils) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var doc = win.document, event$$1 = { type: 'ready' };
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var doc = win.document, event = { type: 'ready' };
</ins><span class="cx" style="display: block; padding: 0 10px">       if (eventUtils.domLoaded) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        callback(event$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        callback(event);
</ins><span class="cx" style="display: block; padding: 0 10px">         return;
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       var isDocReady = function () {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -824,7 +824,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var readyHandler = function () {
</span><span class="cx" style="display: block; padding: 0 10px">         if (!eventUtils.domLoaded) {
</span><span class="cx" style="display: block; padding: 0 10px">           eventUtils.domLoaded = true;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          callback(event$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          callback(event);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var waitForDomLoaded = function () {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -857,18 +857,18 @@
</span><span class="cx" style="display: block; padding: 0 10px">       addEvent(win, 'load', readyHandler);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var EventUtils = function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">       var events = {}, count, expando, hasFocusIn, hasMouseEnterLeave, mouseEnterLeave;
</span><span class="cx" style="display: block; padding: 0 10px">       expando = eventExpandoPrefix + (+new Date()).toString(32);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      hasMouseEnterLeave = 'onmouseenter' in document.documentElement;
-      hasFocusIn = 'onfocusin' in document.documentElement;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      hasMouseEnterLeave = 'onmouseenter' in domGlobals.document.documentElement;
+      hasFocusIn = 'onfocusin' in domGlobals.document.documentElement;
</ins><span class="cx" style="display: block; padding: 0 10px">       mouseEnterLeave = {
</span><span class="cx" style="display: block; padding: 0 10px">         mouseenter: 'mouseover',
</span><span class="cx" style="display: block; padding: 0 10px">         mouseleave: 'mouseout'
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       count = 1;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      self$$1.domLoaded = false;
-      self$$1.events = events;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      self.domLoaded = false;
+      self.events = events;
</ins><span class="cx" style="display: block; padding: 0 10px">       var executeHandlers = function (evt, id) {
</span><span class="cx" style="display: block; padding: 0 10px">         var callbackList, i, l, callback;
</span><span class="cx" style="display: block; padding: 0 10px">         var container = events[id];
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -885,9 +885,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      self$$1.bind = function (target, names, callback, scope) {
-        var id, callbackList, i, name$$1, fakeName, nativeHandler, capture;
-        var win = window;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      self.bind = function (target, names, callback, scope) {
+        var id, callbackList, i, name, fakeName, nativeHandler, capture;
+        var win = domGlobals.window;
</ins><span class="cx" style="display: block; padding: 0 10px">         var defaultNativeHandler = function (evt) {
</span><span class="cx" style="display: block; padding: 0 10px">           executeHandlers(fix(evt || win.event), id);
</span><span class="cx" style="display: block; padding: 0 10px">         };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -905,18 +905,18 @@
</span><span class="cx" style="display: block; padding: 0 10px">         names = names.split(' ');
</span><span class="cx" style="display: block; padding: 0 10px">         i = names.length;
</span><span class="cx" style="display: block; padding: 0 10px">         while (i--) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          name$$1 = names[i];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          name = names[i];
</ins><span class="cx" style="display: block; padding: 0 10px">           nativeHandler = defaultNativeHandler;
</span><span class="cx" style="display: block; padding: 0 10px">           fakeName = capture = false;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (name$$1 === 'DOMContentLoaded') {
-            name$$1 = 'ready';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (name === 'DOMContentLoaded') {
+            name = 'ready';
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (self$$1.domLoaded && name$$1 === 'ready' && target.readyState === 'complete') {
-            callback.call(scope, fix({ type: name$$1 }));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (self.domLoaded && name === 'ready' && target.readyState === 'complete') {
+            callback.call(scope, fix({ type: name }));
</ins><span class="cx" style="display: block; padding: 0 10px">             continue;
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           if (!hasMouseEnterLeave) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            fakeName = mouseEnterLeave[name$$1];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            fakeName = mouseEnterLeave[name];
</ins><span class="cx" style="display: block; padding: 0 10px">             if (fakeName) {
</span><span class="cx" style="display: block; padding: 0 10px">               nativeHandler = function (evt) {
</span><span class="cx" style="display: block; padding: 0 10px">                 var current, related;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -938,9 +938,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">               };
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (!hasFocusIn && (name$$1 === 'focusin' || name$$1 === 'focusout')) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (!hasFocusIn && (name === 'focusin' || name === 'focusout')) {
</ins><span class="cx" style="display: block; padding: 0 10px">             capture = true;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            fakeName = name$$1 === 'focusin' ? 'focus' : 'blur';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            fakeName = name === 'focusin' ? 'focus' : 'blur';
</ins><span class="cx" style="display: block; padding: 0 10px">             nativeHandler = function (evt) {
</span><span class="cx" style="display: block; padding: 0 10px">               evt = fix(evt || win.event);
</span><span class="cx" style="display: block; padding: 0 10px">               evt.type = evt.type === 'focus' ? 'focusin' : 'focusout';
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -947,9 +947,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">               executeHandlers(evt, id);
</span><span class="cx" style="display: block; padding: 0 10px">             };
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          callbackList = events[id][name$$1];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          callbackList = events[id][name];
</ins><span class="cx" style="display: block; padding: 0 10px">           if (!callbackList) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            events[id][name$$1] = callbackList = [{
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            events[id][name] = callbackList = [{
</ins><span class="cx" style="display: block; padding: 0 10px">                 func: callback,
</span><span class="cx" style="display: block; padding: 0 10px">                 scope: scope
</span><span class="cx" style="display: block; padding: 0 10px">               }];
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -956,14 +956,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">             callbackList.fakeName = fakeName;
</span><span class="cx" style="display: block; padding: 0 10px">             callbackList.capture = capture;
</span><span class="cx" style="display: block; padding: 0 10px">             callbackList.nativeHandler = nativeHandler;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            if (name$$1 === 'ready') {
-              bindOnReady(target, nativeHandler, self$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            if (name === 'ready') {
+              bindOnReady(target, nativeHandler, self);
</ins><span class="cx" style="display: block; padding: 0 10px">             } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              addEvent(target, fakeName || name$$1, nativeHandler, capture);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              addEvent(target, fakeName || name, nativeHandler, capture);
</ins><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            if (name$$1 === 'ready' && self$$1.domLoaded) {
-              callback({ type: name$$1 });
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            if (name === 'ready' && self.domLoaded) {
+              callback({ type: name });
</ins><span class="cx" style="display: block; padding: 0 10px">             } else {
</span><span class="cx" style="display: block; padding: 0 10px">               callbackList.push({
</span><span class="cx" style="display: block; padding: 0 10px">                 func: callback,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -975,10 +975,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">         target = callbackList = 0;
</span><span class="cx" style="display: block; padding: 0 10px">         return callback;
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      self$$1.unbind = function (target, names, callback) {
-        var id, callbackList, i, ci, name$$1, eventMap;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      self.unbind = function (target, names, callback) {
+        var id, callbackList, i, ci, name, eventMap;
</ins><span class="cx" style="display: block; padding: 0 10px">         if (!target || target.nodeType === 3 || target.nodeType === 8) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          return self;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         id = target[expando];
</span><span class="cx" style="display: block; padding: 0 10px">         if (id) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -987,8 +987,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">             names = names.split(' ');
</span><span class="cx" style="display: block; padding: 0 10px">             i = names.length;
</span><span class="cx" style="display: block; padding: 0 10px">             while (i--) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              name$$1 = names[i];
-              callbackList = eventMap[name$$1];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              name = names[i];
+              callbackList = eventMap[name];
</ins><span class="cx" style="display: block; padding: 0 10px">               if (callbackList) {
</span><span class="cx" style="display: block; padding: 0 10px">                 if (callback) {
</span><span class="cx" style="display: block; padding: 0 10px">                   ci = callbackList.length;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1000,25 +1000,25 @@
</span><span class="cx" style="display: block; padding: 0 10px">                       callbackList.nativeHandler = nativeHandler;
</span><span class="cx" style="display: block; padding: 0 10px">                       callbackList.fakeName = fakeName;
</span><span class="cx" style="display: block; padding: 0 10px">                       callbackList.capture = capture;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                      eventMap[name$$1] = callbackList;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                      eventMap[name] = callbackList;
</ins><span class="cx" style="display: block; padding: 0 10px">                     }
</span><span class="cx" style="display: block; padding: 0 10px">                   }
</span><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px">                 if (!callback || callbackList.length === 0) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                  delete eventMap[name$$1];
-                  removeEvent(target, callbackList.fakeName || name$$1, callbackList.nativeHandler, callbackList.capture);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                  delete eventMap[name];
+                  removeEvent(target, callbackList.fakeName || name, callbackList.nativeHandler, callbackList.capture);
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px">               }
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            for (name$$1 in eventMap) {
-              callbackList = eventMap[name$$1];
-              removeEvent(target, callbackList.fakeName || name$$1, callbackList.nativeHandler, callbackList.capture);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            for (name in eventMap) {
+              callbackList = eventMap[name];
+              removeEvent(target, callbackList.fakeName || name, callbackList.nativeHandler, callbackList.capture);
</ins><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">             eventMap = {};
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          for (name$$1 in eventMap) {
-            return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          for (name in eventMap) {
+            return self;
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           delete events[id];
</span><span class="cx" style="display: block; padding: 0 10px">           try {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1027,15 +1027,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">             target[expando] = null;
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return self;
</ins><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      self$$1.fire = function (target, name$$1, args) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      self.fire = function (target, name, args) {
</ins><span class="cx" style="display: block; padding: 0 10px">         var id;
</span><span class="cx" style="display: block; padding: 0 10px">         if (!target || target.nodeType === 3 || target.nodeType === 8) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          return self;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         args = fix(null, args);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        args.type = name$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        args.type = name;
</ins><span class="cx" style="display: block; padding: 0 10px">         args.target = target;
</span><span class="cx" style="display: block; padding: 0 10px">         do {
</span><span class="cx" style="display: block; padding: 0 10px">           id = target[expando];
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1044,13 +1044,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           target = target.parentNode || target.ownerDocument || target.defaultView || target.parentWindow;
</span><span class="cx" style="display: block; padding: 0 10px">         } while (target && !args.isPropagationStopped());
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return self;
</ins><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      self$$1.clean = function (target) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      self.clean = function (target) {
</ins><span class="cx" style="display: block; padding: 0 10px">         var i, children;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var unbind = self$$1.unbind;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var unbind = self.unbind;
</ins><span class="cx" style="display: block; padding: 0 10px">         if (!target || target.nodeType === 3 || target.nodeType === 8) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          return self;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (target[expando]) {
</span><span class="cx" style="display: block; padding: 0 10px">           unbind(target);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1069,12 +1069,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return self;
</ins><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      self$$1.destroy = function () {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      self.destroy = function () {
</ins><span class="cx" style="display: block; padding: 0 10px">         events = {};
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      self$$1.cancel = function (e) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      self.cancel = function (e) {
</ins><span class="cx" style="display: block; padding: 0 10px">         if (e) {
</span><span class="cx" style="display: block; padding: 0 10px">           e.preventDefault();
</span><span class="cx" style="display: block; padding: 0 10px">           e.stopImmediatePropagation();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1083,10 +1083,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     EventUtils.Event = new EventUtils();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    EventUtils.Event.bind(window, 'ready', function () {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    EventUtils.Event.bind(domGlobals.window, 'ready', function () {
</ins><span class="cx" style="display: block; padding: 0 10px">     });
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var i, support, Expr, getText, isXML, tokenize, compile, select, outermostContext, sortInput, hasDuplicate, setDocument, document$1, docElem, documentIsHTML, rbuggyQSA, rbuggyMatches, matches, contains$1, expando = 'sizzle' + -new Date(), preferredDoc = window.document, dirruns = 0, done = 0, classCache = createCache(), tokenCache = createCache(), compilerCache = createCache(), sortOrder = function (a, b) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var i, support, Expr, getText, isXML, tokenize, compile, select, outermostContext, sortInput, hasDuplicate, setDocument, document, docElem, documentIsHTML, rbuggyQSA, rbuggyMatches, matches, contains$1, expando = 'sizzle' + -new Date(), preferredDoc = domGlobals.window.document, dirruns = 0, done = 0, classCache = createCache(), tokenCache = createCache(), compilerCache = createCache(), sortOrder = function (a, b) {
</ins><span class="cx" style="display: block; padding: 0 10px">         if (a === b) {
</span><span class="cx" style="display: block; padding: 0 10px">           hasDuplicate = true;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1129,10 +1129,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">     }
</span><span class="cx" style="display: block; padding: 0 10px">     var Sizzle = function (selector, context, results, seed) {
</span><span class="cx" style="display: block; padding: 0 10px">       var match, elem, m, nodeType, i, groups, old, nid, newContext, newSelector;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      if ((context ? context.ownerDocument || context : preferredDoc) !== document$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      if ((context ? context.ownerDocument || context : preferredDoc) !== document) {
</ins><span class="cx" style="display: block; padding: 0 10px">         setDocument(context);
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      context = context || document$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      context = context || document;
</ins><span class="cx" style="display: block; padding: 0 10px">       results = results || [];
</span><span class="cx" style="display: block; padding: 0 10px">       if (!selector || typeof selector !== 'string') {
</span><span class="cx" style="display: block; padding: 0 10px">         return results;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1231,14 +1231,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">     }
</span><span class="cx" style="display: block; padding: 0 10px">     function createInputPseudo(type) {
</span><span class="cx" style="display: block; padding: 0 10px">       return function (elem) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var name$$1 = elem.nodeName.toLowerCase();
-        return name$$1 === 'input' && elem.type === type;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var name = elem.nodeName.toLowerCase();
+        return name === 'input' && elem.type === type;
</ins><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">     }
</span><span class="cx" style="display: block; padding: 0 10px">     function createButtonPseudo(type) {
</span><span class="cx" style="display: block; padding: 0 10px">       return function (elem) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var name$$1 = elem.nodeName.toLowerCase();
-        return (name$$1 === 'input' || name$$1 === 'button') && elem.type === type;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var name = elem.nodeName.toLowerCase();
+        return (name === 'input' || name === 'button') && elem.type === type;
</ins><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">     }
</span><span class="cx" style="display: block; padding: 0 10px">     function createPositionalPseudo(fn) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1263,7 +1263,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return documentElement ? documentElement.nodeName !== 'HTML' : false;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     setDocument = Sizzle.setDocument = function (node) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var hasCompare, doc = node ? node.ownerDocument || node : preferredDoc, parent$$1 = doc.defaultView;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var hasCompare, doc = node ? node.ownerDocument || node : preferredDoc, parent = doc.defaultView;
</ins><span class="cx" style="display: block; padding: 0 10px">       function getTop(win) {
</span><span class="cx" style="display: block; padding: 0 10px">         try {
</span><span class="cx" style="display: block; padding: 0 10px">           return win.top;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1271,19 +1271,19 @@
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         return null;
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      if (doc === document$1 || doc.nodeType !== 9 || !doc.documentElement) {
-        return document$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      if (doc === document || doc.nodeType !== 9 || !doc.documentElement) {
+        return document;
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      document$1 = doc;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      document = doc;
</ins><span class="cx" style="display: block; padding: 0 10px">       docElem = doc.documentElement;
</span><span class="cx" style="display: block; padding: 0 10px">       documentIsHTML = !isXML(doc);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      if (parent$$1 && parent$$1 !== getTop(parent$$1)) {
-        if (parent$$1.addEventListener) {
-          parent$$1.addEventListener('unload', function () {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      if (parent && parent !== getTop(parent)) {
+        if (parent.addEventListener) {
+          parent.addEventListener('unload', function () {
</ins><span class="cx" style="display: block; padding: 0 10px">             setDocument();
</span><span class="cx" style="display: block; padding: 0 10px">           }, false);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        } else if (parent$$1.attachEvent) {
-          parent$$1.attachEvent('onunload', function () {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        } else if (parent.attachEvent) {
+          parent.attachEvent('onunload', function () {
</ins><span class="cx" style="display: block; padding: 0 10px">             setDocument();
</span><span class="cx" style="display: block; padding: 0 10px">           });
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1394,7 +1394,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return Sizzle(expr, null, null, elements);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     Sizzle.matchesSelector = function (elem, expr) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      if ((elem.ownerDocument || elem) !== document$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      if ((elem.ownerDocument || elem) !== document) {
</ins><span class="cx" style="display: block; padding: 0 10px">         setDocument(elem);
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       expr = expr.replace(rattributeQuotes, '=\'$1\']');
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1407,20 +1407,20 @@
</span><span class="cx" style="display: block; padding: 0 10px">         } catch (e) {
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return Sizzle(expr, document$1, null, [elem]).length > 0;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return Sizzle(expr, document, null, [elem]).length > 0;
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     Sizzle.contains = function (context, elem) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      if ((context.ownerDocument || context) !== document$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      if ((context.ownerDocument || context) !== document) {
</ins><span class="cx" style="display: block; padding: 0 10px">         setDocument(context);
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       return contains$1(context, elem);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    Sizzle.attr = function (elem, name$$1) {
-      if ((elem.ownerDocument || elem) !== document$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    Sizzle.attr = function (elem, name) {
+      if ((elem.ownerDocument || elem) !== document) {
</ins><span class="cx" style="display: block; padding: 0 10px">         setDocument(elem);
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var fn = Expr.attrHandle[name$$1.toLowerCase()], val = fn && hasOwn.call(Expr.attrHandle, name$$1.toLowerCase()) ? fn(elem, name$$1, !documentIsHTML) : undefined;
-      return val !== undefined ? val : support.attributes || !documentIsHTML ? elem.getAttribute(name$$1) : (val = elem.getAttributeNode(name$$1)) && val.specified ? val.value : null;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var fn = Expr.attrHandle[name.toLowerCase()], val = fn && hasOwn.call(Expr.attrHandle, name.toLowerCase()) ? fn(elem, name, !documentIsHTML) : undefined;
+      return val !== undefined ? val : support.attributes || !documentIsHTML ? elem.getAttribute(name) : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null;
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     Sizzle.error = function (msg) {
</span><span class="cx" style="display: block; padding: 0 10px">       throw new Error('Syntax error, unrecognized expression: ' + msg);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1531,9 +1531,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">             return pattern.test(typeof elem.className === 'string' && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute('class') || '');
</span><span class="cx" style="display: block; padding: 0 10px">           });
</span><span class="cx" style="display: block; padding: 0 10px">         },
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        ATTR: function (name$$1, operator, check) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        ATTR: function (name, operator, check) {
</ins><span class="cx" style="display: block; padding: 0 10px">           return function (elem) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            var result = Sizzle.attr(elem, name$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            var result = Sizzle.attr(elem, name);
</ins><span class="cx" style="display: block; padding: 0 10px">             if (result == null) {
</span><span class="cx" style="display: block; padding: 0 10px">               return operator === '!=';
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1549,13 +1549,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">           return first === 1 && last === 0 ? function (elem) {
</span><span class="cx" style="display: block; padding: 0 10px">             return !!elem.parentNode;
</span><span class="cx" style="display: block; padding: 0 10px">           } : function (elem, context, xml) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            var cache, outerCache, node, diff, nodeIndex, start, dir = simple !== forward ? 'nextSibling' : 'previousSibling', parent$$1 = elem.parentNode, name$$1 = ofType && elem.nodeName.toLowerCase(), useCache = !xml && !ofType;
-            if (parent$$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            var cache, outerCache, node, diff, nodeIndex, start, dir = simple !== forward ? 'nextSibling' : 'previousSibling', parent = elem.parentNode, name = ofType && elem.nodeName.toLowerCase(), useCache = !xml && !ofType;
+            if (parent) {
</ins><span class="cx" style="display: block; padding: 0 10px">               if (simple) {
</span><span class="cx" style="display: block; padding: 0 10px">                 while (dir) {
</span><span class="cx" style="display: block; padding: 0 10px">                   node = elem;
</span><span class="cx" style="display: block; padding: 0 10px">                   while (node = node[dir]) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                    if (ofType ? node.nodeName.toLowerCase() === name$$1 : node.nodeType === 1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                    if (ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1) {
</ins><span class="cx" style="display: block; padding: 0 10px">                       return false;
</span><span class="cx" style="display: block; padding: 0 10px">                     }
</span><span class="cx" style="display: block; padding: 0 10px">                   }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1563,13 +1563,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px">                 return true;
</span><span class="cx" style="display: block; padding: 0 10px">               }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              start = [forward ? parent$$1.firstChild : parent$$1.lastChild];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              start = [forward ? parent.firstChild : parent.lastChild];
</ins><span class="cx" style="display: block; padding: 0 10px">               if (forward && useCache) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                outerCache = parent$$1[expando] || (parent$$1[expando] = {});
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                outerCache = parent[expando] || (parent[expando] = {});
</ins><span class="cx" style="display: block; padding: 0 10px">                 cache = outerCache[type] || [];
</span><span class="cx" style="display: block; padding: 0 10px">                 nodeIndex = cache[0] === dirruns && cache[1];
</span><span class="cx" style="display: block; padding: 0 10px">                 diff = cache[0] === dirruns && cache[2];
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                node = nodeIndex && parent$$1.childNodes[nodeIndex];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                node = nodeIndex && parent.childNodes[nodeIndex];
</ins><span class="cx" style="display: block; padding: 0 10px">                 while (node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop()) {
</span><span class="cx" style="display: block; padding: 0 10px">                   if (node.nodeType === 1 && ++diff && node === elem) {
</span><span class="cx" style="display: block; padding: 0 10px">                     outerCache[type] = [
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1584,7 +1584,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                 diff = cache[1];
</span><span class="cx" style="display: block; padding: 0 10px">               } else {
</span><span class="cx" style="display: block; padding: 0 10px">                 while (node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop()) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                  if ((ofType ? node.nodeName.toLowerCase() === name$$1 : node.nodeType === 1) && ++diff) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                  if ((ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1) && ++diff) {
</ins><span class="cx" style="display: block; padding: 0 10px">                     if (useCache) {
</span><span class="cx" style="display: block; padding: 0 10px">                       (node[expando] || (node[expando] = {}))[type] = [
</span><span class="cx" style="display: block; padding: 0 10px">                         dirruns,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1671,7 +1671,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">           };
</span><span class="cx" style="display: block; padding: 0 10px">         }),
</span><span class="cx" style="display: block; padding: 0 10px">         target: function (elem) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          var hash = window.location && window.location.hash;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          var hash = domGlobals.window.location && domGlobals.window.location.hash;
</ins><span class="cx" style="display: block; padding: 0 10px">           return hash && hash.slice(1) === elem.id;
</span><span class="cx" style="display: block; padding: 0 10px">         },
</span><span class="cx" style="display: block; padding: 0 10px">         root: function (elem) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1678,7 +1678,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">           return elem === docElem;
</span><span class="cx" style="display: block; padding: 0 10px">         },
</span><span class="cx" style="display: block; padding: 0 10px">         focus: function (elem) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          return elem === document$1.activeElement && (!document$1.hasFocus || document$1.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
</ins><span class="cx" style="display: block; padding: 0 10px">         },
</span><span class="cx" style="display: block; padding: 0 10px">         enabled: function (elem) {
</span><span class="cx" style="display: block; padding: 0 10px">           return elem.disabled === false;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1714,8 +1714,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">           return rinputs.test(elem.nodeName);
</span><span class="cx" style="display: block; padding: 0 10px">         },
</span><span class="cx" style="display: block; padding: 0 10px">         button: function (elem) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          var name$$1 = elem.nodeName.toLowerCase();
-          return name$$1 === 'input' && elem.type === 'button' || name$$1 === 'button';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          var name = elem.nodeName.toLowerCase();
+          return name === 'input' && elem.type === 'button' || name === 'button';
</ins><span class="cx" style="display: block; padding: 0 10px">         },
</span><span class="cx" style="display: block; padding: 0 10px">         text: function (elem) {
</span><span class="cx" style="display: block; padding: 0 10px">           var attr;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1724,36 +1724,36 @@
</span><span class="cx" style="display: block; padding: 0 10px">         first: createPositionalPseudo(function () {
</span><span class="cx" style="display: block; padding: 0 10px">           return [0];
</span><span class="cx" style="display: block; padding: 0 10px">         }),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        last: createPositionalPseudo(function (matchIndexes, length$$1) {
-          return [length$$1 - 1];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        last: createPositionalPseudo(function (matchIndexes, length) {
+          return [length - 1];
</ins><span class="cx" style="display: block; padding: 0 10px">         }),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        eq: createPositionalPseudo(function (matchIndexes, length$$1, argument) {
-          return [argument < 0 ? argument + length$$1 : argument];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        eq: createPositionalPseudo(function (matchIndexes, length, argument) {
+          return [argument < 0 ? argument + length : argument];
</ins><span class="cx" style="display: block; padding: 0 10px">         }),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        even: createPositionalPseudo(function (matchIndexes, length$$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        even: createPositionalPseudo(function (matchIndexes, length) {
</ins><span class="cx" style="display: block; padding: 0 10px">           var i = 0;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          for (; i < length$$1; i += 2) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          for (; i < length; i += 2) {
</ins><span class="cx" style="display: block; padding: 0 10px">             matchIndexes.push(i);
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           return matchIndexes;
</span><span class="cx" style="display: block; padding: 0 10px">         }),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        odd: createPositionalPseudo(function (matchIndexes, length$$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        odd: createPositionalPseudo(function (matchIndexes, length) {
</ins><span class="cx" style="display: block; padding: 0 10px">           var i = 1;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          for (; i < length$$1; i += 2) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          for (; i < length; i += 2) {
</ins><span class="cx" style="display: block; padding: 0 10px">             matchIndexes.push(i);
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           return matchIndexes;
</span><span class="cx" style="display: block; padding: 0 10px">         }),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        lt: createPositionalPseudo(function (matchIndexes, length$$1, argument) {
-          var i = argument < 0 ? argument + length$$1 : argument;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        lt: createPositionalPseudo(function (matchIndexes, length, argument) {
+          var i = argument < 0 ? argument + length : argument;
</ins><span class="cx" style="display: block; padding: 0 10px">           for (; --i >= 0;) {
</span><span class="cx" style="display: block; padding: 0 10px">             matchIndexes.push(i);
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           return matchIndexes;
</span><span class="cx" style="display: block; padding: 0 10px">         }),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        gt: createPositionalPseudo(function (matchIndexes, length$$1, argument) {
-          var i = argument < 0 ? argument + length$$1 : argument;
-          for (; ++i < length$$1;) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        gt: createPositionalPseudo(function (matchIndexes, length, argument) {
+          var i = argument < 0 ? argument + length : argument;
+          for (; ++i < length;) {
</ins><span class="cx" style="display: block; padding: 0 10px">             matchIndexes.push(i);
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           return matchIndexes;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1980,7 +1980,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var bySet = setMatchers.length > 0, byElement = elementMatchers.length > 0, superMatcher = function (seed, context, xml, results, outermost) {
</span><span class="cx" style="display: block; padding: 0 10px">           var elem, j, matcher, matchedCount = 0, i = '0', unmatched = seed && [], setMatched = [], contextBackup = outermostContext, elems = seed || byElement && Expr.find.TAG('*', outermost), dirrunsUnique = dirruns += contextBackup == null ? 1 : Math.random() || 0.1, len = elems.length;
</span><span class="cx" style="display: block; padding: 0 10px">           if (outermost) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            outermostContext = context !== document$1 && context;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            outermostContext = context !== document && context;
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           for (; i !== len && (elem = elems[i]) != null; i++) {
</span><span class="cx" style="display: block; padding: 0 10px">             if (byElement && elem) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2228,11 +2228,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return Object.prototype.hasOwnProperty.call(obj, prop);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var create = function (s, p, root) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">       var sp, ns, cn, scn, c, de = 0;
</span><span class="cx" style="display: block; padding: 0 10px">       s = /^((static) )?([\w.]+)(:([\w.]+))?/.exec(s);
</span><span class="cx" style="display: block; padding: 0 10px">       cn = s[3].match(/(^|\.)(\w+)$/i)[2];
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      ns = self$$1.createNS(s[3].replace(/\.\w+$/, ''), root);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      ns = self.createNS(s[3].replace(/\.\w+$/, ''), root);
</ins><span class="cx" style="display: block; padding: 0 10px">       if (ns[cn]) {
</span><span class="cx" style="display: block; padding: 0 10px">         return;
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2249,9 +2249,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">         de = 1;
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       ns[cn] = p[cn];
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      self$$1.extend(ns[cn].prototype, p);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      self.extend(ns[cn].prototype, p);
</ins><span class="cx" style="display: block; padding: 0 10px">       if (s[5]) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        sp = self$$1.resolve(s[5]).prototype;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        sp = self.resolve(s[5]).prototype;
</ins><span class="cx" style="display: block; padding: 0 10px">         scn = s[5].match(/\.(\w+)$/i)[1];
</span><span class="cx" style="display: block; padding: 0 10px">         c = ns[cn];
</span><span class="cx" style="display: block; padding: 0 10px">         if (de) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2265,10 +2265,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">           };
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         ns[cn].prototype[cn] = ns[cn];
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.each(sp, function (f, n) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.each(sp, function (f, n) {
</ins><span class="cx" style="display: block; padding: 0 10px">           ns[cn].prototype[n] = sp[n];
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.each(p, function (f, n) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.each(p, function (f, n) {
</ins><span class="cx" style="display: block; padding: 0 10px">           if (sp[n]) {
</span><span class="cx" style="display: block; padding: 0 10px">             ns[cn].prototype[n] = function () {
</span><span class="cx" style="display: block; padding: 0 10px">               this.parent = sp[n];
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2281,7 +2281,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      self$$1.each(p.static, function (f, n) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      self.each(p.static, function (f, n) {
</ins><span class="cx" style="display: block; padding: 0 10px">         ns[cn][n] = f;
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2290,16 +2290,16 @@
</span><span class="cx" style="display: block; padding: 0 10px">       for (var _i = 2; _i < arguments.length; _i++) {
</span><span class="cx" style="display: block; padding: 0 10px">         x[_i - 2] = arguments[_i];
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var i, l, name$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var i, l, name;
</ins><span class="cx" style="display: block; padding: 0 10px">       var args = arguments;
</span><span class="cx" style="display: block; padding: 0 10px">       var value;
</span><span class="cx" style="display: block; padding: 0 10px">       for (i = 1, l = args.length; i < l; i++) {
</span><span class="cx" style="display: block; padding: 0 10px">         ext = args[i];
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        for (name$$1 in ext) {
-          if (ext.hasOwnProperty(name$$1)) {
-            value = ext[name$$1];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        for (name in ext) {
+          if (ext.hasOwnProperty(name)) {
+            value = ext[name];
</ins><span class="cx" style="display: block; padding: 0 10px">             if (value !== undefined) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              obj[name$$1] = value;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              obj[name] = value;
</ins><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2322,7 +2322,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var createNS = function (n, o) {
</span><span class="cx" style="display: block; padding: 0 10px">       var i, v;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      o = o || window;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      o = o || domGlobals.window;
</ins><span class="cx" style="display: block; padding: 0 10px">       n = n.split('.');
</span><span class="cx" style="display: block; padding: 0 10px">       for (i = 0; i < n.length; i++) {
</span><span class="cx" style="display: block; padding: 0 10px">         v = n[i];
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2335,7 +2335,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var resolve$1 = function (n, o) {
</span><span class="cx" style="display: block; padding: 0 10px">       var i, l;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      o = o || window;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      o = o || domGlobals.window;
</ins><span class="cx" style="display: block; padding: 0 10px">       n = n.split('.');
</span><span class="cx" style="display: block; padding: 0 10px">       for (i = 0, l = n.length; i < l; i++) {
</span><span class="cx" style="display: block; padding: 0 10px">         o = o[n[i]];
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2378,9 +2378,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">       _addCacheSuffix: _addCacheSuffix
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var doc = document, push$2 = Array.prototype.push, slice$2 = Array.prototype.slice;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var doc = domGlobals.document, push$2 = Array.prototype.push, slice$2 = Array.prototype.slice;
</ins><span class="cx" style="display: block; padding: 0 10px">     var rquickExpr$1 = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var Event$$1 = EventUtils.Event;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var Event = EventUtils.Event;
</ins><span class="cx" style="display: block; padding: 0 10px">     var skipUniques = Tools.makeMap('children,contents,next,prev');
</span><span class="cx" style="display: block; padding: 0 10px">     var isDefined = function (obj) {
</span><span class="cx" style="display: block; padding: 0 10px">       return typeof obj !== 'undefined';
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2434,14 +2434,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var lastParent, newWrapper;
</span><span class="cx" style="display: block; padding: 0 10px">       wrapper = DomQuery(wrapper)[0];
</span><span class="cx" style="display: block; padding: 0 10px">       elements.each(function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        if (!all || lastParent !== self$$1.parentNode) {
-          lastParent = self$$1.parentNode;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        if (!all || lastParent !== self.parentNode) {
+          lastParent = self.parentNode;
</ins><span class="cx" style="display: block; padding: 0 10px">           newWrapper = wrapper.cloneNode(false);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.parentNode.insertBefore(newWrapper, self$$1);
-          newWrapper.appendChild(self$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.parentNode.insertBefore(newWrapper, self);
+          newWrapper.appendChild(self);
</ins><span class="cx" style="display: block; padding: 0 10px">         } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          newWrapper.appendChild(self$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          newWrapper.appendChild(self);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">       return elements;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2476,10 +2476,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return str === null || str === undefined ? '' : ('' + str).replace(whiteSpaceRegExp$1, '');
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var each$2 = function (obj, callback) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var length$$1, key, i, value;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var length, key, i, value;
</ins><span class="cx" style="display: block; padding: 0 10px">       if (obj) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        length$$1 = obj.length;
-        if (length$$1 === undefined) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        length = obj.length;
+        if (length === undefined) {
</ins><span class="cx" style="display: block; padding: 0 10px">           for (key in obj) {
</span><span class="cx" style="display: block; padding: 0 10px">             if (obj.hasOwnProperty(key)) {
</span><span class="cx" style="display: block; padding: 0 10px">               value = obj[key];
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2489,7 +2489,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          for (i = 0; i < length$$1; i++) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          for (i = 0; i < length; i++) {
</ins><span class="cx" style="display: block; padding: 0 10px">             value = obj[i];
</span><span class="cx" style="display: block; padding: 0 10px">             if (callback.call(value, i, value) === false) {
</span><span class="cx" style="display: block; padding: 0 10px">               break;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2523,26 +2523,26 @@
</span><span class="cx" style="display: block; padding: 0 10px">       context: null,
</span><span class="cx" style="display: block; padding: 0 10px">       length: 0,
</span><span class="cx" style="display: block; padding: 0 10px">       init: function (selector, context) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">         var match, node;
</span><span class="cx" style="display: block; padding: 0 10px">         if (!selector) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          return self;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (selector.nodeType) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.context = self$$1[0] = selector;
-          self$$1.length = 1;
-          return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.context = self[0] = selector;
+          self.length = 1;
+          return self;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (context && context.nodeType) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.context = context;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.context = context;
</ins><span class="cx" style="display: block; padding: 0 10px">         } else {
</span><span class="cx" style="display: block; padding: 0 10px">           if (context) {
</span><span class="cx" style="display: block; padding: 0 10px">             return DomQuery(selector).attr(context);
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.context = context = document;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.context = context = domGlobals.document;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (isString$1(selector)) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.selector = selector;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.selector = selector;
</ins><span class="cx" style="display: block; padding: 0 10px">           if (selector.charAt(0) === '<' && selector.charAt(selector.length - 1) === '>' && selector.length >= 3) {
</span><span class="cx" style="display: block; padding: 0 10px">             match = [
</span><span class="cx" style="display: block; padding: 0 10px">               null,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2556,19 +2556,19 @@
</span><span class="cx" style="display: block; padding: 0 10px">             if (match[1]) {
</span><span class="cx" style="display: block; padding: 0 10px">               node = createFragment(selector, getElementDocument(context)).firstChild;
</span><span class="cx" style="display: block; padding: 0 10px">               while (node) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                push$2.call(self$$1, node);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                push$2.call(self, node);
</ins><span class="cx" style="display: block; padding: 0 10px">                 node = node.nextSibling;
</span><span class="cx" style="display: block; padding: 0 10px">               }
</span><span class="cx" style="display: block; padding: 0 10px">             } else {
</span><span class="cx" style="display: block; padding: 0 10px">               node = getElementDocument(context).getElementById(match[2]);
</span><span class="cx" style="display: block; padding: 0 10px">               if (!node) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                return self;
</ins><span class="cx" style="display: block; padding: 0 10px">               }
</span><span class="cx" style="display: block; padding: 0 10px">               if (node.id !== match[2]) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                return self$$1.find(selector);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                return self.find(selector);
</ins><span class="cx" style="display: block; padding: 0 10px">               }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              self$$1.length = 1;
-              self$$1[0] = node;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              self.length = 1;
+              self[0] = node;
</ins><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           } else {
</span><span class="cx" style="display: block; padding: 0 10px">             return DomQuery(context).find(selector);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2576,61 +2576,61 @@
</span><span class="cx" style="display: block; padding: 0 10px">         } else {
</span><span class="cx" style="display: block; padding: 0 10px">           this.add(selector, false);
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return self;
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       toArray: function () {
</span><span class="cx" style="display: block; padding: 0 10px">         return Tools.toArray(this);
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       add: function (items, sort) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">         var nodes, i;
</span><span class="cx" style="display: block; padding: 0 10px">         if (isString$1(items)) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          return self$$1.add(DomQuery(items));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          return self.add(DomQuery(items));
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (sort !== false) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          nodes = DomQuery.unique(self$$1.toArray().concat(DomQuery.makeArray(items)));
-          self$$1.length = nodes.length;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          nodes = DomQuery.unique(self.toArray().concat(DomQuery.makeArray(items)));
+          self.length = nodes.length;
</ins><span class="cx" style="display: block; padding: 0 10px">           for (i = 0; i < nodes.length; i++) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            self$$1[i] = nodes[i];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            self[i] = nodes[i];
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          push$2.apply(self$$1, DomQuery.makeArray(items));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          push$2.apply(self, DomQuery.makeArray(items));
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return self;
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      attr: function (name$$1, value) {
-        var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      attr: function (name, value) {
+        var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">         var hook;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (typeof name$$1 === 'object') {
-          each$2(name$$1, function (name$$1, value) {
-            self$$1.attr(name$$1, value);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (typeof name === 'object') {
+          each$2(name, function (name, value) {
+            self.attr(name, value);
</ins><span class="cx" style="display: block; padding: 0 10px">           });
</span><span class="cx" style="display: block; padding: 0 10px">         } else if (isDefined(value)) {
</span><span class="cx" style="display: block; padding: 0 10px">           this.each(function () {
</span><span class="cx" style="display: block; padding: 0 10px">             var hook;
</span><span class="cx" style="display: block; padding: 0 10px">             if (this.nodeType === 1) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              hook = attrHooks[name$$1];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              hook = attrHooks[name];
</ins><span class="cx" style="display: block; padding: 0 10px">               if (hook && hook.set) {
</span><span class="cx" style="display: block; padding: 0 10px">                 hook.set(this, value);
</span><span class="cx" style="display: block; padding: 0 10px">                 return;
</span><span class="cx" style="display: block; padding: 0 10px">               }
</span><span class="cx" style="display: block; padding: 0 10px">               if (value === null) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                this.removeAttribute(name$$1, 2);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                this.removeAttribute(name, 2);
</ins><span class="cx" style="display: block; padding: 0 10px">               } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                this.setAttribute(name$$1, value, 2);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                this.setAttribute(name, value, 2);
</ins><span class="cx" style="display: block; padding: 0 10px">               }
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           });
</span><span class="cx" style="display: block; padding: 0 10px">         } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (self$$1[0] && self$$1[0].nodeType === 1) {
-            hook = attrHooks[name$$1];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (self[0] && self[0].nodeType === 1) {
+            hook = attrHooks[name];
</ins><span class="cx" style="display: block; padding: 0 10px">             if (hook && hook.get) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              return hook.get(self$$1[0], name$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              return hook.get(self[0], name);
</ins><span class="cx" style="display: block; padding: 0 10px">             }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            if (booleanMap[name$$1]) {
-              return self$$1.prop(name$$1) ? name$$1 : undefined;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            if (booleanMap[name]) {
+              return self.prop(name) ? name : undefined;
</ins><span class="cx" style="display: block; padding: 0 10px">             }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            value = self$$1[0].getAttribute(name$$1, 2);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            value = self[0].getAttribute(name, 2);
</ins><span class="cx" style="display: block; padding: 0 10px">             if (value === null) {
</span><span class="cx" style="display: block; padding: 0 10px">               value = undefined;
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2637,101 +2637,101 @@
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           return value;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return self;
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      removeAttr: function (name$$1) {
-        return this.attr(name$$1, null);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      removeAttr: function (name) {
+        return this.attr(name, null);
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      prop: function (name$$1, value) {
-        var self$$1 = this;
-        name$$1 = propFix[name$$1] || name$$1;
-        if (typeof name$$1 === 'object') {
-          each$2(name$$1, function (name$$1, value) {
-            self$$1.prop(name$$1, value);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      prop: function (name, value) {
+        var self = this;
+        name = propFix[name] || name;
+        if (typeof name === 'object') {
+          each$2(name, function (name, value) {
+            self.prop(name, value);
</ins><span class="cx" style="display: block; padding: 0 10px">           });
</span><span class="cx" style="display: block; padding: 0 10px">         } else if (isDefined(value)) {
</span><span class="cx" style="display: block; padding: 0 10px">           this.each(function () {
</span><span class="cx" style="display: block; padding: 0 10px">             if (this.nodeType === 1) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              this[name$$1] = value;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              this[name] = value;
</ins><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           });
</span><span class="cx" style="display: block; padding: 0 10px">         } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (self$$1[0] && self$$1[0].nodeType && name$$1 in self$$1[0]) {
-            return self$$1[0][name$$1];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (self[0] && self[0].nodeType && name in self[0]) {
+            return self[0][name];
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           return value;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return self;
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      css: function (name$$1, value) {
-        var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      css: function (name, value) {
+        var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">         var elm, hook;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var camel = function (name$$1) {
-          return name$$1.replace(/-(\D)/g, function (a, b) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var camel = function (name) {
+          return name.replace(/-(\D)/g, function (a, b) {
</ins><span class="cx" style="display: block; padding: 0 10px">             return b.toUpperCase();
</span><span class="cx" style="display: block; padding: 0 10px">           });
</span><span class="cx" style="display: block; padding: 0 10px">         };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var dashed = function (name$$1) {
-          return name$$1.replace(/[A-Z]/g, function (a) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var dashed = function (name) {
+          return name.replace(/[A-Z]/g, function (a) {
</ins><span class="cx" style="display: block; padding: 0 10px">             return '-' + a;
</span><span class="cx" style="display: block; padding: 0 10px">           });
</span><span class="cx" style="display: block; padding: 0 10px">         };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (typeof name$$1 === 'object') {
-          each$2(name$$1, function (name$$1, value) {
-            self$$1.css(name$$1, value);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (typeof name === 'object') {
+          each$2(name, function (name, value) {
+            self.css(name, value);
</ins><span class="cx" style="display: block; padding: 0 10px">           });
</span><span class="cx" style="display: block; padding: 0 10px">         } else {
</span><span class="cx" style="display: block; padding: 0 10px">           if (isDefined(value)) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            name$$1 = camel(name$$1);
-            if (typeof value === 'number' && !numericCssMap[name$$1]) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            name = camel(name);
+            if (typeof value === 'number' && !numericCssMap[name]) {
</ins><span class="cx" style="display: block; padding: 0 10px">               value = value.toString() + 'px';
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            self$$1.each(function () {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            self.each(function () {
</ins><span class="cx" style="display: block; padding: 0 10px">               var style = this.style;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              hook = cssHooks[name$$1];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              hook = cssHooks[name];
</ins><span class="cx" style="display: block; padding: 0 10px">               if (hook && hook.set) {
</span><span class="cx" style="display: block; padding: 0 10px">                 hook.set(this, value);
</span><span class="cx" style="display: block; padding: 0 10px">                 return;
</span><span class="cx" style="display: block; padding: 0 10px">               }
</span><span class="cx" style="display: block; padding: 0 10px">               try {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                this.style[cssFix[name$$1] || name$$1] = value;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                this.style[cssFix[name] || name] = value;
</ins><span class="cx" style="display: block; padding: 0 10px">               } catch (ex) {
</span><span class="cx" style="display: block; padding: 0 10px">               }
</span><span class="cx" style="display: block; padding: 0 10px">               if (value === null || value === '') {
</span><span class="cx" style="display: block; padding: 0 10px">                 if (style.removeProperty) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                  style.removeProperty(dashed(name$$1));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                  style.removeProperty(dashed(name));
</ins><span class="cx" style="display: block; padding: 0 10px">                 } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                  style.removeAttribute(name$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                  style.removeAttribute(name);
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px">               }
</span><span class="cx" style="display: block; padding: 0 10px">             });
</span><span class="cx" style="display: block; padding: 0 10px">           } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            elm = self$$1[0];
-            hook = cssHooks[name$$1];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            elm = self[0];
+            hook = cssHooks[name];
</ins><span class="cx" style="display: block; padding: 0 10px">             if (hook && hook.get) {
</span><span class="cx" style="display: block; padding: 0 10px">               return hook.get(elm);
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">             if (elm.ownerDocument.defaultView) {
</span><span class="cx" style="display: block; padding: 0 10px">               try {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                return elm.ownerDocument.defaultView.getComputedStyle(elm, null).getPropertyValue(dashed(name$$1));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                return elm.ownerDocument.defaultView.getComputedStyle(elm, null).getPropertyValue(dashed(name));
</ins><span class="cx" style="display: block; padding: 0 10px">               } catch (ex) {
</span><span class="cx" style="display: block; padding: 0 10px">                 return undefined;
</span><span class="cx" style="display: block; padding: 0 10px">               }
</span><span class="cx" style="display: block; padding: 0 10px">             } else if (elm.currentStyle) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              return elm.currentStyle[camel(name$$1)];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              return elm.currentStyle[camel(name)];
</ins><span class="cx" style="display: block; padding: 0 10px">             } else {
</span><span class="cx" style="display: block; padding: 0 10px">               return '';
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return self;
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       remove: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">         var node, i = this.length;
</span><span class="cx" style="display: block; padding: 0 10px">         while (i--) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          node = self$$1[i];
-          Event$$1.clean(node);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          node = self[i];
+          Event.clean(node);
</ins><span class="cx" style="display: block; padding: 0 10px">           if (node.parentNode) {
</span><span class="cx" style="display: block; padding: 0 10px">             node.parentNode.removeChild(node);
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2739,10 +2739,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return this;
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       empty: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">         var node, i = this.length;
</span><span class="cx" style="display: block; padding: 0 10px">         while (i--) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          node = self$$1[i];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          node = self[i];
</ins><span class="cx" style="display: block; padding: 0 10px">           while (node.firstChild) {
</span><span class="cx" style="display: block; padding: 0 10px">             node.removeChild(node.firstChild);
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2750,36 +2750,36 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return this;
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       html: function (value) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">         var i;
</span><span class="cx" style="display: block; padding: 0 10px">         if (isDefined(value)) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          i = self$$1.length;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          i = self.length;
</ins><span class="cx" style="display: block; padding: 0 10px">           try {
</span><span class="cx" style="display: block; padding: 0 10px">             while (i--) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              self$$1[i].innerHTML = value;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              self[i].innerHTML = value;
</ins><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           } catch (ex) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            DomQuery(self$$1[i]).empty().append(value);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            DomQuery(self[i]).empty().append(value);
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          return self;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return self$$1[0] ? self$$1[0].innerHTML : '';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return self[0] ? self[0].innerHTML : '';
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       text: function (value) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">         var i;
</span><span class="cx" style="display: block; padding: 0 10px">         if (isDefined(value)) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          i = self$$1.length;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          i = self.length;
</ins><span class="cx" style="display: block; padding: 0 10px">           while (i--) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            if ('innerText' in self$$1[i]) {
-              self$$1[i].innerText = value;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            if ('innerText' in self[i]) {
+              self[i].innerText = value;
</ins><span class="cx" style="display: block; padding: 0 10px">             } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              self$$1[0].textContent = value;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              self[0].textContent = value;
</ins><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          return self;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return self$$1[0] ? self$$1[0].innerText || self$$1[0].textContent : '';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return self[0] ? self[0].innerText || self[0].textContent : '';
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       append: function () {
</span><span class="cx" style="display: block; padding: 0 10px">         return domManipulate(this, arguments, function (node) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2796,22 +2796,22 @@
</span><span class="cx" style="display: block; padding: 0 10px">         }, true);
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       before: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        if (self$$1[0] && self$$1[0].parentNode) {
-          return domManipulate(self$$1, arguments, function (node) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        if (self[0] && self[0].parentNode) {
+          return domManipulate(self, arguments, function (node) {
</ins><span class="cx" style="display: block; padding: 0 10px">             this.parentNode.insertBefore(node, this);
</span><span class="cx" style="display: block; padding: 0 10px">           });
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return self;
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       after: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        if (self$$1[0] && self$$1[0].parentNode) {
-          return domManipulate(self$$1, arguments, function (node) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        if (self[0] && self[0].parentNode) {
+          return domManipulate(self, arguments, function (node) {
</ins><span class="cx" style="display: block; padding: 0 10px">             this.parentNode.insertBefore(node, this.nextSibling);
</span><span class="cx" style="display: block; padding: 0 10px">           }, true);
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return self;
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       appendTo: function (val) {
</span><span class="cx" style="display: block; padding: 0 10px">         DomQuery(val).append(this);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2855,16 +2855,16 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return this.toggleClass(className, false);
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       toggleClass: function (className, state) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">         if (typeof className !== 'string') {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          return self;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (className.indexOf(' ') !== -1) {
</span><span class="cx" style="display: block; padding: 0 10px">           each$2(className.split(' '), function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            self$$1.toggleClass(this, state);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            self.toggleClass(this, state);
</ins><span class="cx" style="display: block; padding: 0 10px">           });
</span><span class="cx" style="display: block; padding: 0 10px">         } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.each(function (index, node) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.each(function (index, node) {
</ins><span class="cx" style="display: block; padding: 0 10px">             var existingClassName, classState;
</span><span class="cx" style="display: block; padding: 0 10px">             classState = hasClass(node, className);
</span><span class="cx" style="display: block; padding: 0 10px">             if (classState !== state) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2877,7 +2877,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           });
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return self;
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       hasClass: function (className) {
</span><span class="cx" style="display: block; padding: 0 10px">         return hasClass(this[0], className);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2885,22 +2885,22 @@
</span><span class="cx" style="display: block; padding: 0 10px">       each: function (callback) {
</span><span class="cx" style="display: block; padding: 0 10px">         return each$2(this, callback);
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      on: function (name$$1, callback) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      on: function (name, callback) {
</ins><span class="cx" style="display: block; padding: 0 10px">         return this.each(function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          Event$$1.bind(this, name$$1, callback);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          Event.bind(this, name, callback);
</ins><span class="cx" style="display: block; padding: 0 10px">         });
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      off: function (name$$1, callback) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      off: function (name, callback) {
</ins><span class="cx" style="display: block; padding: 0 10px">         return this.each(function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          Event$$1.unbind(this, name$$1, callback);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          Event.unbind(this, name, callback);
</ins><span class="cx" style="display: block; padding: 0 10px">         });
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      trigger: function (name$$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      trigger: function (name) {
</ins><span class="cx" style="display: block; padding: 0 10px">         return this.each(function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (typeof name$$1 === 'object') {
-            Event$$1.fire(this, name$$1.type, name$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (typeof name === 'object') {
+            Event.fire(this, name.type, name);
</ins><span class="cx" style="display: block; padding: 0 10px">           } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            Event$$1.fire(this, name$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            Event.fire(this, name);
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3071,8 +3071,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     each$2({
</span><span class="cx" style="display: block; padding: 0 10px">       parent: function (node) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var parent$$1 = node.parentNode;
-        return parent$$1 && parent$$1.nodeType !== 11 ? parent$$1 : null;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var parent = node.parentNode;
+        return parent && parent.nodeType !== 11 ? parent : null;
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       parents: function (node) {
</span><span class="cx" style="display: block; padding: 0 10px">         return dir(node, 'parentNode');
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3089,11 +3089,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">       contents: function (node) {
</span><span class="cx" style="display: block; padding: 0 10px">         return Tools.toArray((node.nodeName === 'iframe' ? node.contentDocument || node.contentWindow.document : node).childNodes);
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    }, function (name$$1, fn) {
-      DomQuery.fn[name$$1] = function (selector) {
-        var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    }, function (name, fn) {
+      DomQuery.fn[name] = function (selector) {
+        var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">         var result = [];
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.each(function () {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.each(function () {
</ins><span class="cx" style="display: block; padding: 0 10px">           var nodes = fn.call(result, this, selector, result);
</span><span class="cx" style="display: block; padding: 0 10px">           if (nodes) {
</span><span class="cx" style="display: block; padding: 0 10px">             if (DomQuery.isArray(nodes)) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3104,10 +3104,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><span class="cx" style="display: block; padding: 0 10px">         if (this.length > 1) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (!skipUniques[name$$1]) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (!skipUniques[name]) {
</ins><span class="cx" style="display: block; padding: 0 10px">             result = DomQuery.unique(result);
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (name$$1.indexOf('parents') === 0) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (name.indexOf('parents') === 0) {
</ins><span class="cx" style="display: block; padding: 0 10px">             result = result.reverse();
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3128,11 +3128,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">       prevUntil: function (node, until) {
</span><span class="cx" style="display: block; padding: 0 10px">         return sibling(node, 'previousSibling', 1, until).slice(1);
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    }, function (name$$1, fn) {
-      DomQuery.fn[name$$1] = function (selector, filter) {
-        var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    }, function (name, fn) {
+      DomQuery.fn[name] = function (selector, filter) {
+        var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">         var result = [];
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.each(function () {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.each(function () {
</ins><span class="cx" style="display: block; padding: 0 10px">           var nodes = fn.call(result, this, selector, result);
</span><span class="cx" style="display: block; padding: 0 10px">           if (nodes) {
</span><span class="cx" style="display: block; padding: 0 10px">             if (DomQuery.isArray(nodes)) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3144,7 +3144,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><span class="cx" style="display: block; padding: 0 10px">         if (this.length > 1) {
</span><span class="cx" style="display: block; padding: 0 10px">           result = DomQuery.unique(result);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (name$$1.indexOf('parents') === 0 || name$$1 === 'prevUntil') {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (name.indexOf('parents') === 0 || name === 'prevUntil') {
</ins><span class="cx" style="display: block; padding: 0 10px">             result = result.reverse();
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3175,9 +3175,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return sub;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var appendHooks = function (targetHooks, prop, hooks) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      each$2(hooks, function (name$$1, func) {
-        targetHooks[name$$1] = targetHooks[name$$1] || {};
-        targetHooks[name$$1][prop] = func;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      each$2(hooks, function (name, func) {
+        targetHooks[name] = targetHooks[name] || {};
+        targetHooks[name][prop] = func;
</ins><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     if (Env.ie && Env.ie < 8) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3562,34 +3562,35 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var PlatformDetection = { detect: detect$2 };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var detect$3 = cached(function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var userAgent = navigator.userAgent;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var userAgent = domGlobals.navigator.userAgent;
</ins><span class="cx" style="display: block; padding: 0 10px">       return PlatformDetection.detect(userAgent);
</span><span class="cx" style="display: block; padding: 0 10px">     });
</span><span class="cx" style="display: block; padding: 0 10px">     var PlatformDetection$1 = { detect: detect$3 };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var fromHtml = function (html, scope) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var doc = scope || document;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var doc = scope || domGlobals.document;
</ins><span class="cx" style="display: block; padding: 0 10px">       var div = doc.createElement('div');
</span><span class="cx" style="display: block; padding: 0 10px">       div.innerHTML = html;
</span><span class="cx" style="display: block; padding: 0 10px">       if (!div.hasChildNodes() || div.childNodes.length > 1) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        console.error('HTML does not have a single root node', html);
-        throw 'HTML must have a single root node';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        domGlobals.console.error('HTML does not have a single root node', html);
+        throw new Error('HTML must have a single root node');
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       return fromDom(div.childNodes[0]);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var fromTag = function (tag, scope) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var doc = scope || document;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var doc = scope || domGlobals.document;
</ins><span class="cx" style="display: block; padding: 0 10px">       var node = doc.createElement(tag);
</span><span class="cx" style="display: block; padding: 0 10px">       return fromDom(node);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var fromText = function (text, scope) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var doc = scope || document;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var doc = scope || domGlobals.document;
</ins><span class="cx" style="display: block; padding: 0 10px">       var node = doc.createTextNode(text);
</span><span class="cx" style="display: block; padding: 0 10px">       return fromDom(node);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var fromDom = function (node) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      if (node === null || node === undefined)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      if (node === null || node === undefined) {
</ins><span class="cx" style="display: block; padding: 0 10px">         throw new Error('Node cannot be null or undefined');
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      }
</ins><span class="cx" style="display: block; padding: 0 10px">       return { dom: constant(node) };
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var fromPoint = function (docElm, x, y) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3596,7 +3597,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var doc = docElm.dom();
</span><span class="cx" style="display: block; padding: 0 10px">       return Option.from(doc.elementFromPoint(x, y)).map(fromDom);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var Element$$1 = {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var Element = {
</ins><span class="cx" style="display: block; padding: 0 10px">       fromHtml: fromHtml,
</span><span class="cx" style="display: block; padding: 0 10px">       fromTag: fromTag,
</span><span class="cx" style="display: block; padding: 0 10px">       fromText: fromText,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3604,18 +3605,18 @@
</span><span class="cx" style="display: block; padding: 0 10px">       fromPoint: fromPoint
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var ATTRIBUTE = Node.ATTRIBUTE_NODE;
-    var CDATA_SECTION = Node.CDATA_SECTION_NODE;
-    var COMMENT = Node.COMMENT_NODE;
-    var DOCUMENT = Node.DOCUMENT_NODE;
-    var DOCUMENT_TYPE = Node.DOCUMENT_TYPE_NODE;
-    var DOCUMENT_FRAGMENT = Node.DOCUMENT_FRAGMENT_NODE;
-    var ELEMENT = Node.ELEMENT_NODE;
-    var TEXT = Node.TEXT_NODE;
-    var PROCESSING_INSTRUCTION = Node.PROCESSING_INSTRUCTION_NODE;
-    var ENTITY_REFERENCE = Node.ENTITY_REFERENCE_NODE;
-    var ENTITY = Node.ENTITY_NODE;
-    var NOTATION = Node.NOTATION_NODE;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var ATTRIBUTE = domGlobals.Node.ATTRIBUTE_NODE;
+    var CDATA_SECTION = domGlobals.Node.CDATA_SECTION_NODE;
+    var COMMENT = domGlobals.Node.COMMENT_NODE;
+    var DOCUMENT = domGlobals.Node.DOCUMENT_NODE;
+    var DOCUMENT_TYPE = domGlobals.Node.DOCUMENT_TYPE_NODE;
+    var DOCUMENT_FRAGMENT = domGlobals.Node.DOCUMENT_FRAGMENT_NODE;
+    var ELEMENT = domGlobals.Node.ELEMENT_NODE;
+    var TEXT = domGlobals.Node.TEXT_NODE;
+    var PROCESSING_INSTRUCTION = domGlobals.Node.PROCESSING_INSTRUCTION_NODE;
+    var ENTITY_REFERENCE = domGlobals.Node.ENTITY_REFERENCE_NODE;
+    var ENTITY = domGlobals.Node.ENTITY_NODE;
+    var NOTATION = domGlobals.Node.NOTATION_NODE;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var name = function (element) {
</span><span class="cx" style="display: block; padding: 0 10px">       var r = element.dom().nodeName;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3674,16 +3675,25 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return hasOwnProperty$1.call(obj, key);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var rawSet = function (dom, key, value$$1) {
-      if (isString(value$$1) || isBoolean(value$$1) || isNumber(value$$1)) {
-        dom.setAttribute(key, value$$1 + '');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var isSupported = function (dom) {
+      return dom.style !== undefined;
+    };
+
+    var inBody = function (element) {
+      var dom = isText(element) ? element.dom().parentNode : element.dom();
+      return dom !== undefined && dom !== null && dom.ownerDocument.body.contains(dom);
+    };
+
+    var rawSet = function (dom, key, value) {
+      if (isString(value) || isBoolean(value) || isNumber(value)) {
+        dom.setAttribute(key, value + '');
</ins><span class="cx" style="display: block; padding: 0 10px">       } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        console.error('Invalid call to Attr.set. Key ', key, ':: Value ', value$$1, ':: Element ', dom);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        domGlobals.console.error('Invalid call to Attr.set. Key ', key, ':: Value ', value, ':: Element ', dom);
</ins><span class="cx" style="display: block; padding: 0 10px">         throw new Error('Attribute value was not simple');
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var set = function (element, key, value$$1) {
-      rawSet(element.dom(), key, value$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var set = function (element, key, value) {
+      rawSet(element.dom(), key, value);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var setAll = function (element, attrs) {
</span><span class="cx" style="display: block; padding: 0 10px">       var dom = element.dom();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3691,7 +3701,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         rawSet(dom, k, v);
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var get$1 = function (element, key) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var get = function (element, key) {
</ins><span class="cx" style="display: block; padding: 0 10px">       var v = element.dom().getAttribute(key);
</span><span class="cx" style="display: block; padding: 0 10px">       return v === null ? undefined : v;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3703,22 +3713,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">       element.dom().removeAttribute(key);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var inBody = function (element) {
-      var dom = isText(element) ? element.dom().parentNode : element.dom();
-      return dom !== undefined && dom !== null && dom.ownerDocument.body.contains(dom);
-    };
-
-    var isSupported = function (dom) {
-      return dom.style !== undefined;
-    };
-
-    var internalSet = function (dom, property, value$$1) {
-      if (!isString(value$$1)) {
-        console.error('Invalid call to CSS.set. Property ', property, ':: Value ', value$$1, ':: Element ', dom);
-        throw new Error('CSS value must be a string: ' + value$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var internalSet = function (dom, property, value) {
+      if (!isString(value)) {
+        domGlobals.console.error('Invalid call to CSS.set. Property ', property, ':: Value ', value, ':: Element ', dom);
+        throw new Error('CSS value must be a string: ' + value);
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      if (isSupported(dom))
-        dom.style.setProperty(property, value$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      if (isSupported(dom)) {
+        dom.style.setProperty(property, value);
+      }
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var setAll$1 = function (element, css) {
</span><span class="cx" style="display: block; padding: 0 10px">       var dom = element.dom();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3726,9 +3728,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">         internalSet(dom, k, v);
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var get$2 = function (element, property) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var get$1 = function (element, property) {
</ins><span class="cx" style="display: block; padding: 0 10px">       var dom = element.dom();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var styles = window.getComputedStyle(dom);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var styles = domGlobals.window.getComputedStyle(dom);
</ins><span class="cx" style="display: block; padding: 0 10px">       var r = styles.getPropertyValue(property);
</span><span class="cx" style="display: block; padding: 0 10px">       var v = r === '' && !inBody(element) ? getUnsafeProperty(dom, property) : r;
</span><span class="cx" style="display: block; padding: 0 10px">       return v === null ? undefined : v;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3792,7 +3794,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var documentPositionContainedBy = function (a, b) {
</span><span class="cx" style="display: block; padding: 0 10px">       return compareDocumentPosition(a, b, node().DOCUMENT_POSITION_CONTAINED_BY);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var Node$1 = {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var Node = {
</ins><span class="cx" style="display: block; padding: 0 10px">       documentPositionPreceding: documentPositionPreceding,
</span><span class="cx" style="display: block; padding: 0 10px">       documentPositionContainedBy: documentPositionContainedBy
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3801,29 +3803,30 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var DOCUMENT$1 = DOCUMENT;
</span><span class="cx" style="display: block; padding: 0 10px">     var is$1 = function (element, selector) {
</span><span class="cx" style="display: block; padding: 0 10px">       var elem = element.dom();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      if (elem.nodeType !== ELEMENT$1)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      if (elem.nodeType !== ELEMENT$1) {
</ins><span class="cx" style="display: block; padding: 0 10px">         return false;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      else if (elem.matches !== undefined)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      } else if (elem.matches !== undefined) {
</ins><span class="cx" style="display: block; padding: 0 10px">         return elem.matches(selector);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      else if (elem.msMatchesSelector !== undefined)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      } else if (elem.msMatchesSelector !== undefined) {
</ins><span class="cx" style="display: block; padding: 0 10px">         return elem.msMatchesSelector(selector);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      else if (elem.webkitMatchesSelector !== undefined)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      } else if (elem.webkitMatchesSelector !== undefined) {
</ins><span class="cx" style="display: block; padding: 0 10px">         return elem.webkitMatchesSelector(selector);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      else if (elem.mozMatchesSelector !== undefined)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      } else if (elem.mozMatchesSelector !== undefined) {
</ins><span class="cx" style="display: block; padding: 0 10px">         return elem.mozMatchesSelector(selector);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      else
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      } else {
</ins><span class="cx" style="display: block; padding: 0 10px">         throw new Error('Browser lacks native selectors');
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      }
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var bypassSelector = function (dom) {
</span><span class="cx" style="display: block; padding: 0 10px">       return dom.nodeType !== ELEMENT$1 && dom.nodeType !== DOCUMENT$1 || dom.childElementCount === 0;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var all = function (selector, scope) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var base = scope === undefined ? document : scope.dom();
-      return bypassSelector(base) ? [] : map(base.querySelectorAll(selector), Element$$1.fromDom);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var base = scope === undefined ? domGlobals.document : scope.dom();
+      return bypassSelector(base) ? [] : map(base.querySelectorAll(selector), Element.fromDom);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var one = function (selector, scope) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var base = scope === undefined ? document : scope.dom();
-      return bypassSelector(base) ? Option.none() : Option.from(base.querySelector(selector)).map(Element$$1.fromDom);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var base = scope === undefined ? domGlobals.document : scope.dom();
+      return bypassSelector(base) ? Option.none() : Option.from(base.querySelector(selector)).map(Element.fromDom);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var eq = function (e1, e2) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3830,29 +3833,30 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return e1.dom() === e2.dom();
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var regularContains = function (e1, e2) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var d1 = e1.dom(), d2 = e2.dom();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var d1 = e1.dom();
+      var d2 = e2.dom();
</ins><span class="cx" style="display: block; padding: 0 10px">       return d1 === d2 ? false : d1.contains(d2);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var ieContains = function (e1, e2) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return Node$1.documentPositionContainedBy(e1.dom(), e2.dom());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return Node.documentPositionContainedBy(e1.dom(), e2.dom());
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var browser = PlatformDetection$1.detect().browser;
</span><span class="cx" style="display: block; padding: 0 10px">     var contains$3 = browser.isIE() ? ieContains : regularContains;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var owner = function (element) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return Element$$1.fromDom(element.dom().ownerDocument);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return Element.fromDom(element.dom().ownerDocument);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var documentElement = function (element) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return Element$$1.fromDom(element.dom().ownerDocument.documentElement);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return Element.fromDom(element.dom().ownerDocument.documentElement);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var defaultView = function (element) {
</span><span class="cx" style="display: block; padding: 0 10px">       var el = element.dom();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var defaultView = el.ownerDocument.defaultView;
-      return Element$$1.fromDom(defaultView);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var defView = el.ownerDocument.defaultView;
+      return Element.fromDom(defView);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var parent = function (element) {
</span><span class="cx" style="display: block; padding: 0 10px">       var dom = element.dom();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return Option.from(dom.parentNode).map(Element$$1.fromDom);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return Option.from(dom.parentNode).map(Element.fromDom);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var parents = function (element, isRoot) {
</span><span class="cx" style="display: block; padding: 0 10px">       var stop = isFunction(isRoot) ? isRoot : constant(false);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3860,22 +3864,23 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var ret = [];
</span><span class="cx" style="display: block; padding: 0 10px">       while (dom.parentNode !== null && dom.parentNode !== undefined) {
</span><span class="cx" style="display: block; padding: 0 10px">         var rawParent = dom.parentNode;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var parent = Element$$1.fromDom(rawParent);
-        ret.push(parent);
-        if (stop(parent) === true)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var p = Element.fromDom(rawParent);
+        ret.push(p);
+        if (stop(p) === true) {
</ins><span class="cx" style="display: block; padding: 0 10px">           break;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        else
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        } else {
</ins><span class="cx" style="display: block; padding: 0 10px">           dom = rawParent;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        }
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       return ret;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var prevSibling = function (element) {
</span><span class="cx" style="display: block; padding: 0 10px">       var dom = element.dom();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return Option.from(dom.previousSibling).map(Element$$1.fromDom);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return Option.from(dom.previousSibling).map(Element.fromDom);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var nextSibling = function (element) {
</span><span class="cx" style="display: block; padding: 0 10px">       var dom = element.dom();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return Option.from(dom.nextSibling).map(Element$$1.fromDom);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return Option.from(dom.nextSibling).map(Element.fromDom);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var prevSiblings = function (element) {
</span><span class="cx" style="display: block; padding: 0 10px">       return reverse(Recurse.toArray(element, prevSibling));
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3885,11 +3890,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var children = function (element) {
</span><span class="cx" style="display: block; padding: 0 10px">       var dom = element.dom();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return map(dom.childNodes, Element$$1.fromDom);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return map(dom.childNodes, Element.fromDom);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var child = function (element, index) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var children = element.dom().childNodes;
-      return Option.from(children[index]).map(Element$$1.fromDom);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var cs = element.dom().childNodes;
+      return Option.from(cs[index]).map(Element.fromDom);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var firstChild = function (element) {
</span><span class="cx" style="display: block; padding: 0 10px">       return child(element, 0);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3923,12 +3928,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var getPos = function (body, elm, rootElm) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var x = 0, y = 0, offsetParent$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var x = 0, y = 0, offsetParent;
</ins><span class="cx" style="display: block; padding: 0 10px">       var doc = body.ownerDocument;
</span><span class="cx" style="display: block; padding: 0 10px">       var pos;
</span><span class="cx" style="display: block; padding: 0 10px">       rootElm = rootElm ? rootElm : body;
</span><span class="cx" style="display: block; padding: 0 10px">       if (elm) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (rootElm === body && elm.getBoundingClientRect && get$2(Element$$1.fromDom(body), 'position') === 'static') {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (rootElm === body && elm.getBoundingClientRect && get$1(Element.fromDom(body), 'position') === 'static') {
</ins><span class="cx" style="display: block; padding: 0 10px">           pos = elm.getBoundingClientRect();
</span><span class="cx" style="display: block; padding: 0 10px">           x = pos.left + (doc.documentElement.scrollLeft || body.scrollLeft) - doc.documentElement.clientLeft;
</span><span class="cx" style="display: block; padding: 0 10px">           y = pos.top + (doc.documentElement.scrollTop || body.scrollTop) - doc.documentElement.clientTop;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3937,19 +3942,19 @@
</span><span class="cx" style="display: block; padding: 0 10px">             y: y
</span><span class="cx" style="display: block; padding: 0 10px">           };
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        offsetParent$$1 = elm;
-        while (offsetParent$$1 && offsetParent$$1 !== rootElm && offsetParent$$1.nodeType) {
-          x += offsetParent$$1.offsetLeft || 0;
-          y += offsetParent$$1.offsetTop || 0;
-          offsetParent$$1 = offsetParent$$1.offsetParent;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        offsetParent = elm;
+        while (offsetParent && offsetParent !== rootElm && offsetParent.nodeType) {
+          x += offsetParent.offsetLeft || 0;
+          y += offsetParent.offsetTop || 0;
+          offsetParent = offsetParent.offsetParent;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        offsetParent$$1 = elm.parentNode;
-        while (offsetParent$$1 && offsetParent$$1 !== rootElm && offsetParent$$1.nodeType) {
-          x -= offsetParent$$1.scrollLeft || 0;
-          y -= offsetParent$$1.scrollTop || 0;
-          offsetParent$$1 = offsetParent$$1.parentNode;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        offsetParent = elm.parentNode;
+        while (offsetParent && offsetParent !== rootElm && offsetParent.nodeType) {
+          x -= offsetParent.scrollLeft || 0;
+          y -= offsetParent.scrollTop || 0;
+          offsetParent = offsetParent.parentNode;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        y += getTableCaptionDeltaY(Element$$1.fromDom(elm));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        y += getTableCaptionDeltaY(Element.fromDom(elm));
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       return {
</span><span class="cx" style="display: block; padding: 0 10px">         x: x,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3961,7 +3966,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var nu$3 = function (baseFn) {
</span><span class="cx" style="display: block; padding: 0 10px">       var data = Option.none();
</span><span class="cx" style="display: block; padding: 0 10px">       var callbacks = [];
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var map$$1 = function (f) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var map = function (f) {
</ins><span class="cx" style="display: block; padding: 0 10px">         return nu$3(function (nCallback) {
</span><span class="cx" style="display: block; padding: 0 10px">           get(function (data) {
</span><span class="cx" style="display: block; padding: 0 10px">             nCallback(f(data));
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3987,7 +3992,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var call = function (cb) {
</span><span class="cx" style="display: block; padding: 0 10px">         data.each(function (x) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          setTimeout(function () {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          domGlobals.setTimeout(function () {
</ins><span class="cx" style="display: block; padding: 0 10px">             cb(x);
</span><span class="cx" style="display: block; padding: 0 10px">           }, 0);
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3995,11 +4000,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">       baseFn(set);
</span><span class="cx" style="display: block; padding: 0 10px">       return {
</span><span class="cx" style="display: block; padding: 0 10px">         get: get,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        map: map$$1,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        map: map,
</ins><span class="cx" style="display: block; padding: 0 10px">         isReady: isReady
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var pure$1 = function (a) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var pure = function (a) {
</ins><span class="cx" style="display: block; padding: 0 10px">       return nu$3(function (callback) {
</span><span class="cx" style="display: block; padding: 0 10px">         callback(a);
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4006,7 +4011,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var LazyValue = {
</span><span class="cx" style="display: block; padding: 0 10px">       nu: nu$3,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      pure: pure$1
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      pure: pure
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var bounce = function (f) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4016,7 +4021,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">           args[_i] = arguments[_i];
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         var me = this;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        setTimeout(function () {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        domGlobals.setTimeout(function () {
</ins><span class="cx" style="display: block; padding: 0 10px">           f.apply(me, args);
</span><span class="cx" style="display: block; padding: 0 10px">         }, 0);
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4069,7 +4074,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         get: get
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var pure$2 = function (a) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var pure$1 = function (a) {
</ins><span class="cx" style="display: block; padding: 0 10px">       return nu$4(function (callback) {
</span><span class="cx" style="display: block; padding: 0 10px">         callback(a);
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4076,7 +4081,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var Future = {
</span><span class="cx" style="display: block; padding: 0 10px">       nu: nu$4,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      pure: pure$2
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      pure: pure$1
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var par = function (asyncValues, nu) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4106,21 +4111,21 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return par(futures, Future.nu);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var value$1 = function (o) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var value = function (o) {
</ins><span class="cx" style="display: block; padding: 0 10px">       var is = function (v) {
</span><span class="cx" style="display: block; padding: 0 10px">         return o === v;
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var or = function (opt) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return value$1(o);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return value(o);
</ins><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var orThunk = function (f) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return value$1(o);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return value(o);
</ins><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var map = function (f) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return value$1(f(o));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return value(f(o));
</ins><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var mapError = function (f) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return value$1(o);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return value(o);
</ins><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var each = function (f) {
</span><span class="cx" style="display: block; padding: 0 10px">         f(o);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4204,11 +4209,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var Result = {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      value: value$1,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      value: value,
</ins><span class="cx" style="display: block; padding: 0 10px">       error: error
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    function StyleSheetLoader(document$$1, settings) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    function StyleSheetLoader(document, settings) {
</ins><span class="cx" style="display: block; padding: 0 10px">       if (settings === void 0) {
</span><span class="cx" style="display: block; padding: 0 10px">         settings = {};
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4217,7 +4222,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var maxLoadTime;
</span><span class="cx" style="display: block; padding: 0 10px">       maxLoadTime = settings.maxLoadTime || 5000;
</span><span class="cx" style="display: block; padding: 0 10px">       var appendToHead = function (node) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        document$$1.getElementsByTagName('head')[0].appendChild(node);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        document.getElementsByTagName('head')[0].appendChild(node);
</ins><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var load = function (url, loadedCallback, errorCallback) {
</span><span class="cx" style="display: block; padding: 0 10px">         var link, style, startTime, state;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4242,7 +4247,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">           state.failed = [];
</span><span class="cx" style="display: block; padding: 0 10px">         };
</span><span class="cx" style="display: block; padding: 0 10px">         var isOldWebKit = function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          var webKitChunks = navigator.userAgent.match(/WebKit\/(\d*)/);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          var webKitChunks = domGlobals.navigator.userAgent.match(/WebKit\/(\d*)/);
</ins><span class="cx" style="display: block; padding: 0 10px">           return !!(webKitChunks && parseInt(webKitChunks[1], 10) < 536);
</span><span class="cx" style="display: block; padding: 0 10px">         };
</span><span class="cx" style="display: block; padding: 0 10px">         var wait = function (testCallback, waitCallback) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4256,7 +4261,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         };
</span><span class="cx" style="display: block; padding: 0 10px">         var waitForWebKitLinkLoaded = function () {
</span><span class="cx" style="display: block; padding: 0 10px">           wait(function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            var styleSheets = document$$1.styleSheets;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            var styleSheets = document.styleSheets;
</ins><span class="cx" style="display: block; padding: 0 10px">             var styleSheet, i = styleSheets.length, owner;
</span><span class="cx" style="display: block; padding: 0 10px">             while (i--) {
</span><span class="cx" style="display: block; padding: 0 10px">               styleSheet = styleSheets[i];
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4306,7 +4311,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">           return;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         state.status = 1;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        link = document$$1.createElement('link');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        link = document.createElement('link');
</ins><span class="cx" style="display: block; padding: 0 10px">         link.rel = 'stylesheet';
</span><span class="cx" style="display: block; padding: 0 10px">         link.type = 'text/css';
</span><span class="cx" style="display: block; padding: 0 10px">         link.id = 'u' + idCount++;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4320,8 +4325,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">           link.onload = waitForWebKitLinkLoaded;
</span><span class="cx" style="display: block; padding: 0 10px">           link.onerror = failed;
</span><span class="cx" style="display: block; padding: 0 10px">         } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (navigator.userAgent.indexOf('Firefox') > 0) {
-            style = document$$1.createElement('style');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (domGlobals.navigator.userAgent.indexOf('Firefox') > 0) {
+            style = document.createElement('style');
</ins><span class="cx" style="display: block; padding: 0 10px">             style.textContent = '@import "' + url + '"';
</span><span class="cx" style="display: block; padding: 0 10px">             waitForGeckoLinkLoaded();
</span><span class="cx" style="display: block; padding: 0 10px">             appendToHead(style);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4646,8 +4651,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var isText$1 = isNodeType(3);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var isComment$1 = isNodeType(8);
-    var isDocument$1 = isNodeType(9);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var isComment = isNodeType(8);
+    var isDocument = isNodeType(9);
+    var isDocumentFragment = isNodeType(11);
</ins><span class="cx" style="display: block; padding: 0 10px">     var isBr$1 = matchNodeNames('br');
</span><span class="cx" style="display: block; padding: 0 10px">     var isContentEditableTrue = hasContentEditableState('true');
</span><span class="cx" style="display: block; padding: 0 10px">     var isContentEditableFalse = hasContentEditableState('false');
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4654,8 +4660,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var NodeType = {
</span><span class="cx" style="display: block; padding: 0 10px">       isText: isText$1,
</span><span class="cx" style="display: block; padding: 0 10px">       isElement: isElement$1,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      isComment: isComment$1,
-      isDocument: isDocument$1,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      isComment: isComment,
+      isDocument: isDocument,
+      isDocumentFragment: isDocumentFragment,
</ins><span class="cx" style="display: block; padding: 0 10px">       isBr: isBr$1,
</span><span class="cx" style="display: block; padding: 0 10px">       isContentEditableTrue: isContentEditableTrue,
</span><span class="cx" style="display: block; padding: 0 10px">       isContentEditableFalse: isContentEditableFalse,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4699,7 +4706,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">           if (children.length === 1 && isBookmarkNode(children[0])) {
</span><span class="cx" style="display: block; padding: 0 10px">             node.parentNode.insertBefore(children[0], node);
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (children.length || isVoid(Element$$1.fromDom(node))) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (children.length || isVoid(Element.fromDom(node))) {
</ins><span class="cx" style="display: block; padding: 0 10px">             return;
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4761,7 +4768,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var nativeDecode = function (text) {
</span><span class="cx" style="display: block; padding: 0 10px">       var elm;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      elm = Element$$1.fromTag('div').dom();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      elm = Element.fromTag('div').dom();
</ins><span class="cx" style="display: block; padding: 0 10px">       elm.innerHTML = text;
</span><span class="cx" style="display: block; padding: 0 10px">       return elm.textContent || elm.innerText || text;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5752,14 +5759,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var attrHooks = {};
</span><span class="cx" style="display: block; padding: 0 10px">       var keepValues = settings.keep_values;
</span><span class="cx" style="display: block; padding: 0 10px">       var keepUrlHook = {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        set: function ($elm, value, name$$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        set: function ($elm, value, name) {
</ins><span class="cx" style="display: block; padding: 0 10px">           if (settings.url_converter) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            value = settings.url_converter.call(settings.url_converter_scope || getContext(), value, name$$1, $elm[0]);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            value = settings.url_converter.call(settings.url_converter_scope || getContext(), value, name, $elm[0]);
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          $elm.attr('data-mce-' + name$$1, value).attr(name$$1, value);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          $elm.attr('data-mce-' + name, value).attr(name, value);
</ins><span class="cx" style="display: block; padding: 0 10px">         },
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        get: function ($elm, name$$1) {
-          return $elm.attr('data-mce-' + name$$1) || $elm.attr(name$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        get: function ($elm, name) {
+          return $elm.attr('data-mce-' + name) || $elm.attr(name);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       attrHooks = {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5817,7 +5824,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       var attrHooks;
</span><span class="cx" style="display: block; padding: 0 10px">       var addedStyles = {};
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var win = window;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var win = domGlobals.window;
</ins><span class="cx" style="display: block; padding: 0 10px">       var files = {};
</span><span class="cx" style="display: block; padding: 0 10px">       var counter = 0;
</span><span class="cx" style="display: block; padding: 0 10px">       var stdMode = true;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5834,7 +5841,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var $ = DomQuery.overrideDefaults(function () {
</span><span class="cx" style="display: block; padding: 0 10px">         return {
</span><span class="cx" style="display: block; padding: 0 10px">           context: doc,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          element: self$$1.getRoot()
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          element: self.getRoot()
</ins><span class="cx" style="display: block; padding: 0 10px">         };
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">       var isBlock = function (node) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5865,15 +5872,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         return $(elm);
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var getAttrib = function (elm, name$$1, defaultVal) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var getAttrib = function (elm, name, defaultVal) {
</ins><span class="cx" style="display: block; padding: 0 10px">         var hook, value;
</span><span class="cx" style="display: block; padding: 0 10px">         var $elm = $$(elm);
</span><span class="cx" style="display: block; padding: 0 10px">         if ($elm.length) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          hook = attrHooks[name$$1];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          hook = attrHooks[name];
</ins><span class="cx" style="display: block; padding: 0 10px">           if (hook && hook.get) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            value = hook.get($elm, name$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            value = hook.get($elm, name);
</ins><span class="cx" style="display: block; padding: 0 10px">           } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            value = $elm.attr(name$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            value = $elm.attr(name);
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (typeof value === 'undefined') {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5888,26 +5895,26 @@
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         return node.attributes;
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var setAttrib = function (elm, name$$1, value) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var setAttrib = function (elm, name, value) {
</ins><span class="cx" style="display: block; padding: 0 10px">         var originalValue, hook;
</span><span class="cx" style="display: block; padding: 0 10px">         if (value === '') {
</span><span class="cx" style="display: block; padding: 0 10px">           value = null;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         var $elm = $$(elm);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        originalValue = $elm.attr(name$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        originalValue = $elm.attr(name);
</ins><span class="cx" style="display: block; padding: 0 10px">         if (!$elm.length) {
</span><span class="cx" style="display: block; padding: 0 10px">           return;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        hook = attrHooks[name$$1];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        hook = attrHooks[name];
</ins><span class="cx" style="display: block; padding: 0 10px">         if (hook && hook.set) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          hook.set($elm, value, name$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          hook.set($elm, value, name);
</ins><span class="cx" style="display: block; padding: 0 10px">         } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          $elm.attr(name$$1, value);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          $elm.attr(name, value);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (originalValue !== value && settings.onSetAttrib) {
</span><span class="cx" style="display: block; padding: 0 10px">           settings.onSetAttrib({
</span><span class="cx" style="display: block; padding: 0 10px">             attrElm: $elm,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            attrName: name$$1,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            attrName: name,
</ins><span class="cx" style="display: block; padding: 0 10px">             attrValue: value
</span><span class="cx" style="display: block; padding: 0 10px">           });
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5931,7 +5938,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var getViewPort = function (argWin) {
</span><span class="cx" style="display: block; padding: 0 10px">         var actWin = !argWin ? win : argWin;
</span><span class="cx" style="display: block; padding: 0 10px">         var doc = actWin.document;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var rootElm = boxModel ? doc.documentElement : doc.body;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var rootElm = doc.documentElement;
</ins><span class="cx" style="display: block; padding: 0 10px">         return {
</span><span class="cx" style="display: block; padding: 0 10px">           x: actWin.pageXOffset || rootElm.scrollLeft,
</span><span class="cx" style="display: block; padding: 0 10px">           y: actWin.pageYOffset || rootElm.scrollTop,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5942,8 +5949,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var getPos = function (elm, rootElm) {
</span><span class="cx" style="display: block; padding: 0 10px">         return Position.getPos(doc.body, get(elm), rootElm);
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var setStyle = function (elm, name$$1, value) {
-        var $elm = $$(elm).css(name$$1, value);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var setStyle = function (elm, name, value) {
+        var $elm = $$(elm).css(name, value);
</ins><span class="cx" style="display: block; padding: 0 10px">         if (settings.update_styles) {
</span><span class="cx" style="display: block; padding: 0 10px">           updateInternalStyleAttr(styles, $elm);
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5954,18 +5961,18 @@
</span><span class="cx" style="display: block; padding: 0 10px">           updateInternalStyleAttr(styles, $elm);
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var getStyle = function (elm, name$$1, computed) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var getStyle = function (elm, name, computed) {
</ins><span class="cx" style="display: block; padding: 0 10px">         var $elm = $$(elm);
</span><span class="cx" style="display: block; padding: 0 10px">         if (computed) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          return $elm.css(name$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          return $elm.css(name);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        name$$1 = name$$1.replace(/-(\D)/g, function (a, b) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        name = name.replace(/-(\D)/g, function (a, b) {
</ins><span class="cx" style="display: block; padding: 0 10px">           return b.toUpperCase();
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (name$$1 === 'float') {
-          name$$1 = Env.ie && Env.ie < 12 ? 'styleFloat' : 'cssFloat';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (name === 'float') {
+          name = Env.ie && Env.ie < 12 ? 'styleFloat' : 'cssFloat';
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return $elm[0] && $elm[0].style ? $elm[0].style[name$$1] : undefined;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return $elm[0] && $elm[0].style ? $elm[0].style[name] : undefined;
</ins><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var getSize = function (elm) {
</span><span class="cx" style="display: block; padding: 0 10px">         var w, h;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6058,7 +6065,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         var parents = getParents(node, selector, root, false);
</span><span class="cx" style="display: block; padding: 0 10px">         return parents && parents.length > 0 ? parents[0] : null;
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var _findSib = function (node, selector, name$$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var _findSib = function (node, selector, name) {
</ins><span class="cx" style="display: block; padding: 0 10px">         var func = selector;
</span><span class="cx" style="display: block; padding: 0 10px">         if (node) {
</span><span class="cx" style="display: block; padding: 0 10px">           if (typeof selector === 'string') {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6066,7 +6073,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">               return is(node, selector);
</span><span class="cx" style="display: block; padding: 0 10px">             };
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          for (node = node[name$$1]; node; node = node[name$$1]) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          for (node = node[name]; node; node = node[name]) {
</ins><span class="cx" style="display: block; padding: 0 10px">             if (typeof func === 'function' && func(node)) {
</span><span class="cx" style="display: block; padding: 0 10px">               return node;
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6106,8 +6113,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var setAttribs = function (elm, attrs) {
</span><span class="cx" style="display: block; padding: 0 10px">         $$(elm).each(function (i, node) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          each$5(attrs, function (value, name$$1) {
-            setAttrib(node, name$$1, value);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          each$5(attrs, function (value, name) {
+            setAttrib(node, name, value);
</ins><span class="cx" style="display: block; padding: 0 10px">           });
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6133,9 +6140,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">           $elm.html(html);
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var add = function (parentElm, name$$1, attrs, html, create) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var add = function (parentElm, name, attrs, html, create) {
</ins><span class="cx" style="display: block; padding: 0 10px">         return run(parentElm, function (parentElm) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          var newElm = typeof name$$1 === 'string' ? doc.createElement(name$$1) : name$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          var newElm = typeof name === 'string' ? doc.createElement(name) : name;
</ins><span class="cx" style="display: block; padding: 0 10px">           setAttribs(newElm, attrs);
</span><span class="cx" style="display: block; padding: 0 10px">           if (html) {
</span><span class="cx" style="display: block; padding: 0 10px">             if (typeof html !== 'string' && html.nodeType) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6147,14 +6154,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">           return !create ? parentElm.appendChild(newElm) : newElm;
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var create = function (name$$1, attrs, html) {
-        return add(doc.createElement(name$$1), name$$1, attrs, html, true);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var create = function (name, attrs, html) {
+        return add(doc.createElement(name), name, attrs, html, true);
</ins><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var decode = Entities.decode;
</span><span class="cx" style="display: block; padding: 0 10px">       var encode = Entities.encodeAllRaw;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var createHTML = function (name$$1, attrs, html) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var createHTML = function (name, attrs, html) {
</ins><span class="cx" style="display: block; padding: 0 10px">         var outHtml = '', key;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        outHtml += '<' + name$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        outHtml += '<' + name;
</ins><span class="cx" style="display: block; padding: 0 10px">         for (key in attrs) {
</span><span class="cx" style="display: block; padding: 0 10px">           if (attrs.hasOwnProperty(key) && attrs[key] !== null && typeof attrs[key] !== 'undefined') {
</span><span class="cx" style="display: block; padding: 0 10px">             outHtml += ' ' + key + '="' + encode(attrs[key]) + '"';
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6161,7 +6168,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (typeof html !== 'undefined') {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          return outHtml + '>' + html + '</' + name$$1 + '>';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          return outHtml + '>' + html + '</' + name + '>';
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         return outHtml + ' />';
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6207,12 +6214,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var parseStyle = function (cssText) {
</span><span class="cx" style="display: block; padding: 0 10px">         return styles.parse(cssText);
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var serializeStyle = function (stylesArg, name$$1) {
-        return styles.serialize(stylesArg, name$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var serializeStyle = function (stylesArg, name) {
+        return styles.serialize(stylesArg, name);
</ins><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var addStyle = function (cssText) {
</span><span class="cx" style="display: block; padding: 0 10px">         var head, styleElm;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (self$$1 !== DOMUtils.DOM && doc === document) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (self !== DOMUtils.DOM && doc === domGlobals.document) {
</ins><span class="cx" style="display: block; padding: 0 10px">           if (addedStyles[cssText]) {
</span><span class="cx" style="display: block; padding: 0 10px">             return;
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6238,7 +6245,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var loadCSS = function (url) {
</span><span class="cx" style="display: block; padding: 0 10px">         var head;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (self$$1 !== DOMUtils.DOM && doc === document) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (self !== DOMUtils.DOM && doc === domGlobals.document) {
</ins><span class="cx" style="display: block; padding: 0 10px">           DOMUtils.DOM.loadCSS(url);
</span><span class="cx" style="display: block; padding: 0 10px">           return;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6307,13 +6314,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var insertAfter = function (node, reference) {
</span><span class="cx" style="display: block; padding: 0 10px">         var referenceNode = get(reference);
</span><span class="cx" style="display: block; padding: 0 10px">         return run(node, function (node) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          var parent$$1, nextSibling;
-          parent$$1 = referenceNode.parentNode;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          var parent, nextSibling;
+          parent = referenceNode.parentNode;
</ins><span class="cx" style="display: block; padding: 0 10px">           nextSibling = referenceNode.nextSibling;
</span><span class="cx" style="display: block; padding: 0 10px">           if (nextSibling) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            parent$$1.insertBefore(node, nextSibling);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            parent.insertBefore(node, nextSibling);
</ins><span class="cx" style="display: block; padding: 0 10px">           } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            parent$$1.appendChild(node);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            parent.appendChild(node);
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           return node;
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6331,10 +6338,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">           return oldElm.parentNode.replaceChild(newElm, oldElm);
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var rename = function (elm, name$$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var rename = function (elm, name) {
</ins><span class="cx" style="display: block; padding: 0 10px">         var newElm;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (elm.nodeName !== name$$1.toUpperCase()) {
-          newElm = create(name$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (elm.nodeName !== name.toUpperCase()) {
+          newElm = create(name);
</ins><span class="cx" style="display: block; padding: 0 10px">           each$5(getAttribs(elm), function (attrNode) {
</span><span class="cx" style="display: block; padding: 0 10px">             setAttrib(newElm, attrNode.nodeName, getAttrib(elm, attrNode.nodeName));
</span><span class="cx" style="display: block; padding: 0 10px">           });
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6363,7 +6370,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return styles.toHex(Tools.trim(rgbVal));
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var isEmpty = function (node, elements) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var i, attributes, type, whitespace, walker, name$$1, brCount = 0;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var i, attributes, type, whitespace, walker, name, brCount = 0;
</ins><span class="cx" style="display: block; padding: 0 10px">         node = node.firstChild;
</span><span class="cx" style="display: block; padding: 0 10px">         if (node) {
</span><span class="cx" style="display: block; padding: 0 10px">           walker = new TreeWalker(node, node.parentNode);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6377,9 +6384,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                 node = walker.next(bogusVal === 'all');
</span><span class="cx" style="display: block; padding: 0 10px">                 continue;
</span><span class="cx" style="display: block; padding: 0 10px">               }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              name$$1 = node.nodeName.toLowerCase();
-              if (elements && elements[name$$1]) {
-                if (name$$1 === 'br') {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              name = node.nodeName.toLowerCase();
+              if (elements && elements[name]) {
+                if (name === 'br') {
</ins><span class="cx" style="display: block; padding: 0 10px">                   brCount++;
</span><span class="cx" style="display: block; padding: 0 10px">                   node = walker.next();
</span><span class="cx" style="display: block; padding: 0 10px">                   continue;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6389,8 +6396,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">               attributes = getAttribs(node);
</span><span class="cx" style="display: block; padding: 0 10px">               i = attributes.length;
</span><span class="cx" style="display: block; padding: 0 10px">               while (i--) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                name$$1 = attributes[i].nodeName;
-                if (name$$1 === 'name' || name$$1 === 'data-mce-bookmark') {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                name = attributes[i].nodeName;
+                if (name === 'name' || name === 'data-mce-bookmark') {
</ins><span class="cx" style="display: block; padding: 0 10px">                   return false;
</span><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px">               }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6423,22 +6430,22 @@
</span><span class="cx" style="display: block; padding: 0 10px">           r.setEnd(parentElm.parentNode, findNodeIndex(parentElm) + 1);
</span><span class="cx" style="display: block; padding: 0 10px">           aft = r.extractContents();
</span><span class="cx" style="display: block; padding: 0 10px">           pa = parentElm.parentNode;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          pa.insertBefore(TrimNode.trimNode(self$$1, bef), parentElm);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          pa.insertBefore(TrimNode.trimNode(self, bef), parentElm);
</ins><span class="cx" style="display: block; padding: 0 10px">           if (replacementElm) {
</span><span class="cx" style="display: block; padding: 0 10px">             pa.insertBefore(replacementElm, parentElm);
</span><span class="cx" style="display: block; padding: 0 10px">           } else {
</span><span class="cx" style="display: block; padding: 0 10px">             pa.insertBefore(splitElm, parentElm);
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          pa.insertBefore(TrimNode.trimNode(self$$1, aft), parentElm);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          pa.insertBefore(TrimNode.trimNode(self, aft), parentElm);
</ins><span class="cx" style="display: block; padding: 0 10px">           remove(parentElm);
</span><span class="cx" style="display: block; padding: 0 10px">           return replacementElm || splitElm;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var bind = function (target, name$$1, func, scope) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var bind = function (target, name, func, scope) {
</ins><span class="cx" style="display: block; padding: 0 10px">         if (Tools.isArray(target)) {
</span><span class="cx" style="display: block; padding: 0 10px">           var i = target.length;
</span><span class="cx" style="display: block; padding: 0 10px">           while (i--) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            target[i] = bind(target[i], name$$1, func, scope);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            target[i] = bind(target[i], name, func, scope);
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           return target;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6445,19 +6452,19 @@
</span><span class="cx" style="display: block; padding: 0 10px">         if (settings.collect && (target === doc || target === win)) {
</span><span class="cx" style="display: block; padding: 0 10px">           boundEvents.push([
</span><span class="cx" style="display: block; padding: 0 10px">             target,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            name$$1,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            name,
</ins><span class="cx" style="display: block; padding: 0 10px">             func,
</span><span class="cx" style="display: block; padding: 0 10px">             scope
</span><span class="cx" style="display: block; padding: 0 10px">           ]);
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return events.bind(target, name$$1, func, scope || self$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return events.bind(target, name, func, scope || self);
</ins><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var unbind = function (target, name$$1, func) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var unbind = function (target, name, func) {
</ins><span class="cx" style="display: block; padding: 0 10px">         var i;
</span><span class="cx" style="display: block; padding: 0 10px">         if (Tools.isArray(target)) {
</span><span class="cx" style="display: block; padding: 0 10px">           i = target.length;
</span><span class="cx" style="display: block; padding: 0 10px">           while (i--) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            target[i] = unbind(target[i], name$$1, func);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            target[i] = unbind(target[i], name, func);
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           return target;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6465,15 +6472,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">           i = boundEvents.length;
</span><span class="cx" style="display: block; padding: 0 10px">           while (i--) {
</span><span class="cx" style="display: block; padding: 0 10px">             var item = boundEvents[i];
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            if (target === item[0] && (!name$$1 || name$$1 === item[1]) && (!func || func === item[2])) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            if (target === item[0] && (!name || name === item[1]) && (!func || func === item[2])) {
</ins><span class="cx" style="display: block; padding: 0 10px">               events.unbind(item[0], item[1], item[2]);
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return events.unbind(target, name$$1, func);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return events.unbind(target, name, func);
</ins><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var fire = function (target, name$$1, evt) {
-        return events.fire(target, name$$1, evt);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var fire = function (target, name, evt) {
+        return events.fire(target, name, evt);
</ins><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var getContentEditable = function (node) {
</span><span class="cx" style="display: block; padding: 0 10px">         if (node && NodeType.isElement(node)) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6509,9 +6516,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">           Sizzle.setDocument();
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var isChildOf = function (node, parent$$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var isChildOf = function (node, parent) {
</ins><span class="cx" style="display: block; padding: 0 10px">         while (node) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (parent$$1 === node) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (parent === node) {
</ins><span class="cx" style="display: block; padding: 0 10px">             return true;
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           node = node.parentNode;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6521,7 +6528,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var dumpRng = function (r) {
</span><span class="cx" style="display: block; padding: 0 10px">         return 'startContainer: ' + r.startContainer.nodeName + ', startOffset: ' + r.startOffset + ', endContainer: ' + r.endContainer.nodeName + ', endOffset: ' + r.endOffset;
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var self$$1 = {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var self = {
</ins><span class="cx" style="display: block; padding: 0 10px">         doc: doc,
</span><span class="cx" style="display: block; padding: 0 10px">         settings: settings,
</span><span class="cx" style="display: block; padding: 0 10px">         win: win,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6600,12 +6607,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">         dumpRng: dumpRng
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       attrHooks = setupAttrHooks(styles, settings, function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return self;
</ins><span class="cx" style="display: block; padding: 0 10px">       });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return self$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return self;
</ins><span class="cx" style="display: block; padding: 0 10px">     }
</span><span class="cx" style="display: block; padding: 0 10px">     (function (DOMUtils) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      DOMUtils.DOM = DOMUtils(document);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      DOMUtils.DOM = DOMUtils(domGlobals.document);
</ins><span class="cx" style="display: block; padding: 0 10px">       DOMUtils.nodeIndex = findNodeIndex;
</span><span class="cx" style="display: block; padding: 0 10px">     }(DOMUtils || (DOMUtils = {})));
</span><span class="cx" style="display: block; padding: 0 10px">     var DOMUtils$1 = DOMUtils;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6645,13 +6652,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         };
</span><span class="cx" style="display: block; padding: 0 10px">         id = dom.uniqueId();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        elm = document.createElement('script');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        elm = domGlobals.document.createElement('script');
</ins><span class="cx" style="display: block; padding: 0 10px">         elm.id = id;
</span><span class="cx" style="display: block; padding: 0 10px">         elm.type = 'text/javascript';
</span><span class="cx" style="display: block; padding: 0 10px">         elm.src = Tools._addCacheSuffix(url);
</span><span class="cx" style="display: block; padding: 0 10px">         elm.onload = done;
</span><span class="cx" style="display: block; padding: 0 10px">         elm.onerror = error;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        (document.getElementsByTagName('head')[0] || document.body).appendChild(elm);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        (domGlobals.document.getElementsByTagName('head')[0] || domGlobals.document.body).appendChild(elm);
</ins><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       this.isDone = function (url) {
</span><span class="cx" style="display: block; padding: 0 10px">         return states[url] === LOADED;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6686,10 +6693,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">       this.loadScripts = function (scripts, success, scope, failure) {
</span><span class="cx" style="display: block; padding: 0 10px">         var loadScripts;
</span><span class="cx" style="display: block; padding: 0 10px">         var failures = [];
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var execCallbacks = function (name$$1, url) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var execCallbacks = function (name, url) {
</ins><span class="cx" style="display: block; padding: 0 10px">           each$6(scriptLoadedCallbacks[url], function (callback) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            if (isFunction$1(callback[name$$1])) {
-              callback[name$$1].call(callback.scope);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            if (isFunction$1(callback[name])) {
+              callback[name].call(callback.scope);
</ins><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           });
</span><span class="cx" style="display: block; padding: 0 10px">           scriptLoadedCallbacks[url] = undefined;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6885,8 +6892,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">     }(AddOnManager || (AddOnManager = {})));
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var before = function (marker, element) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var parent$$1 = parent(marker);
-      parent$$1.each(function (v) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var parent$1 = parent(marker);
+      parent$1.each(function (v) {
</ins><span class="cx" style="display: block; padding: 0 10px">         v.dom().insertBefore(element.dom(), marker.dom());
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6893,8 +6900,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var after = function (marker, element) {
</span><span class="cx" style="display: block; padding: 0 10px">       var sibling = nextSibling(marker);
</span><span class="cx" style="display: block; padding: 0 10px">       sibling.fold(function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var parent$$1 = parent(marker);
-        parent$$1.each(function (v) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var parent$1 = parent(marker);
+        parent$1.each(function (v) {
</ins><span class="cx" style="display: block; padding: 0 10px">           append(v, element);
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><span class="cx" style="display: block; padding: 0 10px">       }, function (v) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6901,16 +6908,16 @@
</span><span class="cx" style="display: block; padding: 0 10px">         before(v, element);
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var prepend = function (parent$$1, element) {
-      var firstChild$$1 = firstChild(parent$$1);
-      firstChild$$1.fold(function () {
-        append(parent$$1, element);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var prepend = function (parent, element) {
+      var firstChild$1 = firstChild(parent);
+      firstChild$1.fold(function () {
+        append(parent, element);
</ins><span class="cx" style="display: block; padding: 0 10px">       }, function (v) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        parent$$1.dom().insertBefore(element.dom(), v.dom());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        parent.dom().insertBefore(element.dom(), v.dom());
</ins><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var append = function (parent$$1, element) {
-      parent$$1.dom().appendChild(element.dom());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var append = function (parent, element) {
+      parent.dom().appendChild(element.dom());
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var wrap$1 = function (element, wrapper) {
</span><span class="cx" style="display: block; padding: 0 10px">       before(element, wrapper);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6931,26 +6938,28 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var empty = function (element) {
</span><span class="cx" style="display: block; padding: 0 10px">       element.dom().textContent = '';
</span><span class="cx" style="display: block; padding: 0 10px">       each(children(element), function (rogue) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        remove$2(rogue);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        remove$1(rogue);
</ins><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var remove$2 = function (element) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var remove$1 = function (element) {
</ins><span class="cx" style="display: block; padding: 0 10px">       var dom = element.dom();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      if (dom.parentNode !== null)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      if (dom.parentNode !== null) {
</ins><span class="cx" style="display: block; padding: 0 10px">         dom.parentNode.removeChild(dom);
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      }
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var unwrap = function (wrapper) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var children$$1 = children(wrapper);
-      if (children$$1.length > 0)
-        before$1(wrapper, children$$1);
-      remove$2(wrapper);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var children$1 = children(wrapper);
+      if (children$1.length > 0) {
+        before$1(wrapper, children$1);
+      }
+      remove$1(wrapper);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var first$1 = function (fn, rate) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var first = function (fn, rate) {
</ins><span class="cx" style="display: block; padding: 0 10px">       var timer = null;
</span><span class="cx" style="display: block; padding: 0 10px">       var cancel = function () {
</span><span class="cx" style="display: block; padding: 0 10px">         if (timer !== null) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          clearTimeout(timer);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          domGlobals.clearTimeout(timer);
</ins><span class="cx" style="display: block; padding: 0 10px">           timer = null;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6960,7 +6969,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">           args[_i] = arguments[_i];
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (timer === null) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          timer = setTimeout(function () {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          timer = domGlobals.setTimeout(function () {
</ins><span class="cx" style="display: block; padding: 0 10px">             fn.apply(null, args);
</span><span class="cx" style="display: block; padding: 0 10px">             timer = null;
</span><span class="cx" style="display: block; padding: 0 10px">           }, rate);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6971,11 +6980,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">         throttle: throttle
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var last$3 = function (fn, rate) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var last$2 = function (fn, rate) {
</ins><span class="cx" style="display: block; padding: 0 10px">       var timer = null;
</span><span class="cx" style="display: block; padding: 0 10px">       var cancel = function () {
</span><span class="cx" style="display: block; padding: 0 10px">         if (timer !== null) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          clearTimeout(timer);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          domGlobals.clearTimeout(timer);
</ins><span class="cx" style="display: block; padding: 0 10px">           timer = null;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6985,8 +6994,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">           args[_i] = arguments[_i];
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (timer !== null)
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          clearTimeout(timer);
-        timer = setTimeout(function () {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          domGlobals.clearTimeout(timer);
+        timer = domGlobals.setTimeout(function () {
</ins><span class="cx" style="display: block; padding: 0 10px">           fn.apply(null, args);
</span><span class="cx" style="display: block; padding: 0 10px">           timer = null;
</span><span class="cx" style="display: block; padding: 0 10px">         }, rate);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -7016,7 +7025,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var read = function (element, attr) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var value = get$1(element, attr);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var value = get(element, attr);
</ins><span class="cx" style="display: block; padding: 0 10px">       return value === undefined || value === '' ? [] : value.split(' ');
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var add = function (element, attr, id) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -7025,14 +7034,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">       set(element, attr, nu.join(' '));
</span><span class="cx" style="display: block; padding: 0 10px">       return true;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var remove$3 = function (element, attr, id) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var remove$2 = function (element, attr, id) {
</ins><span class="cx" style="display: block; padding: 0 10px">       var nu = filter(read(element, attr), function (v) {
</span><span class="cx" style="display: block; padding: 0 10px">         return v !== id;
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      if (nu.length > 0)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      if (nu.length > 0) {
</ins><span class="cx" style="display: block; padding: 0 10px">         set(element, attr, nu.join(' '));
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      else
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      } else {
</ins><span class="cx" style="display: block; padding: 0 10px">         remove(element, attr);
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      }
</ins><span class="cx" style="display: block; padding: 0 10px">       return false;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -7039,34 +7049,36 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var supports = function (element) {
</span><span class="cx" style="display: block; padding: 0 10px">       return element.dom().classList !== undefined;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var get$3 = function (element) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var get$2 = function (element) {
</ins><span class="cx" style="display: block; padding: 0 10px">       return read(element, 'class');
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var add$1 = function (element, clazz) {
</span><span class="cx" style="display: block; padding: 0 10px">       return add(element, 'class', clazz);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var remove$4 = function (element, clazz) {
-      return remove$3(element, 'class', clazz);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var remove$3 = function (element, clazz) {
+      return remove$2(element, 'class', clazz);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var add$2 = function (element, clazz) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      if (supports(element))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      if (supports(element)) {
</ins><span class="cx" style="display: block; padding: 0 10px">         element.dom().classList.add(clazz);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      else
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      } else {
</ins><span class="cx" style="display: block; padding: 0 10px">         add$1(element, clazz);
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      }
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var cleanClass = function (element) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var classList = supports(element) ? element.dom().classList : get$3(element);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var classList = supports(element) ? element.dom().classList : get$2(element);
</ins><span class="cx" style="display: block; padding: 0 10px">       if (classList.length === 0) {
</span><span class="cx" style="display: block; padding: 0 10px">         remove(element, 'class');
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var remove$5 = function (element, clazz) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var remove$4 = function (element, clazz) {
</ins><span class="cx" style="display: block; padding: 0 10px">       if (supports(element)) {
</span><span class="cx" style="display: block; padding: 0 10px">         var classList = element.dom().classList;
</span><span class="cx" style="display: block; padding: 0 10px">         classList.remove(clazz);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      } else
-        remove$4(element, clazz);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      } else {
+        remove$3(element, clazz);
+      }
</ins><span class="cx" style="display: block; padding: 0 10px">       cleanClass(element);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var has$2 = function (element, clazz) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -7097,17 +7109,18 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var stop = isFunction(isRoot) ? isRoot : constant(false);
</span><span class="cx" style="display: block; padding: 0 10px">       while (element.parentNode) {
</span><span class="cx" style="display: block; padding: 0 10px">         element = element.parentNode;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var el = Element$$1.fromDom(element);
-        if (predicate(el))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var el = Element.fromDom(element);
+        if (predicate(el)) {
</ins><span class="cx" style="display: block; padding: 0 10px">           return Option.some(el);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        else if (stop(el))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        } else if (stop(el)) {
</ins><span class="cx" style="display: block; padding: 0 10px">           break;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        }
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       return Option.none();
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var closest = function (scope, predicate, isRoot) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var is = function (scope) {
-        return predicate(scope);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var is = function (s) {
+        return predicate(s);
</ins><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       return ClosestOrAncestor(is, ancestor, scope, predicate, isRoot);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -7117,7 +7130,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return is$1(e, selector);
</span><span class="cx" style="display: block; padding: 0 10px">       }, isRoot);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var descendant$1 = function (scope, selector) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var descendant = function (scope, selector) {
</ins><span class="cx" style="display: block; padding: 0 10px">       return one(selector, scope);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var closest$1 = function (scope, selector, isRoot) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -7130,8 +7143,8 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var identify = function (editor, annotationName) {
</span><span class="cx" style="display: block; padding: 0 10px">       var rng = editor.selection.getRng();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var start = Element$$1.fromDom(rng.startContainer);
-      var root = Element$$1.fromDom(editor.getBody());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var start = Element.fromDom(rng.startContainer);
+      var root = Element.fromDom(editor.getBody());
</ins><span class="cx" style="display: block; padding: 0 10px">       var selector = annotationName.fold(function () {
</span><span class="cx" style="display: block; padding: 0 10px">         return '.' + annotation();
</span><span class="cx" style="display: block; padding: 0 10px">       }, function (an) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -7143,7 +7156,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">       var getAttr = function (c, property) {
</span><span class="cx" style="display: block; padding: 0 10px">         if (has$1(c, property)) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          return Option.some(get$1(c, property));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          return Option.some(get(c, property));
</ins><span class="cx" style="display: block; padding: 0 10px">         } else {
</span><span class="cx" style="display: block; padding: 0 10px">           return Option.none();
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -7150,11 +7163,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       return closest.bind(function (c) {
</span><span class="cx" style="display: block; padding: 0 10px">         return getAttr(c, '' + dataAnnotationId()).bind(function (uid) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          return getAttr(c, '' + dataAnnotation()).map(function (name$$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          return getAttr(c, '' + dataAnnotation()).map(function (name) {
</ins><span class="cx" style="display: block; padding: 0 10px">             var elements = findMarkers(editor, uid);
</span><span class="cx" style="display: block; padding: 0 10px">             return {
</span><span class="cx" style="display: block; padding: 0 10px">               uid: uid,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              name: name$$1,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              name: name,
</ins><span class="cx" style="display: block; padding: 0 10px">               elements: elements
</span><span class="cx" style="display: block; padding: 0 10px">             };
</span><span class="cx" style="display: block; padding: 0 10px">           });
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -7165,15 +7178,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return isElement(elem) && has$2(elem, annotation());
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var findMarkers = function (editor, uid) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var body = Element$$1.fromDom(editor.getBody());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var body = Element.fromDom(editor.getBody());
</ins><span class="cx" style="display: block; padding: 0 10px">       return descendants$1(body, '[' + dataAnnotationId() + '="' + uid + '"]');
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var findAll = function (editor, name$$1) {
-      var body = Element$$1.fromDom(editor.getBody());
-      var markers = descendants$1(body, '[' + dataAnnotation() + '="' + name$$1 + '"]');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var findAll = function (editor, name) {
+      var body = Element.fromDom(editor.getBody());
+      var markers = descendants$1(body, '[' + dataAnnotation() + '="' + name + '"]');
</ins><span class="cx" style="display: block; padding: 0 10px">       var directory = {};
</span><span class="cx" style="display: block; padding: 0 10px">       each(markers, function (m) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var uid = get$1(m, dataAnnotationId());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var uid = get(m, dataAnnotationId());
</ins><span class="cx" style="display: block; padding: 0 10px">         var nodesAlready = directory.hasOwnProperty(uid) ? directory[uid] : [];
</span><span class="cx" style="display: block; padding: 0 10px">         directory[uid] = nodesAlready.concat([m]);
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -7220,7 +7233,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">           });
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var onNodeChange = last$3(function () {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var onNodeChange = last$2(function () {
</ins><span class="cx" style="display: block; padding: 0 10px">         var callbackMap = changeCallbacks.get();
</span><span class="cx" style="display: block; padding: 0 10px">         var annotations = sort(keys(callbackMap));
</span><span class="cx" style="display: block; padding: 0 10px">         each(annotations, function (name) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -7326,30 +7339,30 @@
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var clone$1 = function (original, deep) {
-      return Element$$1.fromDom(original.dom().cloneNode(deep));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var clone = function (original, isDeep) {
+      return Element.fromDom(original.dom().cloneNode(isDeep));
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var shallow = function (original) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return clone$1(original, false);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return clone(original, false);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var deep = function (original) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return clone$1(original, true);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return clone(original, true);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var fromHtml$1 = function (html, scope) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var doc = scope || document;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var doc = scope || domGlobals.document;
</ins><span class="cx" style="display: block; padding: 0 10px">       var div = doc.createElement('div');
</span><span class="cx" style="display: block; padding: 0 10px">       div.innerHTML = html;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return children(Element$$1.fromDom(div));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return children(Element.fromDom(div));
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var get$5 = function (element) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var get$3 = function (element) {
</ins><span class="cx" style="display: block; padding: 0 10px">       return element.dom().innerHTML;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var set$2 = function (element, content) {
-      var owner$$1 = owner(element);
-      var docDom = owner$$1.dom();
-      var fragment = Element$$1.fromDom(docDom.createDocumentFragment());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var set$1 = function (element, content) {
+      var owner$1 = owner(element);
+      var docDom = owner$1.dom();
+      var fragment = Element.fromDom(docDom.createDocumentFragment());
</ins><span class="cx" style="display: block; padding: 0 10px">       var contentElements = fromHtml$1(content, docDom);
</span><span class="cx" style="display: block; padding: 0 10px">       append$1(fragment, contentElements);
</span><span class="cx" style="display: block; padding: 0 10px">       empty(element);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -7423,14 +7436,20 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var isBeforeInline = function (pos) {
</span><span class="cx" style="display: block; padding: 0 10px">       var container = pos.container();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return pos && NodeType.isText(container) && container.data.charAt(pos.offset()) === Zwsp.ZWSP;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      if (!pos || !NodeType.isText(container)) {
+        return false;
+      }
+      return container.data.charAt(pos.offset()) === Zwsp.ZWSP || pos.isAtStart() && isCaretContainerInline(container.previousSibling);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var isAfterInline = function (pos) {
</span><span class="cx" style="display: block; padding: 0 10px">       var container = pos.container();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return pos && NodeType.isText(container) && container.data.charAt(pos.offset() - 1) === Zwsp.ZWSP;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      if (!pos || !NodeType.isText(container)) {
+        return false;
+      }
+      return container.data.charAt(pos.offset() - 1) === Zwsp.ZWSP || pos.isAtEnd() && isCaretContainerInline(container.nextSibling);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var createBogusBr = function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var br = document.createElement('br');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var br = domGlobals.document.createElement('br');
</ins><span class="cx" style="display: block; padding: 0 10px">       br.setAttribute('data-mce-bogus', '1');
</span><span class="cx" style="display: block; padding: 0 10px">       return br;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -7534,7 +7553,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var round = Math.round;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var clone$2 = function (rect) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var clone$1 = function (rect) {
</ins><span class="cx" style="display: block; padding: 0 10px">       if (!rect) {
</span><span class="cx" style="display: block; padding: 0 10px">         return {
</span><span class="cx" style="display: block; padding: 0 10px">           left: 0,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -7555,7 +7574,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var collapse = function (rect, toStart) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      rect = clone$2(rect);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      rect = clone$1(rect);
</ins><span class="cx" style="display: block; padding: 0 10px">       if (toStart) {
</span><span class="cx" style="display: block; padding: 0 10px">         rect.right = rect.left;
</span><span class="cx" style="display: block; padding: 0 10px">       } else {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -7703,11 +7722,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var isRange = function (rng) {
</span><span class="cx" style="display: block; padding: 0 10px">       return !!rng.setStart && !!rng.setEnd;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var isHiddenWhiteSpaceRange = function (range$$1) {
-      var container = range$$1.startContainer;
-      var offset = range$$1.startOffset;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var isHiddenWhiteSpaceRange = function (range) {
+      var container = range.startContainer;
+      var offset = range.startOffset;
</ins><span class="cx" style="display: block; padding: 0 10px">       var text;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      if (isWhiteSpace(range$$1.toString()) && isNotPre(container.parentNode) && NodeType.isText(container)) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      if (isWhiteSpace(range.toString()) && isNotPre(container.parentNode) && NodeType.isText(container)) {
</ins><span class="cx" style="display: block; padding: 0 10px">         text = container.data;
</span><span class="cx" style="display: block; padding: 0 10px">         if (isWhiteSpace(text[offset - 1]) || isWhiteSpace(text[offset + 1])) {
</span><span class="cx" style="display: block; padding: 0 10px">           return true;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -7724,7 +7743,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       parentNode.insertBefore(nbsp, brNode);
</span><span class="cx" style="display: block; padding: 0 10px">       rng.setStart(nbsp, 0);
</span><span class="cx" style="display: block; padding: 0 10px">       rng.setEnd(nbsp, 1);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      clientRect = clone$2(rng.getBoundingClientRect());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      clientRect = clone$1(rng.getBoundingClientRect());
</ins><span class="cx" style="display: block; padding: 0 10px">       parentNode.removeChild(nbsp);
</span><span class="cx" style="display: block; padding: 0 10px">       return clientRect;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -7748,9 +7767,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var clientRect, clientRects;
</span><span class="cx" style="display: block; padding: 0 10px">       clientRects = item.getClientRects();
</span><span class="cx" style="display: block; padding: 0 10px">       if (clientRects.length > 0) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        clientRect = clone$2(clientRects[0]);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        clientRect = clone$1(clientRects[0]);
</ins><span class="cx" style="display: block; padding: 0 10px">       } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        clientRect = clone$2(item.getBoundingClientRect());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        clientRect = clone$1(item.getBoundingClientRect());
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       if (!isRange(item) && isBr$3(item) && isZeroRect(clientRect)) {
</span><span class="cx" style="display: block; padding: 0 10px">         return getBrClientRect(item);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -7781,32 +7800,32 @@
</span><span class="cx" style="display: block; padding: 0 10px">         clientRects.push(clientRect);
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var addCharacterOffset = function (container, offset) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var range$$1 = createRange(container.ownerDocument);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var range = createRange(container.ownerDocument);
</ins><span class="cx" style="display: block; padding: 0 10px">         if (offset < container.data.length) {
</span><span class="cx" style="display: block; padding: 0 10px">           if (isExtendingChar(container.data[offset])) {
</span><span class="cx" style="display: block; padding: 0 10px">             return clientRects;
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           if (isExtendingChar(container.data[offset - 1])) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            range$$1.setStart(container, offset);
-            range$$1.setEnd(container, offset + 1);
-            if (!isHiddenWhiteSpaceRange(range$$1)) {
-              addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(range$$1), false));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            range.setStart(container, offset);
+            range.setEnd(container, offset + 1);
+            if (!isHiddenWhiteSpaceRange(range)) {
+              addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(range), false));
</ins><span class="cx" style="display: block; padding: 0 10px">               return clientRects;
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (offset > 0) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          range$$1.setStart(container, offset - 1);
-          range$$1.setEnd(container, offset);
-          if (!isHiddenWhiteSpaceRange(range$$1)) {
-            addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(range$$1), false));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          range.setStart(container, offset - 1);
+          range.setEnd(container, offset);
+          if (!isHiddenWhiteSpaceRange(range)) {
+            addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(range), false));
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (offset < container.data.length) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          range$$1.setStart(container, offset);
-          range$$1.setEnd(container, offset + 1);
-          if (!isHiddenWhiteSpaceRange(range$$1)) {
-            addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(range$$1), true));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          range.setStart(container, offset);
+          range.setEnd(container, offset + 1);
+          if (!isHiddenWhiteSpaceRange(range)) {
+            addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(range), true));
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -7859,11 +7878,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return offset >= container.childNodes.length;
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var toRange = function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var range$$1;
-        range$$1 = createRange(container.ownerDocument);
-        range$$1.setStart(container, offset);
-        range$$1.setEnd(container, offset);
-        return range$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var range;
+        range = createRange(container.ownerDocument);
+        range.setStart(container, offset);
+        range.setEnd(container, offset);
+        return range;
</ins><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var getClientRects = function () {
</span><span class="cx" style="display: block; padding: 0 10px">         if (!clientRects) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -7874,10 +7893,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var isVisible = function () {
</span><span class="cx" style="display: block; padding: 0 10px">         return getClientRects().length > 0;
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var isEqual$$1 = function (caretPosition) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var isEqual = function (caretPosition) {
</ins><span class="cx" style="display: block; padding: 0 10px">         return caretPosition && container === caretPosition.container() && offset === caretPosition.offset();
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var getNode$$1 = function (before) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var getNode = function (before) {
</ins><span class="cx" style="display: block; padding: 0 10px">         return resolveIndex(container, before ? offset - 1 : offset);
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       return {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -7888,16 +7907,16 @@
</span><span class="cx" style="display: block; padding: 0 10px">         isVisible: isVisible,
</span><span class="cx" style="display: block; padding: 0 10px">         isAtStart: isAtStart,
</span><span class="cx" style="display: block; padding: 0 10px">         isAtEnd: isAtEnd,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        isEqual: isEqual$$1,
-        getNode: getNode$$1
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        isEqual: isEqual,
+        getNode: getNode
</ins><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">     }
</span><span class="cx" style="display: block; padding: 0 10px">     (function (CaretPosition) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      CaretPosition.fromRangeStart = function (range$$1) {
-        return CaretPosition(range$$1.startContainer, range$$1.startOffset);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      CaretPosition.fromRangeStart = function (range) {
+        return CaretPosition(range.startContainer, range.startOffset);
</ins><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      CaretPosition.fromRangeEnd = function (range$$1) {
-        return CaretPosition(range$$1.endContainer, range$$1.endOffset);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      CaretPosition.fromRangeEnd = function (range) {
+        return CaretPosition(range.endContainer, range.endOffset);
</ins><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       CaretPosition.after = function (node) {
</span><span class="cx" style="display: block; padding: 0 10px">         return CaretPosition(node.parentNode, nodeIndex(node) + 1);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -7964,7 +7983,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       return offset;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var equal$1 = function (a) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var equal = function (a) {
</ins><span class="cx" style="display: block; padding: 0 10px">       return function (b) {
</span><span class="cx" style="display: block; padding: 0 10px">         return a === b;
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -7972,7 +7991,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var normalizedNodeIndex = function (node) {
</span><span class="cx" style="display: block; padding: 0 10px">       var nodes, index, numTextFragments;
</span><span class="cx" style="display: block; padding: 0 10px">       nodes = getChildNodes(normalizedParent(node));
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      index = ArrUtils.findIndex(nodes, equal$1(node), node);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      index = ArrUtils.findIndex(nodes, equal(node), node);
</ins><span class="cx" style="display: block; padding: 0 10px">       nodes = nodes.slice(0, index + 1);
</span><span class="cx" style="display: block; padding: 0 10px">       numTextFragments = ArrUtils.reduce(nodes, function (result, node, i) {
</span><span class="cx" style="display: block; padding: 0 10px">         if (isText$5(node) && isText$5(nodes[i - 1])) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -7981,7 +8000,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return result;
</span><span class="cx" style="display: block; padding: 0 10px">       }, 0);
</span><span class="cx" style="display: block; padding: 0 10px">       nodes = ArrUtils.filter(nodes, NodeType.matchNodeNames(node.nodeName));
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      index = ArrUtils.findIndex(nodes, equal$1(node), node);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      index = ArrUtils.findIndex(nodes, equal(node), node);
</ins><span class="cx" style="display: block; padding: 0 10px">       return index - numTextFragments;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var createPathItem = function (node) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -8089,6 +8108,35 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return findTextPosition(container, parseInt(offset, 10));
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var trimEmptyTextNode = function (dom, node) {
+      if (NodeType.isText(node) && node.data.length === 0) {
+        dom.remove(node);
+      }
+    };
+    var insertNode = function (dom, rng, node) {
+      rng.insertNode(node);
+      trimEmptyTextNode(dom, node.previousSibling);
+      trimEmptyTextNode(dom, node.nextSibling);
+    };
+    var insertFragment = function (dom, rng, frag) {
+      var firstChild = Option.from(frag.firstChild);
+      var lastChild = Option.from(frag.lastChild);
+      rng.insertNode(frag);
+      firstChild.each(function (child) {
+        return trimEmptyTextNode(dom, child.previousSibling);
+      });
+      lastChild.each(function (child) {
+        return trimEmptyTextNode(dom, child.nextSibling);
+      });
+    };
+    var rangeInsertNode = function (dom, rng, node) {
+      if (NodeType.isDocumentFragment(node)) {
+        insertFragment(dom, rng, node);
+      } else {
+        insertNode(dom, rng, node);
+      }
+    };
+
</ins><span class="cx" style="display: block; padding: 0 10px">     var isContentEditableFalse$2 = NodeType.isContentEditableFalse;
</span><span class="cx" style="display: block; padding: 0 10px">     var getNormalizedTextOffset = function (trim, container, offset) {
</span><span class="cx" style="display: block; padding: 0 10px">       var node, trimmedOffset;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -8127,12 +8175,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       return bookmark;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var trimEmptyTextNode = function (node) {
-      if (NodeType.isText(node) && node.data.length === 0) {
-        node.parentNode.removeChild(node);
-      }
-    };
-    var findIndex$3 = function (dom, name, element) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var findIndex$2 = function (dom, name, element) {
</ins><span class="cx" style="display: block; padding: 0 10px">       var count = 0;
</span><span class="cx" style="display: block; padding: 0 10px">       Tools.each(dom.select(name), function (node) {
</span><span class="cx" style="display: block; padding: 0 10px">         if (node.getAttribute('data-mce-bogus') === 'all') {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -8196,7 +8239,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       if (isContentEditableFalse$2(element) || name === 'IMG') {
</span><span class="cx" style="display: block; padding: 0 10px">         return {
</span><span class="cx" style="display: block; padding: 0 10px">           name: name,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          index: findIndex$3(selection.dom, name, element)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          index: findIndex$2(selection.dom, name, element)
</ins><span class="cx" style="display: block; padding: 0 10px">         };
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       var sibling = findAdjacentContentEditableFalseElm(rng);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -8204,7 +8247,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         name = sibling.tagName;
</span><span class="cx" style="display: block; padding: 0 10px">         return {
</span><span class="cx" style="display: block; padding: 0 10px">           name: name,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          index: findIndex$3(selection.dom, name, sibling)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          index: findIndex$2(selection.dom, name, sibling)
</ins><span class="cx" style="display: block; padding: 0 10px">         };
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       return getLocation(trim, selection, normalized, rng);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -8237,7 +8280,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       if (name === 'IMG') {
</span><span class="cx" style="display: block; padding: 0 10px">         return {
</span><span class="cx" style="display: block; padding: 0 10px">           name: name,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          index: findIndex$3(dom, name, element)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          index: findIndex$2(dom, name, element)
</ins><span class="cx" style="display: block; padding: 0 10px">         };
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       var rng2 = normalizeTableCellSelection(rng.cloneRange());
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -8244,15 +8287,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">       if (!collapsed) {
</span><span class="cx" style="display: block; padding: 0 10px">         rng2.collapse(false);
</span><span class="cx" style="display: block; padding: 0 10px">         var endBookmarkNode = createBookmarkSpan(dom, id + '_end', filled);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        rng2.insertNode(endBookmarkNode);
-        trimEmptyTextNode(endBookmarkNode.nextSibling);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        rangeInsertNode(dom, rng2, endBookmarkNode);
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       rng = normalizeTableCellSelection(rng);
</span><span class="cx" style="display: block; padding: 0 10px">       rng.collapse(true);
</span><span class="cx" style="display: block; padding: 0 10px">       var startBookmarkNode = createBookmarkSpan(dom, id + '_start', filled);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      rng.insertNode(startBookmarkNode);
-      trimEmptyTextNode(startBookmarkNode.previousSibling);
-      trimEmptyTextNode(startBookmarkNode.nextSibling);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      rangeInsertNode(dom, rng, startBookmarkNode);
</ins><span class="cx" style="display: block; padding: 0 10px">       selection.moveToBookmark({
</span><span class="cx" style="display: block; padding: 0 10px">         id: id,
</span><span class="cx" style="display: block; padding: 0 10px">         keep: 1
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -8320,7 +8360,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var removeUnchanged = function (caretContainer, pos) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      remove$7(caretContainer);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      remove$5(caretContainer);
</ins><span class="cx" style="display: block; padding: 0 10px">       return pos;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var removeTextAndReposition = function (caretContainer, pos) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -8339,7 +8379,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var newPosition = indexOf(from$1(parentNode.childNodes), caretContainer).map(function (index) {
</span><span class="cx" style="display: block; padding: 0 10px">         return index < pos.offset() ? CaretPosition$1(parentNode, pos.offset() - 1) : pos;
</span><span class="cx" style="display: block; padding: 0 10px">       }).getOr(pos);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      remove$7(caretContainer);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      remove$5(caretContainer);
</ins><span class="cx" style="display: block; padding: 0 10px">       return newPosition;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var removeTextCaretContainer = function (caretContainer, pos) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -8351,7 +8391,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var removeAndReposition = function (container, pos) {
</span><span class="cx" style="display: block; padding: 0 10px">       return CaretPosition$1.isTextPosition(pos) ? removeTextCaretContainer(container, pos) : removeElementCaretContainer(container, pos);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var remove$7 = function (caretContainerNode) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var remove$5 = function (caretContainerNode) {
</ins><span class="cx" style="display: block; padding: 0 10px">       if (isElement$4(caretContainerNode) && isCaretContainer(caretContainerNode)) {
</span><span class="cx" style="display: block; padding: 0 10px">         if (hasContent(caretContainerNode)) {
</span><span class="cx" style="display: block; padding: 0 10px">           caretContainerNode.removeAttribute('data-mce-caret');
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -8366,7 +8406,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var CaretContainerRemove = {
</span><span class="cx" style="display: block; padding: 0 10px">       removeAndReposition: removeAndReposition,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      remove: remove$7
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      remove: remove$5
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var browser$2 = PlatformDetection$1.detect().browser;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -8516,19 +8556,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return isContentEditableFalse$3(node) || NodeType.isTable(node) && isFakeCaretTableBrowser();
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var is$3 = function (expected) {
-      return function (actual) {
-        return expected === actual;
-      };
-    };
-    var isNbsp = is$3('\xA0');
-    var isWhiteSpace$1 = function (chr) {
-      return /^[\r\n\t ]$/.test(chr);
-    };
-    var isContent = function (chr) {
-      return !isWhiteSpace$1(chr) && !isNbsp(chr);
-    };
-
</del><span class="cx" style="display: block; padding: 0 10px">     var isContentEditableFalse$4 = NodeType.isContentEditableFalse;
</span><span class="cx" style="display: block; padding: 0 10px">     var isBlockLike = NodeType.matchStyleValues('display', 'block table table-cell table-caption list-item');
</span><span class="cx" style="display: block; padding: 0 10px">     var isCaretContainer$2 = isCaretContainer;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -8644,7 +8671,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return null;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var before$2 = curry(beforeAfter, true);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var after$2 = curry(beforeAfter, false);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var after$1 = curry(beforeAfter, false);
</ins><span class="cx" style="display: block; padding: 0 10px">     var normalizeRange = function (direction, root, range) {
</span><span class="cx" style="display: block; padding: 0 10px">       var node, container, offset, location;
</span><span class="cx" style="display: block; padding: 0 10px">       var leanLeft = curry(lean, true, root);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -8665,7 +8692,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         if (location === 'after') {
</span><span class="cx" style="display: block; padding: 0 10px">           node = container.previousSibling;
</span><span class="cx" style="display: block; padding: 0 10px">           if (isFakeCaretTarget(node)) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            return after$2(node);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            return after$1(node);
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -8681,13 +8708,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">             node = leanLeft(container);
</span><span class="cx" style="display: block; padding: 0 10px">             if (node) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              return after$2(node);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              return after$1(node);
</ins><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           if (direction === -1) {
</span><span class="cx" style="display: block; padding: 0 10px">             node = leanLeft(container);
</span><span class="cx" style="display: block; padding: 0 10px">             if (node) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              return after$2(node);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              return after$1(node);
</ins><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">             node = leanRight(container);
</span><span class="cx" style="display: block; padding: 0 10px">             if (node) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -8709,7 +8736,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">           if (direction === -1) {
</span><span class="cx" style="display: block; padding: 0 10px">             node = leanLeft(container);
</span><span class="cx" style="display: block; padding: 0 10px">             if (node) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              return after$2(node);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              return after$1(node);
</ins><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           return range;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -8724,7 +8751,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         if (offset === 0) {
</span><span class="cx" style="display: block; padding: 0 10px">           node = leanLeft(container);
</span><span class="cx" style="display: block; padding: 0 10px">           if (node) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            return after$2(node);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            return after$1(node);
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           return range;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -8731,13 +8758,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       return range;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var isNextToContentEditableFalse = function (relativeOffset, caretPosition) {
-      var node = getChildNodeAtRelativeOffset(relativeOffset, caretPosition);
-      return isContentEditableFalse$4(node) && !NodeType.isBogusAll(node);
-    };
-    var isNextToTable = function (relativeOffset, caretPosition) {
-      return NodeType.isTable(getChildNodeAtRelativeOffset(relativeOffset, caretPosition));
-    };
</del><span class="cx" style="display: block; padding: 0 10px">     var getRelativeCefElm = function (forward, caretPosition) {
</span><span class="cx" style="display: block; padding: 0 10px">       return Option.from(getChildNodeAtRelativeOffset(forward ? 0 : -1, caretPosition)).filter(isContentEditableFalse$4);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -8748,24 +8768,27 @@
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       return CaretPosition.fromRangeEnd(normalizedRange);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var isBeforeContentEditableFalse = curry(isNextToContentEditableFalse, 0);
-    var isAfterContentEditableFalse = curry(isNextToContentEditableFalse, -1);
-    var isBeforeTable = curry(isNextToTable, 0);
-    var isAfterTable = curry(isNextToTable, -1);
-    var isChar = function (forward, predicate, pos) {
-      return Option.from(pos.container()).filter(NodeType.isText).exists(function (text) {
-        var delta = forward ? 0 : -1;
-        return predicate(text.data.charAt(pos.offset() + delta));
-      });
-    };
-    var isBeforeSpace = curry(isChar, true, isWhiteSpace$1);
-    var isAfterSpace = curry(isChar, false, isWhiteSpace$1);
</del><span class="cx" style="display: block; padding: 0 10px">     var getElementFromPosition = function (pos) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return Option.from(pos.getNode()).map(Element$$1.fromDom);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return Option.from(pos.getNode()).map(Element.fromDom);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var getElementFromPrevPosition = function (pos) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return Option.from(pos.getNode(true)).map(Element$$1.fromDom);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return Option.from(pos.getNode(true)).map(Element.fromDom);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var getVisualCaretPosition = function (walkFn, caretPosition) {
+      while (caretPosition = walkFn(caretPosition)) {
+        if (caretPosition.isVisible()) {
+          return caretPosition;
+        }
+      }
+      return caretPosition;
+    };
+    var isMoveInsideSameBlock = function (from, to) {
+      var inSameBlock = isInSameBlock(from, to);
+      if (!inSameBlock && NodeType.isBr(from.getNode())) {
+        return true;
+      }
+      return inSameBlock;
+    };
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var HDirection;
</span><span class="cx" style="display: block; padding: 0 10px">     (function (HDirection) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -8976,6 +8999,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var navigateIgnore = function (forward, root, from, ignoreFilter) {
+      return navigate(forward, root, from).bind(function (pos) {
+        return ignoreFilter(pos) ? navigateIgnore(forward, root, pos, ignoreFilter) : Option.some(pos);
+      });
+    };
</ins><span class="cx" style="display: block; padding: 0 10px">     var positionIn = function (forward, element) {
</span><span class="cx" style="display: block; padding: 0 10px">       var startNode = forward ? element.firstChild : element.lastChild;
</span><span class="cx" style="display: block; padding: 0 10px">       if (NodeType.isText(startNode)) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -8997,6 +9025,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       nextPosition: nextPosition,
</span><span class="cx" style="display: block; padding: 0 10px">       prevPosition: prevPosition,
</span><span class="cx" style="display: block; padding: 0 10px">       navigate: navigate,
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      navigateIgnore: navigateIgnore,
</ins><span class="cx" style="display: block; padding: 0 10px">       positionIn: positionIn,
</span><span class="cx" style="display: block; padding: 0 10px">       firstPositionIn: curry(positionIn, true),
</span><span class="cx" style="display: block; padding: 0 10px">       lastPositionIn: curry(positionIn, false)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -9730,8 +9759,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     function NodeValue (is, name) {
</span><span class="cx" style="display: block; padding: 0 10px">       var get = function (element) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (!is(element))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (!is(element)) {
</ins><span class="cx" style="display: block; padding: 0 10px">           throw new Error('Can only get ' + name + ' value of a ' + name + ' node');
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        }
</ins><span class="cx" style="display: block; padding: 0 10px">         return getOption(element).getOr('');
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var getOptionIE10 = function (element) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -9747,8 +9777,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var browser = PlatformDetection$1.detect().browser;
</span><span class="cx" style="display: block; padding: 0 10px">       var getOption = browser.isIE() && browser.version.major === 10 ? getOptionIE10 : getOptionSafe;
</span><span class="cx" style="display: block; padding: 0 10px">       var set = function (element, value) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (!is(element))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (!is(element)) {
</ins><span class="cx" style="display: block; padding: 0 10px">           throw new Error('Can only set raw ' + name + ' value of a ' + name + ' node');
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        }
</ins><span class="cx" style="display: block; padding: 0 10px">         element.dom().nodeValue = value;
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       return {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -9759,17 +9790,17 @@
</span><span class="cx" style="display: block; padding: 0 10px">     }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var api = NodeValue(isText, 'text');
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var get$6 = function (element) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var get$4 = function (element) {
</ins><span class="cx" style="display: block; padding: 0 10px">       return api.get(element);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var isZeroWidth = function (elem) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return isText(elem) && get$6(elem) === zeroWidth();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return isText(elem) && get$4(elem) === zeroWidth();
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var context = function (editor, elem, wrapName, nodeName) {
</span><span class="cx" style="display: block; padding: 0 10px">       return parent(elem).fold(function () {
</span><span class="cx" style="display: block; padding: 0 10px">         return 'skipping';
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      }, function (parent$$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      }, function (parent) {
</ins><span class="cx" style="display: block; padding: 0 10px">         if (nodeName === 'br' || isZeroWidth(elem)) {
</span><span class="cx" style="display: block; padding: 0 10px">           return 'valid';
</span><span class="cx" style="display: block; padding: 0 10px">         } else if (isAnnotation(elem)) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -9776,7 +9807,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">           return 'existing';
</span><span class="cx" style="display: block; padding: 0 10px">         } else if (isCaretNode(elem)) {
</span><span class="cx" style="display: block; padding: 0 10px">           return 'caret';
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        } else if (!FormatUtils.isValid(editor, wrapName, nodeName) || !FormatUtils.isValid(editor, name(parent$$1), wrapName)) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        } else if (!FormatUtils.isValid(editor, wrapName, nodeName) || !FormatUtils.isValid(editor, name(parent), wrapName)) {
</ins><span class="cx" style="display: block; padding: 0 10px">           return 'invalid-child';
</span><span class="cx" style="display: block; padding: 0 10px">         } else {
</span><span class="cx" style="display: block; padding: 0 10px">           return 'valid';
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -9795,7 +9826,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var makeAnnotation = function (eDoc, _a, annotationName, decorate) {
</span><span class="cx" style="display: block; padding: 0 10px">       var _b = _a.uid, uid = _b === void 0 ? generate('mce-annotation') : _b, data = __rest(_a, ['uid']);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var master = Element$$1.fromTag('span', eDoc);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var master = Element.fromTag('span', eDoc);
</ins><span class="cx" style="display: block; padding: 0 10px">       add$2(master, annotation());
</span><span class="cx" style="display: block; padding: 0 10px">       set(master, '' + dataAnnotationId(), uid);
</span><span class="cx" style="display: block; padding: 0 10px">       set(master, '' + dataAnnotation(), annotationName);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -9827,8 +9858,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">         switch (ctx) {
</span><span class="cx" style="display: block; padding: 0 10px">         case 'invalid-child': {
</span><span class="cx" style="display: block; padding: 0 10px">             finishWrapper();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            var children$$1 = children(elem);
-            processElements(children$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            var children$1 = children(elem);
+            processElements(children$1);
</ins><span class="cx" style="display: block; padding: 0 10px">             finishWrapper();
</span><span class="cx" style="display: block; padding: 0 10px">             break;
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -9843,7 +9874,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var processNodes = function (nodes) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var elems = map(nodes, Element$$1.fromDom);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var elems = map(nodes, Element.fromDom);
</ins><span class="cx" style="display: block; padding: 0 10px">         processElements(elems);
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       RangeWalk.walk(editor.dom, rng, function (nodes) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -9852,7 +9883,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">       return newWrappers;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var annotateWithBookmark = function (editor, name$$1, settings, data) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var annotateWithBookmark = function (editor, name, settings, data) {
</ins><span class="cx" style="display: block; padding: 0 10px">       editor.undoManager.transact(function () {
</span><span class="cx" style="display: block; padding: 0 10px">         var initialRng = editor.selection.getRng();
</span><span class="cx" style="display: block; padding: 0 10px">         if (initialRng.collapsed) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -9859,14 +9890,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">           applyWordGrab(editor, initialRng);
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (editor.selection.getRng().collapsed) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          var wrapper = makeAnnotation(editor.getDoc(), data, name$$1, settings.decorate);
-          set$2(wrapper, '\xA0');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          var wrapper = makeAnnotation(editor.getDoc(), data, name, settings.decorate);
+          set$1(wrapper, '\xA0');
</ins><span class="cx" style="display: block; padding: 0 10px">           editor.selection.getRng().insertNode(wrapper.dom());
</span><span class="cx" style="display: block; padding: 0 10px">           editor.selection.select(wrapper.dom());
</span><span class="cx" style="display: block; padding: 0 10px">         } else {
</span><span class="cx" style="display: block; padding: 0 10px">           var bookmark = GetBookmark.getPersistentBookmark(editor.selection, false);
</span><span class="cx" style="display: block; padding: 0 10px">           var rng = editor.selection.getRng();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          annotate(editor, rng, name$$1, settings.decorate, data);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          annotate(editor, rng, name, settings.decorate, data);
</ins><span class="cx" style="display: block; padding: 0 10px">           editor.selection.moveToBookmark(bookmark);
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -10095,36 +10126,36 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var getLastChildren = function (elm) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var children$$1 = [];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var children = [];
</ins><span class="cx" style="display: block; padding: 0 10px">       var rawNode = elm.dom();
</span><span class="cx" style="display: block; padding: 0 10px">       while (rawNode) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        children$$1.push(Element$$1.fromDom(rawNode));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        children.push(Element.fromDom(rawNode));
</ins><span class="cx" style="display: block; padding: 0 10px">         rawNode = rawNode.lastChild;
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return children$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return children;
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var removeTrailingBr = function (elm) {
</span><span class="cx" style="display: block; padding: 0 10px">       var allBrs = descendants$1(elm, 'br');
</span><span class="cx" style="display: block; padding: 0 10px">       var brs = filter(getLastChildren(elm).slice(-1), isBr);
</span><span class="cx" style="display: block; padding: 0 10px">       if (allBrs.length === brs.length) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        each(brs, remove$2);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        each(brs, remove$1);
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var fillWithPaddingBr = function (elm) {
</span><span class="cx" style="display: block; padding: 0 10px">       empty(elm);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      append(elm, Element$$1.fromHtml('<br data-mce-bogus="1">'));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      append(elm, Element.fromHtml('<br data-mce-bogus="1">'));
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var isPaddingContents = function (elm) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return isText(elm) ? get$6(elm) === '\xA0' : isBr(elm);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return isText(elm) ? get$4(elm) === '\xA0' : isBr(elm);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var isPaddedElement = function (elm) {
</span><span class="cx" style="display: block; padding: 0 10px">       return filter(children(elm), isPaddingContents).length === 1;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var trimBlockTrailingBr = function (elm) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      lastChild(elm).each(function (lastChild$$1) {
-        prevSibling(lastChild$$1).each(function (lastChildPrevSibling) {
-          if (isBlock(elm) && isBr(lastChild$$1) && isBlock(lastChildPrevSibling)) {
-            remove$2(lastChild$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      lastChild(elm).each(function (lastChild) {
+        prevSibling(lastChild).each(function (lastChildPrevSibling) {
+          if (isBlock(elm) && isBr(lastChild) && isBlock(lastChildPrevSibling)) {
+            remove$1(lastChild);
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -10217,7 +10248,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">     }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    function Serializer (settings, schema) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    function HtmlSerializer (settings, schema) {
</ins><span class="cx" style="display: block; padding: 0 10px">       if (schema === void 0) {
</span><span class="cx" style="display: block; padding: 0 10px">         schema = Schema();
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -10313,7 +10344,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var createRange$1 = function (sc, so, ec, eo) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var rng = document.createRange();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var rng = domGlobals.document.createRange();
</ins><span class="cx" style="display: block; padding: 0 10px">       rng.setStart(sc, so);
</span><span class="cx" style="display: block; padding: 0 10px">       rng.setEnd(ec, eo);
</span><span class="cx" style="display: block; padding: 0 10px">       return rng;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -10407,7 +10438,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var trimBrsFromTableCell = function (dom, elm) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      Option.from(dom.getParent(elm, 'td,th')).map(Element$$1.fromDom).each(PaddingBr.trimBlockTrailingBr);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      Option.from(dom.getParent(elm, 'td,th')).map(Element.fromDom).each(PaddingBr.trimBlockTrailingBr);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var reduceInlineTextElements = function (editor, merge) {
</span><span class="cx" style="display: block; padding: 0 10px">       var textInlineElements = editor.schema.getTextInlineElements();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -10512,7 +10543,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       parser = editor.parser;
</span><span class="cx" style="display: block; padding: 0 10px">       merge = details.merge;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      serializer = Serializer({ validate: editor.settings.validate }, editor.schema);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      serializer = HtmlSerializer({ validate: editor.settings.validate }, editor.schema);
</ins><span class="cx" style="display: block; padding: 0 10px">       bookmarkHtml = '<span id="mce_marker" data-mce-type="bookmark">&#xFEFF;&#x200B;</span>';
</span><span class="cx" style="display: block; padding: 0 10px">       args = {
</span><span class="cx" style="display: block; padding: 0 10px">         content: value,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -10653,9 +10684,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var filterMobilePlugins = function (plugins) {
</span><span class="cx" style="display: block; padding: 0 10px">       return filter(plugins, curry(contains, mobilePlugins));
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var extractSections = function (keys$$1, settings) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var extractSections = function (keys, settings) {
</ins><span class="cx" style="display: block; padding: 0 10px">       var result = bifilter(settings, function (value, key) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return contains(keys$$1, key);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return contains(keys, key);
</ins><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">       return sectionResult(result.t, result.f);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -10792,7 +10823,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var isInlineTarget = function (editor, elm) {
</span><span class="cx" style="display: block; padding: 0 10px">       var selector = getString(editor, 'inline_boundaries_selector').getOr('a[href],code');
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return is$1(Element$$1.fromDom(elm), selector);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return is$1(Element.fromDom(elm), selector);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var isRtl = function (element) {
</span><span class="cx" style="display: block; padding: 0 10px">       return DOMUtils$1.DOM.getStyle(element, 'direction', true) === 'rtl' || hasStrongRtl(element.textContent);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -10813,6 +10844,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return isBeforeInline(pos) || isAfterInline(pos);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var normalizePosition = function (forward, pos) {
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      if (!pos) {
+        return pos;
+      }
</ins><span class="cx" style="display: block; padding: 0 10px">       var container = pos.container(), offset = pos.offset();
</span><span class="cx" style="display: block; padding: 0 10px">       if (forward) {
</span><span class="cx" style="display: block; padding: 0 10px">         if (isCaretContainerInline(container)) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -10851,7 +10885,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var isBeforeRoot = function (rootNode) {
</span><span class="cx" style="display: block; padding: 0 10px">       return function (elm) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return eq(rootNode, Element$$1.fromDom(elm.dom().parentNode));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return eq(rootNode, Element.fromDom(elm.dom().parentNode));
</ins><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var getParentBlock$1 = function (rootNode, elm) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -10900,8 +10934,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var hasWhitespacePreserveParent = function (rootNode, node) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var rootElement = Element$$1.fromDom(rootNode);
-      var startNode = Element$$1.fromDom(node);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var rootElement = Element.fromDom(rootNode);
+      var startNode = Element.fromDom(node);
</ins><span class="cx" style="display: block; padding: 0 10px">       return ancestor$2(startNode, 'pre,code', curry(eq, rootElement));
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var isWhitespace = function (rootNode, node) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -10910,7 +10944,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var isNamedAnchor = function (node) {
</span><span class="cx" style="display: block; padding: 0 10px">       return NodeType.isElement(node) && node.nodeName === 'A' && node.hasAttribute('name');
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var isContent$1 = function (rootNode, node) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var isContent = function (rootNode, node) {
</ins><span class="cx" style="display: block; padding: 0 10px">       return isCaretCandidate(node) && isWhitespace(rootNode, node) === false || isNamedAnchor(node) || isBookmark(node);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var isBookmark = NodeType.hasAttribute('data-mce-bookmark');
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -10918,7 +10952,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var isBogusAll$1 = NodeType.hasAttributeValue('data-mce-bogus', 'all');
</span><span class="cx" style="display: block; padding: 0 10px">     var isEmptyNode = function (targetNode) {
</span><span class="cx" style="display: block; padding: 0 10px">       var walker, node, brCount = 0;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      if (isContent$1(targetNode, targetNode)) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      if (isContent(targetNode, targetNode)) {
</ins><span class="cx" style="display: block; padding: 0 10px">         return false;
</span><span class="cx" style="display: block; padding: 0 10px">       } else {
</span><span class="cx" style="display: block; padding: 0 10px">         node = targetNode.firstChild;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -10940,7 +10974,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">             node = walker.next();
</span><span class="cx" style="display: block; padding: 0 10px">             continue;
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (isContent$1(targetNode, node)) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (isContent(targetNode, node)) {
</ins><span class="cx" style="display: block; padding: 0 10px">             return false;
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           node = walker.next();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -10956,8 +10990,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var BlockPosition = Immutable('block', 'position');
</span><span class="cx" style="display: block; padding: 0 10px">     var BlockBoundary = Immutable('from', 'to');
</span><span class="cx" style="display: block; padding: 0 10px">     var getBlockPosition = function (rootNode, pos) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var rootElm = Element$$1.fromDom(rootNode);
-      var containerElm = Element$$1.fromDom(pos.container());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var rootElm = Element.fromDom(rootNode);
+      var containerElm = Element.fromDom(pos.container());
</ins><span class="cx" style="display: block; padding: 0 10px">       return DeleteUtils.getParentBlock(rootElm, containerElm).map(function (block) {
</span><span class="cx" style="display: block; padding: 0 10px">         return BlockPosition(block, pos);
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -11036,21 +11070,21 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var getChildrenUntilBlockBoundary = function (block) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var children$$1 = children(block);
-      return findIndex(children$$1, isBlock).fold(function () {
-        return children$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var children$1 = children(block);
+      return findIndex(children$1, isBlock).fold(function () {
+        return children$1;
</ins><span class="cx" style="display: block; padding: 0 10px">       }, function (index) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return children$$1.slice(0, index);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return children$1.slice(0, index);
</ins><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var extractChildren = function (block) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var children$$1 = getChildrenUntilBlockBoundary(block);
-      each(children$$1, remove$2);
-      return children$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var children = getChildrenUntilBlockBoundary(block);
+      each(children, remove$1);
+      return children;
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var removeEmptyRoot = function (rootNode, block) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var parents$$1 = Parents.parentsAndSelf(block, rootNode);
-      return find(parents$$1.reverse(), Empty.isEmpty).each(remove$2);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var parents = Parents.parentsAndSelf(block, rootNode);
+      return find(parents.reverse(), Empty.isEmpty).each(remove$1);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var isEmptyBefore = function (el) {
</span><span class="cx" style="display: block; padding: 0 10px">       return filter(prevSiblings(el), function (el) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -11063,11 +11097,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return CaretFinder.firstPositionIn(toBlock.dom());
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       if (isEmptyBefore(insertionPoint) && Empty.isEmpty(fromBlock)) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        before(insertionPoint, Element$$1.fromTag('br'));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        before(insertionPoint, Element.fromTag('br'));
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       var position = CaretFinder.prevPosition(toBlock.dom(), CaretPosition$1.before(insertionPoint.dom()));
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      each(extractChildren(fromBlock), function (child$$1) {
-        before(insertionPoint, child$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      each(extractChildren(fromBlock), function (child) {
+        before(insertionPoint, child);
</ins><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">       removeEmptyRoot(rootNode, fromBlock);
</span><span class="cx" style="display: block; padding: 0 10px">       return position;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -11074,7 +11108,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var sidelongBlockMerge = function (rootNode, fromBlock, toBlock) {
</span><span class="cx" style="display: block; padding: 0 10px">       if (Empty.isEmpty(toBlock)) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        remove$2(toBlock);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        remove$1(toBlock);
</ins><span class="cx" style="display: block; padding: 0 10px">         if (Empty.isEmpty(fromBlock)) {
</span><span class="cx" style="display: block; padding: 0 10px">           PaddingBr.fillWithPaddingBr(fromBlock);
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -11081,8 +11115,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return CaretFinder.firstPositionIn(fromBlock.dom());
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       var position = CaretFinder.lastPositionIn(toBlock.dom());
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      each(extractChildren(fromBlock), function (child$$1) {
-        append(toBlock, child$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      each(extractChildren(fromBlock), function (child) {
+        append(toBlock, child);
</ins><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">       removeEmptyRoot(rootNode, fromBlock);
</span><span class="cx" style="display: block; padding: 0 10px">       return position;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -11097,7 +11131,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var trimBr = function (first, block) {
</span><span class="cx" style="display: block; padding: 0 10px">       CaretFinder.positionIn(first, block.dom()).map(function (position) {
</span><span class="cx" style="display: block; padding: 0 10px">         return position.getNode();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      }).map(Element$$1.fromDom).filter(isBr).each(remove$2);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      }).map(Element.fromDom).filter(isBr).each(remove$1);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var mergeBlockInto = function (rootNode, fromBlock, toBlock) {
</span><span class="cx" style="display: block; padding: 0 10px">       trimBr(true, fromBlock);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -11111,7 +11145,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var backspaceDelete = function (editor, forward) {
</span><span class="cx" style="display: block; padding: 0 10px">       var position;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var rootNode = Element$$1.fromDom(editor.getBody());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var rootNode = Element.fromDom(editor.getBody());
</ins><span class="cx" style="display: block; padding: 0 10px">       position = BlockMergeBoundary.read(rootNode.dom(), forward, editor.selection.getRng()).bind(function (blockBoundary) {
</span><span class="cx" style="display: block; padding: 0 10px">         return MergeBlocks.mergeBlocks(rootNode, forward, blockBoundary.from().block(), blockBoundary.to().block());
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -11125,8 +11159,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var deleteRangeMergeBlocks = function (rootNode, selection) {
</span><span class="cx" style="display: block; padding: 0 10px">       var rng = selection.getRng();
</span><span class="cx" style="display: block; padding: 0 10px">       return liftN([
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        DeleteUtils.getParentBlock(rootNode, Element$$1.fromDom(rng.startContainer)),
-        DeleteUtils.getParentBlock(rootNode, Element$$1.fromDom(rng.endContainer))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        DeleteUtils.getParentBlock(rootNode, Element.fromDom(rng.startContainer)),
+        DeleteUtils.getParentBlock(rootNode, Element.fromDom(rng.endContainer))
</ins><span class="cx" style="display: block; padding: 0 10px">       ], function (block1, block2) {
</span><span class="cx" style="display: block; padding: 0 10px">         if (eq(block1, block2) === false) {
</span><span class="cx" style="display: block; padding: 0 10px">           rng.deleteContents();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -11140,7 +11174,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       }).getOr(false);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var isRawNodeInTable = function (root, rawNode) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var node = Element$$1.fromDom(rawNode);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var node = Element.fromDom(rawNode);
</ins><span class="cx" style="display: block; padding: 0 10px">       var isRoot = curry(eq, root);
</span><span class="cx" style="display: block; padding: 0 10px">       return ancestor(node, isTableCell, isRoot).isSome();
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -11158,7 +11192,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return true;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var deleteRange = function (editor) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var rootNode = Element$$1.fromDom(editor.getBody());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var rootNode = Element.fromDom(editor.getBody());
</ins><span class="cx" style="display: block; padding: 0 10px">       var rng = editor.selection.getRng();
</span><span class="cx" style="display: block; padding: 0 10px">       return isEverythingSelected(rootNode, rng) ? emptyEditor(editor) : deleteRangeMergeBlocks(rootNode, editor.selection);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -11177,11 +11211,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var constructors = [];
</span><span class="cx" style="display: block; padding: 0 10px">       var adt = {};
</span><span class="cx" style="display: block; padding: 0 10px">       each(cases, function (acase, count) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var keys$$1 = keys(acase);
-        if (keys$$1.length !== 1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var keys$1 = keys(acase);
+        if (keys$1.length !== 1) {
</ins><span class="cx" style="display: block; padding: 0 10px">           throw new Error('one and only one name per case');
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var key = keys$$1[0];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var key = keys$1[0];
</ins><span class="cx" style="display: block; padding: 0 10px">         var value = acase[key];
</span><span class="cx" style="display: block; padding: 0 10px">         if (adt[key] !== undefined) {
</span><span class="cx" style="display: block; padding: 0 10px">           throw new Error('duplicate key detected:' + key);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -11221,7 +11255,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">             },
</span><span class="cx" style="display: block; padding: 0 10px">             match: match,
</span><span class="cx" style="display: block; padding: 0 10px">             log: function (label) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              console.log(label, {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              domGlobals.console.log(label, {
</ins><span class="cx" style="display: block; padding: 0 10px">                 constructors: constructors,
</span><span class="cx" style="display: block; padding: 0 10px">                 constructor: key,
</span><span class="cx" style="display: block; padding: 0 10px">                 params: args
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -11238,7 +11272,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return getElementFromPosition(pos).exists(isBr);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var findBr = function (forward, root, pos) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var parentBlocks = filter(Parents.parentsAndSelf(Element$$1.fromDom(pos.container()), root), isBlock);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var parentBlocks = filter(Parents.parentsAndSelf(Element.fromDom(pos.container()), root), isBlock);
</ins><span class="cx" style="display: block; padding: 0 10px">       var scope = head(parentBlocks).getOr(root);
</span><span class="cx" style="display: block; padding: 0 10px">       return CaretFinder.fromPosition(forward, scope.dom(), pos).filter(isBr$5);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -11251,8 +11285,45 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var findPreviousBr = curry(findBr, false);
</span><span class="cx" style="display: block; padding: 0 10px">     var findNextBr = curry(findBr, true);
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var is$2 = function (expected) {
+      return function (actual) {
+        return expected === actual;
+      };
+    };
+    var isNbsp = is$2('\xA0');
+    var isWhiteSpace$1 = function (chr) {
+      return /^[\r\n\t ]$/.test(chr);
+    };
+    var isContent$1 = function (chr) {
+      return !isWhiteSpace$1(chr) && !isNbsp(chr);
+    };
+
+    var isChar = function (forward, predicate, pos) {
+      return Option.from(pos.container()).filter(NodeType.isText).exists(function (text) {
+        var delta = forward ? 0 : -1;
+        return predicate(text.data.charAt(pos.offset() + delta));
+      });
+    };
+    var isBeforeSpace = curry(isChar, true, isWhiteSpace$1);
+    var isAfterSpace = curry(isChar, false, isWhiteSpace$1);
+    var isEmptyText = function (pos) {
+      var container = pos.container();
+      return NodeType.isText(container) && container.data.length === 0;
+    };
+    var isNextToContentEditableFalse = function (relativeOffset, caretPosition) {
+      var node = getChildNodeAtRelativeOffset(relativeOffset, caretPosition);
+      return NodeType.isContentEditableFalse(node) && !NodeType.isBogusAll(node);
+    };
+    var isBeforeContentEditableFalse = curry(isNextToContentEditableFalse, 0);
+    var isAfterContentEditableFalse = curry(isNextToContentEditableFalse, -1);
+    var isNextToTable = function (relativeOffset, caretPosition) {
+      return NodeType.isTable(getChildNodeAtRelativeOffset(relativeOffset, caretPosition));
+    };
+    var isBeforeTable = curry(isNextToTable, 0);
+    var isAfterTable = curry(isNextToTable, -1);
+
</ins><span class="cx" style="display: block; padding: 0 10px">     var isCompoundElement = function (node) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return isTableCell(Element$$1.fromDom(node)) || isListItem(Element$$1.fromDom(node));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return isTableCell(Element.fromDom(node)) || isListItem(Element.fromDom(node));
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var DeleteAction = Adt.generate([
</span><span class="cx" style="display: block; padding: 0 10px">       { remove: ['element'] },
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -11266,7 +11337,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var isDeleteFromCefDifferentBlocks = function (root, forward, from, to) {
</span><span class="cx" style="display: block; padding: 0 10px">       var inSameBlock = function (elm) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return isInline(Element$$1.fromDom(elm)) && !isInSameBlock(from, to, root);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return isInline(Element.fromDom(elm)) && !isInSameBlock(from, to, root);
</ins><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       return getRelativeCefElm(!forward, from).fold(function () {
</span><span class="cx" style="display: block; padding: 0 10px">         return getRelativeCefElm(forward, to).fold(constant(false), inSameBlock);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -11274,7 +11345,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var deleteEmptyBlockOrMoveToCef = function (root, forward, from, to) {
</span><span class="cx" style="display: block; padding: 0 10px">       var toCefElm = to.getNode(forward === false);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return DeleteUtils.getParentBlock(Element$$1.fromDom(root), Element$$1.fromDom(from.getNode())).map(function (blockElm) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return DeleteUtils.getParentBlock(Element.fromDom(root), Element.fromDom(from.getNode())).map(function (blockElm) {
</ins><span class="cx" style="display: block; padding: 0 10px">         return Empty.isEmpty(blockElm) ? DeleteAction.remove(blockElm.dom()) : DeleteAction.moveToElement(toCefElm);
</span><span class="cx" style="display: block; padding: 0 10px">       }).orThunk(function () {
</span><span class="cx" style="display: block; padding: 0 10px">         return Option.some(DeleteAction.moveToElement(toCefElm));
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -11335,7 +11406,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var read$2 = function (root, forward, rng) {
</span><span class="cx" style="display: block; padding: 0 10px">       var normalizedRange = normalizeRange(forward ? 1 : -1, root, rng);
</span><span class="cx" style="display: block; padding: 0 10px">       var from = CaretPosition$1.fromRangeStart(normalizedRange);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var rootElement = Element$$1.fromDom(root);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var rootElement = Element.fromDom(root);
</ins><span class="cx" style="display: block; padding: 0 10px">       if (forward === false && isAfterContentEditableFalse(from)) {
</span><span class="cx" style="display: block; padding: 0 10px">         return Option.some(DeleteAction.remove(from.getNode(true)));
</span><span class="cx" style="display: block; padding: 0 10px">       } else if (forward && isBeforeContentEditableFalse(from)) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -11404,7 +11475,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var mergeTextNodes = function (prevNode, nextNode, normalizeWhitespace) {
</span><span class="cx" style="display: block; padding: 0 10px">       var whitespaceOffset = rTrim(prevNode.data).length;
</span><span class="cx" style="display: block; padding: 0 10px">       prevNode.appendData(nextNode.data);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      remove$2(Element$$1.fromDom(nextNode));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      remove$1(Element.fromDom(nextNode));
</ins><span class="cx" style="display: block; padding: 0 10px">       if (normalizeWhitespace) {
</span><span class="cx" style="display: block; padding: 0 10px">         normalizeWhitespaceAfter(prevNode, whitespaceOffset);
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -11487,7 +11558,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var paddEmptyBlock = function (elm) {
</span><span class="cx" style="display: block; padding: 0 10px">       if (Empty.isEmpty(elm)) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var br = Element$$1.fromHtml('<br data-mce-bogus="1">');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var br = Element.fromHtml('<br data-mce-bogus="1">');
</ins><span class="cx" style="display: block; padding: 0 10px">         empty(elm);
</span><span class="cx" style="display: block; padding: 0 10px">         append(elm, br);
</span><span class="cx" style="display: block; padding: 0 10px">         return Option.some(CaretPosition$1.before(br.dom()));
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -11502,7 +11573,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var nextTextOpt = nextSibling(elm).filter(function (e) {
</span><span class="cx" style="display: block; padding: 0 10px">         return NodeType.isText(e.dom());
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      remove$2(elm);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      remove$1(elm);
</ins><span class="cx" style="display: block; padding: 0 10px">       return liftN([
</span><span class="cx" style="display: block; padding: 0 10px">         prevTextOpt,
</span><span class="cx" style="display: block; padding: 0 10px">         nextTextOpt,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -11554,7 +11625,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var deleteElement$1 = function (editor, forward) {
</span><span class="cx" style="display: block; padding: 0 10px">       return function (element) {
</span><span class="cx" style="display: block; padding: 0 10px">         editor._selectionOverrides.hideFakeCaret();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        DeleteElement.deleteElement(editor, forward, Element$$1.fromDom(element));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        DeleteElement.deleteElement(editor, forward, Element.fromDom(element));
</ins><span class="cx" style="display: block; padding: 0 10px">         return true;
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -11578,13 +11649,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return result.getOr(false);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var deleteOffscreenSelection = function (rootElement) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      each(descendants$1(rootElement, '.mce-offscreen-selection'), remove$2);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      each(descendants$1(rootElement, '.mce-offscreen-selection'), remove$1);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var backspaceDeleteRange = function (editor, forward) {
</span><span class="cx" style="display: block; padding: 0 10px">       var selectedElement = editor.selection.getNode();
</span><span class="cx" style="display: block; padding: 0 10px">       if (NodeType.isContentEditableFalse(selectedElement)) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        deleteOffscreenSelection(Element$$1.fromDom(editor.getBody()));
-        DeleteElement.deleteElement(editor, forward, Element$$1.fromDom(editor.selection.getNode()));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        deleteOffscreenSelection(Element.fromDom(editor.getBody()));
+        DeleteElement.deleteElement(editor, forward, Element.fromDom(editor.selection.getNode()));
</ins><span class="cx" style="display: block; padding: 0 10px">         DeleteUtils.paddEmptyBody(editor);
</span><span class="cx" style="display: block; padding: 0 10px">         return true;
</span><span class="cx" style="display: block; padding: 0 10px">       } else {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -11783,7 +11854,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return nextPos.isNone() ? Option.some(Location.end(inline)) : Option.none();
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var after$3 = function (isInlineTarget, rootNode, pos) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var after$2 = function (isInlineTarget, rootNode, pos) {
</ins><span class="cx" style="display: block; padding: 0 10px">       var nPos = InlineUtils.normalizeBackwards(pos);
</span><span class="cx" style="display: block; padding: 0 10px">       var scope = rescope(rootNode, nPos.container());
</span><span class="cx" style="display: block; padding: 0 10px">       return InlineUtils.findRootInline(isInlineTarget, scope, nPos).fold(function () {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -11800,7 +11871,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         before$3,
</span><span class="cx" style="display: block; padding: 0 10px">         start,
</span><span class="cx" style="display: block; padding: 0 10px">         end,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        after$3
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        after$2
</ins><span class="cx" style="display: block; padding: 0 10px">       ], [
</span><span class="cx" style="display: block; padding: 0 10px">         isInlineTarget,
</span><span class="cx" style="display: block; padding: 0 10px">         rootNode,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -11994,7 +12065,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return editor.settings.inline_boundaries !== false;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var rangeFromPositions = function (from, to) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var range = document.createRange();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var range = domGlobals.document.createRange();
</ins><span class="cx" style="display: block; padding: 0 10px">       range.setStart(from.container(), from.offset());
</span><span class="cx" style="display: block; padding: 0 10px">       range.setEnd(to.container(), to.offset());
</span><span class="cx" style="display: block; padding: 0 10px">       return range;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -12012,8 +12083,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">       }).getOr(true);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var setCaretLocation = function (editor, caret) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return function (location$$1) {
-        return BoundaryCaret.renderCaret(caret, location$$1).map(function (pos) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return function (location) {
+        return BoundaryCaret.renderCaret(caret, location).map(function (pos) {
</ins><span class="cx" style="display: block; padding: 0 10px">           BoundarySelection.setCaretPosition(editor, pos);
</span><span class="cx" style="display: block; padding: 0 10px">           return true;
</span><span class="cx" style="display: block; padding: 0 10px">         }).getOr(false);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -12037,11 +12108,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var rootNode = rescope$1(editor.getBody(), from.container());
</span><span class="cx" style="display: block; padding: 0 10px">       var isInlineTarget = curry(InlineUtils.isInlineTarget, editor);
</span><span class="cx" style="display: block; padding: 0 10px">       var fromLocation = BoundaryLocation.readLocation(isInlineTarget, rootNode, from);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return fromLocation.bind(function (location$$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return fromLocation.bind(function (location) {
</ins><span class="cx" style="display: block; padding: 0 10px">         if (forward) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          return location$$1.fold(constant(Option.some(BoundaryLocation.inside(location$$1))), Option.none, constant(Option.some(BoundaryLocation.outside(location$$1))), Option.none);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          return location.fold(constant(Option.some(BoundaryLocation.inside(location))), Option.none, constant(Option.some(BoundaryLocation.outside(location))), Option.none);
</ins><span class="cx" style="display: block; padding: 0 10px">         } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          return location$$1.fold(Option.none, constant(Option.some(BoundaryLocation.outside(location$$1))), Option.none, constant(Option.some(BoundaryLocation.inside(location$$1))));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          return location.fold(Option.none, constant(Option.some(BoundaryLocation.outside(location))), Option.none, constant(Option.some(BoundaryLocation.inside(location))));
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       }).map(setCaretLocation(editor, caret)).getOrThunk(function () {
</span><span class="cx" style="display: block; padding: 0 10px">         var toPosition = CaretFinder.navigate(forward, rootNode, from);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -12051,7 +12122,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         if (fromLocation.isSome() && toLocation.isSome()) {
</span><span class="cx" style="display: block; padding: 0 10px">           return InlineUtils.findRootInline(isInlineTarget, rootNode, from).map(function (elm) {
</span><span class="cx" style="display: block; padding: 0 10px">             if (hasOnlyTwoOrLessPositionsLeft(elm)) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              DeleteElement.deleteElement(editor, forward, Element$$1.fromDom(elm));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              DeleteElement.deleteElement(editor, forward, Element.fromDom(elm));
</ins><span class="cx" style="display: block; padding: 0 10px">               return true;
</span><span class="cx" style="display: block; padding: 0 10px">             } else {
</span><span class="cx" style="display: block; padding: 0 10px">               return false;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -12090,7 +12161,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return curry(eq, root);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var getClosestCell = function (container, isRoot) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return closest$1(Element$$1.fromDom(container), 'td,th', isRoot);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return closest$1(Element.fromDom(container), 'td,th', isRoot);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var getClosestTable = function (cell, isRoot) {
</span><span class="cx" style="display: block; padding: 0 10px">       return ancestor$1(cell, 'table', isRoot);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -12207,9 +12278,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return ranges;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var getSelectedNodes = function (ranges) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return bind(ranges, function (range$$1) {
-        var node = getSelectedNode(range$$1);
-        return node ? [Element$$1.fromDom(node)] : [];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return bind(ranges, function (range) {
+        var node = getSelectedNode(range);
+        return node ? [Element.fromDom(node)] : [];
</ins><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var hasMultipleRanges = function (selection) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -12234,7 +12305,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return selectedCells.length > 0 ? selectedCells : rangeCells;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var getCellsFromEditor = function (editor) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return getCellsFromElementOrRanges(MultiRange.getRanges(editor.selection.getSel()), Element$$1.fromDom(editor.getBody()));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return getCellsFromElementOrRanges(MultiRange.getRanges(editor.selection.getSel()), Element.fromDom(editor.getBody()));
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var TableCellSelection = {
</span><span class="cx" style="display: block; padding: 0 10px">       getCellsFromRanges: getCellsFromRanges,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -12268,7 +12339,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       }).getOr(false);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var deleteRange$1 = function (editor, startElm) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var rootNode = Element$$1.fromDom(editor.getBody());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var rootNode = Element.fromDom(editor.getBody());
</ins><span class="cx" style="display: block; padding: 0 10px">       var rng = editor.selection.getRng();
</span><span class="cx" style="display: block; padding: 0 10px">       var selectedCells = TableCellSelection.getCellsFromEditor(editor);
</span><span class="cx" style="display: block; padding: 0 10px">       return selectedCells.length !== 0 ? emptyCells(editor, selectedCells) : deleteTableRange(editor, rootNode, rng, startElm);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -12283,7 +12354,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var deleteBetweenCells = function (editor, rootElm, forward, fromCell, from) {
</span><span class="cx" style="display: block; padding: 0 10px">       return CaretFinder.navigate(forward, editor.getBody(), from).bind(function (to) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return getParentCell(rootElm, Element$$1.fromDom(to.getNode())).map(function (toCell) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return getParentCell(rootElm, Element.fromDom(to.getNode())).map(function (toCell) {
</ins><span class="cx" style="display: block; padding: 0 10px">           return eq(toCell, fromCell) === false;
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -12295,8 +12366,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var isDeleteOfLastCharPos = function (fromCaption, forward, from, to) {
</span><span class="cx" style="display: block; padding: 0 10px">       return CaretFinder.firstPositionIn(fromCaption.dom()).bind(function (first) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return CaretFinder.lastPositionIn(fromCaption.dom()).map(function (last$$1) {
-          return forward ? from.isEqual(first) && to.isEqual(last$$1) : from.isEqual(last$$1) && to.isEqual(first);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return CaretFinder.lastPositionIn(fromCaption.dom()).map(function (last) {
+          return forward ? from.isEqual(first) && to.isEqual(last) : from.isEqual(last) && to.isEqual(first);
</ins><span class="cx" style="display: block; padding: 0 10px">         });
</span><span class="cx" style="display: block; padding: 0 10px">       }).getOr(true);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -12304,7 +12375,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return emptyElement(editor, elm);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var validateCaretCaption = function (rootElm, fromCaption, to) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return getParentCaption(rootElm, Element$$1.fromDom(to.getNode())).map(function (toCaption) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return getParentCaption(rootElm, Element.fromDom(to.getNode())).map(function (toCaption) {
</ins><span class="cx" style="display: block; padding: 0 10px">         return eq(toCaption, fromCaption) === false;
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -12324,7 +12395,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return Empty.isEmpty(fromCaption) ? emptyElement(editor, fromCaption) : deleteCaretInsideCaption(editor, rootElm, forward, fromCaption, from);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var deleteCaret = function (editor, forward, startElm) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var rootElm = Element$$1.fromDom(editor.getBody());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var rootElm = Element.fromDom(editor.getBody());
</ins><span class="cx" style="display: block; padding: 0 10px">       return getParentCaption(rootElm, startElm).fold(function () {
</span><span class="cx" style="display: block; padding: 0 10px">         return deleteCaretCells(editor, forward, rootElm, startElm);
</span><span class="cx" style="display: block; padding: 0 10px">       }, function (fromCaption) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -12332,12 +12403,571 @@
</span><span class="cx" style="display: block; padding: 0 10px">       }).getOr(false);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var backspaceDelete$4 = function (editor, forward) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var startElm = Element$$1.fromDom(editor.selection.getStart(true));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var startElm = Element.fromDom(editor.selection.getStart(true));
</ins><span class="cx" style="display: block; padding: 0 10px">       var cells = TableCellSelection.getCellsFromEditor(editor);
</span><span class="cx" style="display: block; padding: 0 10px">       return editor.selection.isCollapsed() && cells.length === 0 ? deleteCaret(editor, forward, startElm) : deleteRange$1(editor, startElm);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var TableDelete = { backspaceDelete: backspaceDelete$4 };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var isEq$2 = FormatUtils.isEq;
+    var matchesUnInheritedFormatSelector = function (ed, node, name) {
+      var formatList = ed.formatter.get(name);
+      if (formatList) {
+        for (var i = 0; i < formatList.length; i++) {
+          if (formatList[i].inherit === false && ed.dom.is(node, formatList[i].selector)) {
+            return true;
+          }
+        }
+      }
+      return false;
+    };
+    var matchParents = function (editor, node, name, vars) {
+      var root = editor.dom.getRoot();
+      if (node === root) {
+        return false;
+      }
+      node = editor.dom.getParent(node, function (node) {
+        if (matchesUnInheritedFormatSelector(editor, node, name)) {
+          return true;
+        }
+        return node.parentNode === root || !!matchNode(editor, node, name, vars, true);
+      });
+      return matchNode(editor, node, name, vars);
+    };
+    var matchName = function (dom, node, format) {
+      if (isEq$2(node, format.inline)) {
+        return true;
+      }
+      if (isEq$2(node, format.block)) {
+        return true;
+      }
+      if (format.selector) {
+        return node.nodeType === 1 && dom.is(node, format.selector);
+      }
+    };
+    var matchItems = function (dom, node, format, itemName, similar, vars) {
+      var key, value;
+      var items = format[itemName];
+      var i;
+      if (format.onmatch) {
+        return format.onmatch(node, format, itemName);
+      }
+      if (items) {
+        if (typeof items.length === 'undefined') {
+          for (key in items) {
+            if (items.hasOwnProperty(key)) {
+              if (itemName === 'attributes') {
+                value = dom.getAttrib(node, key);
+              } else {
+                value = FormatUtils.getStyle(dom, node, key);
+              }
+              if (similar && !value && !format.exact) {
+                return;
+              }
+              if ((!similar || format.exact) && !isEq$2(value, FormatUtils.normalizeStyleValue(dom, FormatUtils.replaceVars(items[key], vars), key))) {
+                return;
+              }
+            }
+          }
+        } else {
+          for (i = 0; i < items.length; i++) {
+            if (itemName === 'attributes' ? dom.getAttrib(node, items[i]) : FormatUtils.getStyle(dom, node, items[i])) {
+              return format;
+            }
+          }
+        }
+      }
+      return format;
+    };
+    var matchNode = function (ed, node, name, vars, similar) {
+      var formatList = ed.formatter.get(name);
+      var format, i, x, classes;
+      var dom = ed.dom;
+      if (formatList && node) {
+        for (i = 0; i < formatList.length; i++) {
+          format = formatList[i];
+          if (matchName(ed.dom, node, format) && matchItems(dom, node, format, 'attributes', similar, vars) && matchItems(dom, node, format, 'styles', similar, vars)) {
+            if (classes = format.classes) {
+              for (x = 0; x < classes.length; x++) {
+                if (!ed.dom.hasClass(node, classes[x])) {
+                  return;
+                }
+              }
+            }
+            return format;
+          }
+        }
+      }
+    };
+    var match = function (editor, name, vars, node) {
+      var startNode;
+      if (node) {
+        return matchParents(editor, node, name, vars);
+      }
+      node = editor.selection.getNode();
+      if (matchParents(editor, node, name, vars)) {
+        return true;
+      }
+      startNode = editor.selection.getStart();
+      if (startNode !== node) {
+        if (matchParents(editor, startNode, name, vars)) {
+          return true;
+        }
+      }
+      return false;
+    };
+    var matchAll = function (editor, names, vars) {
+      var startElement;
+      var matchedFormatNames = [];
+      var checkedMap = {};
+      startElement = editor.selection.getStart();
+      editor.dom.getParent(startElement, function (node) {
+        var i, name;
+        for (i = 0; i < names.length; i++) {
+          name = names[i];
+          if (!checkedMap[name] && matchNode(editor, node, name, vars)) {
+            checkedMap[name] = true;
+            matchedFormatNames.push(name);
+          }
+        }
+      }, editor.dom.getRoot());
+      return matchedFormatNames;
+    };
+    var canApply = function (editor, name) {
+      var formatList = editor.formatter.get(name);
+      var startNode, parents, i, x, selector;
+      var dom = editor.dom;
+      if (formatList) {
+        startNode = editor.selection.getStart();
+        parents = FormatUtils.getParents(dom, startNode);
+        for (x = formatList.length - 1; x >= 0; x--) {
+          selector = formatList[x].selector;
+          if (!selector || formatList[x].defaultBlock) {
+            return true;
+          }
+          for (i = parents.length - 1; i >= 0; i--) {
+            if (dom.is(parents[i], selector)) {
+              return true;
+            }
+          }
+        }
+      }
+      return false;
+    };
+    var MatchFormat = {
+      matchNode: matchNode,
+      matchName: matchName,
+      match: match,
+      matchAll: matchAll,
+      canApply: canApply,
+      matchesUnInheritedFormatSelector: matchesUnInheritedFormatSelector
+    };
+
+    var splitText = function (node, offset) {
+      return node.splitText(offset);
+    };
+    var split$1 = function (rng) {
+      var startContainer = rng.startContainer, startOffset = rng.startOffset, endContainer = rng.endContainer, endOffset = rng.endOffset;
+      if (startContainer === endContainer && NodeType.isText(startContainer)) {
+        if (startOffset > 0 && startOffset < startContainer.nodeValue.length) {
+          endContainer = splitText(startContainer, startOffset);
+          startContainer = endContainer.previousSibling;
+          if (endOffset > startOffset) {
+            endOffset = endOffset - startOffset;
+            startContainer = endContainer = splitText(endContainer, endOffset).previousSibling;
+            endOffset = endContainer.nodeValue.length;
+            startOffset = 0;
+          } else {
+            endOffset = 0;
+          }
+        }
+      } else {
+        if (NodeType.isText(startContainer) && startOffset > 0 && startOffset < startContainer.nodeValue.length) {
+          startContainer = splitText(startContainer, startOffset);
+          startOffset = 0;
+        }
+        if (NodeType.isText(endContainer) && endOffset > 0 && endOffset < endContainer.nodeValue.length) {
+          endContainer = splitText(endContainer, endOffset).previousSibling;
+          endOffset = endContainer.nodeValue.length;
+        }
+      }
+      return {
+        startContainer: startContainer,
+        startOffset: startOffset,
+        endContainer: endContainer,
+        endOffset: endOffset
+      };
+    };
+    var SplitRange = { split: split$1 };
+
+    var ZWSP$1 = Zwsp.ZWSP, CARET_ID$1 = '_mce_caret';
+    var importNode = function (ownerDocument, node) {
+      return ownerDocument.importNode(node, true);
+    };
+    var getEmptyCaretContainers = function (node) {
+      var nodes = [];
+      while (node) {
+        if (node.nodeType === 3 && node.nodeValue !== ZWSP$1 || node.childNodes.length > 1) {
+          return [];
+        }
+        if (node.nodeType === 1) {
+          nodes.push(node);
+        }
+        node = node.firstChild;
+      }
+      return nodes;
+    };
+    var isCaretContainerEmpty = function (node) {
+      return getEmptyCaretContainers(node).length > 0;
+    };
+    var findFirstTextNode = function (node) {
+      var walker;
+      if (node) {
+        walker = new TreeWalker(node, node);
+        for (node = walker.current(); node; node = walker.next()) {
+          if (node.nodeType === 3) {
+            return node;
+          }
+        }
+      }
+      return null;
+    };
+    var createCaretContainer = function (fill) {
+      var caretContainer = Element.fromTag('span');
+      setAll(caretContainer, {
+        'id': CARET_ID$1,
+        'data-mce-bogus': '1',
+        'data-mce-type': 'format-caret'
+      });
+      if (fill) {
+        append(caretContainer, Element.fromText(ZWSP$1));
+      }
+      return caretContainer;
+    };
+    var trimZwspFromCaretContainer = function (caretContainerNode) {
+      var textNode = findFirstTextNode(caretContainerNode);
+      if (textNode && textNode.nodeValue.charAt(0) === ZWSP$1) {
+        textNode.deleteData(0, 1);
+      }
+      return textNode;
+    };
+    var removeCaretContainerNode = function (editor, node, moveCaret) {
+      if (moveCaret === void 0) {
+        moveCaret = true;
+      }
+      var dom = editor.dom, selection = editor.selection;
+      if (isCaretContainerEmpty(node)) {
+        DeleteElement.deleteElement(editor, false, Element.fromDom(node), moveCaret);
+      } else {
+        var rng = selection.getRng();
+        var block = dom.getParent(node, dom.isBlock);
+        var textNode = trimZwspFromCaretContainer(node);
+        if (rng.startContainer === textNode && rng.startOffset > 0) {
+          rng.setStart(textNode, rng.startOffset - 1);
+        }
+        if (rng.endContainer === textNode && rng.endOffset > 0) {
+          rng.setEnd(textNode, rng.endOffset - 1);
+        }
+        dom.remove(node, true);
+        if (block && dom.isEmpty(block)) {
+          PaddingBr.fillWithPaddingBr(Element.fromDom(block));
+        }
+        selection.setRng(rng);
+      }
+    };
+    var removeCaretContainer = function (editor, node, moveCaret) {
+      if (moveCaret === void 0) {
+        moveCaret = true;
+      }
+      var dom = editor.dom, selection = editor.selection;
+      if (!node) {
+        node = getParentCaretContainer(editor.getBody(), selection.getStart());
+        if (!node) {
+          while (node = dom.get(CARET_ID$1)) {
+            removeCaretContainerNode(editor, node, false);
+          }
+        }
+      } else {
+        removeCaretContainerNode(editor, node, moveCaret);
+      }
+    };
+    var insertCaretContainerNode = function (editor, caretContainer, formatNode) {
+      var dom = editor.dom, block = dom.getParent(formatNode, curry(FormatUtils.isTextBlock, editor));
+      if (block && dom.isEmpty(block)) {
+        formatNode.parentNode.replaceChild(caretContainer, formatNode);
+      } else {
+        PaddingBr.removeTrailingBr(Element.fromDom(formatNode));
+        if (dom.isEmpty(formatNode)) {
+          formatNode.parentNode.replaceChild(caretContainer, formatNode);
+        } else {
+          dom.insertAfter(caretContainer, formatNode);
+        }
+      }
+    };
+    var appendNode = function (parentNode, node) {
+      parentNode.appendChild(node);
+      return node;
+    };
+    var insertFormatNodesIntoCaretContainer = function (formatNodes, caretContainer) {
+      var innerMostFormatNode = foldr(formatNodes, function (parentNode, formatNode) {
+        return appendNode(parentNode, formatNode.cloneNode(false));
+      }, caretContainer);
+      return appendNode(innerMostFormatNode, innerMostFormatNode.ownerDocument.createTextNode(ZWSP$1));
+    };
+    var applyCaretFormat = function (editor, name, vars) {
+      var rng, caretContainer, textNode, offset, bookmark, container, text;
+      var selection = editor.selection;
+      rng = selection.getRng(true);
+      offset = rng.startOffset;
+      container = rng.startContainer;
+      text = container.nodeValue;
+      caretContainer = getParentCaretContainer(editor.getBody(), selection.getStart());
+      if (caretContainer) {
+        textNode = findFirstTextNode(caretContainer);
+      }
+      var wordcharRegex = /[^\s\u00a0\u00ad\u200b\ufeff]/;
+      if (text && offset > 0 && offset < text.length && wordcharRegex.test(text.charAt(offset)) && wordcharRegex.test(text.charAt(offset - 1))) {
+        bookmark = selection.getBookmark();
+        rng.collapse(true);
+        rng = ExpandRange.expandRng(editor, rng, editor.formatter.get(name));
+        rng = SplitRange.split(rng);
+        editor.formatter.apply(name, vars, rng);
+        selection.moveToBookmark(bookmark);
+      } else {
+        if (!caretContainer || textNode.nodeValue !== ZWSP$1) {
+          caretContainer = importNode(editor.getDoc(), createCaretContainer(true).dom());
+          textNode = caretContainer.firstChild;
+          rng.insertNode(caretContainer);
+          offset = 1;
+          editor.formatter.apply(name, vars, caretContainer);
+        } else {
+          editor.formatter.apply(name, vars, caretContainer);
+        }
+        selection.setCursorLocation(textNode, offset);
+      }
+    };
+    var removeCaretFormat = function (editor, name, vars, similar) {
+      var dom = editor.dom, selection = editor.selection;
+      var container, offset, bookmark;
+      var hasContentAfter, node, formatNode;
+      var parents = [], rng = selection.getRng();
+      var caretContainer;
+      container = rng.startContainer;
+      offset = rng.startOffset;
+      node = container;
+      if (container.nodeType === 3) {
+        if (offset !== container.nodeValue.length) {
+          hasContentAfter = true;
+        }
+        node = node.parentNode;
+      }
+      while (node) {
+        if (MatchFormat.matchNode(editor, node, name, vars, similar)) {
+          formatNode = node;
+          break;
+        }
+        if (node.nextSibling) {
+          hasContentAfter = true;
+        }
+        parents.push(node);
+        node = node.parentNode;
+      }
+      if (!formatNode) {
+        return;
+      }
+      if (hasContentAfter) {
+        bookmark = selection.getBookmark();
+        rng.collapse(true);
+        var expandedRng = ExpandRange.expandRng(editor, rng, editor.formatter.get(name), true);
+        expandedRng = SplitRange.split(expandedRng);
+        editor.formatter.remove(name, vars, expandedRng);
+        selection.moveToBookmark(bookmark);
+      } else {
+        caretContainer = getParentCaretContainer(editor.getBody(), formatNode);
+        var newCaretContainer = createCaretContainer(false).dom();
+        var caretNode = insertFormatNodesIntoCaretContainer(parents, newCaretContainer);
+        if (caretContainer) {
+          insertCaretContainerNode(editor, newCaretContainer, caretContainer);
+        } else {
+          insertCaretContainerNode(editor, newCaretContainer, formatNode);
+        }
+        removeCaretContainerNode(editor, caretContainer, false);
+        selection.setCursorLocation(caretNode, 1);
+        if (dom.isEmpty(formatNode)) {
+          dom.remove(formatNode);
+        }
+      }
+    };
+    var disableCaretContainer = function (editor, keyCode) {
+      var selection = editor.selection, body = editor.getBody();
+      removeCaretContainer(editor, null, false);
+      if ((keyCode === 8 || keyCode === 46) && selection.isCollapsed() && selection.getStart().innerHTML === ZWSP$1) {
+        removeCaretContainer(editor, getParentCaretContainer(body, selection.getStart()));
+      }
+      if (keyCode === 37 || keyCode === 39) {
+        removeCaretContainer(editor, getParentCaretContainer(body, selection.getStart()));
+      }
+    };
+    var setup$2 = function (editor) {
+      editor.on('mouseup keydown', function (e) {
+        disableCaretContainer(editor, e.keyCode);
+      });
+    };
+    var replaceWithCaretFormat = function (targetNode, formatNodes) {
+      var caretContainer = createCaretContainer(false);
+      var innerMost = insertFormatNodesIntoCaretContainer(formatNodes, caretContainer.dom());
+      before(Element.fromDom(targetNode), caretContainer);
+      remove$1(Element.fromDom(targetNode));
+      return CaretPosition$1(innerMost, 0);
+    };
+    var isFormatElement = function (editor, element) {
+      var inlineElements = editor.schema.getTextInlineElements();
+      return inlineElements.hasOwnProperty(name(element)) && !isCaretNode(element.dom()) && !NodeType.isBogus(element.dom());
+    };
+    var isEmptyCaretFormatElement = function (element) {
+      return isCaretNode(element.dom()) && isCaretContainerEmpty(element.dom());
+    };
+
+    var getParentInlines = function (rootElm, startElm) {
+      var parents = Parents.parentsAndSelf(startElm, rootElm);
+      return findIndex(parents, isBlock).fold(constant(parents), function (index) {
+        return parents.slice(0, index);
+      });
+    };
+    var hasOnlyOneChild$1 = function (elm) {
+      return children(elm).length === 1;
+    };
+    var deleteLastPosition = function (forward, editor, target, parentInlines) {
+      var isFormatElement$1 = curry(isFormatElement, editor);
+      var formatNodes = map(filter(parentInlines, isFormatElement$1), function (elm) {
+        return elm.dom();
+      });
+      if (formatNodes.length === 0) {
+        DeleteElement.deleteElement(editor, forward, target);
+      } else {
+        var pos = replaceWithCaretFormat(target.dom(), formatNodes);
+        editor.selection.setRng(pos.toRange());
+      }
+    };
+    var deleteCaret$1 = function (editor, forward) {
+      var rootElm = Element.fromDom(editor.getBody());
+      var startElm = Element.fromDom(editor.selection.getStart());
+      var parentInlines = filter(getParentInlines(rootElm, startElm), hasOnlyOneChild$1);
+      return last(parentInlines).map(function (target) {
+        var fromPos = CaretPosition$1.fromRangeStart(editor.selection.getRng());
+        if (DeleteUtils.willDeleteLastPositionInElement(forward, fromPos, target.dom()) && !isEmptyCaretFormatElement(target)) {
+          deleteLastPosition(forward, editor, target, parentInlines);
+          return true;
+        } else {
+          return false;
+        }
+      }).getOr(false);
+    };
+    var backspaceDelete$5 = function (editor, forward) {
+      return editor.selection.isCollapsed() ? deleteCaret$1(editor, forward) : false;
+    };
+    var InlineFormatDelete = { backspaceDelete: backspaceDelete$5 };
+
+    var isContentEditableTrue$2 = NodeType.isContentEditableTrue;
+    var isContentEditableFalse$6 = NodeType.isContentEditableFalse;
+    var showCaret = function (direction, editor, node, before, scrollIntoView) {
+      return editor._selectionOverrides.showCaret(direction, node, before, scrollIntoView);
+    };
+    var getNodeRange = function (node) {
+      var rng = node.ownerDocument.createRange();
+      rng.selectNode(node);
+      return rng;
+    };
+    var selectNode = function (editor, node) {
+      var e = editor.fire('BeforeObjectSelected', { target: node });
+      if (e.isDefaultPrevented()) {
+        return null;
+      }
+      return getNodeRange(node);
+    };
+    var renderCaretAtRange = function (editor, range, scrollIntoView) {
+      var normalizedRange = normalizeRange(1, editor.getBody(), range);
+      var caretPosition = CaretPosition$1.fromRangeStart(normalizedRange);
+      var caretPositionNode = caretPosition.getNode();
+      if (isContentEditableFalse$6(caretPositionNode)) {
+        return showCaret(1, editor, caretPositionNode, !caretPosition.isAtEnd(), false);
+      }
+      var caretPositionBeforeNode = caretPosition.getNode(true);
+      if (isContentEditableFalse$6(caretPositionBeforeNode)) {
+        return showCaret(1, editor, caretPositionBeforeNode, false, false);
+      }
+      var ceRoot = editor.dom.getParent(caretPosition.getNode(), function (node) {
+        return isContentEditableFalse$6(node) || isContentEditableTrue$2(node);
+      });
+      if (isContentEditableFalse$6(ceRoot)) {
+        return showCaret(1, editor, ceRoot, false, scrollIntoView);
+      }
+      return null;
+    };
+    var renderRangeCaret = function (editor, range, scrollIntoView) {
+      if (!range || !range.collapsed) {
+        return range;
+      }
+      var caretRange = renderCaretAtRange(editor, range, scrollIntoView);
+      if (caretRange) {
+        return caretRange;
+      }
+      return range;
+    };
+
+    var trimEmptyTextNode$1 = function (dom, node) {
+      if (NodeType.isText(node) && node.data.length === 0) {
+        dom.remove(node);
+      }
+    };
+    var deleteContentAndShowCaret = function (editor, range, node, direction, forward, peekCaretPosition) {
+      var caretRange = showCaret(direction, editor, peekCaretPosition.getNode(!forward), forward, true);
+      if (range.collapsed) {
+        var deleteRange = range.cloneRange();
+        if (forward) {
+          deleteRange.setEnd(caretRange.startContainer, caretRange.startOffset);
+        } else {
+          deleteRange.setStart(caretRange.endContainer, caretRange.endOffset);
+        }
+        deleteRange.deleteContents();
+      } else {
+        range.deleteContents();
+      }
+      editor.selection.setRng(caretRange);
+      trimEmptyTextNode$1(editor.dom, node);
+      return true;
+    };
+    var deleteCefBoundaryText = function (editor, forward) {
+      var range = editor.selection.getRng();
+      if (!NodeType.isText(range.commonAncestorContainer)) {
+        return false;
+      }
+      var direction = forward ? HDirection.Forwards : HDirection.Backwards;
+      var caretWalker = CaretWalker(editor.getBody());
+      var getNextVisualCaretPosition = curry(getVisualCaretPosition, caretWalker.next);
+      var getPrevVisualCaretPosition = curry(getVisualCaretPosition, caretWalker.prev);
+      var getNextPosFn = forward ? getNextVisualCaretPosition : getPrevVisualCaretPosition;
+      var isBeforeContentEditableFalseFn = forward ? isBeforeContentEditableFalse : isAfterContentEditableFalse;
+      var caretPosition = getNormalizedRangeEndPoint(direction, editor.getBody(), range);
+      var nextCaretPosition = InlineUtils.normalizePosition(forward, getNextPosFn(caretPosition));
+      if (!nextCaretPosition) {
+        return false;
+      } else if (isBeforeContentEditableFalseFn(nextCaretPosition)) {
+        return deleteContentAndShowCaret(editor, range, caretPosition.getNode(), direction, forward, nextCaretPosition);
+      }
+      var peekCaretPosition = getNextPosFn(nextCaretPosition);
+      if (peekCaretPosition && isBeforeContentEditableFalseFn(peekCaretPosition)) {
+        if (isMoveInsideSameBlock(nextCaretPosition, peekCaretPosition)) {
+          return deleteContentAndShowCaret(editor, range, caretPosition.getNode(), direction, forward, peekCaretPosition);
+        }
+      }
+      return false;
+    };
+    var backspaceDelete$6 = function (editor, forward) {
+      return deleteCefBoundaryText(editor, forward);
+    };
+    var CefBoundaryDelete = { backspaceDelete: backspaceDelete$6 };
+
</ins><span class="cx" style="display: block; padding: 0 10px">     var nativeCommand = function (editor, command) {
</span><span class="cx" style="display: block; padding: 0 10px">       editor.getDoc().execCommand(command, false, null);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -12344,6 +12974,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var deleteCommand = function (editor) {
</span><span class="cx" style="display: block; padding: 0 10px">       if (CefDelete.backspaceDelete(editor, false)) {
</span><span class="cx" style="display: block; padding: 0 10px">         return;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      } else if (CefBoundaryDelete.backspaceDelete(editor, false)) {
+        return;
</ins><span class="cx" style="display: block; padding: 0 10px">       } else if (InlineBoundaryDelete.backspaceDelete(editor, false)) {
</span><span class="cx" style="display: block; padding: 0 10px">         return;
</span><span class="cx" style="display: block; padding: 0 10px">       } else if (BlockBoundaryDelete.backspaceDelete(editor, false)) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -12352,6 +12984,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return;
</span><span class="cx" style="display: block; padding: 0 10px">       } else if (BlockRangeDelete.backspaceDelete(editor, false)) {
</span><span class="cx" style="display: block; padding: 0 10px">         return;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      } else if (InlineFormatDelete.backspaceDelete(editor, false)) {
+        return;
</ins><span class="cx" style="display: block; padding: 0 10px">       } else {
</span><span class="cx" style="display: block; padding: 0 10px">         nativeCommand(editor, 'Delete');
</span><span class="cx" style="display: block; padding: 0 10px">         DeleteUtils.paddEmptyBody(editor);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -12360,6 +12994,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var forwardDeleteCommand = function (editor) {
</span><span class="cx" style="display: block; padding: 0 10px">       if (CefDelete.backspaceDelete(editor, true)) {
</span><span class="cx" style="display: block; padding: 0 10px">         return;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      } else if (CefBoundaryDelete.backspaceDelete(editor, true)) {
+        return;
</ins><span class="cx" style="display: block; padding: 0 10px">       } else if (InlineBoundaryDelete.backspaceDelete(editor, true)) {
</span><span class="cx" style="display: block; padding: 0 10px">         return;
</span><span class="cx" style="display: block; padding: 0 10px">       } else if (BlockBoundaryDelete.backspaceDelete(editor, true)) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -12368,6 +13004,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return;
</span><span class="cx" style="display: block; padding: 0 10px">       } else if (BlockRangeDelete.backspaceDelete(editor, true)) {
</span><span class="cx" style="display: block; padding: 0 10px">         return;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      } else if (InlineFormatDelete.backspaceDelete(editor, true)) {
+        return;
</ins><span class="cx" style="display: block; padding: 0 10px">       } else {
</span><span class="cx" style="display: block; padding: 0 10px">         nativeCommand(editor, 'ForwardDelete');
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -12494,9 +13132,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return getRaw(elm, propName);
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var isRoot = function (elm) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return eq(Element$$1.fromDom(rootElm), elm);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return eq(Element.fromDom(rootElm), elm);
</ins><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return closest(Element$$1.fromDom(elm), function (elm) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return closest(Element.fromDom(elm), function (elm) {
</ins><span class="cx" style="display: block; padding: 0 10px">         return getProperty(elm).isSome();
</span><span class="cx" style="display: block; padding: 0 10px">       }, isRoot).bind(getProperty);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -12518,7 +13156,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var getFontProp = function (propName) {
</span><span class="cx" style="display: block; padding: 0 10px">       return function (rootElm, elm) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return Option.from(elm).map(Element$$1.fromDom).filter(isElement).bind(function (element) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return Option.from(elm).map(Element.fromDom).filter(isElement).bind(function (element) {
</ins><span class="cx" style="display: block; padding: 0 10px">           return getSpecifiedFontProp(propName, rootElm, element.dom()).or(getComputedFontProp(propName, element.dom()));
</span><span class="cx" style="display: block; padding: 0 10px">         }).getOr('');
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -12589,10 +13227,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var isEq$2 = function (rng1, rng2) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var isEq$3 = function (rng1, rng2) {
</ins><span class="cx" style="display: block; padding: 0 10px">       return rng1 && rng2 && (rng1.startContainer === rng2.startContainer && rng1.startOffset === rng2.startOffset) && (rng1.endContainer === rng2.endContainer && rng1.endOffset === rng2.endOffset);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var RangeCompare = { isEq: isEq$2 };
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var RangeCompare = { isEq: isEq$3 };
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var findParent = function (node, rootNode, predicate) {
</span><span class="cx" style="display: block; padding: 0 10px">       while (node && node !== rootNode) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -12818,9 +13456,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">       selection.setRng(rng);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var insertBrAtCaret = function (editor, evt) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var selection = editor.selection, dom = editor.dom;
-      var brElm, extraBr;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var selection = editor.selection;
+      var dom = editor.dom;
</ins><span class="cx" style="display: block; padding: 0 10px">       var rng = selection.getRng();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var brElm;
+      var extraBr;
</ins><span class="cx" style="display: block; padding: 0 10px">       NormalizeRange.normalize(dom, rng).each(function (normRng) {
</span><span class="cx" style="display: block; padding: 0 10px">         rng.setStart(normRng.startContainer, normRng.startOffset);
</span><span class="cx" style="display: block; padding: 0 10px">         rng.setEnd(normRng.endContainer, normRng.endOffset);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -12853,22 +13493,22 @@
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       brElm = dom.create('br');
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      rng.insertNode(brElm);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      rangeInsertNode(dom, rng, brElm);
</ins><span class="cx" style="display: block; padding: 0 10px">       scrollToBr(dom, selection, brElm);
</span><span class="cx" style="display: block; padding: 0 10px">       moveSelectionToBr(dom, selection, brElm, extraBr);
</span><span class="cx" style="display: block; padding: 0 10px">       editor.undoManager.add();
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var insertBrBefore = function (editor, inline) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var br = Element$$1.fromTag('br');
-      before(Element$$1.fromDom(inline), br);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var br = Element.fromTag('br');
+      before(Element.fromDom(inline), br);
</ins><span class="cx" style="display: block; padding: 0 10px">       editor.undoManager.add();
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var insertBrAfter = function (editor, inline) {
</span><span class="cx" style="display: block; padding: 0 10px">       if (!hasBrAfter(editor.getBody(), inline)) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        after(Element$$1.fromDom(inline), Element$$1.fromTag('br'));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        after(Element.fromDom(inline), Element.fromTag('br'));
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var br = Element$$1.fromTag('br');
-      after(Element$$1.fromDom(inline), br);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var br = Element.fromTag('br');
+      after(Element.fromDom(inline), br);
</ins><span class="cx" style="display: block; padding: 0 10px">       scrollToBr(editor.dom, editor.selection, br.dom());
</span><span class="cx" style="display: block; padding: 0 10px">       moveSelectionToBr(editor.dom, editor.selection, br.dom(), false);
</span><span class="cx" style="display: block; padding: 0 10px">       editor.undoManager.add();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -12910,9 +13550,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var InsertBr = { insert: insert };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var adt = Adt.generate([
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      { 'before': ['element'] },
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      { before: ['element'] },
</ins><span class="cx" style="display: block; padding: 0 10px">       {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        'on': [
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        on: [
</ins><span class="cx" style="display: block; padding: 0 10px">           'element',
</span><span class="cx" style="display: block; padding: 0 10px">           'offset'
</span><span class="cx" style="display: block; padding: 0 10px">         ]
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -12937,14 +13577,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">         ]
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     ]);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var range$1 = Immutable('start', 'soffset', 'finish', 'foffset');
-    var domRange = type$1.domRange;
-    var relative = type$1.relative;
-    var exact = type$1.exact;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var range = Immutable('start', 'soffset', 'finish', 'foffset');
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var browser$3 = PlatformDetection$1.detect().browser;
</span><span class="cx" style="display: block; padding: 0 10px">     var clamp = function (offset, element) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var max = isText(element) ? get$6(element).length : children(element).length + 1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var max = isText(element) ? get$4(element).length : children(element).length + 1;
</ins><span class="cx" style="display: block; padding: 0 10px">       if (offset > max) {
</span><span class="cx" style="display: block; padding: 0 10px">         return max;
</span><span class="cx" style="display: block; padding: 0 10px">       } else if (offset < 0) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -12953,7 +13590,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return offset;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var normalizeRng = function (rng) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return range$1(rng.start(), clamp(rng.soffset(), rng.start()), rng.finish(), clamp(rng.foffset(), rng.finish()));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return range(rng.start(), clamp(rng.soffset(), rng.start()), rng.finish(), clamp(rng.foffset(), rng.finish()));
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var isOrContains = function (root, elm) {
</span><span class="cx" style="display: block; padding: 0 10px">       return contains$3(root, elm) || eq(root, elm);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -12967,7 +13604,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return editor.inline === true || browser$3.isIE();
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var nativeRangeToSelectionRange = function (r) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return range$1(Element$$1.fromDom(r.startContainer), r.startOffset, Element$$1.fromDom(r.endContainer), r.endOffset);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return range(Element.fromDom(r.startContainer), r.startOffset, Element.fromDom(r.endContainer), r.endOffset);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var readRange = function (win) {
</span><span class="cx" style="display: block; padding: 0 10px">       var selection = win.getSelection();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -12982,7 +13619,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return Option.from(bookmark).filter(isRngInRoot(root)).map(normalizeRng);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var bookmarkToNativeRng = function (bookmark) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var rng = document.createRange();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var rng = domGlobals.document.createRange();
</ins><span class="cx" style="display: block; padding: 0 10px">       try {
</span><span class="cx" style="display: block; padding: 0 10px">         rng.setStart(bookmark.start().dom(), bookmark.soffset());
</span><span class="cx" style="display: block; padding: 0 10px">         rng.setEnd(bookmark.finish().dom(), bookmark.foffset());
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -12992,11 +13629,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var store = function (editor) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var newBookmark = shouldStore(editor) ? getBookmark$2(Element$$1.fromDom(editor.getBody())) : Option.none();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var newBookmark = shouldStore(editor) ? getBookmark$2(Element.fromDom(editor.getBody())) : Option.none();
</ins><span class="cx" style="display: block; padding: 0 10px">       editor.bookmark = newBookmark.isSome() ? newBookmark : editor.bookmark;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var storeNative = function (editor, rng) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var root = Element$$1.fromDom(editor.getBody());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var root = Element.fromDom(editor.getBody());
</ins><span class="cx" style="display: block; padding: 0 10px">       var range = shouldStore(editor) ? Option.from(rng) : Option.none();
</span><span class="cx" style="display: block; padding: 0 10px">       var newBookmark = range.map(nativeRangeToSelectionRange).filter(isRngInRoot(root));
</span><span class="cx" style="display: block; padding: 0 10px">       editor.bookmark = newBookmark.isSome() ? newBookmark : editor.bookmark;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -13003,7 +13640,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var getRng = function (editor) {
</span><span class="cx" style="display: block; padding: 0 10px">       var bookmark = editor.bookmark ? editor.bookmark : Option.none();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return bookmark.bind(curry(validate, Element$$1.fromDom(editor.getBody()))).bind(bookmarkToNativeRng);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return bookmark.bind(curry(validate, Element.fromDom(editor.getBody()))).bind(bookmarkToNativeRng);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var restore = function (editor) {
</span><span class="cx" style="display: block; padding: 0 10px">       getRng(editor).each(function (rng) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -13042,7 +13679,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return parent(el).map(isListComponent).getOr(false);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var getBlocksToIndent = function (editor) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return filter(map(editor.selection.getSelectedBlocks(), Element$$1.fromDom), function (el) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return filter(map(editor.selection.getSelectedBlocks(), Element.fromDom), function (el) {
</ins><span class="cx" style="display: block; padding: 0 10px">         return !isListComponent(el) && !parentIsListComponent(el);
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -13634,7 +14271,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var Observable = {
</span><span class="cx" style="display: block; padding: 0 10px">       fire: function (name, args, bubble) {
</span><span class="cx" style="display: block; padding: 0 10px">         var self = this;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (self.removed && name !== 'remove') {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (self.removed && name !== 'remove' && name !== 'detach') {
</ins><span class="cx" style="display: block; padding: 0 10px">           return args;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         args = getEventDispatcher(self).fire(name, args, bubble);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -13670,6 +14307,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var fireRemove = function (editor) {
</span><span class="cx" style="display: block; padding: 0 10px">       return editor.fire('remove');
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var fireDetach = function (editor) {
+      return editor.fire('detach');
+    };
</ins><span class="cx" style="display: block; padding: 0 10px">     var fireSwitchMode = function (editor, mode) {
</span><span class="cx" style="display: block; padding: 0 10px">       return editor.fire('SwitchMode', { mode: mode });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -13691,6 +14331,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       firePreProcess: firePreProcess,
</span><span class="cx" style="display: block; padding: 0 10px">       firePostProcess: firePostProcess,
</span><span class="cx" style="display: block; padding: 0 10px">       fireRemove: fireRemove,
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      fireDetach: fireDetach,
</ins><span class="cx" style="display: block; padding: 0 10px">       fireSwitchMode: fireSwitchMode,
</span><span class="cx" style="display: block; padding: 0 10px">       fireObjectResizeStart: fireObjectResizeStart,
</span><span class="cx" style="display: block; padding: 0 10px">       fireObjectResized: fireObjectResized
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -13704,13 +14345,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var toggleClass = function (elm, cls, state) {
</span><span class="cx" style="display: block; padding: 0 10px">       if (has$2(elm, cls) && state === false) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        remove$5(elm, cls);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        remove$4(elm, cls);
</ins><span class="cx" style="display: block; padding: 0 10px">       } else if (state) {
</span><span class="cx" style="display: block; padding: 0 10px">         add$2(elm, cls);
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var toggleReadOnly = function (editor, state) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      toggleClass(Element$$1.fromDom(editor.getBody()), 'mce-content-readonly', state);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      toggleClass(Element.fromDom(editor.getBody()), 'mce-content-readonly', state);
</ins><span class="cx" style="display: block; padding: 0 10px">       if (state) {
</span><span class="cx" style="display: block; padding: 0 10px">         editor.selection.controlSelection.hideResizeRect();
</span><span class="cx" style="display: block; padding: 0 10px">         editor.readonly = true;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -13874,9 +14515,18 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var each$b = Tools.each, explode$2 = Tools.explode;
</span><span class="cx" style="display: block; padding: 0 10px">     var keyCodeLookup = {
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      f1: 112,
+      f2: 113,
+      f3: 114,
+      f4: 115,
+      f5: 116,
+      f6: 117,
+      f7: 118,
+      f8: 119,
</ins><span class="cx" style="display: block; padding: 0 10px">       f9: 120,
</span><span class="cx" style="display: block; padding: 0 10px">       f10: 121,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      f11: 122
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      f11: 122,
+      f12: 123
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var modifierNames = Tools.makeMap('alt,ctrl,shift,meta,access');
</span><span class="cx" style="display: block; padding: 0 10px">     function Shortcuts (editor) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -14015,9 +14665,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var doc = owner(element).dom();
</span><span class="cx" style="display: block; padding: 0 10px">       return element.dom() === doc.activeElement;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var active = function (_doc) {
-      var doc = _doc !== undefined ? _doc.dom() : document;
-      return Option.from(doc.activeElement).map(Element$$1.fromDom);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var active = function (_DOC) {
+      var doc = _DOC !== undefined ? _DOC.dom() : domGlobals.document;
+      return Option.from(doc.activeElement).map(Element.fromDom);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var search = function (element) {
</span><span class="cx" style="display: block; padding: 0 10px">       return active(owner(element)).filter(function (e) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -14031,7 +14681,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var getCollapsedNode = function (rng) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return rng.collapsed ? Option.from(getNode(rng.startContainer, rng.startOffset)).map(Element$$1.fromDom) : Option.none();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return rng.collapsed ? Option.from(getNode(rng.startContainer, rng.startOffset)).map(Element.fromDom) : Option.none();
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var getFocusInElement = function (root, rng) {
</span><span class="cx" style="display: block; padding: 0 10px">       return getCollapsedNode(rng).bind(function (node) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -14045,7 +14695,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var normalizeSelection = function (editor, rng) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      getFocusInElement(Element$$1.fromDom(editor.getBody()), rng).bind(function (elm) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      getFocusInElement(Element.fromDom(editor.getBody()), rng).bind(function (elm) {
</ins><span class="cx" style="display: block; padding: 0 10px">         return CaretFinder.firstPositionIn(elm.dom());
</span><span class="cx" style="display: block; padding: 0 10px">       }).fold(function () {
</span><span class="cx" style="display: block; padding: 0 10px">         editor.selection.normalize();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -14069,11 +14719,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return hasFocus(elm) || search(elm).isSome();
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var hasIframeFocus = function (editor) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return editor.iframeElement && hasFocus(Element$$1.fromDom(editor.iframeElement));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return editor.iframeElement && hasFocus(Element.fromDom(editor.iframeElement));
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var hasInlineFocus = function (editor) {
</span><span class="cx" style="display: block; padding: 0 10px">       var rawBody = editor.getBody();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return rawBody && hasElementFocus(Element$$1.fromDom(rawBody));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return rawBody && hasElementFocus(Element.fromDom(rawBody));
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var hasFocus$1 = function (editor) {
</span><span class="cx" style="display: block; padding: 0 10px">       return editor.inline ? hasInlineFocus(editor) : hasIframeFocus(editor);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -14111,7 +14761,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var activateEditor = function (editor) {
</span><span class="cx" style="display: block; padding: 0 10px">       return editor.editorManager.setActive(editor);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var focus$1 = function (editor, skipFocus) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var focus = function (editor, skipFocus) {
</ins><span class="cx" style="display: block; padding: 0 10px">       if (editor.removed) {
</span><span class="cx" style="display: block; padding: 0 10px">         return;
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -14118,7 +14768,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       skipFocus ? activateEditor(editor) : focusEditor(editor);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var EditorFocus = {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      focus: focus$1,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      focus: focus,
</ins><span class="cx" style="display: block; padding: 0 10px">       hasFocus: hasFocus$1
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -14127,7 +14777,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return rawElm[propName];
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var getComputedSizeProp = function (propName, elm) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return parseInt(get$2(elm, propName), 10);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return parseInt(get$1(elm, propName), 10);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var getClientWidth = curry(getProp, 'clientWidth');
</span><span class="cx" style="display: block; padding: 0 10px">     var getClientHeight = curry(getProp, 'clientHeight');
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -14153,13 +14803,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var isXYInContentArea = function (editor, clientX, clientY) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var bodyElm = Element$$1.fromDom(editor.getBody());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var bodyElm = Element.fromDom(editor.getBody());
</ins><span class="cx" style="display: block; padding: 0 10px">       var targetElm = editor.inline ? bodyElm : documentElement(bodyElm);
</span><span class="cx" style="display: block; padding: 0 10px">       var transposedPoint = transpose(editor.inline, targetElm, clientX, clientY);
</span><span class="cx" style="display: block; padding: 0 10px">       return isInsideElementContentArea(targetElm, transposedPoint.x, transposedPoint.y);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var fromDomSafe = function (node) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return Option.from(node).map(Element$$1.fromDom);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return Option.from(node).map(Element.fromDom);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var isEditorAttachedToDom = function (editor) {
</span><span class="cx" style="display: block; padding: 0 10px">       var rawContainer = editor.inline ? editor.getBody() : editor.getContentAreaContainer();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -14365,12 +15015,67 @@
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">     }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var data = {};
+    var code = 'en';
+    var I18n = {
+      setCode: function (newCode) {
+        if (newCode) {
+          code = newCode;
+          this.rtl = this.data[newCode] ? this.data[newCode]._dir === 'rtl' : false;
+        }
+      },
+      getCode: function () {
+        return code;
+      },
+      rtl: false,
+      add: function (code, items) {
+        var langData = data[code];
+        if (!langData) {
+          data[code] = langData = {};
+        }
+        for (var name in items) {
+          langData[name] = items[name];
+        }
+        this.setCode(code);
+      },
+      translate: function (text) {
+        var langData = data[code] || {};
+        var toString = function (obj) {
+          if (Tools.is(obj, 'function')) {
+            return Object.prototype.toString.call(obj);
+          }
+          return !isEmpty(obj) ? '' + obj : '';
+        };
+        var isEmpty = function (text) {
+          return text === '' || text === null || Tools.is(text, 'undefined');
+        };
+        var getLangData = function (text) {
+          text = toString(text);
+          return Tools.hasOwn(langData, text) ? toString(langData[text]) : text;
+        };
+        if (isEmpty(text)) {
+          return '';
+        }
+        if (Tools.is(text, 'object') && Tools.hasOwn(text, 'raw')) {
+          return toString(text.raw);
+        }
+        if (Tools.is(text, 'array')) {
+          var values_1 = text.slice(1);
+          text = getLangData(text[0]).replace(/\{([0-9]+)\}/g, function ($1, $2) {
+            return Tools.hasOwn(values_1, $2) ? toString(values_1[$2]) : $1;
+          });
+        }
+        return getLangData(text).replace(/{context:\w+}$/, '');
+      },
+      data: data
+    };
+
</ins><span class="cx" style="display: block; padding: 0 10px">     var PluginManager = AddOnManager.PluginManager;
</span><span class="cx" style="display: block; padding: 0 10px">     var resolvePluginName = function (targetUrl, suffix) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      for (var name$$1 in PluginManager.urls) {
-        var matchUrl = PluginManager.urls[name$$1] + '/plugin' + suffix + '.js';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      for (var name in PluginManager.urls) {
+        var matchUrl = PluginManager.urls[name] + '/plugin' + suffix + '.js';
</ins><span class="cx" style="display: block; padding: 0 10px">         if (matchUrl === targetUrl) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          return name$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          return name;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       return null;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -14377,7 +15082,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var pluginUrlToMessage = function (editor, url) {
</span><span class="cx" style="display: block; padding: 0 10px">       var plugin = resolvePluginName(url, editor.suffix);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return plugin ? 'Failed to load plugin: ' + plugin + ' from url ' + url : 'Failed to load plugin url: ' + url;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return plugin ? I18n.translate([
+        'Failed to load plugin: {0} from url {1}',
+        plugin,
+        url
+      ]) : I18n.translate([
+        'Failed to load plugin url: {0}',
+        url
+      ]);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var displayNotification = function (editor, message) {
</span><span class="cx" style="display: block; padding: 0 10px">       editor.notificationManager.open({
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -14395,27 +15107,39 @@
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var uploadError = function (editor, message) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      displayError(editor, 'Failed to upload image: ' + message);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      displayError(editor, I18n.translate([
+        'Failed to upload image: {0}',
+        message
+      ]));
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var pluginLoadError = function (editor, url) {
</span><span class="cx" style="display: block; padding: 0 10px">       displayError(editor, pluginUrlToMessage(editor, url));
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var pluginInitError = function (editor, name, err) {
+      var message = I18n.translate([
+        'Failed to initialize plugin: {0}',
+        name
+      ]);
+      initError(message, err);
+      displayError(editor, message);
+    };
</ins><span class="cx" style="display: block; padding: 0 10px">     var initError = function (message) {
</span><span class="cx" style="display: block; padding: 0 10px">       var x = [];
</span><span class="cx" style="display: block; padding: 0 10px">       for (var _i = 1; _i < arguments.length; _i++) {
</span><span class="cx" style="display: block; padding: 0 10px">         x[_i - 1] = arguments[_i];
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var console$$1 = window.console;
-      if (console$$1) {
-        if (console$$1.error) {
-          console$$1.error.apply(console$$1, arguments);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var console = domGlobals.window.console;
+      if (console) {
+        if (console.error) {
+          console.error.apply(console, arguments);
</ins><span class="cx" style="display: block; padding: 0 10px">         } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          console$$1.log.apply(console$$1, arguments);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          console.log.apply(console, arguments);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var ErrorReporter = {
</span><span class="cx" style="display: block; padding: 0 10px">       pluginLoadError: pluginLoadError,
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      pluginInitError: pluginInitError,
</ins><span class="cx" style="display: block; padding: 0 10px">       uploadError: uploadError,
</span><span class="cx" style="display: block; padding: 0 10px">       displayError: displayError,
</span><span class="cx" style="display: block; padding: 0 10px">       initError: initError
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -14462,7 +15186,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           success(pathJoin(settings.basePath, json.location));
</span><span class="cx" style="display: block; padding: 0 10px">         };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        formData = new FormData();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        formData = new domGlobals.FormData();
</ins><span class="cx" style="display: block; padding: 0 10px">         formData.append('file', blobInfo.blob(), blobInfo.filename());
</span><span class="cx" style="display: block; padding: 0 10px">         xhr.send(formData);
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -14624,7 +15348,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         try {
</span><span class="cx" style="display: block; padding: 0 10px">           str = Window.atob(uriParts.data);
</span><span class="cx" style="display: block; padding: 0 10px">         } catch (e) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          resolve(new Blob([]));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          resolve(new domGlobals.Blob([]));
</ins><span class="cx" style="display: block; padding: 0 10px">           return;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         arr = Uint8Array(str.length);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -14631,7 +15355,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         for (i = 0; i < arr.length; i++) {
</span><span class="cx" style="display: block; padding: 0 10px">           arr[i] = str.charCodeAt(i);
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        resolve(new Blob([arr], { type: uriParts.type }));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        resolve(new domGlobals.Blob([arr], { type: uriParts.type }));
</ins><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var uriToBlob = function (url) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -15018,8 +15742,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var isValidDataUriImage = function (imgElm) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (forall(urlFilters, function (filter$$1) {
-            return filter$$1(imgElm);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (forall(urlFilters, function (filter) {
+            return filter(imgElm);
</ins><span class="cx" style="display: block; padding: 0 10px">           }) === false) {
</span><span class="cx" style="display: block; padding: 0 10px">           return false;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -15029,8 +15753,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         return true;
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var addFilter = function (filter$$1) {
-        urlFilters.push(filter$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var addFilter = function (filter) {
+        urlFilters.push(filter);
</ins><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var scanForImages = function () {
</span><span class="cx" style="display: block; padding: 0 10px">         if (!imageScanner) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -15129,7 +15853,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var hasBlockParent = function (blockElements, root, node) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return exists(Parents.parents(Element$$1.fromDom(node), Element$$1.fromDom(root)), function (elm) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return exists(Parents.parents(Element.fromDom(node), Element.fromDom(root)), function (elm) {
</ins><span class="cx" style="display: block; padding: 0 10px">         return isBlockElement(blockElements, elm.dom());
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -15195,42 +15919,42 @@
</span><span class="cx" style="display: block; padding: 0 10px">         editor.nodeChanged();
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var setup$2 = function (editor) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var setup$3 = function (editor) {
</ins><span class="cx" style="display: block; padding: 0 10px">       if (editor.settings.forced_root_block) {
</span><span class="cx" style="display: block; padding: 0 10px">         editor.on('NodeChange', curry(addRootBlocks, editor));
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var ForceBlocks = { setup: setup$2 };
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var ForceBlocks = { setup: setup$3 };
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var getStartNode = function (rng) {
</span><span class="cx" style="display: block; padding: 0 10px">       var sc = rng.startContainer, so = rng.startOffset;
</span><span class="cx" style="display: block; padding: 0 10px">       if (NodeType.isText(sc)) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return so === 0 ? Option.some(Element$$1.fromDom(sc)) : Option.none();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return so === 0 ? Option.some(Element.fromDom(sc)) : Option.none();
</ins><span class="cx" style="display: block; padding: 0 10px">       } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return Option.from(sc.childNodes[so]).map(Element$$1.fromDom);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return Option.from(sc.childNodes[so]).map(Element.fromDom);
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var getEndNode = function (rng) {
</span><span class="cx" style="display: block; padding: 0 10px">       var ec = rng.endContainer, eo = rng.endOffset;
</span><span class="cx" style="display: block; padding: 0 10px">       if (NodeType.isText(ec)) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return eo === ec.data.length ? Option.some(Element$$1.fromDom(ec)) : Option.none();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return eo === ec.data.length ? Option.some(Element.fromDom(ec)) : Option.none();
</ins><span class="cx" style="display: block; padding: 0 10px">       } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return Option.from(ec.childNodes[eo - 1]).map(Element$$1.fromDom);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return Option.from(ec.childNodes[eo - 1]).map(Element.fromDom);
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var getFirstChildren = function (node) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return firstChild(node).fold(constant([node]), function (child$$1) {
-        return [node].concat(getFirstChildren(child$$1));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return firstChild(node).fold(constant([node]), function (child) {
+        return [node].concat(getFirstChildren(child));
</ins><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var getLastChildren$1 = function (node) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return lastChild(node).fold(constant([node]), function (child$$1) {
-        if (name(child$$1) === 'br') {
-          return prevSibling(child$$1).map(function (sibling) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return lastChild(node).fold(constant([node]), function (child) {
+        if (name(child) === 'br') {
+          return prevSibling(child).map(function (sibling) {
</ins><span class="cx" style="display: block; padding: 0 10px">             return [node].concat(getLastChildren$1(sibling));
</span><span class="cx" style="display: block; padding: 0 10px">           }).getOr([]);
</span><span class="cx" style="display: block; padding: 0 10px">         } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          return [node].concat(getLastChildren$1(child$$1));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          return [node].concat(getLastChildren$1(child));
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -15436,15 +16160,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var MousePosition = { calc: calc };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var isContentEditableFalse$6 = NodeType.isContentEditableFalse, isContentEditableTrue$3 = NodeType.isContentEditableTrue;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var isContentEditableFalse$7 = NodeType.isContentEditableFalse, isContentEditableTrue$3 = NodeType.isContentEditableTrue;
</ins><span class="cx" style="display: block; padding: 0 10px">     var isDraggable = function (rootElm, elm) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return isContentEditableFalse$6(elm) && elm !== rootElm;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return isContentEditableFalse$7(elm) && elm !== rootElm;
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var isValidDropTarget = function (editor, targetElement, dragElement) {
</span><span class="cx" style="display: block; padding: 0 10px">       if (targetElement === dragElement || editor.dom.isChildOf(targetElement, dragElement)) {
</span><span class="cx" style="display: block; padding: 0 10px">         return false;
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      if (isContentEditableFalse$6(targetElement)) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      if (isContentEditableFalse$7(targetElement)) {
</ins><span class="cx" style="display: block; padding: 0 10px">         return false;
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       return true;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -15522,7 +16246,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var start$1 = function (state, editor) {
</span><span class="cx" style="display: block; padding: 0 10px">       return function (e) {
</span><span class="cx" style="display: block; padding: 0 10px">         if (isLeftMouseButtonPressed(e)) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          var ceElm = find(editor.dom.getParents(e.target), Predicate.or(isContentEditableFalse$6, isContentEditableTrue$3)).getOr(null);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          var ceElm = find(editor.dom.getParents(e.target), Predicate.or(isContentEditableFalse$7, isContentEditableTrue$3)).getOr(null);
</ins><span class="cx" style="display: block; padding: 0 10px">           if (isDraggable(editor.getBody(), ceElm)) {
</span><span class="cx" style="display: block; padding: 0 10px">             var elmPos = editor.dom.getPos(ceElm);
</span><span class="cx" style="display: block; padding: 0 10px">             var bodyElm = editor.getBody();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -15592,7 +16316,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         removeDragState(state);
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var stop$$1 = function (state, editor) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var stop = function (state, editor) {
</ins><span class="cx" style="display: block; padding: 0 10px">       return function () {
</span><span class="cx" style="display: block; padding: 0 10px">         if (state.dragging) {
</span><span class="cx" style="display: block; padding: 0 10px">           editor.fire('dragend');
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -15609,11 +16333,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var state = {};
</span><span class="cx" style="display: block; padding: 0 10px">       var pageDom, dragStartHandler, dragHandler, dropHandler, dragEndHandler, rootDocument;
</span><span class="cx" style="display: block; padding: 0 10px">       pageDom = DOMUtils$1.DOM;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      rootDocument = document;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      rootDocument = domGlobals.document;
</ins><span class="cx" style="display: block; padding: 0 10px">       dragStartHandler = start$1(state, editor);
</span><span class="cx" style="display: block; padding: 0 10px">       dragHandler = move$1(state, editor);
</span><span class="cx" style="display: block; padding: 0 10px">       dropHandler = drop(state, editor);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      dragEndHandler = stop$$1(state, editor);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      dragEndHandler = stop(state, editor);
</ins><span class="cx" style="display: block; padding: 0 10px">       editor.on('mousedown', dragStartHandler);
</span><span class="cx" style="display: block; padding: 0 10px">       editor.on('mousemove', dragHandler);
</span><span class="cx" style="display: block; padding: 0 10px">       editor.on('mouseup', dropHandler);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -15627,7 +16351,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var blockIeDrop = function (editor) {
</span><span class="cx" style="display: block; padding: 0 10px">       editor.on('drop', function (e) {
</span><span class="cx" style="display: block; padding: 0 10px">         var realTarget = typeof e.clientX !== 'undefined' ? editor.getDoc().elementFromPoint(e.clientX, e.clientY) : null;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (isContentEditableFalse$6(realTarget) || isContentEditableFalse$6(editor.dom.getContentEditableParent(realTarget))) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (isContentEditableFalse$7(realTarget) || isContentEditableFalse$7(editor.dom.getContentEditableParent(realTarget))) {
</ins><span class="cx" style="display: block; padding: 0 10px">           e.preventDefault();
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -15641,7 +16365,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var getNodeClientRects = function (node) {
</span><span class="cx" style="display: block; padding: 0 10px">       var toArrayWithNode = function (clientRects) {
</span><span class="cx" style="display: block; padding: 0 10px">         return map(clientRects, function (clientRect) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          clientRect = clone$2(clientRect);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          clientRect = clone$1(clientRect);
</ins><span class="cx" style="display: block; padding: 0 10px">           clientRect.node = node;
</span><span class="cx" style="display: block; padding: 0 10px">           return clientRect;
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -15750,7 +16474,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         if (result.length > 0 && isBelowFn(clientRect, ArrUtils.last(result))) {
</span><span class="cx" style="display: block; padding: 0 10px">           line++;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        clientRect = clone$2(clientRect);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        clientRect = clone$1(clientRect);
</ins><span class="cx" style="display: block; padding: 0 10px">         clientRect.position = caretPosition;
</span><span class="cx" style="display: block; padding: 0 10px">         clientRect.line = line;
</span><span class="cx" style="display: block; padding: 0 10px">         if (predicateFn(clientRect)) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -15771,7 +16495,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var isContentEditableFalse$7 = NodeType.isContentEditableFalse;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var isContentEditableFalse$8 = NodeType.isContentEditableFalse;
</ins><span class="cx" style="display: block; padding: 0 10px">     var findNode$1 = findNode;
</span><span class="cx" style="display: block; padding: 0 10px">     var distanceToRectLeft = function (clientRect, clientX) {
</span><span class="cx" style="display: block; padding: 0 10px">       return Math.abs(clientRect.left - clientX);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -15793,7 +16517,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         if (isInside(clientX, oldClientRect)) {
</span><span class="cx" style="display: block; padding: 0 10px">           return oldClientRect;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (newDistance === oldDistance && isContentEditableFalse$7(clientRect.node)) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (newDistance === oldDistance && isContentEditableFalse$8(clientRect.node)) {
</ins><span class="cx" style="display: block; padding: 0 10px">           return clientRect;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (newDistance < oldDistance) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -15849,65 +16573,18 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return null;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var isXYWithinRange = function (clientX, clientY, range$$1) {
-      if (range$$1.collapsed) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var isXYWithinRange = function (clientX, clientY, range) {
+      if (range.collapsed) {
</ins><span class="cx" style="display: block; padding: 0 10px">         return false;
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return foldl(range$$1.getClientRects(), function (state, rect) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return foldl(range.getClientRects(), function (state, rect) {
</ins><span class="cx" style="display: block; padding: 0 10px">         return state || containsXY(rect, clientX, clientY);
</span><span class="cx" style="display: block; padding: 0 10px">       }, false);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var RangePoint = { isXYWithinRange: isXYWithinRange };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var isContentEditableTrue$4 = NodeType.isContentEditableTrue;
-    var isContentEditableFalse$8 = NodeType.isContentEditableFalse;
-    var showCaret = function (direction, editor, node, before, scrollIntoView) {
-      return editor._selectionOverrides.showCaret(direction, node, before, scrollIntoView);
-    };
-    var getNodeRange = function (node) {
-      var rng = node.ownerDocument.createRange();
-      rng.selectNode(node);
-      return rng;
-    };
-    var selectNode = function (editor, node) {
-      var e = editor.fire('BeforeObjectSelected', { target: node });
-      if (e.isDefaultPrevented()) {
-        return null;
-      }
-      return getNodeRange(node);
-    };
-    var renderCaretAtRange = function (editor, range, scrollIntoView) {
-      var normalizedRange = normalizeRange(1, editor.getBody(), range);
-      var caretPosition = CaretPosition$1.fromRangeStart(normalizedRange);
-      var caretPositionNode = caretPosition.getNode();
-      if (isContentEditableFalse$8(caretPositionNode)) {
-        return showCaret(1, editor, caretPositionNode, !caretPosition.isAtEnd(), false);
-      }
-      var caretPositionBeforeNode = caretPosition.getNode(true);
-      if (isContentEditableFalse$8(caretPositionBeforeNode)) {
-        return showCaret(1, editor, caretPositionBeforeNode, false, false);
-      }
-      var ceRoot = editor.dom.getParent(caretPosition.getNode(), function (node) {
-        return isContentEditableFalse$8(node) || isContentEditableTrue$4(node);
-      });
-      if (isContentEditableFalse$8(ceRoot)) {
-        return showCaret(1, editor, ceRoot, false, scrollIntoView);
-      }
-      return null;
-    };
-    var renderRangeCaret = function (editor, range, scrollIntoView) {
-      if (!range || !range.collapsed) {
-        return range;
-      }
-      var caretRange = renderCaretAtRange(editor, range, scrollIntoView);
-      if (caretRange) {
-        return caretRange;
-      }
-      return range;
-    };
-
-    var setup$3 = function (editor) {
-      var renderFocusCaret = first$1(function () {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var setup$4 = function (editor) {
+      var renderFocusCaret = first(function () {
</ins><span class="cx" style="display: block; padding: 0 10px">         if (!editor.removed) {
</span><span class="cx" style="display: block; padding: 0 10px">           var rng = editor.selection.getRng();
</span><span class="cx" style="display: block; padding: 0 10px">           if (rng.collapsed) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -15923,7 +16600,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         renderFocusCaret.cancel();
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var CefFocus = { setup: setup$3 };
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var CefFocus = { setup: setup$4 };
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var VK = {
</span><span class="cx" style="display: block; padding: 0 10px">       BACKSPACE: 8,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -15935,6 +16612,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">       SPACEBAR: 32,
</span><span class="cx" style="display: block; padding: 0 10px">       TAB: 9,
</span><span class="cx" style="display: block; padding: 0 10px">       UP: 38,
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      END: 35,
+      HOME: 36,
</ins><span class="cx" style="display: block; padding: 0 10px">       modifierPressed: function (e) {
</span><span class="cx" style="display: block; padding: 0 10px">         return e.shiftKey || e.ctrlKey || e.altKey || this.metaKeyPressed(e);
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -15943,14 +16622,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var isContentEditableTrue$5 = NodeType.isContentEditableTrue;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var isContentEditableTrue$4 = NodeType.isContentEditableTrue;
</ins><span class="cx" style="display: block; padding: 0 10px">     var isContentEditableFalse$9 = NodeType.isContentEditableFalse;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var isAfterContentEditableFalse$1 = isAfterContentEditableFalse;
-    var isBeforeContentEditableFalse$1 = isBeforeContentEditableFalse;
</del><span class="cx" style="display: block; padding: 0 10px">     var getContentEditableRoot$1 = function (editor, node) {
</span><span class="cx" style="display: block; padding: 0 10px">       var root = editor.getBody();
</span><span class="cx" style="display: block; padding: 0 10px">       while (node && node !== root) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (isContentEditableTrue$5(node) || isContentEditableFalse$9(node)) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (isContentEditableTrue$4(node) || isContentEditableFalse$9(node)) {
</ins><span class="cx" style="display: block; padding: 0 10px">           return node;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         node = node.parentNode;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -15974,15 +16651,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">         var container = editor.dom.get(realSelectionId);
</span><span class="cx" style="display: block; padding: 0 10px">         return container ? container.getElementsByTagName('*')[0] : container;
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var setRange = function (range$$1) {
-        if (range$$1) {
-          editor.selection.setRng(range$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var setRange = function (range) {
+        if (range) {
+          editor.selection.setRng(range);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var getRange = function () {
</span><span class="cx" style="display: block; padding: 0 10px">         return editor.selection.getRng();
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var showCaret$$1 = function (direction, node, before, scrollIntoView) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var showCaret = function (direction, node, before, scrollIntoView) {
</ins><span class="cx" style="display: block; padding: 0 10px">         if (scrollIntoView === void 0) {
</span><span class="cx" style="display: block; padding: 0 10px">           scrollIntoView = true;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -16000,12 +16677,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         return fakeCaret.show(before, node);
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var getNormalizedRangeEndPoint$$1 = function (direction, range$$1) {
-        range$$1 = normalizeRange(direction, rootNode, range$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var getNormalizedRangeEndPoint = function (direction, range) {
+        range = normalizeRange(direction, rootNode, range);
</ins><span class="cx" style="display: block; padding: 0 10px">         if (direction === -1) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          return CaretPosition$1.fromRangeStart(range$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          return CaretPosition$1.fromRangeStart(range);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return CaretPosition$1.fromRangeEnd(range$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return CaretPosition$1.fromRangeEnd(range);
</ins><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var showBlockCaretContainer = function (blockCaretContainer) {
</span><span class="cx" style="display: block; padding: 0 10px">         if (blockCaretContainer.hasAttribute('data-mce-caret')) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -16016,9 +16693,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var registerEvents = function () {
</span><span class="cx" style="display: block; padding: 0 10px">         editor.on('mouseup', function (e) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          var range$$1 = getRange();
-          if (range$$1.collapsed && EditorView.isXYInContentArea(editor, e.clientX, e.clientY)) {
-            setRange(renderCaretAtRange(editor, range$$1, false));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          var range = getRange();
+          if (range.collapsed && EditorView.isXYInContentArea(editor, e.clientX, e.clientY)) {
+            setRange(renderCaretAtRange(editor, range, false));
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><span class="cx" style="display: block; padding: 0 10px">         editor.on('click', function (e) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -16029,7 +16706,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">               e.preventDefault();
</span><span class="cx" style="display: block; padding: 0 10px">               editor.focus();
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            if (isContentEditableTrue$5(contentEditableRoot)) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            if (isContentEditableTrue$4(contentEditableRoot)) {
</ins><span class="cx" style="display: block; padding: 0 10px">               if (editor.dom.isChildOf(contentEditableRoot, editor.selection.getNode())) {
</span><span class="cx" style="display: block; padding: 0 10px">                 removeContentEditableSelection();
</span><span class="cx" style="display: block; padding: 0 10px">               }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -16067,9 +16744,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           var startPos = CaretPosition$1.before(elm.firstChild);
</span><span class="cx" style="display: block; padding: 0 10px">           var newPos = caretWalker.next(startPos);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          return newPos && !isBeforeContentEditableFalse$1(newPos) && !isAfterContentEditableFalse$1(newPos);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          return newPos && !isBeforeContentEditableFalse(newPos) && !isAfterContentEditableFalse(newPos);
</ins><span class="cx" style="display: block; padding: 0 10px">         };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var isInSameBlock$$1 = function (node1, node2) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var isInSameBlock = function (node1, node2) {
</ins><span class="cx" style="display: block; padding: 0 10px">           var block1 = editor.dom.getParent(node1, editor.dom.isBlock);
</span><span class="cx" style="display: block; padding: 0 10px">           var block2 = editor.dom.getParent(node2, editor.dom.isBlock);
</span><span class="cx" style="display: block; padding: 0 10px">           return block1 === block2;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -16080,7 +16757,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">           if (targetBlock && editor.dom.isChildOf(targetBlock, caretBlock) && isContentEditableFalse$9(getContentEditableRoot$1(editor, targetBlock)) === false) {
</span><span class="cx" style="display: block; padding: 0 10px">             return true;
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          return targetBlock && !isInSameBlock$$1(targetBlock, caretBlock) && hasNormalCaretPosition(targetBlock);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          return targetBlock && !isInSameBlock(targetBlock, caretBlock) && hasNormalCaretPosition(targetBlock);
</ins><span class="cx" style="display: block; padding: 0 10px">         };
</span><span class="cx" style="display: block; padding: 0 10px">         handleTouchSelect(editor);
</span><span class="cx" style="display: block; padding: 0 10px">         editor.on('mousedown', function (e) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -16099,7 +16776,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">               setContentEditableSelection(selectNode(editor, contentEditableRoot));
</span><span class="cx" style="display: block; padding: 0 10px">             } else {
</span><span class="cx" style="display: block; padding: 0 10px">               removeContentEditableSelection();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              if (!(isContentEditableTrue$5(contentEditableRoot) && e.shiftKey) && !RangePoint.isXYWithinRange(e.clientX, e.clientY, editor.selection.getRng())) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              if (!(isContentEditableTrue$4(contentEditableRoot) && e.shiftKey) && !RangePoint.isXYWithinRange(e.clientX, e.clientY, editor.selection.getRng())) {
</ins><span class="cx" style="display: block; padding: 0 10px">                 hideFakeCaret();
</span><span class="cx" style="display: block; padding: 0 10px">                 editor.selection.placeCaretAt(e.clientX, e.clientY);
</span><span class="cx" style="display: block; padding: 0 10px">               }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -16111,9 +16788,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">             if (caretInfo) {
</span><span class="cx" style="display: block; padding: 0 10px">               if (!hasBetterMouseTarget(e.target, caretInfo.node)) {
</span><span class="cx" style="display: block; padding: 0 10px">                 e.preventDefault();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                var range$$1 = showCaret$$1(1, caretInfo.node, caretInfo.before, false);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                var range = showCaret(1, caretInfo.node, caretInfo.before, false);
</ins><span class="cx" style="display: block; padding: 0 10px">                 editor.getBody().focus();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                setRange(range$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                setRange(range);
</ins><span class="cx" style="display: block; padding: 0 10px">               }
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -16187,39 +16864,39 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var isRangeInCaretContainer = function (rng) {
</span><span class="cx" style="display: block; padding: 0 10px">         return isWithinCaretContainer(rng.startContainer) || isWithinCaretContainer(rng.endContainer);
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var setContentEditableSelection = function (range$$1, forward) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var setContentEditableSelection = function (range, forward) {
</ins><span class="cx" style="display: block; padding: 0 10px">         var node;
</span><span class="cx" style="display: block; padding: 0 10px">         var $ = editor.$;
</span><span class="cx" style="display: block; padding: 0 10px">         var dom = editor.dom;
</span><span class="cx" style="display: block; padding: 0 10px">         var $realSelectionContainer, sel, startContainer, startOffset, endOffset, e, caretPosition, targetClone, origTargetClone;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (!range$$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (!range) {
</ins><span class="cx" style="display: block; padding: 0 10px">           return null;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (range$$1.collapsed) {
-          if (!isRangeInCaretContainer(range$$1)) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (range.collapsed) {
+          if (!isRangeInCaretContainer(range)) {
</ins><span class="cx" style="display: block; padding: 0 10px">             if (forward === false) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              caretPosition = getNormalizedRangeEndPoint$$1(-1, range$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              caretPosition = getNormalizedRangeEndPoint(-1, range);
</ins><span class="cx" style="display: block; padding: 0 10px">               if (isFakeCaretTarget(caretPosition.getNode(true))) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                return showCaret$$1(-1, caretPosition.getNode(true), false, false);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                return showCaret(-1, caretPosition.getNode(true), false, false);
</ins><span class="cx" style="display: block; padding: 0 10px">               }
</span><span class="cx" style="display: block; padding: 0 10px">               if (isFakeCaretTarget(caretPosition.getNode())) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                return showCaret$$1(-1, caretPosition.getNode(), !caretPosition.isAtEnd(), false);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                return showCaret(-1, caretPosition.getNode(), !caretPosition.isAtEnd(), false);
</ins><span class="cx" style="display: block; padding: 0 10px">               }
</span><span class="cx" style="display: block; padding: 0 10px">             } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              caretPosition = getNormalizedRangeEndPoint$$1(1, range$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              caretPosition = getNormalizedRangeEndPoint(1, range);
</ins><span class="cx" style="display: block; padding: 0 10px">               if (isFakeCaretTarget(caretPosition.getNode())) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                return showCaret$$1(1, caretPosition.getNode(), !caretPosition.isAtEnd(), false);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                return showCaret(1, caretPosition.getNode(), !caretPosition.isAtEnd(), false);
</ins><span class="cx" style="display: block; padding: 0 10px">               }
</span><span class="cx" style="display: block; padding: 0 10px">               if (isFakeCaretTarget(caretPosition.getNode(true))) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                return showCaret$$1(1, caretPosition.getNode(true), false, false);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                return showCaret(1, caretPosition.getNode(true), false, false);
</ins><span class="cx" style="display: block; padding: 0 10px">               }
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           return null;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        startContainer = range$$1.startContainer;
-        startOffset = range$$1.startOffset;
-        endOffset = range$$1.endOffset;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        startContainer = range.startContainer;
+        startOffset = range.startOffset;
+        endOffset = range.endOffset;
</ins><span class="cx" style="display: block; padding: 0 10px">         if (startContainer.nodeType === 3 && startOffset === 0 && isContentEditableFalse$9(startContainer.parentNode)) {
</span><span class="cx" style="display: block; padding: 0 10px">           startContainer = startContainer.parentNode;
</span><span class="cx" style="display: block; padding: 0 10px">           startOffset = dom.nodeIndex(startContainer);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -16242,7 +16919,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         if (e.isDefaultPrevented()) {
</span><span class="cx" style="display: block; padding: 0 10px">           return null;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        $realSelectionContainer = descendant$1(Element$$1.fromDom(editor.getBody()), '#' + realSelectionId).fold(function () {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        $realSelectionContainer = descendant(Element.fromDom(editor.getBody()), '#' + realSelectionId).fold(function () {
</ins><span class="cx" style="display: block; padding: 0 10px">           return $([]);
</span><span class="cx" style="display: block; padding: 0 10px">         }, function (elm) {
</span><span class="cx" style="display: block; padding: 0 10px">           return $([elm.dom()]);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -16252,36 +16929,36 @@
</span><span class="cx" style="display: block; padding: 0 10px">           $realSelectionContainer = $('<div data-mce-bogus="all" class="mce-offscreen-selection"></div>').attr('id', realSelectionId);
</span><span class="cx" style="display: block; padding: 0 10px">           $realSelectionContainer.appendTo(editor.getBody());
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        range$$1 = editor.dom.createRng();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        range = editor.dom.createRng();
</ins><span class="cx" style="display: block; padding: 0 10px">         if (targetClone === origTargetClone && Env.ie) {
</span><span class="cx" style="display: block; padding: 0 10px">           $realSelectionContainer.empty().append('<p style="font-size: 0" data-mce-bogus="all">\xA0</p>').append(targetClone);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          range$$1.setStartAfter($realSelectionContainer[0].firstChild.firstChild);
-          range$$1.setEndAfter(targetClone);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          range.setStartAfter($realSelectionContainer[0].firstChild.firstChild);
+          range.setEndAfter(targetClone);
</ins><span class="cx" style="display: block; padding: 0 10px">         } else {
</span><span class="cx" style="display: block; padding: 0 10px">           $realSelectionContainer.empty().append('\xA0').append(targetClone).append('\xA0');
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          range$$1.setStart($realSelectionContainer[0].firstChild, 1);
-          range$$1.setEnd($realSelectionContainer[0].lastChild, 0);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          range.setStart($realSelectionContainer[0].firstChild, 1);
+          range.setEnd($realSelectionContainer[0].lastChild, 0);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         $realSelectionContainer.css({ top: dom.getPos(node, editor.getBody()).y });
</span><span class="cx" style="display: block; padding: 0 10px">         $realSelectionContainer[0].focus();
</span><span class="cx" style="display: block; padding: 0 10px">         sel = editor.selection.getSel();
</span><span class="cx" style="display: block; padding: 0 10px">         sel.removeAllRanges();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        sel.addRange(range$$1);
-        each(descendants$1(Element$$1.fromDom(editor.getBody()), '*[data-mce-selected]'), function (elm) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        sel.addRange(range);
+        each(descendants$1(Element.fromDom(editor.getBody()), '*[data-mce-selected]'), function (elm) {
</ins><span class="cx" style="display: block; padding: 0 10px">           remove(elm, 'data-mce-selected');
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><span class="cx" style="display: block; padding: 0 10px">         node.setAttribute('data-mce-selected', '1');
</span><span class="cx" style="display: block; padding: 0 10px">         selectedContentEditableNode = node;
</span><span class="cx" style="display: block; padding: 0 10px">         hideFakeCaret();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return range$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return range;
</ins><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var removeContentEditableSelection = function () {
</span><span class="cx" style="display: block; padding: 0 10px">         if (selectedContentEditableNode) {
</span><span class="cx" style="display: block; padding: 0 10px">           selectedContentEditableNode.removeAttribute('data-mce-selected');
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          descendant$1(Element$$1.fromDom(editor.getBody()), '#' + realSelectionId).each(remove$2);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          descendant(Element.fromDom(editor.getBody()), '#' + realSelectionId).each(remove$1);
</ins><span class="cx" style="display: block; padding: 0 10px">           selectedContentEditableNode = null;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        descendant$1(Element$$1.fromDom(editor.getBody()), '#' + realSelectionId).each(remove$2);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        descendant(Element.fromDom(editor.getBody()), '#' + realSelectionId).each(remove$1);
</ins><span class="cx" style="display: block; padding: 0 10px">         selectedContentEditableNode = null;
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var destroy = function () {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -16296,7 +16973,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         addCss();
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       return {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        showCaret: showCaret$$1,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        showCaret: showCaret,
</ins><span class="cx" style="display: block; padding: 0 10px">         showBlockCaretContainer: showBlockCaretContainer,
</span><span class="cx" style="display: block; padding: 0 10px">         hideFakeCaret: hideFakeCaret,
</span><span class="cx" style="display: block; padding: 0 10px">         destroy: destroy
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -16339,6 +17016,16 @@
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       return index;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var checkBogusAttribute = function (regExp, attrString) {
+      var matches = regExp.exec(attrString);
+      if (matches) {
+        var name = matches[1];
+        var value = matches[2];
+        return typeof name === 'string' && name.toLowerCase() === 'data-mce-bogus' ? value : null;
+      } else {
+        return null;
+      }
+    };
</ins><span class="cx" style="display: block; padding: 0 10px">     function SaxParser(settings, schema) {
</span><span class="cx" style="display: block; padding: 0 10px">       if (schema === void 0) {
</span><span class="cx" style="display: block; padding: 0 10px">         schema = Schema();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -16469,6 +17156,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">             if (fixSelfClosing && selfClosing[value] && stack.length > 0 && stack[stack.length - 1].name === value) {
</span><span class="cx" style="display: block; padding: 0 10px">               processEndTag(value);
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            var bogusValue = checkBogusAttribute(attrRegExp, matches[8]);
+            if (bogusValue !== null) {
+              if (bogusValue === 'all') {
+                index = findEndTagIndex(schema, html, tokenRegExp.lastIndex);
+                tokenRegExp.lastIndex = index;
+                continue;
+              }
+              isValidElement = false;
+            }
</ins><span class="cx" style="display: block; padding: 0 10px">             if (!validate || (elementRule = schema.getElementRule(value))) {
</span><span class="cx" style="display: block; padding: 0 10px">               isValidElement = true;
</span><span class="cx" style="display: block; padding: 0 10px">               if (validate) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -16784,8 +17480,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var createFragment$1 = function (html) {
</span><span class="cx" style="display: block; padding: 0 10px">       var frag, node, container;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      container = document.createElement('div');
-      frag = document.createDocumentFragment();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      container = domGlobals.document.createElement('div');
+      frag = domGlobals.document.createDocumentFragment();
</ins><span class="cx" style="display: block; padding: 0 10px">       if (html) {
</span><span class="cx" style="display: block; padding: 0 10px">         container.innerHTML = html;
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -16840,7 +17536,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var undoLevelDocument = Cell(Option.none());
</span><span class="cx" style="display: block; padding: 0 10px">     var lazyTempDocument = function () {
</span><span class="cx" style="display: block; padding: 0 10px">       return undoLevelDocument.get().getOrThunk(function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var doc = document.implementation.createHTMLDocument('undo');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var doc = domGlobals.document.implementation.createHTMLDocument('undo');
</ins><span class="cx" style="display: block; padding: 0 10px">         undoLevelDocument.set(Option.some(doc));
</span><span class="cx" style="display: block; padding: 0 10px">         return doc;
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -16888,10 +17584,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return level.type === 'fragmented' ? level.fragments.join('') : level.content;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var getCleanLevelContent = function (level) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var elm = Element$$1.fromTag('body', lazyTempDocument());
-      set$2(elm, getLevelContent(level));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var elm = Element.fromTag('body', lazyTempDocument());
+      set$1(elm, getLevelContent(level));
</ins><span class="cx" style="display: block; padding: 0 10px">       each(descendants$1(elm, '*[data-mce-bogus]'), unwrap);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return get$5(elm);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return get$3(elm);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var hasEqualContent = function (level1, level2) {
</span><span class="cx" style="display: block; padding: 0 10px">       return getLevelContent(level1) === getLevelContent(level2);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -16899,7 +17595,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var hasEqualCleanedContent = function (level1, level2) {
</span><span class="cx" style="display: block; padding: 0 10px">       return getCleanLevelContent(level1) === getCleanLevelContent(level2);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var isEq$3 = function (level1, level2) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var isEq$4 = function (level1, level2) {
</ins><span class="cx" style="display: block; padding: 0 10px">       if (!level1 || !level2) {
</span><span class="cx" style="display: block; padding: 0 10px">         return false;
</span><span class="cx" style="display: block; padding: 0 10px">       } else if (hasEqualContent(level1, level2)) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -16913,7 +17609,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       createCompleteLevel: createCompleteLevel,
</span><span class="cx" style="display: block; padding: 0 10px">       createFromEditor: createFromEditor,
</span><span class="cx" style="display: block; padding: 0 10px">       applyToEditor: applyToEditor,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      isEq: isEq$3
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      isEq: isEq$4
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     function UndoManager (editor) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -17153,425 +17849,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return self;
</span><span class="cx" style="display: block; padding: 0 10px">     }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var isEq$4 = FormatUtils.isEq;
-    var matchesUnInheritedFormatSelector = function (ed, node, name) {
-      var formatList = ed.formatter.get(name);
-      if (formatList) {
-        for (var i = 0; i < formatList.length; i++) {
-          if (formatList[i].inherit === false && ed.dom.is(node, formatList[i].selector)) {
-            return true;
-          }
-        }
-      }
-      return false;
-    };
-    var matchParents = function (editor, node, name, vars) {
-      var root = editor.dom.getRoot();
-      if (node === root) {
-        return false;
-      }
-      node = editor.dom.getParent(node, function (node) {
-        if (matchesUnInheritedFormatSelector(editor, node, name)) {
-          return true;
-        }
-        return node.parentNode === root || !!matchNode(editor, node, name, vars, true);
-      });
-      return matchNode(editor, node, name, vars);
-    };
-    var matchName = function (dom, node, format) {
-      if (isEq$4(node, format.inline)) {
-        return true;
-      }
-      if (isEq$4(node, format.block)) {
-        return true;
-      }
-      if (format.selector) {
-        return node.nodeType === 1 && dom.is(node, format.selector);
-      }
-    };
-    var matchItems = function (dom, node, format, itemName, similar, vars) {
-      var key, value;
-      var items = format[itemName];
-      var i;
-      if (format.onmatch) {
-        return format.onmatch(node, format, itemName);
-      }
-      if (items) {
-        if (typeof items.length === 'undefined') {
-          for (key in items) {
-            if (items.hasOwnProperty(key)) {
-              if (itemName === 'attributes') {
-                value = dom.getAttrib(node, key);
-              } else {
-                value = FormatUtils.getStyle(dom, node, key);
-              }
-              if (similar && !value && !format.exact) {
-                return;
-              }
-              if ((!similar || format.exact) && !isEq$4(value, FormatUtils.normalizeStyleValue(dom, FormatUtils.replaceVars(items[key], vars), key))) {
-                return;
-              }
-            }
-          }
-        } else {
-          for (i = 0; i < items.length; i++) {
-            if (itemName === 'attributes' ? dom.getAttrib(node, items[i]) : FormatUtils.getStyle(dom, node, items[i])) {
-              return format;
-            }
-          }
-        }
-      }
-      return format;
-    };
-    var matchNode = function (ed, node, name, vars, similar) {
-      var formatList = ed.formatter.get(name);
-      var format, i, x, classes;
-      var dom = ed.dom;
-      if (formatList && node) {
-        for (i = 0; i < formatList.length; i++) {
-          format = formatList[i];
-          if (matchName(ed.dom, node, format) && matchItems(dom, node, format, 'attributes', similar, vars) && matchItems(dom, node, format, 'styles', similar, vars)) {
-            if (classes = format.classes) {
-              for (x = 0; x < classes.length; x++) {
-                if (!ed.dom.hasClass(node, classes[x])) {
-                  return;
-                }
-              }
-            }
-            return format;
-          }
-        }
-      }
-    };
-    var match = function (editor, name, vars, node) {
-      var startNode;
-      if (node) {
-        return matchParents(editor, node, name, vars);
-      }
-      node = editor.selection.getNode();
-      if (matchParents(editor, node, name, vars)) {
-        return true;
-      }
-      startNode = editor.selection.getStart();
-      if (startNode !== node) {
-        if (matchParents(editor, startNode, name, vars)) {
-          return true;
-        }
-      }
-      return false;
-    };
-    var matchAll = function (editor, names, vars) {
-      var startElement;
-      var matchedFormatNames = [];
-      var checkedMap = {};
-      startElement = editor.selection.getStart();
-      editor.dom.getParent(startElement, function (node) {
-        var i, name;
-        for (i = 0; i < names.length; i++) {
-          name = names[i];
-          if (!checkedMap[name] && matchNode(editor, node, name, vars)) {
-            checkedMap[name] = true;
-            matchedFormatNames.push(name);
-          }
-        }
-      }, editor.dom.getRoot());
-      return matchedFormatNames;
-    };
-    var canApply = function (editor, name) {
-      var formatList = editor.formatter.get(name);
-      var startNode, parents, i, x, selector;
-      var dom = editor.dom;
-      if (formatList) {
-        startNode = editor.selection.getStart();
-        parents = FormatUtils.getParents(dom, startNode);
-        for (x = formatList.length - 1; x >= 0; x--) {
-          selector = formatList[x].selector;
-          if (!selector || formatList[x].defaultBlock) {
-            return true;
-          }
-          for (i = parents.length - 1; i >= 0; i--) {
-            if (dom.is(parents[i], selector)) {
-              return true;
-            }
-          }
-        }
-      }
-      return false;
-    };
-    var MatchFormat = {
-      matchNode: matchNode,
-      matchName: matchName,
-      match: match,
-      matchAll: matchAll,
-      canApply: canApply,
-      matchesUnInheritedFormatSelector: matchesUnInheritedFormatSelector
-    };
-
-    var splitText = function (node, offset) {
-      return node.splitText(offset);
-    };
-    var split$1 = function (rng) {
-      var startContainer = rng.startContainer, startOffset = rng.startOffset, endContainer = rng.endContainer, endOffset = rng.endOffset;
-      if (startContainer === endContainer && NodeType.isText(startContainer)) {
-        if (startOffset > 0 && startOffset < startContainer.nodeValue.length) {
-          endContainer = splitText(startContainer, startOffset);
-          startContainer = endContainer.previousSibling;
-          if (endOffset > startOffset) {
-            endOffset = endOffset - startOffset;
-            startContainer = endContainer = splitText(endContainer, endOffset).previousSibling;
-            endOffset = endContainer.nodeValue.length;
-            startOffset = 0;
-          } else {
-            endOffset = 0;
-          }
-        }
-      } else {
-        if (NodeType.isText(startContainer) && startOffset > 0 && startOffset < startContainer.nodeValue.length) {
-          startContainer = splitText(startContainer, startOffset);
-          startOffset = 0;
-        }
-        if (NodeType.isText(endContainer) && endOffset > 0 && endOffset < endContainer.nodeValue.length) {
-          endContainer = splitText(endContainer, endOffset).previousSibling;
-          endOffset = endContainer.nodeValue.length;
-        }
-      }
-      return {
-        startContainer: startContainer,
-        startOffset: startOffset,
-        endContainer: endContainer,
-        endOffset: endOffset
-      };
-    };
-    var SplitRange = { split: split$1 };
-
-    var ZWSP$1 = Zwsp.ZWSP, CARET_ID$1 = '_mce_caret';
-    var importNode = function (ownerDocument, node) {
-      return ownerDocument.importNode(node, true);
-    };
-    var getEmptyCaretContainers = function (node) {
-      var nodes = [];
-      while (node) {
-        if (node.nodeType === 3 && node.nodeValue !== ZWSP$1 || node.childNodes.length > 1) {
-          return [];
-        }
-        if (node.nodeType === 1) {
-          nodes.push(node);
-        }
-        node = node.firstChild;
-      }
-      return nodes;
-    };
-    var isCaretContainerEmpty = function (node) {
-      return getEmptyCaretContainers(node).length > 0;
-    };
-    var findFirstTextNode = function (node) {
-      var walker;
-      if (node) {
-        walker = new TreeWalker(node, node);
-        for (node = walker.current(); node; node = walker.next()) {
-          if (node.nodeType === 3) {
-            return node;
-          }
-        }
-      }
-      return null;
-    };
-    var createCaretContainer = function (fill) {
-      var caretContainer = Element$$1.fromTag('span');
-      setAll(caretContainer, {
-        'id': CARET_ID$1,
-        'data-mce-bogus': '1',
-        'data-mce-type': 'format-caret'
-      });
-      if (fill) {
-        append(caretContainer, Element$$1.fromText(ZWSP$1));
-      }
-      return caretContainer;
-    };
-    var trimZwspFromCaretContainer = function (caretContainerNode) {
-      var textNode = findFirstTextNode(caretContainerNode);
-      if (textNode && textNode.nodeValue.charAt(0) === ZWSP$1) {
-        textNode.deleteData(0, 1);
-      }
-      return textNode;
-    };
-    var removeCaretContainerNode = function (editor, node, moveCaret) {
-      if (moveCaret === void 0) {
-        moveCaret = true;
-      }
-      var dom = editor.dom, selection = editor.selection;
-      if (isCaretContainerEmpty(node)) {
-        DeleteElement.deleteElement(editor, false, Element$$1.fromDom(node), moveCaret);
-      } else {
-        var rng = selection.getRng();
-        var block = dom.getParent(node, dom.isBlock);
-        var textNode = trimZwspFromCaretContainer(node);
-        if (rng.startContainer === textNode && rng.startOffset > 0) {
-          rng.setStart(textNode, rng.startOffset - 1);
-        }
-        if (rng.endContainer === textNode && rng.endOffset > 0) {
-          rng.setEnd(textNode, rng.endOffset - 1);
-        }
-        dom.remove(node, true);
-        if (block && dom.isEmpty(block)) {
-          PaddingBr.fillWithPaddingBr(Element$$1.fromDom(block));
-        }
-        selection.setRng(rng);
-      }
-    };
-    var removeCaretContainer = function (editor, node, moveCaret) {
-      if (moveCaret === void 0) {
-        moveCaret = true;
-      }
-      var dom = editor.dom, selection = editor.selection;
-      if (!node) {
-        node = getParentCaretContainer(editor.getBody(), selection.getStart());
-        if (!node) {
-          while (node = dom.get(CARET_ID$1)) {
-            removeCaretContainerNode(editor, node, false);
-          }
-        }
-      } else {
-        removeCaretContainerNode(editor, node, moveCaret);
-      }
-    };
-    var insertCaretContainerNode = function (editor, caretContainer, formatNode) {
-      var dom = editor.dom, block = dom.getParent(formatNode, curry(FormatUtils.isTextBlock, editor));
-      if (block && dom.isEmpty(block)) {
-        formatNode.parentNode.replaceChild(caretContainer, formatNode);
-      } else {
-        PaddingBr.removeTrailingBr(Element$$1.fromDom(formatNode));
-        if (dom.isEmpty(formatNode)) {
-          formatNode.parentNode.replaceChild(caretContainer, formatNode);
-        } else {
-          dom.insertAfter(caretContainer, formatNode);
-        }
-      }
-    };
-    var appendNode = function (parentNode, node) {
-      parentNode.appendChild(node);
-      return node;
-    };
-    var insertFormatNodesIntoCaretContainer = function (formatNodes, caretContainer) {
-      var innerMostFormatNode = foldr(formatNodes, function (parentNode, formatNode) {
-        return appendNode(parentNode, formatNode.cloneNode(false));
-      }, caretContainer);
-      return appendNode(innerMostFormatNode, innerMostFormatNode.ownerDocument.createTextNode(ZWSP$1));
-    };
-    var applyCaretFormat = function (editor, name$$1, vars) {
-      var rng, caretContainer, textNode, offset, bookmark, container, text;
-      var selection = editor.selection;
-      rng = selection.getRng(true);
-      offset = rng.startOffset;
-      container = rng.startContainer;
-      text = container.nodeValue;
-      caretContainer = getParentCaretContainer(editor.getBody(), selection.getStart());
-      if (caretContainer) {
-        textNode = findFirstTextNode(caretContainer);
-      }
-      var wordcharRegex = /[^\s\u00a0\u00ad\u200b\ufeff]/;
-      if (text && offset > 0 && offset < text.length && wordcharRegex.test(text.charAt(offset)) && wordcharRegex.test(text.charAt(offset - 1))) {
-        bookmark = selection.getBookmark();
-        rng.collapse(true);
-        rng = ExpandRange.expandRng(editor, rng, editor.formatter.get(name$$1));
-        rng = SplitRange.split(rng);
-        editor.formatter.apply(name$$1, vars, rng);
-        selection.moveToBookmark(bookmark);
-      } else {
-        if (!caretContainer || textNode.nodeValue !== ZWSP$1) {
-          caretContainer = importNode(editor.getDoc(), createCaretContainer(true).dom());
-          textNode = caretContainer.firstChild;
-          rng.insertNode(caretContainer);
-          offset = 1;
-          editor.formatter.apply(name$$1, vars, caretContainer);
-        } else {
-          editor.formatter.apply(name$$1, vars, caretContainer);
-        }
-        selection.setCursorLocation(textNode, offset);
-      }
-    };
-    var removeCaretFormat = function (editor, name$$1, vars, similar) {
-      var dom = editor.dom, selection = editor.selection;
-      var container, offset, bookmark;
-      var hasContentAfter, node, formatNode;
-      var parents = [], rng = selection.getRng();
-      var caretContainer;
-      container = rng.startContainer;
-      offset = rng.startOffset;
-      node = container;
-      if (container.nodeType === 3) {
-        if (offset !== container.nodeValue.length) {
-          hasContentAfter = true;
-        }
-        node = node.parentNode;
-      }
-      while (node) {
-        if (MatchFormat.matchNode(editor, node, name$$1, vars, similar)) {
-          formatNode = node;
-          break;
-        }
-        if (node.nextSibling) {
-          hasContentAfter = true;
-        }
-        parents.push(node);
-        node = node.parentNode;
-      }
-      if (!formatNode) {
-        return;
-      }
-      if (hasContentAfter) {
-        bookmark = selection.getBookmark();
-        rng.collapse(true);
-        var expandedRng = ExpandRange.expandRng(editor, rng, editor.formatter.get(name$$1), true);
-        expandedRng = SplitRange.split(expandedRng);
-        editor.formatter.remove(name$$1, vars, expandedRng);
-        selection.moveToBookmark(bookmark);
-      } else {
-        caretContainer = getParentCaretContainer(editor.getBody(), formatNode);
-        var newCaretContainer = createCaretContainer(false).dom();
-        var caretNode = insertFormatNodesIntoCaretContainer(parents, newCaretContainer);
-        if (caretContainer) {
-          insertCaretContainerNode(editor, newCaretContainer, caretContainer);
-        } else {
-          insertCaretContainerNode(editor, newCaretContainer, formatNode);
-        }
-        removeCaretContainerNode(editor, caretContainer, false);
-        selection.setCursorLocation(caretNode, 1);
-        if (dom.isEmpty(formatNode)) {
-          dom.remove(formatNode);
-        }
-      }
-    };
-    var disableCaretContainer = function (editor, keyCode) {
-      var selection = editor.selection, body = editor.getBody();
-      removeCaretContainer(editor, null, false);
-      if ((keyCode === 8 || keyCode === 46) && selection.isCollapsed() && selection.getStart().innerHTML === ZWSP$1) {
-        removeCaretContainer(editor, getParentCaretContainer(body, selection.getStart()));
-      }
-      if (keyCode === 37 || keyCode === 39) {
-        removeCaretContainer(editor, getParentCaretContainer(body, selection.getStart()));
-      }
-    };
-    var setup$4 = function (editor) {
-      editor.on('mouseup keydown', function (e) {
-        disableCaretContainer(editor, e.keyCode);
-      });
-    };
-    var replaceWithCaretFormat = function (targetNode, formatNodes) {
-      var caretContainer = createCaretContainer(false);
-      var innerMost = insertFormatNodesIntoCaretContainer(formatNodes, caretContainer.dom());
-      before(Element$$1.fromDom(targetNode), caretContainer);
-      remove$2(Element$$1.fromDom(targetNode));
-      return CaretPosition$1(innerMost, 0);
-    };
-    var isFormatElement = function (editor, element) {
-      var inlineElements = editor.schema.getTextInlineElements();
-      return inlineElements.hasOwnProperty(name(element)) && !isCaretNode(element.dom()) && !NodeType.isBogus(element.dom());
-    };
-    var isEmptyCaretFormatElement = function (element) {
-      return isCaretNode(element.dom()) && isCaretContainerEmpty(element.dom());
-    };
-
</del><span class="cx" style="display: block; padding: 0 10px">     var postProcessHooks = {}, filter$2 = ArrUtils.filter, each$c = ArrUtils.each;
</span><span class="cx" style="display: block; padding: 0 10px">     var addPostProcessHook = function (name, hook) {
</span><span class="cx" style="display: block; padding: 0 10px">       var hooks = postProcessHooks[name];
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -17611,8 +17888,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var isTableCell$4 = function (node) {
</span><span class="cx" style="display: block; padding: 0 10px">       return /^(TH|TD)$/.test(node.nodeName);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var isChildOfInlineParent = function (dom, node, parent$$1) {
-      return dom.isChildOf(node, parent$$1) && node !== parent$$1 && !dom.isBlock(parent$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var isChildOfInlineParent = function (dom, node, parent) {
+      return dom.isChildOf(node, parent) && node !== parent && !dom.isBlock(parent);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var getContainer = function (ed, rng, start) {
</span><span class="cx" style="display: block; padding: 0 10px">       var container, offset, lastIdx;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -17640,10 +17917,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return wrapper;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var wrapWithSiblings = function (dom, node, next, name, attrs) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var start = Element$$1.fromDom(node);
-      var wrapper = Element$$1.fromDom(dom.create(name, attrs));
-      var siblings$$1 = next ? nextSiblings(start) : prevSiblings(start);
-      append$1(wrapper, siblings$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var start = Element.fromDom(node);
+      var wrapper = Element.fromDom(dom.create(name, attrs));
+      var siblings = next ? nextSiblings(start) : prevSiblings(start);
+      append$1(wrapper, siblings);
</ins><span class="cx" style="display: block; padding: 0 10px">       if (next) {
</span><span class="cx" style="display: block; padding: 0 10px">         before(start, wrapper);
</span><span class="cx" style="display: block; padding: 0 10px">         prepend(wrapper, start);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -17667,7 +17944,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var isColorFormatAndAnchor = function (node, format) {
</span><span class="cx" style="display: block; padding: 0 10px">       return format.links && node.tagName === 'A';
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var find$4 = function (dom, node, next, inc) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var find$3 = function (dom, node, next, inc) {
</ins><span class="cx" style="display: block; padding: 0 10px">       node = FormatUtils.getNonWhiteSpaceSibling(node, next, inc);
</span><span class="cx" style="display: block; padding: 0 10px">       return !node || (node.nodeName === 'BR' || dom.isBlock(node));
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -17678,10 +17955,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">       if (format.block) {
</span><span class="cx" style="display: block; padding: 0 10px">         if (!forcedRootBlock) {
</span><span class="cx" style="display: block; padding: 0 10px">           if (dom.isBlock(node) && !dom.isBlock(parentNode)) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            if (!find$4(dom, node, false) && !find$4(dom, node.firstChild, true, 1)) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            if (!find$3(dom, node, false) && !find$3(dom, node.firstChild, true, 1)) {
</ins><span class="cx" style="display: block; padding: 0 10px">               node.insertBefore(dom.create('br'), node.firstChild);
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            if (!find$4(dom, node, true) && !find$4(dom, node.lastChild, false, 1)) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            if (!find$3(dom, node, true) && !find$3(dom, node.lastChild, false, 1)) {
</ins><span class="cx" style="display: block; padding: 0 10px">               node.appendChild(dom.create('br'));
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -17784,12 +18061,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var findFormatRoot = function (editor, container, name, vars, similar) {
</span><span class="cx" style="display: block; padding: 0 10px">       var formatRoot;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      each$d(FormatUtils.getParents(editor.dom, container.parentNode).reverse(), function (parent$$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      each$d(FormatUtils.getParents(editor.dom, container.parentNode).reverse(), function (parent) {
</ins><span class="cx" style="display: block; padding: 0 10px">         var format;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (!formatRoot && parent$$1.id !== '_start' && parent$$1.id !== '_end') {
-          format = MatchFormat.matchNode(editor, parent$$1, name, vars, similar);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (!formatRoot && parent.id !== '_start' && parent.id !== '_end') {
+          format = MatchFormat.matchNode(editor, parent, name, vars, similar);
</ins><span class="cx" style="display: block; padding: 0 10px">           if (format && format.split !== false) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            formatRoot = parent$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            formatRoot = parent;
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -17796,12 +18073,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return formatRoot;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var wrapAndSplit = function (editor, formatList, formatRoot, container, target, split, format, vars) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var parent$$1, clone, lastClone, firstClone, i, formatRootParent;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var parent, clone, lastClone, firstClone, i, formatRootParent;
</ins><span class="cx" style="display: block; padding: 0 10px">       var dom = editor.dom;
</span><span class="cx" style="display: block; padding: 0 10px">       if (formatRoot) {
</span><span class="cx" style="display: block; padding: 0 10px">         formatRootParent = formatRoot.parentNode;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        for (parent$$1 = container.parentNode; parent$$1 && parent$$1 !== formatRootParent; parent$$1 = parent$$1.parentNode) {
-          clone = dom.clone(parent$$1, false);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        for (parent = container.parentNode; parent && parent !== formatRootParent; parent = parent.parentNode) {
+          clone = dom.clone(parent, false);
</ins><span class="cx" style="display: block; padding: 0 10px">           for (i = 0; i < formatList.length; i++) {
</span><span class="cx" style="display: block; padding: 0 10px">             if (removeFormat(editor, formatList[i], vars, clone, clone)) {
</span><span class="cx" style="display: block; padding: 0 10px">               clone = 0;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -17828,7 +18105,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       return container;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var remove$8 = function (ed, name, vars, node, similar) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var remove$6 = function (ed, name, vars, node, similar) {
</ins><span class="cx" style="display: block; padding: 0 10px">       var formatList = ed.formatter.get(name), format = formatList[0];
</span><span class="cx" style="display: block; padding: 0 10px">       var bookmark, rng, contentEditable = true;
</span><span class="cx" style="display: block; padding: 0 10px">       var dom = ed.dom;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -17841,13 +18118,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return Bookmarks.isBookmarkNode(node) && NodeType.isElement(node) && (node.id === '_start' || node.id === '_end');
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var process = function (node) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var children$$1, i, l, lastContentEditable, hasContentEditableState;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var children, i, l, lastContentEditable, hasContentEditableState;
</ins><span class="cx" style="display: block; padding: 0 10px">         if (NodeType.isElement(node) && dom.getContentEditable(node)) {
</span><span class="cx" style="display: block; padding: 0 10px">           lastContentEditable = contentEditable;
</span><span class="cx" style="display: block; padding: 0 10px">           contentEditable = dom.getContentEditable(node) === 'true';
</span><span class="cx" style="display: block; padding: 0 10px">           hasContentEditableState = true;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        children$$1 = Tools.grep(node.childNodes);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        children = Tools.grep(node.childNodes);
</ins><span class="cx" style="display: block; padding: 0 10px">         if (contentEditable && !hasContentEditableState) {
</span><span class="cx" style="display: block; padding: 0 10px">           for (i = 0, l = formatList.length; i < l; i++) {
</span><span class="cx" style="display: block; padding: 0 10px">             if (removeFormat(ed, formatList[i], vars, node, node)) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -17856,9 +18133,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (format.deep) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (children$$1.length) {
-            for (i = 0, l = children$$1.length; i < l; i++) {
-              process(children$$1[i]);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (children.length) {
+            for (i = 0, l = children.length; i < l; i++) {
+              process(children[i]);
</ins><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">             if (hasContentEditableState) {
</span><span class="cx" style="display: block; padding: 0 10px">               contentEditable = lastContentEditable;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -17985,7 +18262,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var RemoveFormat = {
</span><span class="cx" style="display: block; padding: 0 10px">       removeFormat: removeFormat,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      remove: remove$8
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      remove: remove$6
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var each$e = Tools.each;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -18421,7 +18698,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var FormatChanged = { formatChanged: formatChanged };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var get$8 = function (dom) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var get$5 = function (dom) {
</ins><span class="cx" style="display: block; padding: 0 10px">       var formats = {
</span><span class="cx" style="display: block; padding: 0 10px">         valigntop: [{
</span><span class="cx" style="display: block; padding: 0 10px">             selector: 'td,th',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -18664,7 +18941,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">       return formats;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var DefaultFormats = { get: get$8 };
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var DefaultFormats = { get: get$5 };
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     function FormatRegistry (editor) {
</span><span class="cx" style="display: block; padding: 0 10px">       var formats = {};
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -18945,7 +19222,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       selectorToHtml: selectorToHtml
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var toggle$3 = function (editor, formats, name, vars, node) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var toggle = function (editor, formats, name, vars, node) {
</ins><span class="cx" style="display: block; padding: 0 10px">       var fmt = formats.get(name);
</span><span class="cx" style="display: block; padding: 0 10px">       if (MatchFormat.match(editor, name, vars, node) && (!('toggle' in fmt[0]) || fmt[0].toggle)) {
</span><span class="cx" style="display: block; padding: 0 10px">         RemoveFormat.remove(editor, name, vars, node);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -18953,7 +19230,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         ApplyFormat.applyFormat(editor, name, vars, node);
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var ToggleFormat = { toggle: toggle$3 };
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var ToggleFormat = { toggle: toggle };
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var setup$6 = function (editor) {
</span><span class="cx" style="display: block; padding: 0 10px">       editor.addShortcut('meta+b', '', 'Bold');
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -18988,7 +19265,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var formats = FormatRegistry(editor);
</span><span class="cx" style="display: block; padding: 0 10px">       var formatChangeState = Cell(null);
</span><span class="cx" style="display: block; padding: 0 10px">       FormatShortcuts.setup(editor);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      setup$4(editor);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      setup$2(editor);
</ins><span class="cx" style="display: block; padding: 0 10px">       return {
</span><span class="cx" style="display: block; padding: 0 10px">         get: formats.get,
</span><span class="cx" style="display: block; padding: 0 10px">         register: formats.register,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -19076,7 +19353,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">         while (i--) {
</span><span class="cx" style="display: block; padding: 0 10px">           node = nodes[i];
</span><span class="cx" style="display: block; padding: 0 10px">           if (node.attributes.map['data-mce-type'] === 'bookmark' && !args.cleanup) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            node.remove();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            var hasChildren = Option.from(node.firstChild).exists(function (firstChild) {
+              return !Zwsp.isZwsp(firstChild.value);
+            });
+            if (hasChildren) {
+              node.unwrap();
+            } else {
+              node.remove();
+            }
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -19182,7 +19466,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var impl, doc, oldDoc;
</span><span class="cx" style="display: block; padding: 0 10px">       var dom = editor.dom;
</span><span class="cx" style="display: block; padding: 0 10px">       node = node.cloneNode(true);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      impl = document.implementation;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      impl = domGlobals.document.implementation;
</ins><span class="cx" style="display: block; padding: 0 10px">       if (impl.createHTMLDocument) {
</span><span class="cx" style="display: block; padding: 0 10px">         doc = impl.createHTMLDocument('');
</span><span class="cx" style="display: block; padding: 0 10px">         Tools.each(node.nodeName === 'BODY' ? node.childNodes : [node], function (node) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -19295,7 +19579,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var Node$2 = function () {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var Node$1 = function () {
</ins><span class="cx" style="display: block; padding: 0 10px">       function Node(name, type) {
</span><span class="cx" style="display: block; padding: 0 10px">         this.name = name;
</span><span class="cx" style="display: block; padding: 0 10px">         this.type = type;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -19548,9 +19832,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var paddEmptyNode = function (settings, args, blockElements, node) {
</span><span class="cx" style="display: block; padding: 0 10px">       var brPreferred = settings.padd_empty_with_br || args.insert;
</span><span class="cx" style="display: block; padding: 0 10px">       if (brPreferred && blockElements[node.name]) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        node.empty().append(new Node$2('br', 1)).shortEnded = true;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        node.empty().append(new Node$1('br', 1)).shortEnded = true;
</ins><span class="cx" style="display: block; padding: 0 10px">       } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        node.empty().append(new Node$2('#text', 3)).value = '\xA0';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        node.empty().append(new Node$1('#text', 3)).value = '\xA0';
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var isPaddedWithNbsp = function (node) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -19626,7 +19910,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                 parent = parent.parent;
</span><span class="cx" style="display: block; padding: 0 10px">               }
</span><span class="cx" style="display: block; padding: 0 10px">               if (lastParent === parent && settings.padd_empty_with_br !== true) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                textNode = new Node$2('#text', 3);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                textNode = new Node$1('#text', 3);
</ins><span class="cx" style="display: block; padding: 0 10px">                 textNode.value = '\xA0';
</span><span class="cx" style="display: block; padding: 0 10px">                 node.replace(textNode);
</span><span class="cx" style="display: block; padding: 0 10px">               }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -19686,7 +19970,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">               if (node.prev && node.prev.name === 'li') {
</span><span class="cx" style="display: block; padding: 0 10px">                 node.prev.append(node);
</span><span class="cx" style="display: block; padding: 0 10px">               } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                var li = new Node$2('li', 1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                var li = new Node$1('li', 1);
</ins><span class="cx" style="display: block; padding: 0 10px">                 li.attr('style', 'list-style-type: none');
</span><span class="cx" style="display: block; padding: 0 10px">                 node.wrap(li);
</span><span class="cx" style="display: block; padding: 0 10px">               }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -19813,11 +20097,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">                 sibling.insert(node, sibling.firstChild, true);
</span><span class="cx" style="display: block; padding: 0 10px">                 continue;
</span><span class="cx" style="display: block; padding: 0 10px">               }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              node.wrap(filterNode(new Node$2('ul', 1)));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              node.wrap(filterNode(new Node$1('ul', 1)));
</ins><span class="cx" style="display: block; padding: 0 10px">               continue;
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">             if (schema.isValidChild(node.parent.name, 'div') && schema.isValidChild('div', node.name)) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              node.wrap(filterNode(new Node$2('div', 1)));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              node.wrap(filterNode(new Node$1('div', 1)));
</ins><span class="cx" style="display: block; padding: 0 10px">             } else {
</span><span class="cx" style="display: block; padding: 0 10px">               if (specialElements[node.name]) {
</span><span class="cx" style="display: block; padding: 0 10px">                 node.empty().remove();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -19949,7 +20233,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">           trim(rootBlockNode);
</span><span class="cx" style="display: block; padding: 0 10px">         };
</span><span class="cx" style="display: block; padding: 0 10px">         var createNode = function (name, type) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          var node = new Node$2(name, type);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          var node = new Node$1(name, type);
</ins><span class="cx" style="display: block; padding: 0 10px">           var list;
</span><span class="cx" style="display: block; padding: 0 10px">           if (name in nodeFilters) {
</span><span class="cx" style="display: block; padding: 0 10px">             list = matchedNodes[name];
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -20138,7 +20422,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }, schema);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var rootNode = node = new Node$2(args.context || settings.root_name, 11);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var rootNode = node = new Node$1(args.context || settings.root_name, 11);
</ins><span class="cx" style="display: block; padding: 0 10px">         parser.parse(html);
</span><span class="cx" style="display: block; padding: 0 10px">         if (validate && invalidChildren.length) {
</span><span class="cx" style="display: block; padding: 0 10px">           if (!args.context) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -20217,7 +20501,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var getHtmlFromNode = function (dom, node, args) {
</span><span class="cx" style="display: block; padding: 0 10px">       var html = Zwsp.trim(args.getInner ? node.innerHTML : dom.getOuterHTML(node));
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return args.selection || isWsPreserveElement(Element$$1.fromDom(node)) ? html : Tools.trim(html);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return args.selection || isWsPreserveElement(Element.fromDom(node)) ? html : Tools.trim(html);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var parseHtml = function (htmlParser, html, args) {
</span><span class="cx" style="display: block; padding: 0 10px">       var parserArgs = args.selection ? merge({ forced_root_block: false }, args) : args;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -20226,7 +20510,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return rootNode;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var serializeNode = function (settings, schema, node) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var htmlSerializer = Serializer(settings, schema);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var htmlSerializer = HtmlSerializer(settings, schema);
</ins><span class="cx" style="display: block; padding: 0 10px">       return htmlSerializer.serialize(node);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var toHtml = function (editor, settings, schema, rootNode, args) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -20267,7 +20551,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">     }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    function Serializer$1 (settings, editor) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    function DomSerializer$1 (settings, editor) {
</ins><span class="cx" style="display: block; padding: 0 10px">       var domSerializer = DomSerializer(settings, editor);
</span><span class="cx" style="display: block; padding: 0 10px">       return {
</span><span class="cx" style="display: block; padding: 0 10px">         schema: domSerializer.schema,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -20293,10 +20577,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var BookmarkManager$1 = BookmarkManager;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var isContentEditableFalse$a = NodeType.isContentEditableFalse;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var isContentEditableTrue$6 = NodeType.isContentEditableTrue;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var isContentEditableTrue$5 = NodeType.isContentEditableTrue;
</ins><span class="cx" style="display: block; padding: 0 10px">     var getContentEditableRoot$2 = function (root, node) {
</span><span class="cx" style="display: block; padding: 0 10px">       while (node && node !== root) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (isContentEditableTrue$6(node) || isContentEditableFalse$a(node)) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (isContentEditableTrue$5(node) || isContentEditableFalse$a(node)) {
</ins><span class="cx" style="display: block; padding: 0 10px">           return node;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         node = node.parentNode;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -20308,7 +20592,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var selectedElm, selectedElmGhost, resizeHelper, resizeHandles, selectedHandle;
</span><span class="cx" style="display: block; padding: 0 10px">       var startX, startY, selectedElmX, selectedElmY, startW, startH, ratio, resizeStarted;
</span><span class="cx" style="display: block; padding: 0 10px">       var width, height;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var editableDoc = editor.getDoc(), rootDocument = document;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var editableDoc = editor.getDoc(), rootDocument = domGlobals.document;
</ins><span class="cx" style="display: block; padding: 0 10px">       var abs = Math.abs, round = Math.round, rootElement = editor.getBody();
</span><span class="cx" style="display: block; padding: 0 10px">       var startScrollWidth, startScrollHeight;
</span><span class="cx" style="display: block; padding: 0 10px">       resizeHandles = {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -20369,7 +20653,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         if (elm === editor.getBody()) {
</span><span class="cx" style="display: block; padding: 0 10px">           return false;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return is$1(Element$$1.fromDom(elm), selector);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return is$1(Element.fromDom(elm), selector);
</ins><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var resizeGhostElement = function (e) {
</span><span class="cx" style="display: block; padding: 0 10px">         var deltaX, deltaY, proportional;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -20429,12 +20713,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var endGhostResize = function () {
</span><span class="cx" style="display: block; padding: 0 10px">         resizeStarted = false;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var setSizeProp = function (name$$1, value) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var setSizeProp = function (name, value) {
</ins><span class="cx" style="display: block; padding: 0 10px">           if (value) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            if (selectedElm.style[name$$1] || !editor.schema.isValid(selectedElm.nodeName.toLowerCase(), name$$1)) {
-              dom.setStyle(getResizeTarget(selectedElm), name$$1, value);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            if (selectedElm.style[name] || !editor.schema.isValid(selectedElm.nodeName.toLowerCase(), name)) {
+              dom.setStyle(getResizeTarget(selectedElm), name, value);
</ins><span class="cx" style="display: block; padding: 0 10px">             } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              dom.setAttrib(getResizeTarget(selectedElm), name$$1, value);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              dom.setAttrib(getResizeTarget(selectedElm), name, value);
</ins><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -20469,7 +20753,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         e = editor.fire('ObjectSelected', { target: targetElm });
</span><span class="cx" style="display: block; padding: 0 10px">         if (isResizable(targetElm) && !e.isDefaultPrevented()) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          each(resizeHandles, function (handle, name$$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          each(resizeHandles, function (handle, name) {
</ins><span class="cx" style="display: block; padding: 0 10px">             var handleElm;
</span><span class="cx" style="display: block; padding: 0 10px">             var startDrag = function (e) {
</span><span class="cx" style="display: block; padding: 0 10px">               startX = e.screenX;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -20507,16 +20791,16 @@
</span><span class="cx" style="display: block; padding: 0 10px">                 'data-mce-bogus': 'all'
</span><span class="cx" style="display: block; padding: 0 10px">               }, startW + ' &times; ' + startH);
</span><span class="cx" style="display: block; padding: 0 10px">             };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            handleElm = dom.get('mceResizeHandle' + name$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            handleElm = dom.get('mceResizeHandle' + name);
</ins><span class="cx" style="display: block; padding: 0 10px">             if (handleElm) {
</span><span class="cx" style="display: block; padding: 0 10px">               dom.remove(handleElm);
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">             handleElm = dom.add(rootElement, 'div', {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              'id': 'mceResizeHandle' + name$$1,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              'id': 'mceResizeHandle' + name,
</ins><span class="cx" style="display: block; padding: 0 10px">               'data-mce-bogus': 'all',
</span><span class="cx" style="display: block; padding: 0 10px">               'class': 'mce-resizehandle',
</span><span class="cx" style="display: block; padding: 0 10px">               'unselectable': true,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              'style': 'cursor:' + name$$1 + '-resize; margin:0; padding:0'
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              'style': 'cursor:' + name + '-resize; margin:0; padding:0'
</ins><span class="cx" style="display: block; padding: 0 10px">             });
</span><span class="cx" style="display: block; padding: 0 10px">             if (Env.ie === 11) {
</span><span class="cx" style="display: block; padding: 0 10px">               handleElm.contentEditable = false;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -20538,13 +20822,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">         selectedElm.setAttribute('data-mce-selected', '1');
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var hideResizeRect = function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var name$$1, handleElm;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var name, handleElm;
</ins><span class="cx" style="display: block; padding: 0 10px">         unbindResizeHandleEvents();
</span><span class="cx" style="display: block; padding: 0 10px">         if (selectedElm) {
</span><span class="cx" style="display: block; padding: 0 10px">           selectedElm.removeAttribute('data-mce-selected');
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        for (name$$1 in resizeHandles) {
-          handleElm = dom.get('mceResizeHandle' + name$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        for (name in resizeHandles) {
+          handleElm = dom.get('mceResizeHandle' + name);
</ins><span class="cx" style="display: block; padding: 0 10px">           if (handleElm) {
</span><span class="cx" style="display: block; padding: 0 10px">             dom.unbind(handleElm);
</span><span class="cx" style="display: block; padding: 0 10px">             dom.remove(handleElm);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -20553,10 +20837,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var updateResizeRect = function (e) {
</span><span class="cx" style="display: block; padding: 0 10px">         var startElm, controlElm;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var isChildOrEqual = function (node, parent$$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var isChildOrEqual = function (node, parent) {
</ins><span class="cx" style="display: block; padding: 0 10px">           if (node) {
</span><span class="cx" style="display: block; padding: 0 10px">             do {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              if (node === parent$$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              if (node === parent) {
</ins><span class="cx" style="display: block; padding: 0 10px">                 return true;
</span><span class="cx" style="display: block; padding: 0 10px">               }
</span><span class="cx" style="display: block; padding: 0 10px">             } while (node = node.parentNode);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -20584,8 +20868,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return isContentEditableFalse$a(getContentEditableRoot$2(editor.getBody(), elm));
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var unbindResizeHandleEvents = function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        for (var name$$1 in resizeHandles) {
-          var handle = resizeHandles[name$$1];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        for (var name in resizeHandles) {
+          var handle = resizeHandles[name];
</ins><span class="cx" style="display: block; padding: 0 10px">           if (handle.elm) {
</span><span class="cx" style="display: block; padding: 0 10px">             dom.unbind(handle.elm);
</span><span class="cx" style="display: block; padding: 0 10px">             delete handle.elm;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -20819,20 +21103,20 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var CaretRangeFromPoint = { fromPoint: fromPoint$1 };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var processRanges = function (editor, ranges) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return map(ranges, function (range$$1) {
-        var evt = editor.fire('GetSelectionRange', { range: range$$1 });
-        return evt.range !== range$$1 ? evt.range : range$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return map(ranges, function (range) {
+        var evt = editor.fire('GetSelectionRange', { range: range });
+        return evt.range !== range ? evt.range : range;
</ins><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var EventProcessRanges = { processRanges: processRanges };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var fromElements = function (elements, scope) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var doc = scope || document;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var doc = scope || domGlobals.document;
</ins><span class="cx" style="display: block; padding: 0 10px">       var fragment = doc.createDocumentFragment();
</span><span class="cx" style="display: block; padding: 0 10px">       each(elements, function (element) {
</span><span class="cx" style="display: block; padding: 0 10px">         fragment.appendChild(element.dom());
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return Element$$1.fromDom(fragment);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return Element.fromDom(fragment);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var tableModel = Immutable('element', 'width', 'rows');
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -20839,7 +21123,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var tableRow = Immutable('element', 'cells');
</span><span class="cx" style="display: block; padding: 0 10px">     var cellPosition = Immutable('x', 'y');
</span><span class="cx" style="display: block; padding: 0 10px">     var getSpan = function (td, key) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var value = parseInt(get$1(td, key), 10);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var value = parseInt(get(td, key), 10);
</ins><span class="cx" style="display: block; padding: 0 10px">       return isNaN(value) ? 1 : value;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var fillout = function (table, x, y, tr, td) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -20902,7 +21186,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var createDomTable = function (table, rows) {
</span><span class="cx" style="display: block; padding: 0 10px">       var tableElement = shallow(table.element());
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var tableBody = Element$$1.fromTag('tbody');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var tableBody = Element.fromTag('tbody');
</ins><span class="cx" style="display: block; padding: 0 10px">       append$1(tableBody, rows);
</span><span class="cx" style="display: block; padding: 0 10px">       append(tableElement, tableBody);
</span><span class="cx" style="display: block; padding: 0 10px">       return tableElement;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -20920,7 +21204,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return tr;
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var fromDom$2 = function (tableElm) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var fromDom$1 = function (tableElm) {
</ins><span class="cx" style="display: block; padding: 0 10px">       var table = tableModel(shallow(tableElm), 0, []);
</span><span class="cx" style="display: block; padding: 0 10px">       each(descendants$1(tableElm, 'tr'), function (tr, y) {
</span><span class="cx" style="display: block; padding: 0 10px">         each(descendants$1(tr, 'td,th'), function (td, x) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -20940,24 +21224,24 @@
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var SimpleTableModel = {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      fromDom: fromDom$2,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      fromDom: fromDom$1,
</ins><span class="cx" style="display: block; padding: 0 10px">       toDom: toDom,
</span><span class="cx" style="display: block; padding: 0 10px">       subsection: subsection
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var findParentListContainer = function (parents$$1) {
-      return find(parents$$1, function (elm) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var findParentListContainer = function (parents) {
+      return find(parents, function (elm) {
</ins><span class="cx" style="display: block; padding: 0 10px">         return name(elm) === 'ul' || name(elm) === 'ol';
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var getFullySelectedListWrappers = function (parents$$1, rng) {
-      return find(parents$$1, function (elm) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var getFullySelectedListWrappers = function (parents, rng) {
+      return find(parents, function (elm) {
</ins><span class="cx" style="display: block; padding: 0 10px">         return name(elm) === 'li' && hasAllContentsSelected(elm, rng);
</span><span class="cx" style="display: block; padding: 0 10px">       }).fold(constant([]), function (li) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return findParentListContainer(parents$$1).map(function (listCont) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return findParentListContainer(parents).map(function (listCont) {
</ins><span class="cx" style="display: block; padding: 0 10px">           return [
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            Element$$1.fromTag('li'),
-            Element$$1.fromTag(name(listCont))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            Element.fromTag('li'),
+            Element.fromTag(name(listCont))
</ins><span class="cx" style="display: block; padding: 0 10px">           ];
</span><span class="cx" style="display: block; padding: 0 10px">         }).getOr([]);
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -20982,12 +21266,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var getWrapElements = function (rootNode, rng) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var commonAnchorContainer = Element$$1.fromDom(rng.commonAncestorContainer);
-      var parents$$1 = Parents.parentsAndSelf(commonAnchorContainer, rootNode);
-      var wrapElements = filter(parents$$1, function (elm) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var commonAnchorContainer = Element.fromDom(rng.commonAncestorContainer);
+      var parents = Parents.parentsAndSelf(commonAnchorContainer, rootNode);
+      var wrapElements = filter(parents, function (elm) {
</ins><span class="cx" style="display: block; padding: 0 10px">         return isInline(elm) || isHeading(elm);
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var listWrappers = getFullySelectedListWrappers(parents$$1, rng);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var listWrappers = getFullySelectedListWrappers(parents, rng);
</ins><span class="cx" style="display: block; padding: 0 10px">       var allWrappers = wrapElements.concat(listWrappers.length ? listWrappers : directListWrappers(commonAnchorContainer));
</span><span class="cx" style="display: block; padding: 0 10px">       return map(allWrappers, shallow);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -20995,7 +21279,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return fromElements([]);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var getFragmentFromRange = function (rootNode, rng) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return wrap$3(Element$$1.fromDom(rng.cloneContents()), getWrapElements(rootNode, rng));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return wrap$3(Element.fromDom(rng.cloneContents()), getWrapElements(rootNode, rng));
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var getParentTable = function (rootElm, cell) {
</span><span class="cx" style="display: block; padding: 0 10px">       return ancestor$1(cell, 'table', curry(eq, rootElm));
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -21020,8 +21304,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var FragmentReader = { read: read$4 };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var getTextContent = function (editor) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return Option.from(editor.selection.getRng()).map(function (r) {
-        return Zwsp.trim(r.toString());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return Option.from(editor.selection.getRng()).map(function (rng) {
+        var bin = editor.dom.add(editor.getBody(), 'div', {
+          'data-mce-bogus': 'all',
+          'style': 'overflow: hidden; opacity: 0;'
+        }, rng.cloneContents());
+        var text = Zwsp.trim(bin.innerText);
+        editor.dom.remove(bin);
+        return text;
</ins><span class="cx" style="display: block; padding: 0 10px">       }).getOr('');
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var getHtmlContent = function (editor, args) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -21029,13 +21319,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var sel = editor.selection.getSel();
</span><span class="cx" style="display: block; padding: 0 10px">       var fragment;
</span><span class="cx" style="display: block; padding: 0 10px">       var ranges = EventProcessRanges.processRanges(editor, MultiRange.getRanges(sel));
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      if (rng.cloneContents) {
-        fragment = args.contextual ? FragmentReader.read(Element$$1.fromDom(editor.getBody()), ranges).dom() : rng.cloneContents();
-        if (fragment) {
-          tmpElm.appendChild(fragment);
-        }
-      } else {
-        tmpElm.innerHTML = rng.toString();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      fragment = args.contextual ? FragmentReader.read(Element.fromDom(editor.getBody()), ranges).dom() : rng.cloneContents();
+      if (fragment) {
+        tmpElm.appendChild(fragment);
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       return editor.selection.serializer.serialize(tmpElm, args);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -21134,7 +21420,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var getEndpointElement = function (root, rng, start, real, resolve) {
</span><span class="cx" style="display: block; padding: 0 10px">       var container = start ? rng.startContainer : rng.endContainer;
</span><span class="cx" style="display: block; padding: 0 10px">       var offset = start ? rng.startOffset : rng.endOffset;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return Option.from(container).map(Element$$1.fromDom).map(function (elm) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return Option.from(container).map(Element.fromDom).map(function (elm) {
</ins><span class="cx" style="display: block; padding: 0 10px">         return !real || !rng.collapsed ? child(elm, resolve(elm, offset)).getOr(elm) : elm;
</span><span class="cx" style="display: block; padding: 0 10px">       }).bind(function (elm) {
</span><span class="cx" style="display: block; padding: 0 10px">         return isElement(elm) ? Option.some(elm) : parent(elm);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -21142,7 +21428,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return elm.dom();
</span><span class="cx" style="display: block; padding: 0 10px">       }).getOr(root);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var getStart$2 = function (root, rng, real) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var getStart = function (root, rng, real) {
</ins><span class="cx" style="display: block; padding: 0 10px">       return getEndpointElement(root, rng, true, real, function (elm, offset) {
</span><span class="cx" style="display: block; padding: 0 10px">         return Math.min(childNodesCount(elm), offset);
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -21202,7 +21488,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var node, root;
</span><span class="cx" style="display: block; padding: 0 10px">       var selectedBlocks = [];
</span><span class="cx" style="display: block; padding: 0 10px">       root = dom.getRoot();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      startElm = dom.getParent(startElm || getStart$2(root, rng, rng.collapsed), dom.isBlock);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      startElm = dom.getParent(startElm || getStart(root, rng, rng.collapsed), dom.isBlock);
</ins><span class="cx" style="display: block; padding: 0 10px">       endElm = dom.getParent(endElm || getEnd(root, rng, rng.collapsed), dom.isBlock);
</span><span class="cx" style="display: block; padding: 0 10px">       if (startElm && startElm !== root) {
</span><span class="cx" style="display: block; padding: 0 10px">         selectedBlocks.push(startElm);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -21240,7 +21526,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return !!rng.select;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var isAttachedToDom = function (node) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return !!(node && node.ownerDocument) && contains$3(Element$$1.fromDom(node.ownerDocument), Element$$1.fromDom(node));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return !!(node && node.ownerDocument) && contains$3(Element.fromDom(node.ownerDocument), Element.fromDom(node));
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var isValidRange = function (rng) {
</span><span class="cx" style="display: block; padding: 0 10px">       if (!rng) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -21272,10 +21558,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var setContent = function (content, args) {
</span><span class="cx" style="display: block; padding: 0 10px">         return SetSelectionContent.setContent(editor, content, args);
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var getStart = function (real) {
-        return getStart$2(editor.getBody(), getRng(), real);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var getStart$1 = function (real) {
+        return getStart(editor.getBody(), getRng(), real);
</ins><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var getEnd$$1 = function (real) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var getEnd$1 = function (real) {
</ins><span class="cx" style="display: block; padding: 0 10px">         return getEnd(editor.getBody(), getRng(), real);
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var getBookmark = function (type, normalized) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -21417,7 +21703,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var getNode = function () {
</span><span class="cx" style="display: block; padding: 0 10px">         return getNode$1(editor.getBody(), getRng());
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var getSelectedBlocks$$1 = function (startElm, endElm) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var getSelectedBlocks$1 = function (startElm, endElm) {
</ins><span class="cx" style="display: block; padding: 0 10px">         return getSelectedBlocks(dom, getRng(), startElm, endElm);
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var isForward = function () {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -21538,9 +21824,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">         getSel: getSel,
</span><span class="cx" style="display: block; padding: 0 10px">         setRng: setRng,
</span><span class="cx" style="display: block; padding: 0 10px">         getRng: getRng,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        getStart: getStart,
-        getEnd: getEnd$$1,
-        getSelectedBlocks: getSelectedBlocks$$1,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        getStart: getStart$1,
+        getEnd: getEnd$1,
+        getSelectedBlocks: getSelectedBlocks$1,
</ins><span class="cx" style="display: block; padding: 0 10px">         normalize: normalize,
</span><span class="cx" style="display: block; padding: 0 10px">         selectorChanged: selectorChanged,
</span><span class="cx" style="display: block; padding: 0 10px">         getScrollContainer: getScrollContainer,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -21556,74 +21842,171 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return exports;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var isContentEditableFalse$b = NodeType.isContentEditableFalse;
-    var getSelectedNode$1 = getSelectedNode;
-    var isAfterContentEditableFalse$2 = isAfterContentEditableFalse;
-    var isBeforeContentEditableFalse$2 = isBeforeContentEditableFalse;
-    var getVisualCaretPosition = function (walkFn, caretPosition) {
-      while (caretPosition = walkFn(caretPosition)) {
-        if (caretPosition.isVisible()) {
-          return caretPosition;
-        }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var BreakType;
+    (function (BreakType) {
+      BreakType[BreakType['Br'] = 0] = 'Br';
+      BreakType[BreakType['Block'] = 1] = 'Block';
+      BreakType[BreakType['Wrap'] = 2] = 'Wrap';
+      BreakType[BreakType['Eol'] = 3] = 'Eol';
+    }(BreakType || (BreakType = {})));
+    var flip = function (direction, positions) {
+      return direction === HDirection.Backwards ? positions.reverse() : positions;
+    };
+    var walk$3 = function (direction, caretWalker, pos) {
+      return direction === HDirection.Forwards ? caretWalker.next(pos) : caretWalker.prev(pos);
+    };
+    var getBreakType = function (scope, direction, currentPos, nextPos) {
+      if (NodeType.isBr(nextPos.getNode(direction === HDirection.Forwards))) {
+        return BreakType.Br;
+      } else if (isInSameBlock(currentPos, nextPos) === false) {
+        return BreakType.Block;
+      } else {
+        return BreakType.Wrap;
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return caretPosition;
</del><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var isMoveInsideSameBlock = function (from, to) {
-      var inSameBlock = isInSameBlock(from, to);
-      if (!inSameBlock && NodeType.isBr(from.getNode())) {
-        return true;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var getPositionsUntil = function (predicate, direction, scope, start) {
+      var caretWalker = CaretWalker(scope);
+      var currentPos = start, nextPos;
+      var positions = [];
+      while (currentPos) {
+        nextPos = walk$3(direction, caretWalker, currentPos);
+        if (!nextPos) {
+          break;
+        }
+        if (NodeType.isBr(nextPos.getNode(false))) {
+          if (direction === HDirection.Forwards) {
+            return {
+              positions: flip(direction, positions).concat([nextPos]),
+              breakType: BreakType.Br,
+              breakAt: Option.some(nextPos)
+            };
+          } else {
+            return {
+              positions: flip(direction, positions),
+              breakType: BreakType.Br,
+              breakAt: Option.some(nextPos)
+            };
+          }
+        }
+        if (!nextPos.isVisible()) {
+          currentPos = nextPos;
+          continue;
+        }
+        if (predicate(currentPos, nextPos)) {
+          var breakType = getBreakType(scope, direction, currentPos, nextPos);
+          return {
+            positions: flip(direction, positions),
+            breakType: breakType,
+            breakAt: Option.some(nextPos)
+          };
+        }
+        positions.push(nextPos);
+        currentPos = nextPos;
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return inSameBlock;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return {
+        positions: flip(direction, positions),
+        breakType: BreakType.Eol,
+        breakAt: Option.none()
+      };
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var moveToCeFalseHorizontally = function (direction, editor, getNextPosFn, range$$1) {
-      var node, caretPosition, peekCaretPosition, rangeIsInContainerBlock;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var getAdjacentLinePositions = function (direction, getPositionsUntilBreak, scope, start) {
+      return getPositionsUntilBreak(scope, start).breakAt.map(function (pos) {
+        var positions = getPositionsUntilBreak(scope, pos).positions;
+        return direction === HDirection.Backwards ? positions.concat(pos) : [pos].concat(positions);
+      }).getOr([]);
+    };
+    var findClosestHorizontalPositionFromPoint = function (positions, x) {
+      return foldl(positions, function (acc, newPos) {
+        return acc.fold(function () {
+          return Option.some(newPos);
+        }, function (lastPos) {
+          return liftN([
+            head(lastPos.getClientRects()),
+            head(newPos.getClientRects())
+          ], function (lastRect, newRect) {
+            var lastDist = Math.abs(x - lastRect.left);
+            var newDist = Math.abs(x - newRect.left);
+            return newDist <= lastDist ? newPos : lastPos;
+          }).or(acc);
+        });
+      }, Option.none());
+    };
+    var findClosestHorizontalPosition = function (positions, pos) {
+      return head(pos.getClientRects()).bind(function (targetRect) {
+        return findClosestHorizontalPositionFromPoint(positions, targetRect.left);
+      });
+    };
+    var getPositionsUntilPreviousLine = curry(getPositionsUntil, CaretPosition.isAbove, -1);
+    var getPositionsUntilNextLine = curry(getPositionsUntil, CaretPosition.isBelow, 1);
+    var isAtFirstLine = function (scope, pos) {
+      return getPositionsUntilPreviousLine(scope, pos).breakAt.isNone();
+    };
+    var isAtLastLine = function (scope, pos) {
+      return getPositionsUntilNextLine(scope, pos).breakAt.isNone();
+    };
+    var getPositionsAbove = curry(getAdjacentLinePositions, -1, getPositionsUntilPreviousLine);
+    var getPositionsBelow = curry(getAdjacentLinePositions, 1, getPositionsUntilNextLine);
+    var getFirstLinePositions = function (scope) {
+      return CaretFinder.firstPositionIn(scope).map(function (pos) {
+        return [pos].concat(getPositionsUntilNextLine(scope, pos).positions);
+      }).getOr([]);
+    };
+    var getLastLinePositions = function (scope) {
+      return CaretFinder.lastPositionIn(scope).map(function (pos) {
+        return getPositionsUntilPreviousLine(scope, pos).positions.concat(pos);
+      }).getOr([]);
+    };
+
+    var isContentEditableFalse$b = NodeType.isContentEditableFalse;
+    var getSelectedNode$1 = getSelectedNode;
+    var moveToCeFalseHorizontally = function (direction, editor, getNextPosFn, range) {
</ins><span class="cx" style="display: block; padding: 0 10px">       var forwards = direction === HDirection.Forwards;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var isBeforeContentEditableFalseFn = forwards ? isBeforeContentEditableFalse$2 : isAfterContentEditableFalse$2;
-      if (!range$$1.collapsed) {
-        node = getSelectedNode$1(range$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var isBeforeContentEditableFalseFn = forwards ? isBeforeContentEditableFalse : isAfterContentEditableFalse;
+      if (!range.collapsed) {
+        var node = getSelectedNode$1(range);
</ins><span class="cx" style="display: block; padding: 0 10px">         if (isContentEditableFalse$b(node)) {
</span><span class="cx" style="display: block; padding: 0 10px">           return showCaret(direction, editor, node, direction === HDirection.Backwards, true);
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      rangeIsInContainerBlock = isRangeInCaretContainerBlock(range$$1);
-      caretPosition = getNormalizedRangeEndPoint(direction, editor.getBody(), range$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var rangeIsInContainerBlock = isRangeInCaretContainerBlock(range);
+      var caretPosition = getNormalizedRangeEndPoint(direction, editor.getBody(), range);
</ins><span class="cx" style="display: block; padding: 0 10px">       if (isBeforeContentEditableFalseFn(caretPosition)) {
</span><span class="cx" style="display: block; padding: 0 10px">         return selectNode(editor, caretPosition.getNode(!forwards));
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      caretPosition = getNextPosFn(caretPosition);
-      if (!caretPosition) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var nextCaretPosition = InlineUtils.normalizePosition(forwards, getNextPosFn(caretPosition));
+      if (!nextCaretPosition) {
</ins><span class="cx" style="display: block; padding: 0 10px">         if (rangeIsInContainerBlock) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          return range$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          return range;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         return null;
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      if (isBeforeContentEditableFalseFn(caretPosition)) {
-        return showCaret(direction, editor, caretPosition.getNode(!forwards), forwards, true);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      if (isBeforeContentEditableFalseFn(nextCaretPosition)) {
+        return showCaret(direction, editor, nextCaretPosition.getNode(!forwards), forwards, true);
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      peekCaretPosition = getNextPosFn(caretPosition);
-      if (isBeforeContentEditableFalseFn(peekCaretPosition)) {
-        if (isMoveInsideSameBlock(caretPosition, peekCaretPosition)) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var peekCaretPosition = getNextPosFn(nextCaretPosition);
+      if (peekCaretPosition && isBeforeContentEditableFalseFn(peekCaretPosition)) {
+        if (isMoveInsideSameBlock(nextCaretPosition, peekCaretPosition)) {
</ins><span class="cx" style="display: block; padding: 0 10px">           return showCaret(direction, editor, peekCaretPosition.getNode(!forwards), forwards, true);
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       if (rangeIsInContainerBlock) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return renderRangeCaret(editor, caretPosition.toRange(), true);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return renderRangeCaret(editor, nextCaretPosition.toRange(), true);
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       return null;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var moveToCeFalseVertically = function (direction, editor, walkerFn, range$$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var moveToCeFalseVertically = function (direction, editor, walkerFn, range) {
</ins><span class="cx" style="display: block; padding: 0 10px">       var caretPosition, linePositions, nextLinePositions;
</span><span class="cx" style="display: block; padding: 0 10px">       var closestNextLineRect, caretClientRect, clientX;
</span><span class="cx" style="display: block; padding: 0 10px">       var dist1, dist2, contentEditableFalseNode;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      contentEditableFalseNode = getSelectedNode$1(range$$1);
-      caretPosition = getNormalizedRangeEndPoint(direction, editor.getBody(), range$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      contentEditableFalseNode = getSelectedNode$1(range);
+      caretPosition = getNormalizedRangeEndPoint(direction, editor.getBody(), range);
</ins><span class="cx" style="display: block; padding: 0 10px">       linePositions = walkerFn(editor.getBody(), isAboveLine(1), caretPosition);
</span><span class="cx" style="display: block; padding: 0 10px">       nextLinePositions = filter(linePositions, isLine(1));
</span><span class="cx" style="display: block; padding: 0 10px">       caretClientRect = ArrUtils.last(caretPosition.getClientRects());
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      if (isBeforeContentEditableFalse$2(caretPosition) || isBeforeTable(caretPosition)) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      if (isBeforeContentEditableFalse(caretPosition) || isBeforeTable(caretPosition)) {
</ins><span class="cx" style="display: block; padding: 0 10px">         contentEditableFalseNode = caretPosition.getNode();
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      if (isAfterContentEditableFalse$2(caretPosition) || isAfterTable(caretPosition)) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      if (isAfterContentEditableFalse(caretPosition) || isAfterTable(caretPosition)) {
</ins><span class="cx" style="display: block; padding: 0 10px">         contentEditableFalseNode = caretPosition.getNode(true);
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       if (!caretClientRect) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -21651,26 +22034,26 @@
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var createTextBlock = function (editor) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var textBlock = editor.dom.create(editor.settings.forced_root_block);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var textBlock = editor.dom.create(Settings.getForcedRootBlock(editor));
</ins><span class="cx" style="display: block; padding: 0 10px">       if (!Env.ie || Env.ie >= 11) {
</span><span class="cx" style="display: block; padding: 0 10px">         textBlock.innerHTML = '<br data-mce-bogus="1">';
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       return textBlock;
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var exitPreBlock = function (editor, direction, range$$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var exitPreBlock = function (editor, direction, range) {
</ins><span class="cx" style="display: block; padding: 0 10px">       var pre, caretPos, newBlock;
</span><span class="cx" style="display: block; padding: 0 10px">       var caretWalker = CaretWalker(editor.getBody());
</span><span class="cx" style="display: block; padding: 0 10px">       var getNextVisualCaretPosition = curry(getVisualCaretPosition, caretWalker.next);
</span><span class="cx" style="display: block; padding: 0 10px">       var getPrevVisualCaretPosition = curry(getVisualCaretPosition, caretWalker.prev);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      if (range$$1.collapsed && editor.settings.forced_root_block) {
-        pre = editor.dom.getParent(range$$1.startContainer, 'PRE');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      if (range.collapsed && editor.settings.forced_root_block) {
+        pre = editor.dom.getParent(range.startContainer, 'PRE');
</ins><span class="cx" style="display: block; padding: 0 10px">         if (!pre) {
</span><span class="cx" style="display: block; padding: 0 10px">           return;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (direction === 1) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          caretPos = getNextVisualCaretPosition(CaretPosition$1.fromRangeStart(range$$1));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          caretPos = getNextVisualCaretPosition(CaretPosition$1.fromRangeStart(range));
</ins><span class="cx" style="display: block; padding: 0 10px">         } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          caretPos = getPrevVisualCaretPosition(CaretPosition$1.fromRangeStart(range$$1));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          caretPos = getPrevVisualCaretPosition(CaretPosition$1.fromRangeStart(range));
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (!caretPos) {
</span><span class="cx" style="display: block; padding: 0 10px">           newBlock = createTextBlock(editor);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -21691,12 +22074,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var newRange;
</span><span class="cx" style="display: block; padding: 0 10px">       var direction = forward ? HDirection.Forwards : HDirection.Backwards;
</span><span class="cx" style="display: block; padding: 0 10px">       var getNextPosFn = forward ? getNextVisualCaretPosition : getPrevVisualCaretPosition;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var range$$1 = editor.selection.getRng();
-      newRange = moveToCeFalseHorizontally(direction, editor, getNextPosFn, range$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var range = editor.selection.getRng();
+      newRange = moveToCeFalseHorizontally(direction, editor, getNextPosFn, range);
</ins><span class="cx" style="display: block; padding: 0 10px">       if (newRange) {
</span><span class="cx" style="display: block; padding: 0 10px">         return newRange;
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      newRange = exitPreBlock(editor, direction, range$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      newRange = exitPreBlock(editor, direction, range);
</ins><span class="cx" style="display: block; padding: 0 10px">       if (newRange) {
</span><span class="cx" style="display: block; padding: 0 10px">         return newRange;
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -21706,12 +22089,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var newRange;
</span><span class="cx" style="display: block; padding: 0 10px">       var direction = down ? 1 : -1;
</span><span class="cx" style="display: block; padding: 0 10px">       var walkerFn = down ? downUntil : upUntil;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var range$$1 = editor.selection.getRng();
-      newRange = moveToCeFalseVertically(direction, editor, walkerFn, range$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var range = editor.selection.getRng();
+      newRange = moveToCeFalseVertically(direction, editor, walkerFn, range);
</ins><span class="cx" style="display: block; padding: 0 10px">       if (newRange) {
</span><span class="cx" style="display: block; padding: 0 10px">         return newRange;
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      newRange = exitPreBlock(editor, direction, range$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      newRange = exitPreBlock(editor, direction, range);
</ins><span class="cx" style="display: block; padding: 0 10px">       if (newRange) {
</span><span class="cx" style="display: block; padding: 0 10px">         return newRange;
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -21739,121 +22122,22 @@
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
-    var BreakType;
-    (function (BreakType) {
-      BreakType[BreakType['Br'] = 0] = 'Br';
-      BreakType[BreakType['Block'] = 1] = 'Block';
-      BreakType[BreakType['Wrap'] = 2] = 'Wrap';
-      BreakType[BreakType['Eol'] = 3] = 'Eol';
-    }(BreakType || (BreakType = {})));
-    var flip = function (direction, positions) {
-      return direction === HDirection.Backwards ? positions.reverse() : positions;
-    };
-    var walk$3 = function (direction, caretWalker, pos) {
-      return direction === HDirection.Forwards ? caretWalker.next(pos) : caretWalker.prev(pos);
-    };
-    var getBreakType = function (scope, direction, currentPos, nextPos) {
-      if (NodeType.isBr(nextPos.getNode(direction === HDirection.Forwards))) {
-        return BreakType.Br;
-      } else if (isInSameBlock(currentPos, nextPos) === false) {
-        return BreakType.Block;
-      } else {
-        return BreakType.Wrap;
-      }
-    };
-    var getPositionsUntil = function (predicate, direction, scope, start) {
-      var caretWalker = CaretWalker(scope);
-      var currentPos = start, nextPos;
-      var positions = [];
-      while (currentPos) {
-        nextPos = walk$3(direction, caretWalker, currentPos);
-        if (!nextPos) {
-          break;
-        }
-        if (NodeType.isBr(nextPos.getNode(false))) {
-          if (direction === HDirection.Forwards) {
-            return {
-              positions: flip(direction, positions).concat([nextPos]),
-              breakType: BreakType.Br,
-              breakAt: Option.some(nextPos)
-            };
-          } else {
-            return {
-              positions: flip(direction, positions),
-              breakType: BreakType.Br,
-              breakAt: Option.some(nextPos)
-            };
-          }
-        }
-        if (!nextPos.isVisible()) {
-          currentPos = nextPos;
-          continue;
-        }
-        if (predicate(currentPos, nextPos)) {
-          var breakType = getBreakType(scope, direction, currentPos, nextPos);
-          return {
-            positions: flip(direction, positions),
-            breakType: breakType,
-            breakAt: Option.some(nextPos)
-          };
-        }
-        positions.push(nextPos);
-        currentPos = nextPos;
-      }
-      return {
-        positions: flip(direction, positions),
-        breakType: BreakType.Eol,
-        breakAt: Option.none()
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var isCefPosition = function (forward) {
+      return function (pos) {
+        return forward ? isAfterContentEditableFalse(pos) : isBeforeContentEditableFalse(pos);
</ins><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var getAdjacentLinePositions = function (direction, getPositionsUntilBreak, scope, start) {
-      return getPositionsUntilBreak(scope, start).breakAt.map(function (pos) {
-        var positions = getPositionsUntilBreak(scope, pos).positions;
-        return direction === HDirection.Backwards ? positions.concat(pos) : [pos].concat(positions);
-      }).getOr([]);
-    };
-    var findClosestHorizontalPositionFromPoint = function (positions, x) {
-      return foldl(positions, function (acc, newPos) {
-        return acc.fold(function () {
-          return Option.some(newPos);
-        }, function (lastPos) {
-          return liftN([
-            head(lastPos.getClientRects()),
-            head(newPos.getClientRects())
-          ], function (lastRect, newRect) {
-            var lastDist = Math.abs(x - lastRect.left);
-            var newDist = Math.abs(x - newRect.left);
-            return newDist <= lastDist ? newPos : lastPos;
-          }).or(acc);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var moveToLineEndPoint = function (editor, forward) {
+      return function () {
+        var from = forward ? CaretPosition$1.fromRangeEnd(editor.selection.getRng()) : CaretPosition$1.fromRangeStart(editor.selection.getRng());
+        var result = forward ? getPositionsUntilNextLine(editor.getBody(), from) : getPositionsUntilPreviousLine(editor.getBody(), from);
+        var to = forward ? last(result.positions) : head(result.positions);
+        return to.filter(isCefPosition(forward)).fold(constant(false), function (pos) {
+          editor.selection.setRng(pos.toRange());
+          return true;
</ins><span class="cx" style="display: block; padding: 0 10px">         });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      }, Option.none());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      };
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var findClosestHorizontalPosition = function (positions, pos) {
-      return head(pos.getClientRects()).bind(function (targetRect) {
-        return findClosestHorizontalPositionFromPoint(positions, targetRect.left);
-      });
-    };
-    var getPositionsUntilPreviousLine = curry(getPositionsUntil, CaretPosition.isAbove, -1);
-    var getPositionsUntilNextLine = curry(getPositionsUntil, CaretPosition.isBelow, 1);
-    var isAtFirstLine = function (scope, pos) {
-      return getPositionsUntilPreviousLine(scope, pos).breakAt.isNone();
-    };
-    var isAtLastLine = function (scope, pos) {
-      return getPositionsUntilNextLine(scope, pos).breakAt.isNone();
-    };
-    var getPositionsAbove = curry(getAdjacentLinePositions, -1, getPositionsUntilPreviousLine);
-    var getPositionsBelow = curry(getAdjacentLinePositions, 1, getPositionsUntilNextLine);
-    var getFirstLinePositions = function (scope) {
-      return CaretFinder.firstPositionIn(scope).map(function (pos) {
-        return [pos].concat(getPositionsUntilNextLine(scope, pos).positions);
-      }).getOr([]);
-    };
-    var getLastLinePositions = function (scope) {
-      return CaretFinder.lastPositionIn(scope).map(function (pos) {
-        return getPositionsUntilPreviousLine(scope, pos).positions.concat(pos);
-      }).getOr([]);
-    };
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var deflate = function (rect, delta) {
</span><span class="cx" style="display: block; padding: 0 10px">       return {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -21867,7 +22151,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var getCorners = function (getYAxisValue, tds) {
</span><span class="cx" style="display: block; padding: 0 10px">       return bind(tds, function (td) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var rect = deflate(clone$2(td.getBoundingClientRect()), -1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var rect = deflate(clone$1(td.getBoundingClientRect()), -1);
</ins><span class="cx" style="display: block; padding: 0 10px">         return [
</span><span class="cx" style="display: block; padding: 0 10px">           {
</span><span class="cx" style="display: block; padding: 0 10px">             x: rect.left,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -21894,7 +22178,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       }, Option.none());
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var getClosestCell$1 = function (getYAxisValue, isTargetCorner, table, x, y) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var cells = descendants$1(Element$$1.fromDom(table), 'td,th,caption').map(function (e) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var cells = descendants$1(Element.fromDom(table), 'td,th,caption').map(function (e) {
</ins><span class="cx" style="display: block; padding: 0 10px">         return e.dom();
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">       var corners = filter(getCorners(getYAxisValue, cells), function (corner) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -21996,13 +22280,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var forcedRootBlock = Settings.getForcedRootBlock(editor);
</span><span class="cx" style="display: block; padding: 0 10px">       if (forcedRootBlock) {
</span><span class="cx" style="display: block; padding: 0 10px">         editor.undoManager.transact(function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          var element = Element$$1.fromTag(forcedRootBlock);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          var element = Element.fromTag(forcedRootBlock);
</ins><span class="cx" style="display: block; padding: 0 10px">           setAll(element, Settings.getForcedRootBlockAttrs(editor));
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          append(element, Element$$1.fromTag('br'));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          append(element, Element.fromTag('br'));
</ins><span class="cx" style="display: block; padding: 0 10px">           if (down) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            after(Element$$1.fromDom(table), element);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            after(Element.fromDom(table), element);
</ins><span class="cx" style="display: block; padding: 0 10px">           } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            before(Element$$1.fromDom(table), element);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            before(Element.fromDom(table), element);
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           var rng = editor.dom.createRng();
</span><span class="cx" style="display: block; padding: 0 10px">           rng.setStart(element.dom(), 0);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -22015,11 +22299,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var moveCaret = function (editor, down, pos) {
</span><span class="cx" style="display: block; padding: 0 10px">       var table = down ? getTable(true, pos) : getTable(false, pos);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var last$$1 = down === false;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var last = down === false;
</ins><span class="cx" style="display: block; padding: 0 10px">       table.fold(function () {
</span><span class="cx" style="display: block; padding: 0 10px">         return moveToRange(editor, pos.toRange());
</span><span class="cx" style="display: block; padding: 0 10px">       }, function (table) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return CaretFinder.positionIn(last$$1, editor.getBody()).filter(function (lastPos) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return CaretFinder.positionIn(last, editor.getBody()).filter(function (lastPos) {
</ins><span class="cx" style="display: block; padding: 0 10px">           return lastPos.isEqual(pos);
</span><span class="cx" style="display: block; padding: 0 10px">         }).fold(function () {
</span><span class="cx" style="display: block; padding: 0 10px">           return moveToRange(editor, pos.toRange());
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -22067,7 +22351,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return contains(['figcaption'], name(node));
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var rangeBefore = function (target) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var rng = document.createRange();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var rng = domGlobals.document.createRange();
</ins><span class="cx" style="display: block; padding: 0 10px">       rng.setStartBefore(target.dom());
</span><span class="cx" style="display: block; padding: 0 10px">       rng.setEndBefore(target.dom());
</span><span class="cx" style="display: block; padding: 0 10px">       return rng;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -22080,13 +22364,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var insertBr = function (root, forward) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var br = Element$$1.fromTag('br');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var br = Element.fromTag('br');
</ins><span class="cx" style="display: block; padding: 0 10px">       insertElement(root, br, forward);
</span><span class="cx" style="display: block; padding: 0 10px">       return rangeBefore(br);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var insertBlock$1 = function (root, forward, blockName, attrs) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var block = Element$$1.fromTag(blockName);
-      var br = Element$$1.fromTag('br');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var block = Element.fromTag(blockName);
+      var br = Element.fromTag('br');
</ins><span class="cx" style="display: block; padding: 0 10px">       setAll(block, attrs);
</span><span class="cx" style="display: block; padding: 0 10px">       append(block, br);
</span><span class="cx" style="display: block; padding: 0 10px">       insertElement(root, block, forward);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -22101,13 +22385,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var getClosestTargetBlock = function (pos, root) {
</span><span class="cx" style="display: block; padding: 0 10px">       var isRoot = curry(eq, root);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return closest(Element$$1.fromDom(pos.container()), isBlock, isRoot).filter(isTarget);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return closest(Element.fromDom(pos.container()), isBlock, isRoot).filter(isTarget);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var isAtFirstOrLastLine = function (root, forward, pos) {
</span><span class="cx" style="display: block; padding: 0 10px">       return forward ? isAtLastLine(root.dom(), pos) : isAtFirstLine(root.dom(), pos);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var moveCaretToNewEmptyLine = function (editor, forward) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var root = Element$$1.fromDom(editor.getBody());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var root = Element.fromDom(editor.getBody());
</ins><span class="cx" style="display: block; padding: 0 10px">       var pos = CaretPosition$1.fromRangeStart(editor.selection.getRng());
</span><span class="cx" style="display: block; padding: 0 10px">       var rootBlock = Settings.getForcedRootBlock(editor);
</span><span class="cx" style="display: block; padding: 0 10px">       var rootBlockAttrs = Settings.getForcedRootBlockAttrs(editor);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -22248,46 +22532,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var ArrowKeys = { setup: setup$7 };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var getParentInlines = function (rootElm, startElm) {
-      var parents$$1 = Parents.parentsAndSelf(startElm, rootElm);
-      return findIndex(parents$$1, isBlock).fold(constant(parents$$1), function (index) {
-        return parents$$1.slice(0, index);
-      });
-    };
-    var hasOnlyOneChild$1 = function (elm) {
-      return children(elm).length === 1;
-    };
-    var deleteLastPosition = function (forward, editor, target, parentInlines) {
-      var isFormatElement$$1 = curry(isFormatElement, editor);
-      var formatNodes = map(filter(parentInlines, isFormatElement$$1), function (elm) {
-        return elm.dom();
-      });
-      if (formatNodes.length === 0) {
-        DeleteElement.deleteElement(editor, forward, target);
-      } else {
-        var pos = replaceWithCaretFormat(target.dom(), formatNodes);
-        editor.selection.setRng(pos.toRange());
-      }
-    };
-    var deleteCaret$1 = function (editor, forward) {
-      var rootElm = Element$$1.fromDom(editor.getBody());
-      var startElm = Element$$1.fromDom(editor.selection.getStart());
-      var parentInlines = filter(getParentInlines(rootElm, startElm), hasOnlyOneChild$1);
-      return last(parentInlines).map(function (target) {
-        var fromPos = CaretPosition$1.fromRangeStart(editor.selection.getRng());
-        if (DeleteUtils.willDeleteLastPositionInElement(forward, fromPos, target.dom()) && !isEmptyCaretFormatElement(target)) {
-          deleteLastPosition(forward, editor, target, parentInlines);
-          return true;
-        } else {
-          return false;
-        }
-      }).getOr(false);
-    };
-    var backspaceDelete$5 = function (editor, forward) {
-      return editor.selection.isCollapsed() ? deleteCaret$1(editor, forward) : false;
-    };
-    var InlineFormatDelete = { backspaceDelete: backspaceDelete$5 };
-
</del><span class="cx" style="display: block; padding: 0 10px">     var executeKeydownOverride$1 = function (editor, caret, evt) {
</span><span class="cx" style="display: block; padding: 0 10px">       MatchKeys.execute([
</span><span class="cx" style="display: block; padding: 0 10px">         {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -22300,6 +22544,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">         },
</span><span class="cx" style="display: block; padding: 0 10px">         {
</span><span class="cx" style="display: block; padding: 0 10px">           keyCode: VK.BACKSPACE,
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          action: MatchKeys.action(CefBoundaryDelete.backspaceDelete, editor, false)
+        },
+        {
+          keyCode: VK.DELETE,
+          action: MatchKeys.action(CefBoundaryDelete.backspaceDelete, editor, true)
+        },
+        {
+          keyCode: VK.BACKSPACE,
</ins><span class="cx" style="display: block; padding: 0 10px">           action: MatchKeys.action(InlineBoundaryDelete.backspaceDelete, editor, caret, false)
</span><span class="cx" style="display: block; padding: 0 10px">         },
</span><span class="cx" style="display: block; padding: 0 10px">         {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -22451,7 +22703,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var isListItemParentBlock = function (editor) {
</span><span class="cx" style="display: block; padding: 0 10px">       return getParentBlock$2(editor).filter(function (elm) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return isListItem(Element$$1.fromDom(elm));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return isListItem(Element.fromDom(elm));
</ins><span class="cx" style="display: block; padding: 0 10px">       }).isSome();
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var NewLineUtils = {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -22537,7 +22789,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var InsertLi = { insert: insert$1 };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var trimZwsp = function (fragment) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      each(descendants(Element$$1.fromDom(fragment), isText), function (text) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      each(descendants(Element.fromDom(fragment), isText), function (text) {
</ins><span class="cx" style="display: block; padding: 0 10px">         var rawNode = text.dom();
</span><span class="cx" style="display: block; padding: 0 10px">         rawNode.nodeValue = Zwsp.trim(rawNode.nodeValue);
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -22683,11 +22935,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var dom = editor.dom;
</span><span class="cx" style="display: block; padding: 0 10px">       var schema = editor.schema, nonEmptyElementsMap = schema.getNonEmptyElements();
</span><span class="cx" style="display: block; padding: 0 10px">       var rng = editor.selection.getRng();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var createNewBlock = function (name$$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var createNewBlock = function (name) {
</ins><span class="cx" style="display: block; padding: 0 10px">         var node = container, block, clonedNode, caretNode;
</span><span class="cx" style="display: block; padding: 0 10px">         var textInlineElements = schema.getTextInlineElements();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (name$$1 || parentBlockName === 'TABLE' || parentBlockName === 'HR') {
-          block = dom.create(name$$1 || newBlockName);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (name || parentBlockName === 'TABLE' || parentBlockName === 'HR') {
+          block = dom.create(name || newBlockName);
</ins><span class="cx" style="display: block; padding: 0 10px">           setForcedBlockAttrs(editor, block);
</span><span class="cx" style="display: block; padding: 0 10px">         } else {
</span><span class="cx" style="display: block; padding: 0 10px">           block = parentBlock.cloneNode(false);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -22699,7 +22951,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         } else {
</span><span class="cx" style="display: block; padding: 0 10px">           do {
</span><span class="cx" style="display: block; padding: 0 10px">             if (textInlineElements[node.nodeName]) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              if (isCaretNode(node)) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              if (isCaretNode(node) || Bookmarks.isBookmarkNode(node)) {
</ins><span class="cx" style="display: block; padding: 0 10px">                 continue;
</span><span class="cx" style="display: block; padding: 0 10px">               }
</span><span class="cx" style="display: block; padding: 0 10px">               clonedNode = node.cloneNode(false);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -22718,7 +22970,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return block;
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var isCaretAtStartOrEndOfBlock = function (start) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var walker, node, name$$1, normalizedOffset;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var walker, node, name, normalizedOffset;
</ins><span class="cx" style="display: block; padding: 0 10px">         normalizedOffset = normalizeZwspOffset(start, container, offset);
</span><span class="cx" style="display: block; padding: 0 10px">         if (NodeType.isText(container) && (start ? normalizedOffset > 0 : normalizedOffset < container.nodeValue.length)) {
</span><span class="cx" style="display: block; padding: 0 10px">           return false;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -22743,8 +22995,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">         while (node = walker.current()) {
</span><span class="cx" style="display: block; padding: 0 10px">           if (NodeType.isElement(node)) {
</span><span class="cx" style="display: block; padding: 0 10px">             if (!node.getAttribute('data-mce-bogus')) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              name$$1 = node.nodeName.toLowerCase();
-              if (nonEmptyElementsMap[name$$1] && name$$1 !== 'br') {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              name = node.nodeName.toLowerCase();
+              if (nonEmptyElementsMap[name] && name !== 'br') {
</ins><span class="cx" style="display: block; padding: 0 10px">                 return false;
</span><span class="cx" style="display: block; padding: 0 10px">               }
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -22854,7 +23106,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var matchesSelector = function (editor, selector) {
</span><span class="cx" style="display: block; padding: 0 10px">       return NewLineUtils.getParentBlock(editor).filter(function (parentBlock) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return selector.length > 0 && is$1(Element$$1.fromDom(parentBlock), selector);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return selector.length > 0 && is$1(Element.fromDom(parentBlock), selector);
</ins><span class="cx" style="display: block; padding: 0 10px">       }).isSome();
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var shouldInsertBr = function (editor) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -23014,7 +23266,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return Option.some(CaretPosition(container, offset + text.length));
</span><span class="cx" style="display: block; padding: 0 10px">       } else {
</span><span class="cx" style="display: block; padding: 0 10px">         return getElementFromPosition(pos).map(function (elm) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          var textNode = Element$$1.fromText(text);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          var textNode = Element.fromText(text);
</ins><span class="cx" style="display: block; padding: 0 10px">           if (pos.isAtEnd()) {
</span><span class="cx" style="display: block; padding: 0 10px">             after(elm, textNode);
</span><span class="cx" style="display: block; padding: 0 10px">           } else {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -23027,14 +23279,17 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var insertNbspAtPosition = curry(insertTextAtPosition, '\xA0');
</span><span class="cx" style="display: block; padding: 0 10px">     var insertSpaceAtPosition = curry(insertTextAtPosition, ' ');
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var navigateIgnoreEmptyTextNodes = function (forward, root, from) {
+      return CaretFinder.navigateIgnore(forward, root, from, isEmptyText);
+    };
</ins><span class="cx" style="display: block; padding: 0 10px">     var isAtBlockBoundary = function (forward, root, pos) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var parentBlocks = filter(Parents.parentsAndSelf(Element$$1.fromDom(pos.container()), root), isBlock);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var parentBlocks = filter(Parents.parentsAndSelf(Element.fromDom(pos.container()), root), isBlock);
</ins><span class="cx" style="display: block; padding: 0 10px">       return head(parentBlocks).fold(function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return CaretFinder.navigate(forward, root.dom(), pos).forall(function (newPos) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return navigateIgnoreEmptyTextNodes(forward, root.dom(), pos).forall(function (newPos) {
</ins><span class="cx" style="display: block; padding: 0 10px">           return isInSameBlock(newPos, pos, root.dom()) === false;
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><span class="cx" style="display: block; padding: 0 10px">       }, function (parent) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return CaretFinder.navigate(forward, parent.dom(), pos).isNone();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return navigateIgnoreEmptyTextNodes(forward, parent.dom(), pos).isNone();
</ins><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var isAtStartOfBlock = curry(isAtBlockBoundary, false);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -23045,7 +23300,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return CaretPosition.isTextPosition(pos) && !pos.isAtStart() && !pos.isAtEnd();
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var getClosestBlock = function (root, pos) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var parentBlocks = filter(Parents.parentsAndSelf(Element$$1.fromDom(pos.container()), root), isBlock);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var parentBlocks = filter(Parents.parentsAndSelf(Element.fromDom(pos.container()), root), isBlock);
</ins><span class="cx" style="display: block; padding: 0 10px">       return head(parentBlocks).getOr(root);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var hasSpaceBefore = function (root, pos) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -23062,18 +23317,18 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return isBeforeSpace(pos) || CaretFinder.nextPosition(getClosestBlock(root, pos).dom(), pos).exists(isBeforeSpace);
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var isPreValue = function (value$$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var isPreValue = function (value) {
</ins><span class="cx" style="display: block; padding: 0 10px">       return contains([
</span><span class="cx" style="display: block; padding: 0 10px">         'pre',
</span><span class="cx" style="display: block; padding: 0 10px">         'pre-line',
</span><span class="cx" style="display: block; padding: 0 10px">         'pre-wrap'
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      ], value$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      ], value);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var isInPre = function (pos) {
</span><span class="cx" style="display: block; padding: 0 10px">       return getElementFromPosition(pos).bind(function (elm) {
</span><span class="cx" style="display: block; padding: 0 10px">         return closest(elm, isElement);
</span><span class="cx" style="display: block; padding: 0 10px">       }).exists(function (elm) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return isPreValue(get$2(elm, 'white-space'));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return isPreValue(get$1(elm, 'white-space'));
</ins><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var isAtBeginningOfBody = function (root, pos) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -23099,13 +23354,26 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return isAtStartOfBlock(root, pos) || isAfterBr(root, pos) || hasSpaceBefore(root, pos);
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var leanRight = function (pos) {
+      var container = pos.container();
+      var offset = pos.offset();
+      if (NodeType.isText(container) && offset < container.data.length) {
+        return CaretPosition(container, offset + 1);
+      } else {
+        return pos;
+      }
+    };
</ins><span class="cx" style="display: block; padding: 0 10px">     var needsToBeNbspRight = function (root, pos) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      if (isInPre(pos)) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var afterPos = leanRight(pos);
+      if (isInPre(afterPos)) {
</ins><span class="cx" style="display: block; padding: 0 10px">         return false;
</span><span class="cx" style="display: block; padding: 0 10px">       } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return isAtEndOfBlock(root, pos) || isBeforeBr(root, pos) || hasSpaceAfter(root, pos);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return isAtEndOfBlock(root, afterPos) || isBeforeBr(root, afterPos) || hasSpaceAfter(root, afterPos);
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var needsToBeNbsp = function (root, pos) {
+      return needsToBeNbspLeft(root, pos) || needsToBeNbspRight(root, pos);
+    };
</ins><span class="cx" style="display: block; padding: 0 10px">     var isNbspAt = function (text, offset) {
</span><span class="cx" style="display: block; padding: 0 10px">       return isNbsp(text.charAt(offset));
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -23113,17 +23381,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var container = pos.container();
</span><span class="cx" style="display: block; padding: 0 10px">       return NodeType.isText(container) && contains$2(container.data, nbsp);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var normalizeNbspAtStart = function (root, node, text) {
-      var firstPos = CaretPosition(node, 0);
-      if (isNbspAt(text, 0) && !needsToBeNbspLeft(root, firstPos)) {
-        return ' ' + text.slice(1);
-      } else {
-        return text;
-      }
-    };
</del><span class="cx" style="display: block; padding: 0 10px">     var normalizeNbspMiddle = function (text) {
</span><span class="cx" style="display: block; padding: 0 10px">       return map(text.split(''), function (chr, i, chars) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (isNbsp(chr) && i > 0 && i < chars.length - 1 && isContent(chars[i - 1]) && isContent(chars[i + 1])) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (isNbsp(chr) && i > 0 && i < chars.length - 1 && isContent$1(chars[i - 1]) && isContent$1(chars[i + 1])) {
</ins><span class="cx" style="display: block; padding: 0 10px">           return ' ';
</span><span class="cx" style="display: block; padding: 0 10px">         } else {
</span><span class="cx" style="display: block; padding: 0 10px">           return chr;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -23130,29 +23390,45 @@
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       }).join('');
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var normalizeNbspAtEnd = function (root, node, text) {
-      var lastPos = CaretPosition(node, text.length);
-      if (isNbspAt(text, text.length - 1) && !needsToBeNbspRight(root, lastPos)) {
-        return text.slice(0, -1) + ' ';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var normalizeNbspAtStart = function (root, node) {
+      var text = node.data;
+      var firstPos = CaretPosition(node, 0);
+      if (isNbspAt(text, 0) && !needsToBeNbsp(root, firstPos)) {
+        node.data = ' ' + text.slice(1);
+        return true;
</ins><span class="cx" style="display: block; padding: 0 10px">       } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return text;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return false;
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var normalizeNbspInMiddleOfTextNode = function (node) {
+      var text = node.data;
+      var newText = normalizeNbspMiddle(text);
+      if (newText !== text) {
+        node.data = newText;
+        return true;
+      } else {
+        return false;
+      }
+    };
+    var normalizeNbspAtEnd = function (root, node) {
+      var text = node.data;
+      var lastPos = CaretPosition(node, text.length - 1);
+      if (isNbspAt(text, text.length - 1) && !needsToBeNbsp(root, lastPos)) {
+        node.data = text.slice(0, -1) + ' ';
+        return true;
+      } else {
+        return false;
+      }
+    };
</ins><span class="cx" style="display: block; padding: 0 10px">     var normalizeNbsps = function (root, pos) {
</span><span class="cx" style="display: block; padding: 0 10px">       return Option.some(pos).filter(hasNbsp).bind(function (pos) {
</span><span class="cx" style="display: block; padding: 0 10px">         var container = pos.container();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var text = container.nodeValue;
-        var newText = normalizeNbspAtStart(root, container, normalizeNbspMiddle(normalizeNbspAtEnd(root, container, text)));
-        if (text !== newText) {
-          pos.container().nodeValue = newText;
-          return Option.some(pos);
-        } else {
-          return Option.none();
-        }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var normalized = normalizeNbspAtStart(root, container) || normalizeNbspInMiddleOfTextNode(container) || normalizeNbspAtEnd(root, container);
+        return normalized ? Option.some(pos) : Option.none();
</ins><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var normalizeNbspsInEditor = function (editor) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var root = Element$$1.fromDom(editor.getBody());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var root = Element.fromDom(editor.getBody());
</ins><span class="cx" style="display: block; padding: 0 10px">       if (editor.selection.isCollapsed()) {
</span><span class="cx" style="display: block; padding: 0 10px">         normalizeNbsps(root, CaretPosition.fromRangeStart(editor.selection.getRng())).each(function (pos) {
</span><span class="cx" style="display: block; padding: 0 10px">           editor.selection.setRng(pos.toRange());
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -23187,7 +23463,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var insertSpaceOrNbspAtSelection = function (editor) {
</span><span class="cx" style="display: block; padding: 0 10px">       var pos = CaretPosition$1.fromRangeStart(editor.selection.getRng());
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var root = Element$$1.fromDom(editor.getBody());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var root = Element.fromDom(editor.getBody());
</ins><span class="cx" style="display: block; padding: 0 10px">       if (editor.selection.isCollapsed()) {
</span><span class="cx" style="display: block; padding: 0 10px">         var isInlineTarget = curry(InlineUtils.isInlineTarget, editor);
</span><span class="cx" style="display: block; padding: 0 10px">         var caretPosition = CaretPosition$1.fromRangeStart(editor.selection.getRng());
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -23215,7 +23491,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var SpaceKey = { setup: setup$a };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var findBlockCaretContainer = function (editor) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return descendant$1(Element$$1.fromDom(editor.getBody()), '*[data-mce-caret]').fold(constant(null), function (elm) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return descendant(Element.fromDom(editor.getBody()), '*[data-mce-caret]').fold(constant(null), function (elm) {
</ins><span class="cx" style="display: block; padding: 0 10px">         return elm.dom();
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -23252,7 +23528,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var browser$4 = PlatformDetection$1.detect().browser;
</span><span class="cx" style="display: block; padding: 0 10px">     var setupIeInput = function (editor) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var keypressThrotter = first$1(function () {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var keypressThrotter = first(function () {
</ins><span class="cx" style="display: block; padding: 0 10px">         if (!editor.composing) {
</span><span class="cx" style="display: block; padding: 0 10px">           normalizeNbspsInEditor(editor);
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -23275,7 +23551,30 @@
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var executeKeydownOverride$3 = function (editor, evt) {
+      MatchKeys.execute([
+        {
+          keyCode: VK.END,
+          action: moveToLineEndPoint(editor, true)
+        },
+        {
+          keyCode: VK.HOME,
+          action: moveToLineEndPoint(editor, false)
+        }
+      ], evt).each(function (_) {
+        evt.preventDefault();
+      });
+    };
</ins><span class="cx" style="display: block; padding: 0 10px">     var setup$d = function (editor) {
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      editor.on('keydown', function (evt) {
+        if (evt.isDefaultPrevented() === false) {
+          executeKeydownOverride$3(editor, evt);
+        }
+      });
+    };
+    var HomeEndKeys = { setup: setup$d };
+
+    var setup$e = function (editor) {
</ins><span class="cx" style="display: block; padding: 0 10px">       var caret = BoundarySelection.setupSelectedState(editor);
</span><span class="cx" style="display: block; padding: 0 10px">       CaretContainerInput.setup(editor);
</span><span class="cx" style="display: block; padding: 0 10px">       ArrowKeys.setup(editor, caret);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -23283,8 +23582,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">       EnterKey.setup(editor);
</span><span class="cx" style="display: block; padding: 0 10px">       SpaceKey.setup(editor);
</span><span class="cx" style="display: block; padding: 0 10px">       setup$c(editor);
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      HomeEndKeys.setup(editor);
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var KeyboardOverrides = { setup: setup$d };
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var KeyboardOverrides = { setup: setup$e };
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     function Quirks (editor) {
</span><span class="cx" style="display: block; padding: 0 10px">       var each = Tools.each;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -23420,7 +23720,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var focusBody = function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (!Range.prototype.getClientRects) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (!domGlobals.Range.prototype.getClientRects) {
</ins><span class="cx" style="display: block; padding: 0 10px">           editor.on('mousedown', function (e) {
</span><span class="cx" style="display: block; padding: 0 10px">             if (!isDefaultPrevented(e) && e.target.nodeName === 'HTML') {
</span><span class="cx" style="display: block; padding: 0 10px">               var body_1 = editor.getBody();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -23497,7 +23797,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       var removeBlockQuoteOnBackSpace = function () {
</span><span class="cx" style="display: block; padding: 0 10px">         editor.on('keydown', function (e) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          var rng, container, offset, root, parent$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          var rng, container, offset, root, parent;
</ins><span class="cx" style="display: block; padding: 0 10px">           if (isDefaultPrevented(e) || e.keyCode !== VK.BACKSPACE) {
</span><span class="cx" style="display: block; padding: 0 10px">             return;
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -23505,15 +23805,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">           container = rng.startContainer;
</span><span class="cx" style="display: block; padding: 0 10px">           offset = rng.startOffset;
</span><span class="cx" style="display: block; padding: 0 10px">           root = dom.getRoot();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          parent$$1 = container;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          parent = container;
</ins><span class="cx" style="display: block; padding: 0 10px">           if (!rng.collapsed || offset !== 0) {
</span><span class="cx" style="display: block; padding: 0 10px">             return;
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          while (parent$$1 && parent$$1.parentNode && parent$$1.parentNode.firstChild === parent$$1 && parent$$1.parentNode !== root) {
-            parent$$1 = parent$$1.parentNode;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          while (parent && parent.parentNode && parent.parentNode.firstChild === parent && parent.parentNode !== root) {
+            parent = parent.parentNode;
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (parent$$1.tagName === 'BLOCKQUOTE') {
-            editor.formatter.toggle('blockquote', null, parent$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (parent.tagName === 'BLOCKQUOTE') {
+            editor.formatter.toggle('blockquote', null, parent);
</ins><span class="cx" style="display: block; padding: 0 10px">             rng = dom.createRng();
</span><span class="cx" style="display: block; padding: 0 10px">             rng.setStart(container, 0);
</span><span class="cx" style="display: block; padding: 0 10px">             rng.setEnd(container, 0);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -23575,7 +23875,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var restoreFocusOnKeyDown = function () {
</span><span class="cx" style="display: block; padding: 0 10px">         if (!editor.inline) {
</span><span class="cx" style="display: block; padding: 0 10px">           editor.on('keydown', function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            if (document.activeElement === document.body) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            if (domGlobals.document.activeElement === domGlobals.document.body) {
</ins><span class="cx" style="display: block; padding: 0 10px">               editor.getWin().focus();
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           });
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -23714,7 +24014,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var isTextBlockNode = function (node) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return NodeType.isElement(node) && isTextBlock(Element$$1.fromDom(node));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return NodeType.isElement(node) && isTextBlock(Element.fromDom(node));
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var normalizeSelection$1 = function (editor) {
</span><span class="cx" style="display: block; padding: 0 10px">       var rng = editor.selection.getRng();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -23738,7 +24038,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       editor.selection.setRng(RangeNormalizer.normalize(rng));
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var setup$e = function (editor) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var setup$f = function (editor) {
</ins><span class="cx" style="display: block; padding: 0 10px">       editor.on('click', function (e) {
</span><span class="cx" style="display: block; padding: 0 10px">         if (e.detail >= 3) {
</span><span class="cx" style="display: block; padding: 0 10px">           normalizeSelection$1(editor);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -23768,7 +24068,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var setup$f = function (editor) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var setup$g = function (editor) {
</ins><span class="cx" style="display: block; padding: 0 10px">       preventSummaryToggle(editor);
</span><span class="cx" style="display: block; padding: 0 10px">       filterDetails(editor);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -23775,38 +24075,38 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var DOM$2 = DOMUtils$1.DOM;
</span><span class="cx" style="display: block; padding: 0 10px">     var appendStyle = function (editor, text) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var head = Element$$1.fromDom(editor.getDoc().head);
-      var tag = Element$$1.fromTag('style');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var head = Element.fromDom(editor.getDoc().head);
+      var tag = Element.fromTag('style');
</ins><span class="cx" style="display: block; padding: 0 10px">       set(tag, 'type', 'text/css');
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      append(tag, Element$$1.fromText(text));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      append(tag, Element.fromText(text));
</ins><span class="cx" style="display: block; padding: 0 10px">       append(head, tag);
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var createParser = function (editor) {
</span><span class="cx" style="display: block; padding: 0 10px">       var parser = DomParser(editor.settings, editor.schema);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      parser.addAttributeFilter('src,href,style,tabindex', function (nodes, name$$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      parser.addAttributeFilter('src,href,style,tabindex', function (nodes, name) {
</ins><span class="cx" style="display: block; padding: 0 10px">         var i = nodes.length, node;
</span><span class="cx" style="display: block; padding: 0 10px">         var dom = editor.dom;
</span><span class="cx" style="display: block; padding: 0 10px">         var value, internalName;
</span><span class="cx" style="display: block; padding: 0 10px">         while (i--) {
</span><span class="cx" style="display: block; padding: 0 10px">           node = nodes[i];
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          value = node.attr(name$$1);
-          internalName = 'data-mce-' + name$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          value = node.attr(name);
+          internalName = 'data-mce-' + name;
</ins><span class="cx" style="display: block; padding: 0 10px">           if (!node.attributes.map[internalName]) {
</span><span class="cx" style="display: block; padding: 0 10px">             if (value.indexOf('data:') === 0 || value.indexOf('blob:') === 0) {
</span><span class="cx" style="display: block; padding: 0 10px">               continue;
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            if (name$$1 === 'style') {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            if (name === 'style') {
</ins><span class="cx" style="display: block; padding: 0 10px">               value = dom.serializeStyle(dom.parseStyle(value), node.name);
</span><span class="cx" style="display: block; padding: 0 10px">               if (!value.length) {
</span><span class="cx" style="display: block; padding: 0 10px">                 value = null;
</span><span class="cx" style="display: block; padding: 0 10px">               }
</span><span class="cx" style="display: block; padding: 0 10px">               node.attr(internalName, value);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              node.attr(name$$1, value);
-            } else if (name$$1 === 'tabindex') {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              node.attr(name, value);
+            } else if (name === 'tabindex') {
</ins><span class="cx" style="display: block; padding: 0 10px">               node.attr(internalName, value);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              node.attr(name$$1, null);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              node.attr(name, null);
</ins><span class="cx" style="display: block; padding: 0 10px">             } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              node.attr(internalName, editor.convertURL(value, name$$1, node.name));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              node.attr(internalName, editor.convertURL(value, name, node.name));
</ins><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -23836,7 +24136,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         while (i--) {
</span><span class="cx" style="display: block; padding: 0 10px">           node = nodes[i];
</span><span class="cx" style="display: block; padding: 0 10px">           if (node.isEmpty(nonEmptyElements) && node.getAll('br').length === 0) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            node.append(new Node$2('br', 1)).shortEnded = true;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            node.append(new Node$1('br', 1)).shortEnded = true;
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -23889,8 +24189,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">           DOM$2.setAttrib(bodyEl, 'contentEditable', null);
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><span class="cx" style="display: block; padding: 0 10px">         DOM$2.addClass(targetElm, 'mce-content-body');
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        editor.contentDocument = doc = settings.content_document || document;
-        editor.contentWindow = settings.content_window || window;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        editor.contentDocument = doc = settings.content_document || domGlobals.document;
+        editor.contentWindow = settings.content_window || domGlobals.window;
</ins><span class="cx" style="display: block; padding: 0 10px">         editor.bodyElement = targetElm;
</span><span class="cx" style="display: block; padding: 0 10px">         settings.content_document = settings.content_window = null;
</span><span class="cx" style="display: block; padding: 0 10px">         settings.root_name = targetElm.nodeName.toLowerCase();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -23923,7 +24223,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">       editor.parser = createParser(editor);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      editor.serializer = Serializer$1(settings, editor);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      editor.serializer = DomSerializer$1(settings, editor);
</ins><span class="cx" style="display: block; padding: 0 10px">       editor.selection = Selection(editor.dom, editor.getWin(), editor.serializer, editor);
</span><span class="cx" style="display: block; padding: 0 10px">       editor.annotator = Annotator(editor);
</span><span class="cx" style="display: block; padding: 0 10px">       editor.formatter = Formatter(editor);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -23930,8 +24230,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">       editor.undoManager = UndoManager(editor);
</span><span class="cx" style="display: block; padding: 0 10px">       editor._nodeChangeDispatcher = new NodeChange(editor);
</span><span class="cx" style="display: block; padding: 0 10px">       editor._selectionOverrides = SelectionOverrides(editor);
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      setup$g(editor);
</ins><span class="cx" style="display: block; padding: 0 10px">       setup$f(editor);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      setup$e(editor);
</del><span class="cx" style="display: block; padding: 0 10px">       KeyboardOverrides.setup(editor);
</span><span class="cx" style="display: block; padding: 0 10px">       ForceBlocks.setup(editor);
</span><span class="cx" style="display: block; padding: 0 10px">       editor.fire('PreInit');
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -23987,12 +24287,12 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var DOM$3 = DOMUtils$1.DOM;
</span><span class="cx" style="display: block; padding: 0 10px">     var relaxDomain = function (editor, ifr) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      if (document.domain !== window.location.hostname && Env.ie && Env.ie < 12) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      if (domGlobals.document.domain !== domGlobals.window.location.hostname && Env.ie && Env.ie < 12) {
</ins><span class="cx" style="display: block; padding: 0 10px">         var bodyUuid = Uuid.uuid('mce');
</span><span class="cx" style="display: block; padding: 0 10px">         editor[bodyUuid] = function () {
</span><span class="cx" style="display: block; padding: 0 10px">           InitContentBody.initContentBody(editor);
</span><span class="cx" style="display: block; padding: 0 10px">         };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var domainRelaxUrl = 'javascript:(function(){' + 'document.open();document.domain="' + document.domain + '";' + 'var ed = window.parent.tinymce.get("' + editor.id + '");document.write(ed.iframeHTML);' + 'document.close();ed.' + bodyUuid + '(true);})()';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var domainRelaxUrl = 'javascript:(function(){' + 'document.open();document.domain="' + domGlobals.document.domain + '";' + 'var ed = window.parent.tinymce.get("' + editor.id + '");document.write(ed.iframeHTML);' + 'document.close();ed.' + bodyUuid + '(true);})()';
</ins><span class="cx" style="display: block; padding: 0 10px">         DOM$3.setAttrib(ifr, 'src', domainRelaxUrl);
</span><span class="cx" style="display: block; padding: 0 10px">         return true;
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -24003,7 +24303,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return normalizedHeight ? normalizedHeight : '';
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var createIframeElement = function (id, title, height, customAttrs) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var iframe = Element$$1.fromTag('iframe');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var iframe = Element.fromTag('iframe');
</ins><span class="cx" style="display: block; padding: 0 10px">       setAll(iframe, customAttrs);
</span><span class="cx" style="display: block; padding: 0 10px">       setAll(iframe, {
</span><span class="cx" style="display: block; padding: 0 10px">         id: id + '_ifr',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -24064,8 +24364,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var DOM$4 = DOMUtils$1.DOM;
</span><span class="cx" style="display: block; padding: 0 10px">     var initPlugin = function (editor, initializedPlugins, plugin) {
</span><span class="cx" style="display: block; padding: 0 10px">       var Plugin = PluginManager$1.get(plugin);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var pluginUrl, pluginInstance;
-      pluginUrl = PluginManager$1.urls[plugin] || editor.documentBaseUrl.replace(/\/$/, '');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var pluginUrl = PluginManager$1.urls[plugin] || editor.documentBaseUrl.replace(/\/$/, '');
</ins><span class="cx" style="display: block; padding: 0 10px">       plugin = Tools.trim(plugin);
</span><span class="cx" style="display: block; padding: 0 10px">       if (Plugin && Tools.inArray(initializedPlugins, plugin) === -1) {
</span><span class="cx" style="display: block; padding: 0 10px">         Tools.each(PluginManager$1.dependencies(plugin), function (dep) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -24074,11 +24373,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">         if (editor.plugins[plugin]) {
</span><span class="cx" style="display: block; padding: 0 10px">           return;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        pluginInstance = new Plugin(editor, pluginUrl, editor.$);
-        editor.plugins[plugin] = pluginInstance;
-        if (pluginInstance.init) {
-          pluginInstance.init(editor, pluginUrl);
-          initializedPlugins.push(plugin);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        try {
+          var pluginInstance = new Plugin(editor, pluginUrl, editor.$);
+          editor.plugins[plugin] = pluginInstance;
+          if (pluginInstance.init) {
+            pluginInstance.init(editor, pluginUrl);
+            initializedPlugins.push(plugin);
+          }
+        } catch (e) {
+          ErrorReporter.pluginInitError(editor, plugin, e);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -24200,8 +24503,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var Init = { init: init$2 };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var DOM$5 = DOMUtils$1.DOM;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var hasSkipLoadPrefix = function (name$$1) {
-      return name$$1.charAt(0) === '-';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var hasSkipLoadPrefix = function (name) {
+      return name.charAt(0) === '-';
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var loadLanguage = function (scriptLoader, editor) {
</span><span class="cx" style="display: block; padding: 0 10px">       var settings = editor.settings;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -24234,9 +24537,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">       if (Tools.isArray(settings.plugins)) {
</span><span class="cx" style="display: block; padding: 0 10px">         settings.plugins = settings.plugins.join(' ');
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      Tools.each(settings.external_plugins, function (url, name$$1) {
-        PluginManager$1.load(name$$1, url);
-        settings.plugins += ' ' + name$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      Tools.each(settings.external_plugins, function (url, name) {
+        PluginManager$1.load(name, url);
+        settings.plugins += ' ' + name;
</ins><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">       Tools.each(settings.plugins.split(/[ ,]/), function (plugin) {
</span><span class="cx" style="display: block; padding: 0 10px">         plugin = Tools.trim(plugin);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -24283,11 +24586,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">     var render = function (editor) {
</span><span class="cx" style="display: block; padding: 0 10px">       var settings = editor.settings, id = editor.id;
</span><span class="cx" style="display: block; padding: 0 10px">       var readyHandler = function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        DOM$5.unbind(window, 'ready', readyHandler);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        DOM$5.unbind(domGlobals.window, 'ready', readyHandler);
</ins><span class="cx" style="display: block; padding: 0 10px">         editor.render();
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><span class="cx" style="display: block; padding: 0 10px">       if (!EventUtils.Event.domLoaded) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        DOM$5.bind(window, 'ready', readyHandler);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        DOM$5.bind(domGlobals.window, 'ready', readyHandler);
</ins><span class="cx" style="display: block; padding: 0 10px">         return;
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       if (!editor.getElement()) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -24380,13 +24683,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">       mailto: 25
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var URI = function (url, settings) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">       var baseUri, baseUrl;
</span><span class="cx" style="display: block; padding: 0 10px">       url = trim$4(url);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      settings = self$$1.settings = settings || {};
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      settings = self.settings = settings || {};
</ins><span class="cx" style="display: block; padding: 0 10px">       baseUri = settings.base_uri;
</span><span class="cx" style="display: block; padding: 0 10px">       if (/^([\w\-]+):([^\/]{2})/i.test(url) || /^\s*#/.test(url)) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.source = url;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.source = url;
</ins><span class="cx" style="display: block; padding: 0 10px">         return;
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       var isProtocolRelative = url.indexOf('//') === 0;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -24394,12 +24697,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">         url = (baseUri ? baseUri.protocol || 'http' : 'http') + '://mce_host' + url;
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       if (!/^[\w\-]*:?\/\//.test(url)) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        baseUrl = settings.base_uri ? settings.base_uri.path : new URI(document.location.href).directory;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        baseUrl = settings.base_uri ? settings.base_uri.path : new URI(domGlobals.document.location.href).directory;
</ins><span class="cx" style="display: block; padding: 0 10px">         if (settings.base_uri.protocol == '') {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          url = '//mce_host' + self$$1.toAbsPath(baseUrl, url);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          url = '//mce_host' + self.toAbsPath(baseUrl, url);
</ins><span class="cx" style="display: block; padding: 0 10px">         } else {
</span><span class="cx" style="display: block; padding: 0 10px">           url = /([^#?]*)([#?]?.*)/.exec(url);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          url = (baseUri && baseUri.protocol || 'http') + '://mce_host' + self$$1.toAbsPath(baseUrl, url[1]) + url[2];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          url = (baseUri && baseUri.protocol || 'http') + '://mce_host' + self.toAbsPath(baseUrl, url[1]) + url[2];
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       url = url.replace(/@@/g, '(mce_at)');
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -24409,52 +24712,52 @@
</span><span class="cx" style="display: block; padding: 0 10px">         if (part) {
</span><span class="cx" style="display: block; padding: 0 10px">           part = part.replace(/\(mce_at\)/g, '@@');
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1[v] = part;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self[v] = part;
</ins><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">       if (baseUri) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (!self$$1.protocol) {
-          self$$1.protocol = baseUri.protocol;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (!self.protocol) {
+          self.protocol = baseUri.protocol;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (!self$$1.userInfo) {
-          self$$1.userInfo = baseUri.userInfo;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (!self.userInfo) {
+          self.userInfo = baseUri.userInfo;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (!self$$1.port && self$$1.host === 'mce_host') {
-          self$$1.port = baseUri.port;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (!self.port && self.host === 'mce_host') {
+          self.port = baseUri.port;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (!self$$1.host || self$$1.host === 'mce_host') {
-          self$$1.host = baseUri.host;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (!self.host || self.host === 'mce_host') {
+          self.host = baseUri.host;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.source = '';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.source = '';
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       if (isProtocolRelative) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.protocol = '';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.protocol = '';
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     URI.prototype = {
</span><span class="cx" style="display: block; padding: 0 10px">       setPath: function (path) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">         path = /^(.*?)\/?(\w+)?$/.exec(path);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.path = path[0];
-        self$$1.directory = path[1];
-        self$$1.file = path[2];
-        self$$1.source = '';
-        self$$1.getURI();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.path = path[0];
+        self.directory = path[1];
+        self.file = path[2];
+        self.source = '';
+        self.getURI();
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       toRelative: function (uri) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">         var output;
</span><span class="cx" style="display: block; padding: 0 10px">         if (uri === './') {
</span><span class="cx" style="display: block; padding: 0 10px">           return uri;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        uri = new URI(uri, { base_uri: self$$1 });
-        if (uri.host !== 'mce_host' && self$$1.host !== uri.host && uri.host || self$$1.port !== uri.port || self$$1.protocol !== uri.protocol && uri.protocol !== '') {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        uri = new URI(uri, { base_uri: self });
+        if (uri.host !== 'mce_host' && self.host !== uri.host && uri.host || self.port !== uri.port || self.protocol !== uri.protocol && uri.protocol !== '') {
</ins><span class="cx" style="display: block; padding: 0 10px">           return uri.getURI();
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var tu = self$$1.getURI(), uu = uri.getURI();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var tu = self.getURI(), uu = uri.getURI();
</ins><span class="cx" style="display: block; padding: 0 10px">         if (tu === uu || tu.charAt(tu.length - 1) === '/' && tu.substr(0, tu.length - 1) === uu) {
</span><span class="cx" style="display: block; padding: 0 10px">           return tu;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        output = self$$1.toRelPath(self$$1.path, uri.path);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        output = self.toRelPath(self.path, uri.path);
</ins><span class="cx" style="display: block; padding: 0 10px">         if (uri.query) {
</span><span class="cx" style="display: block; padding: 0 10px">           output += '?' + uri.query;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -24556,37 +24859,37 @@
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       getURI: function (noProtoHost) {
</span><span class="cx" style="display: block; padding: 0 10px">         var s;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        if (!self$$1.source || noProtoHost) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        if (!self.source || noProtoHost) {
</ins><span class="cx" style="display: block; padding: 0 10px">           s = '';
</span><span class="cx" style="display: block; padding: 0 10px">           if (!noProtoHost) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            if (self$$1.protocol) {
-              s += self$$1.protocol + '://';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            if (self.protocol) {
+              s += self.protocol + '://';
</ins><span class="cx" style="display: block; padding: 0 10px">             } else {
</span><span class="cx" style="display: block; padding: 0 10px">               s += '//';
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            if (self$$1.userInfo) {
-              s += self$$1.userInfo + '@';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            if (self.userInfo) {
+              s += self.userInfo + '@';
</ins><span class="cx" style="display: block; padding: 0 10px">             }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            if (self$$1.host) {
-              s += self$$1.host;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            if (self.host) {
+              s += self.host;
</ins><span class="cx" style="display: block; padding: 0 10px">             }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            if (self$$1.port) {
-              s += ':' + self$$1.port;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            if (self.port) {
+              s += ':' + self.port;
</ins><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (self$$1.path) {
-            s += self$$1.path;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (self.path) {
+            s += self.path;
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (self$$1.query) {
-            s += '?' + self$$1.query;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (self.query) {
+            s += '?' + self.query;
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (self$$1.anchor) {
-            s += '#' + self$$1.anchor;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (self.anchor) {
+            s += '#' + self.anchor;
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.source = s;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.source = s;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return self$$1.source;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return self.source;
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     URI.parseDataUri = function (uri) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -24640,7 +24943,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       } else {
</span><span class="cx" style="display: block; padding: 0 10px">         content = trimEmptyContents(editor, editor.serializer.serialize(body, args));
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      if (args.format !== 'text' && !isWsPreserveElement(Element$$1.fromDom(body))) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      if (args.format !== 'text' && !isWsPreserveElement(Element.fromDom(body))) {
</ins><span class="cx" style="display: block; padding: 0 10px">         args.content = Tools.trim(content);
</span><span class="cx" style="display: block; padding: 0 10px">       } else {
</span><span class="cx" style="display: block; padding: 0 10px">         args.content = content;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -24654,7 +24957,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       if (args === void 0) {
</span><span class="cx" style="display: block; padding: 0 10px">         args = {};
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return Option.from(editor.getBody()).fold(constant(args.format === 'tree' ? new Node$2('body', 11) : ''), function (body) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return Option.from(editor.getBody()).fold(constant(args.format === 'tree' ? new Node$1('body', 11) : ''), function (body) {
</ins><span class="cx" style="display: block; padding: 0 10px">         return getContentFromBody(editor, args, body);
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -24674,25 +24977,25 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var matches = [];
</span><span class="cx" style="display: block; padding: 0 10px">       if (node.firstChild) {
</span><span class="cx" style="display: block; padding: 0 10px">         traverse(node.firstChild, function (node) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          each(nodeFilters, function (filter$$1) {
-            if (filter$$1.name === node.name) {
-              if (nodeMatches[filter$$1.name]) {
-                nodeMatches[filter$$1.name].nodes.push(node);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          each(nodeFilters, function (filter) {
+            if (filter.name === node.name) {
+              if (nodeMatches[filter.name]) {
+                nodeMatches[filter.name].nodes.push(node);
</ins><span class="cx" style="display: block; padding: 0 10px">               } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                nodeMatches[filter$$1.name] = {
-                  filter: filter$$1,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                nodeMatches[filter.name] = {
+                  filter: filter,
</ins><span class="cx" style="display: block; padding: 0 10px">                   nodes: [node]
</span><span class="cx" style="display: block; padding: 0 10px">                 };
</span><span class="cx" style="display: block; padding: 0 10px">               }
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          each(attributeFilters, function (filter$$1) {
-            if (typeof node.attr(filter$$1.name) === 'string') {
-              if (attrMatches[filter$$1.name]) {
-                attrMatches[filter$$1.name].nodes.push(node);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          each(attributeFilters, function (filter) {
+            if (typeof node.attr(filter.name) === 'string') {
+              if (attrMatches[filter.name]) {
+                attrMatches[filter.name].nodes.push(node);
</ins><span class="cx" style="display: block; padding: 0 10px">               } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                attrMatches[filter$$1.name] = {
-                  filter: filter$$1,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                attrMatches[filter.name] = {
+                  filter: filter,
</ins><span class="cx" style="display: block; padding: 0 10px">                   nodes: [node]
</span><span class="cx" style="display: block; padding: 0 10px">                 };
</span><span class="cx" style="display: block; padding: 0 10px">               }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -24723,7 +25026,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var defaultFormat$1 = 'html';
</span><span class="cx" style="display: block; padding: 0 10px">     var isTreeNode = function (content) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return content instanceof Node$2;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return content instanceof Node$1;
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var moveSelection = function (editor) {
</span><span class="cx" style="display: block; padding: 0 10px">       if (EditorFocus.hasFocus(editor)) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -24758,12 +25061,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">         editor.fire('SetContent', args);
</span><span class="cx" style="display: block; padding: 0 10px">       } else {
</span><span class="cx" style="display: block; padding: 0 10px">         if (args.format !== 'raw') {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          content = Serializer({ validate: editor.validate }, editor.schema).serialize(editor.parser.parse(content, {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          content = HtmlSerializer({ validate: editor.validate }, editor.schema).serialize(editor.parser.parse(content, {
</ins><span class="cx" style="display: block; padding: 0 10px">             isRootContent: true,
</span><span class="cx" style="display: block; padding: 0 10px">             insert: true
</span><span class="cx" style="display: block; padding: 0 10px">           }));
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        args.content = isWsPreserveElement(Element$$1.fromDom(body)) ? content : Tools.trim(content);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        args.content = isWsPreserveElement(Element.fromDom(body)) ? content : Tools.trim(content);
</ins><span class="cx" style="display: block; padding: 0 10px">         setEditorHtml(editor, args.content);
</span><span class="cx" style="display: block; padding: 0 10px">         if (!args.no_events) {
</span><span class="cx" style="display: block; padding: 0 10px">           editor.fire('SetContent', args);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -24773,8 +25076,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var setContentTree = function (editor, body, content, args) {
</span><span class="cx" style="display: block; padding: 0 10px">       filter$3(editor.parser.getNodeFilters(), editor.parser.getAttributeFilters(), content);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var html = Serializer({ validate: editor.validate }, editor.schema).serialize(content);
-      args.content = isWsPreserveElement(Element$$1.fromDom(body)) ? html : Tools.trim(html);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var html = HtmlSerializer({ validate: editor.validate }, editor.schema).serialize(content);
+      args.content = isWsPreserveElement(Element.fromDom(body)) ? html : Tools.trim(html);
</ins><span class="cx" style="display: block; padding: 0 10px">       setEditorHtml(editor, args.content);
</span><span class="cx" style="display: block; padding: 0 10px">       if (!args.no_events) {
</span><span class="cx" style="display: block; padding: 0 10px">         editor.fire('SetContent', args);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -24824,7 +25127,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         DOM$6.unbind(form, 'submit reset', editor.formEventDelegate);
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var remove$9 = function (editor) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var remove$7 = function (editor) {
</ins><span class="cx" style="display: block; padding: 0 10px">       if (!editor.removed) {
</span><span class="cx" style="display: block; padding: 0 10px">         var _selectionOverrides = editor._selectionOverrides, editorUpload = editor.editorUpload;
</span><span class="cx" style="display: block; padding: 0 10px">         var body = editor.getBody();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -24837,11 +25140,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">         if (editor.hasHiddenInput && element) {
</span><span class="cx" style="display: block; padding: 0 10px">           DOM$6.remove(element.nextSibling);
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        Events.fireRemove(editor);
+        editor.editorManager.remove(editor);
</ins><span class="cx" style="display: block; padding: 0 10px">         if (!editor.inline && body) {
</span><span class="cx" style="display: block; padding: 0 10px">           restoreOriginalStyles(editor);
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        Events.fireRemove(editor);
-        editor.editorManager.remove(editor);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        Events.fireDetach(editor);
</ins><span class="cx" style="display: block; padding: 0 10px">         DOM$6.remove(editor.getContainer());
</span><span class="cx" style="display: block; padding: 0 10px">         safeDestroy(_selectionOverrides);
</span><span class="cx" style="display: block; padding: 0 10px">         safeDestroy(editorUpload);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -25255,7 +25559,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       remove: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        remove$9(this);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        remove$7(this);
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       destroy: function (automatic) {
</span><span class="cx" style="display: block; padding: 0 10px">         destroy(this, automatic);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -25281,9 +25585,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var mouseUpPage = function () {
</span><span class="cx" style="display: block; padding: 0 10px">         throttledStore.throttle();
</span><span class="cx" style="display: block; padding: 0 10px">       };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      DOMUtils$1.DOM.bind(document, 'mouseup', mouseUpPage);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      DOMUtils$1.DOM.bind(domGlobals.document, 'mouseup', mouseUpPage);
</ins><span class="cx" style="display: block; padding: 0 10px">       editor.on('remove', function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        DOMUtils$1.DOM.unbind(document, 'mouseup', mouseUpPage);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        DOMUtils$1.DOM.unbind(domGlobals.document, 'mouseup', mouseUpPage);
</ins><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var registerFocusOut = function (editor) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -25310,7 +25614,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var register$3 = function (editor) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var throttledStore = first$1(function () {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var throttledStore = first(function () {
</ins><span class="cx" style="display: block; padding: 0 10px">         SelectionBookmark.store(editor);
</span><span class="cx" style="display: block; padding: 0 10px">       }, 0);
</span><span class="cx" style="display: block; padding: 0 10px">       if (editor.inline) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -25332,16 +25636,16 @@
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var isUIElement = function (editor, elm) {
</span><span class="cx" style="display: block; padding: 0 10px">       var customSelector = editor ? editor.settings.custom_ui_selector : '';
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      var parent$$1 = DOM$8.getParent(elm, function (elm) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var parent = DOM$8.getParent(elm, function (elm) {
</ins><span class="cx" style="display: block; padding: 0 10px">         return isEditorUIElement$1(elm) || (customSelector ? editor.dom.is(elm, customSelector) : false);
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      return parent$$1 !== null;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      return parent !== null;
</ins><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var getActiveElement = function () {
</span><span class="cx" style="display: block; padding: 0 10px">       try {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return document.activeElement;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return domGlobals.document.activeElement;
</ins><span class="cx" style="display: block; padding: 0 10px">       } catch (ex) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return document.body;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        return domGlobals.document.body;
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var registerEvents = function (editorManager, e) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -25348,24 +25652,24 @@
</span><span class="cx" style="display: block; padding: 0 10px">       var editor = e.editor;
</span><span class="cx" style="display: block; padding: 0 10px">       SelectionRestore.register(editor);
</span><span class="cx" style="display: block; padding: 0 10px">       editor.on('focusin', function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">         var focusedEditor = editorManager.focusedEditor;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (focusedEditor !== self$$1) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (focusedEditor !== self) {
</ins><span class="cx" style="display: block; padding: 0 10px">           if (focusedEditor) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            focusedEditor.fire('blur', { focusedEditor: self$$1 });
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            focusedEditor.fire('blur', { focusedEditor: self });
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          editorManager.setActive(self$$1);
-          editorManager.focusedEditor = self$$1;
-          self$$1.fire('focus', { blurredEditor: focusedEditor });
-          self$$1.focus(true);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          editorManager.setActive(self);
+          editorManager.focusedEditor = self;
+          self.fire('focus', { blurredEditor: focusedEditor });
+          self.focus(true);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">       editor.on('focusout', function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
-        Delay.setEditorTimeout(self$$1, function () {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
+        Delay.setEditorTimeout(self, function () {
</ins><span class="cx" style="display: block; padding: 0 10px">           var focusedEditor = editorManager.focusedEditor;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (!isUIElement(self$$1, getActiveElement()) && focusedEditor === self$$1) {
-            self$$1.fire('blur', { focusedEditor: null });
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (!isUIElement(self, getActiveElement()) && focusedEditor === self) {
+            self.fire('blur', { focusedEditor: null });
</ins><span class="cx" style="display: block; padding: 0 10px">             editorManager.focusedEditor = null;
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         });
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -25375,14 +25679,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">           var activeEditor = editorManager.activeEditor;
</span><span class="cx" style="display: block; padding: 0 10px">           var target;
</span><span class="cx" style="display: block; padding: 0 10px">           target = e.target;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (activeEditor && target.ownerDocument === document) {
-            if (target !== document.body && !isUIElement(activeEditor, target) && editorManager.focusedEditor === activeEditor) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (activeEditor && target.ownerDocument === domGlobals.document) {
+            if (target !== domGlobals.document.body && !isUIElement(activeEditor, target) && editorManager.focusedEditor === activeEditor) {
</ins><span class="cx" style="display: block; padding: 0 10px">               activeEditor.fire('blur', { focusedEditor: null });
</span><span class="cx" style="display: block; padding: 0 10px">               editorManager.focusedEditor = null;
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        DOM$8.bind(document, 'focusin', documentFocusInHandler);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        DOM$8.bind(domGlobals.document, 'focusin', documentFocusInHandler);
</ins><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var unregisterDocumentEvents = function (editorManager, e) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -25390,75 +25694,20 @@
</span><span class="cx" style="display: block; padding: 0 10px">         editorManager.focusedEditor = null;
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">       if (!editorManager.activeEditor) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        DOM$8.unbind(document, 'focusin', documentFocusInHandler);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        DOM$8.unbind(domGlobals.document, 'focusin', documentFocusInHandler);
</ins><span class="cx" style="display: block; padding: 0 10px">         documentFocusInHandler = null;
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var setup$g = function (editorManager) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var setup$h = function (editorManager) {
</ins><span class="cx" style="display: block; padding: 0 10px">       editorManager.on('AddEditor', curry(registerEvents, editorManager));
</span><span class="cx" style="display: block; padding: 0 10px">       editorManager.on('RemoveEditor', curry(unregisterDocumentEvents, editorManager));
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var FocusController = {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      setup: setup$g,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      setup: setup$h,
</ins><span class="cx" style="display: block; padding: 0 10px">       isEditorUIElement: isEditorUIElement$1,
</span><span class="cx" style="display: block; padding: 0 10px">       isUIElement: isUIElement
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var data = {};
-    var code = 'en';
-    var I18n = {
-      setCode: function (newCode) {
-        if (newCode) {
-          code = newCode;
-          this.rtl = this.data[newCode] ? this.data[newCode]._dir === 'rtl' : false;
-        }
-      },
-      getCode: function () {
-        return code;
-      },
-      rtl: false,
-      add: function (code, items) {
-        var langData = data[code];
-        if (!langData) {
-          data[code] = langData = {};
-        }
-        for (var name in items) {
-          langData[name] = items[name];
-        }
-        this.setCode(code);
-      },
-      translate: function (text) {
-        var langData = data[code] || {};
-        var toString = function (obj) {
-          if (Tools.is(obj, 'function')) {
-            return Object.prototype.toString.call(obj);
-          }
-          return !isEmpty(obj) ? '' + obj : '';
-        };
-        var isEmpty = function (text) {
-          return text === '' || text === null || Tools.is(text, 'undefined');
-        };
-        var getLangData = function (text) {
-          text = toString(text);
-          return Tools.hasOwn(langData, text) ? toString(langData[text]) : text;
-        };
-        if (isEmpty(text)) {
-          return '';
-        }
-        if (Tools.is(text, 'object') && Tools.hasOwn(text, 'raw')) {
-          return toString(text.raw);
-        }
-        if (Tools.is(text, 'array')) {
-          var values_1 = text.slice(1);
-          text = getLangData(text[0]).replace(/\{([0-9]+)\}/g, function ($1, $2) {
-            return Tools.hasOwn(values_1, $2) ? toString(values_1[$2]) : $1;
-          });
-        }
-        return getLangData(text).replace(/{context:\w+}$/, '');
-      },
-      data: data
-    };
-
</del><span class="cx" style="display: block; padding: 0 10px">     var DOM$9 = DOMUtils$1.DOM;
</span><span class="cx" style="display: block; padding: 0 10px">     var explode$4 = Tools.explode, each$m = Tools.each, extend$5 = Tools.extend;
</span><span class="cx" style="display: block; padding: 0 10px">     var instanceCounter = 0, beforeUnloadDelegate, EditorManager, boundGlobalEvents = false;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -25468,11 +25717,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">       return id !== 'length';
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px">     var globalEventDelegate = function (e) {
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      var type = e.type;
</ins><span class="cx" style="display: block; padding: 0 10px">       each$m(EditorManager.get(), function (editor) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (e.type === 'scroll') {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        switch (type) {
+        case 'scroll':
</ins><span class="cx" style="display: block; padding: 0 10px">           editor.fire('ScrollWindow', e);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        } else {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          break;
+        case 'resize':
</ins><span class="cx" style="display: block; padding: 0 10px">           editor.fire('ResizeWindow', e);
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          break;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       });
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -25520,16 +25773,16 @@
</span><span class="cx" style="display: block; padding: 0 10px">       defaultSettings: {},
</span><span class="cx" style="display: block; padding: 0 10px">       $: DomQuery,
</span><span class="cx" style="display: block; padding: 0 10px">       majorVersion: '4',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      minorVersion: '9.2',
-      releaseDate: '2018-12-17',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      minorVersion: '9.4',
+      releaseDate: '2019-03-20',
</ins><span class="cx" style="display: block; padding: 0 10px">       editors: legacyEditors,
</span><span class="cx" style="display: block; padding: 0 10px">       i18n: I18n,
</span><span class="cx" style="display: block; padding: 0 10px">       activeEditor: null,
</span><span class="cx" style="display: block; padding: 0 10px">       settings: {},
</span><span class="cx" style="display: block; padding: 0 10px">       setup: function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">         var baseURL, documentBaseURL, suffix = '', preInit, src;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        documentBaseURL = URI.getDocumentBaseUrl(document.location);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        documentBaseURL = URI.getDocumentBaseUrl(domGlobals.document.location);
</ins><span class="cx" style="display: block; padding: 0 10px">         if (/^[^:]+:\/\/\/?[^\/]+\//.test(documentBaseURL)) {
</span><span class="cx" style="display: block; padding: 0 10px">           documentBaseURL = documentBaseURL.replace(/[\?#].*$/, '').replace(/[\/\\][^\/]+$/, '');
</span><span class="cx" style="display: block; padding: 0 10px">           if (!/[\/\\]$/.test(documentBaseURL)) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -25541,7 +25794,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">           baseURL = preInit.base || preInit.baseURL;
</span><span class="cx" style="display: block; padding: 0 10px">           suffix = preInit.suffix;
</span><span class="cx" style="display: block; padding: 0 10px">         } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          var scripts = document.getElementsByTagName('script');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          var scripts = domGlobals.document.getElementsByTagName('script');
</ins><span class="cx" style="display: block; padding: 0 10px">           for (var i = 0; i < scripts.length; i++) {
</span><span class="cx" style="display: block; padding: 0 10px">             src = scripts[i].src;
</span><span class="cx" style="display: block; padding: 0 10px">             var srcScript = src.substring(src.lastIndexOf('/'));
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -25553,8 +25806,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">               break;
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (!baseURL && document.currentScript) {
-            src = document.currentScript.src;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (!baseURL && domGlobals.document.currentScript) {
+            src = domGlobals.document.currentScript.src;
</ins><span class="cx" style="display: block; padding: 0 10px">             if (src.indexOf('.min') !== -1) {
</span><span class="cx" style="display: block; padding: 0 10px">               suffix = '.min';
</span><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -25561,11 +25814,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">             baseURL = src.substring(0, src.lastIndexOf('/'));
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.baseURL = new URI(documentBaseURL).toAbsolute(baseURL);
-        self$$1.documentBaseURL = documentBaseURL;
-        self$$1.baseURI = new URI(self$$1.baseURL);
-        self$$1.suffix = suffix;
-        FocusController.setup(self$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.baseURL = new URI(documentBaseURL).toAbsolute(baseURL);
+        self.documentBaseURL = documentBaseURL;
+        self.baseURI = new URI(self.baseURL);
+        self.suffix = suffix;
+        FocusController.setup(self);
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       overrideDefaults: function (defaultSettings) {
</span><span class="cx" style="display: block; padding: 0 10px">         var baseUrl, suffix;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -25580,12 +25833,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         this.defaultSettings = defaultSettings;
</span><span class="cx" style="display: block; padding: 0 10px">         var pluginBaseUrls = defaultSettings.plugin_base_urls;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        for (var name$$1 in pluginBaseUrls) {
-          AddOnManager.PluginManager.urls[name$$1] = pluginBaseUrls[name$$1];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        for (var name in pluginBaseUrls) {
+          AddOnManager.PluginManager.urls[name] = pluginBaseUrls[name];
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       init: function (settings) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">         var result, invalidInlineTargets;
</span><span class="cx" style="display: block; padding: 0 10px">         invalidInlineTargets = Tools.makeMap('area base basefont br col frame hr img input isindex link meta param embed source wbr track ' + 'colgroup option tbody tfoot thead tr script noscript style textarea video audio iframe object menu', ' ');
</span><span class="cx" style="display: block; padding: 0 10px">         var isInvalidInlineTarget = function (settings, elm) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -25604,12 +25857,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           return id;
</span><span class="cx" style="display: block; padding: 0 10px">         };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var execCallback = function (name$$1) {
-          var callback = settings[name$$1];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var execCallback = function (name) {
+          var callback = settings[name];
</ins><span class="cx" style="display: block; padding: 0 10px">           if (!callback) {
</span><span class="cx" style="display: block; padding: 0 10px">             return;
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          return callback.apply(self$$1, Array.prototype.slice.call(arguments, 2));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          return callback.apply(self, Array.prototype.slice.call(arguments, 2));
</ins><span class="cx" style="display: block; padding: 0 10px">         };
</span><span class="cx" style="display: block; padding: 0 10px">         var hasClass = function (elm, className) {
</span><span class="cx" style="display: block; padding: 0 10px">           return className.constructor === RegExp ? className.test(elm.className) : DOM$9.hasClass(elm, className);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -25639,7 +25892,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                 if (elm = DOM$9.get(id)) {
</span><span class="cx" style="display: block; padding: 0 10px">                   targets.push(elm);
</span><span class="cx" style="display: block; padding: 0 10px">                 } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                  each$m(document.forms, function (f) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                  each$m(domGlobals.document.forms, function (f) {
</ins><span class="cx" style="display: block; padding: 0 10px">                     each$m(f.elements, function (e) {
</span><span class="cx" style="display: block; padding: 0 10px">                       if (e.name === id) {
</span><span class="cx" style="display: block; padding: 0 10px">                         id = 'mce_editor_' + instanceCounter++;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -25674,7 +25927,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">           var editors = [];
</span><span class="cx" style="display: block; padding: 0 10px">           var targets;
</span><span class="cx" style="display: block; padding: 0 10px">           var createEditor = function (id, settings, targetElm) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            var editor = new Editor(id, settings, self$$1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            var editor = new Editor(id, settings, self);
</ins><span class="cx" style="display: block; padding: 0 10px">             editors.push(editor);
</span><span class="cx" style="display: block; padding: 0 10px">             editor.on('init', function () {
</span><span class="cx" style="display: block; padding: 0 10px">               if (++initCount === targets.length) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -25700,10 +25953,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">             return;
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           Tools.each(targets, function (elm) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            purgeDestroyedEditor(self$$1.get(elm.id));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            purgeDestroyedEditor(self.get(elm.id));
</ins><span class="cx" style="display: block; padding: 0 10px">           });
</span><span class="cx" style="display: block; padding: 0 10px">           targets = Tools.grep(targets, function (elm) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            return !self$$1.get(elm.id);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            return !self.get(elm.id);
</ins><span class="cx" style="display: block; padding: 0 10px">           });
</span><span class="cx" style="display: block; padding: 0 10px">           if (targets.length === 0) {
</span><span class="cx" style="display: block; padding: 0 10px">             provideResults([]);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -25717,7 +25970,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">             });
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">         };
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.settings = settings;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.settings = settings;
</ins><span class="cx" style="display: block; padding: 0 10px">         DOM$9.bind(window, 'ready', initEditors);
</span><span class="cx" style="display: block; padding: 0 10px">         return new promiseObj(function (resolve) {
</span><span class="cx" style="display: block; padding: 0 10px">           if (result) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -25743,13 +25996,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       add: function (editor) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">         var existingEditor;
</span><span class="cx" style="display: block; padding: 0 10px">         existingEditor = legacyEditors[editor.id];
</span><span class="cx" style="display: block; padding: 0 10px">         if (existingEditor === editor) {
</span><span class="cx" style="display: block; padding: 0 10px">           return editor;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (self$$1.get(editor.id) === null) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (self.get(editor.id) === null) {
</ins><span class="cx" style="display: block; padding: 0 10px">           if (isValidLegacyKey(editor.id)) {
</span><span class="cx" style="display: block; padding: 0 10px">             legacyEditors[editor.id] = editor;
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -25757,11 +26010,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">           editors.push(editor);
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         toggleGlobalEvents(true);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        self$$1.activeEditor = editor;
-        self$$1.fire('AddEditor', { editor: editor });
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        self.activeEditor = editor;
+        self.fire('AddEditor', { editor: editor });
</ins><span class="cx" style="display: block; padding: 0 10px">         if (!beforeUnloadDelegate) {
</span><span class="cx" style="display: block; padding: 0 10px">           beforeUnloadDelegate = function () {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            self$$1.fire('BeforeUnload');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            self.fire('BeforeUnload');
</ins><span class="cx" style="display: block; padding: 0 10px">           };
</span><span class="cx" style="display: block; padding: 0 10px">           DOM$9.bind(window, 'beforeunload', beforeUnloadDelegate);
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -25771,29 +26024,29 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return this.add(new Editor(id, settings, this));
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       remove: function (selector) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this;
</ins><span class="cx" style="display: block; padding: 0 10px">         var i, editor;
</span><span class="cx" style="display: block; padding: 0 10px">         if (!selector) {
</span><span class="cx" style="display: block; padding: 0 10px">           for (i = editors.length - 1; i >= 0; i--) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            self$$1.remove(editors[i]);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            self.remove(editors[i]);
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           return;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (isString(selector)) {
</span><span class="cx" style="display: block; padding: 0 10px">           each$m(DOM$9.select(selector), function (elm) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            editor = self$$1.get(elm.id);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            editor = self.get(elm.id);
</ins><span class="cx" style="display: block; padding: 0 10px">             if (editor) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-              self$$1.remove(editor);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+              self.remove(editor);
</ins><span class="cx" style="display: block; padding: 0 10px">             }
</span><span class="cx" style="display: block; padding: 0 10px">           });
</span><span class="cx" style="display: block; padding: 0 10px">           return;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         editor = selector;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (isNull(self$$1.get(editor.id))) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (isNull(self.get(editor.id))) {
</ins><span class="cx" style="display: block; padding: 0 10px">           return null;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (removeEditorFromList(editor)) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          self$$1.fire('RemoveEditor', { editor: editor });
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          self.fire('RemoveEditor', { editor: editor });
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         if (editors.length === 0) {
</span><span class="cx" style="display: block; padding: 0 10px">           DOM$9.unbind(window, 'beforeunload', beforeUnloadDelegate);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -25803,11 +26056,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">         return editor;
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       execCommand: function (cmd, ui, value) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var self$$1 = this, editor = self$$1.get(value);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var self = this, editor = self.get(value);
</ins><span class="cx" style="display: block; padding: 0 10px">         switch (cmd) {
</span><span class="cx" style="display: block; padding: 0 10px">         case 'mceAddEditor':
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          if (!self$$1.get(value)) {
-            new Editor(value, self$$1.settings, self$$1).render();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          if (!self.get(value)) {
+            new Editor(value, self.settings, self).render();
</ins><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           return true;
</span><span class="cx" style="display: block; padding: 0 10px">         case 'mceRemoveEditor':
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -25817,7 +26070,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">           return true;
</span><span class="cx" style="display: block; padding: 0 10px">         case 'mceToggleEditor':
</span><span class="cx" style="display: block; padding: 0 10px">           if (!editor) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-            self$$1.execCommand('mceAddEditor', 0, value);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            self.execCommand('mceAddEditor', 0, value);
</ins><span class="cx" style="display: block; padding: 0 10px">             return true;
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           if (editor.isHidden()) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -25827,8 +26080,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">           }
</span><span class="cx" style="display: block; padding: 0 10px">           return true;
</span><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if (self$$1.activeEditor) {
-          return self$$1.activeEditor.execCommand(cmd, ui, value);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if (self.activeEditor) {
+          return self.activeEditor.execCommand(cmd, ui, value);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">         return false;
</span><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -26462,13 +26715,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">       }();
</span><span class="cx" style="display: block; padding: 0 10px">     };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var localStorage$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var localStorage;
</ins><span class="cx" style="display: block; padding: 0 10px">     try {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      localStorage$$1 = window.localStorage;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      localStorage = domGlobals.window.localStorage;
</ins><span class="cx" style="display: block; padding: 0 10px">     } catch (e) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      localStorage$$1 = create$4();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      localStorage = create$4();
</ins><span class="cx" style="display: block; padding: 0 10px">     }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    var LocalStorage = localStorage$$1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    var LocalStorage = localStorage;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">     var tinymce = EditorManager$1;
</span><span class="cx" style="display: block; padding: 0 10px">     var publicApi = {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -26498,7 +26751,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         DOMUtils: DOMUtils$1,
</span><span class="cx" style="display: block; padding: 0 10px">         ScriptLoader: ScriptLoader,
</span><span class="cx" style="display: block; padding: 0 10px">         RangeUtils: RangeUtils$1,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        Serializer: Serializer$1,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        Serializer: DomSerializer$1,
</ins><span class="cx" style="display: block; padding: 0 10px">         ControlSelection: ControlSelection,
</span><span class="cx" style="display: block; padding: 0 10px">         BookmarkManager: BookmarkManager$1,
</span><span class="cx" style="display: block; padding: 0 10px">         Selection: Selection,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -26507,12 +26760,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">       html: {
</span><span class="cx" style="display: block; padding: 0 10px">         Styles: Styles,
</span><span class="cx" style="display: block; padding: 0 10px">         Entities: Entities,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        Node: Node$2,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        Node: Node$1,
</ins><span class="cx" style="display: block; padding: 0 10px">         Schema: Schema,
</span><span class="cx" style="display: block; padding: 0 10px">         SaxParser: SaxParser$1,
</span><span class="cx" style="display: block; padding: 0 10px">         DomParser: DomParser,
</span><span class="cx" style="display: block; padding: 0 10px">         Writer: Writer,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        Serializer: Serializer
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        Serializer: HtmlSerializer
</ins><span class="cx" style="display: block; padding: 0 10px">       },
</span><span class="cx" style="display: block; padding: 0 10px">       ui: { Factory: Factory },
</span><span class="cx" style="display: block; padding: 0 10px">       Env: Env,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -26572,5 +26825,5 @@
</span><span class="cx" style="display: block; padding: 0 10px">     exportToWindowGlobal(Tinymce);
</span><span class="cx" style="display: block; padding: 0 10px">     exportToModuleLoaders(Tinymce);
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-}());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+}(window));
</ins><span class="cx" style="display: block; padding: 0 10px"> })();
</span></span></pre></div>
<a id="trunksrcjs_enqueuesvendortinymcetinymceminjs"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/js/_enqueues/vendor/tinymce/tinymce.min.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/js/_enqueues/vendor/tinymce/tinymce.min.js      2019-05-15 19:53:42 UTC (rev 45315)
+++ trunk/src/js/_enqueues/vendor/tinymce/tinymce.min.js        2019-05-15 23:44:37 UTC (rev 45316)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,2 +1,2 @@
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-// 4.9.2 (2018-12-17)
-!function(){"use strict";var o=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t]},H=function(n,r){return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return n(r.apply(null,e))}},j=function(e){return function(){return e}},q=function(e){return e};function d(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 e,t,n,r,i,a,u,s,c,l,f,m,g,p,h,v,b,y=function(n){return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return!n.apply(null,e)}},C=j(!1),x=j(!0),w=C,N=x,E=function(){return S},S=(r={fold:function(e,t){return e()},is:w,isSome:w,isNone:N,getOr:n=function(e){return e},getOrThunk:t=function(e){return e()},getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:function(){return null},getOrUndefined:function(){return undefined},o
 r:n,orThunk:t,map:E,ap:E,each:function(){},bind:E,flatten:E,exists:w,forall:N,filter:E,equals:e=function(e){return e.isNone()},equals_:e,toArray:function(){return[]},toString:j("none()")},Object.freeze&&Object.freeze(r),r),k=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:N,isNone:w,getOr:e,getOrThunk:e,getOrDie:e,getOrNull:e,getOrUndefined:e,or:t,orThunk:t,map:function(e){return k(e(n))},ap:function(e){return e.fold(E,function(e){return k(e(n))})},each:function(e){e(n)},bind:r,flatten:e,exists:r,forall:r,filter:function(e){return e(n)?o:S},equals:function(e){return e.is(n)},equals_:function(e,t){return e.fold(w,function(e){return t(n,e)})},toArray:function(){return[n]},toString:function(){return"some("+n+")"}};return o},A={some:k,none:E,from:function(e){return null===e||e===undefined?S:k(e)}},T=function(t){return function(e){return fu
 nction(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}},R=T("string"),_=T("object"),D=T("array"),B=T("null"),O=T("boolean"),P=T("function"),L=T("number"),I=(i=Array.prototype.indexOf)===undefined?function(e,t){return X(e,t)}:function(e,t){return i.call(e,t)},M=function(e,t){return-1<I(e,t)},$=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},F=function(e,t){for(var n=0,r=e.length;n<r;n++)t(e[n],n,e)},W=function(e,t){for(var n=[],r=[],o=0,i=e.length;o<i;o++){var a=e[o];(t(a,o,e)?n:r).push(a)}return{pass:n,fail:r}},z=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},U=function(e,t,n){return F(e,function(e){n=t(n,e)}),n},
 V=function(e,t){for(var n=0,r=e.length;n<r;n++){var o=e[n];if(t(o,n,e))return A.some(o)}return A.none()},K=function(e,t){for(var n=0,r=e.length;n<r;n++)if(t(e[n],n,e))return A.some(n);return A.none()},X=function(e,t){for(var n=0,r=e.length;n<r;++n)if(e[n]===t)return n;return-1},Y=Array.prototype.push,G=function(e,t){return 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);Y.apply(t,e[n])}return t}($(e,t))},J=function(e,t){for(var n=0,r=e.length;n<r;++n)if(!0!==t(e[n],n,e))return!1;return!0},Q=Array.prototype.slice,Z=function(e,t){return z(e,function(e){return!M(t,e)})},ee=function(e){return 0===e.length?A.none():A.some(e[0])},te=function(e){return 0===e.length?A.none():A.some(e[e.length-1])},ne=P(Array.from)?Array.from:function(e){return Q.call(e)},re="undefined"!=typeof window?window:Function("return this;")(),oe=functio
 n(e,t){return function(e,t){for(var n=t!==undefined&&null!==t?t:re,r=0;r<e.length&&n!==undefined&&null!==n;++r)n=n[e[r]];return n}(e.split("."),t)},ie={getOrDie:function(e,t){var n=oe(e,t);if(n===undefined||null===n)throw e+" not available on this browser";return n}},ae=function(){return ie.getOrDie("URL")},ue={createObjectURL:function(e){return ae().createObjectURL(e)},revokeObjectURL:function(e){ae().revokeObjectURL(e)}},se=navigator,ce=se.userAgent,le=function(e){return"matchMedia"in window&&matchMedia(e).matches};g=/Android/.test(ce),u=(u=!(a=/WebKit/.test(ce))&&/MSIE/gi.test(ce)&&/Explorer/gi.test(se.appName))&&/MSIE (\w+)\./.exec(ce)[1],s=-1!==ce.indexOf("Trident/")&&(-1!==ce.indexOf("rv:")||-1!==se.appName.indexOf("Netscape"))&&11,c=-1!==ce.indexOf("Edge/")&&!u&&!s&&12,u=u||s||c,l=!a&&!s&
 &/Gecko/.test(ce),f=-1!==ce.indexOf("Mac"),m=/(iPad|iPhone)/.test(ce),p="FormData"in window&&"FileReader"in window&&"URL"in window&&!!ue.createObjectURL,h=le("only screen and (max-device-width: 480px)")&&(g||m),v=le("only screen and (min-width: 800px)")&&(g||m),b=-1!==ce.indexOf("Windows Phone"),c&&(a=!1);var fe,de={opera:!1,webkit:a,ie:u,gecko:l,mac:f,iOS:m,android:g,contentEditable:!m||p||534<=parseInt(ce.match(/AppleWebKit\/(\d*)/)[1],10),transparentSrc:"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",caretAfter:8!==u,range:window.getSelection&&"Range"in window,documentMode:u&&!c?document.documentMode||7:10,fileApi:p,ceFalse:!1===u||8<u,cacheSuffix:null,container:null,overrideViewPort:null,experimentalShadowDom:!1,canHaveCSP:!1===u||11<u,desktop:!h&&!v,windowsPhone:b},me=windo
 w.Promise?window.Promise:function(){function r(e,t){return function(){e.apply(t,arguments)}}var e=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},i=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=[],l(e,r(o,this),r(u,this))},t=i.immediateFn||"function"==typeof setImmediate&&setImmediate||function(e){setTimeout(e,1)};function a(r){var o=this;null!==this._state?t(function(){var e=o._state?r.onFulfilled:r.onRejected;if(null!==e){var t;try{t=e(o._value)}catch(n){return void r.reject(n)}r.resolve(t)}else(o._state?r.resolve:r.reject)(o._value)}):this._deferreds.push(r)}function o(e){try{if(e===this)throw new TypeError("A promise cannot be resolved with itself.");if(e&&("object"==typeof e||"fun
 ction"==typeof e)){var t=e.then;if("function"==typeof t)return void l(r(t,e),r(o,this),r(u,this))}this._state=!0,this._value=e,s.call(this)}catch(n){u.call(this,n)}}function u(e){this._state=!1,this._value=e,s.call(this)}function s(){for(var e=0,t=this._deferreds.length;e<t;e++)a.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 l(e,t,n){var r=!1;try{e(function(e){r||(r=!0,t(e))},function(e){r||(r=!0,n(e))})}catch(o){if(r)return;r=!0,n(o)}}return i.prototype["catch"]=function(e){return this.then(null,e)},i.prototype.then=function(n,r){var o=this;return new i(function(e,t){a.call(o,new c(n,r,e,t))})},i.all=function(){var s=Array.prototype.slice.call(1===arguments.length&&e(arguments[0])?arguments[0]:arguments);return new i(function(o,i){if(0===s.length)return o([]);var a=s.length;fun
 ction u(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){u(t,e)},i)}s[t]=e,0==--a&&o(s)}catch(r){i(r)}}for(var e=0;e<s.length;e++)u(e,s[e])})},i.resolve=function(t){return t&&"object"==typeof t&&t.constructor===i?t:new i(function(e){e(t)})},i.reject=function(n){return new i(function(e,t){t(n)})},i.race=function(o){return new i(function(e,t){for(var n=0,r=o.length;n<r;n++)o[n].then(e,t)})},i}(),ge=function(e,t){return"number"!=typeof t&&(t=0),setTimeout(e,t)},pe=function(e,t){return"number"!=typeof t&&(t=1),setInterval(e,t)},he=function(t,n){var r,e;return(e=function(){var e=arguments;clearTimeout(r),r=ge(function(){t.apply(this,e)},n)}).stop=function(){clearTimeout(r)},e},ve={requestAnimationFrame:function(e,t){fe?fe.then(e):fe=new me(function(e){t||(t=document.body),function(e,t){var n,r=win
 dow.requestAnimationFrame,o=["ms","moz","webkit"];for(n=0;n<o.length&&!r;n++)r=window[o[n]+"RequestAnimationFrame"];r||(r=function(e){window.setTimeout(e,0)}),r(e,t)}(e,t)}).then(e)},setTimeout:ge,setInterval:pe,setEditorTimeout:function(e,t,n){return ge(function(){e.removed||t()},n)},setEditorInterval:function(e,t,n){var r;return r=pe(function(){e.removed?clearInterval(r):t()},n)},debounce:he,throttle:he,clearInterval:function(e){return clearInterval(e)},clearTimeout:function(e){return clearTimeout(e)}},be=/^(?:mouse|contextmenu)|click/,ye={keyLocation:1,layerX:1,layerY:1,returnValue:1,webkitMovementX:1,webkitMovementY:1,keyIdentifier:1},Ce=function(){return!1},xe=function(){return!0},we=function(e,t,n,r){e.addEventListener?e.addEventListener(t,n,r||!1):e.attachEvent&&e.attachEvent("on"+t,n)},Ne=function(e,t,n,r){e.removeEventListener?e.removeEventListener(t,n,r||!1):e.detachEvent&&e.detachEvent("on&q
 uot;+t,n)},Ee=function(e,t){var n,r,o=t||{};for(n in e)ye[n]||(o[n]=e[n]);if(o.target||(o.target=o.srcElement||document),de.experimentalShadowDom&&(o.target=function(e,t){if(e.composedPath){var n=e.composedPath();if(n&&0<n.length)return n[0]}return t}(e,o.target)),e&&be.test(e.type)&&e.pageX===undefined&&e.clientX!==undefined){var i=o.target.ownerDocument||document,a=i.documentElement,u=i.body;o.pageX=e.clientX+(a&&a.scrollLeft||u&&u.scrollLeft||0)-(a&&a.clientLeft||u&&u.clientLeft||0),o.pageY=e.clientY+(a&&a.scrollTop||u&&u.scrollTop||0)-(a&&a.clientTop||u&&u.clientTop||0)}return o.preventDefault=function(){o.isDefaultPrevented=xe,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},o.stopPropagation=function(){o.isPropagationStopped=xe,e&&(e.stopPropagation?e.stopPropagation():e.cancelBubble=!0)},!(o.stopImmediatePropagation=function(){o.isImmediatePropa
 gationStopped=xe,o.stopPropagation()})==((r=o).isDefaultPrevented===xe||r.isDefaultPrevented===Ce)&&(o.isDefaultPrevented=Ce,o.isPropagationStopped=Ce,o.isImmediatePropagationStopped=Ce),"undefined"==typeof o.metaKey&&(o.metaKey=!1),o},Se=function(e,t,n){var r=e.document,o={type:"ready"};if(n.domLoaded)t(o);else{var i=function(){return"complete"===r.readyState||"interactive"===r.readyState&&r.body},a=function(){n.domLoaded||(n.domLoaded=!0,t(o))},u=function(){i()&&(Ne(r,"readystatechange",u),a())},s=function(){try{r.documentElement.doScroll("left")}catch(e){return void ve.setTimeout(s)}a()};!r.addEventListener||de.ie&&de.ie<11?(we(r,"readystatechange",u),r.documentElement.doScroll&&e.self===e.top&&s()):i()?a():we(e,"DOMContentLoaded",a),we(e,"load",a)}},ke=function(){var m,g,p,h,v,b=this,y={};g="mce-data-"+(+new Date).toString
 (32),h="onmouseenter"in document.documentElement,p="onfocusin"in document.documentElement,v={mouseenter:"mouseover",mouseleave:"mouseout"},m=1,b.domLoaded=!1,b.events=y;var C=function(e,t){var n,r,o,i,a=y[t];if(n=a&&a[e.type])for(r=0,o=n.length;r<o;r++)if((i=n[r])&&!1===i.func.call(i.scope,e)&&e.preventDefault(),e.isImmediatePropagationStopped())return};b.bind=function(e,t,n,r){var o,i,a,u,s,c,l,f=window,d=function(e){C(Ee(e||f.event),o)};if(e&&3!==e.nodeType&&8!==e.nodeType){for(e[g]?o=e[g]:(o=m++,e[g]=o,y[o]={}),r=r||e,a=(t=t.split(" ")).length;a--;)c=d,s=l=!1,"DOMContentLoaded"===(u=t[a])&&(u="ready"),b.domLoaded&&"ready"===u&&"complete"===e.readyState?n.call(r,Ee({type:u})):(h||(s=v[u])&&(c=function(e){var t,n;if(t=e.currentTarget,(n=e.relatedTarget)&&t.contains)n=t.contains(n);else for(;n&&n!==t;)n=n
 .parentNode;n||((e=Ee(e||f.event)).type="mouseout"===e.type?"mouseleave":"mouseenter",e.target=t,C(e,o))}),p||"focusin"!==u&&"focusout"!==u||(l=!0,s="focusin"===u?"focus":"blur",c=function(e){(e=Ee(e||f.event)).type="focus"===e.type?"focusin":"focusout",C(e,o)}),(i=y[o][u])?"ready"===u&&b.domLoaded?n({type:u}):i.push({func:n,scope:r}):(y[o][u]=i=[{func:n,scope:r}],i.fakeName=s,i.capture=l,i.nativeHandler=c,"ready"===u?Se(e,c,b):we(e,s||u,c,l)));return e=i=0,n}},b.unbind=function(e,t,n){var r,o,i,a,u,s;if(!e||3===e.nodeType||8===e.nodeType)return b;if(r=e[g]){if(s=y[r],t){for(i=(t=t.split(" ")).length;i--;)if(o=s[u=t[i]]){if(n)for(a=o.length;a--;)if(o[a].func===n){var c=o.nativeHandler,l=o.fakeName,f=o.capture;(o=o.slice(0,a).concat(o.slice(a+1))).nativeHandler=c,o.fakeName=l,o.capture=f,s[u]=o}n&&0!==o.length||(delete s[u
 ],Ne(e,o.fakeName||u,o.nativeHandler,o.capture))}}else{for(u in s)o=s[u],Ne(e,o.fakeName||u,o.nativeHandler,o.capture);s={}}for(u in s)return b;delete y[r];try{delete e[g]}catch(d){e[g]=null}}return b},b.fire=function(e,t,n){var r;if(!e||3===e.nodeType||8===e.nodeType)return b;for((n=Ee(null,n)).type=t,n.target=e;(r=e[g])&&C(n,r),(e=e.parentNode||e.ownerDocument||e.defaultView||e.parentWindow)&&!n.isPropagationStopped(););return b},b.clean=function(e){var t,n,r=b.unbind;if(!e||3===e.nodeType||8===e.nodeType)return b;if(e[g]&&r(e),e.getElementsByTagName||(e=e.document),e&&e.getElementsByTagName)for(r(e),t=(n=e.getElementsByTagName("*")).length;t--;)(e=n[t])[g]&&r(e);return b},b.destroy=function(){y={}},b.cancel=function(e){return e&&(e.preventDefault(),e.stopImmediatePropagation()),!1}};ke.Event=new ke,ke.Event.bind(window,"ready",function(){});var Te,Ae,Re,_e,De,Be,Oe,Pe,Le,Ie,Me,Fe,ze,Ue,Ve,He,je,qe,$e="sizzle
 "+-new Date,We=window.document,Ke=0,Xe=0,Ye=Tt(),Ge=Tt(),Je=Tt(),Qe=function(e,t){return e===t&&(Me=!0),0},Ze=typeof undefined,et={}.hasOwnProperty,tt=[],nt=tt.pop,rt=tt.push,ot=tt.push,it=tt.slice,at=tt.indexOf||function(e){for(var t=0,n=this.length;t<n;t++)if(this[t]===e)return t;return-1},ut="[\\x20\\t\\r\\n\\f]",st="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",ct="\\["+ut+"*("+st+")(?:"+ut+"*([*^$|!~]?=)"+ut+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+st+"))|)"+ut+"*\\]",lt=":("+st+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+ct+")*)|.*)\\)|)",ft=new RegExp("^"+ut+"+|((?:^|[^\\\\])(?:\\\\.)*)"+ut+"+$","g"),dt=new RegExp("^"+ut+"*,"+ut+"*"),mt=new RegExp("^"+ut+"*([>+~]|"+ut+&quo
 t;)"+ut+"*"),gt=new RegExp("="+ut+"*([^\\]'\"]*?)"+ut+"*\\]","g"),pt=new RegExp(lt),ht=new RegExp("^"+st+"$"),vt={ID:new RegExp("^#("+st+")"),CLASS:new RegExp("^\\.("+st+")"),TAG:new RegExp("^("+st+"|[*])"),ATTR:new RegExp("^"+ct),PSEUDO:new RegExp("^"+lt),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ut+"*(even|odd|(([+-]|)(\\d*)n|)"+ut+"*(?:([+-]|)"+ut+"*(\\d+)|))"+ut+"*\\)|)","i"),bool:new RegExp("^(?:checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)$","i"),needsContext:new RegExp("^"+ut+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ut+"*((?:-\\d)?\\d*)"+ut+"*\\)|)(?=[^-]|$)","i")},bt=/^
 (?:input|select|textarea|button)$/i,yt=/^h\d$/i,Ct=/^[^{]+\{\s*\[native \w/,xt=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,wt=/[+~]/,Nt=/'|\\/g,Et=new RegExp("\\\\([\\da-f]{1,6}"+ut+"?|("+ut+")|.)","ig"),St=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)};try{ot.apply(tt=it.call(We.childNodes),We.childNodes),tt[We.childNodes.length].nodeType}catch(LN){ot={apply:tt.length?function(e,t){rt.apply(e,it.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}var kt=function(e,t,n,r){var o,i,a,u,s,c,l,f,d,m;if((t?t.ownerDocument||t:We)!==ze&&Fe(t),n=n||[],!e||"string"!=typeof e)return n;if(1!==(u=(t=t||ze).nodeType)&&9!==u)return[];if(Ve&&!r){if(o=xt.exec(e))if(a=o[1]){if(9===u){if(!(i=t.getElementById(a))||!i.parentNode)return n;if(i.id===a)return n.push(i),n}else if(t.ownerDocument&&(i=t.o
 wnerDocument.getElementById(a))&&qe(t,i)&&i.id===a)return n.push(i),n}else{if(o[2])return ot.apply(n,t.getElementsByTagName(e)),n;if((a=o[3])&&Ae.getElementsByClassName)return ot.apply(n,t.getElementsByClassName(a)),n}if(Ae.qsa&&(!He||!He.test(e))){if(f=l=$e,d=t,m=9===u&&e,1===u&&"object"!==t.nodeName.toLowerCase()){for(c=Be(e),(l=t.getAttribute("id"))?f=l.replace(Nt,"\\$&"):t.setAttribute("id",f),f="[id='"+f+"'] ",s=c.length;s--;)c[s]=f+Lt(c[s]);d=wt.test(e)&&Ot(t.parentNode)||t,m=c.join(",")}if(m)try{return ot.apply(n,d.querySelectorAll(m)),n}catch(g){}finally{l||t.removeAttribute("id")}}}return Pe(e.replace(ft,"$1"),t,n,r)};function Tt(){var r=[];return function e(t,n){return r.push(t+" ")>Re.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function At(e){return e[$e]=!0,e}function Rt(e,t){var n=t&&amp
 ;e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||1<<31)-(~e.sourceIndex||1<<31);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function _t(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function Dt(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function Bt(a){return At(function(i){return i=+i,At(function(e,t){for(var n,r=a([],e.length,i),o=r.length;o--;)e[n=r[o]]&&(e[n]=!(t[n]=e[n]))})})}function Ot(e){return e&&typeof e.getElementsByTagName!==Ze&&e}for(Te in Ae=kt.support={},De=kt.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},Fe=kt.setDocument=function(e){var t,s=e?e.ownerDocument||e:We,n=s.defaultView;return s!==ze&&9===s.nodeType&&s.documentElement?(Ue=(ze=s).documentElem
 ent,Ve=!De(s),n&&n!==function(e){try{return e.top}catch(t){}return null}(n)&&(n.addEventListener?n.addEventListener("unload",function(){Fe()},!1):n.attachEvent&&n.attachEvent("onunload",function(){Fe()})),Ae.attributes=!0,Ae.getElementsByTagName=!0,Ae.getElementsByClassName=Ct.test(s.getElementsByClassName),Ae.getById=!0,Re.find.ID=function(e,t){if(typeof t.getElementById!==Ze&&Ve){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},Re.filter.ID=function(e){var t=e.replace(Et,St);return function(e){return e.getAttribute("id")===t}},Re.find.TAG=Ae.getElementsByTagName?function(e,t){if(typeof t.getElementsByTagName!==Ze)return t.getElementsByTagName(e)}:function(e,t){var n,r=[],o=0,i=t.getElementsByTagName(e);if("*"===e){for(;n=i[o++];)1===n.nodeType&&r.push(n);return r}return i},Re.find.CLASS=Ae.getElementsByClassName&&function(e,t){if(Ve)return t.getElementsByClassName(e)},je=[],He=
 [],Ae.disconnectedMatch=!0,He=He.length&&new RegExp(He.join("|")),je=je.length&&new RegExp(je.join("|")),t=Ct.test(Ue.compareDocumentPosition),qe=t||Ct.test(Ue.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},Qe=t?function(e,t){if(e===t)return Me=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!Ae.sortDetached&&t.compareDocumentPosition(e)===n?e===s||e.ownerDocument===We&&qe(We,e)?-1:t===s||t.ownerDocument===We&&qe(We,t)?1:Ie?at.call(Ie,e)-at.call(Ie,t):0:4&n?-1:1)}:function(e,t){if(e===t)return Me=!0,0;var n,r=0,o=e.parentNode,i=t.parentNode,a=[e],u=[t];if(!o||!i)r
 eturn e===s?-1:t===s?1:o?-1:i?1:Ie?at.call(Ie,e)-at.call(Ie,t):0;if(o===i)return Rt(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)u.unshift(n);for(;a[r]===u[r];)r++;return r?Rt(a[r],u[r]):a[r]===We?-1:u[r]===We?1:0},s):ze},kt.matches=function(e,t){return kt(e,null,null,t)},kt.matchesSelector=function(e,t){if((e.ownerDocument||e)!==ze&&Fe(e),t=t.replace(gt,"='$1']"),Ae.matchesSelector&&Ve&&(!je||!je.test(t))&&(!He||!He.test(t)))try{var n=(void 0).call(e,t);if(n||Ae.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(LN){}return 0<kt(t,ze,null,[e]).length},kt.contains=function(e,t){return(e.ownerDocument||e)!==ze&&Fe(e),qe(e,t)},kt.attr=function(e,t){(e.ownerDocument||e)!==ze&&Fe(e);var n=Re.attrHandle[t.toLowerCase()],r=n&&et.call(Re.attrHandle,t.toLowerCase())?n(e,t,!Ve):undefined;return r!==undefined?r:Ae.attributes||!Ve?e.getAttribute(t):(r=e.getAttributeNode(t))&amp
 ;&r.specified?r.value:null},kt.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},kt.uniqueSort=function(e){var t,n=[],r=0,o=0;if(Me=!Ae.detectDuplicates,Ie=!Ae.sortStable&&e.slice(0),e.sort(Qe),Me){for(;t=e[o++];)t===e[o]&&(r=n.push(o));for(;r--;)e.splice(n[r],1)}return Ie=null,e},_e=kt.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=_e(e)}else if(3===o||4===o)return e.nodeValue}else for(;t=e[r++];)n+=_e(t);return n},(Re=kt.selectors={cacheLength:50,createPseudo:At,match:vt,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Et,St),e[3]=(e[3]||e[4]
 ||e[5]||"").replace(Et,St),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||kt.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&kt.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return vt.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&pt.test(n)&&(t=Be(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Et,St).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=Ye[e+" "];return t||(t=new RegExp("(^|"+ut+")"+e+"("+ut+"|$)"))&&Ye(e,func
 tion(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==Ze&&e.getAttribute("class")||"")})},ATTR:function(n,r,o){return function(e){var t=kt.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===o:"!="===r?t!==o:"^="===r?o&&0===t.indexOf(o):"*="===r?o&&-1<t.indexOf(o):"$="===r?o&&t.slice(-o.length)===o:"~="===r?-1<(" "+t+" ").indexOf(o):"|="===r&&(t===o||t.slice(0,o.length+1)===o+"-"))}},CHILD:function(m,e,t,g,p){var h="nth"!==m.slice(0,3),v="last"!==m.slice(-4),b="of-type"===e;return 1===g&&0===p?function(e){return!!e.parentNode}:function(e,t,n){var r,o,i,a,u,s,c=h!==v?"nextSibling":"previousSibling",l=e.parentNode,f=b&&e.nodeName.toLowerCase(),d=!n&&!b;if(l){if(h){for(;c;)
 {for(i=e;i=i[c];)if(b?i.nodeName.toLowerCase()===f:1===i.nodeType)return!1;s=c="only"===m&&!s&&"nextSibling"}return!0}if(s=[v?l.firstChild:l.lastChild],v&&d){for(u=(r=(o=l[$e]||(l[$e]={}))[m]||[])[0]===Ke&&r[1],a=r[0]===Ke&&r[2],i=u&&l.childNodes[u];i=++u&&i&&i[c]||(a=u=0)||s.pop();)if(1===i.nodeType&&++a&&i===e){o[m]=[Ke,u,a];break}}else if(d&&(r=(e[$e]||(e[$e]={}))[m])&&r[0]===Ke)a=r[1];else for(;(i=++u&&i&&i[c]||(a=u=0)||s.pop())&&((b?i.nodeName.toLowerCase()!==f:1!==i.nodeType)||!++a||(d&&((i[$e]||(i[$e]={}))[m]=[Ke,a]),i!==e)););return(a-=p)===g||a%g==0&&0<=a/g}}},PSEUDO:function(e,i){var t,a=Re.pseudos[e]||Re.setFilters[e.toLowerCase()]||kt.error("unsupported pseudo: "+e);return a[$e]?a(i):1<a.length?(t=[e,e,"",i],Re.setFilters.hasOwnProperty(e.toLowerCase())?At(function(e,t){for(var n,r=a(e,i),o=r
 .length;o--;)e[n=at.call(e,r[o])]=!(t[n]=r[o])}):function(e){return a(e,0,t)}):a}},pseudos:{not:At(function(e){var r=[],o=[],u=Oe(e.replace(ft,"$1"));return u[$e]?At(function(e,t,n,r){for(var o,i=u(e,null,r,[]),a=e.length;a--;)(o=i[a])&&(e[a]=!(t[a]=o))}):function(e,t,n){return r[0]=e,u(r,null,n,o),!o.pop()}}),has:At(function(t){return function(e){return 0<kt(t,e).length}}),contains:At(function(t){return t=t.replace(Et,St),function(e){return-1<(e.textContent||e.innerText||_e(e)).indexOf(t)}}),lang:At(function(n){return ht.test(n||"")||kt.error("unsupported lang: "+n),n=n.replace(Et,St).toLowerCase(),function(e){var t;do{if(t=Ve?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=window.location&&window.location.hash;return t&&t.slice(1)===e.id},root:func
 tion(e){return e===Ue},focus:function(e){return e===ze.activeElement&&(!ze.hasFocus||ze.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return!1===e.disabled},disabled:function(e){return!0===e.disabled},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!Re.pseudos.empty(e)},header:function(e){return yt.test(e.nodeName)},input:function(e){return bt.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute(&qu
 ot;type"))||"text"===t.toLowerCase())},first:Bt(function(){return[0]}),last:Bt(function(e,t){return[t-1]}),eq:Bt(function(e,t,n){return[n<0?n+t:n]}),even:Bt(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:Bt(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:Bt(function(e,t,n){for(var r=n<0?n+t:n;0<=--r;)e.push(r);return e}),gt:Bt(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=Re.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})Re.pseudos[Te]=_t(Te);for(Te in{submit:!0,reset:!0})Re.pseudos[Te]=Dt(Te);function Pt(){}function Lt(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function It(a,e,t){var u=e.dir,s=t&&"parentNode"===u,c=Xe++;return e.first?function(e,t,n){for(;e=e[u];)if(1===e.nodeType||s)return a(e,t,n)}:function(e,t,n){var r,o,i=[Ke,c];if(n){for(;e=e[u];)if((1===e.nodeType||s)&&a(e,t,n))return!0}else for(;e=e[u];)if(1===
 e.nodeType||s){if((r=(o=e[$e]||(e[$e]={}))[u])&&r[0]===Ke&&r[1]===c)return i[2]=r[2];if((o[u]=i)[2]=a(e,t,n))return!0}}}function Mt(o){return 1<o.length?function(e,t,n){for(var r=o.length;r--;)if(!o[r](e,t,n))return!1;return!0}:o[0]}function Ft(e,t,n,r,o){for(var i,a=[],u=0,s=e.length,c=null!=t;u<s;u++)(i=e[u])&&(n&&!n(i,r,o)||(a.push(i),c&&t.push(u)));return a}function zt(m,g,p,h,v,e){return h&&!h[$e]&&(h=zt(h)),v&&!v[$e]&&(v=zt(v,e)),At(function(e,t,n,r){var o,i,a,u=[],s=[],c=t.length,l=e||function(e,t,n){for(var r=0,o=t.length;r<o;r++)kt(e,t[r],n);return n}(g||"*",n.nodeType?[n]:n,[]),f=!m||!e&&g?l:Ft(l,u,m,n,r),d=p?v||(e?m:c||h)?[]:t:f;if(p&&p(f,d,n,r),h)for(o=Ft(d,s),h(o,[],n,r),i=o.length;i--;)(a=o[i])&&(d[s[i]]=!(f[s[i]]=a));if(e){if(v||m){if(v){for(o=[],i=d.length;i--;)(a=d[i])&&o.push(f[i]=a);v(null,d=[],o,r)}for(i=d.length;i--;)(a=d[i])&&-1<
 (o=v?at.call(e,a):u[i])&&(e[o]=!(t[o]=a))}}else d=Ft(d===t?d.splice(c,d.length):d),v?v(null,t,d,r):ot.apply(t,d)})}function Ut(e){for(var r,t,n,o=e.length,i=Re.relative[e[0].type],a=i||Re.relative[" "],u=i?1:0,s=It(function(e){return e===r},a,!0),c=It(function(e){return-1<at.call(r,e)},a,!0),l=[function(e,t,n){return!i&&(n||t!==Le)||((r=t).nodeType?s(e,t,n):c(e,t,n))}];u<o;u++)if(t=Re.relative[e[u].type])l=[It(Mt(l),t)];else{if((t=Re.filter[e[u].type].apply(null,e[u].matches))[$e]){for(n=++u;n<o&&!Re.relative[e[n].type];n++);return zt(1<u&&Mt(l),1<u&&Lt(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(ft,"$1"),t,u<n&&Ut(e.slice(u,n)),n<o&&Ut(e=e.slice(n)),n<o&&Lt(e))}l.push(t)}return Mt(l)}Pt.prototype=Re.filters=Re.pseudos,Re.setFilters=new Pt,Be=kt.tokenize=function(e,t){var n,r,o,i,a,u,s,c=Ge[e+" "];if(c)return t?0:c.s
 lice(0);for(a=e,u=[],s=Re.preFilter;a;){for(i in n&&!(r=dt.exec(a))||(r&&(a=a.slice(r[0].length)||a),u.push(o=[])),n=!1,(r=mt.exec(a))&&(n=r.shift(),o.push({value:n,type:r[0].replace(ft," ")}),a=a.slice(n.length)),Re.filter)!(r=vt[i].exec(a))||s[i]&&!(r=s[i](r))||(n=r.shift(),o.push({value:n,type:i,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?kt.error(e):Ge(e,u).slice(0)},Oe=kt.compile=function(e,t){var n,h,v,b,y,r,o=[],i=[],a=Je[e+" "];if(!a){for(t||(t=Be(e)),n=t.length;n--;)(a=Ut(t[n]))[$e]?o.push(a):i.push(a);(a=Je(e,(h=i,b=0<(v=o).length,y=0<h.length,r=function(e,t,n,r,o){var i,a,u,s=0,c="0",l=e&&[],f=[],d=Le,m=e||y&&Re.find.TAG("*",o),g=Ke+=null==d?1:Math.random()||.1,p=m.length;for(o&&(Le=t!==ze&&t);c!==p&&null!=(i=m[c]);c++){if(y&&i){for(a=0;u=h[a++];)if(u(i,t,n)){r.push(i);break}o&&(Ke=g)}b&&((i=!u&&i)&&
 amp;s--,e&&l.push(i))}if(s+=c,b&&c!==s){for(a=0;u=v[a++];)u(l,f,t,n);if(e){if(0<s)for(;c--;)l[c]||f[c]||(f[c]=nt.call(r));f=Ft(f)}ot.apply(r,f),o&&!e&&0<f.length&&1<s+v.length&&kt.uniqueSort(r)}return o&&(Ke=g,Le=d),l},b?At(r):r))).selector=e}return a},Pe=kt.select=function(e,t,n,r){var o,i,a,u,s,c="function"==typeof e&&e,l=!r&&Be(e=c.selector||e);if(n=n||[],1===l.length){if(2<(i=l[0]=l[0].slice(0)).length&&"ID"===(a=i[0]).type&&Ae.getById&&9===t.nodeType&&Ve&&Re.relative[i[1].type]){if(!(t=(Re.find.ID(a.matches[0].replace(Et,St),t)||[])[0]))return n;c&&(t=t.parentNode),e=e.slice(i.shift().value.length)}for(o=vt.needsContext.test(e)?0:i.length;o--&&(a=i[o],!Re.relative[u=a.type]);)if((s=Re.find[u])&&(r=s(a.matches[0].replace(Et,St),wt.test(i[0].type)&&Ot(t.parentNode)||t))){if(i.splice(o,1),!(e=r.length&&a
 mp;Lt(i)))return ot.apply(n,r),n;break}}return(c||Oe(e,l))(r,t,!Ve,n,wt.test(e)&&Ot(t.parentNode)||t),n},Ae.sortStable=$e.split("").sort(Qe).join("")===$e,Ae.detectDuplicates=!!Me,Fe(),Ae.sortDetached=!0;var Vt=Array.isArray,Ht=function(e,t,n){var r,o;if(!e)return 0;if(n=n||e,e.length!==undefined){for(r=0,o=e.length;r<o;r++)if(!1===t.call(n,e[r],r,e))return 0}else for(r in e)if(e.hasOwnProperty(r)&&!1===t.call(n,e[r],r,e))return 0;return 1},jt=function(e,t,n){var r,o;for(r=0,o=e.length;r<o;r++)if(t.call(n,e[r],r,e))return r;return-1},qt={isArray:Vt,toArray:function(e){var t,n,r=e;if(!Vt(e))for(r=[],t=0,n=e.length;t<n;t++)r[t]=e[t];return r},each:Ht,map:function(n,r){var o=[];return Ht(n,function(e,t){o.push(r(e,t,n))}),o},filter:function(n,r){var o=[];return Ht(n,function(e,t){r&&!r(e,t,n)||o.push(e)}),o},indexOf:function(e,t){var n,r;if(e)for(n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},reduce:function(e,t,n,r){var o=
 0;for(arguments.length<3&&(n=e[0]);o<e.length;o++)n=t.call(r,n,e[o],o);return n},findIndex:jt,find:function(e,t,n){var r=jt(e,t,n);return-1!==r?e[r]:undefined},last:function(e){return e[e.length-1]}},$t=/^\s*|\s*$/g,Wt=function(e){return null===e||e===undefined?"":(""+e).replace($t,"")},Kt=function(e,t){return t?!("array"!==t||!qt.isArray(e))||typeof e===t:e!==undefined},Xt=function(e,n,r,o){o=o||this,e&&(r&&(e=e[r]),qt.each(e,function(e,t){if(!1===n.call(o,e,t,r))return!1;Xt(e,n,r,o)}))},Yt={trim:Wt,isArray:qt.isArray,is:Kt,toArray:qt.toArray,makeMap:function(e,t,n){var r;for(t=t||",","string"==typeof(e=e||[])&&(e=e.split(t)),n=n||{},r=e.length;r--;)n[e[r]]={};return n},each:qt.each,map:qt.map,grep:qt.filter,inArray:qt.indexOf,hasOwn:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},extend:function(e,t){for(var n,r,o,i=[],a=2;a<arguments.length;a++)i[a-2]=arguments[a];
 var u,s=arguments;for(n=1,r=s.length;n<r;n++)for(o in t=s[n])t.hasOwnProperty(o)&&(u=t[o])!==undefined&&(e[o]=u);return e},create:function(e,t,n){var r,o,i,a,u,s=this,c=0;if(e=/^((static) )?([\w.]+)(:([\w.]+))?/.exec(e),i=e[3].match(/(^|\.)(\w+)$/i)[2],!(o=s.createNS(e[3].replace(/\.\w+$/,""),n))[i]){if("static"===e[2])return o[i]=t,void(this.onCreate&&this.onCreate(e[2],e[3],o[i]));t[i]||(t[i]=function(){},c=1),o[i]=t[i],s.extend(o[i].prototype,t),e[5]&&(r=s.resolve(e[5]).prototype,a=e[5].match(/\.(\w+)$/i)[1],u=o[i],o[i]=c?function(){return r[a].apply(this,arguments)}:function(){return this.parent=r[a],u.apply(this,arguments)},o[i].prototype[i]=o[i],s.each(r,function(e,t){o[i].prototype[t]=r[t]}),s.each(t,function(e,t){r[t]?o[i].prototype[t]=function(){return this.parent=r[t],e.apply(this,arguments)}:t!==i&&(o[i].prototype[t]=e)})),s.each(t["static"],function(e,t){o[i][t]=e})}},walk:Xt,createNS:function(e,t){
 var n,r;for(t=t||window,e=e.split("."),n=0;n<e.length;n++)t[r=e[n]]||(t[r]={}),t=t[r];return t},resolve:function(e,t){var n,r;for(t=t||window,n=0,r=(e=e.split(".")).length;n<r&&(t=t[e[n]]);n++);return t},explode:function(e,t){return!e||Kt(e,"array")?e:qt.map(e.split(t||","),Wt)},_addCacheSuffix:function(e){var t=de.cacheSuffix;return t&&(e+=(-1===e.indexOf("?")?"?":"&")+t),e}},Gt=document,Jt=Array.prototype.push,Qt=Array.prototype.slice,Zt=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,en=ke.Event,tn=Yt.makeMap("children,contents,next,prev"),nn=function(e){return void 0!==e},rn=function(e){return"string"==typeof e},on=function(e,t){var n,r,o;for(o=(t=t||Gt).createElement("div"),n=t.createDocumentFragment(),o.innerHTML=e;r=o.firstChild;)n.appendChild(r);return n},an=function(e,t,n,r){var o;if(rn(t))t=on(t,Cn(e[0]));else if(t.length&&!t.nodeType
 ){if(t=pn.makeArray(t),r)for(o=t.length-1;0<=o;o--)an(e,t[o],n,r);else for(o=0;o<t.length;o++)an(e,t[o],n,r);return e}if(t.nodeType)for(o=e.length;o--;)n.call(e[o],t);return e},un=function(e,t){return e&&t&&-1!==(" "+e.className+" ").indexOf(" "+t+" ")},sn=function(e,t,n){var r,o;return t=pn(t)[0],e.each(function(){var e=this;n&&r===e.parentNode||(r=e.parentNode,o=t.cloneNode(!1),e.parentNode.insertBefore(o,e)),o.appendChild(e)}),e},cn=Yt.makeMap("fillOpacity fontWeight lineHeight opacity orphans widows zIndex zoom"," "),ln=Yt.makeMap("checked compact declare defer disabled ismap multiple nohref noshade nowrap readonly selected"," "),fn={"for":"htmlFor","class":"className",readonly:"readOnly"},dn={"float":"cssFloat"},mn={},gn={},pn=function(e,t){return new pn.fn.init(e,t)},hn=/^\s*|\s*$/g,vn=function(e){re
 turn null===e||e===undefined?"":(""+e).replace(hn,"")},bn=function(e,t){var n,r,o,i;if(e)if((n=e.length)===undefined){for(r in e)if(e.hasOwnProperty(r)&&(i=e[r],!1===t.call(i,r,i)))break}else for(o=0;o<n&&(i=e[o],!1!==t.call(i,o,i));o++);return e},yn=function(e,n){var r=[];return bn(e,function(e,t){n(t,e)&&r.push(t)}),r},Cn=function(e){return e?9===e.nodeType?e:e.ownerDocument:Gt};pn.fn=pn.prototype={constructor:pn,selector:"",context:null,length:0,init:function(e,t){var n,r,o=this;if(!e)return o;if(e.nodeType)return o.context=o[0]=e,o.length=1,o;if(t&&t.nodeType)o.context=t;else{if(t)return pn(e).attr(t);o.context=t=document}if(rn(e)){if(!(n="<"===(o.selector=e).charAt(0)&&">"===e.charAt(e.length-1)&&3<=e.length?[null,e,null]:Zt.exec(e)))return pn(t).find(e);if(n[1])for(r=on(e,Cn(t)).firstChild;r;)Jt.call(o,r),r=r.nextSibling;else{if(!(r=Cn(t).getElementById(n[2])
 ))return o;if(r.id!==n[2])return o.find(e);o.length=1,o[0]=r}}else this.add(e,!1);return o},toArray:function(){return Yt.toArray(this)},add:function(e,t){var n,r,o=this;if(rn(e))return o.add(pn(e));if(!1!==t)for(n=pn.unique(o.toArray().concat(pn.makeArray(e))),o.length=n.length,r=0;r<n.length;r++)o[r]=n[r];else Jt.apply(o,pn.makeArray(e));return o},attr:function(t,n){var e,r=this;if("object"==typeof t)bn(t,function(e,t){r.attr(e,t)});else{if(!nn(n)){if(r[0]&&1===r[0].nodeType){if((e=mn[t])&&e.get)return e.get(r[0],t);if(ln[t])return r.prop(t)?t:undefined;null===(n=r[0].getAttribute(t,2))&&(n=undefined)}return n}this.each(function(){var e;if(1===this.nodeType){if((e=mn[t])&&e.set)return void e.set(this,n);null===n?this.removeAttribute(t,2):this.setAttribute(t,n,2)}})}return r},removeAttr:function(e){return this.attr(e,null)},prop:function(e,t){var n=this;if("object"==typeof(e=fn[e]||e))bn(e,function(e,t){n.prop(e,t)});else{if(!nn
 (t))return n[0]&&n[0].nodeType&&e in n[0]?n[0][e]:t;this.each(function(){1===this.nodeType&&(this[e]=t)})}return n},css:function(n,r){var e,o,i=this,t=function(e){return e.replace(/-(\D)/g,function(e,t){return t.toUpperCase()})},a=function(e){return e.replace(/[A-Z]/g,function(e){return"-"+e})};if("object"==typeof n)bn(n,function(e,t){i.css(e,t)});else if(nn(r))n=t(n),"number"!=typeof r||cn[n]||(r=r.toString()+"px"),i.each(function(){var e=this.style;if((o=gn[n])&&o.set)o.set(this,r);else{try{this.style[dn[n]||n]=r}catch(t){}null!==r&&""!==r||(e.removeProperty?e.removeProperty(a(n)):e.removeAttribute(n))}});else{if(e=i[0],(o=gn[n])&&o.get)return o.get(e);if(!e.ownerDocument.defaultView)return e.currentStyle?e.currentStyle[t(n)]:"";try{return e.ownerDocument.defaultView.getComputedStyle(e,null).getPropertyValue(a(n))}catch(u){return undefined}}return i},remove:function(){for(va
 r e,t=this.length;t--;)e=this[t],en.clean(e),e.parentNode&&e.parentNode.removeChild(e);return this},empty:function(){for(var e,t=this.length;t--;)for(e=this[t];e.firstChild;)e.removeChild(e.firstChild);return this},html:function(e){var t,n=this;if(nn(e)){t=n.length;try{for(;t--;)n[t].innerHTML=e}catch(r){pn(n[t]).empty().append(e)}return n}return n[0]?n[0].innerHTML:""},text:function(e){var t,n=this;if(nn(e)){for(t=n.length;t--;)"innerText"in n[t]?n[t].innerText=e:n[0].textContent=e;return n}return n[0]?n[0].innerText||n[0].textContent:""},append:function(){return an(this,arguments,function(e){(1===this.nodeType||this.host&&1===this.host.nodeType)&&this.appendChild(e)})},prepend:function(){return an(this,arguments,function(e){(1===this.nodeType||this.host&&1===this.host.nodeType)&&this.insertBefore(e,this.firstChild)},!0)},before:function(){return this[0]&&this[0].parentNode?an(this,arguments,function(e){t
 his.parentNode.insertBefore(e,this)}):this},after:function(){return this[0]&&this[0].parentNode?an(this,arguments,function(e){this.parentNode.insertBefore(e,this.nextSibling)},!0):this},appendTo:function(e){return pn(e).append(this),this},prependTo:function(e){return pn(e).prepend(this),this},replaceWith:function(e){return this.before(e).remove()},wrap:function(e){return sn(this,e)},wrapAll:function(e){return sn(this,e,!0)},wrapInner:function(e){return this.each(function(){pn(this).contents().wrapAll(e)}),this},unwrap:function(){return this.parent().each(function(){pn(this).replaceWith(this.childNodes)})},clone:function(){var e=[];return this.each(function(){e.push(this.cloneNode(!0))}),pn(e)},addClass:function(e){return this.toggleClass(e,!0)},removeClass:function(e){return this.toggleClass(e,!1)},toggleClass:function(o,i){var e=this;return"string"!=typeof o||(-1!==o.indexOf(" ")?bn(o.split(" "),function(){e.toggleClass(this,i)}):e.each(functio
 n(e,t){var n,r;(r=un(t,o))!==i&&(n=t.className,r?t.className=vn((" "+n+" ").replace(" "+o+" "," ")):t.className+=n?" "+o:o)})),e},hasClass:function(e){return un(this[0],e)},each:function(e){return bn(this,e)},on:function(e,t){return this.each(function(){en.bind(this,e,t)})},off:function(e,t){return this.each(function(){en.unbind(this,e,t)})},trigger:function(e){return this.each(function(){"object"==typeof e?en.fire(this,e.type,e):en.fire(this,e)})},show:function(){return this.css("display","")},hide:function(){return this.css("display","none")},slice:function(){return new pn(Qt.apply(this,arguments))},eq:function(e){return-1===e?this.slice(e):this.slice(e,+e+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},find:function(e){var t,n,r=[];for(t=0,n=this.length;t<n;t++)pn.find(e,this[t],r);return pn(r)},filter:function(n){return pn("fun
 ction"==typeof n?yn(this.toArray(),function(e,t){return n(t,e)}):pn.filter(n,this.toArray()))},closest:function(n){var r=[];return n instanceof pn&&(n=n[0]),this.each(function(e,t){for(;t;){if("string"==typeof n&&pn(t).is(n)){r.push(t);break}if(t===n){r.push(t);break}t=t.parentNode}}),pn(r)},offset:function(e){var t,n,r,o,i=0,a=0;return e?this.css(e):((t=this[0])&&(r=(n=t.ownerDocument).documentElement,t.getBoundingClientRect&&(i=(o=t.getBoundingClientRect()).left+(r.scrollLeft||n.body.scrollLeft)-r.clientLeft,a=o.top+(r.scrollTop||n.body.scrollTop)-r.clientTop)),{left:i,top:a})},push:Jt,sort:[].sort,splice:[].splice},Yt.extend(pn,{extend:Yt.extend,makeArray:function(e){return(t=e)&&t===t.window||e.nodeType?[e]:Yt.toArray(e);var t},inArray:function(e,t){var n;if(t.indexOf)return t.indexOf(e);for(n=t.length;n--;)if(t[n]===e)return n;return-1},isArray:Yt.isArray,each:bn,trim:vn,grep:yn,find:kt,expr:kt.selectors,unique:kt.uniqueSor
 t,text:kt.getText,contains:kt.contains,filter:function(e,t,n){var r=t.length;for(n&&(e=":not("+e+")");r--;)1!==t[r].nodeType&&t.splice(r,1);return t=1===t.length?pn.find.matchesSelector(t[0],e)?[t[0]]:[]:pn.find.matches(e,t)}});var xn=function(e,t,n){var r=[],o=e[t];for("string"!=typeof n&&n instanceof pn&&(n=n[0]);o&&9!==o.nodeType;){if(n!==undefined){if(o===n)break;if("string"==typeof n&&pn(o).is(n))break}1===o.nodeType&&r.push(o),o=o[t]}return r},wn=function(e,t,n,r){var o=[];for(r instanceof pn&&(r=r[0]);e;e=e[t])if(!n||e.nodeType===n){if(r!==undefined){if(e===r)break;if("string"==typeof r&&pn(e).is(r))break}o.push(e)}return o},Nn=function(e,t,n){for(e=e[t];e;e=e[t])if(e.nodeType===n)return e;return null};bn({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return xn(e,"parentNode")},next:function(e
 ){return Nn(e,"nextSibling",1)},prev:function(e){return Nn(e,"previousSibling",1)},children:function(e){return wn(e.firstChild,"nextSibling",1)},contents:function(e){return Yt.toArray(("iframe"===e.nodeName?e.contentDocument||e.contentWindow.document:e).childNodes)}},function(e,r){pn.fn[e]=function(t){var n=[];return this.each(function(){var e=r.call(n,this,t,n);e&&(pn.isArray(e)?n.push.apply(n,e):n.push(e))}),1<this.length&&(tn[e]||(n=pn.unique(n)),0===e.indexOf("parents")&&(n=n.reverse())),n=pn(n),t?n.filter(t):n}}),bn({parentsUntil:function(e,t){return xn(e,"parentNode",t)},nextUntil:function(e,t){return wn(e,"nextSibling",1,t).slice(1)},prevUntil:function(e,t){return wn(e,"previousSibling",1,t).slice(1)}},function(r,o){pn.fn[r]=function(t,e){var n=[];return this.each(function(){var e=o.call(n,this,t,n);e&&(pn.isArray(e)?n.push.apply(n,e):n.push(e))}),1<this.lengt
 h&&(n=pn.unique(n),0!==r.indexOf("parents")&&"prevUntil"!==r||(n=n.reverse())),n=pn(n),e?n.filter(e):n}}),pn.fn.is=function(e){return!!e&&0<this.filter(e).length},pn.fn.init.prototype=pn.fn,pn.overrideDefaults=function(n){var r,o=function(e,t){return r=r||n(),0===arguments.length&&(e=r.element),t||(t=r.context),new o.fn.init(e,t)};return pn.extend(o,this),o};var En=function(n,r,e){bn(e,function(e,t){n[e]=n[e]||{},n[e][r]=t})};de.ie&&de.ie<8&&(En(mn,"get",{maxlength:function(e){var t=e.maxLength;return 2147483647===t?undefined:t},size:function(e){var t=e.size;return 20===t?undefined:t},"class":function(e){return e.className},style:function(e){var t=e.style.cssText;return 0===t.length?undefined:t}}),En(mn,"set",{"class":function(e,t){e.className=t},style:function(e,t){e.style.cssText=t}})),de.ie&&de.ie<9&&(dn["float"]="styleFloat",En(
 gn,"set",{opacity:function(e,t){var n=e.style;null===t||""===t?n.removeAttribute("filter"):(n.zoom=1,n.filter="alpha(opacity="+100*t+")")}})),pn.attrHooks=mn,pn.cssHooks=gn;var Sn,kn,Tn,An=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}return undefined}(e,t);if(!n)return{major:0,minor:0};var r=function(e){return Number(t.replace(n,"$"+e))};return _n(r(1),r(2))},Rn=function(){return _n(0,0)},_n=function(e,t){return{major:e,minor:t}},Dn={nu:_n,detect:function(e,t){var n=String(t).toLowerCase();return 0===e.length?Rn():An(e,n)},unknown:Rn},Bn="Firefox",On=function(e,t){return function(){return t===e}},Pn=function(e){var t=e.current;return{current:t,version:e.version,isEdge:On("Edge",t),isChrome:On("Chrome",t),isIE:On("IE",t),isOpera:On("Opera",t),isFirefox:On(Bn,t),isSafari:On("Safari",t)}},Ln={unknown:function(){retu
 rn Pn({current:undefined,version:Dn.unknown()})},nu:Pn,edge:j("Edge"),chrome:j("Chrome"),ie:j("IE"),opera:j("Opera"),firefox:j(Bn),safari:j("Safari")},In="Windows",Mn="Android",Fn="Solaris",zn="FreeBSD",Un=function(e,t){return function(){return t===e}},Vn=function(e){var t=e.current;return{current:t,version:e.version,isWindows:Un(In,t),isiOS:Un("iOS",t),isAndroid:Un(Mn,t),isOSX:Un("OSX",t),isLinux:Un("Linux",t),isSolaris:Un(Fn,t),isFreeBSD:Un(zn,t)}},Hn={unknown:function(){return Vn({current:undefined,version:Dn.unknown()})},nu:Vn,windows:j(In),ios:j("iOS"),android:j(Mn),linux:j("Linux"),osx:j("OSX"),solaris:j(Fn),freebsd:j(zn)},jn=function(e,t){var n=String(t).toLowerCase();return V(e,function(e){return e.search(n)})},qn=function(e,n){return jn(e,n).map(function(e){var t=Dn.detect(e.versionRegexes,n);return{current:e.name,version:t}})
 },$n=function(e,n){return jn(e,n).map(function(e){var t=Dn.detect(e.versionRegexes,n);return{current:e.name,version:t}})},Wn=function(e,t){return-1!==e.indexOf(t)},Kn=function(e){return e.replace(/^\s+|\s+$/g,"")},Xn=function(e){return e.replace(/\s+$/g,"")},Yn=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,Gn=function(t){return function(e){return Wn(e,t)}},Jn=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(e){return Wn(e,"edge/")&&Wn(e,"chrome")&&Wn(e,"safari")&&Wn(e,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,Yn],search:function(e){return Wn(e,"chrome")&&!Wn(e,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(e){return Wn(e,"msie")||Wn(e,"trident")}},{name:"Opera",versionRegexes:[
 Yn,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:Gn("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:Gn("firefox")},{name:"Safari",versionRegexes:[Yn,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(e){return(Wn(e,"safari")||Wn(e,"mobile/"))&&Wn(e,"applewebkit")}}],Qn=[{name:"Windows",search:Gn("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(e){return Wn(e,"iphone")||Wn(e,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:Gn("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:Gn("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:Gn("linux"),versionRegexes:[
 ]},{name:"Solaris",search:Gn("sunos"),versionRegexes:[]},{name:"FreeBSD",search:Gn("freebsd"),versionRegexes:[]}],Zn={browsers:j(Jn),oses:j(Qn)},er=function(e){var t,n,r,o,i,a,u,s,c,l,f,d=Zn.browsers(),m=Zn.oses(),g=qn(d,e).fold(Ln.unknown,Ln.nu),p=$n(m,e).fold(Hn.unknown,Hn.nu);return{browser:g,os:p,deviceType:(n=g,r=e,o=(t=p).isiOS()&&!0===/ipad/i.test(r),i=t.isiOS()&&!o,a=t.isAndroid()&&3===t.version.major,u=t.isAndroid()&&4===t.version.major,s=o||a||u&&!0===/mobile/i.test(r),c=t.isiOS()||t.isAndroid(),l=c&&!s,f=n.isSafari()&&t.isiOS()&&!1===/safari/i.test(r),{isiPad:j(o),isiPhone:j(i),isTablet:j(s),isPhone:j(l),isTouch:j(c),isAndroid:t.isAndroid,isiOS:t.isiOS,isWebView:j(f)})}},tr={detect:(Sn=function(){var e=navigator.userAgent;return er(e)},Tn=!1,function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return Tn||(Tn=!0,kn=Sn.apply(null,e)),kn})},nr=function(e
 ){if(null===e||e===undefined)throw new Error("Node cannot be null or undefined");return{dom:j(e)}},rr={fromHtml:function(e,t){var n=(t||document).createElement("div");if(n.innerHTML=e,!n.hasChildNodes()||1<n.childNodes.length)throw console.error("HTML does not have a single root node",e),"HTML must have a single root node";return nr(n.childNodes[0])},fromTag:function(e,t){var n=(t||document).createElement(e);return nr(n)},fromText:function(e,t){var n=(t||document).createTextNode(e);return nr(n)},fromDom:nr,fromPoint:function(e,t,n){var r=e.dom();return A.from(r.elementFromPoint(t,n)).map(nr)}},or=(Node.ATTRIBUTE_NODE,Node.CDATA_SECTION_NODE,Node.COMMENT_NODE,Node.DOCUMENT_NODE),ir=(Node.DOCUMENT_TYPE_NODE,Node.DOCUMENT_FRAGMENT_NODE,Node.ELEMENT_NODE),ar=Node.TEXT_NODE,ur=(Node.PROCESSING_INSTRUCTION_NODE,Node.ENTITY_REFERENCE_NODE,Node.ENTITY_NODE,Node.NOTATION_NODE,function(e){return e.dom().nodeName.toLowerCase()}),sr=function(t){return 
 function(e){return e.dom().nodeType===t}},cr=sr(ir),lr=sr(ar),fr=Object.keys,dr=Object.hasOwnProperty,mr=function(e,t){for(var n=fr(e),r=0,o=n.length;r<o;r++){var i=n[r];t(e[i],i,e)}},gr=function(r,o){var i={};return mr(r,function(e,t){var n=o(e,t,r);i[n.k]=n.v}),i},pr=function(e,t,n){if(!(R(n)||O(n)||L(n)))throw console.error("Invalid call to Attr.set. Key ",t,":: Value ",n,":: Element ",e),new Error("Attribute value was not simple");e.setAttribute(t,n+"")},hr=function(e,t,n){pr(e.dom(),t,n)},vr=function(e,t){var n=e.dom();mr(t,function(e,t){pr(n,t,e)})},br=function(e,t){var n=e.dom().getAttribute(t);return null===n?undefined:n},yr=function(e,t){e.dom().removeAttribute(t)},Cr=function(e){return e.style!==undefined},xr=function(e,t){var n=e.dom();mr(t,function(e,t){!function(e,t,n){if(!R(n))throw console.error("Invalid call to CSS.set. Property ",t,":: Value ",n,":: Element ",e),new Error("CSS va
 lue must be a string: "+n);Cr(e)&&e.style.setProperty(t,n)}(n,t,e)})},wr=function(e,t){var n,r,o=e.dom(),i=window.getComputedStyle(o).getPropertyValue(t),a=""!==i||(r=lr(n=e)?n.dom().parentNode:n.dom())!==undefined&&null!==r&&r.ownerDocument.body.contains(r)?i:Nr(o,t);return null===a?undefined:a},Nr=function(e,t){return Cr(e)?e.style.getPropertyValue(t):""},Er=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 F(t,function(e,t){r[e]=j(n[t])}),r}},Sr=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},kr=function(){return ie.getOrDie("Node")},Tr=function(e,t,n){return 0!=(e.compareDocumentPosition(t)&n)},
 Ar=function(e,t){return Tr(e,t,kr().DOCUMENT_POSITION_CONTAINED_BY)},Rr=ir,_r=or,Dr=function(e,t){var n=e.dom();if(n.nodeType!==Rr)return!1;if(n.matches!==undefined)return n.matches(t);if(n.msMatchesSelector!==undefined)return n.msMatchesSelector(t);if(n.webkitMatchesSelector!==undefined)return n.webkitMatchesSelector(t);if(n.mozMatchesSelector!==undefined)return n.mozMatchesSelector(t);throw new Error("Browser lacks native selectors")},Br=function(e){return e.nodeType!==Rr&&e.nodeType!==_r||0===e.childElementCount},Or=function(e,t){return e.dom()===t.dom()},Pr=tr.detect().browser.isIE()?function(e,t){return Ar(e.dom(),t.dom())}:function(e,t){var n=e.dom(),r=t.dom();return n!==r&&n.contains(r)},Lr=function(e){return rr.fromDom(e.dom().ownerDocument)},Ir=function(e){var t=e.dom();return A.from(t.parentNode).map(rr.fromDom)},Mr=function(e){var t=e.dom();return A.from(t.previousSibling).map(rr.fromDom)},Fr=function(e){var t=e.dom();return A.from(t.nextSibling)
 .map(rr.fromDom)},zr=function(e){return t=Sr(e,Mr),(n=Q.call(t,0)).reverse(),n;var t,n},Ur=function(e){return Sr(e,Fr)},Vr=function(e){var t=e.dom();return $(t.childNodes,rr.fromDom)},Hr=function(e,t){var n=e.dom().childNodes;return A.from(n[t]).map(rr.fromDom)},jr=function(e){return Hr(e,0)},qr=function(e){return Hr(e,e.dom().childNodes.length-1)},$r=(Er("element","offset"),tr.detect().browser),Wr=function(e){return V(e,cr)},Kr={getPos:function(e,t,n){var r,o,i,a=0,u=0,s=e.ownerDocument;if(n=n||e,t){if(n===e&&t.getBoundingClientRect&&"static"===wr(rr.fromDom(e),"position"))return{x:a=(o=t.getBoundingClientRect()).left+(s.documentElement.scrollLeft||e.scrollLeft)-s.documentElement.clientLeft,y:u=o.top+(s.documentElement.scrollTop||e.scrollTop)-s.documentElement.clientTop};for(r=t;r&&r!==n&&r.nodeType;)a+=r.offsetLeft||0,u+=r.offsetTop||0,r=r.offsetParent;for(r=t.parentNode;r&&r!==n&&r.nodeType;)a
 -=r.scrollLeft||0,u-=r.scrollTop||0,r=r.parentNode;u+=(i=rr.fromDom(t),$r.isFirefox()&&"table"===ur(i)?Wr(Vr(i)).filter(function(e){return"caption"===ur(e)}).bind(function(o){return Wr(Ur(o)).map(function(e){var t=e.dom().offsetTop,n=o.dom().offsetTop,r=o.dom().offsetHeight;return t<=n?-r:0})}).getOr(0):0)}return{x:a,y:u}}},Xr=function(e){var n=A.none(),t=[],r=function(e){o()?a(e):t.push(e)},o=function(){return n.isSome()},i=function(e){F(e,a)},a=function(t){n.each(function(e){setTimeout(function(){t(e)},0)})};return e(function(e){n=A.some(e),i(t),t=[]}),{get:r,map:function(n){return Xr(function(t){r(function(e){t(n(e))})})},isReady:o}},Yr={nu:Xr,pure:function(t){return Xr(function(e){e(t)})}},Gr=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 Yr.nu(e)};return{map:function(r){return Gr(function(n){e(function(e){va
 r t=r(e);n(t)})})},bind:function(n){return Gr(function(t){e(function(e){n(e).get(t)})})},anonBind:function(n){return Gr(function(t){e(function(e){n.get(t)})})},toLazy:n,toCached:function(){var t=null;return Gr(function(e){null===t&&(t=n()),t.get(e)})},get:e}},Jr={nu:Gr,pure:function(t){return Gr(function(e){e(t)})}},Qr=function(a,e){return e(function(r){var o=[],i=0;0===a.length?r([]):F(a,function(e,t){var n;e.get((n=t,function(e){o[n]=e,++i>=a.length&&r(o)}))})})},Zr=function(e){return Qr(e,Jr.nu)},eo=function(n){return{is:function(e){return n===e},isValue:x,isError:C,getOr:j(n),getOrThunk:j(n),getOrDie:j(n),or:function(e){return eo(n)},orThunk:function(e){return eo(n)},fold:function(e,t){return t(n)},map:function(e){return eo(e(n))},mapError:function(e){return eo(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 A.some(n)}}},to=function(n){return{is:C,isValue:C,isEr
 ror:x,getOr:q,getOrThunk:function(e){return e()},getOrDie:function(){return e=String(n),function(){throw new Error(e)}();var e},or:function(e){return e},orThunk:function(e){return e()},fold:function(e,t){return e(n)},map:function(e){return to(n)},mapError:function(e){return to(e(n))},each:o,bind:function(e){return to(n)},exists:C,forall:x,toOption:A.none}},no={value:eo,error:to};function ro(e,u){var t=e,n=function(e,t,n,r){var o,i;if(e){if(!r&&e[t])return e[t];if(e!==u){if(o=e[n])return o;for(i=e.parentNode;i&&i!==u;i=i.parentNode)if(o=i[n])return o}}};this.current=function(){return t},this.next=function(e){return t=n(t,"firstChild","nextSibling",e)},this.prev=function(e){return t=n(t,"lastChild","previousSibling",e)},this.prev2=function(e){return t=function(e,t,n,r){var o,i,a;if(e){if(o=e[n],u&&o===u)return;if(o){if(!r)for(a=o[t];a;a=a[t])if(!a[t])return a;return o}if((i=e.parentNode)&&i!==u)return i}}(t,"
 lastChild","previousSibling",e)}}var oo,io,ao,uo=function(t){var n;return function(e){return(n=n||function(e,t){for(var n={},r=0,o=e.length;r<o;r++){var i=e[r];n[String(i)]=t(i,r)}return n}(t,j(!0))).hasOwnProperty(ur(e))}},so=uo(["h1","h2","h3","h4","h5","h6"]),co=uo(["article","aside","details","div","dt","figcaption","footer","form","fieldset","header","hgroup","html","main","nav","section","summary","body","p","dl","multicol","dd","figure","address","center","blockquote","h1","h2","h3","h4","h5","h6","listing","xmp","pre","plaintext","menu","di
 r","ul","ol","li","hr","table","tbody","thead","tfoot","th","tr","td","caption"]),lo=function(e){return cr(e)&&!co(e)},fo=function(e){return cr(e)&&"br"===ur(e)},mo=uo(["h1","h2","h3","h4","h5","h6","p","div","address","pre","form","blockquote","center","dir","fieldset","header","footer","article","section","hgroup","aside","nav","figure"]),go=uo(["ul","ol","dl"]),po=uo(["li","dd","dt"]),ho=uo(["area","base","basefont","br","col","frame","hr","img","input",&quot
 ;isindex","link","meta","param","embed","source","wbr","track"]),vo=uo(["thead","tbody","tfoot"]),bo=uo(["td","th"]),yo=uo(["pre","script","textarea","style"]),Co=function(t){return function(e){return!!e&&e.nodeType===t}},xo=Co(1),wo=function(e){var r=e.toLowerCase().split(" ");return function(e){var t,n;if(e&&e.nodeType)for(n=e.nodeName.toLowerCase(),t=0;t<r.length;t++)if(n===r[t])return!0;return!1}},No=function(t){return function(e){if(xo(e)){if(e.contentEditable===t)return!0;if(e.getAttribute("data-mce-contenteditable")===t)return!0}return!1}},Eo=Co(3),So=Co(8),ko=Co(9),To=wo("br"),Ao=No("true"),Ro=No("false"),_o={isText:Eo,isElement:xo,isComment:So,isDocument:ko,isBr:To,isContentEditableTrue:Ao,isContentEditableFalse:Ro,matchNodeNames:wo,hasPropValu
 e:function(t,n){return function(e){return xo(e)&&e[t]===n}},hasAttribute:function(t,e){return function(e){return xo(e)&&e.hasAttribute(t)}},hasAttributeValue:function(t,n){return function(e){return xo(e)&&e.getAttribute(t)===n}},matchStyleValues:function(r,e){var o=e.toLowerCase().split(" ");return function(e){var t;if(xo(e))for(t=0;t<o.length;t++){var n=e.ownerDocument.defaultView.getComputedStyle(e,null);if((n?n.getPropertyValue(r):null)===o[t])return!0}return!1}},isBogus:function(e){return xo(e)&&e.hasAttribute("data-mce-bogus")},isBogusAll:function(e){return xo(e)&&"all"===e.getAttribute("data-mce-bogus")},isTable:function(e){return xo(e)&&"TABLE"===e.tagName}},Do=function(e){return e&&"SPAN"===e.tagName&&"bookmark"===e.getAttribute("data-mce-type")},Bo=function(e,t){var n,r=t.childNodes;if(!_o.isElement(t)||!Do(t)){for(n=r.length-1;0
 <=n;n--)Bo(e,r[n]);if(!1===_o.isDocument(t)){if(_o.isText(t)&&0<t.nodeValue.length){var o=Yt.trim(t.nodeValue).length;if(e.isBlock(t.parentNode)||0<o)return;if(0===o&&(a=(i=t).previousSibling&&"SPAN"===i.previousSibling.nodeName,u=i.nextSibling&&"SPAN"===i.nextSibling.nodeName,a&&u))return}else if(_o.isElement(t)&&(1===(r=t.childNodes).length&&Do(r[0])&&t.parentNode.insertBefore(r[0],t),r.length||ho(rr.fromDom(t))))return;e.remove(t)}var i,a,u;return t}},Oo={trimNode:Bo},Po=Yt.makeMap,Lo=/[&<>\"\u0060\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,Io=/[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,Mo=/[<>&\"\']/g,Fo=/&#([a-z0-9]+);?|&([a-z0-9]+);/gi,zo={128:"\u20ac",130:"\u201a",131:"\u0192",132:"\u201e",133:"\u2026",134:"\u2020",135:"\u2021",13
 6:"\u02c6",137:"\u2030",138:"\u0160",139:"\u2039",140:"\u0152",142:"\u017d",145:"\u2018",146:"\u2019",147:"\u201c",148:"\u201d",149:"\u2022",150:"\u2013",151:"\u2014",152:"\u02dc",153:"\u2122",154:"\u0161",155:"\u203a",156:"\u0153",158:"\u017e",159:"\u0178"};io={'"':"&quot;","'":"&#39;","<":"&lt;",">":"&gt;","&":"&amp;","`":"&#96;"},ao={"&lt;":"<","&gt;":">","&amp;":"&","&quot;":'"',"&apos;":"'"};var Uo=function(e,t){var n,r,o,i={};if(e){for(e=e.split(","),t=t||10,n=0;n<e.length;n+=2)r=String.fromCharCode
 (parseInt(e[n],t)),io[r]||(o="&"+e[n+1]+";",i[r]=o,i[o]=r);return i}};oo=Uo("50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta
 ,sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,t9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor
 ,8ob,rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro",32);var Vo=function(e,t){return e.replace(t?Lo:Io,function(e){return io[e]||e})},Ho=function(e,t){return e.replace(t?Lo:Io,function(e){return 1<e.length?"&#"+(1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320)+65536)+";":io[e]||"&#"+e.charCodeAt(0)+";"})},jo=function(e,t,n){return n=n||oo,e.replace(t?Lo:Io,function(e){return io[e]||n[e]||e})},qo={encodeRaw:Vo,encodeAllRaw:function(e){return(""+e).replace(Mo,function(e){return io[e]||e})},encodeNumeric:Ho,encodeNamed:jo,getEncodeFunc:function(e,t){var n=Uo(t)||oo,r=Po(e.replace(/\+/g,","));return r.named&&
 r.numeric?function(e,t){return e.replace(t?Lo:Io,function(e){return io[e]!==undefined?io[e]:n[e]!==undefined?n[e]:1<e.length?"&#"+(1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320)+65536)+";":"&#"+e.charCodeAt(0)+";"})}:r.named?t?function(e,t){return jo(e,t,n)}:jo:r.numeric?Ho:Vo},decode:function(e){return e.replace(Fo,function(e,t){return t?65535<(t="x"===t.charAt(0).toLowerCase()?parseInt(t.substr(1),16):parseInt(t,10))?(t-=65536,String.fromCharCode(55296+(t>>10),56320+(1023&t))):zo[t]||String.fromCharCode(t):ao[e]||oo[e]||(n=e,(r=rr.fromTag("div").dom()).innerHTML=n,r.textContent||r.innerText||n);var n,r})}},$o={},Wo={},Ko=Yt.makeMap,Xo=Yt.each,Yo=Yt.extend,Go=Yt.explode,Jo=Yt.inArray,Qo=function(e,t){return(e=Yt.trim(e))?e.split(t||" "):[]},Zo=function(e){var u,t,n,r,o,i,s={},a=function(e,t,n){var r,o,i,a=function(e,t){var n,r,o={};for(n=0,r=e.length;n<r;n++)o[e[n]]=t||{};return o
 };for(t=t||"","string"==typeof(n=n||[])&&(n=Qo(n)),r=(e=Qo(e)).length;r--;)i={attributes:a(o=Qo([u,t].join(" "))),attributesOrder:o,children:a(n,Wo)},s[e[r]]=i},c=function(e,t){var n,r,o,i;for(n=(e=Qo(e)).length,t=Qo(t);n--;)for(r=s[e[n]],o=0,i=t.length;o<i;o++)r.attributes[t[o]]={},r.attributesOrder.push(t[o])};return $o[e]?$o[e]:(u="id accesskey class dir lang style tabindex title role",t="address blockquote div dl fieldset form h1 h2 h3 h4 h5 h6 hr menu ol p pre table ul",n="a abbr b bdo br button cite code del dfn em embed i iframe img input ins kbd label map noscript object q s samp script select small span strong sub sup textarea u var #text #comment","html4"!==e&&(u+=" contenteditable contextmenu draggable dropzone hidden spellcheck translate",t+=" article aside details dialog figure main header footer hgroup section nav",n+=" audio canvas command datalist mark me
 ter output picture progress time wbr video ruby bdi keygen"),"html5-strict"!==e&&(u+=" xml:lang",n=[n,i="acronym applet basefont big font strike tt"].join(" "),Xo(Qo(i),function(e){a(e,"",n)}),t=[t,o="center dir isindex noframes"].join(" "),r=[t,n].join(" "),Xo(Qo(o),function(e){a(e,"",r)})),r=r||[t,n].join(" "),a("html","manifest","head body"),a("head","","base command link meta noscript script style title"),a("title hr noscript br"),a("base","href target"),a("link","href rel media hreflang type sizes hreflang"),a("meta","name http-equiv content charset"),a("style","media type scoped"),a("script","src async defer type charset"),a("body","onafterprint onbeforeprint onbeforeunload onblur one
 rror onfocus onhashchange onload onmessage onoffline ononline onpagehide onpageshow onpopstate onresize onscroll onstorage onunload",r),a("address dt dd div caption","",r),a("h1 h2 h3 h4 h5 h6 pre p abbr code var samp kbd sub sup i b u bdo span legend em strong small s cite dfn","",n),a("blockquote","cite",r),a("ol","reversed start type","li"),a("ul","","li"),a("li","value",r),a("dl","","dt dd"),a("a","href target rel media hreflang type",n),a("q","cite",n),a("ins del","cite datetime",r),a("img","src sizes srcset alt usemap ismap width height"),a("iframe","src name width height",r),a("embed","src type width height"),a("object","data type typemustmatch name usemap form width heig
 ht",[r,"param"].join(" ")),a("param","name value"),a("map","name",[r,"area"].join(" ")),a("area","alt coords shape href target rel media hreflang type"),a("table","border","caption colgroup thead tfoot tbody tr"+("html4"===e?" col":"")),a("colgroup","span","col"),a("col","span"),a("tbody thead tfoot","","tr"),a("tr","","td th"),a("td","colspan rowspan headers",r),a("th","colspan rowspan headers scope abbr",r),a("form","accept-charset action autocomplete enctype method name novalidate target",r),a("fieldset","disabled form name",[r,"legend"].join(" ")),a("label","form for",n),a("input",
 "accept alt autocomplete checked dirname disabled form formaction formenctype formmethod formnovalidate formtarget height list max maxlength min multiple name pattern readonly required size src step type value width"),a("button","disabled form formaction formenctype formmethod formnovalidate formtarget name type value","html4"===e?r:n),a("select","disabled form multiple name required size","option optgroup"),a("optgroup","disabled label","option"),a("option","disabled label selected value"),a("textarea","cols dirname disabled form maxlength name readonly required rows wrap"),a("menu","type label",[r,"li"].join(" ")),a("noscript","",r),"html4"!==e&&(a("wbr"),a("ruby","",[n,"rt rp"].join(" ")),a("figcaption",&qu
 ot;",r),a("mark rt rp summary bdi","",n),a("canvas","width height",r),a("video","src crossorigin poster preload autoplay mediagroup loop muted controls width height buffered",[r,"track source"].join(" ")),a("audio","src crossorigin preload autoplay mediagroup loop muted controls buffered volume",[r,"track source"].join(" ")),a("picture","","img source"),a("source","src srcset type media sizes"),a("track","kind src srclang label default"),a("datalist","",[n,"option"].join(" ")),a("article section nav aside main header footer","",r),a("hgroup","","h1 h2 h3 h4 h5 h6"),a("figure","",[r,"figcaption"].join(" ")),a("time","datetime",n),a("dialog&
 quot;,"open",r),a("command","type label icon disabled checked radiogroup command"),a("output","for form name",n),a("progress","value max",n),a("meter","value min max low high optimum",n),a("details","open",[r,"summary"].join(" ")),a("keygen","autofocus challenge disabled form keytype name")),"html5-strict"!==e&&(c("script","language xml:space"),c("style","xml:space"),c("object","declare classid code codebase codetype archive standby align border hspace vspace"),c("embed","align name hspace vspace"),c("param","valuetype type"),c("a","charset name rev shape coords"),c("br","clear"),c("applet","codebase archive code object alt name width height align hspace vspace&quot
 ;),c("img","name longdesc align border hspace vspace"),c("iframe","longdesc frameborder marginwidth marginheight scrolling align"),c("font basefont","size color face"),c("input","usemap align"),c("select","onchange"),c("textarea"),c("h1 h2 h3 h4 h5 h6 div p legend caption","align"),c("ul","type compact"),c("li","type"),c("ol dl menu dir","compact"),c("pre","width xml:space"),c("hr","align noshade size width"),c("isindex","prompt"),c("table","summary width frame rules cellspacing cellpadding align bgcolor"),c("col","width align char charoff valign"),c("colgroup","width align char charoff valign"),c("thead","align char charoff valign"),c("tr","al
 ign char charoff valign bgcolor"),c("th","axis align char charoff valign nowrap bgcolor width height"),c("form","accept"),c("td","abbr axis scope align char charoff valign nowrap bgcolor width height"),c("tfoot","align char charoff valign"),c("tbody","align char charoff valign"),c("area","nohref"),c("body","background bgcolor text link vlink alink")),"html4"!==e&&(c("input button select textarea","autofocus"),c("input textarea","placeholder"),c("a","download"),c("link script img","crossorigin"),c("iframe","sandbox seamless allowfullscreen")),Xo(Qo("a form meter progress dfn"),function(e){s[e]&&delete s[e].children[e]}),delete s.caption.children.table,delete s.script,$o[e]=s)},ei=function(e,n){var r;return e
 &&(r={},"string"==typeof e&&(e={"*":e}),Xo(e,function(e,t){r[t]=r[t.toUpperCase()]="map"===n?Ko(e,/[, ]/):Go(e,/[, ]/)})),r};function ti(i){var e,t,n,r,o,a,u,s,c,l,f,d,m,N={},g={},E=[],p={},h={},v=function(e,t,n){var r=i[e];return r?r=Ko(r,/[, ]/,Ko(r.toUpperCase(),/[, ]/)):(r=$o[e])||(r=Ko(t," ",Ko(t.toUpperCase()," ")),r=Yo(r,n),$o[e]=r),r};n=Zo((i=i||{}).schema),!1===i.verify_html&&(i.valid_elements="*[*]"),e=ei(i.valid_styles),t=ei(i.invalid_styles,"map"),s=ei(i.valid_classes,"map"),r=v("whitespace_elements","pre script noscript style textarea video audio iframe object code"),o=v("self_closing_elements","colgroup dd dt li option p td tfoot th thead tr"),a=v("short_ended_elements","area base basefont br col frame hr img input isindex link meta param embed source wbr track"),u=v("boolean_attributes","chec
 ked compact declare defer disabled ismap multiple nohref noresize noshade nowrap readonly selected autoplay loop controls"),l=v("non_empty_elements","td th iframe video audio object script pre code",a),f=v("move_caret_before_on_enter_elements","table",l),d=v("text_block_elements","h1 h2 h3 h4 h5 h6 p div address pre form blockquote center dir fieldset header footer article section hgroup aside main nav figure"),c=v("block_elements","hr table tbody thead tfoot th tr td li ol ul caption dl dt dd noscript menu isindex option datalist select optgroup figcaption details summary",d),m=v("text_inline_elements","span strong b em i font strike u var cite dfn code mark q sup sub samp"),Xo((i.special||"script noscript noframes noembed title style textarea xmp").split(" "),function(e){h[e]=new RegExp("</"+e+"[^>]*>","gi")});var S=fun
 ction(e){return new RegExp("^"+e.replace(/([?+*])/g,".$1")+"$")},b=function(e){var t,n,r,o,i,a,u,s,c,l,f,d,m,g,p,h,v,b,y,C=/^([#+\-])?([^\[!\/]+)(?:\/([^\[!]+))?(?:(!?)\[([^\]]+)\])?$/,x=/^([!\-])?(\w+[\\:]:\w+|[^=:<]+)?(?:([=:<])(.*))?$/,w=/[*?+]/;if(e)for(e=Qo(e,","),N["@"]&&(h=N["@"].attributes,v=N["@"].attributesOrder),t=0,n=e.length;t<n;t++)if(i=C.exec(e[t])){if(g=i[1],c=i[2],p=i[3],s=i[5],a={attributes:d={},attributesOrder:m=[]},"#"===g&&(a.paddEmpty=!0),"-"===g&&(a.removeEmpty=!0),"!"===i[4]&&(a.removeEmptyAttrs=!0),h){for(b in h)d[b]=h[b];m.push.apply(m,v)}if(s)for(r=0,o=(s=Qo(s,"|")).length;r<o;r++)if(i=x.exec(s[r])){if(u={},f=i[1],l=i[2].replace(/[\\:]:/g,":"),g=i[3],y=i[4],"!"===f&&(a.attributesRequired=a.attributesRequired||[],a.attributesRequired.push(l),u.required=!0),"-"===f){del
 ete d[l],m.splice(Jo(m,l),1);continue}g&&("="===g&&(a.attributesDefault=a.attributesDefault||[],a.attributesDefault.push({name:l,value:y}),u.defaultValue=y),":"===g&&(a.attributesForced=a.attributesForced||[],a.attributesForced.push({name:l,value:y}),u.forcedValue=y),"<"===g&&(u.validValues=Ko(y,"?"))),w.test(l)?(a.attributePatterns=a.attributePatterns||[],u.pattern=S(l),a.attributePatterns.push(u)):(d[l]||m.push(l),d[l]=u)}h||"@"!==c||(h=d,v=m),p&&(a.outputName=c,N[p]=a),w.test(c)?(a.pattern=S(c),E.push(a)):N[c]=a}},y=function(e){N={},E=[],b(e),Xo(n,function(e,t){g[t]=e.children})},C=function(e){var a=/^(~)?(.+)$/;e&&($o.text_block_elements=$o.block_elements=null,Xo(Qo(e,","),function(e){var t=a.exec(e),n="~"===t[1],r=n?"span":"div",o=t[2];if(g[o]=g[r],p[o]=r,n||(c[o.toUpperCase()]={},c[o]={}),!N[o]){var i=N[r];delete(i=Yo({},i)).removeEmptyAt
 trs,delete i.removeEmpty,N[o]=i}Xo(g,function(e,t){e[r]&&(g[t]=e=Yo({},g[t]),e[o]=e[r])})}))},x=function(e){var o=/^([+\-]?)(\w+)\[([^\]]+)\]$/;$o[i.schema]=null,e&&Xo(Qo(e,","),function(e){var t,n,r=o.exec(e);r&&(n=r[1],t=n?g[r[2]]:g[r[2]]={"#comment":{}},t=g[r[2]],Xo(Qo(r[3],"|"),function(e){"-"===n?delete t[e]:t[e]={}}))})},w=function(e){var t,n=N[e];if(n)return n;for(t=E.length;t--;)if((n=E[t]).pattern.test(e))return n};return i.valid_elements?y(i.valid_elements):(Xo(n,function(e,t){N[t]={attributes:e.attributes,attributesOrder:e.attributesOrder},g[t]=e.children}),"html5"!==i.schema&&Xo(Qo("strong/b em/i"),function(e){e=Qo(e,"/"),N[e[1]].outputName=e[0]}),Xo(Qo("ol ul sub sup blockquote span font a table tbody tr strong em b i"),function(e){N[e]&&(N[e].removeEmpty=!0)}),Xo(Qo("p h1 h2 h3 h4 h5 h6 th td pre div address caption li"),function(e){N[e].pad
 dEmpty=!0}),Xo(Qo("span"),function(e){N[e].removeEmptyAttrs=!0})),C(i.custom_elements),x(i.valid_children),b(i.extended_valid_elements),x("+ol[ul|ol],+ul[ul|ol]"),Xo({dd:"dl",dt:"dl",li:"ul ol",td:"tr",th:"tr",tr:"tbody thead tfoot",tbody:"table",thead:"table",tfoot:"table",legend:"fieldset",area:"map",param:"video audio object"},function(e,t){N[t]&&(N[t].parentsRequired=Qo(e))}),i.invalid_elements&&Xo(Go(i.invalid_elements),function(e){N[e]&&delete N[e]}),w("span")||b("span[!data-mce-type|*]"),{children:g,elements:N,getValidStyles:function(){return e},getValidClasses:function(){return s},getBlockElements:function(){return c},getInvalidStyles:function(){return t},getShortEndedElements:function(){return a},getTextBlockElements:function(){return d},getTextInlineElements:function(){return m},getBoolAttrs:
 function(){return u},getElementRule:w,getSelfClosingElements:function(){return o},getNonEmptyElements:function(){return l},getMoveCaretBeforeOnEnterElements:function(){return f},getWhiteSpaceElements:function(){return r},getSpecialElements:function(){return h},isValidChild:function(e,t){var n=g[e.toLowerCase()];return!(!n||!n[t.toLowerCase()])},isValid:function(e,t){var n,r,o=w(e);if(o){if(!t)return!0;if(o.attributes[t])return!0;if(n=o.attributePatterns)for(r=n.length;r--;)if(n[r].pattern.test(e))return!0}return!1},getCustomElements:function(){return p},addValidElements:b,setValidElements:y,addCustomElements:C,addValidChildren:x}}var ni=function(e,t,n,r){var o=function(e){return 1<(e=parseInt(e,10).toString(16)).length?e:"0"+e};return"#"+o(t)+o(n)+o(r)};function ri(y,e){var C,t,c,l,x=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi,w=/(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)
 \')|(?:\"([^\"]+)\")/gi,N=/\s*([^:]+):\s*([^;]+);?/g,E=/\s+$/,S={},k="\ufeff";for(y=y||{},e&&(c=e.getValidStyles(),l=e.getInvalidStyles()),t=("\\\" \\' \\; \\: ; : "+k).split(" "),C=0;C<t.length;C++)S[t[C]]=k+C,S[k+C]=t[C];return{toHex:function(e){return e.replace(x,ni)},parse:function(e){var t,n,r,o,i,a,u,s,c={},l=y.url_converter,f=y.url_converter_scope||this,d=function(e,t,n){var r,o,i,a;if((r=c[e+"-top"+t])&&(o=c[e+"-right"+t])&&(i=c[e+"-bottom"+t])&&(a=c[e+"-left"+t])){var u=[r,o,i,a];for(C=u.length-1;C--&&u[C]===u[C+1];);-1<C&&n||(c[e+t]=-1===C?u[0]:u.join(" "),delete c[e+"-top"+t],delete c[e+"-right"+t],delete c[e+"-bottom"+t],delete c[e+"-left"+t])}},m=function(e){var t,n=c[e];if(n){for(t=(n=n.split(" ")).length;t--;)if(n[t]!==n[0])return!1;return c[e]=n[0],!0}},g=function(e)
 {return o=!0,S[e]},p=function(e,t){return o&&(e=e.replace(/\uFEFF[0-9]/g,function(e){return S[e]})),t||(e=e.replace(/\\([\'\";:])/g,"$1")),e},h=function(e){return String.fromCharCode(parseInt(e.slice(1),16))},v=function(e){return e.replace(/\\[0-9a-f]+/gi,h)},b=function(e,t,n,r,o,i){if(o=o||i)return"'"+(o=p(o)).replace(/\'/g,"\\'")+"'";if(t=p(t||n||r),!y.allow_script_urls){var a=t.replace(/[\s\r\n]+/g,"");if(/(java|vb)script:/i.test(a))return"";if(!y.allow_svg_data_urls&&/^data:image\/svg/i.test(a))return""}return l&&(t=l.call(f,t,"style")),"url('"+t.replace(/\'/g,"\\'")+"')"};if(e){for(e=(e=e.replace(/[\u0000-\u001F]/g,"")).replace(/\\[\"\';:\uFEFF]/g,g).replace(/\"[^\"]+\"|\'[^\']+\'/g,function(e){return e.replace(/[;:]/g,g)});t=N.exec(e);)if(N.lastIndex=t.index+t[0].length,n=t[1].replace(E,"").toLowerCas
 e(),r=t[2].replace(E,""),n&&r){if(n=v(n),r=v(r),-1!==n.indexOf(k)||-1!==n.indexOf('"'))continue;if(!y.allow_script_urls&&("behavior"===n||/expression\s*\(|\/\*|\*\//.test(r)))continue;"font-weight"===n&&"700"===r?r="bold":"color"!==n&&"background-color"!==n||(r=r.toLowerCase()),r=(r=r.replace(x,ni)).replace(w,b),c[n]=o?p(r,!0):r}d("border","",!0),d("border","-width"),d("border","-color"),d("border","-style"),d("padding",""),d("margin",""),i="border",u="border-style",s="border-color",m(a="border-width")&&m(u)&&m(s)&&(c[i]=c[a]+" "+c[u]+" "+c[s],delete c[a],delete c[u],delete c[s]),"medium none"===c.border&&delete c.border,"none"===c["border-image
 "]&&delete c["border-image"]}return c},serialize:function(i,e){var t,n,r,o,a,u="",s=function(e){var t,n,r,o;if(t=c[e])for(n=0,r=t.length;n<r;n++)e=t[n],(o=i[e])&&(u+=(0<u.length?" ":"")+e+": "+o+";")};if(e&&c)s("*"),s(e);else for(t in i)!(n=i[t])||l&&(r=t,o=e,a=void 0,(a=l["*"])&&a[r]||(a=l[o])&&a[r])||(u+=(0<u.length?" ":"")+t+": "+n+";");return u}}}var oi,ii=Yt.each,ai=Yt.grep,ui=de.ie,si=/^([a-z0-9],?)+$/i,ci=/^[ \t\r\n]*$/,li=function(n,r,o){var e={},i=r.keep_values,t={set:function(e,t,n){r.url_converter&&(t=r.url_converter.call(r.url_converter_scope||o(),t,n,e[0])),e.attr("data-mce-"+n,t).attr(n,t)},get:function(e,t){return e.attr("data-mce-"+t)||e.attr(t)}};return e={style:{set:function(e,t){null===t||"object"!=typeof t?(i&&e.attr("data-mce-style&q
 uot;,t),e.attr("style",t)):e.css(t)},get:function(e){var t=e.attr("data-mce-style")||e.attr("style");return t=n.serialize(n.parse(t),e[0].nodeName)}}},i&&(e.href=e.src=t),e},fi=function(e,t){var n=t.attr("style"),r=e.serialize(e.parse(n),t[0].nodeName);r||(r=null),t.attr("data-mce-style",r)},di=function(e,t){var n,r,o=0;if(e)for(n=e.nodeType,e=e.previousSibling;e;e=e.previousSibling)r=e.nodeType,(!t||3!==r||r!==n&&e.nodeValue.length)&&(o++,n=r);return o};function mi(a,u){var s,c=this;void 0===u&&(u={});var r={},i=window,o={},t=0,e=function(m,g){void 0===g&&(g={});var p,h=0,v={};p=g.maxLoadTime||5e3;var b=function(e){m.getElementsByTagName("head")[0].appendChild(e)},n=function(e,t,n){var o,r,i,a,u=function(){for(var e=a.passed,t=e.length;t--;)e[t]();a.status=2,a.passed=[],a.failed=[]},s=function(){for(var e=a.failed,t=e.length;t--;)e[t]();a.status=3,a.passed=[],a.failed=[]},c=function(
 e,t){e()||((new Date).getTime()-i<p?ve.setTimeout(t):s())},l=function(){c(function(){for(var e,t,n=m.styleSheets,r=n.length;r--;)if((t=(e=n[r]).ownerNode?e.ownerNode:e.owningElement)&&t.id===o.id)return u(),!0},l)},f=function(){c(function(){try{var e=r.sheet.cssRules;return u(),!!e}catch(t){}},f)};if(e=Yt._addCacheSuffix(e),v[e]?a=v[e]:(a={passed:[],failed:[]},v[e]=a),t&&a.passed.push(t),n&&a.failed.push(n),1!==a.status)if(2!==a.status)if(3!==a.status){if(a.status=1,(o=m.createElement("link")).rel="stylesheet",o.type="text/css",o.id="u"+h++,o.async=!1,o.defer=!1,i=(new Date).getTime(),g.contentCssCors&&(o.crossOrigin="anonymous"),"onload"in o&&!((d=navigator.userAgent.match(/WebKit\/(\d*)/))&&parseInt(d[1],10)<536))o.onload=l,o.onerror=s;else{if(0<navigator.userAgent.indexOf("Firefox"))return(r=m.createElement("style")).textContent='@import "'
 +e+'"',f(),void b(r);l()}var d;b(o),o.href=e}else s();else u()},t=function(t){return Jr.nu(function(e){n(t,H(e,j(no.value(t))),H(e,j(no.error(t))))})},o=function(e){return e.fold(q,q)};return{load:n,loadAll:function(e,n,r){Zr($(e,t)).get(function(e){var t=W(e,function(e){return e.isValue()});0<t.fail.length?r(t.fail.map(o)):n(t.pass.map(o))})}}}(a,{contentCssCors:u.contentCssCors}),l=[],f=u.schema?u.schema:ti({}),d=ri({url_converter:u.url_converter,url_converter_scope:u.url_converter_scope},u.schema),m=u.ownEvents?new ke(u.proxy):ke.Event,n=f.getBlockElements(),g=pn.overrideDefaults(function(){return{context:a,element:V.getRoot()}}),p=function(e){if(e&&a&&"string"==typeof e){var t=a.getElementById(e);return t&&t.id!==e?a.getElementsByName(e)[1]:t}return e},h=function(e){return"string"==typeof e&&(e=p(e)),g(e)},v=function(e,t,n){var r,o,i=h(e);return i.length&&(o=(r=s[t])&&r.get?r.get(i,t):i.attr(t)),void 0==
 =o&&(o=n||""),o},b=function(e){var t=p(e);return t?t.attributes:[]},y=function(e,t,n){var r,o;""===n&&(n=null);var i=h(e);r=i.attr(t),i.length&&((o=s[t])&&o.set?o.set(i,n,t):i.attr(t,n),r!==n&&u.onSetAttrib&&u.onSetAttrib({attrElm:i,attrName:t,attrValue:n}))},C=function(){return u.root_element||a.body},x=function(e,t){return Kr.getPos(a.body,p(e),t)},w=function(e,t,n){var r=h(e);return n?r.css(t):("float"===(t=t.replace(/-(\D)/g,function(e,t){return t.toUpperCase()}))&&(t=de.ie&&de.ie<12?"styleFloat":"cssFloat"),r[0]&&r[0].style?r[0].style[t]:undefined)},N=function(e){var t,n;return e=p(e),t=w(e,"width"),n=w(e,"height"),-1===t.indexOf("px")&&(t=0),-1===n.indexOf("px")&&(n=0),{w:parseInt(t,10)||e.offsetWidth||e.clientWidth,h:parseInt(n,10)||e.offsetHeight||e.clientHeight}},E=function(e,t){var n;if(!e)retur
 n!1;if(!Array.isArray(e)){if("*"===t)return 1===e.nodeType;if(si.test(t)){var r=t.toLowerCase().split(/,/),o=e.nodeName.toLowerCase();for(n=r.length-1;0<=n;n--)if(r[n]===o)return!0;return!1}if(e.nodeType&&1!==e.nodeType)return!1}var i=Array.isArray(e)?e:[e];return 0<kt(t,i[0].ownerDocument||i[0],null,i).length},S=function(e,t,n,r){var o,i=[],a=p(e);for(r=r===undefined,n=n||("BODY"!==C().nodeName?C().parentNode:null),Yt.is(t,"string")&&(t="*"===(o=t)?function(e){return 1===e.nodeType}:function(e){return E(e,o)});a&&a!==n&&a.nodeType&&9!==a.nodeType;){if(!t||"function"==typeof t&&t(a)){if(!r)return[a];i.push(a)}a=a.parentNode}return r?i:null},k=function(e,t,n){var r=t;if(e)for("string"==typeof t&&(r=function(e){return E(e,t)}),e=e[n];e;e=e[n])if("function"==typeof r&&r(e))return e;return null},T=function(e,n,r){var o,t="string"==typeof e
 ?p(e):e;if(!t)return!1;if(Yt.isArray(t)&&(t.length||0===t.length))return o=[],ii(t,function(e,t){e&&("string"==typeof e&&(e=p(e)),o.push(n.call(r,e,t)))}),o;var i=r||c;return n.call(i,t)},A=function(e,t){h(e).each(function(e,n){ii(t,function(e,t){y(n,t,e)})})},R=function(e,r){var t=h(e);ui?t.each(function(e,t){if(!1!==t.canHaveHTML){for(;t.firstChild;)t.removeChild(t.firstChild);try{t.innerHTML="<br>"+r,t.removeChild(t.firstChild)}catch(n){pn("<div></div>").html("<br>"+r).contents().slice(1).appendTo(t)}return r}}):t.html(r)},_=function(e,n,r,o,i){return T(e,function(e){var t="string"==typeof n?a.createElement(n):n;return A(t,r),o&&("string"!=typeof o&&o.nodeType?t.appendChild(o):"string"==typeof o&&R(t,o)),i?t:e.appendChild(t)})},D=function(e,t,n){return _(a.createElement(e),e,t,n,!0)},B=qo.decode,O=qo.encodeAllRaw,P=function(e,t){var n=h(e);
 return t?n.each(function(){for(var e;e=this.firstChild;)3===e.nodeType&&0===e.data.length?this.removeChild(e):this.parentNode.insertBefore(e,this)}).remove():n.remove(),1<n.length?n.toArray():n[0]},L=function(e,t,n){h(e).toggleClass(t,n).each(function(){""===this.className&&pn(this).attr("class",null)})},I=function(t,e,n){return T(e,function(e){return Yt.is(e,"array")&&(t=t.cloneNode(!0)),n&&ii(ai(e.childNodes),function(e){t.appendChild(e)}),e.parentNode.replaceChild(t,e)})},M=function(){return a.createRange()},F=function(e,t,n,r){if(Yt.isArray(e)){for(var o=e.length;o--;)e[o]=F(e[o],t,n,r);return e}return!u.collect||e!==a&&e!==i||l.push([e,t,n,r]),m.bind(e,t,n,r||V)},z=function(e,t,n){var r;if(Yt.isArray(e)){for(r=e.length;r--;)e[r]=z(e[r],t,n);return e}if(l&&(e===a||e===i))for(r=l.length;r--;){var o=l[r];e!==o[0]||t&&t!==o[1]||n&&n!==o[2]||m.unbind(o[0],o[1],o[2])}return m.unbind(e,t,n
 )},U=function(e){if(e&&_o.isElement(e)){var t=e.getAttribute("data-mce-contenteditable");return t&&"inherit"!==t?t:"inherit"!==e.contentEditable?e.contentEditable:null}return null},V={doc:a,settings:u,win:i,files:o,stdMode:!0,boxModel:!0,styleSheetLoader:e,boundEvents:l,styles:d,schema:f,events:m,isBlock:function(e){if("string"==typeof e)return!!n[e];if(e){var t=e.nodeType;if(t)return!(1!==t||!n[e.nodeName])}return!1},$:g,$$:h,root:null,clone:function(t,e){if(!ui||1!==t.nodeType||e)return t.cloneNode(e);if(!e){var n=a.createElement(t.nodeName);return ii(b(t),function(e){y(n,e.nodeName,v(t,e.nodeName))}),n}return null},getRoot:C,getViewPort:function(e){var t=e||i,n=t.document,r=n.documentElement;return{x:t.pageXOffset||r.scrollLeft,y:t.pageYOffset||r.scrollTop,w:t.innerWidth||r.clientWidth,h:t.innerHeight||r.clientHeight}},getRect:function(e){var t,n;return e=p(e),t=x(e),n=N(e),{x:t.x,y:t.y,w:n.w,h:n.h}},getSize:N,getParent:func
 tion(e,t,n){var r=S(e,t,n,!1);return r&&0<r.length?r[0]:null},getParents:S,get:p,getNext:function(e,t){return k(e,t,"nextSibling")},getPrev:function(e,t){return k(e,t,"previousSibling")},select:function(e,t){return kt(e,p(t)||u.root_element||a,[])},is:E,add:_,create:D,createHTML:function(e,t,n){var r,o="";for(r in o+="<"+e,t)t.hasOwnProperty(r)&&null!==t[r]&&"undefined"!=typeof t[r]&&(o+=" "+r+'="'+O(t[r])+'"');return void 0!==n?o+">"+n+"</"+e+">":o+" />"},createFragment:function(e){var t,n=a.createElement("div"),r=a.createDocumentFragment();for(e&&(n.innerHTML=e);t=n.firstChild;)r.appendChild(t);return r},remove:P,setStyle:function(e,t,n){var r=h(e).css(t,n);u.update_styles&&fi(d,r)},getStyle:w,setStyles:function(e,t){var n=h(e).css(t);u.update_styles&&fi(d,n)},removeAllAttribs:function(e){r
 eturn T(e,function(e){var t,n=e.attributes;for(t=n.length-1;0<=t;t--)e.removeAttributeNode(n.item(t))})},setAttrib:y,setAttribs:A,getAttrib:v,getPos:x,parseStyle:function(e){return d.parse(e)},serializeStyle:function(e,t){return d.serialize(e,t)},addStyle:function(e){var t,n;if(V!==mi.DOM&&a===document){if(r[e])return;r[e]=!0}(n=a.getElementById("mceDefaultStyles"))||((n=a.createElement("style")).id="mceDefaultStyles",n.type="text/css",(t=a.getElementsByTagName("head")[0]).firstChild?t.insertBefore(n,t.firstChild):t.appendChild(n)),n.styleSheet?n.styleSheet.cssText+=e:n.appendChild(a.createTextNode(e))},loadCSS:function(e){var n;V===mi.DOM||a!==document?(e||(e=""),n=a.getElementsByTagName("head")[0],ii(e.split(","),function(e){var t;e=Yt._addCacheSuffix(e),o[e]||(o[e]=!0,t=D("link",{rel:"stylesheet",href:e}),n.appendChild(t))})):mi.DOM.loadCSS(e)},addClass:function(e,t){h(e
 ).addClass(t)},removeClass:function(e,t){L(e,t,!1)},hasClass:function(e,t){return h(e).hasClass(t)},toggleClass:L,show:function(e){h(e).show()},hide:function(e){h(e).hide()},isHidden:function(e){return"none"===h(e).css("display")},uniqueId:function(e){return(e||"mce_")+t++},setHTML:R,getOuterHTML:function(e){var t="string"==typeof e?p(e):e;return _o.isElement(t)?t.outerHTML:pn("<div></div>").append(pn(t).clone()).html()},setOuterHTML:function(e,t){h(e).each(function(){try{if("outerHTML"in this)return void(this.outerHTML=t)}catch(e){}P(pn(this).html(t),!0)})},decode:B,encode:O,insertAfter:function(e,t){var r=p(t);return T(e,function(e){var t,n;return t=r.parentNode,(n=r.nextSibling)?t.insertBefore(e,n):t.appendChild(e),e})},replace:I,rename:function(t,e){var n;return t.nodeName!==e.toUpperCase()&&(n=D(e),ii(b(t),function(e){y(n,e.nodeName,v(t,e.nodeName))}),I(n,t,!0)),n||t},findCommonAncestor:function(e,t
 ){for(var n,r=e;r;){for(n=t;n&&r!==n;)n=n.parentNode;if(r===n)break;r=r.parentNode}return!r&&e.ownerDocument?e.ownerDocument.documentElement:r},toHex:function(e){return d.toHex(Yt.trim(e))},run:T,getAttribs:b,isEmpty:function(e,t){var n,r,o,i,a,u,s=0;if(e=e.firstChild){a=new ro(e,e.parentNode),t=t||(f?f.getNonEmptyElements():null),i=f?f.getWhiteSpaceElements():{};do{if(o=e.nodeType,_o.isElement(e)){var c=e.getAttribute("data-mce-bogus");if(c){e=a.next("all"===c);continue}if(u=e.nodeName.toLowerCase(),t&&t[u]){if("br"===u){s++,e=a.next();continue}return!1}for(n=(r=b(e)).length;n--;)if("name"===(u=r[n].nodeName)||"data-mce-bookmark"===u)return!1}if(8===o)return!1;if(3===o&&!ci.test(e.nodeValue))return!1;if(3===o&&e.parentNode&&i[e.parentNode.nodeName]&&ci.test(e.nodeValue))return!1;e=a.next()}while(e)}return s<=1},createRng:M,nodeIndex:di,split:function(e,t,n){var r,o,i,a=M();i
 f(e&&t)return a.setStart(e.parentNode,di(e)),a.setEnd(t.parentNode,di(t)),r=a.extractContents(),(a=M()).setStart(t.parentNode,di(t)+1),a.setEnd(e.parentNode,di(e)+1),o=a.extractContents(),(i=e.parentNode).insertBefore(Oo.trimNode(V,r),e),n?i.insertBefore(n,e):i.insertBefore(t,e),i.insertBefore(Oo.trimNode(V,o),e),P(e),n||t},bind:F,unbind:z,fire:function(e,t,n){return m.fire(e,t,n)},getContentEditable:U,getContentEditableParent:function(e){for(var t=C(),n=null;e&&e!==t&&null===(n=U(e));e=e.parentNode);return n},destroy:function(){if(l)for(var e=l.length;e--;){var t=l[e];m.unbind(t[0],t[1],t[2])}kt.setDocument&&kt.setDocument()},isChildOf:function(e,t){for(;e;){if(t===e)return!0;e=e.parentNode}return!1},dumpRng:function(e){return"startContainer: "+e.startContainer.nodeName+", startOffset: "+e.startOffset+", endContainer: "+e.endContainer.nodeName+", endOffset: "+e.endOffset}};return s=li(d,u,function(){return V}),
 V}(oi=mi||(mi={})).DOM=oi(document),oi.nodeIndex=di;var gi=mi,pi=gi.DOM,hi=Yt.each,vi=Yt.grep,bi=function(e){return"function"==typeof e},yi=function(){var l={},o=[],i={},a=[],f=0;this.isDone=function(e){return 2===l[e]},this.markDone=function(e){l[e]=2},this.add=this.load=function(e,t,n,r){l[e]===undefined&&(o.push(e),l[e]=0),t&&(i[e]||(i[e]=[]),i[e].push({success:t,failure:r,scope:n||this}))},this.remove=function(e){delete l[e],delete i[e]},this.loadQueue=function(e,t,n){this.loadScripts(o,e,t,n)},this.loadScripts=function(n,e,t,r){var u,s=[],c=function(t,e){hi(i[e],function(e){bi(e[t])&&e[t].call(e.scope)}),i[e]=undefined};a.push({success:e,failure:r,scope:t||this}),(u=function(){var e=vi(n);if(n.length=0,hi(e,function(e){var t,n,r,o,i,a;2!==l[e]?3!==l[e]?1!==l[e]&&(l[e]=1,f++,t=e,n=function(){l[e]=2,f--,c("success",e),u()},r=function(){l[e]=3,f--,s.push(e),c("failure",e),u()},i=(a=pi).uniqueId(),(o=document.createEleme
 nt("script")).id=i,o.type="text/javascript",o.src=Yt._addCacheSuffix(t),o.onload=function(){a.remove(i),o&&(o.onreadystatechange=o.onload=o=null),n()},o.onerror=function(){bi(r)?r():"undefined"!=typeof console&&console.log&&console.log("Failed to load script: "+t)},(document.getElementsByTagName("head")[0]||document.body).appendChild(o)):c("failure",e):c("success",e)}),!f){var t=a.slice(0);a.length=0,hi(t,function(e){0===s.length?bi(e.success)&&e.success.call(e.scope):bi(e.failure)&&e.failure.call(e.scope,s)})}})()}};yi.ScriptLoader=new yi;var Ci,xi=Yt.each;function wi(){var r=this,o=[],a={},u={},i=[],s=function(e){var t;return u[e]&&(t=u[e].dependencies),t||[]},c=function(e,t){return"object"==typeof t?t:"string"==typeof e?{prefix:"",resource:t,suffix:""}:{prefix:e.prefix,resource:t,suffix:e.suffix}},l=function(e,n,t,r){var o=s
 (e);xi(o,function(e){var t=c(n,e);f(t.resource,t,undefined,undefined)}),t&&(r?t.call(r):t.call(yi))},f=function(e,t,n,r,o){if(!a[e]){var i="string"==typeof t?t:t.prefix+t.resource+t.suffix;0!==i.indexOf("/")&&-1===i.indexOf("://")&&(i=wi.baseURL+"/"+i),a[e]=i.substring(0,i.lastIndexOf("/")),u[e]?l(e,t,n,r):yi.ScriptLoader.add(i,function(){return l(e,t,n,r)},r,o)}};return{items:o,urls:a,lookup:u,_listeners:i,get:function(e){return u[e]?u[e].instance:undefined},dependencies:s,requireLangPack:function(e,t){var n=wi.language;if(n&&!1!==wi.languageLoad){if(t)if(-1!==(t=","+t+",").indexOf(","+n.substr(0,2)+","))n=n.substr(0,2);else if(-1===t.indexOf(","+n+","))return;yi.ScriptLoader.add(a[e]+"/langs/"+n+".js")}},add:function(t,e,n){o.push(e),u[t]={instance:e,dependencies:n};var r=W(i,function(e){return e.name===t});return i=r.fai
 l,xi(r.pass,function(e){e.callback()}),e},remove:function(e){delete a[e],delete u[e]},createUrl:c,addComponents:function(e,t){var n=r.urls[e];xi(t,function(e){yi.ScriptLoader.add(n+"/"+e)})},load:f,waitFor:function(e,t){u.hasOwnProperty(e)?t():i.push({name:e,callback:t})}}}(Ci=wi||(wi={})).PluginManager=Ci(),Ci.ThemeManager=Ci();var Ni=function(t,n){Ir(t).each(function(e){e.dom().insertBefore(n.dom(),t.dom())})},Ei=function(e,t){Fr(e).fold(function(){Ir(e).each(function(e){ki(e,t)})},function(e){Ni(e,t)})},Si=function(t,n){jr(t).fold(function(){ki(t,n)},function(e){t.dom().insertBefore(n.dom(),e.dom())})},ki=function(e,t){e.dom().appendChild(t.dom())},Ti=function(t,e){F(e,function(e){ki(t,e)})},Ai=function(e){e.dom().textContent="",F(Vr(e),function(e){Ri(e)})},Ri=function(e){var t=e.dom();null!==t.parentNode&&t.parentNode.removeChild(t)},_i=function(e){var t,n=Vr(e);0<n.length&&(t=e,F(n,function(e){Ni(t,e)})),Ri(e)},Di=function(n,r){var o=null;
 return{cancel:function(){null!==o&&(clearTimeout(o),o=null)},throttle:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];null===o&&(o=setTimeout(function(){n.apply(null,e),o=null},r))}}},Bi=function(e){var t=e,n=function(){return t};return{get:n,set:function(e){t=e},clone:function(){return Bi(n())}}},Oi=function(e,t){var n=br(e,t);return n===undefined||""===n?[]:n.split(" ")},Pi=function(e){return e.dom().classList!==undefined},Li=function(e,t){return o=t,i=Oi(n=e,r="class").concat([o]),hr(n,r,i.join(" ")),!0;var n,r,o,i},Ii=function(e,t){return o=t,0<(i=z(Oi(n=e,r="class"),function(e){return e!==o})).length?hr(n,r,i.join(" ")):yr(n,r),!1;var n,r,o,i},Mi=function(e,t){Pi(e)?e.dom().classList.add(t):Li(e,t)},Fi=function(e){0===(Pi(e)?e.dom().classList:Oi(e,"class")).length&&yr(e,"class")},zi=function(e,t){return Pi(e)&&e.dom().classList.contains(t)},
 Ui=function(e,t){var n=[];return F(Vr(e),function(e){t(e)&&(n=n.concat([e])),n=n.concat(Ui(e,t))}),n},Vi=function(e,t){return n=t,o=(r=e)===undefined?document:r.dom(),Br(o)?[]:$(o.querySelectorAll(n),rr.fromDom);var n,r,o};function Hi(e,t,n,r,o){return e(n,r)?A.some(n):P(o)&&o(n)?A.none():t(n,r,o)}var ji,qi=function(e,t,n){for(var r=e.dom(),o=P(n)?n:j(!1);r.parentNode;){r=r.parentNode;var i=rr.fromDom(r);if(t(i))return A.some(i);if(o(i))break}return A.none()},$i=function(e,t,n){return Hi(function(e){return t(e)},qi,e,t,n)},Wi=function(e,t,n){return qi(e,function(e){return Dr(e,t)},n)},Ki=function(e,t){return n=t,o=(r=e)===undefined?document:r.dom(),Br(o)?A.none():A.from(o.querySelector(n)).map(rr.fromDom);var n,r,o},Xi=function(e,t,n){return Hi(Dr,Wi,e,t,n)},Yi=j("mce-annotation"),Gi=j("data-mce-annotation"),Ji=j("data-mce-annotation-uid"),Qi=function(r,e){var t=r.selection.getRng(),n=rr.fromDom(t.startContainer),o=rr.fromDom(r.getBody()
 ),i=e.fold(function(){return"."+Yi()},function(e){return"["+Gi()+'="'+e+'"]'}),a=Hr(n,t.startOffset).getOr(n),u=Xi(a,i,function(e){return Or(e,o)}),s=function(e,t){return n=t,(r=e.dom())&&r.hasAttribute&&r.hasAttribute(n)?A.some(br(e,t)):A.none();var n,r};return u.bind(function(e){return s(e,""+Ji()).bind(function(n){return s(e,""+Gi()).map(function(e){var t=Zi(r,n);return{uid:n,name:e,elements:t}})})})},Zi=function(e,t){var n=rr.fromDom(e.getBody());return Vi(n,"["+Ji()+'="'+t+'"]')},ea=function(i,e){var n,r,o,a=Bi({}),c=function(e,t){u(e,function(e){return t(e),e})},u=function(e,t){var n=a.get(),r=t(n.hasOwnProperty(e)?n[e]:{listeners:[],previous:Bi(A.none())});n[e]=r,a.set(n)},t=(n=function(){var e,t,n,r=a.get(),o=(e=fr(r),(n=Q.call(e,0)).sort(t),n);F(o,function(e){u(e,function(u){var s=u.previous.get();return Qi(i,A.some(e)).fold(function(){var t;s.isSome()&&(c(t=e,function(e){F(e.liste
 ners,function(e){return e(!1,t)})}),u.previous.set(A.none()))},function(e){var t,n,r,o=e.uid,i=e.name,a=e.elements;s.is(o)||(n=o,r=a,c(t=i,function(e){F(e.listeners,function(e){return e(!0,t,{uid:n,nodes:$(r,function(e){return e.dom()})})})}),u.previous.set(A.some(o)))}),{previous:u.previous,listeners:u.listeners}})})},r=30,o=null,{cancel:function(){null!==o&&(clearTimeout(o),o=null)},throttle:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];null!==o&&clearTimeout(o),o=setTimeout(function(){n.apply(null,e),o=null},r)}});return i.on("remove",function(){t.cancel()}),i.on("nodeChange",function(){t.throttle()}),{addListener:function(e,t){u(e,function(e){return{previous:e.previous,listeners:e.listeners.concat([t])}})}}},ta=function(e,n){e.on("init",function(){e.serializer.addNodeFilter("span",function(e){F(e,function(t){var e;(e=t,A.from(e.attributes.map[Gi()]).bind(n.lookup)).each(function(e){!1===e.persisten
 t&&t.unwrap()})})})})},na=0,ra=function(e,t){return rr.fromDom(e.dom().cloneNode(t))},oa=function(e){return ra(e,!1)},ia=function(e){return ra(e,!0)},aa=function(e,t){var n,r,o=Lr(e).dom(),i=rr.fromDom(o.createDocumentFragment()),a=(n=t,(r=(o||document).createElement("div")).innerHTML=n,Vr(rr.fromDom(r)));Ti(i,a),Ai(e),ki(e,i)},ua="\ufeff",sa=function(e){return e===ua},ca=ua,la=function(e){return e.replace(new RegExp(ua,"g"),"")},fa=_o.isElement,da=_o.isText,ma=function(e){return da(e)&&(e=e.parentNode),fa(e)&&e.hasAttribute("data-mce-caret")},ga=function(e){return da(e)&&sa(e.data)},pa=function(e){return ma(e)||ga(e)},ha=function(e){return e.firstChild!==e.lastChild||!_o.isBr(e.firstChild)},va=function(e){var t=e.container();return e&&_o.isText(t)&&t.data.charAt(e.offset())===ca},ba=function(e){var t=e.container();return e&&_o.isText(t)&&t.data.charAt(e.offset()-1)===ca
 },ya=function(e,t,n){var r,o,i;return(r=t.ownerDocument.createElement(e)).setAttribute("data-mce-caret",n?"before":"after"),r.setAttribute("data-mce-bogus","all"),r.appendChild(((i=document.createElement("br")).setAttribute("data-mce-bogus","1"),i)),o=t.parentNode,n?o.insertBefore(r,t):t.nextSibling?o.insertBefore(r,t.nextSibling):o.appendChild(r),r},Ca=function(e){return da(e)&&e.data[0]===ca},xa=function(e){return da(e)&&e.data[e.data.length-1]===ca},wa=function(e){return e&&e.hasAttribute("data-mce-caret")?(t=e.getElementsByTagName("br"),n=t[t.length-1],_o.isBogus(n)&&n.parentNode.removeChild(n),e.removeAttribute("data-mce-caret"),e.removeAttribute("data-mce-bogus"),e.removeAttribute("style"),e.removeAttribute("_moz_abspos"),e):null;var t,n},Na=_o.isContentEditableTrue,Ea=_o.isContentEditableFalse,Sa=_o.isBr,ka
 =_o.isText,Ta=_o.matchNodeNames("script style textarea"),Aa=_o.matchNodeNames("img input textarea hr iframe video audio object"),Ra=_o.matchNodeNames("table"),_a=pa,Da=function(e){return!_a(e)&&(ka(e)?!Ta(e.parentNode):Aa(e)||Sa(e)||Ra(e)||Ba(e))},Ba=function(e){return!1===(t=e,_o.isElement(t)&&"true"===t.getAttribute("unselectable"))&&Ea(e);var t},Oa=function(e,t){return Da(e)&&function(e,t){for(e=e.parentNode;e&&e!==t;e=e.parentNode){if(Ba(e))return!1;if(Na(e))return!0}return!0}(e,t)},Pa=Math.round,La=function(e){return e?{left:Pa(e.left),top:Pa(e.top),bottom:Pa(e.bottom),right:Pa(e.right),width:Pa(e.width),height:Pa(e.height)}:{left:0,top:0,bottom:0,right:0,width:0,height:0}},Ia=function(e,t){return e=La(e),t||(e.left=e.left+e.width),e.right=e.left,e.width=0,e},Ma=function(e,t,n){return 0<=e&&e<=Math.min(t.height,n.height)/2},Fa=function(e,t){return e.bottom-e.height/2<t.top
 ||!(e.top>t.bottom)&&Ma(t.top-e.bottom,e,t)},za=function(e,t){return e.top>t.bottom||!(e.bottom<t.top)&&Ma(t.bottom-e.top,e,t)},Ua=function(e){var t=e.startContainer,n=e.startOffset;return t.hasChildNodes()&&e.endOffset===n+1?t.childNodes[n]:null},Va=function(e,t){return 1===e.nodeType&&e.hasChildNodes()&&(t>=e.childNodes.length&&(t=e.childNodes.length-1),e=e.childNodes[t]),e},Ha=new RegExp("[\u0300-\u036f\u0483-\u0487\u0488-\u0489\u0591-\u05bd\u05bf\u05c1-\u05c2\u05c4-\u05c5\u05c7\u0610-\u061a\u064b-\u065f\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7-\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08e3-\u0902\u093a\u093c\u0941-\u0948\u094d\u0951-\u0957\u0962-\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2-\u09e3\u0a01-\u0a02\u0a3c\u0a41-\u0a42\u0a47-\u0a48\u0a4b-\u0a4d\u0a51\u0a70-\u0a71\u0a75\u0a81-\u0a82\u0abc\u0ac1-\u0ac5\u0ac7-\u0a
 c8\u0acd\u0ae2-\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62-\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c00\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55-\u0c56\u0c62-\u0c63\u0c81\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc-\u0ccd\u0cd5-\u0cd6\u0ce2-\u0ce3\u0d01\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62-\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb-\u0ebc\u0ec8-\u0ecd\u0f18-\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86-\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039-\u103a\u103d-\u103e\u1058-\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085-\u1086\u108d\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752-\u1753\u1772-\u1773\u17b4-\u17b5\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927-\u1928\u1932\u1939-\u193b\u1a17-\u1a18\u1a1b\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1ab0-\u1abd\u1abe\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80-\u1b8
 1\u1ba2-\u1ba5\u1ba8-\u1ba9\u1bab-\u1bad\u1be6\u1be8-\u1be9\u1bed\u1bef-\u1bf1\u1c2c-\u1c33\u1c36-\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1cf4\u1cf8-\u1cf9\u1dc0-\u1df5\u1dfc-\u1dff\u200c-\u200d\u20d0-\u20dc\u20dd-\u20e0\u20e1\u20e2-\u20e4\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302d\u302e-\u302f\u3099-\u309a\ua66f\ua670-\ua672\ua674-\ua67d\ua69e-\ua69f\ua6f0-\ua6f1\ua802\ua806\ua80b\ua825-\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\ua9e5\uaa29-\uaa2e\uaa31-\uaa32\uaa35-\uaa36\uaa43\uaa4c\uaa7c\uaab0\uaab2-\uaab4\uaab7-\uaab8\uaabe-\uaabf\uaac1\uaaec-\uaaed\uaaf6\uabe5\uabe8\uabed\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\uff9e-\uff9f]"),ja=function(e){return"string"==typeof e&&768<=e.charCodeAt(0)&&Ha.test(e)},qa=function(e,t){for(var n=[],r=0;r<e.length;r++){var o=e[r];if(!o.isSome())return A.none();n.push(o.getOrDie())}return A.some(t.apply(null,n))},$a=[].slice,Wa=function(){for(va
 r e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=$a.call(arguments);return function(e){for(var t=0;t<n.length;t++)if(!n[t](e))return!1;return!0}},Ka=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=$a.call(arguments);return function(e){for(var t=0;t<n.length;t++)if(n[t](e))return!0;return!1}},Xa=_o.isElement,Ya=Da,Ga=_o.matchStyleValues("display","block table"),Ja=_o.matchStyleValues("float","left right"),Qa=Wa(Xa,Ya,y(Ja)),Za=y(_o.matchStyleValues("white-space","pre pre-line pre-wrap")),eu=_o.isText,tu=_o.isBr,nu=gi.nodeIndex,ru=Va,ou=function(e){return"createRange"in e?e.createRange():gi.DOM.createRng()},iu=function(e){return e&&/[\r\n\t ]/.test(e)},au=function(e){return!!e.setStart&&!!e.setEnd},uu=function(e){var t,n=e.startContainer,r=e.startOffset;return!!(iu(e.toString())&&Za(n.parentNode)&&_o.isText(n)&&(t=n.data,iu(t[r-1
 ])||iu(t[r+1])))},su=function(e){return 0===e.left&&0===e.right&&0===e.top&&0===e.bottom},cu=function(e){var t,n,r,o,i,a,u,s;return t=0<(n=e.getClientRects()).length?La(n[0]):La(e.getBoundingClientRect()),!au(e)&&tu(e)&&su(t)?(i=(r=e).ownerDocument,a=ou(i),u=i.createTextNode("\xa0"),(s=r.parentNode).insertBefore(u,r),a.setStart(u,0),a.setEnd(u,1),o=La(a.getBoundingClientRect()),s.removeChild(u),o):su(t)&&au(e)?function(e){var t=e.startContainer,n=e.endContainer,r=e.startOffset,o=e.endOffset;if(t===n&&_o.isText(n)&&0===r&&1===o){var i=e.cloneRange();return i.setEndAfter(n),cu(i)}return null}(e):t},lu=function(e,t){var n=Ia(e,t);return n.width=1,n.right=n.left+1,n},fu=function(e){var t,n,r=[],o=function(e){var t,n;0!==e.height&&(0<r.length&&(t=e,n=r[r.length-1],t.left===n.left&&t.top===n.top&&t.bottom===n.bottom&&t.right===n.right)||r.push(e))},i=function(e,t
 ){var n=ou(e.ownerDocument);if(t<e.data.length){if(ja(e.data[t]))return r;if(ja(e.data[t-1])&&(n.setStart(e,t),n.setEnd(e,t+1),!uu(n)))return o(lu(cu(n),!1)),r}0<t&&(n.setStart(e,t-1),n.setEnd(e,t),uu(n)||o(lu(cu(n),!1))),t<e.data.length&&(n.setStart(e,t),n.setEnd(e,t+1),uu(n)||o(lu(cu(n),!0)))};if(eu(e.container()))return i(e.container(),e.offset()),r;if(Xa(e.container()))if(e.isAtEnd())n=ru(e.container(),e.offset()),eu(n)&&i(n,n.data.length),Qa(n)&&!tu(n)&&o(lu(cu(n),!1));else{if(n=ru(e.container(),e.offset()),eu(n)&&i(n,0),Qa(n)&&e.isAtEnd())return o(lu(cu(n),!1)),r;t=ru(e.container(),e.offset()-1),Qa(t)&&!tu(t)&&(Ga(t)||Ga(n)||!Qa(n))&&o(lu(cu(t),!1)),Qa(n)&&o(lu(cu(n),!0))}return r};function du(t,n,e){var r=function(){return e||(e=fu(du(t,n))),e};return{container:j(t),offset:j(n),toRange:function(){var e;return(e=ou(t.ownerDocument)).setStart(t,n),e.setEnd(t,n),e},getClientR
 ects:r,isVisible:function(){return 0<r().length},isAtStart:function(){return eu(t),0===n},isAtEnd:function(){return eu(t)?n>=t.data.length:n>=t.childNodes.length},isEqual:function(e){return e&&t===e.container()&&n===e.offset()},getNode:function(e){return ru(t,e?n-1:n)}}}(ji=du||(du={})).fromRangeStart=function(e){return ji(e.startContainer,e.startOffset)},ji.fromRangeEnd=function(e){return ji(e.endContainer,e.endOffset)},ji.after=function(e){return ji(e.parentNode,nu(e)+1)},ji.before=function(e){return ji(e.parentNode,nu(e))},ji.isAbove=function(e,t){return qa([ee(t.getClientRects()),te(e.getClientRects())],Fa).getOr(!1)},ji.isBelow=function(e,t){return qa([te(t.getClientRects()),ee(e.getClientRects())],za).getOr(!1)},ji.isAtStart=function(e){return!!e&&e.isAtStart()},ji.isAtEnd=function(e){return!!e&&e.isAtEnd()},ji.isTextPosition=function(e){return!!e&&_o.isText(e.container())},ji.isElementPosition=function(e){return!1===ji.isTextPo
 sition(e)};var mu,gu,pu,hu=du,vu=_o.isText,bu=_o.isBogus,yu=gi.nodeIndex,Cu=function(e){var t=e.parentNode;return bu(t)?Cu(t):t},xu=function(e){return e?qt.reduce(e.childNodes,function(e,t){return bu(t)&&"BR"!==t.nodeName?e=e.concat(xu(t)):e.push(t),e},[]):[]},wu=function(t){return function(e){return t===e}},Nu=function(e){var t,r,n,o;return(vu(e)?"text()":e.nodeName.toLowerCase())+"["+(r=xu(Cu(t=e)),n=qt.findIndex(r,wu(t),t),r=r.slice(0,n+1),o=qt.reduce(r,function(e,t,n){return vu(t)&&vu(r[n-1])&&e++,e},0),r=qt.filter(r,_o.matchNodeNames(t.nodeName)),(n=qt.findIndex(r,wu(t),t))-o)+"]"},Eu=function(e,t){var n,r,o,i,a,u=[];return n=t.container(),r=t.offset(),vu(n)?o=function(e,t){for(;(e=e.previousSibling)&&vu(e);)t+=e.data.length;return t}(n,r):(r>=(i=n.childNodes).length?(o="after",r=i.length-1):o="before",n=i[r]),u.push(Nu(n)),a=function(e,t,n){var r=[];for(t=t.parentNode;!(t===e||n&
 &n(t));t=t.parentNode)r.push(t);return r}(e,n),a=qt.filter(a,y(_o.isBogus)),(u=u.concat(qt.map(a,function(e){return Nu(e)}))).reverse().join("/")+","+o},Su=function(e,t){var n,r,o;return t?(t=(n=t.split(","))[0].split("/"),o=1<n.length?n[1]:"before",(r=qt.reduce(t,function(e,t){return(t=/([\w\-\(\)]+)\[([0-9]+)\]/.exec(t))?("text()"===t[1]&&(t[1]="#text"),n=e,r=t[1],o=parseInt(t[2],10),i=xu(n),i=qt.filter(i,function(e,t){return!vu(e)||!vu(i[t-1])}),(i=qt.filter(i,_o.matchNodeNames(r)))[o]):null;var n,r,o,i},e))?vu(r)?function(e,t){for(var n,r=e,o=0;vu(r);){if(n=r.data.length,o<=t&&t<=o+n){e=r,t-=o;break}if(!vu(r.nextSibling)){e=r,t=n;break}o+=n,r=r.nextSibling}return vu(e)&&t>e.data.length&&(t=e.data.length),hu(e,t)}(r,parseInt(o,10)):(o="after"===o?yu(r)+1:yu(r),hu(r.parentNode,o)):null):null},ku=_o.isContentEditableFalse,Tu=function(e,t,n,r,o){var i,a=r[o
 ?"startContainer":"endContainer"],u=r[o?"startOffset":"endOffset"],s=[],c=0,l=e.getRoot();for(_o.isText(a)?s.push(n?function(e,t,n){var r,o;for(o=e(t.data.slice(0,n)).length,r=t.previousSibling;r&&_o.isText(r);r=r.previousSibling)o+=e(r.data).length;return o}(t,a,u):u):(u>=(i=a.childNodes).length&&i.length&&(c=1,u=Math.max(0,i.length-1)),s.push(e.nodeIndex(i[u],n)+c));a&&a!==l;a=a.parentNode)s.push(e.nodeIndex(a,n));return s},Au=function(e){_o.isText(e)&&0===e.data.length&&e.parentNode.removeChild(e)},Ru=function(e,t,n){var r=0;return Yt.each(e.select(t),function(e){if("all"!==e.getAttribute("data-mce-bogus"))return e!==n&&void r++}),r},_u=function(e,t){var n,r,o,i=t?"start":"end";n=e[i+"Container"],r=e[i+"Offset"],_o.isElement(n)&&"TR"===n.nodeName&&(n=(o=n.childNodes)[Math.min(t?r:r-1,o.length-1)])&
 amp;&(r=t?0:n.childNodes.length,e["set"+(t?"Start":"End")](n,r))},Du=function(e){return _u(e,!0),_u(e,!1),e},Bu=function(e,t){var n;if(_o.isElement(e)&&(e=Va(e,t),ku(e)))return e;if(pa(e)){if(_o.isText(e)&&ma(e)&&(e=e.parentNode),n=e.previousSibling,ku(n))return n;if(n=e.nextSibling,ku(n))return n}},Ou=function(e,t,n){var r=n.getNode(),o=r?r.nodeName:null,i=n.getRng();if(ku(r)||"IMG"===o)return{name:o,index:Ru(n.dom,o,r)};var a,u,s,c,l,f,d,m=Bu((a=i).startContainer,a.startOffset)||Bu(a.endContainer,a.endOffset);return m?{name:o=m.tagName,index:Ru(n.dom,o,m)}:(u=e,c=t,l=i,f=(s=n).dom,(d={}).start=Tu(f,u,c,l,!0),s.isCollapsed()||(d.end=Tu(f,u,c,l,!1)),d)},Pu=function(e,t,n){var r={"data-mce-type":"bookmark",id:t,style:"overflow:hidden;line-height:0px"};return n?e.create("span",r,"&#xFEFF;"):e.create("span",r)},Lu=function(e,t){var n=e.dom,r=e.getRng(),o=n
 .uniqueId(),i=e.isCollapsed(),a=e.getNode(),u=a.nodeName;if("IMG"===u)return{name:u,index:Ru(n,u,a)};var s=Du(r.cloneRange());if(!i){s.collapse(!1);var c=Pu(n,o+"_end",t);s.insertNode(c),Au(c.nextSibling)}(r=Du(r)).collapse(!0);var l=Pu(n,o+"_start",t);return r.insertNode(l),Au(l.previousSibling),Au(l.nextSibling),e.moveToBookmark({id:o,keep:1}),{id:o}},Iu={getBookmark:function(e,t,n){return 2===t?Ou(la,n,e):3===t?(o=(r=e).getRng(),{start:Eu(r.dom.getRoot(),hu.fromRangeStart(o)),end:Eu(r.dom.getRoot(),hu.fromRangeEnd(o))}):t?{rng:e.getRng()}:Lu(e,!1);var r,o},getUndoBookmark:d(Ou,q,!0),getPersistentBookmark:Lu},Mu="_mce_caret",Fu=function(e){return _o.isElement(e)&&e.id===Mu},zu=function(e,t){for(;t&&t!==e;){if(t.id===Mu)return t;t=t.parentNode}return null},Uu=_o.isElement,Vu=_o.isText,Hu=function(e){var t=e.parentNode;t&&t.removeChild(e)},ju=function(e,t){0===t.length?Hu(e):e.nodeValue=t},qu=function(e){var t=la(e);ret
 urn{count:e.length-t.length,text:t}},$u=function(e,t){return Xu(e),t},Wu=function(e,t){var n,r,o,i=t.container(),a=(n=ne(i.childNodes),r=e,o=I(n,r),-1===o?A.none():A.some(o)).map(function(e){return e<t.offset()?hu(i,t.offset()-1):t}).getOr(t);return Xu(e),a},Ku=function(e,t){return Vu(e)&&t.container()===e?(r=t,o=qu((n=e).data.substr(0,r.offset())),i=qu(n.data.substr(r.offset())),0<(a=o.text+i.text).length?(ju(n,a),hu(n,r.offset()-o.count)):r):$u(e,t);var n,r,o,i,a},Xu=function(e){if(Uu(e)&&pa(e)&&(ha(e)?e.removeAttribute("data-mce-caret"):Hu(e)),Vu(e)){var t=la(function(e){try{return e.nodeValue}catch(t){return""}}(e));ju(e,t)}},Yu={removeAndReposition:function(e,t){return hu.isTextPosition(t)?Ku(e,t):(n=e,(r=t).container()===n.parentNode?Wu(n,r):$u(n,r));var n,r},remove:Xu},Gu=tr.detect().browser,Ju=_o.isContentEditableFalse,Qu=function(e,t,n){var r,o,i,a,u,s=Ia(t.getBoundingClientRect(),n);return"BODY"===e.tagName?(r=e.o
 wnerDocument.documentElement,o=e.scrollLeft||r.scrollLeft,i=e.scrollTop||r.scrollTop):(u=e.getBoundingClientRect(),o=e.scrollLeft-u.left,i=e.scrollTop-u.top),s.left+=o,s.right+=o,s.top+=i,s.bottom+=i,s.width=1,0<(a=t.offsetWidth-t.clientWidth)&&(n&&(a*=-1),s.left+=a,s.right+=a),s},Zu=function(a,u,e){var t,s,c=Bi(A.none()),l=function(){!function(e){var t,n,r,o,i;for(t=pn("*[contentEditable=false]",e),o=0;o<t.length;o++)r=(n=t[o]).previousSibling,xa(r)&&(1===(i=r.data).length?r.parentNode.removeChild(r):r.deleteData(i.length-1,1)),r=n.nextSibling,Ca(r)&&(1===(i=r.data).length?r.parentNode.removeChild(r):r.deleteData(0,1))}(a),s&&(Yu.remove(s),s=null),c.get().each(function(e){pn(e.caret).remove(),c.set(A.none())}),clearInterval(t)},f=function(){t=ve.setInterval(function(){e()?pn("div.mce-visual-caret",a).toggleClass("mce-visual-caret-hidden"):pn("div.mce-visual-caret",a).addClass("mce-visual-care
 t-hidden")},500)};return{show:function(t,e){var n,r,o;if(l(),o=e,_o.isElement(o)&&/^(TD|TH)$/i.test(o.tagName))return null;if(!u(e))return s=function(e,t){var n,r,o;if(r=e.ownerDocument.createTextNode(ca),o=e.parentNode,t){if(n=e.previousSibling,da(n)){if(pa(n))return n;if(xa(n))return n.splitText(n.data.length-1)}o.insertBefore(r,e)}else{if(n=e.nextSibling,da(n)){if(pa(n))return n;if(Ca(n))return n.splitText(1),n}e.nextSibling?o.insertBefore(r,e.nextSibling):o.appendChild(r)}return r}(e,t),r=e.ownerDocument.createRange(),Ju(s.nextSibling)?(r.setStart(s,0),r.setEnd(s,0)):(r.setStart(s,1),r.setEnd(s,1)),r;s=ya("p",e,t),n=Qu(a,e,t),pn(s).css("top",n.top);var i=pn('<div class="mce-visual-caret" data-mce-bogus="all"></div>').css(n).appendTo(a)[0];return c.set(A.some({caret:i,element:e,before:t})),c.get().each(function(e){t&&pn(e.caret).addClass("mce-visual-caret-before")}),f(),(r=e.ownerDocument.createRan
 ge()).setStart(s,0),r.setEnd(s,0),r},hide:l,getCss:function(){return".mce-visual-caret {position: absolute;background-color: black;background-color: currentcolor;}.mce-visual-caret-hidden {display: none;}*[data-mce-caret] {position: absolute;left: -1000px;right: auto;top: 0;margin: 0;padding: 0;}"},reposition:function(){c.get().each(function(e){var t=Qu(a,e.element,e.before);pn(e.caret).css(t)})},destroy:function(){return ve.clearInterval(t)}}},es=function(){return Gu.isIE()||Gu.isEdge()||Gu.isFirefox()},ts=function(e){return Ju(e)||_o.isTable(e)&&es()},ns=(mu="\xa0",function(e){return mu===e}),rs=function(e){return/^[\r\n\t ]$/.test(e)},os=function(e){return!rs(e)&&!ns(e)},is=_o.isContentEditableFalse,as=_o.matchStyleValues("display","block table table-cell table-caption list-item"),us=pa,ss=ma,cs=_o.isElement,ls=Da,fs=function(e){return 0<e},ds=function(e){return e<0},ms=function(e,t){for(var n;n=e(t);)if(!ss(n))return 
 n;return null},gs=function(e,t,n,r,o){var i=new ro(e,r);if(ds(t)){if((is(e)||ss(e))&&n(e=ms(i.prev,!0)))return e;for(;e=ms(i.prev,o);)if(n(e))return e}if(fs(t)){if((is(e)||ss(e))&&n(e=ms(i.next,!0)))return e;for(;e=ms(i.next,o);)if(n(e))return e}return null},ps=function(e,t){for(;e&&e!==t;){if(as(e))return e;e=e.parentNode}return null},hs=function(e,t,n){return ps(e.container(),n)===ps(t.container(),n)},vs=function(e,t){var n,r;return t?(n=t.container(),r=t.offset(),cs(n)?n.childNodes[r+e]:null):null},bs=function(e,t){var n=t.ownerDocument.createRange();return e?(n.setStartBefore(t),n.setEndBefore(t)):(n.setStartAfter(t),n.setEndAfter(t)),n},ys=function(e,t,n){var r,o,i,a;for(o=e?"previousSibling":"nextSibling";n&&n!==t;){if(r=n[o],us(r)&&(r=r[o]),is(r)){if(a=n,ps(r,i=t)===ps(a,i))return r;break}if(ls(r))break;n=n.parentNode}return null},Cs=d(bs,!0),xs=d(bs,!1),ws=function(e,t,n){var r,o,i,a,u=d(ys,!0,t),s=d(ys,!1,t);if(o=n
 .startContainer,i=n.startOffset,ma(o)){if(cs(o)||(o=o.parentNode),"before"===(a=o.getAttribute("data-mce-caret"))&&(r=o.nextSibling,ts(r)))return Cs(r);if("after"===a&&(r=o.previousSibling,ts(r)))return xs(r)}if(!n.collapsed)return n;if(_o.isText(o)){if(us(o)){if(1===e){if(r=s(o))return Cs(r);if(r=u(o))return xs(r)}if(-1===e){if(r=u(o))return xs(r);if(r=s(o))return Cs(r)}return n}if(xa(o)&&i>=o.data.length-1)return 1===e&&(r=s(o))?Cs(r):n;if(Ca(o)&&i<=1)return-1===e&&(r=u(o))?xs(r):n;if(i===o.data.length)return(r=s(o))?Cs(r):n;if(0===i)return(r=u(o))?xs(r):n}return n},Ns=function(e,t){var n=vs(e,t);return is(n)&&!_o.isBogusAll(n)},Es=function(e,t){return _o.isTable(vs(e,t))},Ss=function(e,t){return A.from(vs(e?0:-1,t)).filter(is)},ks=function(e,t,n){var r=ws(e,t,n);return-1===e?du.fromRangeStart(r):du.fromRangeEnd(r)},Ts=d(Ns,0),As=d(Ns,-1),Rs=d(Es,0),_s=d(Es,-1),Ds=function(n,r,o){return A.f
 rom(o.container()).filter(_o.isText).exists(function(e){var t=n?0:-1;return r(e.data.charAt(o.offset()+t))})},Bs=d(Ds,!0,rs),Os=d(Ds,!1,rs),Ps=function(e){return A.from(e.getNode()).map(rr.fromDom)};(pu=gu||(gu={}))[pu.Backwards=-1]="Backwards",pu[pu.Forwards=1]="Forwards";var Ls,Is,Ms,Fs,zs,Us=_o.isContentEditableFalse,Vs=_o.isText,Hs=_o.isElement,js=_o.isBr,qs=Da,$s=function(e){return Aa(e)||!!Ba(t=e)&&!0!==U(ne(t.getElementsByTagName("*")),function(e,t){return e||Na(t)},!1);var t},Ws=Oa,Ks=function(e,t){return e.hasChildNodes()&&t<e.childNodes.length?e.childNodes[t]:null},Xs=function(e,t){if(fs(e)){if(qs(t.previousSibling)&&!Vs(t.previousSibling))return hu.before(t);if(Vs(t))return hu(t,0)}if(ds(e)){if(qs(t.nextSibling)&&!Vs(t.nextSibling))return hu.after(t);if(Vs(t))return hu(t,t.data.length)}return ds(e)?js(t)?hu.before(t):hu.after(t):hu.before(t)},Ys=function(e,t,n){var r,o,i,a,u;if(!Hs(n)||!t)return null;if(t.is
 Equal(hu.after(n))&&n.lastChild){if(u=hu.after(n.lastChild),ds(e)&&qs(n.lastChild)&&Hs(n.lastChild))return js(n.lastChild)?hu.before(n.lastChild):u}else u=t;var s,c,l,f=u.container(),d=u.offset();if(Vs(f)){if(ds(e)&&0<d)return hu(f,--d);if(fs(e)&&d<f.length)return hu(f,++d);r=f}else{if(ds(e)&&0<d&&(o=Ks(f,d-1),qs(o)))return!$s(o)&&(i=gs(o,e,Ws,o))?Vs(i)?hu(i,i.data.length):hu.after(i):Vs(o)?hu(o,o.data.length):hu.before(o);if(fs(e)&&d<f.childNodes.length&&(o=Ks(f,d),qs(o)))return js(o)?(s=n,(l=(c=o).nextSibling)&&qs(l)?Vs(l)?hu(l,0):hu.before(l):Ys(gu.Forwards,hu.after(c),s)):!$s(o)&&(i=gs(o,e,Ws,o))?Vs(i)?hu(i,0):hu.before(i):Vs(o)?hu(o,0):hu.after(o);r=o||u.getNode()}return(fs(e)&&u.isAtEnd()||ds(e)&&u.isAtStart())&&(r=gs(r,e,j(!0),n,!0),Ws(r,n))?Xs(e,r):(o=gs(r,e,Ws,n),!(a=qt.last(z(function(e,t){for(var n=[];e&&e!==t;)n.push(e),e=e.parentNod
 e;return n}(f,n),Us)))||o&&a.contains(o)?o?Xs(e,o):null:u=fs(e)?hu.after(a):hu.before(a))},Gs=function(t){return{next:function(e){return Ys(gu.Forwards,e,t)},prev:function(e){return Ys(gu.Backwards,e,t)}}},Js=function(e){return hu.isTextPosition(e)?0===e.offset():Da(e.getNode())},Qs=function(e){if(hu.isTextPosition(e)){var t=e.container();return e.offset()===t.data.length}return Da(e.getNode(!0))},Zs=function(e,t){return!hu.isTextPosition(e)&&!hu.isTextPosition(t)&&e.getNode()===t.getNode(!0)},ec=function(e,t,n){return e?!Zs(t,n)&&(r=t,!(!hu.isTextPosition(r)&&_o.isBr(r.getNode())))&&Qs(t)&&Js(n):!Zs(n,t)&&Js(t)&&Qs(n);var r},tc=function(e,t,n){var r=Gs(t);return A.from(e?r.next(n):r.prev(n))},nc=function(e,t){var n,r,o,i,a,u=e?t.firstChild:t.lastChild;return _o.isText(u)?A.some(hu(u,e?0:u.data.length)):u?Da(u)?A.some(e?hu.before(u):(a=u,_o.isBr(a)?hu.before(a):hu.after(a))):(r=t,o=u,i=(n=e)?hu.before(o):hu.afte
 r(o),tc(n,r,i)):A.none()},rc=d(tc,!0),oc=d(tc,!1),ic={fromPosition:tc,nextPosition:rc,prevPosition:oc,navigate:function(t,n,r){return tc(t,n,r).bind(function(e){return hs(r,e,n)&&ec(t,r,e)?tc(t,n,e):A.some(e)})},positionIn:nc,firstPositionIn:d(nc,!0),lastPositionIn:d(nc,!1)},ac=function(e,t){return!e.isBlock(t)||t.innerHTML||de.ie||(t.innerHTML='<br data-mce-bogus="1" />'),t},uc=function(e,t){return ic.lastPositionIn(e).fold(function(){return!1},function(e){return t.setStart(e.container(),e.offset()),t.setEnd(e.container(),e.offset()),!0})},sc=function(e,t,n){return!(!1!==t.hasChildNodes()||!zu(e,t)||(o=n,i=(r=t).ownerDocument.createTextNode(ca),r.appendChild(i),o.setStart(i,0),o.setEnd(i,0),0));var r,o,i},cc=function(e,t,n,r){var o,i,a,u,s=n[t?"start":"end"],c=e.getRoot();if(s){for(a=s[0],i=c,o=s.length-1;1<=o;o--){if(u=i.childNodes,sc(c,i,r))return!0;if(s[o]>u.length-1)return!!sc(c,i,r)||uc(i,r);i=u[s[o]]}3===i.nodeType&&(a
 =Math.min(s[0],i.nodeValue.length)),1===i.nodeType&&(a=Math.min(s[0],i.childNodes.length)),t?r.setStart(i,a):r.setEnd(i,a)}return!0},lc=function(e){return _o.isText(e)&&0<e.data.length},fc=function(e,t,n){var r,o,i,a,u,s,c=e.get(n.id+"_"+t),l=n.keep;if(c){if(r=c.parentNode,"start"===t?l?c.hasChildNodes()?(r=c.firstChild,o=1):lc(c.nextSibling)?(r=c.nextSibling,o=0):lc(c.previousSibling)?(r=c.previousSibling,o=c.previousSibling.data.length):(r=c.parentNode,o=e.nodeIndex(c)+1):o=e.nodeIndex(c):l?c.hasChildNodes()?(r=c.firstChild,o=1):lc(c.previousSibling)?(r=c.previousSibling,o=c.previousSibling.data.length):(r=c.parentNode,o=e.nodeIndex(c)):o=e.nodeIndex(c),u=r,s=o,!l){for(a=c.previousSibling,i=c.nextSibling,Yt.each(Yt.grep(c.childNodes),function(e){_o.isText(e)&&(e.nodeValue=e.nodeValue.replace(/\uFEFF/g,""))});c=e.get(n.id+"_"+t);)e.remove(c,!0);a&&i&&a.nodeType===i.nodeType&&_o.isText(a)&
 &!de.opera&&(o=a.nodeValue.length,a.appendData(i.nodeValue),e.remove(i),u=a,s=o)}return A.some(hu(u,s))}return A.none()},dc=function(e,t){var n,r,o,i,a,u,s,c,l,f,d,m,g,p,h,v,b=e.dom;if(t){if(v=t,Yt.isArray(v.start))return p=t,h=(g=b).createRng(),cc(g,!0,p,h)&&cc(g,!1,p,h)?A.some(h):A.none();if("string"==typeof t.start)return A.some((f=t,d=(l=b).createRng(),m=Su(l.getRoot(),f.start),d.setStart(m.container(),m.offset()),m=Su(l.getRoot(),f.end),d.setEnd(m.container(),m.offset()),d));if(t.hasOwnProperty("id"))return s=fc(o=b,"start",i=t),c=fc(o,"end",i),qa([s,(a=c,u=s,a.isSome()?a:u)],function(e,t){var n=o.createRng();return n.setStart(ac(o,e.container()),e.offset()),n.setEnd(ac(o,t.container()),t.offset()),n});if(t.hasOwnProperty("name"))return n=b,r=t,A.from(n.select(r.name)[r.index]).map(function(e){var t=n.createRng();return t.selectNode(e),t});if(t.hasOwnProperty("rng"))return A.some(t.rng)}return A.non
 e()},mc=function(e,t,n){return Iu.getBookmark(e,t,n)},gc=function(t,e){dc(t,e).each(function(e){t.setRng(e)})},pc=function(e){return _o.isElement(e)&&"SPAN"===e.tagName&&"bookmark"===e.getAttribute("data-mce-type")},hc=function(e){return e&&/^(IMG)$/.test(e.nodeName)},vc=function(e){return e&&3===e.nodeType&&/^([\t \r\n]+|)$/.test(e.nodeValue)},bc=function(e,t,n){return"color"!==n&&"backgroundColor"!==n||(t=e.toHex(t)),"fontWeight"===n&&700===t&&(t="bold"),"fontFamily"===n&&(t=t.replace(/[\'\"]/g,"").replace(/,\s+/g,",")),""+t},yc={isInlineBlock:hc,moveStart:function(e,t,n){var r,o,i,a=n.startOffset,u=n.startContainer;if((n.startContainer!==n.endContainer||!hc(n.startContainer.childNodes[n.startOffset]))&&1===u.nodeType)for(a<(i=u.childNodes).length?r=new ro(u=i[a],e.getParent(u,e.isBlock
 )):(r=new ro(u=i[i.length-1],e.getParent(u,e.isBlock))).next(!0),o=r.current();o;o=r.next())if(3===o.nodeType&&!vc(o))return n.setStart(o,0),void t.setRng(n)},getNonWhiteSpaceSibling:function(e,t,n){if(e)for(t=t?"nextSibling":"previousSibling",e=n?e:e[t];e;e=e[t])if(1===e.nodeType||!vc(e))return e},isTextBlock:function(e,t){return t.nodeType&&(t=t.nodeName),!!e.schema.getTextBlockElements()[t.toLowerCase()]},isValid:function(e,t,n){return e.schema.isValidChild(t,n)},isWhiteSpaceNode:vc,replaceVars:function(e,n){return"string"!=typeof e?e=e(n):n&&(e=e.replace(/%(\w+)/g,function(e,t){return n[t]||e})),e},isEq:function(e,t){return t=t||"",e=""+((e=e||"").nodeName||e),t=""+(t.nodeName||t),e.toLowerCase()===t.toLowerCase()},normalizeStyleValue:bc,getStyle:function(e,t,n){return bc(e,e.getStyle(t,n),n)},getTextDecoration:function(t,e){var n;return t.getParent(e,function(e){return(n=t.getStyle(e,&
 quot;text-decoration"))&&"none"!==n}),n},getParents:function(e,t,n){return e.getParents(t,n,e.getRoot())}},Cc=pc,xc=yc.getParents,wc=yc.isWhiteSpaceNode,Nc=yc.isTextBlock,Ec=function(e,t){for(void 0===t&&(t=3===e.nodeType?e.length:e.childNodes.length);e&&e.hasChildNodes();)(e=e.childNodes[t])&&(t=3===e.nodeType?e.length:e.childNodes.length);return{node:e,offset:t}},Sc=function(e,t){for(var n=t;n;){if(1===n.nodeType&&e.getContentEditable(n))return"false"===e.getContentEditable(n)?n:t;n=n.parentNode}return t},kc=function(e,t,n,r){var o,i,a=n.nodeValue;return void 0===r&&(r=e?a.length:0),e?(o=a.lastIndexOf(" ",r),-1!==(o=(i=a.lastIndexOf("\xa0",r))<o?o:i)&&!t&&(o<r||!e)&&o<=a.length&&o++):(o=a.indexOf(" ",r),i=a.indexOf("\xa0",r),o=-1!==o&&(-1===i||o<i)?o:i),o},Tc=function(e,t,n,r,o,i){var a,u,s,c;if(3===n.nodeType){if(-1!=
 =(s=kc(o,i,n,r)))return{container:n,offset:s};c=n}for(a=new ro(n,e.getParent(n,e.isBlock)||t);u=a[o?"prev":"next"]();)if(3!==u.nodeType||Cc(u.parentNode)){if(e.isBlock(u)||yc.isEq(u,"BR"))break}else if(-1!==(s=kc(o,i,c=u)))return{container:u,offset:s};if(c)return{container:c,offset:r=o?0:c.length}},Ac=function(e,t,n,r,o){var i,a,u,s;for(3===r.nodeType&&0===r.nodeValue.length&&r[o]&&(r=r[o]),i=xc(e,r),a=0;a<i.length;a++)for(u=0;u<t.length;u++)if(!("collapsed"in(s=t[u])&&s.collapsed!==n.collapsed)&&e.is(i[a],s.selector))return i[a];return r},Rc=function(t,e,n,r){var o,i=t.dom,a=i.getRoot();if(e[0].wrapper||(o=i.getParent(n,e[0].block,a)),!o){var u=i.getParent(n,"LI,TD,TH");o=i.getParent(3===n.nodeType?n.parentNode:n,function(e){return e!==a&&Nc(t,e)},u)}if(o&&e[0].wrapper&&(o=xc(i,o,"ul,ol").reverse()[0]||o),!o)for(o=n;o[r]&&!i.isBlock(o[r])&&am
 p;(o=o[r],!yc.isEq(o,"br")););return o||n},_c=function(e,t,n,r,o,i,a){var u,s,c,l,f,d;if(u=s=a?n:o,l=a?"previousSibling":"nextSibling",f=e.getRoot(),3===u.nodeType&&!wc(u)&&(a?0<r:i<u.nodeValue.length))return u;for(;;){if(!t[0].block_expand&&e.isBlock(s))return s;for(c=s[l];c;c=c[l])if(!Cc(c)&&!wc(c)&&("BR"!==(d=c).nodeName||!d.getAttribute("data-mce-bogus")||d.nextSibling))return s;if(s===f||s.parentNode===f){u=s;break}s=s.parentNode}return u},Dc=function(e,t,n,r){var o,i=t.startContainer,a=t.startOffset,u=t.endContainer,s=t.endOffset,c=e.dom;return 1===i.nodeType&&i.hasChildNodes()&&3===(i=Va(i,a)).nodeType&&(a=0),1===u.nodeType&&u.hasChildNodes()&&3===(u=Va(u,t.collapsed?s:s-1)).nodeType&&(s=u.nodeValue.length),i=Sc(c,i),u=Sc(c,u),(Cc(i.parentNode)||Cc(i))&&(i=Cc(i)?i:i.parentNode,3===(i=t.collapsed?i.previousSibling||i:i.nextSibl
 ing||i).nodeType&&(a=t.collapsed?i.length:0)),(Cc(u.parentNode)||Cc(u))&&(u=Cc(u)?u:u.parentNode,3===(u=t.collapsed?u.nextSibling||u:u.previousSibling||u).nodeType&&(s=t.collapsed?0:u.length)),t.collapsed&&((o=Tc(c,e.getBody(),i,a,!0,r))&&(i=o.container,a=o.offset),(o=Tc(c,e.getBody(),u,s,!1,r))&&(u=o.container,s=o.offset)),n[0].inline&&(u=r?u:function(e,t){var n=Ec(e,t);if(n.node){for(;n.node&&0===n.offset&&n.node.previousSibling;)n=Ec(n.node.previousSibling);n.node&&0<n.offset&&3===n.node.nodeType&&" "===n.node.nodeValue.charAt(n.offset-1)&&1<n.offset&&(e=n.node).splitText(n.offset-1)}return e}(u,s)),(n[0].inline||n[0].block_expand)&&(n[0].inline&&3===i.nodeType&&0!==a||(i=_c(c,n,i,a,u,s,!0)),n[0].inline&&3===u.nodeType&&s!==u.nodeValue.length||(u=_c(c,n,i,a,u,s,!1))),n[0].selector&&!1!==n[0].expand&&amp
 ;!n[0].inline&&(i=Ac(c,n,t,i,"previousSibling"),u=Ac(c,n,t,u,"nextSibling")),(n[0].block||n[0].selector)&&(i=Rc(e,n,i,"previousSibling"),u=Rc(e,n,u,"nextSibling"),n[0].block&&(c.isBlock(i)||(i=_c(c,n,i,a,u,s,!0)),c.isBlock(u)||(u=_c(c,n,i,a,u,s,!1)))),1===i.nodeType&&(a=c.nodeIndex(i),i=i.parentNode),1===u.nodeType&&(s=c.nodeIndex(u)+1,u=u.parentNode),{startContainer:i,startOffset:a,endContainer:u,endOffset:s}},Bc=Yt.each,Oc=function(e,t,o){var n,r,i,a,u,s,c,l=t.startContainer,f=t.startOffset,d=t.endContainer,m=t.endOffset;if(0<(c=e.select("td[data-mce-selected],th[data-mce-selected]")).length)Bc(c,function(e){o([e])});else{var g,p,h,v=function(e){var t;return 3===(t=e[0]).nodeType&&t===l&&f>=t.nodeValue.length&&e.splice(0,1),t=e[e.length-1],0===m&&0<e.length&&t===d&&3===t.nodeType&&e.splice(e.length-1,1),e},b=function(e,t,n){for(
 var r=[];e&&e!==n;e=e[t])r.push(e);return r},y=function(e,t){do{if(e.parentNode===t)return e;e=e.parentNode}while(e)},C=function(e,t,n){var r=n?"nextSibling":"previousSibling";for(u=(a=e).parentNode;a&&a!==t;a=u)u=a.parentNode,(s=b(a===e?a:a[r],r)).length&&(n||s.reverse(),o(v(s)))};if(1===l.nodeType&&l.hasChildNodes()&&(l=l.childNodes[f]),1===d.nodeType&&d.hasChildNodes()&&(p=m,h=(g=d).childNodes,--p>h.length-1?p=h.length-1:p<0&&(p=0),d=h[p]||g),l===d)return o(v([l]));for(n=e.findCommonAncestor(l,d),a=l;a;a=a.parentNode){if(a===d)return C(l,n,!0);if(a===n)break}for(a=d;a;a=a.parentNode){if(a===l)return C(d,n);if(a===n)break}r=y(l,n)||l,i=y(d,n)||d,C(l,r,!0),(s=b(r===l?r:r.nextSibling,"nextSibling",i===d?i.nextSibling:i)).length&&o(v(s)),C(d,i)}},Pc=(Ls=lr,Is="text",Ms=function(e){return Ls(e)?A.from(e.dom().nodeValue):A.none()},Fs=tr.detect().browser,{get:function(e)
 {if(!Ls(e))throw new Error("Can only get "+Is+" value of a "+Is+" node");return zs(e).getOr("")},getOption:zs=Fs.isIE()&&10===Fs.version.major?function(e){try{return Ms(e)}catch(LN){return A.none()}}:Ms,set:function(e,t){if(!Ls(e))throw new Error("Can only set raw "+Is+" value of a "+Is+" node");e.dom().nodeValue=t}}),Lc=function(e){return Pc.get(e)},Ic=function(r,o,i,a){return Ir(o).fold(function(){return"skipping"},function(e){return"br"===a||lr(n=o)&&"\ufeff"===Lc(n)?"valid":cr(t=o)&&zi(t,Yi())?"existing":Fu(o)?"caret":yc.isValid(r,i,a)&&yc.isValid(r,ur(e),i)?"valid":"invalid-child";var t,n})},Mc=function(e,t,n,r){var o,i,a=t.uid,u=void 0===a?(o="mce-annotation",i=(new Date).getTime(),o+"_"+Math.floor(1e9*Math.random())+ ++na+String(i)):a,s=function(e,t){var n={};for(var r in e)Obj
 ect.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&(n[r[o]]=e[r[o]])}return n}(t,["uid"]),c=rr.fromTag("span",e);Mi(c,Yi()),hr(c,""+Ji(),u),hr(c,""+Gi(),n);var l,f=r(u,s),d=f.attributes,m=void 0===d?{}:d,g=f.classes,p=void 0===g?[]:g;return vr(c,m),l=c,F(p,function(e){Mi(l,e)}),c},Fc=function(i,e,t,n,r){var a=[],u=Mc(i.getDoc(),r,t,n),s=Bi(A.none()),c=function(){s.set(A.none())},l=function(e){F(e,o)},o=function(e){var t,n;switch(Ic(i,e,"span",ur(e))){case"invalid-child":c();var r=Vr(e);l(r),c();break;case"valid":var o=s.get().getOrThunk(function(){var e=oa(u);return a.push(e),s.set(A.some(e)),e});Ni(t=e,n=o),ki(n,t)}};return Oc(i.dom,e,function(e){var t;c(),t=$(e,rr.fromDom),l(t)}),a},zc=function(s,c,l,f){s.u
 ndoManager.transact(function(){var e,t,n,r,o=s.selection.getRng();if(o.collapsed&&(r=Dc(e=s,t=o,[{inline:!0}],3===(n=t).startContainer.nodeType&&n.startContainer.nodeValue.length>=n.startOffset&&"\xa0"===n.startContainer.nodeValue[n.startOffset]),t.setStart(r.startContainer,r.startOffset),t.setEnd(r.endContainer,r.endOffset),e.selection.setRng(t)),s.selection.getRng().collapsed){var i=Mc(s.getDoc(),f,c,l.decorate);aa(i,"\xa0"),s.selection.getRng().insertNode(i.dom()),s.selection.select(i.dom())}else{var a=Iu.getPersistentBookmark(s.selection,!1),u=s.selection.getRng();Fc(s,u,c,l.decorate,f),s.selection.moveToBookmark(a)}})};function Uc(s){var n,r=(n={},{register:function(e,t){n[e]={name:e,settings:t}},lookup:function(e){return n.hasOwnProperty(e)?A.from(n[e]).map(function(e){return e.settings}):A.none()}});ta(s,r);var o=ea(s);return{register:function(e,t){r.register(e,t)},annotate:function(t,n){r.lookup(t).each(function(e){zc(s,t,e,n)})
 },annotationChanged:function(e,t){o.addListener(e,t)},remove:function(e){Qi(s,A.some(e)).each(function(e){var t=e.elements;F(t,_i)})},getAll:function(e){var t,n,r,o,i,a,u=(t=s,n=e,r=rr.fromDom(t.getBody()),o=Vi(r,"["+Gi()+'="'+n+'"]'),i={},F(o,function(e){var t=br(e,Ji()),n=i.hasOwnProperty(t)?i[t]:[];i[t]=n.concat([e])}),i);return a=function(e){return $(e,function(e){return e.dom()})},gr(u,function(e,t,n){return{k:t,v:a(e,t,n)}})}}}var Vc=function(e){return Yt.grep(e.childNodes,function(e){return"LI"===e.nodeName})},Hc=function(e){return e&&e.firstChild&&e.firstChild===e.lastChild&&("\xa0"===(t=e.firstChild).data||_o.isBr(t));var t},jc=function(e){return 0<e.length&&(!(t=e[e.length-1]).firstChild||Hc(t))?e.slice(0,-1):e;var t},qc=function(e,t){var n=e.getParent(t,e.isBlock);return n&&"LI"===n.nodeName?n:null},$c=function(e,t){var n=hu.after(e),r=Gs(t).prev(n);return r?r.toRange():null},Wc=f
 unction(t,e,n){var r,o,i,a,u=t.parentNode;return Yt.each(e,function(e){u.insertBefore(e,t)}),r=t,o=n,i=hu.before(r),(a=Gs(o).next(i))?a.toRange():null},Kc=function(e,t){var n,r,o,i,a,u,s=t.firstChild,c=t.lastChild;return s&&"meta"===s.name&&(s=s.next),c&&"mce_marker"===c.attr("id")&&(c=c.prev),r=c,u=(n=e).getNonEmptyElements(),r&&(r.isEmpty(u)||(o=r,n.getBlockElements()[o.name]&&(a=o).firstChild&&a.firstChild===a.lastChild&&("br"===(i=o.firstChild).name||"\xa0"===i.value)))&&(c=c.prev),!(!s||s!==c||"ul"!==s.name&&"ol"!==s.name)},Xc=function(e,o,i,t){var n,r,a,u,s,c,l,f,d,m,g,p,h,v,b,y,C,x,w,N=(n=o,r=t,c=e.serialize(r),l=n.createFragment(c),u=(a=l).firstChild,s=a.lastChild,u&&"META"===u.nodeName&&u.parentNode.removeChild(u),s&&"mce_marker"===s.id&&s.parentNode.removeChild(s),a),E=qc(o,
 i.startContainer),S=jc(Vc(N.firstChild)),k=o.getRoot(),T=function(e){var t=hu.fromRangeStart(i),n=Gs(o.getRoot()),r=1===e?n.prev(t):n.next(t);return!r||qc(o,r.getNode())!==E};return T(1)?Wc(E,S,k):T(2)?(f=E,d=S,m=k,o.insertAfter(d.reverse(),f),$c(d[0],m)):(p=S,h=k,v=g=E,y=(b=i).cloneRange(),C=b.cloneRange(),y.setStartBefore(v),C.setEndAfter(v),x=[y.cloneContents(),C.cloneContents()],(w=g.parentNode).insertBefore(x[0],g),Yt.each(p,function(e){w.insertBefore(e,g)}),w.insertBefore(x[1],g),w.removeChild(g),$c(p[p.length-1],h))},Yc=function(e,t){return!!qc(e,t)},Gc=Yt.each,Jc=function(o){this.compare=function(e,t){if(e.nodeName!==t.nodeName)return!1;var n=function(n){var r={};return Gc(o.getAttribs(n),function(e){var t=e.nodeName.toLowerCase();0!==t.indexOf("_")&&"style"!==t&&0!==t.indexOf("data-")&&(r[t]=o.getAttrib(n,t))}),r},r=function(e,t){var n,r;for(r in e)if(e.hasOwnProperty(r)){if(void 0===(n=t[r]))return!1;if(e[r]!==n)return!
 1;delete t[r]}for(r in t)if(t.hasOwnProperty(r))return!1;return!0};return!(!r(n(e),n(t))||!r(o.parseStyle(o.getAttrib(e,"style")),o.parseStyle(o.getAttrib(t,"style")))||pc(e)||pc(t))}},Qc=function(e){var t=Vi(e,"br"),n=z(function(e){for(var t=[],n=e.dom();n;)t.push(rr.fromDom(n)),n=n.lastChild;return t}(e).slice(-1),fo);t.length===n.length&&F(n,Ri)},Zc=function(e){Ai(e),ki(e,rr.fromHtml('<br data-mce-bogus="1">'))},el=function(n){qr(n).each(function(t){Mr(t).each(function(e){co(n)&&fo(t)&&co(e)&&Ri(t)})})},tl=Yt.makeMap;function nl(e){var u,s,c,l,f,d=[];return u=(e=e||{}).indent,s=tl(e.indent_before||""),c=tl(e.indent_after||""),l=qo.getEncodeFunc(e.entity_encoding||"raw",e.entities),f="html"===e.element_format,{start:function(e,t,n){var r,o,i,a;if(u&&s[e]&&0<d.length&&0<(a=d[d.length-1]).length&&"\n"!==a&&d.pus
 h("\n"),d.push("<",e),t)for(r=0,o=t.length;r<o;r++)i=t[r],d.push(" ",i.name,'="',l(i.value,!0),'"');d[d.length]=!n||f?">":" />",n&&u&&c[e]&&0<d.length&&0<(a=d[d.length-1]).length&&"\n"!==a&&d.push("\n")},end:function(e){var t;d.push("</",e,">"),u&&c[e]&&0<d.length&&0<(t=d[d.length-1]).length&&"\n"!==t&&d.push("\n")},text:function(e,t){0<e.length&&(d[d.length]=t?e:l(e))},cdata:function(e){d.push("<![CDATA[",e,"]]>")},comment:function(e){d.push("\x3c!--",e,"--\x3e")},pi:function(e,t){t?d.push("<?",e," ",l(t),"?>"):d.push("<?",e,"?>"),u&&d.push("\n")},doctype:function(e){d.push("<!DOCTYPE",e,">&qu
 ot;,u?"\n":"")},reset:function(){d.length=0},getContent:function(){return d.join("").replace(/\n$/,"")}}}function rl(t,g){void 0===g&&(g=ti());var p=nl(t);return(t=t||{}).validate=!("validate"in t)||t.validate,{serialize:function(e){var f,d;d=t.validate,f={3:function(e){p.text(e.value,e.raw)},8:function(e){p.comment(e.value)},7:function(e){p.pi(e.name,e.value)},10:function(e){p.doctype(e.value)},4:function(e){p.cdata(e.value)},11:function(e){if(e=e.firstChild)for(;m(e),e=e.next;);}},p.reset();var m=function(e){var t,n,r,o,i,a,u,s,c,l=f[e.type];if(l)l(e);else{if(t=e.name,n=e.shortEnded,r=e.attributes,d&&r&&1<r.length&&((a=[]).map={},c=g.getElementRule(e.name))){for(u=0,s=c.attributesOrder.length;u<s;u++)(o=c.attributesOrder[u])in r.map&&(i=r.map[o],a.map[o]=i,a.push({name:o,value:i}));for(u=0,s=r.length;u<s;u++)(o=r[u].name)in a.map||(i=r.map[o],a.map[o]=i,a.push({name:o,value:i}));r=a}
 if(p.start(e.name,r,n),!n){if(e=e.firstChild)for(;m(e),e=e.next;);p.end(t)}}};return 1!==e.type||t.inner?f[11](e):m(e),p.getContent()}}}var ol=function(a){var u=hu.fromRangeStart(a),s=hu.fromRangeEnd(a),c=a.commonAncestorContainer;return ic.fromPosition(!1,c,s).map(function(e){return!hs(u,s,c)&&hs(u,e,c)?(t=u.container(),n=u.offset(),r=e.container(),o=e.offset(),(i=document.createRange()).setStart(t,n),i.setEnd(r,o),i):a;var t,n,r,o,i}).getOr(a)},il=function(e){return e.collapsed?e:ol(e)},al=_o.matchNodeNames("td th"),ul=function(e,t){var n,r,o=e.selection.getRng(),i=o.startContainer,a=o.startOffset;o.collapsed&&(n=i,r=a,_o.isText(n)&&"\xa0"===n.nodeValue[r-1])&&_o.isText(i)&&(i.insertData(a-1," "),i.deleteData(a,1),o.setStart(i,a),o.setEnd(i,a),e.selection.setRng(o)),e.selection.setContent(t)},sl=function(e,t,n){var r,o,i,a,u,s,c,l,f,d,m,g=e.selection,p=e.dom;if(/^ | $/.test(t)&&(t=function(e,t){var n,r;n
 =e.startContainer,r=e.startOffset;var o=function(e){return n[e]&&3===n[e].nodeType};return 3===n.nodeType&&(0<r?t=t.replace(/^&nbsp;/," "):o("previousSibling")||(t=t.replace(/^ /,"&nbsp;")),r<n.length?t=t.replace(/&nbsp;(<br>|)$/," "):o("nextSibling")||(t=t.replace(/(&nbsp;| )(<br>|)$/,"&nbsp;"))),t}(g.getRng(),t)),r=e.parser,m=n.merge,o=rl({validate:e.settings.validate},e.schema),d='<span id="mce_marker" data-mce-type="bookmark">&#xFEFF;&#x200B;</span>',s={content:t,format:"html",selection:!0,paste:n.paste},(s=e.fire("BeforeSetContent",s)).isDefaultPrevented())e.fire("SetContent",{content:s.content,format:"html",selection:!0,paste:n.paste});else{-1===(t=s.content).indexOf("{$caret}")&&(t+="{$caret}"),t=t.replace(/\{\$caret\}/,d);var h,v,b,y,C,x,w=(l=g.getRng()).st
 artContainer||(l.parentElement?l.parentElement():null),N=e.getBody();w===N&&g.isCollapsed()&&p.isBlock(N.firstChild)&&(h=e,(v=N.firstChild)&&!h.schema.getShortEndedElements()[v.nodeName])&&p.isEmpty(N.firstChild)&&((l=p.createRng()).setStart(N.firstChild,0),l.setEnd(N.firstChild,0),g.setRng(l)),g.isCollapsed()||(e.selection.setRng(il(e.selection.getRng())),e.getDoc().execCommand("Delete",!1,null),b=e.selection.getRng(),y=t,C=b.startContainer,x=b.startOffset,3===C.nodeType&&b.collapsed&&("\xa0"===C.data[x]?(C.deleteData(x,1),/[\u00a0| ]$/.test(y)||(y+=" ")):"\xa0"===C.data[x-1]&&(C.deleteData(x-1,1),/[\u00a0| ]$/.test(y)||(y=" "+y))),t=y);var E,S,k,T={context:(i=g.getNode()).nodeName.toLowerCase(),data:n.data,insert:!0};if(u=r.parse(t,T),!0===n.paste&&Kc(e.schema,u)&&Yc(p,i))return l=Xc(o,p,e.selection.getRng(),u),e.selection.setRng(l),void e.fire(
 "SetContent",s);if(function(e){for(var t=e;t=t.walk();)1===t.type&&t.attr("data-mce-fragment","1")}(u),"mce_marker"===(f=u.lastChild).attr("id"))for(f=(c=f).prev;f;f=f.walk(!0))if(3===f.type||!p.isBlock(f.name)){e.schema.isValidChild(f.parent.name,"span")&&f.parent.insert(c,f,"br"===f.name);break}if(e._selectionOverrides.showBlockCaretContainer(i),T.invalid){for(ul(e,d),i=g.getNode(),a=e.getBody(),9===i.nodeType?i=f=a:f=i;f!==a;)f=(i=f).parentNode;t=i===a?a.innerHTML:p.getOuterHTML(i),t=o.serialize(r.parse(t.replace(/<span (id="mce_marker"|id=mce_marker).+?<\/span>/i,function(){return o.serialize(u)}))),i===a?p.setHTML(a,t):p.setOuterHTML(i,t)}else!function(e,t,n){if("all"===n.getAttribute("data-mce-bogus"))n.parentNode.insertBefore(e.dom.createFragment(t),n);else{var r=n.firstChild,o=n.lastChild;!r||r===o&&"BR"===r.nodeName?e.dom.setHTML(n,t
 ):ul(e,t)}}(e,t=o.serialize(u),i);!function(e,t){var n=e.schema.getTextInlineElements(),r=e.dom;if(t){var o=e.getBody(),i=new Jc(r);Yt.each(r.select("*[data-mce-fragment]"),function(e){for(var t=e.parentNode;t&&t!==o;t=t.parentNode)n[e.nodeName.toLowerCase()]&&i.compare(t,e)&&r.remove(e,!0)})}}(e,m),function(n,e){var t,r,o,i,a,u=n.dom,s=n.selection;if(e){if(n.selection.scrollIntoView(e),t=function(e){for(var t=n.getBody();e&&e!==t;e=e.parentNode)if("false"===n.dom.getContentEditable(e))return e;return null}(e))return u.remove(e),s.select(t);var c=u.createRng();(i=e.previousSibling)&&3===i.nodeType?(c.setStart(i,i.nodeValue.length),de.ie||(a=e.nextSibling)&&3===a.nodeType&&(i.appendData(a.data),a.parentNode.removeChild(a))):(c.setStartBefore(e),c.setEndBefore(e)),r=u.getParent(e,u.isBlock),u.remove(e),r&&u.isEmpty(r)&&(n.$(r).empty(),c.setStart(r,0),c.setEnd(r,0),al(r)||r.getAttribute("da
 ta-mce-fragment")||!(o=function(e){var t=hu.fromRangeStart(e);if(t=Gs(n.getBody()).next(t))return t.toRange()}(c))?u.add(r,u.create("br",{"data-mce-bogus":"1"})):(c=o,u.remove(r))),s.setRng(c)}}(e,p.get("mce_marker")),E=e.getBody(),Yt.each(E.getElementsByTagName("*"),function(e){e.removeAttribute("data-mce-fragment")}),S=e.dom,k=e.selection.getStart(),A.from(S.getParent(k,"td,th")).map(rr.fromDom).each(el),e.fire("SetContent",s),e.addVisual()}},cl=function(e,t){var n,r,o="string"!=typeof(n=t)?(r=Yt.extend({paste:n.paste,data:{paste:n.paste}},n),{content:n.content,details:r}):{content:n,details:{}};sl(e,o.content,o.details)},ll=Er("sections","settings"),fl=tr.detect().deviceType.isTouch(),dl=["lists","autolink","autosave"],ml={theme:"mobile"},gl=function(e){var t=D(e)?e.join(" "):e,n=$(R(t)?t.split(" "):[],Kn);r
 eturn z(n,function(e){return 0<e.length})},pl=function(n,e){var r,o,i,t=(r=function(e,t){return M(n,t)},o={},i={},mr(e,function(e,t){(r(e,t)?o:i)[t]=e}),{t:o,f:i});return ll(t.t,t.f)},hl=function(e,t){return e.sections().hasOwnProperty(t)},vl=function(e,t,n,r){var o,i=gl(n.forced_plugins),a=gl(r.plugins),u=e&&hl(t,"mobile")?z(a,d(M,dl)):a,s=(o=u,[].concat(gl(i)).concat(gl(o)));return Yt.extend(r,{plugins:s.join(" ")})},bl=function(e,t,n,r){var o,i,a,u,s,c,l,f,d,m,g=pl(["mobile"],r),p=Yt.extend(t,n,g.settings(),(f=e,m=(d=g).settings().inline,f&&hl(d,"mobile")&&!m?(u="mobile",s=ml,c=g.sections(),l=c.hasOwnProperty(u)?c[u]:{},Yt.extend({},s,l)):{}),{validate:!0,content_editable:g.settings().inline,external_plugins:(o=n,i=g.settings(),a=i.external_plugins?i.external_plugins:{},o&&o.external_plugins?Yt.extend({},o.external_plugins,a):a)});return vl(e,g,n,p)},yl=function(e,t,n){return A.from(t.settings[n]
 ).filter(e)},Cl=d(yl,R),xl=function(e,t,n,r){var o,i,a,u=t in e.settings?e.settings[t]:n;return"hash"===r?(a={},"string"==typeof(i=u)?F(0<i.indexOf("=")?i.split(/[;,](?![^=;,]*(?:[;,]|$))/):i.split(","),function(e){var t=e.split("=");1<t.length?a[Yt.trim(t[0])]=Yt.trim(t[1]):a[Yt.trim(t[0])]=Yt.trim(t)}):a=i,a):"string"===r?yl(R,e,t).getOr(n):"number"===r?yl(L,e,t).getOr(n):"boolean"===r?yl(O,e,t).getOr(n):"object"===r?yl(_,e,t).getOr(n):"array"===r?yl(D,e,t).getOr(n):"string[]"===r?yl((o=R,function(e){return D(e)&&J(e,o)}),e,t).getOr(n):"function"===r?yl(P,e,t).getOr(n):u},wl=/[\u0591-\u07FF\uFB1D-\uFDFF\uFE70-\uFEFC]/,Nl=function(e,t){var n=t.container(),r=t.offset();return e?ga(n)?_o.isText(n.nextSibling)?hu(n.nextSibling,0):hu.after(n):va(t)?hu(n,r+1):t:ga(n)?_o.isText(n.previousSibling)?hu(n.previousSibling,n.previousSibling.data.length):hu.befor
 e(n):ba(t)?hu(n,r-1):t},El={isInlineTarget:function(e,t){var n=Cl(e,"inline_boundaries_selector").getOr("a[href],code");return Dr(rr.fromDom(t),n)},findRootInline:function(e,t,n){var r,o,i,a=(r=e,o=t,i=n,z(gi.DOM.getParents(i.container(),"*",o),r));return A.from(a[a.length-1])},isRtl:function(e){return"rtl"===gi.DOM.getStyle(e,"direction",!0)||(t=e.textContent,wl.test(t));var t},isAtZwsp:function(e){return va(e)||ba(e)},normalizePosition:Nl,normalizeForwards:d(Nl,!0),normalizeBackwards:d(Nl,!1),hasSameParentBlock:function(e,t,n){var r=ps(t,e),o=ps(n,e);return r&&r===o}},Sl=function(e,t){return Pr(e,t)?$i(t,function(e){return mo(e)||po(e)},(n=e,function(e){return Or(n,rr.fromDom(e.dom().parentNode))})):A.none();var n},kl=function(e){var t,n,r;e.dom.isEmpty(e.getBody())&&(e.setContent(""),n=(t=e).getBody(),r=n.firstChild&&t.dom.isBlock(n.firstChild)?n.firstChild:n,t.selection.setCursorLocation(r,0))},T
 l=function(i,a,u){return qa([ic.firstPositionIn(u),ic.lastPositionIn(u)],function(e,t){var n=El.normalizePosition(!0,e),r=El.normalizePosition(!1,t),o=El.normalizePosition(!1,a);return i?ic.nextPosition(u,o).map(function(e){return e.isEqual(r)&&a.isEqual(n)}).getOr(!1):ic.prevPosition(u,o).map(function(e){return e.isEqual(n)&&a.isEqual(r)}).getOr(!1)}).getOr(!0)},Al=function(e,t){var n,r,o,i=rr.fromDom(e),a=rr.fromDom(t);return n=a,r="pre,code",o=d(Or,i),Wi(n,r,o).isSome()},Rl=function(e,t){return Da(t)&&!1===(r=e,o=t,_o.isText(o)&&/^[ \t\r\n]*$/.test(o.data)&&!1===Al(r,o))||(n=t,_o.isElement(n)&&"A"===n.nodeName&&n.hasAttribute("name"))||_l(t);var n,r,o},_l=_o.hasAttribute("data-mce-bookmark"),Dl=_o.hasAttribute("data-mce-bogus"),Bl=_o.hasAttributeValue("data-mce-bogus","all"),Ol=function(e){return function(e){var t,n,r=0;if(Rl(e,e))return!1;if(!(n=e.firstCh
 ild))return!0;t=new ro(n,e);do{if(Bl(n))n=t.next(!0);else if(Dl(n))n=t.next();else if(_o.isBr(n))r++,n=t.next();else{if(Rl(e,n))return!1;n=t.next()}}while(n);return r<=1}(e.dom())},Pl=Er("block","position"),Ll=Er("from","to"),Il=function(e,t){var n=rr.fromDom(e),r=rr.fromDom(t.container());return Sl(n,r).map(function(e){return Pl(e,t)})},Ml=function(o,i,e){var t=Il(o,hu.fromRangeStart(e)),n=t.bind(function(e){return ic.fromPosition(i,o,e.position()).bind(function(e){return Il(o,e).map(function(e){return t=o,n=i,r=e,_o.isBr(r.position().getNode())&&!1===Ol(r.block())?ic.positionIn(!1,r.block().dom()).bind(function(e){return e.isEqual(r.position())?ic.fromPosition(n,t,e).bind(function(e){return Il(t,e)}):A.some(r)}).getOr(r):r;var t,n,r})})});return qa([t,n],Ll).filter(function(e){return!1===Or((r=e).from().block(),r.to().block())&&Ir((n=e).from().block()).bind(function(t){return Ir(n.to().block()).filter(function(e){return Or
 (t,e)})}).isSome()&&(t=e,!1===_o.isContentEditableFalse(t.from().block())&&!1===_o.isContentEditableFalse(t.to().block()));var t,n,r})},Fl=function(e,t,n){return n.collapsed?Ml(e,t,n):A.none()},zl=function(e,t,n){return Pr(t,e)?function(e,t){for(var n=P(t)?t:j(!1),r=e.dom(),o=[];null!==r.parentNode&&r.parentNode!==undefined;){var i=r.parentNode,a=rr.fromDom(i);if(o.push(a),!0===n(a))break;r=i}return o}(e,function(e){return n(e)||Or(e,t)}).slice(0,-1):[]},Ul=function(e,t){return zl(e,t,j(!1))},Vl=Ul,Hl=function(e,t){return[e].concat(Ul(e,t))},jl=function(e){var t,n=(t=Vr(e),K(t,co).fold(function(){return t},function(e){return t.slice(0,e)}));return F(n,Ri),n},ql=function(e,t){var n=Hl(t,e);return V(n.reverse(),Ol).each(Ri)},$l=function(e,t,n,r){if(Ol(n))return Zc(n),ic.firstPositionIn(n.dom());0===z(zr(r),function(e){return!Ol(e)}).length&&Ol(t)&&Ni(r,rr.fromTag("br"));var o=ic.prevPosition(n.dom(),hu.before(r.dom()));return F(jl(t),f
 unction(e){Ni(r,e)}),ql(e,t),o},Wl=function(e,t,n){if(Ol(n))return Ri(n),Ol(t)&&Zc(t),ic.firstPositionIn(t.dom());var r=ic.lastPositionIn(n.dom());return F(jl(t),function(e){ki(n,e)}),ql(e,t),r},Kl=function(e,t){return Pr(t,e)?(n=Hl(e,t),A.from(n[n.length-1])):A.none();var n},Xl=function(e,t){ic.positionIn(e,t.dom()).map(function(e){return e.getNode()}).map(rr.fromDom).filter(fo).each(Ri)},Yl=function(e,t,n){return Xl(!0,t),Xl(!1,n),Kl(t,n).fold(d(Wl,e,t,n),d($l,e,t,n))},Gl=function(e,t,n,r){return t?Yl(e,r,n):Yl(e,n,r)},Jl=function(t,n){var e,r=rr.fromDom(t.getBody());return(e=Fl(r.dom(),n,t.selection.getRng()).bind(function(e){return Gl(r,n,e.from().block(),e.to().block())})).each(function(e){t.selection.setRng(e.toRange())}),e.isSome()},Ql=function(e,t){var n=rr.fromDom(t),r=d(Or,e);return qi(n,bo,r).isSome()},Zl=function(e,t){var n,r,o=ic.prevPosition(e.dom(),hu.fromRangeStart(t)).isNone(),i=ic.nextPosition(e.dom(),hu.fromRangeEnd(t)).isNone();return!(Ql(n=e,(r=t).startC
 ontainer)||Ql(n,r.endContainer))&&o&&i},ef=function(e){var n,r,o,t,i=rr.fromDom(e.getBody()),a=e.selection.getRng();return Zl(i,a)?((t=e).setContent(""),t.selection.setCursorLocation(),!0):(n=i,r=e.selection,o=r.getRng(),qa([Sl(n,rr.fromDom(o.startContainer)),Sl(n,rr.fromDom(o.endContainer))],function(e,t){return!1===Or(e,t)&&(o.deleteContents(),Gl(n,!0,e,t).each(function(e){r.setRng(e.toRange())}),!0)}).getOr(!1))},tf=function(e,t){return!e.selection.isCollapsed()&&ef(e)},nf=function(a){if(!D(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 F(a,function(e,r){var t=fr(e);if(1!==t.length)throw new Error("one and only one name per case");var o=t[0],i=e[o];if(n[o]!==undefined)throw new Error("duplicate key detected:"+o);if("cata"===o)throw new Error("cannot have a case named cata (sorry)");if(!D(i))thro
 w 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=fr(e);if(u.length!==t.length)throw new Error("Wrong number of arguments to match. Expected: "+u.join(",")+"\nActual: "+t.join(","));if(!J(u,function(e){return M(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},rf=function(e){return Ps(e).exists(fo)},of=function(e,t,n){var r=z(Hl(rr.fromDom(n.container()),t),co),o=ee(r).getOr(t);return ic.fromPosition(e,o.dom(),n).filter(rf)},af=function(e,t){return Ps(t).exists(fo)||of(!0,e,t).isSome()},uf=function(e,t){return(n=t,A.from(n.getNode(!0)).map(rr.fromDom)).exists(fo)||of(!1,e,t).isSome();var n},sf=d(of,!1),cf=d(of,!0),lf=nf([{remove:["element"]},{moveToElement:["element"]},{moveToPosition:["position"]}]),ff=function(e,t,n,r){var o=r.getNode(!1===t);return Sl(rr.fromDom(e),rr.fromDom(n.getNode())).map(function(e){return Ol(e)?lf.remove(e.dom()):lf.moveToElement(o)}).orThunk(function(){return A.some(lf.moveToElement(o))})},df=function(u,s,c){return ic.fromPosition(s,u,c).bind(function(e){return a=e.getNode(),bo(rr.fromDom(a))||po(rr.fromDom(a))?A.none():(t=u,o=e,i=function(e){return lo(rr.fromDom(e))&&!hs(r,o,t)},Ss(!(n=s),r=c).fold(function(){return Ss(n,o).fold(j(!1),i)},
 i)?A.none():s&&_o.isContentEditableFalse(e.getNode())?ff(u,s,c,e):!1===s&&_o.isContentEditableFalse(e.getNode(!0))?ff(u,s,c,e):s&&As(c)?A.some(lf.moveToPosition(e)):!1===s&&Ts(c)?A.some(lf.moveToPosition(e)):A.none());var t,n,r,o,i,a})},mf=function(r,e,o){return i=e,a=o.getNode(!1===i),u=i?"after":"before",_o.isElement(a)&&a.getAttribute("data-mce-caret")===u?(t=e,n=o.getNode(!1===e),t&&_o.isContentEditableFalse(n.nextSibling)?A.some(lf.moveToElement(n.nextSibling)):!1===t&&_o.isContentEditableFalse(n.previousSibling)?A.some(lf.moveToElement(n.previousSibling)):A.none()).fold(function(){return df(r,e,o)},A.some):df(r,e,o).bind(function(e){return t=r,n=o,e.fold(function(e){return A.some(lf.remove(e))},function(e){return A.some(lf.moveToElement(e))},function(e){return hs(n,e,t)?A.none():A.some(lf.moveToPosition(e))});var t,n});var t,n,i,a,u},gf=function(e,t,n){if(0!==n){var r,o,i,a=e.data.slice(t,t+n
 ),u=t+n>=e.data.length,s=0===t;e.replaceData(t,n,(o=s,i=u,U((r=a).split(""),function(e,t){return-1!==" \f\n\r\t\x0B".indexOf(t)||"\xa0"===t?e.previousCharIsSpace||""===e.str&&o||e.str.length===r.length-1&&i?{previousCharIsSpace:!1,str:e.str+"\xa0"}:{previousCharIsSpace:!0,str:e.str+" "}:{previousCharIsSpace:!1,str:e.str+t}},{previousCharIsSpace:!1,str:""}).str))}},pf=function(e,t){var n,r=e.data.slice(t),o=r.length-(n=r,n.replace(/^\s+/g,"")).length;return gf(e,t,o)},hf=function(e,t){return r=e,o=(n=t).container(),i=n.offset(),!1===hu.isTextPosition(n)&&o===r.parentNode&&i>hu.before(r).offset()?hu(t.container(),t.offset()-1):t;var n,r,o,i},vf=function(e){return Da(e.previousSibling)?A.some((t=e.previousSibling,_o.isText(t)?hu(t,t.data.length):hu.after(t))):e.previousSibling?ic.lastPositionIn(e.previousSibling):A.none();var t},bf=function(e){return Da(e.nextSibling)?A
 .some((t=e.nextSibling,_o.isText(t)?hu(t,0):hu.before(t))):e.nextSibling?ic.firstPositionIn(e.nextSibling):A.none();var t},yf=function(r,o){return vf(o).orThunk(function(){return bf(o)}).orThunk(function(){return e=r,t=o,n=hu.before(t.previousSibling?t.previousSibling:t.parentNode),ic.prevPosition(e,n).fold(function(){return ic.nextPosition(e,hu.after(t))},A.some);var e,t,n})},Cf=function(n,r){return bf(r).orThunk(function(){return vf(r)}).orThunk(function(){return e=n,t=r,ic.nextPosition(e,hu.after(t)).fold(function(){return ic.prevPosition(e,hu.before(t))},A.some);var e,t})},xf=function(e,t,n){return(r=e,o=t,i=n,r?Cf(o,i):yf(o,i)).map(d(hf,n));var r,o,i},wf=function(t,n,e){e.fold(function(){t.focus()},function(e){t.selection.setRng(e.toRange(),n)})},Nf=function(e,t){return t&&e.schema.getBlockElements().hasOwnProperty(ur(t))},Ef=function(e){if(Ol(e)){var t=rr.fromHtml('<br data-mce-bogus="1">');return Ai(e),ki(e,t),A.some(hu.before(t.dom()))}return A.none()
 },Sf=function(e,t,l){var n=Mr(e).filter(function(e){return _o.isText(e.dom())}),r=Fr(e).filter(function(e){return _o.isText(e.dom())});return Ri(e),qa([n,r,t],function(e,t,n){var r,o,i,a,u=e.dom(),s=t.dom(),c=u.data.length;return o=s,i=l,a=Xn((r=u).data).length,r.appendData(o.data),Ri(rr.fromDom(o)),i&&pf(r,a),n.container()===s?hu(u,c):n}).orThunk(function(){return l&&(n.each(function(e){return t=e.dom(),n=e.dom().length,r=t.data.slice(0,n),o=r.length-Xn(r).length,gf(t,n-o,o);var t,n,r,o}),r.each(function(e){return pf(e.dom(),0)})),t})},kf=function(e,t){return n=e.schema.getTextInlineElements(),r=ur(t),dr.call(n,r);var n,r},Tf=function(t,n,e,r){void 0===r&&(r=!0);var o,i=xf(n,t.getBody(),e.dom()),a=qi(e,d(Nf,t),(o=t.getBody(),function(e){return e.dom()===o})),u=Sf(e,i,kf(t,e));t.dom.isEmpty(t.getBody())?(t.setContent(""),t.selection.setCursorLocation()):a.bind(Ef).fold(function(){r&&wf(t,n,u)},function(e){r&&wf(t,n,A.some(e))})},Af=f
 unction(a,u){var e,t,n,r,o,i;return(e=a.getBody(),t=u,n=a.selection.getRng(),r=ws(t?1:-1,e,n),o=hu.fromRangeStart(r),i=rr.fromDom(e),!1===t&&As(o)?A.some(lf.remove(o.getNode(!0))):t&&Ts(o)?A.some(lf.remove(o.getNode())):!1===t&&Ts(o)&&uf(i,o)?sf(i,o).map(function(e){return lf.remove(e.getNode())}):t&&As(o)&&af(i,o)?cf(i,o).map(function(e){return lf.remove(e.getNode())}):mf(e,t,o)).map(function(e){return e.fold((o=a,i=u,function(e){return o._selectionOverrides.hideFakeCaret(),Tf(o,i,rr.fromDom(e)),!0}),(n=a,r=u,function(e){var t=r?hu.before(e):hu.after(e);return n.selection.setRng(t.toRange()),!0}),(t=a,function(e){return t.selection.setRng(e.toRange()),!0}));var t,n,r,o,i}).getOr(!1)},Rf=function(e,t){var n,r=e.selection.getNode();return!!_o.isContentEditableFalse(r)&&(n=rr.fromDom(e.getBody()),F(Vi(n,".mce-offscreen-selection"),Ri),Tf(e,t,rr.fromDom(e.selection.getNode())),kl(e),!0)},_f=function(e,t){return e.selecti
 on.isCollapsed()?Af(e,t):Rf(e,t)},Df=function(e){var t,n=function(e,t){for(;t&&t!==e;){if(_o.isContentEditableTrue(t)||_o.isContentEditableFalse(t))return t;t=t.parentNode}return null}(e.getBody(),e.selection.getNode());return _o.isContentEditableTrue(n)&&e.dom.isBlock(n)&&e.dom.isEmpty(n)&&(t=e.dom.create("br",{"data-mce-bogus":"1"}),e.dom.setHTML(n,""),n.appendChild(t),e.selection.setRng(hu.before(t).toRange())),!0},Bf=_o.isText,Of=function(e){return Bf(e)&&e.data[0]===ca},Pf=function(e){return Bf(e)&&e.data[e.data.length-1]===ca},Lf=function(e){return e.ownerDocument.createTextNode(ca)},If=function(e,t){return e?function(e){if(Bf(e.previousSibling))return Pf(e.previousSibling)||e.previousSibling.appendData(ca),e.previousSibling;if(Bf(e))return Of(e)||e.insertData(0,ca),e;var t=Lf(e);return e.parentNode.insertBefore(t,e),t}(t):function(e){if(Bf(e.nextSibling))return Of(e.nextSibling)||e.nextSib
 ling.insertData(0,ca),e.nextSibling;if(Bf(e))return Pf(e)||e.appendData(ca),e;var t=Lf(e);return e.nextSibling?e.parentNode.insertBefore(t,e.nextSibling):e.parentNode.appendChild(t),t}(t)},Mf=d(If,!0),Ff=d(If,!1),zf=function(e,t){return _o.isText(e.container())?If(t,e.container()):If(t,e.getNode())},Uf=function(e,t){var n=t.get();return n&&e.container()===n&&ga(n)},Vf=function(n,e){return e.fold(function(e){Yu.remove(n.get());var t=Mf(e);return n.set(t),A.some(hu(t,t.length-1))},function(e){return ic.firstPositionIn(e).map(function(e){if(Uf(e,n))return hu(n.get(),1);Yu.remove(n.get());var t=zf(e,!0);return n.set(t),hu(t,1)})},function(e){return ic.lastPositionIn(e).map(function(e){if(Uf(e,n))return hu(n.get(),n.get().length-1);Yu.remove(n.get());var t=zf(e,!1);return n.set(t),hu(t,t.length-1)})},function(e){Yu.remove(n.get());var t=Ff(e);return n.set(t),A.some(hu(t,1))})},Hf=function(e,t){for(var n=0;n<e.length;n++){var r=e[n].apply(null,t);if(r.isSome())return r}
 return A.none()},jf=nf([{before:["element"]},{start:["element"]},{end:["element"]},{after:["element"]}]),qf=function(e,t){var n=ps(t,e);return n||e},$f=function(e,t,n){var r=El.normalizeForwards(n),o=qf(t,r.container());return El.findRootInline(e,o,r).fold(function(){return ic.nextPosition(o,r).bind(d(El.findRootInline,e,o)).map(function(e){return jf.before(e)})},A.none)},Wf=function(e,t){return null===zu(e,t)},Kf=function(e,t,n){return El.findRootInline(e,t,n).filter(d(Wf,t))},Xf=function(e,t,n){var r=El.normalizeBackwards(n);return Kf(e,t,r).bind(function(e){return ic.prevPosition(e,r).isNone()?A.some(jf.start(e)):A.none()})},Yf=function(e,t,n){var r=El.normalizeForwards(n);return Kf(e,t,r).bind(function(e){return ic.nextPosition(e,r).isNone()?A.some(jf.end(e)):A.none()})},Gf=function(e,t,n){var r=El.normalizeBackwards(n),o=qf(t,r.container());return El.findRootInline(e,o,r).fold(function(){return ic.prevPosition(o,r).bind(d(El.findRootInlin
 e,e,o)).map(function(e){return jf.after(e)})},A.none)},Jf=function(e){return!1===El.isRtl(Zf(e))},Qf=function(e,t,n){return Hf([$f,Xf,Yf,Gf],[e,t,n]).filter(Jf)},Zf=function(e){return e.fold(q,q,q,q)},ed=function(e){return e.fold(j("before"),j("start"),j("end"),j("after"))},td=function(e){return e.fold(jf.before,jf.before,jf.after,jf.after)},nd=function(n,e,r,t,o,i){return qa([El.findRootInline(e,r,t),El.findRootInline(e,r,o)],function(e,t){return e!==t&&El.hasSameParentBlock(r,e,t)?jf.after(n?e:t):i}).getOr(i)},rd=function(e,r){return e.fold(j(!0),function(e){return n=r,!(ed(t=e)===ed(n)&&Zf(t)===Zf(n));var t,n})},od=function(e,t){return e?t.fold(H(A.some,jf.start),A.none,H(A.some,jf.after),A.none):t.fold(A.none,H(A.some,jf.before),A.none,H(A.some,jf.end))},id=function(a,u,s,c){var e=El.normalizePosition(a,c),l=Qf(u,s,e);return Qf(u,s,e).bind(d(od,a)).orThunk(function(){return t=a,n=u,r=s,o=l,e=c,i=El.normalizePosition(t,e),ic
 .fromPosition(t,r,i).map(d(El.normalizePosition,t)).fold(function(){return o.map(td)},function(e){return Qf(n,r,e).map(d(nd,t,n,r,i,e)).filter(d(rd,o))}).filter(Jf);var t,n,r,o,e,i})},ad=Qf,ud=id,sd=(d(id,!1),d(id,!0),td),cd=function(e){return e.fold(jf.start,jf.start,jf.end,jf.end)},ld=function(e){return P(e.selection.getSel().modify)},fd=function(e,t,n){var r=e?1:-1;return t.setRng(hu(n.container(),n.offset()+r).toRange()),t.getSel().modify("move",e?"forward":"backward","word"),!0},dd=function(e,t){var n=t.selection.getRng(),r=e?hu.fromRangeEnd(n):hu.fromRangeStart(n);return!!ld(t)&&(e&&va(r)?fd(!0,t.selection,r):!(e||!ba(r))&&fd(!1,t.selection,r))},md=function(e,t){var n=e.dom.createRng();n.setStart(t.container(),t.offset()),n.setEnd(t.container(),t.offset()),e.selection.setRng(n)},gd=function(e){return!1!==e.settings.inline_boundaries},pd=function(e,t){e?t.setAttribute("data-mce-selected","inline-boun
 dary"):t.removeAttribute("data-mce-selected")},hd=function(t,e,n){return Vf(e,n).map(function(e){return md(t,e),n})},vd=function(e,t,n){return function(){return!!gd(t)&&dd(e,t)}},bd={move:function(a,u,s){return function(){return!!gd(a)&&(t=a,n=u,e=s,r=t.getBody(),o=hu.fromRangeStart(t.selection.getRng()),i=d(El.isInlineTarget,t),ud(e,i,r,o).bind(function(e){return hd(t,n,e)})).isSome();var t,n,e,r,o,i}},moveNextWord:d(vd,!0),movePrevWord:d(vd,!1),setupSelectedState:function(a){var u=Bi(null),s=d(El.isInlineTarget,a);return a.on("NodeChange",function(e){var t,n,r,o,i;gd(a)&&(t=s,n=a.dom,r=e.parents,o=z(n.select('*[data-mce-selected="inline-boundary"]'),t),i=z(r,t),F(Z(o,i),d(pd,!1)),F(Z(i,o),d(pd,!0)),function(e,t){if(e.selection.isCollapsed()&&!0!==e.composing&&t.get()){var n=hu.fromRangeStart(e.selection.getRng());hu.isTextPosition(n)&&!1===El.isAtZwsp(n)&&(md(e,Yu.removeAndReposition(t.get()
 ,n)),t.set(null))}}(a,u),function(n,r,o,e){if(r.selection.isCollapsed()){var t=z(e,n);F(t,function(e){var t=hu.fromRangeStart(r.selection.getRng());ad(n,r.getBody(),t).bind(function(e){return hd(r,o,e)})})}}(s,a,u,e.parents))}),u},setCaretPosition:md},yd=function(t,n){return function(e){return Vf(n,e).map(function(e){return bd.setCaretPosition(t,e),!0}).getOr(!1)}},Cd=function(r,o,i,a){var u=r.getBody(),s=d(El.isInlineTarget,r);r.undoManager.ignore(function(){var e,t,n;r.selection.setRng((e=i,t=a,(n=document.createRange()).setStart(e.container(),e.offset()),n.setEnd(t.container(),t.offset()),n)),r.execCommand("Delete"),ad(s,u,hu.fromRangeStart(r.selection.getRng())).map(cd).map(yd(r,o))}),r.nodeChanged()},xd=function(n,r,i,o){var e,t,a=(e=n.getBody(),t=o.container(),ps(t,e)||e),u=d(El.isInlineTarget,n),s=ad(u,a,o);return s.bind(function(e){return i?e.fold(j(A.some(cd(e))),A.none,j(A.some(sd(e))),A.none):e.fold(A.none,j(A.some(sd(e))),A.none,j(A.some(cd(e))))}).map(yd(n,r))
 .getOrThunk(function(){var t=ic.navigate(i,a,o),e=t.bind(function(e){return ad(u,a,e)});return s.isSome()&&e.isSome()?El.findRootInline(u,a,o).map(function(e){return o=e,!!qa([ic.firstPositionIn(o),ic.lastPositionIn(o)],function(e,t){var n=El.normalizePosition(!0,e),r=El.normalizePosition(!1,t);return ic.nextPosition(o,n).map(function(e){return e.isEqual(r)}).getOr(!0)}).getOr(!0)&&(Tf(n,i,rr.fromDom(e)),!0);var o}).getOr(!1):e.bind(function(e){return t.map(function(e){return i?Cd(n,r,o,e):Cd(n,r,e,o),!0})}).getOr(!1)})},wd=function(e,t,n){if(e.selection.isCollapsed()&&!1!==e.settings.inline_boundaries){var r=hu.fromRangeStart(e.selection.getRng());return xd(e,t,n,r)}return!1},Nd=Er("start","end"),Ed=Er("rng","table","cells"),Sd=nf([{removeTable:["element"]},{emptyCells:["cells"]}]),kd=function(e,t){return Xi(rr.fromDom(e),"td,th",t)},Td=function(e,t){return Wi(e,"table"
 ,t)},Ad=function(e){return!1===Or(e.start(),e.end())},Rd=function(e,n){return Td(e.start(),n).bind(function(t){return Td(e.end(),n).bind(function(e){return Or(t,e)?A.some(t):A.none()})})},_d=function(e){return Vi(e,"td,th")},Dd=function(r,e){var t=kd(e.startContainer,r),n=kd(e.endContainer,r);return e.collapsed?A.none():qa([t,n],Nd).fold(function(){return t.fold(function(){return n.bind(function(t){return Td(t,r).bind(function(e){return ee(_d(e)).map(function(e){return Nd(e,t)})})})},function(t){return Td(t,r).bind(function(e){return te(_d(e)).map(function(e){return Nd(t,e)})})})},function(e){return Bd(r,e)?A.none():(n=r,Td((t=e).start(),n).bind(function(e){return te(_d(e)).map(function(e){return Nd(t.start(),e)})}));var t,n})},Bd=function(e,t){return Rd(t,e).isSome()},Od=function(e,t){var n,r,o,i,a=d(Or,e);return(n=t,r=a,o=kd(n.startContainer,r),i=kd(n.endContainer,r),qa([o,i],Nd).filter(Ad).filter(function(e){return Bd(r,e)}).orThunk(function(){return Dd(r,n)})).bind(fun
 ction(e){return Rd(t=e,a).map(function(e){return Ed(t,e,_d(e))});var t})},Pd=function(e,t){return K(e,function(e){return Or(e,t)})},Ld=function(n){return(r=n,qa([Pd(r.cells(),r.rng().start()),Pd(r.cells(),r.rng().end())],function(e,t){return r.cells().slice(e,t+1)})).map(function(e){var t=n.cells();return e.length===t.length?Sd.removeTable(n.table()):Sd.emptyCells(e)});var r},Id=function(e,t){return Od(e,t).bind(Ld)},Md=function(e){var t=[];if(e)for(var n=0;n<e.rangeCount;n++)t.push(e.getRangeAt(n));return t},Fd=Md,zd=function(e){return G(e,function(e){var t=Ua(e);return t?[rr.fromDom(t)]:[]})},Ud=function(e){return 1<Md(e).length},Vd=function(e){return z(zd(e),bo)},Hd=function(e){return Vi(e,"td[data-mce-selected],th[data-mce-selected]")},jd=function(e,t){var n=Hd(t),r=Vd(e);return 0<n.length?n:r},qd=jd,$d=function(e){return jd(Fd(e.selection.getSel()),rr.fromDom(e.getBody()))},Wd=function(e,t){return F(t,Zc),e.selection.setCursorLocation(t[0].dom(),0),!0},Kd=fun
 ction(e,t){return Tf(e,!1,t),!0},Xd=function(n,e,r,t){return Gd(e,t).fold(function(){return t=n,Id(e,r).map(function(e){return e.fold(d(Kd,t),d(Wd,t))});var t},function(e){return Jd(n,e)}).getOr(!1)},Yd=function(e,t){return V(Hl(t,e),bo)},Gd=function(e,t){return V(Hl(t,e),function(e){return"caption"===ur(e)})},Jd=function(e,t){return Zc(t),e.selection.setCursorLocation(t.dom(),0),A.some(!0)},Qd=function(u,s,c,l,f){return ic.navigate(c,u.getBody(),f).bind(function(e){return r=l,o=c,i=f,a=e,ic.firstPositionIn(r.dom()).bind(function(t){return ic.lastPositionIn(r.dom()).map(function(e){return o?i.isEqual(t)&&a.isEqual(e):i.isEqual(e)&&a.isEqual(t)})}).getOr(!0)?Jd(u,l):(t=l,n=e,Gd(s,rr.fromDom(n.getNode())).map(function(e){return!1===Or(e,t)}));var t,n,r,o,i,a}).or(A.some(!0))},Zd=function(a,u,s,e){var c=hu.fromRangeStart(a.selection.getRng());return Yd(s,e).bind(function(e){return Ol(e)?Jd(a,e):(t=a,n=s,r=u,o=e,i=c,ic.navigate(r,t.getBody(),i).bind(function(e)
 {return Yd(n,rr.fromDom(e.getNode())).map(function(e){return!1===Or(e,o)})}));var t,n,r,o,i})},em=function(a,u,e){var s=rr.fromDom(a.getBody());return Gd(s,e).fold(function(){return Zd(a,u,s,e)},function(e){return t=a,n=u,r=s,o=e,i=hu.fromRangeStart(t.selection.getRng()),Ol(o)?Jd(t,o):Qd(t,r,n,o,i);var t,n,r,o,i}).getOr(!1)},tm=function(e,t){var n,r,o,i,a,u=rr.fromDom(e.selection.getStart(!0)),s=$d(e);return e.selection.isCollapsed()&&0===s.length?em(e,t,u):(n=e,r=u,o=rr.fromDom(n.getBody()),i=n.selection.getRng(),0!==(a=$d(n)).length?Wd(n,a):Xd(n,o,i,r))},nm=function(e,t){e.getDoc().execCommand(t,!1,null)},rm=function(e){_f(e,!1)||wd(e,!1)||Jl(e,!1)||tm(e)||tf(e,!1)||(nm(e,"Delete"),kl(e))},om=function(e){_f(e,!0)||wd(e,!0)||Jl(e,!0)||tm(e)||tf(e,!0)||nm(e,"ForwardDelete")},im=function(e,t,n){var r=e.getParam(t,n);if(-1!==r.indexOf("=")){var o=e.getParam(t,"","hash");return o.hasOwnProperty(e.id)?o[e.id]:n}return r},am=funct
 ion(e){return e.getParam("iframe_attrs",{})},um=function(e){return e.getParam("doctype","<!DOCTYPE html>")},sm=function(e){return e.getParam("document_base_url","")},cm=function(e){return im(e,"body_id","tinymce")},lm=function(e){return im(e,"body_class","")},fm=function(e){return e.getParam("content_security_policy","")},dm=function(e){return e.getParam("br_in_pre",!0)},mm=function(e){if(e.getParam("force_p_newlines",!1))return"p";var t=e.getParam("forced_root_block","p");return!1===t?"":t},gm=function(e){return e.getParam("forced_root_block_attrs",{})},pm=function(e){return e.getParam("br_newline_selector",".mce-toc h2,figcaption,caption")},hm=function(e){return e.getParam("no_newline_selector","")},vm=function(e){return e.getParam("keep_styles",!0)
 },bm=function(e){return e.getParam("end_container_on_empty_block",!1)},ym=function(e){return Yt.explode(e.getParam("font_size_style_values",""))},Cm=function(e){return Yt.explode(e.getParam("font_size_classes",""))},xm=function(e){return e.getParam("images_dataimg_filter",j(!0),"function")},wm=function(e){return e.getParam("automatic_uploads",!0,"boolean")},Nm=function(e){return e.getParam("images_reuse_filename",!1,"boolean")},Em=function(e){return e.getParam("images_replace_blob_uris",!0,"boolean")},Sm=function(e){return e.getParam("images_upload_url","","string")},km=function(e){return e.getParam("images_upload_base_path","","string")},Tm=function(e){return e.getParam("images_upload_credentials",!1,"boolean")},Am=function(e){return e.getParam("images_upload_handler&quo
 t;,null,"function")},Rm=function(e){return e.getParam("content_css_cors",!1,"boolean")},_m=function(o,t,e){var n=function(e){return t=o,n=e.dom(),r=Nr(n,t),A.from(r).filter(function(e){return 0<e.length});var t,n,r};return $i(rr.fromDom(e),function(e){return n(e).isSome()},function(e){return Or(rr.fromDom(t),e)}).bind(n)},Dm=function(o){return function(r,e){return A.from(e).map(rr.fromDom).filter(cr).bind(function(e){return _m(o,r,e.dom()).or((t=o,n=e.dom(),A.from(gi.DOM.getStyle(n,t,!0))));var t,n}).getOr("")}},Bm={getFontSize:Dm("font-size"),getFontFamily:H(function(e){return e.replace(/[\'\"\\]/g,"").replace(/,\s+/g,",")},Dm("font-family")),toPt:function(e,t){return/[0-9.]+px$/.test(e)?(n=72*parseInt(e,10)/96,r=t||0,o=Math.pow(10,r),Math.round(n*o)/o+"pt"):e;var n,r,o}},Om=function(e){return ic.firstPositionIn(e.getBody()).map(function(e){var t=e.container();return _o.isText(t)?t.par
 entNode:t})},Pm=function(o){return A.from(o.selection.getRng()).bind(function(e){var t,n,r=o.getBody();return n=r,(t=e).startContainer===n&&0===t.startOffset?A.none():A.from(o.selection.getStart(!0))})},Lm=function(e,t){if(/^[0-9\.]+$/.test(t)){var n=parseInt(t,10);if(1<=n&&n<=7){var r=ym(e),o=Cm(e);return o?o[n-1]||t:r[n-1]||t}return t}return t},Im=function(e,t){return e&&t&&e.startContainer===t.startContainer&&e.startOffset===t.startOffset&&e.endContainer===t.endContainer&&e.endOffset===t.endOffset},Mm=function(e,t,n){return null!==function(e,t,n){for(;e&&e!==t;){if(n(e))return e;e=e.parentNode}return null}(e,t,n)},Fm=function(e,t,n){return Mm(e,t,function(e){return e.nodeName===n})},zm=function(e){return e&&"TABLE"===e.nodeName},Um=function(e,t,n){for(var r=new ro(t,e.getParent(t.parentNode,e.isBlock)||e.getRoot());t=r[n?"prev":"next"]();)if(_o.isBr(t))return!0},Vm=function
 (e,t,n,r,o){var i,a,u,s,c,l,f=e.getRoot(),d=e.schema.getNonEmptyElements();if(u=e.getParent(o.parentNode,e.isBlock)||f,r&&_o.isBr(o)&&t&&e.isEmpty(u))return A.some(du(o.parentNode,e.nodeIndex(o)));for(i=new ro(o,u);s=i[r?"prev":"next"]();){if("false"===e.getContentEditableParent(s)||(l=f,pa(c=s)&&!1===Mm(c,l,Fu)))return A.none();if(_o.isText(s)&&0<s.nodeValue.length)return!1===Fm(s,f,"A")?A.some(du(s,r?s.nodeValue.length:0)):A.none();if(e.isBlock(s)||d[s.nodeName.toLowerCase()])return A.none();a=s}return n&&a?A.some(du(a,0)):A.none()},Hm=function(e,t,n,r){var o,i,a,u,s,c,l,f,d,m,g=e.getRoot(),p=!1;if(o=r[(n?"start":"end")+"Container"],i=r[(n?"start":"end")+"Offset"],l=_o.isElement(o)&&i===o.childNodes.length,s=e.schema.getNonEmptyElements(),c=n,pa(o))return A.none();if(_o.isElement(o)&&i>o.childNodes.length-1&&a
 mp;(c=!1),_o.isDocument(o)&&(o=g,i=0),o===g){if(c&&(u=o.childNodes[0<i?i-1:0])){if(pa(u))return A.none();if(s[u.nodeName]||zm(u))return A.none()}if(o.hasChildNodes()){if(i=Math.min(!c&&0<i?i-1:i,o.childNodes.length-1),o=o.childNodes[i],i=_o.isText(o)&&l?o.data.length:0,!t&&o===g.lastChild&&zm(o))return A.none();if(function(e,t){for(;t&&t!==e;){if(_o.isContentEditableFalse(t))return!0;t=t.parentNode}return!1}(g,o)||pa(o))return A.none();if(o.hasChildNodes()&&!1===zm(o)){a=new ro(u=o,g);do{if(_o.isContentEditableFalse(u)||pa(u)){p=!1;break}if(_o.isText(u)&&0<u.nodeValue.length){i=c?0:u.nodeValue.length,o=u,p=!0;break}if(s[u.nodeName.toLowerCase()]&&(!(f=u)||!/^(TD|TH|CAPTION)$/.test(f.nodeName))){i=e.nodeIndex(u),o=u.parentNode,c||i++,p=!0;break}}while(u=c?a.next():a.prev())}}}return t&&(_o.isText(o)&&0===i&&Vm(e,l,t,!0,o).each(function(e){o=e.container(),i=e.offset(),p=!0}
 ),_o.isElement(o)&&((u=o.childNodes[i])||(u=o.childNodes[i-1]),!u||!_o.isBr(u)||(m="A",(d=u).previousSibling&&d.previousSibling.nodeName===m)||Um(e,u,!1)||Um(e,u,!0)||Vm(e,l,t,!0,u).each(function(e){o=e.container(),i=e.offset(),p=!0}))),c&&!t&&_o.isText(o)&&i===o.nodeValue.length&&Vm(e,l,t,!1,o).each(function(e){o=e.container(),i=e.offset(),p=!0}),p?A.some(du(o,i)):A.none()},jm=function(e,t){var n=t.collapsed,r=t.cloneRange(),o=du.fromRangeStart(t);return Hm(e,n,!0,r).each(function(e){n&&du.isAbove(o,e)||r.setStart(e.container(),e.offset())}),n||Hm(e,n,!1,r).each(function(e){r.setEnd(e.container(),e.offset())}),n&&r.collapse(!0),Im(t,r)?A.none():A.some(r)},qm=function(e,t,n){var r=e.create("span",{},"&nbsp;");n.parentNode.insertBefore(r,n),t.scrollIntoView(r),e.remove(r)},$m=function(e,t,n,r){var o=e.createRng();r?(o.setStartBefore(n),o.setEndBefore(n)):(o.setStartAfter(n),o.setEndAfter
 (n)),t.setRng(o)},Wm=function(e,t){var n,r,o=e.selection,i=e.dom,a=o.getRng();jm(i,a).each(function(e){a.setStart(e.startContainer,e.startOffset),a.setEnd(e.endContainer,e.endOffset)});var u=a.startOffset,s=a.startContainer;if(1===s.nodeType&&s.hasChildNodes()){var c=u>s.childNodes.length-1;s=s.childNodes[Math.min(u,s.childNodes.length-1)]||s,u=c&&3===s.nodeType?s.nodeValue.length:0}var l=i.getParent(s,i.isBlock),f=l?i.getParent(l.parentNode,i.isBlock):null,d=f?f.nodeName.toUpperCase():"",m=t&&t.ctrlKey;"LI"!==d||m||(l=f),s&&3===s.nodeType&&u>=s.nodeValue.length&&(function(e,t,n){for(var r,o=new ro(t,n),i=e.getNonEmptyElements();r=o.next();)if(i[r.nodeName.toLowerCase()]||0<r.length)return!0}(e.schema,s,l)||(n=i.create("br"),a.insertNode(n),a.setStartAfter(n),a.setEndAfter(n),r=!0)),n=i.create("br"),a.insertNode(n),qm(i,o,n),$m(i,o,n,r),e.undoManager.add()},Km=function(e,t){var n=rr.from
 Tag("br");Ni(rr.fromDom(t),n),e.undoManager.add()},Xm=function(e,t){Ym(e.getBody(),t)||Ei(rr.fromDom(t),rr.fromTag("br"));var n=rr.fromTag("br");Ei(rr.fromDom(t),n),qm(e.dom,e.selection,n.dom()),$m(e.dom,e.selection,n.dom(),!1),e.undoManager.add()},Ym=function(e,t){return n=hu.after(t),!!_o.isBr(n.getNode())||ic.nextPosition(e,hu.after(t)).map(function(e){return _o.isBr(e.getNode())}).getOr(!1);var n},Gm=function(e){return e&&"A"===e.nodeName&&"href"in e},Jm=function(e){return e.fold(j(!1),Gm,Gm,j(!1))},Qm=function(e,t){t.fold(o,d(Km,e),d(Xm,e),o)},Zm=function(e,t){var n,r,o,i=(n=e,r=d(El.isInlineTarget,n),o=hu.fromRangeStart(n.selection.getRng()),ad(r,n.getBody(),o).filter(Jm));i.isSome()?i.each(d(Qm,e)):Wm(e,t)},eg=(nf([{before:["element"]},{on:["element","offset"]},{after:["element"]}]),nf([{domRange:["rng"]},{relative:["startSitu","finishSitu"]}
 ,{exact:["start","soffset","finish","foffset"]}])),tg=Er("start","soffset","finish","foffset"),ng=(eg.domRange,eg.relative,eg.exact,tr.detect().browser),rg=function(e,t){var n=lr(t)?Lc(t).length:Vr(t).length+1;return n<e?n:e<0?0:e},og=function(e){return tg(e.start(),rg(e.soffset(),e.start()),e.finish(),rg(e.foffset(),e.finish()))},ig=function(e,t){return Pr(e,t)||Or(e,t)},ag=function(t){return function(e){return ig(t,e.start())&&ig(t,e.finish())}},ug=function(e){return!0===e.inline||ng.isIE()},sg=function(e){return tg(rr.fromDom(e.startContainer),e.startOffset,rr.fromDom(e.endContainer),e.endOffset)},cg=function(e){var t=e.getSelection();return(t&&0!==t.rangeCount?A.from(t.getRangeAt(0)):A.none()).map(sg)},lg=function(e){var t,n=(t=e.dom().ownerDocument.defaultView,rr.fromDom(t));return cg(n.dom()).filter(ag(e))},fg=function(e,t){return A.from(t).filter(ag(e)).map(og)},dg=function(e
 ){var t=document.createRange();try{return t.setStart(e.start().dom(),e.soffset()),t.setEnd(e.finish().dom(),e.foffset()),A.some(t)}catch(n){return A.none()}},mg=function(e){return(e.bookmark?e.bookmark:A.none()).bind(d(fg,rr.fromDom(e.getBody()))).bind(dg)},gg=function(e){var t=ug(e)?lg(rr.fromDom(e.getBody())):A.none();e.bookmark=t.isSome()?t:e.bookmark},pg=function(t){mg(t).each(function(e){t.selection.setRng(e)})},hg=mg,vg=function(e){return go(e)||po(e)},bg=function(e){return z($(e.selection.getSelectedBlocks(),rr.fromDom),function(e){return!vg(e)&&!Ir(e).map(vg).getOr(!1)})},yg=function(e,t){var n=e.settings,r=e.dom,o=e.selection,i=e.formatter,a=/[a-z%]+$/i.exec(n.indentation)[0],u=parseInt(n.indentation,10),s=e.getParam("indent_use_margin",!1);e.queryCommandState("InsertUnorderedList")||e.queryCommandState("InsertOrderedList")||n.forced_root_block||r.getParent(o.getNode(),r.isBlock)||i.apply("div"),F(bg(e),function(e){!function(e
 ,t,n,r,o,i){if("false"!==e.getContentEditable(i)){var a=n?"margin":"padding";if(a="TABLE"===i.nodeName?"margin":a,a+="rtl"===e.getStyle(i,"direction",!0)?"Right":"Left","outdent"===t){var u=Math.max(0,parseInt(i.style[a]||0,10)-r);e.setStyle(i,a,u?u+o:"")}else u=parseInt(i.style[a]||0,10)+r+o,e.setStyle(i,a,u)}}(r,t,s,u,a,e.dom())})},Cg=Yt.each,xg=Yt.extend,wg=Yt.map,Ng=Yt.inArray;function Eg(s){var o,i,a,t,c={state:{},exec:{},value:{}},n=s.settings;s.on("PreInit",function(){o=s.dom,i=s.selection,n=s.settings,a=s.formatter});var r=function(e){var t;if(!s.quirks.isHidden()&&!s.removed){if(e=e.toLowerCase(),t=c.state[e])return t(e);try{return s.getDoc().queryCommandState(e)}catch(n){}return!1}},e=function(e,n){n=n||"exec",Cg(e,function(t,e){Cg(e.toLowerCase().split(","),function(e){c[n][e]=t})})},u=function(e,t,n){e=e.toLowerCase(),c.value
 [e]=function(){return t.call(n||s)}};xg(this,{execCommand:function(t,n,r,e){var o,i,a=!1;if(!s.removed){if(/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint)$/.test(t)||e&&e.skip_focus?pg(s):s.focus(),(e=s.fire("BeforeExecCommand",{command:t,ui:n,value:r})).isDefaultPrevented())return!1;if(i=t.toLowerCase(),o=c.exec[i])return o(i,n,r),s.fire("ExecCommand",{command:t,ui:n,value:r}),!0;if(Cg(s.plugins,function(e){if(e.execCommand&&e.execCommand(t,n,r))return s.fire("ExecCommand",{command:t,ui:n,value:r}),!(a=!0)}),a)return a;if(s.theme&&s.theme.execCommand&&s.theme.execCommand(t,n,r))return s.fire("ExecCommand",{command:t,ui:n,value:r}),!0;try{a=s.getDoc().execCommand(t,n,r)}catch(u){}return!!a&&(s.fire("ExecCommand",{command:t,ui:n,value:r}),!0)}},queryCommandState:r,queryCommandValue:function(e){var t;if(!s.quirks.isHidden()&&!s.removed){if(e=e.toLowerCase(),t=c.value[e])r
 eturn t(e);try{return s.getDoc().queryCommandValue(e)}catch(n){}}},queryCommandSupported:function(e){if(e=e.toLowerCase(),c.exec[e])return!0;try{return s.getDoc().queryCommandSupported(e)}catch(t){}return!1},addCommands:e,addCommand:function(e,o,i){e=e.toLowerCase(),c.exec[e]=function(e,t,n,r){return o.call(i||s,t,n,r)}},addQueryStateHandler:function(e,t,n){e=e.toLowerCase(),c.state[e]=function(){return t.call(n||s)}},addQueryValueHandler:u,hasCustomCommand:function(e){return e=e.toLowerCase(),!!c.exec[e]}});var l=function(e,t,n){return t===undefined&&(t=!1),n===undefined&&(n=null),s.getDoc().execCommand(e,t,n)},f=function(e){return a.match(e)},d=function(e,t){a.toggle(e,t?{value:t}:undefined),s.nodeChanged()},m=function(e){t=i.getBookmark(e)},g=function(){i.moveToBookmark(t)};e({"mceResetDesignMode,mceBeginUndoLevel":function(){},"mceEndUndoLevel,mceAddUndoLevel":function(){s.undoManager.add()},"Cut,Copy,Paste":function(e){var t,n=s.get
 Doc();try{l(e)}catch(o){t=!0}if("paste"!==e||n.queryCommandEnabled(e)||(t=!0),t||!n.queryCommandSupported(e)){var r=s.translate("Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X/C/V keyboard shortcuts instead.");de.mac&&(r=r.replace(/Ctrl\+/g,"\u2318+")),s.notificationManager.open({text:r,type:"error"})}},unlink:function(){if(i.isCollapsed()){var e=s.dom.getParent(s.selection.getStart(),"a");e&&s.dom.remove(e,!0)}else a.remove("link")},"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull,JustifyNone":function(e){var t=e.substring(7);"full"===t&&(t="justify"),Cg("left,center,right,justify".split(","),function(e){t!==e&&a.remove("align"+e)}),"none"!==t&&d("align"+t)},"InsertUnorderedList,InsertOrderedList":function(e){var t,n;l(e),(t=o.getParent(i.getNode(),"ol
 ,ul"))&&(n=t.parentNode,/^(H[1-6]|P|ADDRESS|PRE)$/.test(n.nodeName)&&(m(),o.split(n,t),g()))},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(e){d(e)},"ForeColor,HiliteColor":function(e,t,n){d(e,n)},FontName:function(e,t,n){var r,o;o=n,(r=s).formatter.toggle("fontname",{value:Lm(r,o)}),r.nodeChanged()},FontSize:function(e,t,n){var r,o;o=n,(r=s).formatter.toggle("fontsize",{value:Lm(r,o)}),r.nodeChanged()},RemoveFormat:function(e){a.remove(e)},mceBlockQuote:function(){d("blockquote")},FormatBlock:function(e,t,n){return d(n||"p")},mceCleanup:function(){var e=i.getBookmark();s.setContent(s.getContent()),i.moveToBookmark(e)},mceRemoveNode:function(e,t,n){var r=n||i.getNode();r!==s.getBody()&&(m(),s.dom.remove(r,!0),g())},mceSelectNodeDepth:function(e,t,n){var r=0;o.getParent(i.getNode(),function(e){if(1===e.nodeType&&r++===n)return i.select(e),!1},s.getBody())},mceSelect
 Node:function(e,t,n){i.select(n)},mceInsertContent:function(e,t,n){cl(s,n)},mceInsertRawHTML:function(e,t,n){i.setContent("tiny_mce_marker");var r=s.getContent();s.setContent(r.replace(/tiny_mce_marker/g,function(){return n}))},mceToggleFormat:function(e,t,n){d(n)},mceSetContent:function(e,t,n){s.setContent(n)},"Indent,Outdent":function(e){yg(s,e)},mceRepaint:function(){},InsertHorizontalRule:function(){s.execCommand("mceInsertContent",!1,"<hr />")},mceToggleVisualAid:function(){s.hasVisual=!s.hasVisual,s.addVisual()},mceReplaceContent:function(e,t,n){s.execCommand("mceInsertContent",!1,n.replace(/\{\$selection\}/g,i.getContent({format:"text"})))},mceInsertLink:function(e,t,n){var r;"string"==typeof n&&(n={href:n}),r=o.getParent(i.getNode(),"a"),n.href=n.href.replace(" ","%20"),r&&n.href||a.remove("link"),n.href&&a.apply("link",n,r)},s
 electAll:function(){var e=o.getParent(i.getStart(),_o.isContentEditableTrue);if(e){var t=o.createRng();t.selectNodeContents(e),i.setRng(t)}},"delete":function(){rm(s)},forwardDelete:function(){om(s)},mceNewDocument:function(){s.setContent("")},InsertLineBreak:function(e,t,n){return Zm(s,n),!0}});var p=function(n){return function(){var e=i.isCollapsed()?[o.getParent(i.getNode(),o.isBlock)]:i.getSelectedBlocks(),t=wg(e,function(e){return!!a.matchNode(e,n)});return-1!==Ng(t,!0)}};e({JustifyLeft:p("alignleft"),JustifyCenter:p("aligncenter"),JustifyRight:p("alignright"),JustifyFull:p("alignjustify"),"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(e){return f(e)},mceBlockQuote:function(){return f("blockquote")},Outdent:function(){var e;if(n.inline_styles){if((e=o.getParent(i.getStart(),o.isBlock))&&0<parseInt(e.style.paddingLeft,10))return!0;if((e=o.getParent(i.getEnd(),o.isBloc
 k))&&0<parseInt(e.style.paddingLeft,10))return!0}return r("InsertUnorderedList")||r("InsertOrderedList")||!n.inline_styles&&!!o.getParent(i.getNode(),"BLOCKQUOTE")},"InsertUnorderedList,InsertOrderedList":function(e){var t=o.getParent(i.getNode(),"ul,ol");return t&&("insertunorderedlist"===e&&"UL"===t.tagName||"insertorderedlist"===e&&"OL"===t.tagName)}},"state"),e({Undo:function(){s.undoManager.undo()},Redo:function(){s.undoManager.redo()}}),u("FontName",function(){return Pm(t=s).fold(function(){return Om(t).map(function(e){return Bm.getFontFamily(t.getBody(),e)}).getOr("")},function(e){return Bm.getFontFamily(t.getBody(),e)});var t},this),u("FontSize",function(){return Pm(t=s).fold(function(){return Om(t).map(function(e){return Bm.getFontSize(t.getBody(),e)}).getOr("")},function(e){return Bm.getFontSi
 ze(t.getBody(),e)});var t},this)}var Sg=Yt.makeMap("focus blur focusin focusout click dblclick mousedown mouseup mousemove mouseover beforepaste paste cut copy selectionchange mouseout mouseenter mouseleave wheel keydown keypress keyup input contextmenu dragstart dragend dragover draggesture dragdrop drop drag submit compositionstart compositionend compositionupdate touchstart touchmove touchend"," "),kg=function(a){var u,s,c=this,l={},f=function(){return!1},d=function(){return!0};u=(a=a||{}).scope||c,s=a.toggleEvent||f;var r=function(e,t,n,r){var o,i,a;if(!1===t&&(t=f),t)for(t={func:t},r&&Yt.extend(t,r),a=(i=e.toLowerCase().split(" ")).length;a--;)e=i[a],(o=l[e])||(o=l[e]=[],s(e,!0)),n?o.unshift(t):o.push(t);return c},m=function(e,t){var n,r,o,i,a;if(e)for(n=(i=e.toLowerCase().split(" ")).length;n--;){if(e=i[n],r=l[e],!e){for(o in l)s(o,!1),delete l[o];return c}if(r){if(t)for(a=r.length;a--;)r[a].func===t&&(r=r.slice(0
 ,a).concat(r.slice(a+1)),l[e]=r);else r.length=0;r.length||(s(e,!1),delete l[e])}}else{for(e in l)s(e,!1);l={}}return c};c.fire=function(e,t){var n,r,o,i;if(e=e.toLowerCase(),(t=t||{}).type=e,t.target||(t.target=u),t.preventDefault||(t.preventDefault=function(){t.isDefaultPrevented=d},t.stopPropagation=function(){t.isPropagationStopped=d},t.stopImmediatePropagation=function(){t.isImmediatePropagationStopped=d},t.isDefaultPrevented=f,t.isPropagationStopped=f,t.isImmediatePropagationStopped=f),a.beforeFire&&a.beforeFire(t),n=l[e])for(r=0,o=n.length;r<o;r++){if((i=n[r]).once&&m(e,i.func),t.isImmediatePropagationStopped())return t.stopPropagation(),t;if(!1===i.func.call(u,t))return t.preventDefault(),t}return t},c.on=r,c.off=m,c.once=function(e,t,n){return r(e,t,n,{once:!0})},c.has=function(e){return e=e.toLowerCase(),!(!l[e]||0===l[e].length)}};kg.isNative=function(e){return!!Sg[e.toLowerCase()]};var Tg,Ag=function(n){return n._eventDispatcher||(n._eventDispatcher=ne
 w kg({scope:n,toggleEvent:function(e,t){kg.isNative(e)&&n.toggleNativeEvent&&n.toggleNativeEvent(e,t)}})),n._eventDispatcher},Rg={fire:function(e,t,n){if(this.removed&&"remove"!==e)return t;if(t=Ag(this).fire(e,t,n),!1!==n&&this.parent)for(var r=this.parent();r&&!t.isPropagationStopped();)r.fire(e,t,!1),r=r.parent();return t},on:function(e,t,n){return Ag(this).on(e,t,n)},off:function(e,t){return Ag(this).off(e,t)},once:function(e,t){return Ag(this).once(e,t)},hasEventListeners:function(e){return Ag(this).has(e)}},_g=function(e,t){return e.fire("PreProcess",t)},Dg=function(e,t){return e.fire("PostProcess",t)},Bg=function(e){return e.fire("remove")},Og=function(e,t){return e.fire("SwitchMode",{mode:t})},Pg=function(e,t,n,r){e.fire("ObjectResizeStart",{target:t,width:n,height:r})},Lg=function(e,t,n,r){e.fire("ObjectResized",{target:t,width:n,height:r})},Ig=function(e,t,n){try{e
 .getDoc().execCommand(t,!1,n)}catch(r){}},Mg=function(e,t,n){var r,o;zi(e,t)&&!1===n?(o=t,Pi(r=e)?r.dom().classList.remove(o):Ii(r,o),Fi(r)):n&&Mi(e,t)},Fg=function(e,t){Mg(rr.fromDom(e.getBody()),"mce-content-readonly",t),t?(e.selection.controlSelection.hideResizeRect(),e.readonly=!0,e.getBody().contentEditable="false"):(e.readonly=!1,e.getBody().contentEditable="true",Ig(e,"StyleWithCSS",!1),Ig(e,"enableInlineTableEditing",!1),Ig(e,"enableObjectResizing",!1),e.focus(),e.nodeChanged())},zg=function(e){return e.readonly?"readonly":"design"},Ug=gi.DOM,Vg=function(e,t){return"selectionchange"===t?e.getDoc():!e.inline&&/^mouse|touch|click|contextmenu|drop|dragover|dragend/.test(t)?e.getDoc().documentElement:e.settings.event_root?(e.eventRoot||(e.eventRoot=Ug.select(e.settings.event_root)[0]),e.eventRoot):e.getBody()},Hg=function(e,t,n){var r;(r=e).hidden||r.readonly?!0===e.
 readonly&&n.preventDefault():e.fire(t,n)},jg=function(i,a){var e,t;if(i.delegates||(i.delegates={}),!i.delegates[a]&&!i.removed)if(e=Vg(i,a),i.settings.event_root){if(Tg||(Tg={},i.editorManager.on("removeEditor",function(){var e;if(!i.editorManager.activeEditor&&Tg){for(e in Tg)i.dom.unbind(Vg(i,e));Tg=null}})),Tg[a])return;t=function(e){for(var t=e.target,n=i.editorManager.get(),r=n.length;r--;){var o=n[r].getBody();(o===t||Ug.isChildOf(t,o))&&Hg(n[r],a,e)}},Tg[a]=t,Ug.bind(e,a,t)}else t=function(e){Hg(i,a,e)},Ug.bind(e,a,t),i.delegates[a]=t},qg={bindPendingEventDelegates:function(){var t=this;Yt.each(t._pendingNativeEvents,function(e){jg(t,e)})},toggleNativeEvent:function(e,t){var n=this;"focus"!==e&&"blur"!==e&&(t?n.initialized?jg(n,e):n._pendingNativeEvents?n._pendingNativeEvents.push(e):n._pendingNativeEvents=[e]:n.initialized&&(n.dom.unbind(Vg(n,e),e,n.delegates[e]),delete n.delegates[e]))},u
 nbindAllNativeEvents:function(){var e,t=this,n=t.getBody(),r=t.dom;if(t.delegates){for(e in t.delegates)t.dom.unbind(Vg(t,e),e,t.delegates[e]);delete t.delegates}!t.inline&&n&&r&&(n.onload=null,r.unbind(t.getWin()),r.unbind(t.getDoc())),r&&(r.unbind(n),r.unbind(t.getContainer()))}},$g=qg=Yt.extend({},Rg,qg),Wg=Yt.each,Kg=Yt.explode,Xg={f9:120,f10:121,f11:122},Yg=Yt.makeMap("alt,ctrl,shift,meta,access");function Gg(i){var a={},r=[],u=function(e){var t,n,r={};for(n in Wg(Kg(e,"+"),function(e){e in Yg?r[e]=!0:/^[0-9]{2,}$/.test(e)?r.keyCode=parseInt(e,10):(r.charCode=e.charCodeAt(0),r.keyCode=Xg[e]||e.toUpperCase().charCodeAt(0))}),t=[r.keyCode],Yg)r[n]?t.push(n):r[n]=!1;return r.id=t.join(","),r.access&&(r.alt=!0,de.mac?r.ctrl=!0:r.shift=!0),r.meta&&(de.mac?r.meta=!0:(r.ctrl=!0,r.meta=!1)),r},s=function(e,t,n,r){var o;return(o=Yt.map(Kg(e,">"),u))[o.length-1]=Yt.extend(o[o.length-1],{func:n,scop
 e:r||i}),Yt.extend(o[0],{desc:i.translate(t),subpatterns:o.slice(1)})},o=function(e,t){return!!t&&t.ctrl===e.ctrlKey&&t.meta===e.metaKey&&t.alt===e.altKey&&t.shift===e.shiftKey&&!!(e.keyCode===t.keyCode||e.charCode&&e.charCode===t.charCode)&&(e.preventDefault(),!0)},c=function(e){return e.func?e.func.call(e.scope):null};i.on("keyup keypress keydown",function(t){var e,n;((n=t).altKey||n.ctrlKey||n.metaKey||"keydown"===(e=t).type&&112<=e.keyCode&&e.keyCode<=123)&&!t.isDefaultPrevented()&&(Wg(a,function(e){if(o(t,e))return r=e.subpatterns.slice(0),"keydown"===t.type&&c(e),!0}),o(t,r[0])&&(1===r.length&&"keydown"===t.type&&c(r[0]),r.shift()))}),this.add=function(e,n,r,o){var t;return"string"==typeof(t=r)?r=function(){i.execCommand(t,!1,null)}:Yt.isArray(t)&&(r=function(){i.execCommand(t[0],t[1],t[2])}),Wg(
 Kg(Yt.trim(e.toLowerCase())),function(e){var t=s(e,n,r,o);a[t.id]=t}),!0},this.remove=function(e){var t=s(e);return!!a[t.id]&&(delete a[t.id],!0)}}var Jg=function(e){var t=Lr(e).dom();return e.dom()===t.activeElement},Qg=function(t){return(e=Lr(t),n=e!==undefined?e.dom():document,A.from(n.activeElement).map(rr.fromDom)).filter(function(e){return t.dom().contains(e.dom())});var e,n},Zg=function(t,e){return(n=e,n.collapsed?A.from(Va(n.startContainer,n.startOffset)).map(rr.fromDom):A.none()).bind(function(e){return vo(e)?A.some(e):!1===Pr(t,e)?A.some(t):A.none()});var n},ep=function(t,e){Zg(rr.fromDom(t.getBody()),e).bind(function(e){return ic.firstPositionIn(e.dom())}).fold(function(){t.selection.normalize()},function(e){return t.selection.setRng(e.toRange())})},tp=function(e){if(e.setActive)try{e.setActive()}catch(t){e.focus()}else e.focus()},np=function(e){var t,n=e.getBody();return n&&(t=rr.fromDom(n),Jg(t)||Qg(t).isSome())},rp=function(e){return e.inline?np(e):(t=e
 ).iframeElement&&Jg(rr.fromDom(t.iframeElement));var t},op=function(e){return e.editorManager.setActive(e)},ip=function(e,t){e.removed||(t?op(e):function(t){var e=t.selection,n=t.settings.content_editable,r=t.getBody(),o=e.getRng();t.quirks.refreshContentEditable();var i,a,u=(i=t,a=e.getNode(),i.dom.getParent(a,function(e){return"true"===i.dom.getContentEditable(e)}));if(t.$.contains(r,u))return tp(u),ep(t,o),op(t);t.bookmark!==undefined&&!1===rp(t)&&hg(t).each(function(e){t.selection.setRng(e),o=e}),n||(de.opera||tp(r),t.getWin().focus()),(de.gecko||n)&&(tp(r),ep(t,o)),op(t)}(e))},ap=rp,up=function(e,t){return t.dom()[e]},sp=function(e,t){return parseInt(wr(t,e),10)},cp=d(up,"clientWidth"),lp=d(up,"clientHeight"),fp=d(sp,"margin-top"),dp=d(sp,"margin-left"),mp=function(e,t,n){var r,o,i,a,u,s,c,l,f,d,m,g=rr.fromDom(e.getBody()),p=e.inline?g:(r=g,rr.fromDom(r.dom().ownerDocument.documentElement)),h=(o=e
 .inline,a=t,u=n,s=(i=p).dom().getBoundingClientRect(),{x:a-(o?s.left+i.dom().clientLeft+dp(i):0),y:u-(o?s.top+i.dom().clientTop+fp(i):0)});return l=h.x,f=h.y,d=cp(c=p),m=lp(c),0<=l&&0<=f&&l<=d&&f<=m},gp=function(e){var t,n=e.inline?e.getBody():e.getContentAreaContainer();return(t=n,A.from(t).map(rr.fromDom)).map(function(e){return Pr(Lr(e),e)}).getOr(!1)};function pp(n){var t,o=[],i=function(){var e,t=n.theme;return t&&t.getNotificationManagerImpl?t.getNotificationManagerImpl():{open:e=function(){throw new Error("Theme did not provide a NotificationManager implementation.")},close:e,reposition:e,getArgs:e}},a=function(){0<o.length&&i().reposition(o)},u=function(t){K(o,function(e){return e===t}).each(function(e){o.splice(e,1)})},r=function(r){if(!n.removed&&gp(n))return V(o,function(e){return t=i().getArgs(e),n=r,!(t.type!==n.type||t.text!==n.text||t.progressBar||t.timeout||n.progressBar||n.timeout);var t,n}).ge
 tOrThunk(function(){n.editorManager.setActive(n);var e,t=i().open(r,function(){u(t),a()});return e=t,o.push(e),a(),t})};return(t=n).on("SkinLoaded",function(){var e=t.settings.service_message;e&&r({text:e,type:"warning",timeout:0,icon:""})}),t.on("ResizeEditor ResizeWindow",function(){ve.requestAnimationFrame(a)}),t.on("remove",function(){F(o.slice(),function(e){i().close(e)})}),{open:r,close:function(){A.from(o[0]).each(function(e){i().close(e),u(e),a()})},getNotifications:function(){return o}}}function hp(r){var o=[],i=function(){var e,t=r.theme;return t&&t.getWindowManagerImpl?t.getWindowManagerImpl():{open:e=function(){throw new Error("Theme did not provide a WindowManager implementation.")},alert:e,confirm:e,close:e,getParams:e,setParams:e}},a=function(e,t){return function(){return t?t.apply(e,arguments):undefined}},u=function(e){var t;o.push(e),t=e,r.fire("OpenWindow",{win:t})},s=function(n){
 K(o,function(e){return e===n}).each(function(e){var t;o.splice(e,1),t=n,r.fire("CloseWindow",{win:t}),0===o.length&&r.focus()})},e=function(){return A.from(o[o.length-1])};return r.on("remove",function(){F(o.slice(0),function(e){i().close(e)})}),{windows:o,open:function(e,t){r.editorManager.setActive(r),gg(r);var n=i().open(e,t,s);return u(n),n},alert:function(e,t,n){var r=i().alert(e,a(n||this,t),s);u(r)},confirm:function(e,t,n){var r=i().confirm(e,a(n||this,t),s);u(r)},close:function(){e().each(function(e){i().close(e),s(e)})},getParams:function(){return e().map(i().getParams).getOr(null)},setParams:function(t){e().each(function(e){i().setParams(e,t)})},getWindows:function(){return o}}}var vp=wi.PluginManager,bp=function(e,t){var n=function(e,t){for(var n in vp.urls)if(vp.urls[n]+"/plugin"+t+".js"===e)return n;return null}(t,e.suffix);return n?"Failed to load plugin: "+n+" from url "+t:"Failed to load plugin 
 url: "+t},yp=function(e,t){e.notificationManager.open({type:"error",text:t})},Cp=function(e,t){e._skinLoaded?yp(e,t):e.on("SkinLoaded",function(){yp(e,t)})},xp=function(e,t){Cp(e,bp(e,t))},wp=function(e,t){Cp(e,"Failed to upload image: "+t)},Np=Cp,Ep=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var r=window.console;r&&(r.error?r.error.apply(r,arguments):r.log.apply(r,arguments))},Sp=wi.PluginManager,kp=wi.ThemeManager;function Tp(){return new(ie.getOrDie("XMLHttpRequest"))}function Ap(u,s){var r={},n=function(e,r,o,t){var i,n;(i=Tp()).open("POST",s.url),i.withCredentials=s.credentials,i.upload.onprogress=function(e){t(e.loaded/e.total*100)},i.onerror=function(){o("Image upload failed due to a XHR Transport error. Code: "+i.status)},i.onload=function(){var e,t,n;i.status<200||300<=i.status?o("HTTP Error: "+i.status):(e=JSON.parse(i.responseText))&&"strin
 g"==typeof e.location?r((t=s.basePath,n=e.location,t?t.replace(/\/$/,"")+"/"+n.replace(/^\//,""):n)):o("Invalid JSON: "+i.responseText)},(n=new FormData).append("file",e.blob(),e.filename()),i.send(n)},c=function(e,t){return{url:t,blobInfo:e,status:!0}},l=function(e,t){return{url:"",blobInfo:e,status:!1,error:t}},f=function(e,t){Yt.each(r[e],function(e){e(t)}),delete r[e]},o=function(e,n){return e=Yt.grep(e,function(e){return!u.isUploaded(e.blobUri())}),me.all(Yt.map(e,function(e){return u.isPending(e.blobUri())?(t=e.blobUri(),new me(function(e){r[t]=r[t]||[],r[t].push(e)})):(o=e,i=s.handler,a=n,u.markPending(o.blobUri()),new me(function(t){var n;try{var r=function(){n&&n.close()};i(o,function(e){r(),u.markUploaded(o.blobUri(),e),f(o.blobUri(),c(o,e)),t(c(o,e))},function(e){r(),u.removeFailed(o.blobUri()),f(o.blobUri(),l(o,e)),t(l(o,e))},function(e){e<0||100<e||(n||(n=a()),n.progressBar.value(e))})}catch(
 e){t(l(o,e.message))}}));var o,i,a,t}))};return!1===P(s.handler)&&(s.handler=n),{upload:function(e,t){return s.url||s.handler!==n?o(e,t):new me(function(e){e([])})}}}var Rp=function(e){return ie.getOrDie("atob")(e)},_p=function(e){var t,n,r=decodeURIComponent(e).split(",");return(n=/data:([^;]+)/.exec(r[0]))&&(t=n[1]),{type:t,data:r[1]}},Dp=function(a){return new me(function(e){var t,n,r,o,i=_p(a);try{t=Rp(i.data)}catch(LN){return void e(new Blob([]))}for(o=t.length,n=new(ie.getOrDie("Uint8Array"))(o),r=0;r<n.length;r++)n[r]=t.charCodeAt(r);e(new Blob([n],{type:i.type}))})},Bp=function(e){return 0===e.indexOf("blob:")?(i=e,new me(function(e,t){var n=function(){t("Cannot convert "+i+" to Blob. Resource might not exist or is inaccessible.")};try{var r=Tp();r.open("GET",i,!0),r.responseType="blob",r.onload=function(){200===this.status?e(this.response):n()},r.onerror=n,r.send()}catch(o){n(
 )}})):0===e.indexOf("data:")?Dp(e):null;var i},Op=function(n){return new me(function(e){var t=new(ie.getOrDie("FileReader"));t.onloadend=function(){e(t.result)},t.readAsDataURL(n)})},Pp=_p,Lp=0,Ip=function(e){return(e||"blobid")+Lp++},Mp=function(n,r,o,t){var i,a;0!==r.src.indexOf("blob:")?(i=Pp(r.src).data,(a=n.findFirst(function(e){return e.base64()===i}))?o({image:r,blobInfo:a}):Bp(r.src).then(function(e){a=n.create(Ip(),e,i),n.add(a),o({image:r,blobInfo:a})},function(e){t(e)})):(a=n.getByUri(r.src))?o({image:r,blobInfo:a}):Bp(r.src).then(function(t){Op(t).then(function(e){i=Pp(e).data,a=n.create(Ip(),t,i),n.add(a),o({image:r,blobInfo:a})})},function(e){t(e)})},Fp=function(e){return e?ne(e.getElementsByTagName("img")):[]},zp=0,Up={uuid:function(e){return e+zp+++(t=function(){return Math.round(4294967295*Math.random()).toString(36)},"s"+(new Date).getTime().toString(36)+t()+t()+t());var t}};function Vp(u){var n,o,t,e,i,r,
 a,s,c,l=(n=[],o=function(e){var t,n,r;if(!e.blob||!e.base64)throw new Error("blob and base64 representations of the image are required for BlobInfo to be created");return t=e.id||Up.uuid("blobid"),n=e.name||t,{id:j(t),name:j(n),filename:j(n+"."+(r=e.blob.type,{"image/jpeg":"jpg","image/jpg":"jpg","image/gif":"gif","image/png":"png"}[r.toLowerCase()]||"dat")),blob:j(e.blob),base64:j(e.base64),blobUri:j(e.blobUri||ue.createObjectURL(e.blob)),uri:j(e.uri)}},{create:function(e,t,n,r){if(R(e))return o({id:e,name:r,blob:t,base64:n});if(_(e))return o(e);throw new Error("Unknown input type")},add:function(e){t(e.id())||n.push(e)},get:t=function(t){return e(function(e){return e.id()===t})},getByUri:function(t){return e(function(e){return e.blobUri()===t})},findFirst:e=function(e){return z(n,e)[0]},removeByUri:function(t){n=z(n,function(e){return e.blobUri()!==t||(
 ue.revokeObjectURL(e.blobUri()),!1)})},destroy:function(){F(n,function(e){ue.revokeObjectURL(e.blobUri())}),n=[]}}),f=(a={},s=function(e,t){return{status:e,resultUri:t}},{hasBlobUri:c=function(e){return e in a},getResultUri:function(e){var t=a[e];return t?t.resultUri:null},isPending:function(e){return!!c(e)&&1===a[e].status},isUploaded:function(e){return!!c(e)&&2===a[e].status},markPending:function(e){a[e]=s(1,null)},markUploaded:function(e,t){a[e]=s(2,t)},removeFailed:function(e){delete a[e]},destroy:function(){a={}}}),d=[],m=function(t){return function(e){return u.selection?t(e):[]}},g=function(e,t,n){for(var r=0;-1!==(r=e.indexOf(t,r))&&(e=e.substring(0,r)+n+e.substr(r+t.length),r+=n.length-t.length+1),-1!==r;);return e},p=function(e,t,n){return e=g(e,'src="'+t+'"','src="'+n+'"'),e=g(e,'data-mce-src="'+t+'"','data-mce-src="'+n+'"')},h=function(t,n){F(u.undoManager.data,function(e){"fragmented"===e.type?e.fr
 agments=$(e.fragments,function(e){return p(e,t,n)}):e.content=p(e.content,t,n)})},v=function(){return u.notificationManager.open({text:u.translate("Image uploading..."),type:"info",timeout:-1,progressBar:!0})},b=function(e,t){l.removeByUri(e.src),h(e.src,t),u.$(e).attr({src:Nm(u)?t+"?"+(new Date).getTime():t,"data-mce-src":u.convertURL(t,"src")})},y=function(n){return i||(i=Ap(f,{url:Sm(u),basePath:km(u),credentials:Tm(u),handler:Am(u)})),w().then(m(function(r){var e;return e=$(r,function(e){return e.blobInfo}),i.upload(e,v).then(m(function(e){var t=$(e,function(e,t){var n=r[t].image;return e.status&&Em(u)?b(n,e.url):e.error&&wp(u,e.error),{element:n,status:e.status}});return n&&n(t),t}))}))},C=function(e){if(wm(u))return y(e)},x=function(t){return!1!==J(d,function(e){return e(t)})&&(0!==t.getAttribute("src").indexOf("data:")||xm(u)(t))},w=function(){var o,i,a;return r||(o=f,i=l,a={
 },r={findAll:function(e,n){var t;n||(n=j(!0)),t=z(Fp(e),function(e){var t=e.src;return!!de.fileApi&&!e.hasAttribute("data-mce-bogus")&&!e.hasAttribute("data-mce-placeholder")&&!(!t||t===de.transparentSrc)&&(0===t.indexOf("blob:")?!o.isUploaded(t)&&n(e):0===t.indexOf("data:")&&n(e))});var r=$(t,function(n){if(a[n.src])return new me(function(t){a[n.src].then(function(e){if("string"==typeof e)return e;t({image:n,blobInfo:e.blobInfo})})});var e=new me(function(e,t){Mp(i,n,e,t)}).then(function(e){return delete a[e.image.src],e})["catch"](function(e){return delete a[n.src],e});return a[n.src]=e});return me.all(r)}}),r.findAll(u.getBody(),x).then(m(function(e){return e=z(e,function(e){return"string"!=typeof e||(Np(u,e),!1)}),F(e,function(e){h(e.image.src,e.blobInfo.blobUri()),e.image.src=e.blobInfo.blobUri(),e.image.removeAttribute("data-mce-src")}),e}))},N=functi
 on(e){return e.replace(/src="(blob:[^"]+)"/g,function(e,n){var t=f.getResultUri(n);if(t)return'src="'+t+'"';var r=l.getByUri(n);return r||(r=U(u.editorManager.get(),function(e,t){return e||t.editorUpload&&t.editorUpload.blobCache.getByUri(n)},null)),r?'src="data:'+r.blob().type+";base64,"+r.base64()+'"':e})};return u.on("setContent",function(){wm(u)?C():w()}),u.on("RawSaveContent",function(e){e.content=N(e.content)}),u.on("getContent",function(e){e.source_view||"raw"===e.format||(e.content=N(e.content))}),u.on("PostRender",function(){u.parser.addNodeFilter("img",function(e){F(e,function(e){var t=e.attr("src");if(!l.getByUri(t)){var n=f.getResultUri(t);n&&e.attr("src",n)}})})}),{blobCache:l,addFilter:function(e){d.push(e)},uploadImages:y,uploadImagesAuto:C,scanForImages:w,destroy:function(){l.destroy(),f.destroy(),r=i=null}}}var Hp=function(e,t)
 {return e.hasOwnProperty(t.nodeName)},jp=function(t,e,n){return r=Vl(rr.fromDom(n),rr.fromDom(e)),K(r,function(e){return Hp(t,e.dom())}).isSome();var r},qp=function(e,t){if(_o.isText(t)){if(0===t.nodeValue.length)return!0;if(/^\s+$/.test(t.nodeValue)&&(!t.nextSibling||Hp(e,t.nextSibling)))return!0}return!1},$p=function(e){var t,n,r,o,i,a,u,s,c,l,f,d=e.settings,m=e.dom,g=e.selection,p=e.schema,h=p.getBlockElements(),v=g.getStart(),b=e.getBody();if(f=d.forced_root_block,v&&_o.isElement(v)&&f&&(l=b.nodeName.toLowerCase(),p.isValidChild(l,f.toLowerCase())&&!jp(h,b,v))){for(n=(t=g.getRng()).startContainer,r=t.startOffset,o=t.endContainer,i=t.endOffset,c=ap(e),v=b.firstChild;v;)if(y=h,C=v,_o.isText(C)||_o.isElement(C)&&!Hp(y,C)&&!pc(C)){if(qp(h,v)){v=(u=v).nextSibling,m.remove(u);continue}a||(a=m.create(f,e.settings.forced_root_block_attrs),v.parentNode.insertBefore(a,v),s=!0),v=(u=v).nextSibling,a.appendChild(u)}else a=null,v=v.next
 Sibling;var y,C;s&&c&&(t.setStart(n,r),t.setEnd(o,i),g.setRng(t),e.nodeChanged())}},Wp=function(e){e.settings.forced_root_block&&e.on("NodeChange",d($p,e))},Kp=function(t){return jr(t).fold(j([t]),function(e){return[t].concat(Kp(e))})},Xp=function(t){return qr(t).fold(j([t]),function(e){return"br"===ur(e)?Mr(e).map(function(e){return[t].concat(Xp(e))}).getOr([]):[t].concat(Xp(e))})},Yp=function(o,e){return qa([(i=e,a=i.startContainer,u=i.startOffset,_o.isText(a)?0===u?A.some(rr.fromDom(a)):A.none():A.from(a.childNodes[u]).map(rr.fromDom)),(t=e,n=t.endContainer,r=t.endOffset,_o.isText(n)?r===n.data.length?A.some(rr.fromDom(n)):A.none():A.from(n.childNodes[r-1]).map(rr.fromDom))],function(e,t){var n=V(Kp(o),d(Or,e)),r=V(Xp(o),d(Or,t));return n.isSome()&&r.isSome()}).getOr(!1);var t,n,r,i,a,u},Gp=function(e,t,n,r){var o=n,i=new ro(n,o),a=e.schema.getNonEmptyElements();do{if(3===n.nodeType&&0!==Yt.trim(n.nodeValue).length)retur
 n void(r?t.setStart(n,0):t.setEnd(n,n.nodeValue.length));if(a[n.nodeName]&&!/^(TD|TH)$/.test(n.nodeName))return void(r?t.setStartBefore(n):"BR"===n.nodeName?t.setEndBefore(n):t.setEndAfter(n));if(de.ie&&de.ie<11&&e.isBlock(n)&&e.isEmpty(n))return void(r?t.setStart(n,0):t.setEnd(n,0))}while(n=r?i.next():i.prev());"BODY"===o.nodeName&&(r?t.setStart(o,0):t.setEnd(o,o.childNodes.length))},Jp=function(e){var t=e.selection.getSel();return t&&0<t.rangeCount};function Qp(i){var r,o=[];"onselectionchange"in i.getDoc()||i.on("NodeChange Click MouseUp KeyUp Focus",function(e){var t,n;n={startContainer:(t=i.selection.getRng()).startContainer,startOffset:t.startOffset,endContainer:t.endContainer,endOffset:t.endOffset},"nodechange"!==e.type&&Im(n,r)||i.fire("SelectionChange"),r=n}),i.on("contextmenu",function(){i.fire("SelectionChange")}),i.on("Selecti
 onChange",function(){var e=i.selection.getStart(!0);!e||!de.range&&i.selection.isCollapsed()||Jp(i)&&!function(e){var t,n;if((n=i.$(e).parentsUntil(i.getBody()).add(e)).length===o.length){for(t=n.length;0<=t&&n[t]===o[t];t--);if(-1===t)return o=n,!0}return o=n,!1}(e)&&i.dom.isChildOf(e,i.getBody())&&i.nodeChanged({selectionChange:!0})}),i.on("MouseUp",function(e){!e.isDefaultPrevented()&&Jp(i)&&("IMG"===i.selection.getNode().nodeName?ve.setEditorTimeout(i,function(){i.nodeChanged()}):i.nodeChanged())}),this.nodeChanged=function(e){var t,n,r,o=i.selection;i.initialized&&o&&!i.settings.disable_nodechange&&!i.readonly&&(r=i.getBody(),(t=o.getStart(!0)||r).ownerDocument===i.getDoc()&&i.dom.isChildOf(t,r)||(t=r),n=[],i.dom.getParent(t,function(e){if(e===r)return!0;n.push(e)}),(e=e||{}).element=t,e.parents=n,i.fire("NodeChange",e))}}var Zp,eh,th=function(e)
 {var t,n,r,o;return o=e.getBoundingClientRect(),n=(t=e.ownerDocument).documentElement,r=t.defaultView,{top:o.top+r.pageYOffset-n.clientTop,left:o.left+r.pageXOffset-n.clientLeft}},nh=function(e,t){return n=(u=e).inline?th(u.getBody()):{left:0,top:0},a=(i=e).getBody(),r=i.inline?{left:a.scrollLeft,top:a.scrollTop}:{left:0,top:0},{pageX:(o=function(e,t){if(t.target.ownerDocument!==e.getDoc()){var n=th(e.getContentAreaContainer()),r=(i=(o=e).getBody(),a=o.getDoc().documentElement,u={left:i.scrollLeft,top:i.scrollTop},s={left:i.scrollLeft||a.scrollLeft,top:i.scrollTop||a.scrollTop},o.inline?u:s);return{left:t.pageX-n.left+r.left,top:t.pageY-n.top+r.top}}var o,i,a,u,s;return{left:t.pageX,top:t.pageY}}(e,t)).left-n.left+r.left,pageY:o.top-n.top+r.top};var n,r,o,i,a,u},rh=_o.isContentEditableFalse,oh=_o.isContentEditableTrue,ih=function(e){e&&e.parentNode&&e.parentNode.removeChild(e)},ah=function(u,s){return function(e){if(0===e.button){var t=V(s.dom.getParents(e.target),Ka
 (rh,oh)).getOr(null);if(i=s.getBody(),rh(a=t)&&a!==i){var n=s.dom.getPos(t),r=s.getBody(),o=s.getDoc().documentElement;u.element=t,u.screenX=e.screenX,u.screenY=e.screenY,u.maxX=(s.inline?r.scrollWidth:o.offsetWidth)-2,u.maxY=(s.inline?r.scrollHeight:o.offsetHeight)-2,u.relX=e.pageX-n.x,u.relY=e.pageY-n.y,u.width=t.offsetWidth,u.height=t.offsetHeight,u.ghost=function(e,t,n,r){var o=t.cloneNode(!0);e.dom.setStyles(o,{width:n,height:r}),e.dom.setAttrib(o,"data-mce-selected",null);var i=e.dom.create("div",{"class":"mce-drag-container","data-mce-bogus":"all",unselectable:"on",contenteditable:"false"});return e.dom.setStyles(i,{position:"absolute",opacity:.5,overflow:"hidden",border:0,padding:0,margin:0,width:n,height:r}),e.dom.setStyles(o,{margin:0,boxSizing:"border-box"}),i.appendChild(o),i}(s,t,u.width,u.height)}}var i,a}},uh=function(l,f){return function(e){if(l.dragg
 ing&&(s=(i=f).selection,c=s.getSel().getRangeAt(0).startContainer,a=3===c.nodeType?c.parentNode:c,u=l.element,a!==u&&!i.dom.isChildOf(a,u)&&!rh(a))){var t=(r=l.element,(o=r.cloneNode(!0)).removeAttribute("data-mce-selected"),o),n=f.fire("drop",{targetClone:t,clientX:e.clientX,clientY:e.clientY});n.isDefaultPrevented()||(t=n.targetClone,f.undoManager.transact(function(){ih(l.element),f.insertContent(f.dom.getOuterHTML(t)),f._selectionOverrides.hideFakeCaret()}))}var r,o,i,a,u,s,c;sh(l)}},sh=function(e){e.dragging=!1,e.element=null,ih(e.ghost)},ch=function(e){var t,n,r,o,i,a,p,h,v,u,s,c={};t=gi.DOM,a=document,n=ah(c,e),p=c,h=e,v=ve.throttle(function(e,t){h._selectionOverrides.hideFakeCaret(),h.selection.placeCaretAt(e,t)},0),r=function(e){var t,n,r,o,i,a,u,s,c,l,f,d,m=Math.max(Math.abs(e.screenX-p.screenX),Math.abs(e.screenY-p.screenY));if(p.element&&!p.dragging&&10<m){if(h.fire("dragstart",{target:p.element}).is
 DefaultPrevented())return;p.dragging=!0,h.focus()}if(p.dragging){var g=(f=p,{pageX:(d=nh(h,e)).pageX-f.relX,pageY:d.pageY+5});c=p.ghost,l=h.getBody(),c.parentNode!==l&&l.appendChild(c),t=p.ghost,n=g,r=p.width,o=p.height,i=p.maxX,a=p.maxY,s=u=0,t.style.left=n.pageX+"px",t.style.top=n.pageY+"px",n.pageX+r>i&&(u=n.pageX+r-i),n.pageY+o>a&&(s=n.pageY+o-a),t.style.width=r-u+"px",t.style.height=o-s+"px",v(e.clientX,e.clientY)}},o=uh(c,e),u=c,i=function(){u.dragging&&s.fire("dragend"),sh(u)},(s=e).on("mousedown",n),e.on("mousemove",r),e.on("mouseup",o),t.bind(a,"mousemove",r),t.bind(a,"mouseup",i),e.on("remove",function(){t.unbind(a,"mousemove",r),t.unbind(a,"mouseup",i)})},lh=function(e){var n;ch(e),(n=e).on("drop",function(e){var t="undefined"!=typeof e.clientX?n.getDoc().elementFromPoint(e.clientX,e.cli
 entY):null;(rh(t)||rh(n.dom.getContentEditableParent(t)))&&e.preventDefault()})},fh=function(e){return U(e,function(e,t){return e.concat(function(t){var e=function(e){return $(e,function(e){return(e=La(e)).node=t,e})};if(_o.isElement(t))return e(t.getClientRects());if(_o.isText(t)){var n=t.ownerDocument.createRange();return n.setStart(t,0),n.setEnd(t,t.data.length),e(n.getClientRects())}}(t))},[])};(eh=Zp||(Zp={}))[eh.Up=-1]="Up",eh[eh.Down=1]="Down";var dh=function(o,i,a,e,u,t){var n,s,c=0,l=[],r=function(e){var t,n,r;for(r=fh([e]),-1===o&&(r=r.reverse()),t=0;t<r.length;t++)if(n=r[t],!a(n,s)){if(0<l.length&&i(n,qt.last(l))&&c++,n.line=c,u(n))return!0;l.push(n)}};return(s=qt.last(t.getClientRects()))&&(r(n=t.getNode()),function(e,t,n,r){for(;r=gs(r,e,Oa,t);)if(n(r))return}(o,e,r,n)),l},mh=d(dh,Zp.Up,Fa,za),gh=d(dh,Zp.Down,za,Fa),ph=function(n){return function(e){return t=n,e.line>t;var t}},hh=function(n){return fun
 ction(e){return t=n,e.line===t;var t}},vh=_o.isContentEditableFalse,bh=gs,yh=function(e,t){return Math.abs(e.left-t)},Ch=function(e,t){return Math.abs(e.right-t)},xh=function(e,t){return e>=t.left&&e<=t.right},wh=function(e,o){return qt.reduce(e,function(e,t){var n,r;return n=Math.min(yh(e,o),Ch(e,o)),r=Math.min(yh(t,o),Ch(t,o)),xh(o,t)?t:xh(o,e)?e:r===n&&vh(t.node)?t:r<n?t:e})},Nh=function(e,t,n,r){for(;r=bh(r,e,Oa,t);)if(n(r))return},Eh=function(e,t,n){var r,o,i,a,u,s,c,l=fh(z(ne(e.getElementsByTagName("*")),ts)),f=z(l,function(e){return n>=e.top&&n<=e.bottom});return(r=wh(f,t))&&(r=wh((a=e,c=function(t,e){var n;return n=z(fh([e]),function(e){return!t(e,u)}),s=s.concat(n),0===n.length},(s=[]).push(u=r),Nh(Zp.Up,a,d(c,Fa),u.node),Nh(Zp.Down,a,d(c,za),u.node),s),t))&&ts(r.node)?(i=t,{node:(o=r).node,before:yh(o,i)<Ch(o,i)}):null},Sh=function(i,a,e){return!e.collapsed&&U(e.getClientRects(),function(e,t){retur
 n e||(o=a,(r=i)>=(n=t).left&&r<=n.right&&o>=n.top&&o<=n.bottom);var n,r,o},!1)},kh=_o.isContentEditableTrue,Th=_o.isContentEditableFalse,Ah=function(e,t,n,r,o){return t._selectionOverrides.showCaret(e,n,r,o)},Rh=function(e,t){var n,r;return e.fire("BeforeObjectSelected",{target:t}).isDefaultPrevented()?null:((r=(n=t).ownerDocument.createRange()).selectNode(n),r)},_h=function(e,t,n){var r=ws(1,e.getBody(),t),o=hu.fromRangeStart(r),i=o.getNode();if(Th(i))return Ah(1,e,i,!o.isAtEnd(),!1);var a=o.getNode(!0);if(Th(a))return Ah(1,e,a,!1,!1);var u=e.dom.getParent(o.getNode(),function(e){return Th(e)||kh(e)});return Th(u)?Ah(1,e,u,!1,n):null},Dh=function(e,t,n){if(!t||!t.collapsed)return t;var r=_h(e,t,n);return r||t},Bh=function(t){var e=Di(function(){if(!t.removed&&t.selection.getRng().collapsed){var e=Dh(t,t.selection.getRng(),!1);t.selection.setRng(e)}},0);t.on("focus",function(){e.throttle()}),t.on("blur",functi
 on(){e.cancel()})},Oh={BACKSPACE:8,DELETE:46,DOWN:40,ENTER:13,LEFT:37,RIGHT:39,SPACEBAR:32,TAB:9,UP:38,modifierPressed:function(e){return e.shiftKey||e.ctrlKey||e.altKey||this.metaKeyPressed(e)},metaKeyPressed:function(e){return de.mac?e.metaKey:e.ctrlKey&&!e.altKey}},Ph=_o.isContentEditableTrue,Lh=_o.isContentEditableFalse,Ih=As,Mh=Ts,Fh=function(e,t){for(var n=e.getBody();t&&t!==n;){if(Ph(t)||Lh(t))return t;t=t.parentNode}return null},zh=function(g){var p,e,t,a=g.getBody(),o=Zu(g.getBody(),function(e){return g.dom.isBlock(e)},function(){return ap(g)}),h="sel-"+g.dom.uniqueId(),u=function(e){e&&g.selection.setRng(e)},s=function(){return g.selection.getRng()},v=function(e,t,n,r){return void 0===r&&(r=!0),g.fire("ShowCaret",{target:t,direction:e,before:n}).isDefaultPrevented()?null:(r&&g.selection.scrollIntoView(t,-1===e),o.show(n,t))},b=function(e,t){return t=ws(e,a,t),-1===e?hu.fromRangeStart(t):hu.fromRangeEnd(t)},n=funct
 ion(e){return pa(e)||Ca(e)||xa(e)},y=function(e){return n(e.startContainer)||n(e.endContainer)},c=function(e,t){var n,r,o,i,a,u,s,c,l,f,d=g.$,m=g.dom;if(!e)return null;if(e.collapsed){if(!y(e))if(!1===t){if(c=b(-1,e),ts(c.getNode(!0)))return v(-1,c.getNode(!0),!1,!1);if(ts(c.getNode()))return v(-1,c.getNode(),!c.isAtEnd(),!1)}else{if(c=b(1,e),ts(c.getNode()))return v(1,c.getNode(),!c.isAtEnd(),!1);if(ts(c.getNode(!0)))return v(1,c.getNode(!0),!1,!1)}return null}return i=e.startContainer,a=e.startOffset,u=e.endOffset,3===i.nodeType&&0===a&&Lh(i.parentNode)&&(i=i.parentNode,a=m.nodeIndex(i),i=i.parentNode),1!==i.nodeType?null:(u===a+1&&(n=i.childNodes[a]),Lh(n)?(l=f=n.cloneNode(!0),(s=g.fire("ObjectSelected",{target:n,targetClone:l})).isDefaultPrevented()?null:(r=Ki(rr.fromDom(g.getBody()),"#"+h).fold(function(){return d([])},function(e){return d([e.dom()])}),l=s.targetClone,0===r.length&&(r=d('<div data-mce-bogus="al
 l" class="mce-offscreen-selection"></div>').attr("id",h)).appendTo(g.getBody()),e=g.dom.createRng(),l===f&&de.ie?(r.empty().append('<p style="font-size: 0" data-mce-bogus="all">\xa0</p>').append(l),e.setStartAfter(r[0].firstChild.firstChild),e.setEndAfter(l)):(r.empty().append("\xa0").append(l).append("\xa0"),e.setStart(r[0].firstChild,1),e.setEnd(r[0].lastChild,0)),r.css({top:m.getPos(n,g.getBody()).y}),r[0].focus(),(o=g.selection.getSel()).removeAllRanges(),o.addRange(e),F(Vi(rr.fromDom(g.getBody()),"*[data-mce-selected]"),function(e){yr(e,"data-mce-selected")}),n.setAttribute("data-mce-selected","1"),p=n,C(),e)):null)},l=function(){p&&(p.removeAttribute("data-mce-selected"),Ki(rr.fromDom(g.getBody()),"#"+h).each(Ri),p=null),Ki(rr.fromDom(g.getBody()),"#"+h).each(Ri),p=null},C=function(){o.hide()};return de.ceFa
 lse&&(function(){g.on("mouseup",function(e){var t=s();t.collapsed&&mp(g,e.clientX,e.clientY)&&u(_h(g,t,!1))}),g.on("click",function(e){var t;(t=Fh(g,e.target))&&(Lh(t)&&(e.preventDefault(),g.focus()),Ph(t)&&g.dom.isChildOf(t,g.selection.getNode())&&l())}),g.on("blur NewBlock",function(){l()}),g.on("ResizeWindow FullscreenStateChanged",function(){return o.reposition()});var n,r,i=function(e,t){var n,r,o=g.dom.getParent(e,g.dom.isBlock),i=g.dom.getParent(t,g.dom.isBlock);return!(!o||!g.dom.isChildOf(o,i)||!1!==Lh(Fh(g,o)))||o&&(n=o,r=i,!(g.dom.getParent(n,g.dom.isBlock)===g.dom.getParent(r,g.dom.isBlock)))&&function(e){var t=Gs(e);if(!e.firstChild)return!1;var n=hu.before(e.firstChild),r=t.next(n);return r&&!Mh(r)&&!Ih(r)}(o)};r=!1,(n=g).on("touchstart",function(){r=!1}),n.on("touchmove",function(){r=!0}),n.on("touchend",function
 (e){var t=Fh(n,e.target);Lh(t)&&(r||(e.preventDefault(),c(Rh(n,t))))}),g.on("mousedown",function(e){var t,n=e.target;if((n===a||"HTML"===n.nodeName||g.dom.isChildOf(n,a))&&!1!==mp(g,e.clientX,e.clientY))if(t=Fh(g,n))Lh(t)?(e.preventDefault(),c(Rh(g,t))):(l(),Ph(t)&&e.shiftKey||Sh(e.clientX,e.clientY,g.selection.getRng())||(C(),g.selection.placeCaretAt(e.clientX,e.clientY)));else if(!1===ts(n)){l(),C();var r=Eh(a,e.clientX,e.clientY);if(r&&!i(e.target,r.node)){e.preventDefault();var o=v(1,r.node,r.before,!1);g.getBody().focus(),u(o)}}}),g.on("keypress",function(e){Oh.modifierPressed(e)||(e.keyCode,Lh(g.selection.getNode())&&e.preventDefault())}),g.on("getSelectionRange",function(e){var t=e.range;if(p){if(!p.parentNode)return void(p=null);(t=t.cloneRange()).selectNode(p),e.range=t}}),g.on("setSelectionRange",function(e){var t;(t=c(e.range,e.forward))&&(e.range=t)}),g.on("AfterSetSele
 ctionRange",function(e){var t,n=e.range;y(n)||"mcepastebin"===n.startContainer.parentNode.id||C(),t=n.startContainer.parentNode,g.dom.hasClass(t,"mce-offscreen-selection")||l()}),g.on("copy",function(e){var t,n=e.clipboardData;if(!e.isDefaultPrevented()&&e.clipboardData&&!de.ie){var r=(t=g.dom.get(h))?t.getElementsByTagName("*")[0]:t;r&&(e.preventDefault(),n.clearData(),n.setData("text/html",r.outerHTML),n.setData("text/plain",r.outerText))}}),lh(g),Bh(g)}(),e=g.contentStyles,t=".mce-content-body",e.push(o.getCss()),e.push(t+" .mce-offscreen-selection {position: absolute;left: -9999999999px;max-width: 1000000px;}"+t+" *[contentEditable=false] {cursor: default;}"+t+" *[contentEditable=true] {cursor: text;}")),{showCaret:v,showBlockCaretContainer:function(e){e.hasAttribute("data-mce-caret")&&(wa(e),u(s()),g.selection.scrollIntoView(e[0]))},
 hideFakeCaret:C,destroy:function(){o.destroy(),p=null}}},Uh=function(e,t,n){var r,o,i,a,u=1;for(a=e.getShortEndedElements(),(i=/<([!?\/])?([A-Za-z0-9\-_\:\.]+)((?:\s+[^"\'>]+(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>]*))*|\/|\s+)>/g).lastIndex=r=n;o=i.exec(t);){if(r=i.lastIndex,"/"===o[1])u--;else if(!o[1]){if(o[2]in a)continue;u++}if(0===u)break}return r};function Vh(F,z){void 0===z&&(z=ti());var e=function(){};!1!==(F=F||{}).fix_self_closing&&(F.fix_self_closing=!0);var U=F.comment?F.comment:e,V=F.cdata?F.cdata:e,H=F.text?F.text:e,j=F.start?F.start:e,q=F.end?F.end:e,$=F.pi?F.pi:e,W=F.doctype?F.doctype:e;return{parse:function(e){var t,n,r,d,o,i,a,m,u,s,g,c,p,l,f,h,v,b,y,C,x,w,N,E,S,k,T,A,R,_=0,D=[],B=0,O=qo.decode,P=Yt.makeMap("src,href,data,background,formaction,poster,xlink:href"),L=/((java|vb)script|mhtml):/i,I=function(e){var t,n;for(t=D.length;t--&&D[t].name!==e;);if(0<=t){for(n=D.length-1;t<=n;n--)(e=D[n
 ]).valid&&q(e.name);D.length=t}},M=function(e,t,n,r,o){var i,a,u,s,c;if(n=(t=t.toLowerCase())in g?t:O(n||r||o||""),p&&!m&&0==(0===(u=t).indexOf("data-")||0===u.indexOf("aria-"))){if(!(i=b[t])&&y){for(a=y.length;a--&&!(i=y[a]).pattern.test(t););-1===a&&(i=null)}if(!i)return;if(i.validValues&&!(n in i.validValues))return}if(P[t]&&!F.allow_script_urls){var l=n.replace(/[\s\u0000-\u001F]+/g,"");try{l=decodeURIComponent(l)}catch(f){l=unescape(l)}if(L.test(l))return;if(c=l,!(s=F).allow_html_data_urls&&(/^data:image\//i.test(c)?!1===s.allow_svg_data_urls&&/^data:image\/svg\+xml/i.test(c):/^data:/i.test(c)))return}m&&(t in P||0===t.indexOf("on"))||(d.map[t]=n,d.push({name:t,value:n}))};for(S=new RegExp("<(?:(?:!--([\\w\\W]*?)--\x3e)|(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|(?:!DOCTYPE([\\w\\W]*?)>)|(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>
 )|(?:\\/([A-Za-z][A-Za-z0-9\\-_\\:\\.]*)>)|(?:([A-Za-z][A-Za-z0-9\\-_\\:\\.]*)((?:\\s+[^\"'>]+(?:(?:\"[^\"]*\")|(?:'[^']*')|[^>]*))*|\\/|\\s+)>))","g"),k=/([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:[^\"])*)\")|(?:\'((?:[^\'])*)\')|([^>\s]+)))?/g,s=z.getShortEndedElements(),E=F.self_closing_elements||z.getSelfClosingElements(),g=z.getBoolAttrs(),p=F.validate,u=F.remove_internals,R=F.fix_self_closing,T=z.getSpecialElements(),N=e+">";t=S.exec(N);){if(_<t.index&&H(O(e.substr(_,t.index-_))),n=t[6])":"===(n=n.toLowerCase()).charAt(0)&&(n=n.substr(1)),I(n);else if(n=t[7]){if(t.index+t[0].length>e.length){H(O(e.substr(t.index))),_=t.index+t[0].length;continue}if(":"===(n=n.toLowerCase()).charAt(0)&&(n=n.substr(1)),c=n in s,R&&E[n]&&0<D.length&&D[D.length-1].name===n&&I(n),!p||(l=z.getElementRule(n))){if(f=!0,p&&(b=l.attributes,y=l.at
 tributePatterns),(v=t[8])?((m=-1!==v.indexOf("data-mce-type"))&&u&&(f=!1),(d=[]).map={},v.replace(k,M)):(d=[]).map={},p&&!m){if(C=l.attributesRequired,x=l.attributesDefault,w=l.attributesForced,l.removeEmptyAttrs&&!d.length&&(f=!1),w)for(o=w.length;o--;)a=(h=w[o]).name,"{$uid}"===(A=h.value)&&(A="mce_"+B++),d.map[a]=A,d.push({name:a,value:A});if(x)for(o=x.length;o--;)(a=(h=x[o]).name)in d.map||("{$uid}"===(A=h.value)&&(A="mce_"+B++),d.map[a]=A,d.push({name:a,value:A}));if(C){for(o=C.length;o--&&!(C[o]in d.map););-1===o&&(f=!1)}if(h=d.map["data-mce-bogus"]){if("all"===h){_=Uh(z,e,S.lastIndex),S.lastIndex=_;continue}f=!1}}f&&j(n,d,c)}else f=!1;if(r=T[n]){r.lastIndex=_=t.index+t[0].length,(t=r.exec(e))?(f&&(i=e.substr(_,t.index-_)),_=t.index+t[0].length):(i=e.substr(_),_=e.length),f&&(0<i.length&&H(i,!0),q(n)),S
 .lastIndex=_;continue}c||(v&&v.indexOf("/")===v.length-1?f&&q(n):D.push({name:n,valid:f}))}else(n=t[1])?(">"===n.charAt(0)&&(n=" "+n),F.allow_conditional_comments||"[if"!==n.substr(0,3).toLowerCase()||(n=" "+n),U(n)):(n=t[2])?V(n.replace(/<!--|-->/g,"")):(n=t[3])?W(n):(n=t[4])&&$(n,t[5]);_=t.index+t[0].length}for(_<e.length&&H(O(e.substr(_))),o=D.length-1;0<=o;o--)(n=D[o]).valid&&q(n.name)}}}(Vh||(Vh={})).findEndTag=Uh;var Hh=Vh,jh=function(e,t){var n,r,o,i,a,u,s,c,l=t,f=/<(\w+) [^>]*data-mce-bogus="all"[^>]*>/g,d=e.schema;for(u=e.getTempAttrs(),s=l,c=new RegExp(["\\s?("+u.join("|")+')="[^"]+"'].join("|"),"gi"),l=s.replace(c,""),a=d.getShortEndedElements();i=f.exec(l);)r=f.lastIndex,o=i[0].length,n=a[i[1]]?r:Hh.findEndTag(d,l,r),l=l.substring(0,r-o)+l.substring(n),f.lastIndex=
 r-o;return la(l)},qh={trimExternal:jh,trimInternal:jh},$h=0,Wh=2,Kh=1,Xh=function(g,p){var e=g.length+p.length+2,h=new Array(e),v=new Array(e),c=function(e,t,n,r,o){var i=l(e,t,n,r);if(null===i||i.start===t&&i.diag===t-r||i.end===e&&i.diag===e-n)for(var a=e,u=n;a<t||u<r;)a<t&&u<r&&g[a]===p[u]?(o.push([0,g[a]]),++a,++u):r-n<t-e?(o.push([2,g[a]]),++a):(o.push([1,p[u]]),++u);else{c(e,i.start,n,i.start-i.diag,o);for(var s=i.start;s<i.end;++s)o.push([0,g[s]]);c(i.end,t,i.end-i.diag,r,o)}},b=function(e,t,n,r){for(var o=e;o-t<r&&o<n&&g[o]===p[o-t];)++o;return{start:e,end:o,diag:t}},l=function(e,t,n,r){var o=t-e,i=r-n;if(0===o||0===i)return null;var a,u,s,c,l,f=o-i,d=i+o,m=(d%2==0?d:d+1)/2;for(h[1+m]=e,v[1+m]=t+1,a=0;a<=m;++a){for(u=-a;u<=a;u+=2){for(s=u+m,u===-a||u!==a&&h[s-1]<h[s+1]?h[s]=h[s+1]:h[s]=h[s-1]+1,l=(c=h[s])-e+n-u;c<t&&l<r&&g[c]===p[l];)h[s]=++c,++l;if(f%2!=0&&
 f-a<=u&&u<=f+a&&v[s-f]<=h[s])return b(v[s-f],u+e-n,t,r)}for(u=f-a;u<=f+a;u+=2){for(s=u+m-f,u===f-a||u!==f+a&&v[s+1]<=v[s-1]?v[s]=v[s+1]-1:v[s]=v[s-1],l=(c=v[s]-1)-e+n-u;e<=c&&n<=l&&g[c]===p[l];)v[s]=c--,l--;if(f%2==0&&-a<=u&&u<=a&&v[s]<=h[s+f])return b(v[s],u+e-n,t,r)}}},t=[];return c(0,g.length,0,p.length,t),t},Yh=function(e){return _o.isElement(e)?e.outerHTML:_o.isText(e)?qo.encodeRaw(e.data,!1):_o.isComment(e)?"\x3c!--"+e.data+"--\x3e":""},Gh=function(e,t,n){var r=function(e){var t,n,r;for(r=document.createElement("div"),t=document.createDocumentFragment(),e&&(r.innerHTML=e);n=r.firstChild;)t.appendChild(n);return t}(t);if(e.hasChildNodes()&&n<e.childNodes.length){var o=e.childNodes[n];o.parentNode.insertBefore(r,o)}else e.appendChild(r)},Jh=function(e){return z($(ne(e.childNodes),Yh),function(e){return 0<e.length})},Qh=functi
 on(e,t){var n,r,o,i=$(ne(t.childNodes),Yh);return n=Xh(i,e),r=t,o=0,F(n,function(e){e[0]===$h?o++:e[0]===Kh?(Gh(r,e[1],o),o++):e[0]===Wh&&function(e,t){if(e.hasChildNodes()&&t<e.childNodes.length){var n=e.childNodes[t];n.parentNode.removeChild(n)}}(r,o)}),t},Zh=Bi(A.none()),ev=function(e){return{type:"fragmented",fragments:e,content:"",bookmark:null,beforeBookmark:null}},tv=function(e){return{type:"complete",fragments:null,content:e,bookmark:null,beforeBookmark:null}},nv=function(e){return"fragmented"===e.type?e.fragments.join(""):e.content},rv=function(e){var t=rr.fromTag("body",Zh.get().getOrThunk(function(){var e=document.implementation.createHTMLDocument("undo");return Zh.set(A.some(e)),e}));return aa(t,nv(e)),F(Vi(t,"*[data-mce-bogus]"),_i),t.dom().innerHTML},ov=function(n){var e,t,r;return e=Jh(n.getBody()),-1!==(t=(r=G(e,function(e){var t=qh.trimInternal(n.serializer,e);return 0
 <t.length?[t]:[]})).join("")).indexOf("</iframe>")?ev(r):tv(t)},iv=function(e,t,n){"fragmented"===t.type?Qh(t.fragments,e.getBody()):e.setContent(t.content,{format:"raw"}),e.selection.moveToBookmark(n?t.beforeBookmark:t.bookmark)},av=function(e,t){return!(!e||!t)&&(r=t,nv(e)===nv(r)||(n=t,rv(e)===rv(n)));var n,r};function uv(u){var s,r,o=this,c=0,l=[],t=0,f=function(){return 0===t},i=function(e){f()&&(o.typing=e)},d=function(e){u.setDirty(e)},a=function(e){i(!1),o.add({},e)},n=function(){o.typing&&(i(!1),o.add())};return u.on("init",function(){o.add()}),u.on("BeforeExecCommand",function(e){var t=e.command;"Undo"!==t&&"Redo"!==t&&"mceRepaint"!==t&&(n(),o.beforeChange())}),u.on("ExecCommand",function(e){var t=e.command;"Undo"!==t&&"Redo"!==t&&"mceRepaint"!==t&&a(e)}),u.on(&quot
 ;ObjectResizeStart Cut",function(){o.beforeChange()}),u.on("SaveContent ObjectResized blur",a),u.on("DragEnd",a),u.on("KeyUp",function(e){var t=e.keyCode;e.isDefaultPrevented()||((33<=t&&t<=36||37<=t&&t<=40||45===t||e.ctrlKey)&&(a(),u.nodeChanged()),46!==t&&8!==t||u.nodeChanged(),r&&o.typing&&!1===av(ov(u),l[0])&&(!1===u.isDirty()&&(d(!0),u.fire("change",{level:l[0],lastLevel:null})),u.fire("TypingUndo"),r=!1,u.nodeChanged()))}),u.on("KeyDown",function(e){var t=e.keyCode;if(!e.isDefaultPrevented())if(33<=t&&t<=36||37<=t&&t<=40||45===t)o.typing&&a(e);else{var n=e.ctrlKey&&!e.altKey||e.metaKey;!(t<16||20<t)||224===t||91===t||o.typing||n||(o.beforeChange(),i(!0),o.add({},e),r=!0)}}),u.on("MouseDown",function(e){o.typing&&a(e)}),u.on("input",function(e){var t;e.inputType&
 amp;&("insertReplacementText"===e.inputType||"insertText"===(t=e).inputType&&null===t.data)&&a(e)}),u.addShortcut("meta+z","","Undo"),u.addShortcut("meta+y,meta+shift+z","","Redo"),u.on("AddUndo Undo Redo ClearUndos",function(e){e.isDefaultPrevented()||u.nodeChanged()}),o={data:l,typing:!1,beforeChange:function(){f()&&(s=Iu.getUndoBookmark(u.selection))},add:function(e,t){var n,r,o,i=u.settings;if(o=ov(u),e=e||{},e=Yt.extend(e,o),!1===f()||u.removed)return null;if(r=l[c],u.fire("BeforeAddUndo",{level:e,lastLevel:r,originalEvent:t}).isDefaultPrevented())return null;if(r&&av(r,e))return null;if(l[c]&&(l[c].beforeBookmark=s),i.custom_undo_redo_levels&&l.length>i.custom_undo_redo_levels){for(n=0;n<l.length-1;n++)l[n]=l[n+1];l.length--,c=l.length}e.bookmark=Iu.getUndoBookmark(u.selection),c<l.length-1&&(l.length=c+1),l.pu
 sh(e),c=l.length-1;var a={level:e,lastLevel:r,originalEvent:t};return u.fire("AddUndo",a),0<c&&(d(!0),u.fire("change",a)),e},undo:function(){var e;return o.typing&&(o.add(),o.typing=!1,i(!1)),0<c&&(e=l[--c],iv(u,e,!0),d(!0),u.fire("undo",{level:e})),e},redo:function(){var e;return c<l.length-1&&(e=l[++c],iv(u,e,!1),d(!0),u.fire("redo",{level:e})),e},clear:function(){l=[],c=0,o.typing=!1,o.data=l,u.fire("ClearUndos")},hasUndo:function(){return 0<c||o.typing&&l[0]&&!av(ov(u),l[0])},hasRedo:function(){return c<l.length-1&&!o.typing},transact:function(e){return n(),o.beforeChange(),o.ignore(e),o.add()},ignore:function(e){try{t++,e()}finally{t--}},extra:function(e,t){var n,r;o.transact(e)&&(r=l[c].bookmark,n=l[c-1],iv(u,n,!0),o.transact(t)&&(l[c-1].beforeBookmark=r))}}}var sv,cv,lv=yc.isEq,fv=function(e,t,n){var r=e.formatter.get(n);if(r)for(var o=0;o&l
 t;r.length;o++)if(!1===r[o].inherit&&e.dom.is(t,r[o].selector))return!0;return!1},dv=function(t,e,n,r){var o=t.dom.getRoot();return e!==o&&(e=t.dom.getParent(e,function(e){return!!fv(t,e,n)||e.parentNode===o||!!pv(t,e,n,r,!0)}),pv(t,e,n,r))},mv=function(e,t,n){return!!lv(t,n.inline)||!!lv(t,n.block)||(n.selector?1===t.nodeType&&e.is(t,n.selector):void 0)},gv=function(e,t,n,r,o,i){var a,u,s,c=n[r];if(n.onmatch)return n.onmatch(t,n,r);if(c)if("undefined"==typeof c.length){for(a in c)if(c.hasOwnProperty(a)){if(u="attributes"===r?e.getAttrib(t,a):yc.getStyle(e,t,a),o&&!u&&!n.exact)return;if((!o||n.exact)&&!lv(u,yc.normalizeStyleValue(e,yc.replaceVars(c[a],i),a)))return}}else for(s=0;s<c.length;s++)if("attributes"===r?e.getAttrib(t,c[s]):yc.getStyle(e,t,c[s]))return n;return n},pv=function(e,t,n,r,o){var i,a,u,s,c=e.formatter.get(n),l=e.dom;if(c&&t)for(a=0;a<c.length;a++)if(i=c[a],mv(e.dom,t,i)&am
 p;&gv(l,t,i,"attributes",o,r)&&gv(l,t,i,"styles",o,r)){if(s=i.classes)for(u=0;u<s.length;u++)if(!e.dom.hasClass(t,s[u]))return;return i}},hv={matchNode:pv,matchName:mv,match:function(e,t,n,r){var o;return r?dv(e,r,t,n):(r=e.selection.getNode(),!!dv(e,r,t,n)||!((o=e.selection.getStart())===r||!dv(e,o,t,n)))},matchAll:function(r,o,i){var e,a=[],u={};return e=r.selection.getStart(),r.dom.getParent(e,function(e){var t,n;for(t=0;t<o.length;t++)n=o[t],!u[n]&&pv(r,e,n,i)&&(u[n]=!0,a.push(n))},r.dom.getRoot()),a},canApply:function(e,t){var n,r,o,i,a,u=e.formatter.get(t),s=e.dom;if(u)for(n=e.selection.getStart(),r=yc.getParents(s,n),i=u.length-1;0<=i;i--){if(!(a=u[i].selector)||u[i].defaultBlock)return!0;for(o=r.length-1;0<=o;o--)if(s.is(r[o],a))return!0}return!1},matchesUnInheritedFormatSelector:fv},vv=function(e,t){return e.splitText(t)},bv=function(e){var t=e.startContainer,n=e.startOffset,r=e.endContainer,o=e.endOffset;return t=
 ==r&&_o.isText(t)?0<n&&n<t.nodeValue.length&&(t=(r=vv(t,n)).previousSibling,n<o?(t=r=vv(r,o-=n).previousSibling,o=r.nodeValue.length,n=0):o=0):(_o.isText(t)&&0<n&&n<t.nodeValue.length&&(t=vv(t,n),n=0),_o.isText(r)&&0<o&&o<r.nodeValue.length&&(o=(r=vv(r,o).previousSibling).nodeValue.length)),{startContainer:t,startOffset:n,endContainer:r,endOffset:o}},yv=ca,Cv="_mce_caret",xv=function(e){return 0<function(e){for(var t=[];e;){if(3===e.nodeType&&e.nodeValue!==yv||1<e.childNodes.length)return[];1===e.nodeType&&t.push(e),e=e.firstChild}return t}(e).length},wv=function(e){var t;if(e)for(e=(t=new ro(e,e)).current();e;e=t.next())if(3===e.nodeType)return e;return null},Nv=function(e){var t=rr.fromTag("span");return vr(t,{id:Cv,"data-mce-bogus":"1","data-mce-type":"format-caret"}),e&&ki(t,rr.fromText(yv)),t},Ev=f
 unction(e,t,n){void 0===n&&(n=!0);var r,o=e.dom,i=e.selection;if(xv(t))Tf(e,!1,rr.fromDom(t),n);else{var a=i.getRng(),u=o.getParent(t,o.isBlock),s=((r=wv(t))&&r.nodeValue.charAt(0)===yv&&r.deleteData(0,1),r);a.startContainer===s&&0<a.startOffset&&a.setStart(s,a.startOffset-1),a.endContainer===s&&0<a.endOffset&&a.setEnd(s,a.endOffset-1),o.remove(t,!0),u&&o.isEmpty(u)&&Zc(rr.fromDom(u)),i.setRng(a)}},Sv=function(e,t,n){void 0===n&&(n=!0);var r=e.dom,o=e.selection;if(t)Ev(e,t,n);else if(!(t=zu(e.getBody(),o.getStart())))for(;t=r.get(Cv);)Ev(e,t,!1)},kv=function(e,t,n){var r=e.dom,o=r.getParent(n,d(yc.isTextBlock,e));o&&r.isEmpty(o)?n.parentNode.replaceChild(t,n):(Qc(rr.fromDom(n)),r.isEmpty(n)?n.parentNode.replaceChild(t,n):r.insertAfter(t,n))},Tv=function(e,t){return e.appendChild(t),t},Av=function(e,t){var n,r,o=(n=function(e,t){return Tv(e,t.cloneNode(!1))},r=t,function(e,t){for(var n=e.len
 gth-1;0<=n;n--)t(e[n],n,e)}(e,function(e){r=n(r,e)}),r);return Tv(o,o.ownerDocument.createTextNode(yv))},Rv=function(i){i.on("mouseup keydown",function(e){var t,n,r,o;t=i,n=e.keyCode,r=t.selection,o=t.getBody(),Sv(t,null,!1),8!==n&&46!==n||!r.isCollapsed()||r.getStart().innerHTML!==yv||Sv(t,zu(o,r.getStart())),37!==n&&39!==n||Sv(t,zu(o,r.getStart()))})},_v=function(e,t){return e.schema.getTextInlineElements().hasOwnProperty(ur(t))&&!Fu(t.dom())&&!_o.isBogus(t.dom())},Dv={},Bv=qt.filter,Ov=qt.each;cv=function(e){var t,n,r=e.selection.getRng();t=_o.matchNodeNames("pre"),r.collapsed||(n=e.selection.getSelectedBlocks(),Ov(Bv(Bv(n,t),function(e){return t(e.previousSibling)&&-1!==qt.indexOf(n,e.previousSibling)}),function(e){var t,n;t=e.previousSibling,pn(n=e).remove(),pn(t).append("<br><br>").append(n.childNodes)}))},Dv[sv="pre"]||(Dv[sv]=[]),Dv[sv].push(cv);var Pv=function(e,t){Ov(Dv[e],functi
 on(e){e(t)})},Lv=/^(src|href|style)$/,Iv=Yt.each,Mv=yc.isEq,Fv=function(e,t,n){return e.isChildOf(t,n)&&t!==n&&!e.isBlock(n)},zv=function(e,t,n){var r,o,i;return r=t[n?"startContainer":"endContainer"],o=t[n?"startOffset":"endOffset"],_o.isElement(r)&&(i=r.childNodes.length-1,!n&&o&&o--,r=r.childNodes[i<o?i:o]),_o.isText(r)&&n&&o>=r.nodeValue.length&&(r=new ro(r,e.getBody()).next()||r),_o.isText(r)&&!n&&0===o&&(r=new ro(r,e.getBody()).prev()||r),r},Uv=function(e,t,n,r){var o=e.create(n,r);return t.parentNode.insertBefore(o,t),o.appendChild(t),o},Vv=function(e,t,n,r,o){var i=rr.fromDom(t),a=rr.fromDom(e.create(r,o)),u=n?Ur(i):zr(i);return Ti(a,u),n?(Ni(i,a),Si(a,i)):(Ei(i,a),ki(a,i)),a.dom()},Hv=function(e,t,n,r){return!(t=yc.getNonWhiteSpaceSibling(t,n,r))||"BR"===t.nodeName||e.isBlock(t)},jv=function(e,n,r,o,i){var t,a,u,s,c,l,f,d,m,g,p,h,v,
 b,y=e.dom;if(c=y,!(Mv(l=o,(f=n).inline)||Mv(l,f.block)||(f.selector?_o.isElement(l)&&c.is(l,f.selector):void 0)||(s=o,n.links&&"A"===s.tagName)))return!1;if("all"!==n.remove)for(Iv(n.styles,function(e,t){e=yc.normalizeStyleValue(y,yc.replaceVars(e,r),t),"number"==typeof t&&(t=e,i=0),(n.remove_similar||!i||Mv(yc.getStyle(y,i,t),e))&&y.setStyle(o,t,""),u=1}),u&&""===y.getAttrib(o,"style")&&(o.removeAttribute("style"),o.removeAttribute("data-mce-style")),Iv(n.attributes,function(e,t){var n;if(e=yc.replaceVars(e,r),"number"==typeof t&&(t=e,i=0),!i||Mv(y.getAttrib(i,t),e)){if("class"===t&&(e=y.getAttrib(o,t))&&(n="",Iv(e.split(/\s+/),function(e){/mce\-\w+/.test(e)&&(n+=(n?" ":"")+e)}),n))return void y.setAttrib(o,t,n);"class"===t&&o.removeAttribute("className
 "),Lv.test(t)&&o.removeAttribute("data-mce-"+t),o.removeAttribute(t)}}),Iv(n.classes,function(e){e=yc.replaceVars(e,r),i&&!y.hasClass(i,e)||y.removeClass(o,e)}),a=y.getAttribs(o),t=0;t<a.length;t++){var C=a[t].nodeName;if(0!==C.indexOf("_")&&0!==C.indexOf("data-"))return!1}return"none"!==n.remove?(d=e,g=n,h=(m=o).parentNode,v=d.dom,b=d.settings.forced_root_block,g.block&&(b?h===v.getRoot()&&(g.list_block&&Mv(m,g.list_block)||Iv(Yt.grep(m.childNodes),function(e){yc.isValid(d,b,e.nodeName.toLowerCase())?p?p.appendChild(e):(p=Uv(v,e,b),v.setAttribs(p,d.settings.forced_root_block_attrs)):p=0})):v.isBlock(m)&&!v.isBlock(h)&&(Hv(v,m,!1)||Hv(v,m.firstChild,!0,1)||m.insertBefore(v.create("br"),m.firstChild),Hv(v,m,!0)||Hv(v,m.lastChild,!1,1)||m.appendChild(v.create("br")))),g.selector&&g.inline&&!Mv(g.inline,m)||v.remove(m,1),!0):void 0},qv=jv,$
 v=function(s,c,l,e,f){var t,n,d=s.formatter.get(c),m=d[0],a=!0,u=s.dom,r=s.selection,i=function(e){var n,t,r,o,i,a,u=(n=s,t=e,r=c,o=l,i=f,Iv(yc.getParents(n.dom,t.parentNode).reverse(),function(e){var t;a||"_start"===e.id||"_end"===e.id||(t=hv.matchNode(n,e,r,o,i))&&!1!==t.split&&(a=e)}),a);return function(e,t,n,r,o,i,a,u){var s,c,l,f,d,m,g=e.dom;if(n){for(m=n.parentNode,s=r.parentNode;s&&s!==m;s=s.parentNode){for(c=g.clone(s,!1),d=0;d<t.length;d++)if(jv(e,t[d],u,c,c)){c=0;break}c&&(l&&c.appendChild(l),f||(f=c),l=c)}!i||a.mixed&&g.isBlock(n)||(r=g.split(n,r)),l&&(o.parentNode.insertBefore(l,o),f.appendChild(o))}return r}(s,d,u,e,e,!0,m,l)},g=function(e){var t,n,r,o,i;if(_o.isElement(e)&&u.getContentEditable(e)&&(o=a,a="true"===u.getContentEditable(e),i=!0),t=Yt.grep(e.childNodes),a&&!i)for(n=0,r=d.length;n<r&&!jv(s,d[n],l,e,e);n++);if(m.deep&&t.length){
 for(n=0,r=t.length;n<r;n++)g(t[n]);i&&(a=o)}},p=function(e){var t,n=u.get(e?"_start":"_end"),r=n[e?"firstChild":"lastChild"];return pc(t=r)&&_o.isElement(t)&&("_start"===t.id||"_end"===t.id)&&(r=r[e?"firstChild":"lastChild"]),_o.isText(r)&&0===r.data.length&&(r=e?n.previousSibling||n.nextSibling:n.nextSibling||n.previousSibling),u.remove(n,!0),r},o=function(e){var t,n,r=e.commonAncestorContainer;if(e=Dc(s,e,d,!0),m.split){if(e=bv(e),(t=zv(s,e,!0))!==(n=zv(s,e))){if(/^(TR|TH|TD)$/.test(t.nodeName)&&t.firstChild&&(t="TR"===t.nodeName?t.firstChild.firstChild||t:t.firstChild||t),r&&/^T(HEAD|BODY|FOOT|R)$/.test(r.nodeName)&&/^(TH|TD)$/.test(n.nodeName)&&n.firstChild&&(n=n.firstChild||n),Fv(u,t,n)){var o=A.from(t.firstChild).getOr(t);return i(Vv(u,o,!0,"span",{id:"_start","data-
 mce-type":"bookmark"})),void p(!0)}if(Fv(u,n,t))return o=A.from(n.lastChild).getOr(n),i(Vv(u,o,!1,"span",{id:"_end","data-mce-type":"bookmark"})),void p(!1);t=Uv(u,t,"span",{id:"_start","data-mce-type":"bookmark"}),n=Uv(u,n,"span",{id:"_end","data-mce-type":"bookmark"}),i(t),i(n),t=p(!0),n=p()}else t=n=i(t);e.startContainer=t.parentNode?t.parentNode:t,e.startOffset=u.nodeIndex(t),e.endContainer=n.parentNode?n.parentNode:n,e.endOffset=u.nodeIndex(n)+1}Oc(u,e,function(e){Iv(e,function(e){g(e),_o.isElement(e)&&"underline"===s.dom.getStyle(e,"text-decoration")&&e.parentNode&&"underline"===yc.getTextDecoration(u,e.parentNode)&&jv(s,{deep:!1,exact:!0,inline:"span",styles:{textDecoration:"underline"}},null,e)})})};if(e)e.nodeType?((n=u.createRng()).setStartBefore(e),n.setEndAf
 ter(e),o(n)):o(e);else if("false"!==u.getContentEditable(r.getNode()))r.isCollapsed()&&m.inline&&!u.select("td[data-mce-selected],th[data-mce-selected]").length?function(e,t,n,r){var o,i,a,u,s,c,l,f=e.dom,d=e.selection,m=[],g=d.getRng();for(o=g.startContainer,i=g.startOffset,3===(s=o).nodeType&&(i!==o.nodeValue.length&&(u=!0),s=s.parentNode);s;){if(hv.matchNode(e,s,t,n,r)){c=s;break}s.nextSibling&&(u=!0),m.push(s),s=s.parentNode}if(c)if(u){a=d.getBookmark(),g.collapse(!0);var p=Dc(e,g,e.formatter.get(t),!0);p=bv(p),e.formatter.remove(t,n,p),d.moveToBookmark(a)}else{l=zu(e.getBody(),c);var h=Nv(!1).dom(),v=Av(m,h);kv(e,h,l||c),Ev(e,l,!1),d.setCursorLocation(v,1),f.isEmpty(c)&&f.remove(c)}}(s,c,l,f):(t=Iu.getPersistentBookmark(s.selection,!0),o(r.getRng()),r.moveToBookmark(t),m.inline&&hv.match(s,c,l,r.getStart())&&yc.moveStart(u,r,r.getRng()),s.nodeChanged());else{e=r.getNode();for(var h=0,v=d.length;
 h<v&&(!d[h].ceFalseOverride||!jv(s,d[h],l,e,e));h++);}},Wv=Yt.each,Kv=function(e){return e&&1===e.nodeType&&!pc(e)&&!Fu(e)&&!_o.isBogus(e)},Xv=function(e,t){var n;for(n=e;n;n=n[t]){if(3===n.nodeType&&0!==n.nodeValue.length)return e;if(1===n.nodeType&&!pc(n))return n}return e},Yv=function(e,t,n){var r,o,i=new Jc(e);if(t&&n&&(t=Xv(t,"previousSibling"),n=Xv(n,"nextSibling"),i.compare(t,n))){for(r=t.nextSibling;r&&r!==n;)r=(o=r).nextSibling,t.appendChild(o);return e.remove(n),Yt.each(Yt.grep(n.childNodes),function(e){t.appendChild(e)}),t}return n},Gv=function(e,t,n){Wv(e.childNodes,function(e){Kv(e)&&(t(e)&&n(e),e.hasChildNodes()&&Gv(e,t,n))})},Jv=function(n,e){return d(function(e,t){return!(!t||!yc.getStyle(n,t,e))},e)},Qv=function(r,e,t){return d(function(e,t,n){r.setStyle(n,e,t),""===n.getAttribute("style")&&n.removeAttribute(&quot
 ;style"),Zv(r,n)},e,t)},Zv=function(e,t){"SPAN"===t.nodeName&&0===e.getAttribs(t).length&&e.remove(t,!0)},eb=function(e,t){var n;1===t.nodeType&&t.parentNode&&1===t.parentNode.nodeType&&(n=yc.getTextDecoration(e,t.parentNode),e.getStyle(t,"color")&&n?e.setStyle(t,"text-decoration",n):e.getStyle(t,"text-decoration")===n&&e.setStyle(t,"text-decoration",null))},tb=function(n,e,r,o){Wv(e,function(t){Wv(n.dom.select(t.inline,o),function(e){Kv(e)&&qv(n,t,r,e,t.exact?e:null)}),function(r,e,t){if(e.clear_child_styles){var n=e.links?"*:not(a)":"*";Wv(r.select(n,t),function(n){Kv(n)&&Wv(e.styles,function(e,t){r.setStyle(n,t,"")})})}}(n.dom,t,o)})},nb=function(e,t,n,r){(t.styles.color||t.styles.textDecoration)&&(Yt.walk(r,d(eb,e),"childNodes"),eb(e,r))},rb=function(e,t,n,r){t.styles&&t.styles.backgroundColor&&
 amp;Gv(r,Jv(e,"fontSize"),Qv(e,"backgroundColor",yc.replaceVars(t.styles.backgroundColor,n)))},ob=function(e,t,n,r){"sub"!==t.inline&&"sup"!==t.inline||(Gv(r,Jv(e,"fontSize"),Qv(e,"fontSize","")),e.remove(e.select("sup"===t.inline?"sub":"sup",r),!0))},ib=function(e,t,n,r){r&&!1!==t.merge_siblings&&(r=Yv(e,yc.getNonWhiteSpaceSibling(r),r),r=Yv(e,r,yc.getNonWhiteSpaceSibling(r,!0)))},ab=function(t,n,r,o,i){hv.matchNode(t,i.parentNode,r,o)&&qv(t,n,o,i)||n.merge_with_parents&&t.dom.getParent(i.parentNode,function(e){if(hv.matchNode(t,e,r,o))return qv(t,n,o,i),!0})},ub=Yt.each,sb=function(g,p,h,r){var e,t,v=g.formatter.get(p),b=v[0],o=!r&&g.selection.isCollapsed(),i=g.dom,n=g.selection,y=function(n,e){if(e=e||b,n){if(e.onformat&&e.onformat(n,e,h,r),ub(e.styles,function(e,t){i.setStyle(n,t,yc.replaceVars(e,h))}),e.styles){var t=i.getAt
 trib(n,"style");t&&n.setAttribute("data-mce-style",t)}ub(e.attributes,function(e,t){i.setAttrib(n,t,yc.replaceVars(e,h))}),ub(e.classes,function(e){e=yc.replaceVars(e,h),i.hasClass(n,e)||i.addClass(n,e)})}},C=function(e,t){var n=!1;return!!b.selector&&(ub(e,function(e){if(!("collapsed"in e&&e.collapsed!==o))return i.is(t,e.selector)&&!Fu(t)?(y(t,e),!(n=!0)):void 0}),n)},a=function(s,e,t,c){var l,f,d=[],m=!0;l=b.inline||b.block,f=s.create(l),y(f),Oc(s,e,function(e){var a,u=function(e){var t,n,r,o;if(o=m,t=e.nodeName.toLowerCase(),n=e.parentNode.nodeName.toLowerCase(),1===e.nodeType&&s.getContentEditable(e)&&(o=m,m="true"===s.getContentEditable(e),r=!0),yc.isEq(t,"br"))return a=0,void(b.block&&s.remove(e));if(b.wrapper&&hv.matchNode(g,e,p,h))a=0;else{if(m&&!r&&b.block&&!b.wrapper&&yc.isTextBlock(g,t)&&yc.isValid(g,n,l))return e=s.ren
 ame(e,l),y(e),d.push(e),void(a=0);if(b.selector){var i=C(v,e);if(!b.inline||i)return void(a=0)}!m||r||!yc.isValid(g,l,t)||!yc.isValid(g,n,l)||!c&&3===e.nodeType&&1===e.nodeValue.length&&65279===e.nodeValue.charCodeAt(0)||Fu(e)||b.inline&&s.isBlock(e)?(a=0,ub(Yt.grep(e.childNodes),u),r&&(m=o),a=0):(a||(a=s.clone(f,!1),e.parentNode.insertBefore(a,e),d.push(a)),a.appendChild(e))}};ub(e,u)}),!0===b.links&&ub(d,function(e){var t=function(e){"A"===e.nodeName&&y(e,b),ub(Yt.grep(e.childNodes),t)};t(e)}),ub(d,function(e){var t,n,r,o,i,a=function(e){var n=!1;return ub(e.childNodes,function(e){if((t=e)&&1===t.nodeType&&!pc(t)&&!Fu(t)&&!_o.isBogus(t))return n=e,!1;var t}),n};n=0,ub(e.childNodes,function(e){yc.isWhiteSpaceNode(e)||pc(e)||n++}),t=n,!(1<d.length)&&s.isBlock(e)||0!==t?(b.inline||b.wrapper)&&(b.exact||1!==t||((o=a(r=e))&&!pc(o)&&hv.matchName(s,o,b)&amp
 ;&(i=s.clone(o,!1),y(i),s.replace(i,r,!0),s.remove(o,1)),e=i||r),tb(g,v,h,e),ab(g,b,p,h,e),rb(s,b,h,e),ob(s,b,h,e),ib(s,b,h,e)):s.remove(e,1)})};if("false"!==i.getContentEditable(n.getNode())){if(b){if(r)r.nodeType?C(v,r)||((t=i.createRng()).setStartBefore(r),t.setEndAfter(r),a(i,Dc(g,t,v),0,!0)):a(i,r,0,!0);else if(o&&b.inline&&!i.select("td[data-mce-selected],th[data-mce-selected]").length)!function(e,t,n){var r,o,i,a,u,s,c=e.selection;a=(r=c.getRng(!0)).startOffset,s=r.startContainer.nodeValue,(o=zu(e.getBody(),c.getStart()))&&(i=wv(o));var l,f,d=/[^\s\u00a0\u00ad\u200b\ufeff]/;s&&0<a&&a<s.length&&d.test(s.charAt(a))&&d.test(s.charAt(a-1))?(u=c.getBookmark(),r.collapse(!0),r=Dc(e,r,e.formatter.get(t)),r=bv(r),e.formatter.apply(t,n,r),c.moveToBookmark(u)):(o&&i.nodeValue===yv||(l=e.getDoc(),f=Nv(!0).dom(),i=(o=l.importNode(f,!0)).firstChild,r.insertNode(o),a=1),e.formatter.apply(t,n,o),c.
 setCursorLocation(i,a))}(g,p,h);else{var u=g.selection.getNode();g.settings.forced_root_block||!v[0].defaultBlock||i.getParent(u,i.isBlock)||sb(g,v[0].defaultBlock),g.selection.setRng(il(g.selection.getRng())),e=Iu.getPersistentBookmark(g.selection,!0),a(i,Dc(g,n.getRng(),v)),b.styles&&nb(i,b,h,u),n.moveToBookmark(e),yc.moveStart(i,n,n.getRng()),g.nodeChanged()}Pv(p,g)}}else{r=n.getNode();for(var s=0,c=v.length;s<c;s++)if(v[s].ceFalseOverride&&i.is(r,v[s].selector))return void y(r,v[s])}},cb={applyFormat:sb},lb=Yt.each,fb=function(e,t,n,r,o){var i,a,u,s,c,l,f,d;null===t.get()&&(a=e,u={},(i=t).set({}),a.on("NodeChange",function(n){var r=yc.getParents(a.dom,n.element),o={};r=Yt.grep(r,function(e){return 1===e.nodeType&&!e.getAttribute("data-mce-bogus")}),lb(i.get(),function(e,n){lb(r,function(t){return a.formatter.matchNode(t,n,{},e.similar)?(u[n]||(lb(e,function(e){e(!0,{node:t,format:n,parents:r})}),u[n]=e),o[n]=e,!1):!hv.matche
 sUnInheritedFormatSelector(a,t,n)&&void 0})}),lb(u,function(e,t){o[t]||(delete u[t],lb(e,function(e){e(!1,{node:n.element,format:t,parents:r})}))})})),c=n,l=r,f=o,d=(s=t).get(),lb(c.split(","),function(e){d[e]||(d[e]=[],d[e].similar=f),d[e].push(l)}),s.set(d)},db={get:function(r){var t={valigntop:[{selector:"td,th",styles:{verticalAlign:"top"}}],valignmiddle:[{selector:"td,th",styles:{verticalAlign:"middle"}}],valignbottom:[{selector:"td,th",styles:{verticalAlign:"bottom"}}],alignleft:[{selector:"figure.image",collapsed:!1,classes:"align-left",ceFalseOverride:!0,preview:"font-family font-size"},{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"left"},inherit:!1,preview:!1,defaultBlock:"div"},{selector:"img,table",collapsed:!1,styles:{"float":"left"},preview:"font-family font-size&quo
 t;}],aligncenter:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"center"},inherit:!1,preview:"font-family font-size",defaultBlock:"div"},{selector:"figure.image",collapsed:!1,classes:"align-center",ceFalseOverride:!0,preview:"font-family font-size"},{selector:"img",collapsed:!1,styles:{display:"block",marginLeft:"auto",marginRight:"auto"},preview:!1},{selector:"table",collapsed:!1,styles:{marginLeft:"auto",marginRight:"auto"},preview:"font-family font-size"}],alignright:[{selector:"figure.image",collapsed:!1,classes:"align-right",ceFalseOverride:!0,preview:"font-family font-size"},{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"right"},inherit:!1,preview:"font-family font-size",defaultBlock:"div"},{sele
 ctor:"img,table",collapsed:!1,styles:{"float":"right"},preview:"font-family font-size"}],alignjustify:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"justify"},inherit:!1,defaultBlock:"div",preview:"font-family font-size"}],bold:[{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}},{inline:"b",remove:"all"}],italic:[{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}},{inline:"i",remove:"all"}],underline:[{inline:"span",styles:{textDecoration:"underline"},exact:!0},{inline:"u",remove:"all"}],strikethrough:[{inline:"span",styles:{textDecoration:"line-through"},exact:!0},{inline:"strike",remove:"all"}],forecolor:{inline:"span",st
 yles:{color:"%value"},links:!0,remove_similar:!0,clear_child_styles:!0},hilitecolor:{inline:"span",styles:{backgroundColor:"%value"},links:!0,remove_similar:!0,clear_child_styles:!0},fontname:{inline:"span",toggle:!1,styles:{fontFamily:"%value"},clear_child_styles:!0},fontsize:{inline:"span",toggle:!1,styles:{fontSize:"%value"},clear_child_styles:!0},fontsize_class:{inline:"span",attributes:{"class":"%value"}},blockquote:{block:"blockquote",wrapper:1,remove:"all"},subscript:{inline:"sub"},superscript:{inline:"sup"},code:{inline:"code"},link:{inline:"a",selector:"a",remove:"all",split:!0,deep:!0,onmatch:function(){return!0},onformat:function(n,e,t){Yt.each(t,function(e,t){r.setAttrib(n,t,e)})}},removeformat:[{selector:"b,strong,em,i,font,u,strike,sub,sup,dfn,code,samp,kbd,var,cite,mark,q,del,ins",
 remove:"all",split:!0,expand:!1,block_expand:!0,deep:!0},{selector:"span",attributes:["style","class"],remove:"empty",split:!0,expand:!1,deep:!0},{selector:"*",attributes:["style","class"],split:!1,expand:!1,deep:!0}]};return Yt.each("p h1 h2 h3 h4 h5 h6 div address pre div dt dd samp".split(/\s/),function(e){t[e]={block:e,remove:"all"}}),t}},mb=Yt.each,gb=gi.DOM,pb=function(e,t){var n,o,r,m=t&&t.schema||ti({}),g=function(e){var t,n,r;return o="string"==typeof e?{name:e,classes:[],attrs:{}}:e,t=gb.create(o.name),n=t,(r=o).classes.length&&gb.addClass(n,r.classes.join(" ")),gb.setAttribs(n,r.attrs),t},p=function(n,e,t){var r,o,i,a,u,s,c,l,f=0<e.length&&e[0],d=f&&f.name;if(u=d,s="string"!=typeof(a=n)?a.nodeName.toLowerCase():a,c=m.getElementRule(s),i=!(!(l=c&&c.parentsRequired)||!l.length)&&(u&&-1!==
 Yt.inArray(l,u)?u:l[0]))d===i?(o=e[0],e=e.slice(1)):o=i;else if(f)o=e[0],e=e.slice(1);else if(!t)return n;return o&&(r=g(o)).appendChild(n),t&&(r||(r=gb.create("div")).appendChild(n),Yt.each(t,function(e){var t=g(e);r.insertBefore(t,n)})),p(r,e,o&&o.siblings)};return e&&e.length?(o=e[0],n=g(o),(r=gb.create("div")).appendChild(p(n,e.slice(1),o.siblings)),r):""},hb=function(e){var t,a={classes:[],attrs:{}};return"*"!==(e=a.selector=Yt.trim(e))&&(t=e.replace(/(?:([#\.]|::?)([\w\-]+)|(\[)([^\]]+)\]?)/g,function(e,t,n,r,o){switch(t){case"#":a.attrs.id=n;break;case".":a.classes.push(n);break;case":":-1!==Yt.inArray("checked disabled enabled read-only required".split(" "),n)&&(a.attrs[n]=n)}if("["===r){var i=o.match(/([\w\-]+)(?:\=\"([^\"]+))?/);i&&(a.attrs[i[1]]=i[2])}return""})),a.name=t||"div",a},vb=func
 tion(e){return e&&"string"==typeof e?(e=(e=e.split(/\s*,\s*/)[0]).replace(/\s*(~\+|~|\+|>)\s*/g,"$1"),Yt.map(e.split(/(?:>|\s+(?![^\[\]]+\]))/),function(e){var t=Yt.map(e.split(/(?:~\+|~|\+)/),hb),n=t.pop();return t.length&&(n.siblings=t),n}).reverse()):[]},bb=function(n,e){var t,r,o,i,a,u,s="";if(!1===(u=n.settings.preview_styles))return"";"string"!=typeof u&&(u="font-family font-size font-weight font-style text-decoration text-transform color background-color border border-radius outline text-shadow");var c=function(e){return e.replace(/%(\w+)/g,"")};if("string"==typeof e){if(!(e=n.formatter.get(e)))return;e=e[0]}return"preview"in e&&!1===(u=e.preview)?"":(t=e.block||e.inline||"span",(i=vb(e.selector)).length?(i[0].name||(i[0].name=t),t=e.selector,r=pb(i,n)):r=pb([t],n),o=gb.select(t,r)[0]||r.firstChild,mb(e.styles,function(e,t){(e=c(e
 ))&&gb.setStyle(o,t,e)}),mb(e.attributes,function(e,t){(e=c(e))&&gb.setAttrib(o,t,e)}),mb(e.classes,function(e){e=c(e),gb.hasClass(o,e)||gb.addClass(o,e)}),n.fire("PreviewFormats"),gb.setStyles(r,{position:"absolute",left:-65535}),n.getBody().appendChild(r),a=gb.getStyle(n.getBody(),"fontSize",!0),a=/px$/.test(a)?parseInt(a,10):0,mb(u.split(" "),function(e){var t=gb.getStyle(o,e,!0);if(!("background-color"===e&&/transparent|rgba\s*\([^)]+,\s*0\)/.test(t)&&(t=gb.getStyle(n.getBody(),e,!0),"#ffffff"===gb.toHex(t).toLowerCase())||"color"===e&&"#000000"===gb.toHex(t).toLowerCase())){if("font-size"===e&&/em|%$/.test(t)){if(0===a)return;t=parseFloat(t)/(/%$/.test(t)?100:1)*a+"px"}"border"===e&&t&&(s+="padding:0 2px;"),s+=e+":"+t+";"}}),n.fire("AfterPreviewFormats"),gb.remove(r),
 s)},yb=function(e,t,n,r,o){var i=t.get(n);!hv.match(e,n,r,o)||"toggle"in i[0]&&!i[0].toggle?cb.applyFormat(e,n,r,o):$v(e,n,r,o)},Cb=function(e){e.addShortcut("meta+b","","Bold"),e.addShortcut("meta+i","","Italic"),e.addShortcut("meta+u","","Underline");for(var t=1;t<=6;t++)e.addShortcut("access+"+t,"",["FormatBlock",!1,"h"+t]);e.addShortcut("access+7","",["FormatBlock",!1,"p"]),e.addShortcut("access+8","",["FormatBlock",!1,"div"]),e.addShortcut("access+9","",["FormatBlock",!1,"address"])};function xb(e){var t,n,r,o=(t=e,n={},(r=function(e,t){e&&("string"!=typeof e?Yt.each(e,function(e,t){r(t,e)}):(t=t.length?t:[t],Yt.each(t,function(e){"undefined"==typeof e.deep&&(e.deep=!e.selecto
 r),"undefined"==typeof e.split&&(e.split=!e.selector||e.inline),"undefined"==typeof e.remove&&e.selector&&!e.inline&&(e.remove="none"),e.selector&&e.inline&&(e.mixed=!0,e.block_expand=!0),"string"==typeof e.classes&&(e.classes=e.classes.split(/\s+/))}),n[e]=t))})(db.get(t.dom)),r(t.settings.formats),{get:function(e){return e?n[e]:n},register:r,unregister:function(e){return e&&n[e]&&delete n[e],n}}),i=Bi(null);return Cb(e),Rv(e),{get:o.get,register:o.register,unregister:o.unregister,apply:d(cb.applyFormat,e),remove:d($v,e),toggle:d(yb,e,o),match:d(hv.match,e),matchAll:d(hv.matchAll,e),matchNode:d(hv.matchNode,e),canApply:d(hv.canApply,e),formatChanged:d(fb,e,i),getCssText:d(bb,e)}}var wb,Nb=Object.prototype.hasOwnProperty,Eb=(wb=function(e,t){return t},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(&q
 uot;Can't merge zero objects");for(var n={},r=0;r<e.length;r++){var o=e[r];for(var i in o)Nb.call(o,i)&&(n[i]=wb(n[i],o[i]))}return n}),Sb={register:function(t,s,c){t.addAttributeFilter("data-mce-tabindex",function(e,t){for(var n,r=e.length;r--;)(n=e[r]).attr("tabindex",n.attributes.map["data-mce-tabindex"]),n.attr(t,null)}),t.addAttributeFilter("src,href,style",function(e,t){for(var n,r,o=e.length,i="data-mce-"+t,a=s.url_converter,u=s.url_converter_scope;o--;)(r=(n=e[o]).attributes.map[i])!==undefined?(n.attr(t,0<r.length?r:null),n.attr(i,null)):(r=n.attributes.map[t],"style"===t?r=c.serializeStyle(c.parseStyle(r),n.name):a&&(r=a.call(u,r,t,n.name)),n.attr(t,0<r.length?r:null))}),t.addAttributeFilter("class",function(e){for(var t,n,r=e.length;r--;)(n=(t=e[r]).attr("class"))&&(n=t.attr("class").replace(/(?:^|\s)mce-item-\w+(?!\S)/g,""),t.attr(&quo
 t;class",0<n.length?n:null))}),t.addAttributeFilter("data-mce-type",function(e,t,n){for(var r,o=e.length;o--;)"bookmark"!==(r=e[o]).attributes.map["data-mce-type"]||n.cleanup||r.remove()}),t.addNodeFilter("noscript",function(e){for(var t,n=e.length;n--;)(t=e[n].firstChild)&&(t.value=qo.decode(t.value))}),t.addNodeFilter("script,style",function(e,t){for(var n,r,o,i=e.length,a=function(e){return e.replace(/(<!--\[CDATA\[|\]\]-->)/g,"\n").replace(/^[\r\n]*|[\r\n]*$/g,"").replace(/^\s*((<!--)?(\s*\/\/)?\s*<!\[CDATA\[|(<!--\s*)?\/\*\s*<!\[CDATA\[\s*\*\/|(\/\/)?\s*<!--|\/\*\s*<!--\s*\*\/)\s*[\r\n]*/gi,"").replace(/\s*(\/\*\s*\]\]>\s*\*\/(-->)?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g,"")};i--;)r=(n=e[i]).firstChild?n.firstChild.value:"","script"===t?((o=n.attr("type"))&amp
 ;&n.attr("type","mce-no/type"===o?null:o.replace(/^mce\-/,"")),"xhtml"===s.element_format&&0<r.length&&(n.firstChild.value="// <![CDATA[\n"+a(r)+"\n// ]]>")):"xhtml"===s.element_format&&0<r.length&&(n.firstChild.value="\x3c!--\n"+a(r)+"\n--\x3e")}),t.addNodeFilter("#comment",function(e){for(var t,n=e.length;n--;)0===(t=e[n]).value.indexOf("[CDATA[")?(t.name="#cdata",t.type=4,t.value=t.value.replace(/^\[CDATA\[|\]\]$/g,"")):0===t.value.indexOf("mce:protected ")&&(t.name="#text",t.type=3,t.raw=!0,t.value=unescape(t.value).substr(14))}),t.addNodeFilter("xml:namespace,input",function(e,t){for(var n,r=e.length;r--;)7===(n=e[r]).type?n.remove():1===n.type&&("input"!==t||"type"in n.attributes.map||n.attr("type","text"))}),t.addAtt
 ributeFilter("data-mce-type",function(e){F(e,function(e){"format-caret"===e.attr("data-mce-type")&&(e.isEmpty(t.schema.getNonEmptyElements())?e.remove():e.unwrap())})}),t.addAttributeFilter("data-mce-src,data-mce-href,data-mce-style,data-mce-selected,data-mce-expando,data-mce-type,data-mce-resize",function(e,t){for(var n=e.length;n--;)e[n].attr(t,null)})},trimTrailingBr:function(e){var t,n,r=function(e){return e&&"br"===e.name};r(t=e.lastChild)&&r(n=t.prev)&&(t.remove(),n.remove())}},kb={process:function(e,t,n){return f=n,(l=e)&&l.hasEventListeners("PreProcess")&&!f.no_events?(o=t,i=n,c=(r=e).dom,o=o.cloneNode(!0),(a=document.implementation).createHTMLDocument&&(u=a.createHTMLDocument(""),Yt.each("BODY"===o.nodeName?o.childNodes:[o],function(e){u.body.appendChild(u.importNode(e,!0))}),o="BODY"!==o.nodeName?u.body.firstChild:u.body,s=c.doc,
 c.doc=u),_g(r,Eb(i,{node:o})),s&&(c.doc=s),o):t;var r,o,i,a,u,s,c,l,f}},Tb=function(e,a,u){e.addNodeFilter("font",function(e){F(e,function(e){var t,n=a.parse(e.attr("style")),r=e.attr("color"),o=e.attr("face"),i=e.attr("size");r&&(n.color=r),o&&(n["font-family"]=o),i&&(n["font-size"]=u[parseInt(e.attr("size"),10)-1]),e.name="span",e.attr("style",a.serialize(n)),t=e,F(["color","face","size"],function(e){t.attr(e,null)})})})},Ab=function(e,t){var n,r=ri();t.convert_fonts_to_spans&&Tb(e,r,Yt.explode(t.font_size_legacy_values)),n=r,e.addNodeFilter("strike",function(e){F(e,function(e){var t=n.parse(e.attr("style"));t["text-decoration"]="line-through",e.name="span",e.attr("style",n.serialize(t))})})},Rb={register:function(e,t){t.inline_styles&&Ab(e,t)}},_
 b=/^[ \t\r\n]*$/,Db={"#text":3,"#comment":8,"#cdata":4,"#pi":7,"#doctype":10,"#document-fragment":11},Bb=function(e,t,n){var r,o,i=n?"lastChild":"firstChild",a=n?"prev":"next";if(e[i])return e[i];if(e!==t){if(r=e[a])return r;for(o=e.parent;o&&o!==t;o=o.parent)if(r=o[a])return r}},Ob=function(){function a(e,t){this.name=e,1===(this.type=t)&&(this.attributes=[],this.attributes.map={})}return a.create=function(e,t){var n,r;if(n=new a(e,Db[e]||1),t)for(r in t)n.attr(r,t[r]);return n},a.prototype.replace=function(e){return e.parent&&e.remove(),this.insert(e,this),this.remove(),this},a.prototype.attr=function(e,t){var n,r;if("string"!=typeof e){for(r in e)this.attr(r,e[r]);return this}if(n=this.attributes){if(t!==undefined){if(null===t){if(e in n.map)for(delete n.map[e],r=n.length;r--;)if(n[r].name===e)return n=n.splice(r,1),this;return this}if(e in n.map){
 for(r=n.length;r--;)if(n[r].name===e){n[r].value=t;break}}else n.push({name:e,value:t});return n.map[e]=t,this}return n.map[e]}},a.prototype.clone=function(){var e,t,n,r,o,i=new a(this.name,this.type);if(n=this.attributes){for((o=[]).map={},e=0,t=n.length;e<t;e++)"id"!==(r=n[e]).name&&(o[o.length]={name:r.name,value:r.value},o.map[r.name]=r.value);i.attributes=o}return i.value=this.value,i.shortEnded=this.shortEnded,i},a.prototype.wrap=function(e){return this.parent.insert(e,this),e.append(this),this},a.prototype.unwrap=function(){var e,t;for(e=this.firstChild;e;)t=e.next,this.insert(e,this,!0),e=t;this.remove()},a.prototype.remove=function(){var e=this.parent,t=this.next,n=this.prev;return e&&(e.firstChild===this?(e.firstChild=t)&&(t.prev=null):n.next=t,e.lastChild===this?(e.lastChild=n)&&(n.next=null):t.prev=n,this.parent=this.next=this.prev=null),this},a.prototype.append=function(e){var t;return e.parent&&e.remove(),(t=this.las
 tChild)?((t.next=e).prev=t,this.lastChild=e):this.lastChild=this.firstChild=e,e.parent=this,e},a.prototype.insert=function(e,t,n){var r;return e.parent&&e.remove(),r=t.parent||this,n?(t===r.firstChild?r.firstChild=e:t.prev.next=e,e.prev=t.prev,(e.next=t).prev=e):(t===r.lastChild?r.lastChild=e:t.next.prev=e,e.next=t.next,(e.prev=t).next=e),e.parent=r,e},a.prototype.getAll=function(e){var t,n=[];for(t=this.firstChild;t;t=Bb(t,this))t.name===e&&n.push(t);return n},a.prototype.empty=function(){var e,t,n;if(this.firstChild){for(e=[],n=this.firstChild;n;n=Bb(n,this))e.push(n);for(t=e.length;t--;)(n=e[t]).parent=n.firstChild=n.lastChild=n.next=n.prev=null}return this.firstChild=this.lastChild=null,this},a.prototype.isEmpty=function(e,t,n){var r,o,i=this.firstChild;if(t=t||{},i)do{if(1===i.type){if(i.attributes.map["data-mce-bogus"])continue;if(e[i.name])return!1;for(r=i.attributes.length;r--;)if("name"===(o=i.attributes[r].name)||0===o.indexOf("data
 -mce-bookmark"))return!1}if(8===i.type)return!1;if(3===i.type&&!_b.test(i.value))return!1;if(3===i.type&&i.parent&&t[i.parent.name]&&_b.test(i.value))return!1;if(n&&n(i))return!1}while(i=Bb(i,this));return!0},a.prototype.walk=function(e){return Bb(this,null,e)},a}(),Pb=function(e,t,n,r){(e.padd_empty_with_br||t.insert)&&n[r.name]?r.empty().append(new Ob("br",1)).shortEnded=!0:r.empty().append(new Ob("#text",3)).value="\xa0"},Lb=function(e){return Ib(e,"#text")&&"\xa0"===e.firstChild.value},Ib=function(e,t){return e&&e.firstChild&&e.firstChild===e.lastChild&&e.firstChild.name===t},Mb=function(r,e,t,n){return n.isEmpty(e,t,function(e){return t=e,(n=r.getElementRule(t.name))&&n.paddEmpty;var t,n})},Fb=function(e,t){return e&&(t[e.name]||"br"===e.name)},zb=function(e,p){var h=e.schema;p.remove_trailing_brs&&e.addNodeFilt
 er("br",function(e,t,n){var r,o,i,a,u,s,c,l,f=e.length,d=Yt.extend({},h.getBlockElements()),m=h.getNonEmptyElements(),g=h.getNonEmptyElements();for(d.body=1,r=0;r<f;r++)if(i=(o=e[r]).parent,d[o.parent.name]&&o===i.lastChild){for(u=o.prev;u;){if("span"!==(s=u.name)||"bookmark"!==u.attr("data-mce-type")){if("br"!==s)break;if("br"===s){o=null;break}}u=u.prev}o&&(o.remove(),Mb(h,m,g,i)&&(c=h.getElementRule(i.name))&&(c.removeEmpty?i.remove():c.paddEmpty&&Pb(p,n,d,i)))}else{for(a=o;i&&i.firstChild===a&&i.lastChild===a&&!d[(a=i).name];)i=i.parent;a===i&&!0!==p.padd_empty_with_br&&((l=new Ob("#text",3)).value="\xa0",o.replace(l))}}),e.addAttributeFilter("href",function(e){var t,n,r,o=e.length;if(!p.allow_unsafe_link_target)for(;o--;)"a"===(t=e[o]).name&&"_blank"===t.attr("target")&a
 mp;&t.attr("rel",(n=t.attr("rel"),r=n?Yt.trim(n):"",/\b(noopener)\b/g.test(r)?r:r.split(" ").filter(function(e){return 0<e.length}).concat(["noopener"]).sort().join(" ")))}),p.allow_html_in_named_anchor||e.addAttributeFilter("id,name",function(e){for(var t,n,r,o,i=e.length;i--;)if("a"===(o=e[i]).name&&o.firstChild&&!o.attr("href"))for(r=o.parent,t=o.lastChild;n=t.prev,r.insert(t,o),t=n;);}),p.fix_list_elements&&e.addNodeFilter("ul,ol",function(e){for(var t,n,r=e.length;r--;)if("ul"===(n=(t=e[r]).parent).name||"ol"===n.name)if(t.prev&&"li"===t.prev.name)t.prev.append(t);else{var o=new Ob("li",1);o.attr("style","list-style-type: none"),t.wrap(o)}}),p.validate&&h.getValidClasses()&&e.addAttributeFilter("class",function(e){for(var t,n,r,o,i,a,u,s=e.length,c=h.getVal
 idClasses();s--;){for(n=(t=e[s]).attr("class").split(" "),i="",r=0;r<n.length;r++)o=n[r],u=!1,(a=c["*"])&&a[o]&&(u=!0),a=c[t.name],!u&&a&&a[o]&&(u=!0),u&&(i&&(i+=" "),i+=o);i.length||(i=null),t.attr("class",i)}})},Ub=Yt.makeMap,Vb=Yt.each,Hb=Yt.explode,jb=Yt.extend;function qb(k,T){void 0===T&&(T=ti());var A={},R=[],_={},D={};(k=k||{}).validate=!("validate"in k)||k.validate,k.root_name=k.root_name||"body";var B=function(e){var t,n,r;(n=e.name)in A&&((r=_[n])?r.push(e):_[n]=[e]),t=R.length;for(;t--;)(n=R[t].name)in e.attributes.map&&((r=D[n])?r.push(e):D[n]=[e]);return e},e={schema:T,addAttributeFilter:function(e,n){Vb(Hb(e),function(e){var t;for(t=0;t<R.length;t++)if(R[t].name===e)return void R[t].callbacks.push(n);R.push({name:e,callbacks:[n]})})},getAttributeFilters:function(){return[].concat(R)},addNodeFilter:functio
 n(e,n){Vb(Hb(e),function(e){var t=A[e];t||(A[e]=t=[]),t.push(n)})},getNodeFilters:function(){var e=[];for(var t in A)A.hasOwnProperty(t)&&e.push({name:t,callbacks:A[t]});return e},filterNode:B,parse:function(e,a){var t,n,r,o,i,u,s,c,l,f,d,m=[];a=a||{},_={},D={},l=jb(Ub("script,style,head,html,body,title,meta,param"),T.getBlockElements());var g=T.getNonEmptyElements(),p=T.children,h=k.validate,v="forced_root_block"in a?a.forced_root_block:k.forced_root_block,b=T.getWhiteSpaceElements(),y=/^[ \t\r\n]+/,C=/[ \t\r\n]+$/,x=/[ \t\r\n]+/g,w=/^[ \t\r\n]+$/;f=b.hasOwnProperty(a.context)||b.hasOwnProperty(k.root_name);var N=function(e,t){var n,r=new Ob(e,t);return e in A&&((n=_[e])?n.push(r):_[e]=[r]),r},E=function(e){var t,n,r,o,i=T.getBlockElements();for(t=e.prev;t&&3===t.type;){if(0<(r=t.value.replace(C,"")).length)return void(t.value=r);if(n=t.next){if(3===n.type&&n.value.length){t=t.prev;continue}if(!i[n.name]&&&quo
 t;script"!==n.name&&"style"!==n.name){t=t.prev;continue}}o=t.prev,t.remove(),t=o}};t=Hh({validate:h,allow_script_urls:k.allow_script_urls,allow_conditional_comments:k.allow_conditional_comments,self_closing_elements:function(e){var t,n={};for(t in e)"li"!==t&&"p"!==t&&(n[t]=e[t]);return n}(T.getSelfClosingElements()),cdata:function(e){d.append(N("#cdata",4)).value=e},text:function(e,t){var n;f||(e=e.replace(x," "),Fb(d.lastChild,l)&&(e=e.replace(y,""))),0!==e.length&&((n=N("#text",3)).raw=!!t,d.append(n).value=e)},comment:function(e){d.append(N("#comment",8)).value=e},pi:function(e,t){d.append(N(e,7)).value=t,E(d)},doctype:function(e){d.append(N("#doctype",10)).value=e,E(d)},start:function(e,t,n){var r,o,i,a,u;if(i=h?T.getElementRule(e):{}){for((r=N(i.outputName||e,1)).attributes=t,r.shortEnded=n,d.append(r),(u=p[d.name])&&p[r.name]&&
 !u[r.name]&&m.push(r),o=R.length;o--;)(a=R[o].name)in t.map&&((s=D[a])?s.push(r):D[a]=[r]);l[e]&&E(r),n||(d=r),!f&&b[e]&&(f=!0)}},end:function(e){var t,n,r,o,i;if(n=h?T.getElementRule(e):{}){if(l[e]&&!f){if((t=d.firstChild)&&3===t.type)if(0<(r=t.value.replace(y,"")).length)t.value=r,t=t.next;else for(o=t.next,t.remove(),t=o;t&&3===t.type;)r=t.value,o=t.next,(0===r.length||w.test(r))&&(t.remove(),t=o),t=o;if((t=d.lastChild)&&3===t.type)if(0<(r=t.value.replace(C,"")).length)t.value=r,t=t.prev;else for(o=t.prev,t.remove(),t=o;t&&3===t.type;)r=t.value,o=t.prev,(0===r.length||w.test(r))&&(t.remove(),t=o),t=o}if(f&&b[e]&&(f=!1),n.removeEmpty&&Mb(T,g,b,d)&&!d.attributes.map.name&&!d.attr("id"))return i=d.parent,l[d.name]?d.empty().remove():d.unwrap(),void(d=i);n.paddEmpty&&(Lb(d)||Mb(T,g,b,d))&&Pb(k,a,l,d
 ),d=d.parent}}},T);var S=d=new Ob(a.context||k.root_name,11);if(t.parse(e),h&&m.length&&(a.context?a.invalid=!0:function(e){var t,n,r,o,i,a,u,s,c,l,f,d,m,g,p,h;for(d=Ub("tr,td,th,tbody,thead,tfoot,table"),l=T.getNonEmptyElements(),f=T.getWhiteSpaceElements(),m=T.getTextBlockElements(),g=T.getSpecialElements(),t=0;t<e.length;t++)if((n=e[t]).parent&&!n.fixed)if(m[n.name]&&"li"===n.parent.name){for(p=n.next;p&&m[p.name];)p.name="li",p.fixed=!0,n.parent.insert(p,n.parent),p=p.next;n.unwrap(n)}else{for(o=[n],r=n.parent;r&&!T.isValidChild(r.name,n.name)&&!d[r.name];r=r.parent)o.push(r);if(r&&1<o.length){for(o.reverse(),i=a=B(o[0].clone()),c=0;c<o.length-1;c++){for(T.isValidChild(a.name,o[c].name)?(u=B(o[c].clone()),a.append(u)):u=a,s=o[c].firstChild;s&&s!==o[c+1];)h=s.next,u.append(s),s=h;a=u}Mb(T,l,f,i)?r.insert(n,o[0],!0):(r.insert(i,o[0],!0),r.insert(n,i)),r=o[0],(Mb(T,l,f,r)|
 |Ib(r,"br"))&&r.empty().remove()}else if(n.parent){if("li"===n.name){if((p=n.prev)&&("ul"===p.name||"ul"===p.name)){p.append(n);continue}if((p=n.next)&&("ul"===p.name||"ul"===p.name)){p.insert(n,p.firstChild,!0);continue}n.wrap(B(new Ob("ul",1)));continue}T.isValidChild(n.parent.name,"div")&&T.isValidChild("div",n.name)?n.wrap(B(new Ob("div",1))):g[n.name]?n.empty().remove():n.unwrap()}}}(m)),v&&("body"===S.name||a.isRootContent)&&function(){var e,t,n=S.firstChild,r=function(e){e&&((n=e.firstChild)&&3===n.type&&(n.value=n.value.replace(y,"")),(n=e.lastChild)&&3===n.type&&(n.value=n.value.replace(C,"")))};if(T.isValidChild(S.name,v.toLowerCase())){for(;n;)e=n.next,3===n.type||1===n.type&&"p"!==n.name&&!l[n.name]&&!n.attr("data-mce-
 type")?(t||((t=N(v,1)).attr(k.forced_root_block_attrs),S.insert(t,n)),t.append(n)):(r(t),t=null),n=e;r(t)}}(),!a.invalid){for(c in _){for(s=A[c],i=(n=_[c]).length;i--;)n[i].parent||n.splice(i,1);for(r=0,o=s.length;r<o;r++)s[r](n,c,a)}for(r=0,o=R.length;r<o;r++)if((s=R[r]).name in D){for(i=(n=D[s.name]).length;i--;)n[i].parent||n.splice(i,1);for(i=0,u=s.callbacks.length;i<u;i++)s.callbacks[i](n,s.name,a)}}return S}};return zb(e,k),Rb.register(e,k),e}var $b=function(e,t,n){-1===Yt.inArray(t,n)&&(e.addAttributeFilter(n,function(e,t){for(var n=e.length;n--;)e[n].attr(t,null)}),t.push(n))},Wb=function(e,t,n){var r=la(n.getInner?t.innerHTML:e.getOuterHTML(t));return n.selection||yo(rr.fromDom(t))?r:Yt.trim(r)},Kb=function(e,t,n){var r=n.selection?Eb({forced_root_block:!1},n):n,o=e.parse(t,r);return Sb.trimTrailingBr(o),o},Xb=function(e,t,n,r,o){var i,a,u,s,c=(i=r,rl(t,n).serialize(i));return a=e,s=c,!(u=o).no_events&&a?Dg(a,Eb(u,{content:s})).content:s};funct
 ion Yb(e,t){var a,u,s,c,l,n,r=(a=e,n=["data-mce-selected"],s=(u=t)&&u.dom?u.dom:gi.DOM,c=u&&u.schema?u.schema:ti(a),a.entity_encoding=a.entity_encoding||"named",a.remove_trailing_brs=!("remove_trailing_brs"in a)||a.remove_trailing_brs,l=qb(a,c),Sb.register(l,a,s),{schema:c,addNodeFilter:l.addNodeFilter,addAttributeFilter:l.addAttributeFilter,serialize:function(e,t){var n=Eb({format:"html"},t||{}),r=kb.process(u,e,n),o=Wb(s,r,n),i=Kb(l,o,n);return"tree"===n.format?i:Xb(u,a,c,i,n)},addRules:function(e){c.addValidElements(e)},setRules:function(e){c.setValidElements(e)},addTempAttr:d($b,l,n),getTempAttrs:function(){return n}});return{schema:r.schema,addNodeFilter:r.addNodeFilter,addAttributeFilter:r.addAttributeFilter,serialize:r.serialize,addRules:r.addRules,setRules:r.setRules,addTempAttr:r.addTempAttr,getTempAttrs:r.getTempAttrs}}function Gb(e){return{getBookmark:d(mc,e),moveToBookmark:d(gc,e)}}(Gb||(Gb={})).isBookmark
 Node=pc;var Jb,Qb,Zb=Gb,ey=_o.isContentEditableFalse,ty=_o.isContentEditableTrue,ny=function(r,a){var u,s,c,l,f,d,m,g,p,h,v,b,i,y,C,x,w,N=a.dom,E=Yt.each,S=a.getDoc(),k=document,T=Math.abs,A=Math.round,R=a.getBody();l={nw:[0,0,-1,-1],ne:[1,0,1,-1],se:[1,1,1,1],sw:[0,1,-1,1]};var e=".mce-content-body";a.contentStyles.push(e+" div.mce-resizehandle {position: absolute;border: 1px solid black;box-sizing: content-box;background: #FFF;width: 7px;height: 7px;z-index: 10000}"+e+" .mce-resizehandle:hover {background: #000}"+e+" img[data-mce-selected],"+e+" hr[data-mce-selected] {outline: 1px solid black;resize: none}"+e+" .mce-clonedresizable {position: absolute;"+(de.gecko?"":"outline: 1px dashed black;")+"opacity: .5;filter: alpha(opacity=50);z-index: 10000}"+e+" .mce-resize-helper {background: #555;background: rgba(0,0,0,0.75);border-radius: 3px;border: 1px;color: white;display: none;font-family
 : sans-serif;font-size: 12px;white-space: nowrap;line-height: 14px;margin: 5px 10px;padding: 5px;position: absolute;z-index: 10001}");var _=function(e){return e&&("IMG"===e.nodeName||a.dom.is(e,"figure.image"))},n=function(e){var t,n,r=e.target;t=e,n=a.selection.getRng(),!_(t.target)||Sh(t.clientX,t.clientY,n)||e.isDefaultPrevented()||(e.preventDefault(),a.selection.select(r))},D=function(e){return a.dom.is(e,"figure.image")?e.querySelector("img"):e},B=function(e){var t=a.settings.object_resizing;return!1!==t&&!de.iOS&&("string"!=typeof t&&(t="table,img,figure.image,div"),"false"!==e.getAttribute("data-mce-resize")&&e!==a.getBody()&&Dr(rr.fromDom(e),t))},O=function(e){var t,n,r,o;t=e.screenX-d,n=e.screenY-m,y=t*f[2]+h,C=n*f[3]+v,y=y<5?5:y,C=C<5?5:C,(_(u)&&!1!==a.settings.resize_img_proportional?!Oh.modifierPressed(e):Oh.modifierPressed(e)
 ||_(u)&&f[2]*f[3]!=0)&&(T(t)>T(n)?(C=A(y*b),y=A(C/b)):(y=A(C/b),C=A(y*b))),N.setStyles(D(s),{width:y,height:C}),r=0<(r=f.startPos.x+t)?r:0,o=0<(o=f.startPos.y+n)?o:0,N.setStyles(c,{left:r,top:o,display:"block"}),c.innerHTML=y+" &times; "+C,f[2]<0&&s.clientWidth<=y&&N.setStyle(s,"left",g+(h-y)),f[3]<0&&s.clientHeight<=C&&N.setStyle(s,"top",p+(v-C)),(t=R.scrollWidth-x)+(n=R.scrollHeight-w)!=0&&N.setStyles(c,{left:r-t,top:o-n}),i||(Pg(a,u,h,v),i=!0)},P=function(){i=!1;var e=function(e,t){t&&(u.style[e]||!a.schema.isValid(u.nodeName.toLowerCase(),e)?N.setStyle(D(u),e,t):N.setAttrib(D(u),e,t))};e("width",y),e("height",C),N.unbind(S,"mousemove",O),N.unbind(S,"mouseup",P),k!==S&&(N.unbind(k,"mousemove",O),N.unbind(k,"mouseup",P)),N.remove(s),N.remove(c),o(u),Lg(a,u,y,C),N.setAttrib(u,"style&
 quot;,N.getAttrib(u,"style")),a.nodeChanged()},o=function(e){var t,r,o,n,i;L(),F(),t=N.getPos(e,R),g=t.x,p=t.y,i=e.getBoundingClientRect(),r=i.width||i.right-i.left,o=i.height||i.bottom-i.top,u!==e&&(u=e,y=C=0),n=a.fire("ObjectSelected",{target:e}),B(e)&&!n.isDefaultPrevented()?E(l,function(n,e){var t;(t=N.get("mceResizeHandle"+e))&&N.remove(t),t=N.add(R,"div",{id:"mceResizeHandle"+e,"data-mce-bogus":"all","class":"mce-resizehandle",unselectable:!0,style:"cursor:"+e+"-resize; margin:0; padding:0"}),11===de.ie&&(t.contentEditable=!1),N.bind(t,"mousedown",function(e){var t;e.stopImmediatePropagation(),e.preventDefault(),d=(t=e).screenX,m=t.screenY,h=D(u).clientWidth,v=D(u).clientHeight,b=v/h,(f=n).startPos={x:r*n[0]+g,y:o*n[1]+p},x=R.scrollWidth,w=R.scrollHeight,s=u.cloneNode(!0),N.addClass(s,"mce-clonedresizable"),N.setAttri
 b(s,"data-mce-bogus","all"),s.contentEditable=!1,s.unSelectabe=!0,N.setStyles(s,{left:g,top:p,margin:0}),s.removeAttribute("data-mce-selected"),R.appendChild(s),N.bind(S,"mousemove",O),N.bind(S,"mouseup",P),k!==S&&(N.bind(k,"mousemove",O),N.bind(k,"mouseup",P)),c=N.add(R,"div",{"class":"mce-resize-helper","data-mce-bogus":"all"},h+" &times; "+v)}),n.elm=t,N.setStyles(t,{left:r*n[0]+g-t.offsetWidth/2,top:o*n[1]+p-t.offsetHeight/2})}):L(),u.setAttribute("data-mce-selected","1")},L=function(){var e,t;for(e in F(),u&&u.removeAttribute("data-mce-selected"),l)(t=N.get("mceResizeHandle"+e))&&(N.unbind(t),N.remove(t))},I=function(e){var t,n=function(e,t){if(e)do{if(e===t)return!0}while(e=e.parentNode)};i||a.removed||(E(N.select("img[data-mce-selected],hr[data-mce-selected]"),function(e)
 {e.removeAttribute("data-mce-selected")}),t="mousedown"===e.type?e.target:r.getNode(),n(t=N.$(t).closest("table,img,figure.image,hr")[0],R)&&(z(),n(r.getStart(!0),t)&&n(r.getEnd(!0),t))?o(t):L())},M=function(e){return ey(function(e,t){for(;t&&t!==e;){if(ty(t)||ey(t))return t;t=t.parentNode}return null}(a.getBody(),e))},F=function(){for(var e in l){var t=l[e];t.elm&&(N.unbind(t.elm),delete t.elm)}},z=function(){try{a.getDoc().execCommand("enableObjectResizing",!1,!1)}catch(e){}};return a.on("init",function(){z(),de.ie&&11<=de.ie&&(a.on("mousedown click",function(e){var t=e.target,n=t.nodeName;i||!/^(TABLE|IMG|HR)$/.test(n)||M(t)||(2!==e.button&&a.selection.select(t,"TABLE"===n),"mousedown"===e.type&&a.nodeChanged())}),a.dom.bind(R,"mscontrolselect",function(e){var t=function(e){ve.setEditorTimeout(a,function(){a.selection.select(
 e)})};if(M(e.target))return e.preventDefault(),void t(e.target);/^(TABLE|IMG|HR)$/.test(e.target.nodeName)&&(e.preventDefault(),"IMG"===e.target.tagName&&t(e.target))}));var t=ve.throttle(function(e){a.composing||I(e)});a.on("nodechange ResizeEditor ResizeWindow drop FullscreenStateChanged",t),a.on("keyup compositionend",function(e){u&&"TABLE"===u.nodeName&&t(e)}),a.on("hide blur",L),a.on("contextmenu",n)}),a.on("remove",F),{isResizable:B,showResizeRect:o,hideResizeRect:L,updateResizeRect:I,destroy:function(){u=s=null}}},ry=function(e){for(var t=0,n=0,r=e;r&&r.nodeType;)t+=r.offsetLeft||0,n+=r.offsetTop||0,r=r.offsetParent;return{x:t,y:n}},oy=function(e,t,n){var r,o,i,a,u,s=e.dom,c=s.getRoot(),l=0;if(u={elm:t,alignToTop:n},e.fire("scrollIntoView",u),!u.isDefaultPrevented()&&_o.isElement(t)){if(!1===n&&(l=t.offsetHeight),"BODY"!==c.nodeName
 ){var f=e.selection.getScrollContainer();if(f)return r=ry(t).y-ry(f).y+l,a=f.clientHeight,void((r<(i=f.scrollTop)||i+a<r+25)&&(f.scrollTop=r<i?r:r-a+25))}o=s.getViewPort(e.getWin()),r=s.getPos(t).y+l,i=o.y,a=o.h,(r<o.y||i+a<r+25)&&e.getWin().scrollTo(0,r<i?r:r-a+25)}},iy=function(d,e){ee(du.fromRangeStart(e).getClientRects()).each(function(e){var t,n,r,o,i,a,u,s,c,l=function(e){if(e.inline)return e.getBody().getBoundingClientRect();var t=e.getWin();return{left:0,right:t.innerWidth,top:0,bottom:t.innerHeight,width:t.innerWidth,height:t.innerHeight}}(d),f={x:(i=t=l,a=n=e,a.left>i.left&&a.right<i.right?0:a.left<i.left?a.left-i.left:a.right-i.right),y:(r=t,o=n,o.top>r.top&&o.bottom<r.bottom?0:o.top<r.top?o.top-r.top:o.bottom-r.bottom)};s=0!==f.x?0<f.x?f.x+4:f.x-4:0,c=0!==f.y?0<f.y?f.y+4:f.y-4:0,(u=d).inline?(u.getBody().scrollLeft+=s,u.getBody().scrollTop+=c):u.getWin().scrollBy(s,c)})},ay=function(e){return _o.is
 ContentEditableTrue(e)||_o.isContentEditableFalse(e)},uy=function(e,t,n){var r,o,i,a,u,s=n;if(s.caretPositionFromPoint)(o=s.caretPositionFromPoint(e,t))&&((r=n.createRange()).setStart(o.offsetNode,o.offset),r.collapse(!0));else if(n.caretRangeFromPoint)r=n.caretRangeFromPoint(e,t);else if(s.body.createTextRange){r=s.body.createTextRange();try{r.moveToPoint(e,t),r.collapse(!0)}catch(c){r=function(e,n,t){var r,o,i;if(r=t.elementFromPoint(e,n),o=t.body.createTextRange(),r&&"HTML"!==r.tagName||(r=t.body),o.moveToElementText(r),0<(i=(i=Yt.toArray(o.getClientRects())).sort(function(e,t){return(e=Math.abs(Math.max(e.top-n,e.bottom-n)))-(t=Math.abs(Math.max(t.top-n,t.bottom-n)))})).length){n=(i[0].bottom+i[0].top)/2;try{return o.moveToPoint(e,n),o.collapse(!0),o}catch(a){}}return null}(e,t,n)}return i=r,a=n.body,u=i&&i.parentElement?i.parentElement():null,_o.isContentEditableFalse(function(e,t,n){for(;e&&e!==t;){if(n(e))return e;e=e.parentNode}re
 turn null}(u,a,ay))?null:i}return r},sy=function(n,e){return $(e,function(e){var t=n.fire("GetSelectionRange",{range:e});return t.range!==e?t.range:e})},cy=function(e,t){var n=(t||document).createDocumentFragment();return F(e,function(e){n.appendChild(e.dom())}),rr.fromDom(n)},ly=Er("element","width","rows"),fy=Er("element","cells"),dy=Er("x","y"),my=function(e,t){var n=parseInt(br(e,t),10);return isNaN(n)?1:n},gy=function(e){return U(e,function(e,t){return t.cells().length>e?t.cells().length:e},0)},py=function(e,t){for(var n=e.rows(),r=0;r<n.length;r++)for(var o=n[r].cells(),i=0;i<o.length;i++)if(Or(o[i],t))return A.some(dy(i,r));return A.none()},hy=function(e,t,n,r,o){for(var i=[],a=e.rows(),u=n;u<=o;u++){var s=a[u].cells(),c=t<r?s.slice(t,r+1):s.slice(r,t+1);i.push(fy(a[u].element(),c))}return i},vy=function(e){var o=ly(oa(e),0,[]);return F(Vi(e,"tr"),function(n,r){F(Vi(n,&quo
 t;td,th"),function(e,t){!function(e,t,n,r,o){for(var i=my(o,"rowspan"),a=my(o,"colspan"),u=e.rows(),s=n;s<n+i;s++){u[s]||(u[s]=fy(ia(r),[]));for(var c=t;c<t+a;c++)u[s].cells()[c]=s===n&&c===t?o:oa(o)}}(o,function(e,t,n){for(;r=t,o=n,i=void 0,((i=e.rows())[o]?i[o].cells():[])[r];)t++;var r,o,i;return t}(o,t,r),r,n,e)})}),ly(o.element(),gy(o.rows()),o.rows())},by=function(e){return n=$((t=e).rows(),function(e){var t=$(e.cells(),function(e){var t=ia(e);return yr(t,"colspan"),yr(t,"rowspan"),t}),n=oa(e.element());return Ti(n,t),n}),r=oa(t.element()),o=rr.fromTag("tbody"),Ti(o,n),ki(r,o),r;var t,n,r,o},yy=function(l,e,t){return py(l,e).bind(function(c){return py(l,t).map(function(e){return t=l,r=e,o=(n=c).x(),i=n.y(),a=r.x(),u=r.y(),s=i<u?hy(t,o,i,a,u):hy(t,o,u,a,i),ly(t.element(),gy(s),s);var t,n,r,o,i,a,u,s})})},Cy=function(n,t){return V(n,function(e){return"li"===ur(e)&&Yp(e,t)}).fold(j([]),funct
 ion(e){return(t=n,V(t,function(e){return"ul"===ur(e)||"ol"===ur(e)})).map(function(e){return[rr.fromTag("li"),rr.fromTag(ur(e))]}).getOr([]);var t})},xy=function(e,t){var n,r=rr.fromDom(t.commonAncestorContainer),o=Hl(r,e),i=z(o,function(e){return lo(e)||so(e)}),a=Cy(o,t),u=i.concat(a.length?a:po(n=r)?Ir(n).filter(go).fold(j([]),function(e){return[n,e]}):go(n)?[n]:[]);return $(u,oa)},wy=function(){return cy([])},Ny=function(e,t){return n=rr.fromDom(t.cloneContents()),r=xy(e,t),o=U(r,function(e,t){return ki(t,e),t},n),0<r.length?cy([o]):o;var n,r,o},Ey=function(e,o){return(t=e,n=o[0],Wi(n,"table",d(Or,t))).bind(function(e){var t=o[0],n=o[o.length-1],r=vy(e);return yy(r,t,n).map(function(e){return cy([by(e)])})}).getOrThunk(wy);var t,n},Sy=function(e,t){var n,r,o=qd(t,e);return 0<o.length?Ey(e,o):(n=e,0<(r=t).length&&r[0].collapsed?wy():Ny(n,r[0]))},ky=function(e,t){if(void 0===t&&(t={}),t.get=!0,t.format=t.format||&quot
 ;html",t.selection=!0,(t=e.fire("BeforeGetContent",t)).isDefaultPrevented())return e.fire("GetContent",t),t.content;if("text"===t.format)return c=e,A.from(c.selection.getRng()).map(function(e){return la(e.toString())}).getOr("");t.getInner=!0;var n,r,o,i,a,u,s,c,l=(r=t,i=(n=e).selection.getRng(),a=n.dom.create("body"),u=n.selection.getSel(),s=sy(n,Fd(u)),i.cloneContents?(o=r.contextual?Sy(rr.fromDom(n.getBody()),s).dom():i.cloneContents())&&a.appendChild(o):a.innerHTML=i.toString(),n.selection.serializer.serialize(a,r));return"tree"===t.format?l:(t.content=e.selection.isCollapsed()?"":l,e.fire("GetContent",t),t.content)},Ty=function(e,t,n){var r,o,i,a=e.selection.getRng(),u=e.getDoc();if((n=n||{format:"html"}).set=!0,n.selection=!0,n.content=t,n.no_events||!(n=e.fire("BeforeSetContent",n)).isDefaultPrevented()){if(t=n.content,a.insertNode){t+='<span id="__caret&qu
 ot;>_</span>',a.startContainer===u&&a.endContainer===u?u.body.innerHTML=t:(a.deleteContents(),0===u.body.childNodes.length?u.body.innerHTML=t:a.createContextualFragment?a.insertNode(a.createContextualFragment(t)):(o=u.createDocumentFragment(),i=u.createElement("div"),o.appendChild(i),i.outerHTML=t,a.insertNode(o))),r=e.dom.get("__caret"),(a=u.createRange()).setStartBefore(r),a.setEndBefore(r),e.selection.setRng(a),e.dom.remove("__caret");try{e.selection.setRng(a)}catch(s){}}else a.item&&(u.execCommand("Delete",!1,null),a=e.getRng()),/^\s+/.test(t)?(a.pasteHTML('<span id="__mce_tmp">_</span>'+t),e.dom.remove("__mce_tmp")):a.pasteHTML(t);n.no_events||e.fire("SetContent",n)}else e.fire("SetContent",n)},Ay=function(e,t,n,r,o){var i=n?t.startContainer:t.endContainer,a=n?t.startOffset:t.endOffset;return A.from(i).map(rr.fromDom).map(function(e){return r&&t.collapsed
 ?e:Hr(e,o(e,a)).getOr(e)}).bind(function(e){return cr(e)?A.some(e):Ir(e)}).map(function(e){return e.dom()}).getOr(e)},Ry=function(e,t,n){return Ay(e,t,!0,n,function(e,t){return Math.min(e.dom().childNodes.length,t)})},_y=function(e,t,n){return Ay(e,t,!1,n,function(e,t){return 0<t?t-1:t})},Dy=function(e,t){for(var n=e;e&&_o.isText(e)&&0===e.length;)e=t?e.nextSibling:e.previousSibling;return e||n},By=Yt.each,Oy=function(e){return!!e.select},Py=function(e){return!(!e||!e.ownerDocument)&&Pr(rr.fromDom(e.ownerDocument),rr.fromDom(e))},Ly=function(u,s,e,c){var n,t,l,f,a,r=function(e,t){return Ty(c,e,t)},o=function(e){var t=m();t.collapse(!!e),i(t)},d=function(){return s.getSelection?s.getSelection():s.document.selection},m=function(){var e,t,n,r,o=function(e,t,n){try{return t.compareBoundaryPoints(e,n)}catch(r){return-1}};if(!s)return null;if(null==(r=s.document))return null;if(c.bookmark!==undefined&&!1===ap(c)){var i=hg(c);if(i.isSome())return i.map(fu
 nction(e){return sy(c,[e])[0]}).getOr(r.createRange())}try{(e=d())&&(t=0<e.rangeCount?e.getRangeAt(0):e.createRange?e.createRange():r.createRange())}catch(a){}return(t=sy(c,[t])[0])||(t=r.createRange?r.createRange():r.body.createTextRange()),t.setStart&&9===t.startContainer.nodeType&&t.collapsed&&(n=u.getRoot(),t.setStart(n,0),t.setEnd(n,0)),l&&f&&(0===o(t.START_TO_START,t,l)&&0===o(t.END_TO_END,t,l)?t=f:f=l=null),t},i=function(e,t){var n,r;if((o=e)&&(Oy(o)||Py(o.startContainer)&&Py(o.endContainer))){var o,i=Oy(e)?e:null;if(i){f=null;try{i.select()}catch(a){}}else{if(n=d(),e=c.fire("SetSelectionRange",{range:e,forward:t}).range,n){f=e;try{n.removeAllRanges(),n.addRange(e)}catch(a){}!1===t&&n.extend&&(n.collapse(e.endContainer,e.endOffset),n.extend(e.startContainer,e.startOffset)),l=0<n.rangeCount?n.getRangeAt(0):null}e.collapsed||e.startContainer!==e.endContainer||!n.setBaseAndExt
 ent||de.ie||e.endOffset-e.startOffset<2&&e.startContainer.hasChildNodes()&&(r=e.startContainer.childNodes[e.startOffset])&&"IMG"===r.tagName&&(n.setBaseAndExtent(e.startContainer,e.startOffset,e.endContainer,e.endOffset),n.anchorNode===e.startContainer&&n.focusNode===e.endContainer||n.setBaseAndExtent(r,0,r,1)),c.fire("AfterSetSelectionRange",{range:e,forward:t})}}},g=function(){var e,t,n=d();return!(n&&n.anchorNode&&n.focusNode)||((e=u.createRng()).setStart(n.anchorNode,n.anchorOffset),e.collapse(!0),(t=u.createRng()).setStart(n.focusNode,n.focusOffset),t.collapse(!0),e.compareBoundaryPoints(e.START_TO_START,t)<=0)},p={bookmarkManager:null,controlSelection:null,dom:u,win:s,serializer:e,editor:c,collapse:o,setCursorLocation:function(e,t){var n=u.createRng();e?(n.setStart(e,t),n.setEnd(e,t),i(n),o(!1)):(Gp(u,n,c.getBody(),!0),i(n))},getContent:function(e){return ky(c,e)},setContent:r,getBookmark:functio
 n(e,t){return n.getBookmark(e,t)},moveToBookmark:function(e){return n.moveToBookmark(e)},select:function(e,t){var r,n,o;return(r=u,n=e,o=t,A.from(n).map(function(e){var t=r.nodeIndex(e),n=r.createRng();return n.setStart(e.parentNode,t),n.setEnd(e.parentNode,t+1),o&&(Gp(r,n,e,!0),Gp(r,n,e,!1)),n})).each(i),e},isCollapsed:function(){var e=m(),t=d();return!(!e||e.item)&&(e.compareEndPoints?0===e.compareEndPoints("StartToEnd",e):!t||e.collapsed)},isForward:g,setNode:function(e){return r(u.getOuterHTML(e)),e},getNode:function(){return e=c.getBody(),(t=m())?(r=t.startContainer,o=t.endContainer,i=t.startOffset,a=t.endOffset,n=t.commonAncestorContainer,!t.collapsed&&(r===o&&a-i<2&&r.hasChildNodes()&&(n=r.childNodes[i]),3===r.nodeType&&3===o.nodeType&&(r=r.length===i?Dy(r.nextSibling,!0):r.parentNode,o=0===a?Dy(o.previousSibling,!1):o.parentNode,r&&r===o))?r:n&&3===n.nodeType?n.parentNode:n):e;var e,
 t,n,r,o,i,a},getSel:d,setRng:i,getRng:m,getStart:function(e){return Ry(c.getBody(),m(),e)},getEnd:function(e){return _y(c.getBody(),m(),e)},getSelectedBlocks:function(e,t){return function(e,t,n,r){var o,i,a=[];if(i=e.getRoot(),n=e.getParent(n||Ry(i,t,t.collapsed),e.isBlock),r=e.getParent(r||_y(i,t,t.collapsed),e.isBlock),n&&n!==i&&a.push(n),n&&r&&n!==r)for(var u=new ro(o=n,i);(o=u.next())&&o!==r;)e.isBlock(o)&&a.push(o);return r&&n!==r&&r!==i&&a.push(r),a}(u,m(),e,t)},normalize:function(){var e=m(),t=d();if(!Ud(t)&&Jp(c)){var n=jm(u,e);return n.each(function(e){i(e,g())}),n.getOr(e)}return e},selectorChanged:function(e,t){var i;return a||(a={},i={},c.on("NodeChange",function(e){var n=e.element,r=u.getParents(n,null,u.getRoot()),o={};By(a,function(e,n){By(r,function(t){if(u.is(t,n))return i[n]||(By(e,function(e){e(!0,{node:t,selector:n,parents:r})}),i[n]=e),o[n]=e,!1})}),By(i,function(e,t){o[t]|
 |(delete i[t],By(e,function(e){e(!1,{node:n,selector:t,parents:r})}))})})),a[e]||(a[e]=[]),a[e].push(t),p},getScrollContainer:function(){for(var e,t=u.getRoot();t&&"BODY"!==t.nodeName;){if(t.scrollHeight>t.clientHeight){e=t;break}t=t.parentNode}return e},scrollIntoView:function(e,t){return oy(c,e,t)},placeCaretAt:function(e,t){return i(uy(e,t,c.getDoc()))},getBoundingClientRect:function(){var e=m();return e.collapsed?hu.fromRangeStart(e).getClientRects()[0]:e.getBoundingClientRect()},destroy:function(){s=l=f=null,t.destroy()}};return n=Zb(p),t=ny(p,c),p.bookmarkManager=n,p.controlSelection=t,p},Iy=_o.isContentEditableFalse,My=Ua,Fy=As,zy=Ts,Uy=function(e,t){for(;t=e(t);)if(t.isVisible())return t;return t},Vy=function(e,t,n,r){var o,i,a,u,s,c,l=e===gu.Forwards,f=l?zy:Fy;return!r.collapsed&&(o=My(r),Iy(o))?Ah(e,t,o,e===gu.Backwards,!0):(u=ma(r.startContainer),f(i=ks(e,t.getBody(),r))?Rh(t,i.getNode(!l)):(i=n(i))?f(i)?Ah(e,t,i.getNode(!l),l,!0):f(a=n(i))&am
 p;&(!(c=hs(s=i,a))&&_o.isBr(s.getNode())||c)?Ah(e,t,a.getNode(!l),l,!0):u?Dh(t,i.toRange(),!0):null:u?r:null)},Hy=function(e,t,n,r){var o,i,a,u,s,c,l,f,d;if(d=My(r),o=ks(e,t.getBody(),r),i=n(t.getBody(),ph(1),o),a=z(i,hh(1)),s=qt.last(o.getClientRects()),(zy(o)||Rs(o))&&(d=o.getNode()),(Fy(o)||_s(o))&&(d=o.getNode(!0)),!s)return null;if(c=s.left,(u=wh(a,c))&&Iy(u.node))return l=Math.abs(c-u.left),f=Math.abs(c-u.right),Ah(e,t,u.node,l<f,!0);if(d){var m=function(e,t,n,r){var o,i,a,u,s,c,l=Gs(t),f=[],d=0,m=function(e){return qt.last(e.getClientRects())};1===e?(o=l.next,i=za,a=Fa,u=hu.after(r)):(o=l.prev,i=Fa,a=za,u=hu.before(r)),c=m(u);do{if(u.isVisible()&&!a(s=m(u),c)){if(0<f.length&&i(s,qt.last(f))&&d++,(s=La(s)).position=u,s.line=d,n(s))return f;f.push(s)}}while(u=o(u));return f}(e,t.getBody(),ph(1),d);if(u=wh(z(m,hh(1)),c))return Dh(t,u.position.toRange(),!0);if(u=qt.last(z(m,hh(0))))return Dh(t,u.position.toRange(),
 !0)}},jy=function(e,t,n){var r,o,i,a,u=Gs(e.getBody()),s=d(Uy,u.next),c=d(Uy,u.prev);if(n.collapsed&&e.settings.forced_root_block){if(!(r=e.dom.getParent(n.startContainer,"PRE")))return;(1===t?s(hu.fromRangeStart(n)):c(hu.fromRangeStart(n)))||(a=(i=e).dom.create(i.settings.forced_root_block),(!de.ie||11<=de.ie)&&(a.innerHTML='<br data-mce-bogus="1">'),o=a,1===t?e.$(r).after(o):e.$(r).before(o),e.selection.select(o,!0),e.selection.collapse())}},qy=function(l,f){return function(){var e,t,n,r,o,i,a,u,s,c=(t=f,r=Gs((e=l).getBody()),o=d(Uy,r.next),i=d(Uy,r.prev),a=t?gu.Forwards:gu.Backwards,u=t?o:i,s=e.selection.getRng(),(n=Vy(a,e,u,s))?n:(n=jy(e,a,s))||null);return!!c&&(l.selection.setRng(c),!0)}},$y=function(u,s){return function(){var e,t,n,r,o,i,a=(r=(t=s)?1:-1,o=t?gh:mh,i=(e=u).selection.getRng(),(n=Hy(r,e,o,i))?n:(n=jy(e,r,i))||null);return!!a&&(u.selection.setRng(a),!0)}};(Qb=Jb||(Jb={}))[Qb.Br=0]="Br",Qb[Qb.Blo
 ck=1]="Block",Qb[Qb.Wrap=2]="Wrap",Qb[Qb.Eol=3]="Eol";var Wy=function(e,t){return e===gu.Backwards?t.reverse():t},Ky=function(e,t,n,r){for(var o,i,a,u,s,c,l=Gs(n),f=r,d=[];f&&(s=l,c=f,o=t===gu.Forwards?s.next(c):s.prev(c));){if(_o.isBr(o.getNode(!1)))return t===gu.Forwards?{positions:Wy(t,d).concat([o]),breakType:Jb.Br,breakAt:A.some(o)}:{positions:Wy(t,d),breakType:Jb.Br,breakAt:A.some(o)};if(o.isVisible()){if(e(f,o)){var m=(i=t,a=f,u=o,_o.isBr(u.getNode(i===gu.Forwards))?Jb.Br:!1===hs(a,u)?Jb.Block:Jb.Wrap);return{positions:Wy(t,d),breakType:m,breakAt:A.some(o)}}d.push(o),f=o}else f=o}return{positions:Wy(t,d),breakType:Jb.Eol,breakAt:A.none()}},Xy=function(n,r,o,e){return r(o,e).breakAt.map(function(e){var t=r(o,e).positions;return n===gu.Backwards?t.concat(e):[e].concat(t)}).getOr([])},Yy=function(e,i){return U(e,function(e,o){return e.fold(function(){return A.some(o)},function(r){return qa([ee(r.getClientRects()),ee(o.getClientRects())],func
 tion(e,t){var n=Math.abs(i-e.left);return Math.abs(i-t.left)<=n?o:r}).or(e)})},A.none())},Gy=function(t,e){return ee(e.getClientRects()).bind(function(e){return Yy(t,e.left)})},Jy=d(Ky,du.isAbove,-1),Qy=d(Ky,du.isBelow,1),Zy=d(Xy,-1,Jy),eC=d(Xy,1,Qy),tC=function(e,t,n,r,o){var i,a,u,s,c=Vi(rr.fromDom(n),"td,th,caption").map(function(e){return e.dom()}),l=z((i=e,G(c,function(e){var t,n,r=(t=La(e.getBoundingClientRect()),n=-1,{left:t.left-n,top:t.top-n,right:t.right+2*n,bottom:t.bottom+2*n,width:t.width+n,height:t.height+n});return[{x:r.left,y:i(r),cell:e},{x:r.right,y:i(r),cell:e}]})),function(e){return t(e,o)});return(a=l,u=r,s=o,U(a,function(e,r){return e.fold(function(){return A.some(r)},function(e){var t=Math.sqrt(Math.abs(e.x-u)+Math.abs(e.y-s)),n=Math.sqrt(Math.abs(r.x-u)+Math.abs(r.y-s));return A.some(n<t?r:e)})},A.none())).map(function(e){return e.cell})},nC=d(tC,function(e){return e.bottom},function(e,t){return e.y<t}),rC=d(tC,function(e){return e.top},fun
 ction(e,t){return e.y>t}),oC=function(t,n){return ee(n.getClientRects()).bind(function(e){return nC(t,e.left,e.top)}).bind(function(e){return Gy((t=e,ic.lastPositionIn(t).map(function(e){return Jy(t,e).positions.concat(e)}).getOr([])),n);var t})},iC=function(t,n){return te(n.getClientRects()).bind(function(e){return rC(t,e.left,e.top)}).bind(function(e){return Gy((t=e,ic.firstPositionIn(t).map(function(e){return[e].concat(Qy(t,e).positions)}).getOr([])),n);var t})},aC=function(e,t){e.selection.setRng(t),iy(e,t)},uC=function(e,t,n){var r,o,i,a,u=e(t,n);return(a=u).breakType===Jb.Wrap&&0===a.positions.length||!_o.isBr(n.getNode())&&(i=u).breakType===Jb.Br&&1===i.positions.length?(r=e,o=t,!u.breakAt.map(function(e){return r(o,e).breakAt.isSome()}).getOr(!1)):u.breakAt.isNone()},sC=d(uC,Jy),cC=d(uC,Qy),lC=function(e,t,n,r){var o,i,a,u,s=e.selection.getRng(),c=t?1:-1;if(es()&&(o=t,i=s,a=n,u=hu.fromRangeStart(i),ic.positionIn(!o,a).map(function(e){return
  e.isEqual(u)}).getOr(!1))){var l=Ah(c,e,n,!t,!0);return aC(e,l),!0}return!1},fC=function(e,t){var n=t.getNode(e);return _o.isElement(n)&&"TABLE"===n.nodeName?A.some(n):A.none()},dC=function(u,s,c){var e=fC(!!s,c),t=!1===s;e.fold(function(){return aC(u,c.toRange())},function(a){return ic.positionIn(t,u.getBody()).filter(function(e){return e.isEqual(c)}).fold(function(){return aC(u,c.toRange())},function(e){return n=s,o=a,t=c,void((i=mm(r=u))?r.undoManager.transact(function(){var e=rr.fromTag(i);vr(e,gm(r)),ki(e,rr.fromTag("br")),n?Ei(rr.fromDom(o),e):Ni(rr.fromDom(o),e);var t=r.dom.createRng();t.setStart(e.dom(),0),t.setEnd(e.dom(),0),aC(r,t)}):aC(r,t.toRange()));var n,r,o,t,i})})},mC=function(e,t,n,r){var o,i,a,u,s,c,l=e.selection.getRng(),f=hu.fromRangeStart(l),d=e.getBody();if(!t&&sC(r,f)){var m=(u=d,oC(s=n,c=f).orThunk(function(){return ee(c.getClientRects()).bind(function(e){return Yy(Zy(u,hu.before(s)),e.left)})}).getOr(hu.before(s)));return
  dC(e,t,m),!0}return!(!t||!cC(r,f))&&(o=d,m=iC(i=n,a=f).orThunk(function(){return ee(a.getClientRects()).bind(function(e){return Yy(eC(o,hu.after(i)),e.left)})}).getOr(hu.after(i)),dC(e,t,m),!0)},gC=function(t,n){return function(){return A.from(t.dom.getParent(t.selection.getNode(),"td,th")).bind(function(e){return A.from(t.dom.getParent(e,"table")).map(function(e){return lC(t,n,e)})}).getOr(!1)}},pC=function(n,r){return function(){return A.from(n.dom.getParent(n.selection.getNode(),"td,th")).bind(function(t){return A.from(n.dom.getParent(t,"table")).map(function(e){return mC(n,r,e,t)})}).getOr(!1)}},hC=function(e){return M(["figcaption"],ur(e))},vC=function(e){var t=document.createRange();return t.setStartBefore(e.dom()),t.setEndBefore(e.dom()),t},bC=function(e,t,n){n?ki(e,t):Si(e,t)},yC=function(e,t,n,r){return""===t?(l=e,f=r,d=rr.fromTag("br"),bC(l,d,f),vC(d)):(o=e,i=r,a=t,u=n,s=rr.fromTag(a),c=rr.fromT
 ag("br"),vr(s,u),ki(s,c),bC(o,s,i),vC(c));var o,i,a,u,s,c,l,f,d},CC=function(e,t,n){return t?(o=e.dom(),Qy(o,n).breakAt.isNone()):(r=e.dom(),Jy(r,n).breakAt.isNone());var r,o},xC=function(t,n){var e,r,o,i=rr.fromDom(t.getBody()),a=hu.fromRangeStart(t.selection.getRng()),u=mm(t),s=gm(t);return(e=a,r=i,o=d(Or,r),$i(rr.fromDom(e.container()),co,o).filter(hC)).exists(function(){if(CC(i,n,a)){var e=yC(i,u,s,n);return t.selection.setRng(e),!0}return!1})},wC=function(e,t){return function(){return!!e.selection.isCollapsed()&&xC(e,t)}},NC=function(e,r){return G($(e,function(e){return Eb({shiftKey:!1,altKey:!1,ctrlKey:!1,metaKey:!1,keyCode:0,action:o},e)}),function(e){return t=e,(n=r).keyCode===t.keyCode&&n.shiftKey===t.shiftKey&&n.altKey===t.altKey&&n.ctrlKey===t.ctrlKey&&n.metaKey===t.metaKey?[e]:[];var t,n})},EC=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var r=Array.prototype.slice.call(arguments,1);return fu
 nction(){return e.apply(null,r)}},SC=function(e,t){return V(NC(e,t),function(e){return e.action()})},kC=function(i,a){i.on("keydown",function(e){var t,n,r,o;!1===e.isDefaultPrevented()&&(t=i,n=a,r=e,o=tr.detect().os,SC([{keyCode:Oh.RIGHT,action:qy(t,!0)},{keyCode:Oh.LEFT,action:qy(t,!1)},{keyCode:Oh.UP,action:$y(t,!1)},{keyCode:Oh.DOWN,action:$y(t,!0)},{keyCode:Oh.RIGHT,action:gC(t,!0)},{keyCode:Oh.LEFT,action:gC(t,!1)},{keyCode:Oh.UP,action:pC(t,!1)},{keyCode:Oh.DOWN,action:pC(t,!0)},{keyCode:Oh.RIGHT,action:bd.move(t,n,!0)},{keyCode:Oh.LEFT,action:bd.move(t,n,!1)},{keyCode:Oh.RIGHT,ctrlKey:!o.isOSX(),altKey:o.isOSX(),action:bd.moveNextWord(t,n)},{keyCode:Oh.LEFT,ctrlKey:!o.isOSX(),altKey:o.isOSX(),action:bd.movePrevWord(t,n)},{keyCode:Oh.UP,action:wC(t,!1)},{keyCode:Oh.DOWN,action:wC(t,!0)}],r).each(function(e){r.preventDefault()}))})},TC=function(e){return 1===Vr(e).length},AC=function(e,t,n,r){var o,i,a,u,s=d(_v,t),c=$(z(r,s),function(e){return e.dom()});if(0==
 =c.length)Tf(t,e,n);else{var l=(o=n.dom(),i=c,a=Nv(!1),u=Av(i,a.dom()),Ni(rr.fromDom(o),a),Ri(rr.fromDom(o)),hu(u,0));t.selection.setRng(l.toRange())}},RC=function(r,o){var t,e=rr.fromDom(r.getBody()),n=rr.fromDom(r.selection.getStart()),i=z((t=Hl(n,e),K(t,co).fold(j(t),function(e){return t.slice(0,e)})),TC);return te(i).map(function(e){var t,n=hu.fromRangeStart(r.selection.getRng());return!(!Tl(o,n,e.dom())||Fu((t=e).dom())&&xv(t.dom())||(AC(o,r,e,i),0))}).getOr(!1)},_C=function(e,t){return!!e.selection.isCollapsed()&&RC(e,t)},DC=function(o,i){o.on("keydown",function(e){var t,n,r;!1===e.isDefaultPrevented()&&(t=o,n=i,r=e,SC([{keyCode:Oh.BACKSPACE,action:EC(_f,t,!1)},{keyCode:Oh.DELETE,action:EC(_f,t,!0)},{keyCode:Oh.BACKSPACE,action:EC(wd,t,n,!1)},{keyCode:Oh.DELETE,action:EC(wd,t,n,!0)},{keyCode:Oh.BACKSPACE,action:EC(tm,t,!1)},{keyCode:Oh.DELETE,action:EC(tm,t,!0)},{keyCode:Oh.BACKSPACE,action:EC(tf,t,!1)},{keyCode:Oh.DELETE,action:EC(tf,t,!0)},{
 keyCode:Oh.BACKSPACE,action:EC(Jl,t,!1)},{keyCode:Oh.DELETE,action:EC(Jl,t,!0)},{keyCode:Oh.BACKSPACE,action:EC(_C,t,!1)},{keyCode:Oh.DELETE,action:EC(_C,t,!0)}],r).each(function(e){r.preventDefault()}))}),o.on("keyup",function(e){var t,n;!1===e.isDefaultPrevented()&&(t=o,n=e,SC([{keyCode:Oh.BACKSPACE,action:EC(Df,t)},{keyCode:Oh.DELETE,action:EC(Df,t)}],n))})},BC=function(e){return A.from(e.dom.getParent(e.selection.getStart(!0),e.dom.isBlock))},OC=function(e,t){var n,r,o,i=t,a=e.dom,u=e.schema.getMoveCaretBeforeOnEnterElements();if(t){if(/^(LI|DT|DD)$/.test(t.nodeName)){var s=function(e){for(;e;){if(1===e.nodeType||3===e.nodeType&&e.data&&/[\r\n\s]/.test(e.data))return e;e=e.nextSibling}}(t.firstChild);s&&/^(UL|OL|DL)$/.test(s.nodeName)&&t.insertBefore(a.doc.createTextNode("\xa0"),t.firstChild)}if(o=a.createRng(),t.normalize(),t.hasChildNodes()){for(n=new ro(t,t);r=n.current();){if(_o.isText(r)){o.setStart(r,0),o.setEnd(r
 ,0);break}if(u[r.nodeName.toLowerCase()]){o.setStartBefore(r),o.setEndBefore(r);break}i=r,r=n.next()}r||(o.setStart(i,0),o.setEnd(i,0))}else _o.isBr(t)?t.nextSibling&&a.isBlock(t.nextSibling)?(o.setStartBefore(t),o.setEndBefore(t)):(o.setStartAfter(t),o.setEndAfter(t)):(o.setStart(t,0),o.setEnd(t,0));e.selection.setRng(o),a.remove(void 0),e.selection.scrollIntoView(t)}},PC=function(e,t){var n,r,o=e.getRoot();for(n=t;n!==o&&"false"!==e.getContentEditable(n);)"true"===e.getContentEditable(n)&&(r=n),n=n.parentNode;return n!==o?r:o},LC=BC,IC=function(e){return BC(e).fold(j(""),function(e){return e.nodeName.toUpperCase()})},MC=function(e){return BC(e).filter(function(e){return po(rr.fromDom(e))}).isSome()},FC=function(e,t){return e&&e.parentNode&&e.parentNode.nodeName===t},zC=function(e){return e&&/^(OL|UL|LI)$/.test(e.nodeName)},UC=function(e){var t=e.parentNode;return/^(LI|DT|DD)$/.test(t.nodeName)?t:e},VC=fu
 nction(e,t,n){for(var r=e[n?"firstChild":"lastChild"];r&&!_o.isElement(r);)r=r[n?"nextSibling":"previousSibling"];return r===t},HC=function(e,t,n,r,o){var i=e.dom,a=e.selection.getRng();if(n!==e.getBody()){var u;zC(u=n)&&zC(u.parentNode)&&(o="LI");var s,c,l=o?t(o):i.create("BR");if(VC(n,r,!0)&&VC(n,r,!1))FC(n,"LI")?i.insertAfter(l,UC(n)):i.replace(l,n);else if(VC(n,r,!0))FC(n,"LI")?(i.insertAfter(l,UC(n)),l.appendChild(i.doc.createTextNode(" ")),l.appendChild(n)):n.parentNode.insertBefore(l,n);else if(VC(n,r,!1))i.insertAfter(l,UC(n));else{n=UC(n);var f=a.cloneRange();f.setStartAfter(r),f.setEndAfter(n);var d=f.extractContents();"LI"===o&&(c="LI",(s=d).firstChild&&s.firstChild.nodeName===c)?(l=d.firstChild,i.insertAfter(d,n)):(i.insertAfter(d,n),i.insertAfter(l,n))}i.remove(r),OC(e,l)}},jC=function(e){e.innerHTML='<br data-m
 ce-bogus="1">'},qC=function(e,t){return e.nodeName===t||e.previousSibling&&e.previousSibling.nodeName===t},$C=function(e,t){return t&&e.isBlock(t)&&!/^(TD|TH|CAPTION|FORM)$/.test(t.nodeName)&&!/^(fixed|absolute)/i.test(t.style.position)&&"true"!==e.getContentEditable(t)},WC=function(e,t,n){return!1===_o.isText(t)?n:e?1===n&&t.data.charAt(n-1)===ca?0:n:n===t.data.length-1&&t.data.charAt(n)===ca?t.data.length:n},KC=function(e,t){var n,r,o=e.getRoot();for(n=t;n!==o&&"false"!==e.getContentEditable(n);)"true"===e.getContentEditable(n)&&(r=n),n=n.parentNode;return n!==o?r:o},XC=function(e,t){var n=mm(e);n&&n.toLowerCase()===t.tagName.toLowerCase()&&e.dom.setAttribs(t,gm(e))},YC=function(a,e){var t,u,s,i,c,n,r,o,l,f,d,m,g,p,h,v,b,y,C,x=a.dom,w=a.schema,N=w.getNonEmptyElements(),E=a.selection.getRng(),S=function(e){var t,n,r,o=s,i=w.getTextInlineElements();if(e|
 |"TABLE"===f||"HR"===f?(t=x.create(e||m),XC(a,t)):t=c.cloneNode(!1),r=t,!1===vm(a))x.setAttrib(t,"style",null),x.setAttrib(t,"class",null);else do{if(i[o.nodeName]){if(Fu(o))continue;n=o.cloneNode(!1),x.setAttrib(n,"id",""),t.hasChildNodes()?n.appendChild(t.firstChild):r=n,t.appendChild(n)}}while((o=o.parentNode)&&o!==u);return jC(r),t},k=function(e){var t,n,r,o;if(o=WC(e,s,i),_o.isText(s)&&(e?0<o:o<s.nodeValue.length))return!1;if(s.parentNode===c&&g&&!e)return!0;if(e&&_o.isElement(s)&&s===c.firstChild)return!0;if(qC(s,"TABLE")||qC(s,"HR"))return g&&!e||!g&&e;for(t=new ro(s,c),_o.isText(s)&&(e&&0===o?t.prev():e||o!==s.nodeValue.length||t.next());n=t.current();){if(_o.isElement(n)){if(!n.getAttribute("data-mce-bogus")&&(r=n.nodeName.toLowerCase(),N[r]&&"br"!==r))return!1}else if(_o.isT
 ext(n)&&!/^[ \t\r\n]*$/.test(n.nodeValue))return!1;e?t.prev():t.next()}return!0},T=function(){r=/^(H[1-6]|PRE|FIGURE)$/.test(f)&&"HGROUP"!==d?S(m):S(),bm(a)&&$C(x,l)&&x.isEmpty(c)?r=x.split(l,c):x.insertAfter(r,c),OC(a,r)};jm(x,E).each(function(e){E.setStart(e.startContainer,e.startOffset),E.setEnd(e.endContainer,e.endOffset)}),s=E.startContainer,i=E.startOffset,m=mm(a),n=e.shiftKey,_o.isElement(s)&&s.hasChildNodes()&&(g=i>s.childNodes.length-1,s=s.childNodes[Math.min(i,s.childNodes.length-1)]||s,i=g&&_o.isText(s)?s.nodeValue.length:0),(u=KC(x,s))&&((m&&!n||!m&&n)&&(s=function(e,t,n,r,o){var i,a,u,s,c,l,f,d=t||"P",m=e.dom,g=KC(m,r);if(!(a=m.getParent(r,m.isBlock))||!$C(m,a)){if(l=(a=a||g)===e.getBody()||(f=a)&&/^(TD|TH|CAPTION)$/.test(f.nodeName)?a.nodeName.toLowerCase():a.parentNode.nodeName.toLowerCase(),!a.hasChildNodes())return i=m.create(d),XC(e,i),a.appendChil
 d(i),n.setStart(i,0),n.setEnd(i,0),i;for(s=r;s.parentNode!==a;)s=s.parentNode;for(;s&&!m.isBlock(s);)s=(u=s).previousSibling;if(u&&e.schema.isValidChild(l,d.toLowerCase())){for(i=m.create(d),XC(e,i),u.parentNode.insertBefore(i,u),s=u;s&&!m.isBlock(s);)c=s.nextSibling,i.appendChild(s),s=c;n.setStart(r,o),n.setEnd(r,o)}}return r}(a,m,E,s,i)),c=x.getParent(s,x.isBlock),l=c?x.getParent(c.parentNode,x.isBlock):null,f=c?c.nodeName.toUpperCase():"","LI"!==(d=l?l.nodeName.toUpperCase():"")||e.ctrlKey||(l=(c=l).parentNode,f=d),/^(LI|DT|DD)$/.test(f)&&x.isEmpty(c)?HC(a,S,l,c,m):m&&c===a.getBody()||(m=m||"P",ma(c)?(r=wa(c),x.isEmpty(c)&&jC(c),OC(a,r)):k()?T():k(!0)?(r=c.parentNode.insertBefore(S(),c),OC(a,qC(c,"HR")?r:c)):((t=(y=E,C=y.cloneRange(),C.setStart(y.startContainer,WC(!0,y.startContainer,y.startOffset)),C.setEnd(y.endContainer,WC(!1,y.endContainer,y.endOffset)),C).cloneRange()).setEndAft
 er(c),o=t.extractContents(),b=o,F(Ui(rr.fromDom(b),lr),function(e){var t=e.dom();t.nodeValue=la(t.nodeValue)}),function(e){for(;_o.isText(e)&&(e.nodeValue=e.nodeValue.replace(/^[\r\n]+/,"")),e=e.firstChild;);}(o),r=o.firstChild,x.insertAfter(o,c),function(e,t,n){var r,o=n,i=[];if(o){for(;o=o.firstChild;){if(e.isBlock(o))return;_o.isElement(o)&&!t[o.nodeName.toLowerCase()]&&i.push(o)}for(r=i.length;r--;)!(o=i[r]).hasChildNodes()||o.firstChild===o.lastChild&&""===o.firstChild.nodeValue?e.remove(o):(a=e,(u=o)&&"A"===u.nodeName&&a.isEmpty(u)&&e.remove(o));var a,u}}(x,N,r),p=x,(h=c).normalize(),(v=h.lastChild)&&!/^(left|right)$/gi.test(p.getStyle(v,"float",!0))||p.add(h,"br"),x.isEmpty(c)&&jC(c),r.normalize(),x.isEmpty(r)?(x.remove(r),T()):OC(a,r)),x.setAttrib(r,"id",""),a.fire("NewBlock",{newBlock:r})))},GC=function(e,t){return LC(e).fil
 ter(function(e){return 0<t.length&&Dr(rr.fromDom(e),t)}).isSome()},JC=function(e){return GC(e,pm(e))},QC=function(e){return GC(e,hm(e))},ZC=nf([{br:[]},{block:[]},{none:[]}]),ex=function(e,t){return QC(e)},tx=function(n){return function(e,t){return""===mm(e)===n}},nx=function(n){return function(e,t){return MC(e)===n}},rx=function(n,r){return function(e,t){return IC(e)===n.toUpperCase()===r}},ox=function(e){return rx("pre",e)},ix=function(n){return function(e,t){return dm(e)===n}},ax=function(e,t){return JC(e)},ux=function(e,t){return t},sx=function(e){var t=mm(e),n=PC(e.dom,e.selection.getStart());return n&&e.schema.isValidChild(n.nodeName,t||"P")},cx=function(e,t){return function(n,r){return U(e,function(e,t){return e&&t(n,r)},!0)?A.some(t):A.none()}},lx=function(e,t){return Hf([cx([ex],ZC.none()),cx([rx("summary",!0)],ZC.br()),cx([ox(!0),ix(!1),ux],ZC.br()),cx([ox(!0),ix(!1)],ZC.block()),cx([ox(!0),ix(!0),ux],ZC.bl
 ock()),cx([ox(!0),ix(!0)],ZC.br()),cx([nx(!0),ux],ZC.br()),cx([nx(!0)],ZC.block()),cx([tx(!0),ux,sx],ZC.block()),cx([tx(!0)],ZC.br()),cx([ax],ZC.br()),cx([tx(!1),ux],ZC.br()),cx([sx],ZC.block())],[e,t.shiftKey]).getOr(ZC.none())},fx=function(e,t){lx(e,t).fold(function(){Zm(e,t)},function(){YC(e,t)},o)},dx=function(o){o.on("keydown",function(e){var t,n,r;e.keyCode===Oh.ENTER&&(t=o,(n=e).isDefaultPrevented()||(n.preventDefault(),(r=t.undoManager).typing&&(r.typing=!1,r.add()),t.undoManager.transact(function(){!1===t.selection.isCollapsed()&&t.execCommand("Delete"),fx(t,n)})))})},mx=function(n,r){var e=r.container(),t=r.offset();return _o.isText(e)?(e.insertData(t,n),A.some(du(e,t+n.length))):Ps(r).map(function(e){var t=rr.fromText(n);return r.isAtEnd()?Ei(e,t):Ni(e,t),du(t.dom(),n.length)})},gx=d(mx,"\xa0"),px=d(mx," "),hx=function(t,n,r){var e=z(Hl(rr.fromDom(r.container()),n),co);return ee(e).fold(function(){return ic.n
 avigate(t,n.dom(),r).forall(function(e){return!1===hs(e,r,n.dom())})},function(e){return ic.navigate(t,e.dom(),r).isNone()})},vx=d(hx,!1),bx=d(hx,!0),yx=function(e){return du.isTextPosition(e)&&!e.isAtStart()&&!e.isAtEnd()},Cx=function(e,t){var n=z(Hl(rr.fromDom(t.container()),e),co);return ee(n).getOr(e)},xx=function(e,t){return yx(t)?Os(t):Os(t)||ic.prevPosition(Cx(e,t).dom(),t).exists(Os)},wx=function(e,t){return yx(t)?Bs(t):Bs(t)||ic.nextPosition(Cx(e,t).dom(),t).exists(Bs)},Nx=function(e){return Ps(e).bind(function(e){return $i(e,cr)}).exists(function(e){return t=wr(e,"white-space"),M(["pre","pre-line","pre-wrap"],t);var t})},Ex=function(e,t){return o=e,i=t,ic.prevPosition(o.dom(),i).isNone()||(n=e,r=t,ic.nextPosition(n.dom(),r).isNone())||vx(e,t)||bx(e,t)||uf(e,t)||af(e,t);var n,r,o,i},Sx=function(e,t){return ns(e.charAt(t))},kx=function(e){var t=e.container();return _o.isText(t)&&Wn(t.data,"\xa0")},Tx=f
 unction(e,t,n){var r,o,i=du(t,0);return Sx(n,0)&&(r=e,Nx(o=i)||!(vx(r,o)||uf(r,o)||xx(r,o)))?" "+n.slice(1):n},Ax=function(e,t,n){var r,o,i=du(t,n.length);return Sx(n,n.length-1)&&(r=e,Nx(o=i)||!(bx(r,o)||af(r,o)||wx(r,o)))?n.slice(0,-1)+" ":n},Rx=function(i,e){return A.some(e).filter(kx).bind(function(e){var t,n=e.container(),r=n.nodeValue,o=Tx(i,n,(t=Ax(i,n,r),$(t.split(""),function(e,t,n){return ns(e)&&0<t&&t<n.length-1&&os(n[t-1])&&os(n[t+1])?" ":e}).join("")));return r!==o?(e.container().nodeValue=o,A.some(e)):A.none()})},_x=function(t){var e=rr.fromDom(t.getBody());t.selection.isCollapsed()&&Rx(e,du.fromRangeStart(t.selection.getRng())).each(function(e){t.selection.setRng(e.toRange())})},Dx=function(r,o){return function(e){return t=r,!Nx(n=e)&&(Ex(t,n)||xx(t,n)||wx(t,n))?gx(o):px(o);var t,n}},Bx=function(e){var t,n,r=hu.fromRangeStart(e.selection.getRng()),o=
 rr.fromDom(e.getBody());if(e.selection.isCollapsed()){var i=d(El.isInlineTarget,e),a=hu.fromRangeStart(e.selection.getRng());return ad(i,e.getBody(),a).bind((n=o,function(e){return e.fold(function(e){return ic.prevPosition(n.dom(),hu.before(e))},function(e){return ic.firstPositionIn(e)},function(e){return ic.lastPositionIn(e)},function(e){return ic.nextPosition(n.dom(),hu.after(e))})})).bind(Dx(o,r)).exists((t=e,function(e){return t.selection.setRng(e.toRange()),t.nodeChanged(),!0}))}return!1},Ox=function(r){r.on("keydown",function(e){var t,n;!1===e.isDefaultPrevented()&&(t=r,n=e,SC([{keyCode:Oh.SPACEBAR,action:EC(Bx,t)}],n).each(function(e){n.preventDefault()}))})},Px=function(e,t){var n;t.hasAttribute("data-mce-caret")&&(wa(t),(n=e).selection.setRng(n.selection.getRng()),e.selection.scrollIntoView(t))},Lx=function(e,t){var n,r=(n=e,Ki(rr.fromDom(n.getBody()),"*[data-mce-caret]").fold(j(null),function(e){return e.dom()}));if(r)return&qu
 ot;compositionstart"===t.type?(t.preventDefault(),t.stopPropagation(),void Px(e,r)):void(ha(r)&&(Px(e,r),e.undoManager.add()))},Ix=function(e){e.on("keyup compositionstart",d(Lx,e))},Mx=tr.detect().browser,Fx=function(t){var e,n;e=t,n=Di(function(){e.composing||_x(e)},0),Mx.isIE()&&(e.on("keypress",function(e){n.throttle()}),e.on("remove",function(e){n.cancel()})),t.on("input",function(e){!1===e.isComposing&&_x(t)})},zx=function(e){var t=bd.setupSelectedState(e);Ix(e),kC(e,t),DC(e,t),dx(e),Ox(e),Fx(e)};function Ux(u){var s,n,r,o=Yt.each,c=Oh.BACKSPACE,l=Oh.DELETE,f=u.dom,d=u.selection,e=u.settings,t=u.parser,i=de.gecko,a=de.ie,m=de.webkit,g="data:text/mce-internal,",p=a?"Text":"URL",h=function(e,t){try{u.getDoc().execCommand(e,!1,t)}catch(n){}},v=function(e){return e.isDefaultPrevented()},b=function(){u.shortcuts.add("meta+a",null,"SelectAll")},y=function(){u.on(&qu
 ot;keydown",function(e){if(!v(e)&&e.keyCode===c&&d.isCollapsed()&&0===d.getRng().startOffset){var t=d.getNode().previousSibling;if(t&&t.nodeName&&"table"===t.nodeName.toLowerCase())return e.preventDefault(),!1}})},C=function(){u.inline||(u.contentStyles.push("body {min-height: 150px}"),u.on("click",function(e){var t;if("HTML"===e.target.nodeName){if(11<de.ie)return void u.getBody().focus();t=u.selection.getRng(),u.getBody().focus(),u.selection.setRng(t),u.selection.normalize(),u.nodeChanged()}}))};return u.on("keydown",function(e){var t,n,r,o,i;if(!v(e)&&e.keyCode===Oh.BACKSPACE&&(n=(t=d.getRng()).startContainer,r=t.startOffset,o=f.getRoot(),i=n,t.collapsed&&0===r)){for(;i&&i.parentNode&&i.parentNode.firstChild===i&&i.parentNode!==o;)i=i.parentNode;"BLOCKQUOTE"===i.tagName&&(u.formatter.toggle("blockquote",null,
 i),(t=f.createRng()).setStart(n,0),t.setEnd(n,0),d.setRng(t))}}),s=function(e){var t=f.create("body"),n=e.cloneContents();return t.appendChild(n),d.serializer.serialize(t,{format:"html"})},u.on("keydown",function(e){var t,n,r,o,i,a=e.keyCode;if(!v(e)&&(a===l||a===c)){if(t=u.selection.isCollapsed(),n=u.getBody(),t&&!f.isEmpty(n))return;if(!t&&(r=u.selection.getRng(),o=s(r),(i=f.createRng()).selectNode(u.getBody()),o!==s(i)))return;e.preventDefault(),u.setContent(""),n.firstChild&&f.isBlock(n.firstChild)?u.selection.setCursorLocation(n.firstChild,0):u.selection.setCursorLocation(n,0),u.nodeChanged()}}),de.windowsPhone||u.on("keyup focusin mouseup",function(e){Oh.modifierPressed(e)||d.normalize()},!0),m&&(u.settings.content_editable||f.bind(u.getDoc(),"mousedown mouseup",function(e){var t;if(e.target===u.getDoc().documentElement)if(t=d.getRng(),u.getBody().focus(),"mousedown"==
 =e.type){if(pa(t.startContainer))return;d.placeCaretAt(e.clientX,e.clientY)}else d.setRng(t)}),u.on("click",function(e){var t=e.target;/^(IMG|HR)$/.test(t.nodeName)&&"false"!==f.getContentEditableParent(t)&&(e.preventDefault(),u.selection.select(t),u.nodeChanged()),"A"===t.nodeName&&f.hasClass(t,"mce-item-anchor")&&(e.preventDefault(),d.select(t))}),e.forced_root_block&&u.on("init",function(){h("DefaultParagraphSeparator",e.forced_root_block)}),u.on("init",function(){u.dom.bind(u.getBody(),"submit",function(e){e.preventDefault()})}),y(),t.addNodeFilter("br",function(e){for(var t=e.length;t--;)"Apple-interchange-newline"===e[t].attr("class")&&e[t].remove()}),de.iOS?(u.inline||u.on("keydown",function(){document.activeElement===document.body&&u.getWin().focus()}),C(),u.on("click",function(e){var t=e.tar
 get;do{if("A"===t.tagName)return void e.preventDefault()}while(t=t.parentNode)}),u.contentStyles.push(".mce-content-body {-webkit-touch-callout: none}")):b()),11<=de.ie&&(C(),y()),de.ie&&(b(),h("AutoUrlDetect",!1),u.on("dragstart",function(e){var t,n,r;(t=e).dataTransfer&&(u.selection.isCollapsed()&&"IMG"===t.target.tagName&&d.select(t.target),0<(n=u.selection.getContent()).length&&(r=g+escape(u.id)+","+escape(n),t.dataTransfer.setData(p,r)))}),u.on("drop",function(e){if(!v(e)){var t=(i=e).dataTransfer&&(a=i.dataTransfer.getData(p))&&0<=a.indexOf(g)?(a=a.substr(g.length).split(","),{id:unescape(a[0]),html:unescape(a[1])}):null;if(t&&t.id!==u.id){e.preventDefault();var n=uy(e.x,e.y,u.getDoc());d.setRng(n),r=t.html,o=!0,u.queryCommandSupported("mceInsertClipboardContent")?u.execCommand("mceInsertClipboardContent
 ",!1,{content:r,internal:o}):u.execCommand("mceInsertContent",!1,r)}}var r,o,i,a})),i&&(u.on("keydown",function(e){if(!v(e)&&e.keyCode===c){if(!u.getBody().getElementsByTagName("hr").length)return;if(d.isCollapsed()&&0===d.getRng().startOffset){var t=d.getNode(),n=t.previousSibling;if("HR"===t.nodeName)return f.remove(t),void e.preventDefault();n&&n.nodeName&&"hr"===n.nodeName.toLowerCase()&&(f.remove(n),e.preventDefault())}}}),Range.prototype.getClientRects||u.on("mousedown",function(e){if(!v(e)&&"HTML"===e.target.nodeName){var t=u.getBody();t.blur(),ve.setEditorTimeout(u,function(){t.focus()})}}),n=function(){var e=f.getAttribs(d.getStart().cloneNode(!1));return function(){var t=d.getStart();t!==u.getBody()&&(f.setAttrib(t,"style",null),o(e,function(e){t.setAttributeNode(e.cloneNode(!0))}))}},r=function(){return!d.isCollapsed()&&a
 mp;f.getParent(d.getStart(),f.isBlock)!==f.getParent(d.getEnd(),f.isBlock)},u.on("keypress",function(e){var t;if(!v(e)&&(8===e.keyCode||46===e.keyCode)&&r())return t=n(),u.getDoc().execCommand("delete",!1,null),t(),e.preventDefault(),!1}),f.bind(u.getDoc(),"cut",function(e){var t;!v(e)&&r()&&(t=n(),ve.setEditorTimeout(u,function(){t()}))}),e.readonly||u.on("BeforeExecCommand MouseDown",function(){h("StyleWithCSS",!1),h("enableInlineTableEditing",!1),e.object_resizing||h("enableObjectResizing",!1)}),u.on("SetContent ExecCommand",function(e){"setcontent"!==e.type&&"mceInsertLink"!==e.command||o(f.select("a"),function(e){var t=e.parentNode,n=f.getRoot();if(t.lastChild===e){for(;t&&!f.isBlock(t);){if(t.parentNode.lastChild!==t||t===n)return;t=t.parentNode}f.add(t,"br",{"data-mce-bogus":1})}})}),u.contentStyles.p
 ush("img:-moz-broken {-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}"),de.mac&&u.on("keydown",function(e){!Oh.metaKeyPressed(e)||e.shiftKey||37!==e.keyCode&&39!==e.keyCode||(e.preventDefault(),u.selection.getSel().modify("move",37===e.keyCode?"backward":"forward","lineboundary"))}),y()),{refreshContentEditable:function(){},isHidden:function(){var e;return!i||u.removed?0:!(e=u.selection.getSel())||!e.rangeCount||0===e.rangeCount}}}var Vx=function(e){return _o.isElement(e)&&mo(rr.fromDom(e))},Hx=function(t){t.on("click",function(e){3<=e.detail&&function(e){var t=e.selection.getRng(),n=du.fromRangeStart(t),r=du.fromRangeEnd(t);if(du.isElementPosition(n)){var o=n.container();Vx(o)&&ic.firstPositionIn(o).each(function(e){return t.setStart(e.container(),e.offset())})}du.isElementPosition(r)&&(o=n.container(),Vx(o)&&ic.lastPositionIn(o).each(funct
 ion(e){return t.setEnd(e.container(),e.offset())})),e.selection.setRng(il(t))}(t)})},jx=function(e){var t,n;(t=e).on("click",function(e){t.dom.getParent(e.target,"details")&&e.preventDefault()}),(n=e).parser.addNodeFilter("details",function(e){F(e,function(e){e.attr("data-mce-open",e.attr("open")),e.attr("open","open")})}),n.serializer.addNodeFilter("details",function(e){F(e,function(e){var t=e.attr("data-mce-open");e.attr("open",R(t)?t:null),e.attr("data-mce-open",null)})})},qx=gi.DOM,$x=function(e){var t;e.bindPendingEventDelegates(),e.initialized=!0,e.fire("init"),e.focus(!0),e.nodeChanged({initial:!0}),e.execCallback("init_instance_callback",e),(t=e).settings.auto_focus&&ve.setEditorTimeout(t,function(){var e;(e=!0===t.settings.auto_focus?t:t.editorManager.get(t.settings.auto_focus)).destroyed||e.focus()},100)},Wx=function(t,e){var n,r
 ,u,o,i,a,s,c,l,f=t.settings,d=t.getElement(),m=t.getDoc();f.inline||(t.getElement().style.visibility=t.orgVisibility),e||f.content_editable||(m.open(),m.write(t.iframeHTML),m.close()),f.content_editable&&(t.on("remove",function(){var e=this.getBody();qx.removeClass(e,"mce-content-body"),qx.removeClass(e,"mce-edit-focus"),qx.setAttrib(e,"contentEditable",null)}),qx.addClass(d,"mce-content-body"),t.contentDocument=m=f.content_document||document,t.contentWindow=f.content_window||window,t.bodyElement=d,f.content_document=f.content_window=null,f.root_name=d.nodeName.toLowerCase()),(n=t.getBody()).disabled=!0,t.readonly=f.readonly,t.readonly||(t.inline&&"static"===qx.getStyle(n,"position",!0)&&(n.style.position="relative"),n.contentEditable=t.getParam("content_editable_state",!0)),n.disabled=!1,t.editorUpload=Vp(t),t.schema=ti(f),t.dom=gi(m,{keep_values:!0,url_converter:t.conv
 ertURL,url_converter_scope:t,hex_colors:f.force_hex_style_colors,class_filter:f.class_filter,update_styles:!0,root_element:t.inline?t.getBody():null,collect:f.content_editable,schema:t.schema,contentCssCors:Rm(t),onSetAttrib:function(e){t.fire("SetAttrib",e)}}),t.parser=((o=qb((u=t).settings,u.schema)).addAttributeFilter("src,href,style,tabindex",function(e,t){for(var n,r,o,i=e.length,a=u.dom;i--;)if(r=(n=e[i]).attr(t),o="data-mce-"+t,!n.attributes.map[o]){if(0===r.indexOf("data:")||0===r.indexOf("blob:"))continue;"style"===t?((r=a.serializeStyle(a.parseStyle(r),n.name)).length||(r=null),n.attr(o,r),n.attr(t,r)):"tabindex"===t?(n.attr(o,r),n.attr(t,null)):n.attr(o,u.convertURL(r,t,n.name))}}),o.addNodeFilter("script",function(e){for(var t,n,r=e.length;r--;)0!==(n=(t=e[r]).attr("type")||"no/type").indexOf("mce-")&&t.attr("type","mce-"+n)}),o.addNod
 eFilter("#cdata",function(e){for(var t,n=e.length;n--;)(t=e[n]).type=8,t.name="#comment",t.value="[CDATA["+t.value+"]]"}),o.addNodeFilter("p,h1,h2,h3,h4,h5,h6,div",function(e){for(var t,n=e.length,r=u.schema.getNonEmptyElements();n--;)(t=e[n]).isEmpty(r)&&0===t.getAll("br").length&&(t.append(new Ob("br",1)).shortEnded=!0)}),o),t.serializer=Yb(f,t),t.selection=Ly(t.dom,t.getWin(),t.serializer,t),t.annotator=Uc(t),t.formatter=xb(t),t.undoManager=uv(t),t._nodeChangeDispatcher=new Qp(t),t._selectionOverrides=zh(t),jx(t),Hx(t),zx(t),Wp(t),t.fire("PreInit"),f.browser_spellcheck||f.gecko_spellcheck||(m.body.spellcheck=!1,qx.setAttrib(n,"spellcheck","false")),t.quirks=Ux(t),t.fire("PostRender"),f.directionality&&(n.dir=f.directionality),f.nowrap&&(n.style.whiteSpace="nowrap"),f.protect&&t.on("BeforeSetContent",function(t){Y
 t.each(f.protect,function(e){t.content=t.content.replace(e,function(e){return"\x3c!--mce:protected "+escape(e)+"--\x3e"})})}),t.on("SetContent",function(){t.addVisual(t.getBody())}),t.load({initial:!0,format:"html"}),t.startContent=t.getContent({format:"raw"}),t.on("compositionstart compositionend",function(e){t.composing="compositionstart"===e.type}),0<t.contentStyles.length&&(r="",Yt.each(t.contentStyles,function(e){r+=e+"\r\n"}),t.dom.addStyle(r)),(i=t,i.inline?qx.styleSheetLoader:i.dom.styleSheetLoader).loadAll(t.contentCSS,function(e){$x(t)},function(e){$x(t)}),f.content_style&&(a=t,s=f.content_style,c=rr.fromDom(a.getDoc().head),l=rr.fromTag("style"),hr(l,"type","text/css"),ki(l,rr.fromText(s)),ki(c,l))},Kx=gi.DOM,Xx=function(e,t){var n,r,o,i,a,u,s,c=e.editorManager.translate("Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for to
 olbar. Press ALT-0 for help"),l=(n=e.id,r=c,o=t.height,i=am(e),s=rr.fromTag("iframe"),vr(s,i),vr(s,{id:n+"_ifr",frameBorder:"0",allowTransparency:"true",title:r}),xr(s,{width:"100%",height:(a=o,u="number"==typeof a?a+"px":a,u||""),display:"block"}),s).dom();l.onload=function(){l.onload=null,e.fire("load")};var f,d,m,g,p=function(e,t){if(document.domain!==window.location.hostname&&de.ie&&de.ie<12){var n=Up.uuid("mce");e[n]=function(){Wx(e)};var r='javascript:(function(){document.open();document.domain="'+document.domain+'";var ed = window.parent.tinymce.get("'+e.id+'");document.write(ed.iframeHTML);document.close();ed.'+n+"(true);})()";return Kx.setAttrib(t,"src",r),!0}return!1}(e,l);return e.contentAreaContainer=t.iframeContainer,e.iframeElement=l,e.iframeHTML=(g=um(f=e)+"<html><head>",sm(f
 )!==f.documentBaseUrl&&(g+='<base href="'+f.documentBaseURI.getURI()+'" />'),g+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />',d=cm(f),m=lm(f),fm(f)&&(g+='<meta http-equiv="Content-Security-Policy" content="'+fm(f)+'" />'),g+='</head><body id="'+d+'" class="mce-content-body '+m+'" data-id="'+f.id+'"><br></body></html>'),Kx.add(t.iframeContainer,l),p},Yx=function(e,t){var n=Xx(e,t);t.editorContainer&&(Kx.get(t.editorContainer).style.display=e.orgDisplay,e.hidden=Kx.isHidden(t.editorContainer)),e.getElement().style.display="none",Kx.setAttrib(e.id,"aria-hidden","true"),n||Wx(e)},Gx=gi.DOM,Jx=function(t,n,e){var r,o,i=Sp.get(e);if(r=Sp.urls[e]||t.documentBaseUrl.replace(/\/$/,""),e=Yt.trim(e),i&&-1===Yt.inArray(n,e)){if(Yt.each(Sp.dependencies(e),function(e){Jx(t,n
 ,e)}),t.plugins[e])return;o=new i(t,r,t.$),(t.plugins[e]=o).init&&(o.init(t,r),n.push(e))}},Qx=function(e){return e.replace(/^\-/,"")},Zx=function(e){return{editorContainer:e,iframeContainer:e}},ew=function(e){var t,n,r=e.getElement();return e.inline?Zx(null):(t=r,n=Gx.create("div"),Gx.insertAfter(n,t),Zx(n))},tw=function(e){var t,n,r,o,i,a,u,s,c,l,f,d=e.settings,m=e.getElement();return e.orgDisplay=m.style.display,R(d.theme)?(l=(o=e).settings,f=o.getElement(),i=l.width||Gx.getStyle(f,"width")||"100%",a=l.height||Gx.getStyle(f,"height")||f.offsetHeight,u=l.min_height||100,(s=/^[0-9\.]+(|px)$/i).test(""+i)&&(i=Math.max(parseInt(i,10),100)),s.test(""+a)&&(a=Math.max(parseInt(a,10),u)),c=o.theme.renderUI({targetNode:f,width:i,height:a,deltaWidth:l.delta_width,deltaHeight:l.delta_height}),l.content_editable||(a=(c.iframeHeight||a)+("number"==typeof a?c.deltaHeight||0:""))&lt
 ;u&&(a=u),c.height=a,c):P(d.theme)?(r=(t=e).getElement(),(n=t.settings.theme(t,r)).editorContainer.nodeType&&(n.editorContainer.id=n.editorContainer.id||t.id+"_parent"),n.iframeContainer&&n.iframeContainer.nodeType&&(n.iframeContainer.id=n.iframeContainer.id||t.id+"_iframecontainer"),n.height=n.iframeHeight?n.iframeHeight:r.offsetHeight,n):ew(e)},nw=function(t){var e,n,r,o,i,a,u=t.settings,s=t.getElement();return t.rtl=u.rtl_ui||t.editorManager.i18n.rtl,t.editorManager.i18n.setCode(u.language),u.aria_label=u.aria_label||Gx.getAttrib(s,"aria-label",t.getLang("aria.rich_text_area")),t.fire("ScriptsLoaded"),o=(n=t).settings.theme,R(o)?(n.settings.theme=Qx(o),r=kp.get(o),n.theme=new r(n,kp.urls[o]),n.theme.init&&n.theme.init(n,kp.urls[o]||n.documentBaseUrl.replace(/\/$/,""),n.$)):n.theme={},i=t,a=[],Yt.each(i.settings.plugins.split(/[ ,]/),function(e){Jx(i,a,Qx(e))}),e=tw(t),t.editorConta
 iner=e.editorContainer?e.editorContainer:null,u.content_css&&Yt.each(Yt.explode(u.content_css),function(e){t.contentCSS.push(t.documentBaseURI.toAbsolute(e))}),u.content_editable?Wx(t):Yx(t,e)},rw=gi.DOM,ow=function(e){return"-"===e.charAt(0)},iw=function(i,a){var u=yi.ScriptLoader;!function(e,t,n,r){var o=t.settings,i=o.theme;if(R(i)){if(!ow(i)&&!kp.urls.hasOwnProperty(i)){var a=o.theme_url;a?kp.load(i,t.documentBaseURI.toAbsolute(a)):kp.load(i,"themes/"+i+"/theme"+n+".js")}e.loadQueue(function(){kp.waitFor(i,r)})}else r()}(u,i,a,function(){var e,t,n,r,o;e=u,(n=(t=i).settings).language&&"en"!==n.language&&!n.language_url&&(n.language_url=t.editorManager.baseURL+"/langs/"+n.language+".js"),n.language_url&&!t.editorManager.i18n.data[n.language]&&e.add(n.language_url),r=i.settings,o=a,Yt.isArray(r.plugins)&&(r.plugins=r.plugins.join(" ")),Yt.e
 ach(r.external_plugins,function(e,t){Sp.load(t,e),r.plugins+=" "+t}),Yt.each(r.plugins.split(/[ ,]/),function(e){if((e=Yt.trim(e))&&!Sp.urls[e])if(ow(e)){e=e.substr(1,e.length);var t=Sp.dependencies(e);Yt.each(t,function(e){var t={prefix:"plugins/",resource:e,suffix:"/plugin"+o+".js"};e=Sp.createUrl(t,e),Sp.load(e.resource,e)})}else Sp.load(e,{prefix:"plugins/",resource:e,suffix:"/plugin"+o+".js"})}),u.loadQueue(function(){i.removed||nw(i)},i,function(e){xp(i,e[0]),i.removed||nw(i)})})},aw=function(t){var e=t.settings,n=t.id,r=function(){rw.unbind(window,"ready",r),t.render()};if(ke.Event.domLoaded){if(t.getElement()&&de.contentEditable){e.inline?t.inline=!0:(t.orgVisibility=t.getElement().style.visibility,t.getElement().style.visibility="hidden");var o=t.getElement().form||rw.getParent(n,"form");o&&(t.formElement=o,e.hidden_input&&!/TEXTAREA|INPUT/i.te
 st(t.getElement().nodeName)&&(rw.insertAfter(rw.create("input",{type:"hidden",name:n}),n),t.hasHiddenInput=!0),t.formEventDelegate=function(e){t.fire(e.type,e)},rw.bind(o,"submit reset",t.formEventDelegate),t.on("reset",function(){t.setContent(t.startContent,{format:"raw"})}),!e.submit_patch||o.submit.nodeType||o.submit.length||o._mceOldSubmit||(o._mceOldSubmit=o.submit,o.submit=function(){return t.editorManager.triggerSave(),t.setDirty(!1),o._mceOldSubmit(o)})),t.windowManager=hp(t),t.notificationManager=pp(t),"xml"===e.encoding&&t.on("GetContent",function(e){e.save&&(e.content=rw.encode(e.content))}),e.add_form_submit_trigger&&t.on("submit",function(){t.initialized&&t.save()}),e.add_unload_trigger&&(t._beforeUnload=function(){!t.initialized||t.destroyed||t.isHidden()||t.save({format:"raw",no_events:!0,set_dirty:!1})},t.editorManager.on("Bef
 oreUnload",t._beforeUnload)),t.editorManager.add(t),iw(t,t.suffix)}}else rw.bind(window,"ready",r)},uw=function(e,t,n){var r=e.sidebars?e.sidebars:[];r.push({name:t,settings:n}),e.sidebars=r},sw=Yt.each,cw=Yt.trim,lw="source protocol authority userInfo user password host port relative path directory file query anchor".split(" "),fw={ftp:21,http:80,https:443,mailto:25},dw=function(r,e){var t,n,o=this;if(r=cw(r),t=(e=o.settings=e||{}).base_uri,/^([\w\-]+):([^\/]{2})/i.test(r)||/^\s*#/.test(r))o.source=r;else{var i=0===r.indexOf("//");0!==r.indexOf("/")||i||(r=(t&&t.protocol||"http")+"://mce_host"+r),/^[\w\-]*:?\/\//.test(r)||(n=e.base_uri?e.base_uri.path:new dw(document.location.href).directory,""==e.base_uri.protocol?r="//mce_host"+o.toAbsPath(n,r):(r=/([^#?]*)([#?]?.*)/.exec(r),r=(t&&t.protocol||"http")+"://mce_host"+o.toAbsPath(n,r[1])+r[2])),r=r.replac
 e(/@@/g,"(mce_at)"),r=/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(r),sw(lw,function(e,t){var n=r[t];n&&(n=n.replace(/\(mce_at\)/g,"@@")),o[e]=n}),t&&(o.protocol||(o.protocol=t.protocol),o.userInfo||(o.userInfo=t.userInfo),o.port||"mce_host"!==o.host||(o.port=t.port),o.host&&"mce_host"!==o.host||(o.host=t.host),o.source=""),i&&(o.protocol="")}};dw.prototype={setPath:function(e){e=/^(.*?)\/?(\w+)?$/.exec(e),this.path=e[0],this.directory=e[1],this.file=e[2],this.source="",this.getURI()},toRelative:function(e){var t;if("./"===e)return e;if("mce_host"!==(e=new dw(e,{base_uri:this})).host&&this.host!==e.host&&e.host||this.port!==e.port||this.protocol!==e.protocol&&""!==e.protocol)re
 turn e.getURI();var n=this.getURI(),r=e.getURI();return n===r||"/"===n.charAt(n.length-1)&&n.substr(0,n.length-1)===r?n:(t=this.toRelPath(this.path,e.path),e.query&&(t+="?"+e.query),e.anchor&&(t+="#"+e.anchor),t)},toAbsolute:function(e,t){return(e=new dw(e,{base_uri:this})).getURI(t&&this.isSameOrigin(e))},isSameOrigin:function(e){if(this.host==e.host&&this.protocol==e.protocol){if(this.port==e.port)return!0;var t=fw[this.protocol];if(t&&(this.port||t)==(e.port||t))return!0}return!1},toRelPath:function(e,t){var n,r,o,i=0,a="";if(e=(e=e.substring(0,e.lastIndexOf("/"))).split("/"),n=t.split("/"),e.length>=n.length)for(r=0,o=e.length;r<o;r++)if(r>=n.length||e[r]!==n[r]){i=r+1;break}if(e.length<n.length)for(r=0,o=n.length;r<o;r++)if(r>=e.length||e[r]!==n[r]){i=r+1;break}if(1===i)return t;for(r=0,o=e.length-(i-1);r<o;r++)a+="../";for(r=i-1,o
 =n.length;r<o;r++)a+=r!==i-1?"/"+n[r]:n[r];return a},toAbsPath:function(e,t){var n,r,o,i=0,a=[];for(r=/\/$/.test(t)?"/":"",e=e.split("/"),t=t.split("/"),sw(e,function(e){e&&a.push(e)}),e=a,n=t.length-1,a=[];0<=n;n--)0!==t[n].length&&"."!==t[n]&&(".."!==t[n]?0<i?i--:a.push(t[n]):i++);return 0!==(o=(n=e.length-i)<=0?a.reverse().join("/"):e.slice(0,n).join("/")+"/"+a.reverse().join("/")).indexOf("/")&&(o="/"+o),r&&o.lastIndexOf("/")!==o.length-1&&(o+=r),o},getURI:function(e){var t,n=this;return n.source&&!e||(t="",e||(n.protocol?t+=n.protocol+"://":t+="//",n.userInfo&&(t+=n.userInfo+"@"),n.host&&(t+=n.host),n.port&&(t+=":"+n.port)),n.path&&(t+=n.path),n.query&&(t+="?"+n.query),n.anch
 or&&(t+="#"+n.anchor),n.source=t),n.source}},dw.parseDataUri=function(e){var t,n;return e=decodeURIComponent(e).split(","),(n=/data:([^;]+)/.exec(e[0]))&&(t=n[1]),{type:t,data:e[1]}},dw.getDocumentBaseUrl=function(e){var t;return t=0!==e.protocol.indexOf("http")&&"file:"!==e.protocol?e.href:e.protocol+"//"+e.host+e.pathname,/^[^:]+:\/\/\/?[^\/]+\//.test(t)&&(t=t.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,""),/[\/\\]$/.test(t)||(t+="/")),t};var mw=function(e,t,n){var r,o,i,a,u;if(t.format=t.format?t.format:"html",t.get=!0,t.getInner=!0,t.no_events||e.fire("BeforeGetContent",t),"raw"===t.format)r=Yt.trim(qh.trimExternal(e.serializer,n.innerHTML));else if("text"===t.format)r=la(n.innerText||n.textContent);else{if("tree"===t.format)return e.serializer.serialize(n,t);i=(o=e).serializer.serialize(n,t),a=mm(o),u=new RegExp(&qu
 ot;^(<"+a+"[^>]*>(&nbsp;|&#160;|\\s|\xa0|<br \\/>|)<\\/"+a+">[\r\n]*|<br \\/>[\r\n]*)$"),r=i.replace(u,"")}return"text"===t.format||yo(rr.fromDom(n))?t.content=r:t.content=Yt.trim(r),t.no_events||e.fire("GetContent",t),t.content},gw=function(e,t){t(e),e.firstChild&&gw(e.firstChild,t),e.next&&gw(e.next,t)},pw=function(e,t,n){var r=function(e,n,t){var r={},o={},i=[];for(var a in t.firstChild&&gw(t.firstChild,function(t){F(e,function(e){e.name===t.name&&(r[e.name]?r[e.name].nodes.push(t):r[e.name]={filter:e,nodes:[t]})}),F(n,function(e){"string"==typeof t.attr(e.name)&&(o[e.name]?o[e.name].nodes.push(t):o[e.name]={filter:e,nodes:[t]})})}),r)r.hasOwnProperty(a)&&i.push(r[a]);for(var a in o)o.hasOwnProperty(a)&&i.push(o[a]);return i}(e,t,n);F(r,function(t){F(t.filter.callbacks,function(e){e(t.nodes,t.filter.name,{})})})},hw=function(e
 ){return e instanceof Ob},vw=function(e,t){var r;e.dom.setHTML(e.getBody(),t),ap(r=e)&&ic.firstPositionIn(r.getBody()).each(function(e){var t=e.getNode(),n=_o.isTable(t)?ic.firstPositionIn(t).getOr(e):e;r.selection.setRng(n.toRange())})},bw=function(u,s,c){return void 0===c&&(c={}),c.format=c.format?c.format:"html",c.set=!0,c.content=hw(s)?"":s,hw(s)||c.no_events||(u.fire("BeforeSetContent",c),s=c.content),A.from(u.getBody()).fold(j(s),function(e){return hw(s)?function(e,t,n,r){pw(e.parser.getNodeFilters(),e.parser.getAttributeFilters(),n);var o=rl({validate:e.validate},e.schema).serialize(n);return r.content=yo(rr.fromDom(t))?o:Yt.trim(o),vw(e,r.content),r.no_events||e.fire("SetContent",r),n}(u,e,s,c):(t=u,n=e,o=c,0===(r=s).length||/^\s+$/.test(r)?(a='<br data-mce-bogus="1">',"TABLE"===n.nodeName?r="<tr><td>"+a+"</td></tr>":/^(UL|OL)$/.test(n.nodeName)&&
 amp;(r="<li>"+a+"</li>"),(i=mm(t))&&t.schema.isValidChild(n.nodeName.toLowerCase(),i.toLowerCase())?(r=a,r=t.dom.createHTML(i,t.settings.forced_root_block_attrs,r)):r||(r='<br data-mce-bogus="1">'),vw(t,r),t.fire("SetContent",o)):("raw"!==o.format&&(r=rl({validate:t.validate},t.schema).serialize(t.parser.parse(r,{isRootContent:!0,insert:!0}))),o.content=yo(rr.fromDom(n))?r:Yt.trim(r),vw(t,o.content),o.no_events||t.fire("SetContent",o)),o.content);var t,n,r,o,i,a})},yw=gi.DOM,Cw=function(e){return A.from(e).each(function(e){return e.destroy()})},xw=function(e){if(!e.removed){var t=e._selectionOverrides,n=e.editorUpload,r=e.getBody(),o=e.getElement();r&&e.save({is_removing:!0}),e.removed=!0,e.unbindAllNativeEvents(),e.hasHiddenInput&&o&&yw.remove(o.nextSibling),!e.inline&&r&&(i=e,yw.setStyle(i.id,"display",i.orgDisplay)),Bg(e),e.editorManager.
 remove(e),yw.remove(e.getContainer()),Cw(t),Cw(n),e.destroy()}var i},ww=function(e,t){var n,r,o,i=e.selection,a=e.dom;e.destroyed||(t||e.removed?(t||(e.editorManager.off("beforeunload",e._beforeUnload),e.theme&&e.theme.destroy&&e.theme.destroy(),Cw(i),Cw(a)),(r=(n=e).formElement)&&(r._mceOldSubmit&&(r.submit=r._mceOldSubmit,r._mceOldSubmit=null),yw.unbind(r,"submit reset",n.formEventDelegate)),(o=e).contentAreaContainer=o.formElement=o.container=o.editorContainer=null,o.bodyElement=o.contentDocument=o.contentWindow=null,o.iframeElement=o.targetElm=null,o.selection&&(o.selection=o.selection.win=o.selection.dom=o.selection.dom.doc=null),e.destroyed=!0):e.remove())},Nw=gi.DOM,Ew=Yt.extend,Sw=Yt.each,kw=Yt.resolve,Tw=de.ie,Aw=function(e,t,n){var r,o,i,a,u,s,c,l=this,f=l.documentBaseUrl=n.documentBaseURL,d=n.baseURI;r=l,o=e,i=f,a=n.defaultSettings,u=t,c={id:o,theme:"modern",delta_width:0,delta_height:0,popup_css:"
 ",plugins:"",document_base_url:i,add_form_submit_trigger:!0,submit_patch:!0,add_unload_trigger:!0,convert_urls:!0,relative_urls:!0,remove_script_host:!0,object_resizing:!0,doctype:"<!DOCTYPE html>",visual:!0,font_size_style_values:"xx-small,x-small,small,medium,large,x-large,xx-large",font_size_legacy_values:"xx-small,small,medium,large,x-large,xx-large,300%",forced_root_block:"p",hidden_input:!0,render_ui:!0,indentation:"40px",inline_styles:!0,convert_fonts_to_spans:!0,indent:"simple",indent_before:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,summary,article,hgroup,aside,figure,figcaption,option,optgroup,datalist",indent_after:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,summary,article,hgroup,aside,figure,figcaption,option,optgroup,d
 atalist",entity_encoding:"named",url_converter:(s=r).convertURL,url_converter_scope:s,ie7_compat:!0},t=bl(fl,c,a,u),l.settings=t,wi.language=t.language||"en",wi.languageLoad=t.language_load,wi.baseURL=n.baseURL,l.id=e,l.setDirty(!1),l.plugins={},l.documentBaseURI=new dw(t.document_base_url,{base_uri:d}),l.baseURI=d,l.contentCSS=[],l.contentStyles=[],l.shortcuts=new Gg(l),l.loadedCSS={},l.editorCommands=new Eg(l),l.suffix=n.suffix,l.editorManager=n,l.inline=t.inline,l.buttons={},l.menuItems={},t.cache_suffix&&(de.cacheSuffix=t.cache_suffix.replace(/^[\?\&]+/,"")),!1===t.override_viewport&&(de.overrideViewPort=!1),n.fire("SetupEditor",{editor:l}),l.execCallback("setup",l),l.$=pn.overrideDefaults(function(){return{context:l.inline?l.getBody():l.getDoc(),element:l.getBody()}})};Ew(Aw.prototype={render:function(){aw(this)},focus:function(e){ip(this,e)},hasFocus:function(){return ap(this)},execCallback:function(e){
 for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var r,o=this.settings[e];if(o)return this.callbackLookup&&(r=this.callbackLookup[e])&&(o=r.func,r=r.scope),"string"==typeof o&&(r=(r=o.replace(/\.\w+$/,""))?kw(r):0,o=kw(o),this.callbackLookup=this.callbackLookup||{},this.callbackLookup[e]={func:o,scope:r}),o.apply(r||this,Array.prototype.slice.call(arguments,1))},translate:function(e){if(e&&Yt.is(e,"string")){var n=this.settings.language||"en",r=this.editorManager.i18n;e=r.data[n+"."+e]||e.replace(/\{\#([^\}]+)\}/g,function(e,t){return r.data[n+"."+t]||"{#"+t+"}"})}return this.editorManager.translate(e)},getLang:function(e,t){return this.editorManager.i18n.data[(this.settings.language||"en")+"."+e]||(t!==undefined?t:"{#"+e+"}")},getParam:function(e,t,n){return xl(this,e,t,n)},nodeChanged:function(e){this._nodeChangeDispa
 tcher.nodeChanged(e)},addButton:function(e,t){var n=this;t.cmd&&(t.onclick=function(){n.execCommand(t.cmd)}),t.stateSelector&&"undefined"==typeof t.active&&(t.active=!1),t.text||t.icon||(t.icon=e),t.tooltip=t.tooltip||t.title,n.buttons[e]=t},addSidebar:function(e,t){return uw(this,e,t)},addMenuItem:function(e,t){var n=this;t.cmd&&(t.onclick=function(){n.execCommand(t.cmd)}),n.menuItems[e]=t},addContextToolbar:function(e,t){var n,r=this;r.contextToolbars=r.contextToolbars||[],"string"==typeof e&&(n=e,e=function(e){return r.dom.is(e,n)}),r.contextToolbars.push({id:Up.uuid("mcet"),predicate:e,items:t})},addCommand:function(e,t,n){this.editorCommands.addCommand(e,t,n)},addQueryStateHandler:function(e,t,n){this.editorCommands.addQueryStateHandler(e,t,n)},addQueryValueHandler:function(e,t,n){this.editorCommands.addQueryValueHandler(e,t,n)},addShortcut:function(e,t,n,r){this.shortcuts.add(e,t,n,r)},execCommand:function(e
 ,t,n,r){return this.editorCommands.execCommand(e,t,n,r)},queryCommandState:function(e){return this.editorCommands.queryCommandState(e)},queryCommandValue:function(e){return this.editorCommands.queryCommandValue(e)},queryCommandSupported:function(e){return this.editorCommands.queryCommandSupported(e)},show:function(){this.hidden&&(this.hidden=!1,this.inline?this.getBody().contentEditable=!0:(Nw.show(this.getContainer()),Nw.hide(this.id)),this.load(),this.fire("show"))},hide:function(){var e=this,t=e.getDoc();e.hidden||(Tw&&t&&!e.inline&&t.execCommand("SelectAll"),e.save(),e.inline?(e.getBody().contentEditable=!1,e===e.editorManager.focusedEditor&&(e.editorManager.focusedEditor=null)):(Nw.hide(e.getContainer()),Nw.setStyle(e.id,"display",e.orgDisplay)),e.hidden=!0,e.fire("hide"))},isHidden:function(){return!!this.hidden},setProgressState:function(e,t){this.fire("ProgressState",{state:e,time:t})},
 load:function(e){var t,n=this.getElement();return this.removed?"":n?((e=e||{}).load=!0,t=this.setContent(n.value!==undefined?n.value:n.innerHTML,e),e.element=n,e.no_events||this.fire("LoadContent",e),e.element=n=null,t):void 0},save:function(e){var t,n,r=this,o=r.getElement();if(o&&r.initialized&&!r.removed)return(e=e||{}).save=!0,e.element=o,e.content=r.getContent(e),e.no_events||r.fire("SaveContent",e),"raw"===e.format&&r.fire("RawSaveContent",e),t=e.content,/TEXTAREA|INPUT/i.test(o.nodeName)?o.value=t:(!e.is_removing&&r.inline||(o.innerHTML=t),(n=Nw.getParent(r.id,"form"))&&Sw(n.elements,function(e){if(e.name===r.id)return e.value=t,!1})),e.element=o=null,!1!==e.set_dirty&&r.setDirty(!1),t},setContent:function(e,t){return bw(this,e,t)},getContent:function(e){return t=this,void 0===(n=e)&&(n={}),A.from(t.getBody()).fold(j("tree"===n.format?new Ob("body
 ",11):""),function(e){return mw(t,n,e)});var t,n},insertContent:function(e,t){t&&(e=Ew({content:e},t)),this.execCommand("mceInsertContent",!1,e)},isDirty:function(){return!this.isNotDirty},setDirty:function(e){var t=!this.isNotDirty;this.isNotDirty=!e,e&&e!==t&&this.fire("dirty")},setMode:function(e){var t,n;(n=e)!==zg(t=this)&&(t.initialized?Fg(t,"readonly"===n):t.on("init",function(){Fg(t,"readonly"===n)}),Og(t,n))},getContainer:function(){return this.container||(this.container=Nw.get(this.editorContainer||this.id+"_parent")),this.container},getContentAreaContainer:function(){return this.contentAreaContainer},getElement:function(){return this.targetElm||(this.targetElm=Nw.get(this.id)),this.targetElm},getWin:function(){var e;return this.contentWindow||(e=this.iframeElement)&&(this.contentWindow=e.contentWindow),this.contentWindow},getDoc:function(){var e;return this.c
 ontentDocument||(e=this.getWin())&&(this.contentDocument=e.document),this.contentDocument},getBody:function(){var e=this.getDoc();return this.bodyElement||(e?e.body:null)},convertURL:function(e,t,n){var r=this.settings;return r.urlconverter_callback?this.execCallback("urlconverter_callback",e,n,!0,t):!r.convert_urls||n&&"LINK"===n.nodeName||0===e.indexOf("file:")||0===e.length?e:r.relative_urls?this.documentBaseURI.toRelative(e):e=this.documentBaseURI.toAbsolute(e,r.remove_script_host)},addVisual:function(e){var n,r=this,o=r.settings,i=r.dom;e=e||r.getBody(),r.hasVisual===undefined&&(r.hasVisual=o.visual),Sw(i.select("table,a",e),function(e){var t;switch(e.nodeName){case"TABLE":return n=o.visual_table_class||"mce-item-table",void((t=i.getAttrib(e,"border"))&&"0"!==t||!r.hasVisual?i.removeClass(e,n):i.addClass(e,n));case"A":return void(i.getAttrib(e,"href&quo
 t;)||(t=i.getAttrib(e,"name")||e.id,n=o.visual_anchor_class||"mce-item-anchor",t&&r.hasVisual?i.addClass(e,n):i.removeClass(e,n)))}}),r.fire("VisualAid",{element:e,hasVisual:r.hasVisual})},remove:function(){xw(this)},destroy:function(e){ww(this,e)},uploadImages:function(e){return this.editorUpload.uploadImages(e)},_scanForImages:function(){return this.editorUpload.scanForImages()}},$g);var Rw,_w,Dw,Bw={isEditorUIElement:function(e){return-1!==e.className.toString().indexOf("mce-")}},Ow=function(n,e){var t,r;tr.detect().browser.isIE()?(r=n).on("focusout",function(){gg(r)}):(t=e,n.on("mouseup touchend",function(e){t.throttle()})),n.on("keyup nodechange",function(e){var t;"nodechange"===(t=e).type&&t.selectionChange||gg(n)})},Pw=function(e){var t,n,r,o=Di(function(){gg(e)},0);e.inline&&(t=e,n=o,r=function(){n.throttle()},gi.DOM.bind(document,"mouseup",r),t.on("remove&q
 uot;,function(){gi.DOM.unbind(document,"mouseup",r)})),e.on("init",function(){Ow(e,o)}),e.on("remove",function(){o.cancel()})},Lw=gi.DOM,Iw=function(e){return Bw.isEditorUIElement(e)},Mw=function(t,e){var n=t?t.settings.custom_ui_selector:"";return null!==Lw.getParent(e,function(e){return Iw(e)||!!n&&t.dom.is(e,n)})},Fw=function(r,e){var t=e.editor;Pw(t),t.on("focusin",function(){var e=r.focusedEditor;e!==this&&(e&&e.fire("blur",{focusedEditor:this}),r.setActive(this),(r.focusedEditor=this).fire("focus",{blurredEditor:e}),this.focus(!0))}),t.on("focusout",function(){var t=this;ve.setEditorTimeout(t,function(){var e=r.focusedEditor;Mw(t,function(){try{return document.activeElement}catch(e){return document.body}}())||e!==t||(t.fire("blur",{focusedEditor:null}),r.focusedEditor=null)})}),Rw||(Rw=function(e){var t,n=r.activeEditor;t=e.target,n&&t.ownerDocument===docum
 ent&&(t===document.body||Mw(n,t)||r.focusedEditor!==n||(n.fire("blur",{focusedEditor:null}),r.focusedEditor=null))},Lw.bind(document,"focusin",Rw))},zw=function(e,t){e.focusedEditor===t.editor&&(e.focusedEditor=null),e.activeEditor||(Lw.unbind(document,"focusin",Rw),Rw=null)},Uw=function(e){e.on("AddEditor",d(Fw,e)),e.on("RemoveEditor",d(zw,e))},Vw={},Hw="en",jw={setCode:function(e){e&&(Hw=e,this.rtl=!!this.data[e]&&"rtl"===this.data[e]._dir)},getCode:function(){return Hw},rtl:!1,add:function(e,t){var n=Vw[e];for(var r in n||(Vw[e]=n={}),t)n[r]=t[r];this.setCode(e)},translate:function(e){var t=Vw[Hw]||{},n=function(e){return Yt.is(e,"function")?Object.prototype.toString.call(e):r(e)?"":""+e},r=function(e){return""===e||null===e||Yt.is(e,"undefined")},o=function(e){return e=n(e),Yt.hasOwn(t,e)?n(t[e]):e};if(r(e))return"";if(
 Yt.is(e,"object")&&Yt.hasOwn(e,"raw"))return n(e.raw);if(Yt.is(e,"array")){var i=e.slice(1);e=o(e[0]).replace(/\{([0-9]+)\}/g,function(e,t){return Yt.hasOwn(i,t)?n(i[t]):e})}return o(e).replace(/{context:\w+}$/,"")},data:Vw},qw=gi.DOM,$w=Yt.explode,Ww=Yt.each,Kw=Yt.extend,Xw=0,Yw=!1,Gw=[],Jw=[],Qw=function(t){Ww(Dw.get(),function(e){"scroll"===t.type?e.fire("ScrollWindow",t):e.fire("ResizeWindow",t)})},Zw=function(e){e!==Yw&&(e?pn(window).on("resize scroll",Qw):pn(window).off("resize scroll",Qw),Yw=e)},eN=function(t){var e=Jw;delete Gw[t.id];for(var n=0;n<Gw.length;n++)if(Gw[n]===t){Gw.splice(n,1);break}return Jw=z(Jw,function(e){return t!==e}),Dw.activeEditor===t&&(Dw.activeEditor=0<Jw.length?Jw[0]:null),Dw.focusedEditor===t&&(Dw.focusedEditor=null),e.length!==Jw.length};Kw(Dw={defaultSettings:{},$:pn,majorVersion:"4",minorVersion:"9.2"
 ,releaseDate:"2018-12-17",editors:Gw,i18n:jw,activeEditor:null,settings:{},setup:function(){var e,t,n,r,o="";if(t=dw.getDocumentBaseUrl(document.location),/^[^:]+:\/\/\/?[^\/]+\//.test(t)&&(t=t.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,""),/[\/\\]$/.test(t)||(t+="/")),n=window.tinymce||window.tinyMCEPreInit)e=n.base||n.baseURL,o=n.suffix;else{for(var i=document.getElementsByTagName("script"),a=0;a<i.length;a++){var u=(r=i[a].src).substring(r.lastIndexOf("/"));if(/tinymce(\.full|\.jquery|)(\.min|\.dev|)\.js/.test(r)){-1!==u.indexOf(".min")&&(o=".min"),e=r.substring(0,r.lastIndexOf("/"));break}}!e&&document.currentScript&&(-1!==(r=document.currentScript.src).indexOf(".min")&&(o=".min"),e=r.substring(0,r.lastIndexOf("/")))}this.baseURL=new dw(t).toAbsolute(e),this.documentBaseURL=t,this.baseURI=new dw(this.base
 URL),this.suffix=o,Uw(this)},overrideDefaults:function(e){var t,n;(t=e.base_url)&&(this.baseURL=new dw(this.documentBaseURL).toAbsolute(t.replace(/\/+$/,"")),this.baseURI=new dw(this.baseURL)),n=e.suffix,e.suffix&&(this.suffix=n);var r=(this.defaultSettings=e).plugin_base_urls;for(var o in r)wi.PluginManager.urls[o]=r[o]},init:function(r){var n,u,s=this;u=Yt.makeMap("area base basefont br col frame hr img input isindex link meta param embed source wbr track colgroup option tbody tfoot thead tr script noscript style textarea video audio iframe object menu"," ");var c=function(e){var t=e.id;return t||(t=(t=e.name)&&!qw.get(t)?e.name:qw.uniqueId(),e.setAttribute("id",t)),t},l=function(e,t){return t.constructor===RegExp?t.test(e.className):qw.hasClass(e,t)},f=function(e){n=e},e=function(){var o,i=0,a=[],n=function(e,t,n){var r=new Aw(e,t,s);a.push(r),r.on("init",function(){++i===o.length&&f(a)}),r.targetEl
 m=r.targetElm||n,r.render()};qw.unbind(window,"ready",e),function(e){var t=r[e];t&&t.apply(s,Array.prototype.slice.call(arguments,2))}("onpageload"),o=pn.unique(function(t){var e,n=[];if(de.ie&&de.ie<11)return Ep("TinyMCE does not support the browser you are using. For a list of supported browsers please see: https://www.tinymce.com/docs/get-started/system-requirements/"),[];if(t.types)return Ww(t.types,function(e){n=n.concat(qw.select(e.selector))}),n;if(t.selector)return qw.select(t.selector);if(t.target)return[t.target];switch(t.mode){case"exact":0<(e=t.elements||"").length&&Ww($w(e),function(t){var e;(e=qw.get(t))?n.push(e):Ww(document.forms,function(e){Ww(e.elements,function(e){e.name===t&&(t="mce_editor_"+Xw++,qw.setAttrib(e,"id",t),n.push(e))})})});break;case"textareas":case"specific_textareas":Ww(qw.select("textarea"),function(e){t.editor_
 deselector&&l(e,t.editor_deselector)||t.editor_selector&&!l(e,t.editor_selector)||n.push(e)})}return n}(r)),r.types?Ww(r.types,function(t){Yt.each(o,function(e){return!qw.is(e,t.selector)||(n(c(e),Kw({},r,t),e),!1)})}):(Yt.each(o,function(e){var t;(t=s.get(e.id))&&t.initialized&&!(t.getContainer()||t.getBody()).parentNode&&(eN(t),t.unbindAllNativeEvents(),t.destroy(!0),t.removed=!0,t=null)}),0===(o=Yt.grep(o,function(e){return!s.get(e.id)})).length?f([]):Ww(o,function(e){var t;t=e,r.inline&&t.tagName.toLowerCase()in u?Ep("Could not initialize inline editor on invalid inline target element",e):n(c(e),r,e)}))};return s.settings=r,qw.bind(window,"ready",e),new me(function(t){n?t(n):f=function(e){t(e)}})},get:function(t){return 0===arguments.length?Jw.slice(0):R(t)?V(Jw,function(e){return e.id===t}).getOr(null):L(t)&&Jw[t]?Jw[t]:null},add:function(e){var t=this;return Gw[e.id]===e||(null===t.get(e.id)&&(
 "length"!==e.id&&(Gw[e.id]=e),Gw.push(e),Jw.push(e)),Zw(!0),t.activeEditor=e,t.fire("AddEditor",{editor:e}),_w||(_w=function(){t.fire("BeforeUnload")},qw.bind(window,"beforeunload",_w))),e},createEditor:function(e,t){return this.add(new Aw(e,t,this))},remove:function(e){var t,n,r=this;if(e){if(!R(e))return n=e,B(r.get(n.id))?null:(eN(n)&&r.fire("RemoveEditor",{editor:n}),0===Jw.length&&qw.unbind(window,"beforeunload",_w),n.remove(),Zw(0<Jw.length),n);Ww(qw.select(e),function(e){(n=r.get(e.id))&&r.remove(n)})}else for(t=Jw.length-1;0<=t;t--)r.remove(Jw[t])},execCommand:function(e,t,n){var r=this.get(n);switch(e){case"mceAddEditor":return this.get(n)||new Aw(n,this.settings,this).render(),!0;case"mceRemoveEditor":return r&&r.remove(),!0;case"mceToggleEditor":return r?r.isHidden()?r.show():r.hide():this.execCommand("mceAddEditor",0,n),!0}retu
 rn!!this.activeEditor&&this.activeEditor.execCommand(e,t,n)},triggerSave:function(){Ww(Jw,function(e){e.save()})},addI18n:function(e,t){jw.add(e,t)},translate:function(e){return jw.translate(e)},setActive:function(e){var t=this.activeEditor;this.activeEditor!==e&&(t&&t.fire("deactivate",{relatedTarget:e}),e.fire("activate",{relatedTarget:t})),this.activeEditor=e}},Rg),Dw.setup();var tN,nN=Dw;function rN(n){return{walk:function(e,t){return Oc(n,e,t)},split:bv,normalize:function(t){return jm(n,t).fold(j(!1),function(e){return t.setStart(e.startContainer,e.startOffset),t.setEnd(e.endContainer,e.endOffset),!0})}}}(tN=rN||(rN={})).compareRanges=Im,tN.getCaretRangeFromPoint=uy,tN.getSelectedNode=Ua,tN.getNode=Va;var oN,iN,aN=rN,uN=Math.min,sN=Math.max,cN=Math.round,lN=function(e,t,n){var r,o,i,a,u,s;return r=t.x,o=t.y,i=e.w,a=e.h,u=t.w,s=t.h,"b"===(n=(n||"").split(""))[0]&&(o+=s),"r"===n[1]&&am
 p;(r+=u),"c"===n[0]&&(o+=cN(s/2)),"c"===n[1]&&(r+=cN(u/2)),"b"===n[3]&&(o-=a),"r"===n[4]&&(r-=i),"c"===n[3]&&(o-=cN(a/2)),"c"===n[4]&&(r-=cN(i/2)),fN(r,o,i,a)},fN=function(e,t,n,r){return{x:e,y:t,w:n,h:r}},dN={inflate:function(e,t,n){return fN(e.x-t,e.y-n,e.w+2*t,e.h+2*n)},relativePosition:lN,findBestRelativePosition:function(e,t,n,r){var o,i;for(i=0;i<r.length;i++)if((o=lN(e,t,r[i])).x>=n.x&&o.x+o.w<=n.w+n.x&&o.y>=n.y&&o.y+o.h<=n.h+n.y)return r[i];return null},intersect:function(e,t){var n,r,o,i;return n=sN(e.x,t.x),r=sN(e.y,t.y),o=uN(e.x+e.w,t.x+t.w),i=uN(e.y+e.h,t.y+t.h),o-n<0||i-r<0?null:fN(n,r,o-n,i-r)},clamp:function(e,t,n){var r,o,i,a,u,s,c,l,f,d;return u=e.x,s=e.y,c=e.x+e.w,l=e.y+e.h,f=t.x+t.w,d=t.y+t.h,r=sN(0,t.x-u),o=sN(0,t.y-s),i=sN(0,c-f),a=sN(0,l-d),u+=r,s+=o,n&&(c+=r,l+=o,u-=i,s-=a),fN(u,s,(c-=i)-u,(l-=a)-s)},c
 reate:fN,fromClientRect:function(e){return fN(e.left,e.top,e.width,e.height)}},mN={},gN={add:function(e,t){mN[e.toLowerCase()]=t},has:function(e){return!!mN[e.toLowerCase()]},get:function(e){var t=e.toLowerCase(),n=mN.hasOwnProperty(t)?mN[t]:null;if(null===n)throw new Error("Could not find module for type: "+e);return n},create:function(e,t){var n;if("string"==typeof e?(t=t||{}).type=e:e=(t=e).type,e=e.toLowerCase(),!(n=mN[e]))throw new Error("Could not find control by type: "+e);return(n=new n(t)).type=e,n}},pN=Yt.each,hN=Yt.extend,vN=function(){};vN.extend=oN=function(n){var e,t,r,o=this.prototype,i=function(){var e,t,n;if(!iN&&(this.init&&this.init.apply(this,arguments),t=this.Mixins))for(e=t.length;e--;)(n=t[e]).init&&n.init.apply(this,arguments)},a=function(){return this},u=function(n,r){return function(){var e,t=this._super;return this._super=o[n],e=r.apply(this,arguments),this._super=t,e}};for(t in iN=!0,e=new this,iN=!1,n
 .Mixins&&(pN(n.Mixins,function(e){for(var t in e)"init"!==t&&(n[t]=e[t])}),o.Mixins&&(n.Mixins=o.Mixins.concat(n.Mixins))),n.Methods&&pN(n.Methods.split(","),function(e){n[e]=a}),n.Properties&&pN(n.Properties.split(","),function(e){var t="_"+e;n[e]=function(e){return e!==undefined?(this[t]=e,this):this[t]}}),n.Statics&&pN(n.Statics,function(e,t){i[t]=e}),n.Defaults&&o.Defaults&&(n.Defaults=hN({},o.Defaults,n.Defaults)),n)"function"==typeof(r=n[t])&&o[t]?e[t]=u(t,r):e[t]=r;return i.prototype=e,(i.constructor=i).extend=oN,i};var bN=Math.min,yN=Math.max,CN=Math.round,xN=function(e,n){var r,o,t,i;if(n=n||'"',null===e)return"null";if("string"==(t=typeof e))return o="\bb\tt\nn\ff\rr\"\"''\\\\",n+e.replace(/([\u0080-\uFFFF\x00-\x1f\"\'\\])/g,function(e,t){return'"'===n&&"'"===e?e:(r=o.indexOf(t))+1
 ?"\\"+o.charAt(r+1):(e=t.charCodeAt().toString(16),"\\u"+"0000".substring(e.length)+e)})+n;if("object"===t){if(e.hasOwnProperty&&"[object Array]"===Object.prototype.toString.call(e)){for(r=0,o="[";r<e.length;r++)o+=(0<r?",":"")+xN(e[r],n);return o+"]"}for(i in o="{",e)e.hasOwnProperty(i)&&(o+="function"!=typeof e[i]?(1<o.length?","+n:n)+i+n+":"+xN(e[i],n):"");return o+"}"}return""+e},wN={serialize:xN,parse:function(e){try{return JSON.parse(e)}catch(t){}}},NN={callbacks:{},count:0,send:function(t){var n=this,r=gi.DOM,o=t.count!==undefined?t.count:n.count,i="tinymce_jsonp_"+o;n.callbacks[o]=function(e){r.remove(i),delete n.callbacks[o],t.callback(e)},r.add(r.doc.body,"script",{id:i,src:t.url,type:"text/javascript"}),n.count++}},EN={send:function(e){var t,n=0,r=function(){!e
 .async||4===t.readyState||1e4<n++?(e.success&&n<1e4&&200===t.status?e.success.call(e.success_scope,""+t.responseText,t,e):e.error&&e.error.call(e.error_scope,1e4<n?"TIMED_OUT":"GENERAL",t,e),t=null):setTimeout(r,10)};if(e.scope=e.scope||this,e.success_scope=e.success_scope||e.scope,e.error_scope=e.error_scope||e.scope,e.async=!1!==e.async,e.data=e.data||"",EN.fire("beforeInitialize",{settings:e}),t=Tp()){if(t.overrideMimeType&&t.overrideMimeType(e.content_type),t.open(e.type||(e.data?"POST":"GET"),e.url,e.async),e.crossDomain&&(t.withCredentials=!0),e.content_type&&t.setRequestHeader("Content-Type",e.content_type),e.requestheaders&&Yt.each(e.requestheaders,function(e){t.setRequestHeader(e.key,e.value)}),t.setRequestHeader("X-Requested-With","XMLHttpRequest"),(t=EN.fire("beforeSend",{xhr:t,settings:e}).xhr).send
 (e.data),!e.async)return r();setTimeout(r,10)}}};Yt.extend(EN,Rg);var SN,kN,TN,AN,RN=Yt.extend,_N=function(e){this.settings=RN({},e),this.count=0};_N.sendRPC=function(e){return(new _N).send(e)},_N.prototype={send:function(n){var r=n.error,o=n.success;(n=RN(this.settings,n)).success=function(e,t){void 0===(e=wN.parse(e))&&(e={error:"JSON Parse error."}),e.error?r.call(n.error_scope||n.scope,e.error,t):o.call(n.success_scope||n.scope,e.result)},n.error=function(e,t){r&&r.call(n.error_scope||n.scope,e,t)},n.data=wN.serialize({id:n.id||"c"+this.count++,method:n.method,params:n.params}),n.content_type="application/json",EN.send(n)}};try{SN=window.localStorage}catch(LN){kN={},TN=[],AN={getItem:function(e){var t=kN[e];return t||null},setItem:function(e,t){TN.push(e),kN[e]=String(t)},key:function(e){return TN[e]},removeItem:function(t){TN=TN.filter(function(e){return e===t}),delete kN[t]},clear:function(){TN=[],kN={}},length:0},Object.defineProp
 erty(AN,"length",{get:function(){return TN.length},configurable:!1,enumerable:!1}),SN=AN}var DN,BN=nN,ON={geom:{Rect:dN},util:{Promise:me,Delay:ve,Tools:Yt,VK:Oh,URI:dw,Class:vN,EventDispatcher:kg,Observable:Rg,I18n:jw,XHR:EN,JSON:wN,JSONRequest:_N,JSONP:NN,LocalStorage:SN,Color:function(e){var n={},u=0,s=0,c=0,t=function(e){var t;return"object"==typeof e?"r"in e?(u=e.r,s=e.g,c=e.b):"v"in e&&function(e,t,n){var r,o,i,a;if(e=(parseInt(e,10)||0)%360,t=parseInt(t,10)/100,n=parseInt(n,10)/100,t=yN(0,bN(t,1)),n=yN(0,bN(n,1)),0!==t){switch(r=e/60,i=(o=n*t)*(1-Math.abs(r%2-1)),a=n-o,Math.floor(r)){case 0:u=o,s=i,c=0;break;case 1:u=i,s=o,c=0;break;case 2:u=0,s=o,c=i;break;case 3:u=0,s=i,c=o;break;case 4:u=i,s=0,c=o;break;case 5:u=o,s=0,c=i;break;default:u=s=c=0}u=CN(255*(u+a)),s=CN(255*(s+a)),c=CN(255*(c+a))}else u=s=c=CN(255*n)}(e.h,e.s,e.v):(t=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)[^\)]*\)/gi.exec(e))?(u=parseInt(t[1],10),s=parse
 Int(t[2],10),c=parseInt(t[3],10)):(t=/#([0-F]{2})([0-F]{2})([0-F]{2})/gi.exec(e))?(u=parseInt(t[1],16),s=parseInt(t[2],16),c=parseInt(t[3],16)):(t=/#([0-F])([0-F])([0-F])/gi.exec(e))&&(u=parseInt(t[1]+t[1],16),s=parseInt(t[2]+t[2],16),c=parseInt(t[3]+t[3],16)),u=u<0?0:255<u?255:u,s=s<0?0:255<s?255:s,c=c<0?0:255<c?255:c,n};return e&&t(e),n.toRgb=function(){return{r:u,g:s,b:c}},n.toHsv=function(){return e=u,t=s,n=c,o=0,(i=bN(e/=255,bN(t/=255,n/=255)))===(a=yN(e,yN(t,n)))?{h:0,s:0,v:100*(o=i)}:(r=(a-i)/a,{h:CN(60*((e===i?3:n===i?1:5)-(e===i?t-n:n===i?e-t:n-e)/((o=a)-i))),s:CN(100*r),v:CN(100*o)});var e,t,n,r,o,i,a},n.toHex=function(){var e=function(e){return 1<(e=parseInt(e,10).toString(16)).length?e:"0"+e};return"#"+e(u)+e(s)+e(c)},n.parse=t,n}},dom:{EventUtils:ke,Sizzle:kt,DomQuery:pn,TreeWalker:ro,DOMUtils:gi,ScriptLoader:yi,RangeUtils:aN,Serializer:Yb,ControlSelection:ny,BookmarkManager:Zb,Selection:Ly,Event:ke.Event},html:{S
 tyles:ri,Entities:qo,Node:Ob,Schema:ti,SaxParser:Hh,DomParser:qb,Writer:nl,Serializer:rl},ui:{Factory:gN},Env:de,AddOnManager:wi,Annotator:Uc,Formatter:xb,UndoManager:uv,EditorCommands:Eg,WindowManager:hp,NotificationManager:pp,EditorObservable:$g,Shortcuts:Gg,Editor:Aw,FocusManager:Bw,EditorManager:nN,DOM:gi.DOM,ScriptLoader:yi.ScriptLoader,PluginManager:wi.PluginManager,ThemeManager:wi.ThemeManager,trim:Yt.trim,isArray:Yt.isArray,is:Yt.is,toArray:Yt.toArray,makeMap:Yt.makeMap,each:Yt.each,map:Yt.map,grep:Yt.grep,inArray:Yt.inArray,extend:Yt.extend,create:Yt.create,walk:Yt.walk,createNS:Yt.createNS,resolve:Yt.resolve,explode:Yt.explode,_addCacheSuffix:Yt._addCacheSuffix,isOpera:de.opera,isWebKit:de.webkit,isIE:de.ie,isGecko:de.gecko,isMac:de.mac},PN=BN=Yt.extend(BN,ON);DN=PN,window.tinymce=DN,window.tinyMCE=DN,function(e){if("object"==typeof module)try{module.exports=e}catch(t){}}(PN)}();
</del><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of file
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+// 4.9.4 (2019-03-20)
+!function(H){"use strict";var o=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t]},j=function(n,r){return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return n(r.apply(null,e))}},q=function(e){return function(){return e}},$=function(e){return e};function d(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 e,t,n,r,i,a,u,s,c,l,f,m,g,p,h,v,b,y=function(n){return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return!n.apply(null,e)}},C=q(!1),x=q(!0),w=C,N=x,E=function(){return S},S=(r={fold:function(e,t){return e()},is:w,isSome:w,isNone:N,getOr:n=function(e){return e},getOrThunk:t=function(e){return e()},getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:function(){return null},getOrUndefined:function(){return undefined},
 or:n,orThunk:t,map:E,ap:E,each:function(){},bind:E,flatten:E,exists:w,forall:N,filter:E,equals:e=function(e){return e.isNone()},equals_:e,toArray:function(){return[]},toString:q("none()")},Object.freeze&&Object.freeze(r),r),k=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:N,isNone:w,getOr:e,getOrThunk:e,getOrDie:e,getOrNull:e,getOrUndefined:e,or:t,orThunk:t,map:function(e){return k(e(n))},ap:function(e){return e.fold(E,function(e){return k(e(n))})},each:function(e){e(n)},bind:r,flatten:e,exists:r,forall:r,filter:function(e){return e(n)?o:S},equals:function(e){return e.is(n)},equals_:function(e,t){return e.fold(w,function(e){return t(n,e)})},toArray:function(){return[n]},toString:function(){return"some("+n+")"}};return o},A={some:k,none:E,from:function(e){return null===e||e===undefined?S:k(e)}},T=function(t){return function(e){return f
 unction(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}},R=T("string"),_=T("object"),D=T("array"),B=T("null"),O=T("boolean"),P=T("function"),L=T("number"),I=(i=Array.prototype.indexOf)===undefined?function(e,t){return Y(e,t)}:function(e,t){return i.call(e,t)},M=function(e,t){return-1<I(e,t)},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},F=function(e,t){for(var n=0,r=e.length;n<r;n++)t(e[n],n,e)},K=function(e,t){for(var n=[],r=[],o=0,i=e.length;o<i;o++){var a=e[o];(t(a,o,e)?n:r).push(a)}return{pass:n,fail:r}},z=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},U=function(e,t,n){return F(e,function(e){n=t(n,e)}),n}
 ,V=function(e,t){for(var n=0,r=e.length;n<r;n++){var o=e[n];if(t(o,n,e))return A.some(o)}return A.none()},X=function(e,t){for(var n=0,r=e.length;n<r;n++)if(t(e[n],n,e))return A.some(n);return A.none()},Y=function(e,t){for(var n=0,r=e.length;n<r;++n)if(e[n]===t)return n;return-1},G=Array.prototype.push,J=function(e,t){return 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);G.apply(t,e[n])}return t}(W(e,t))},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},Z=Array.prototype.slice,ee=function(e,t){return z(e,function(e){return!M(t,e)})},te=function(e){return 0===e.length?A.none():A.some(e[0])},ne=function(e){return 0===e.length?A.none():A.some(e[e.length-1])},re=P(Array.from)?Array.from:function(e){return Z.call(e)},oe="undefined"!=typeof H.window?H.window:Function("return this;")(),ie=f
 unction(e,t){return function(e,t){for(var n=t!==undefined&&null!==t?t:oe,r=0;r<e.length&&n!==undefined&&null!==n;++r)n=n[e[r]];return n}(e.split("."),t)},ae={getOrDie:function(e,t){var n=ie(e,t);if(n===undefined||null===n)throw e+" not available on this browser";return n}},ue=function(){return ae.getOrDie("URL")},se={createObjectURL:function(e){return ue().createObjectURL(e)},revokeObjectURL:function(e){ue().revokeObjectURL(e)}},ce=H.navigator,le=ce.userAgent,fe=function(e){return"matchMedia"in H.window&&H.matchMedia(e).matches};g=/Android/.test(le),u=(u=!(a=/WebKit/.test(le))&&/MSIE/gi.test(le)&&/Explorer/gi.test(ce.appName))&&/MSIE (\w+)\./.exec(le)[1],s=-1!==le.indexOf("Trident/")&&(-1!==le.indexOf("rv:")||-1!==ce.appName.indexOf("Netscape"))&&11,c=-1!==le.indexOf("Edge/")&&!u&&!s&&12,u=u||s||c,l=!a&
 &!s&&/Gecko/.test(le),f=-1!==le.indexOf("Mac"),m=/(iPad|iPhone)/.test(le),p="FormData"in H.window&&"FileReader"in H.window&&"URL"in H.window&&!!se.createObjectURL,h=fe("only screen and (max-device-width: 480px)")&&(g||m),v=fe("only screen and (min-width: 800px)")&&(g||m),b=-1!==le.indexOf("Windows Phone"),c&&(a=!1);var de,me={opera:!1,webkit:a,ie:u,gecko:l,mac:f,iOS:m,android:g,contentEditable:!m||p||534<=parseInt(le.match(/AppleWebKit\/(\d*)/)[1],10),transparentSrc:"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",caretAfter:8!==u,range:H.window.getSelection&&"Range"in H.window,documentMode:u&&!c?H.document.documentMode||7:10,fileApi:p,ceFalse:!1===u||8<u,cacheSuffix:null,container:null,overrideViewPort:null,experimentalShadowDom:!1,canHaveCSP:!1===u||11<u,desktop:!h&&!v,
 windowsPhone:b},ge=window.Promise?window.Promise:function(){function r(e,t){return function(){e.apply(t,arguments)}}var e=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},i=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=[],l(e,r(o,this),r(u,this))},t=i.immediateFn||"function"==typeof setImmediate&&setImmediate||function(e){setTimeout(e,1)};function a(r){var o=this;null!==this._state?t(function(){var e=o._state?r.onFulfilled:r.onRejected;if(null!==e){var t;try{t=e(o._value)}catch(n){return void r.reject(n)}r.resolve(t)}else(o._state?r.resolve:r.reject)(o._value)}):this._deferreds.push(r)}function o(e){try{if(e===this)throw new TypeError("A promise cannot be resolved with itself.");if(e&&("object&qu
 ot;==typeof e||"function"==typeof e)){var t=e.then;if("function"==typeof t)return void l(r(t,e),r(o,this),r(u,this))}this._state=!0,this._value=e,s.call(this)}catch(n){u.call(this,n)}}function u(e){this._state=!1,this._value=e,s.call(this)}function s(){for(var e=0,t=this._deferreds.length;e<t;e++)a.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 l(e,t,n){var r=!1;try{e(function(e){r||(r=!0,t(e))},function(e){r||(r=!0,n(e))})}catch(o){if(r)return;r=!0,n(o)}}return i.prototype["catch"]=function(e){return this.then(null,e)},i.prototype.then=function(n,r){var o=this;return new i(function(e,t){a.call(o,new c(n,r,e,t))})},i.all=function(){var s=Array.prototype.slice.call(1===arguments.length&&e(arguments[0])?arguments[0]:arguments);return new i(function(o,i){if(0===s.length)return 
 o([]);var a=s.length;function u(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){u(t,e)},i)}s[t]=e,0==--a&&o(s)}catch(r){i(r)}}for(var e=0;e<s.length;e++)u(e,s[e])})},i.resolve=function(t){return t&&"object"==typeof t&&t.constructor===i?t:new i(function(e){e(t)})},i.reject=function(n){return new i(function(e,t){t(n)})},i.race=function(o){return new i(function(e,t){for(var n=0,r=o.length;n<r;n++)o[n].then(e,t)})},i}(),pe=function(e,t){return"number"!=typeof t&&(t=0),setTimeout(e,t)},he=function(e,t){return"number"!=typeof t&&(t=1),setInterval(e,t)},ve=function(t,n){var r,e;return(e=function(){var e=arguments;clearTimeout(r),r=pe(function(){t.apply(this,e)},n)}).stop=function(){clearTimeout(r)},e},be={requestAnimationFrame:function(e,t){de?de.then(e):de=new ge(function(e){t||(t=H.document.body)
 ,function(e,t){var n,r=H.window.requestAnimationFrame,o=["ms","moz","webkit"];for(n=0;n<o.length&&!r;n++)r=H.window[o[n]+"RequestAnimationFrame"];r||(r=function(e){H.window.setTimeout(e,0)}),r(e,t)}(e,t)}).then(e)},setTimeout:pe,setInterval:he,setEditorTimeout:function(e,t,n){return pe(function(){e.removed||t()},n)},setEditorInterval:function(e,t,n){var r;return r=he(function(){e.removed?clearInterval(r):t()},n)},debounce:ve,throttle:ve,clearInterval:function(e){return clearInterval(e)},clearTimeout:function(e){return clearTimeout(e)}},ye=/^(?:mouse|contextmenu)|click/,Ce={keyLocation:1,layerX:1,layerY:1,returnValue:1,webkitMovementX:1,webkitMovementY:1,keyIdentifier:1},xe=function(){return!1},we=function(){return!0},Ne=function(e,t,n,r){e.addEventListener?e.addEventListener(t,n,r||!1):e.attachEvent&&e.attachEvent("on"+t,n)},Ee=function(e,t,n,r){e.removeEventListener?e.removeEventListener(t,n,r||!1):e.detachEvent&a
 mp;&e.detachEvent("on"+t,n)},Se=function(e,t){var n,r,o=t||{};for(n in e)Ce[n]||(o[n]=e[n]);if(o.target||(o.target=o.srcElement||H.document),me.experimentalShadowDom&&(o.target=function(e,t){if(e.composedPath){var n=e.composedPath();if(n&&0<n.length)return n[0]}return t}(e,o.target)),e&&ye.test(e.type)&&e.pageX===undefined&&e.clientX!==undefined){var i=o.target.ownerDocument||H.document,a=i.documentElement,u=i.body;o.pageX=e.clientX+(a&&a.scrollLeft||u&&u.scrollLeft||0)-(a&&a.clientLeft||u&&u.clientLeft||0),o.pageY=e.clientY+(a&&a.scrollTop||u&&u.scrollTop||0)-(a&&a.clientTop||u&&u.clientTop||0)}return o.preventDefault=function(){o.isDefaultPrevented=we,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},o.stopPropagation=function(){o.isPropagationStopped=we,e&&(e.stopPropagation?e.stopPropagation():e.cancelBubble=!0)},!(o.stopImmediatePropa
 gation=function(){o.isImmediatePropagationStopped=we,o.stopPropagation()})==((r=o).isDefaultPrevented===we||r.isDefaultPrevented===xe)&&(o.isDefaultPrevented=xe,o.isPropagationStopped=xe,o.isImmediatePropagationStopped=xe),"undefined"==typeof o.metaKey&&(o.metaKey=!1),o},ke=function(e,t,n){var r=e.document,o={type:"ready"};if(n.domLoaded)t(o);else{var i=function(){return"complete"===r.readyState||"interactive"===r.readyState&&r.body},a=function(){n.domLoaded||(n.domLoaded=!0,t(o))},u=function(){i()&&(Ee(r,"readystatechange",u),a())},s=function(){try{r.documentElement.doScroll("left")}catch(e){return void be.setTimeout(s)}a()};!r.addEventListener||me.ie&&me.ie<11?(Ne(r,"readystatechange",u),r.documentElement.doScroll&&e.self===e.top&&s()):i()?a():Ne(e,"DOMContentLoaded",a),Ne(e,"load",a)}},Te=function(){var m,g,p,h,v,b=this,y={};g="
 mce-data-"+(+new Date).toString(32),h="onmouseenter"in H.document.documentElement,p="onfocusin"in H.document.documentElement,v={mouseenter:"mouseover",mouseleave:"mouseout"},m=1,b.domLoaded=!1,b.events=y;var C=function(e,t){var n,r,o,i,a=y[t];if(n=a&&a[e.type])for(r=0,o=n.length;r<o;r++)if((i=n[r])&&!1===i.func.call(i.scope,e)&&e.preventDefault(),e.isImmediatePropagationStopped())return};b.bind=function(e,t,n,r){var o,i,a,u,s,c,l,f=H.window,d=function(e){C(Se(e||f.event),o)};if(e&&3!==e.nodeType&&8!==e.nodeType){for(e[g]?o=e[g]:(o=m++,e[g]=o,y[o]={}),r=r||e,a=(t=t.split(" ")).length;a--;)c=d,s=l=!1,"DOMContentLoaded"===(u=t[a])&&(u="ready"),b.domLoaded&&"ready"===u&&"complete"===e.readyState?n.call(r,Se({type:u})):(h||(s=v[u])&&(c=function(e){var t,n;if(t=e.currentTarget,(n=e.relatedTarget)&&t.contains)n=t.c
 ontains(n);else for(;n&&n!==t;)n=n.parentNode;n||((e=Se(e||f.event)).type="mouseout"===e.type?"mouseleave":"mouseenter",e.target=t,C(e,o))}),p||"focusin"!==u&&"focusout"!==u||(l=!0,s="focusin"===u?"focus":"blur",c=function(e){(e=Se(e||f.event)).type="focus"===e.type?"focusin":"focusout",C(e,o)}),(i=y[o][u])?"ready"===u&&b.domLoaded?n({type:u}):i.push({func:n,scope:r}):(y[o][u]=i=[{func:n,scope:r}],i.fakeName=s,i.capture=l,i.nativeHandler=c,"ready"===u?ke(e,c,b):Ne(e,s||u,c,l)));return e=i=0,n}},b.unbind=function(e,t,n){var r,o,i,a,u,s;if(!e||3===e.nodeType||8===e.nodeType)return b;if(r=e[g]){if(s=y[r],t){for(i=(t=t.split(" ")).length;i--;)if(o=s[u=t[i]]){if(n)for(a=o.length;a--;)if(o[a].func===n){var c=o.nativeHandler,l=o.fakeName,f=o.capture;(o=o.slice(0,a).concat(o.slice(a+1))).nativeHandler=c,o.fakeName=l,o.capture=f,s
 [u]=o}n&&0!==o.length||(delete s[u],Ee(e,o.fakeName||u,o.nativeHandler,o.capture))}}else{for(u in s)o=s[u],Ee(e,o.fakeName||u,o.nativeHandler,o.capture);s={}}for(u in s)return b;delete y[r];try{delete e[g]}catch(d){e[g]=null}}return b},b.fire=function(e,t,n){var r;if(!e||3===e.nodeType||8===e.nodeType)return b;for((n=Se(null,n)).type=t,n.target=e;(r=e[g])&&C(n,r),(e=e.parentNode||e.ownerDocument||e.defaultView||e.parentWindow)&&!n.isPropagationStopped(););return b},b.clean=function(e){var t,n,r=b.unbind;if(!e||3===e.nodeType||8===e.nodeType)return b;if(e[g]&&r(e),e.getElementsByTagName||(e=e.document),e&&e.getElementsByTagName)for(r(e),t=(n=e.getElementsByTagName("*")).length;t--;)(e=n[t])[g]&&r(e);return b},b.destroy=function(){y={}},b.cancel=function(e){return e&&(e.preventDefault(),e.stopImmediatePropagation()),!1}};Te.Event=new Te,Te.Event.bind(H.window,"ready",function(){});var Ae,Re,_e,De,Be,Oe,Pe,Le,I
 e,Me,Fe,ze,Ue,Ve,He,je,qe,$e,We="sizzle"+-new Date,Ke=H.window.document,Xe=0,Ye=0,Ge=At(),Je=At(),Qe=At(),Ze=function(e,t){return e===t&&(Fe=!0),0},et=typeof undefined,tt={}.hasOwnProperty,nt=[],rt=nt.pop,ot=nt.push,it=nt.push,at=nt.slice,ut=nt.indexOf||function(e){for(var t=0,n=this.length;t<n;t++)if(this[t]===e)return t;return-1},st="[\\x20\\t\\r\\n\\f]",ct="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",lt="\\["+st+"*("+ct+")(?:"+st+"*([*^$|!~]?=)"+st+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+ct+"))|)"+st+"*\\]",ft=":("+ct+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+lt+")*)|.*)\\)|)",dt=new RegExp("^"+st+"+|((?:^|[^\\\\])(?:\\\\.)*)"+st+"+$","g"),mt=new RegExp("^"+st+"*,"+st+"*"),gt=new RegExp(&q
 uot;^"+st+"*([>+~]|"+st+")"+st+"*"),pt=new RegExp("="+st+"*([^\\]'\"]*?)"+st+"*\\]","g"),ht=new RegExp(ft),vt=new RegExp("^"+ct+"$"),bt={ID:new RegExp("^#("+ct+")"),CLASS:new RegExp("^\\.("+ct+")"),TAG:new RegExp("^("+ct+"|[*])"),ATTR:new RegExp("^"+lt),PSEUDO:new RegExp("^"+ft),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+st+"*(even|odd|(([+-]|)(\\d*)n|)"+st+"*(?:([+-]|)"+st+"*(\\d+)|))"+st+"*\\)|)","i"),bool:new RegExp("^(?:checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)$","i"),needsContext:new RegExp("^"+st+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+st+"*((?:-\\d)?\\d*)"+st+&quo
 t;*\\)|)(?=[^-]|$)","i")},yt=/^(?:input|select|textarea|button)$/i,Ct=/^h\d$/i,xt=/^[^{]+\{\s*\[native \w/,wt=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,Nt=/[+~]/,Et=/'|\\/g,St=new RegExp("\\\\([\\da-f]{1,6}"+st+"?|("+st+")|.)","ig"),kt=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)};try{it.apply(nt=at.call(Ke.childNodes),Ke.childNodes),nt[Ke.childNodes.length].nodeType}catch(jN){it={apply:nt.length?function(e,t){ot.apply(e,at.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}var Tt=function(e,t,n,r){var o,i,a,u,s,c,l,f,d,m;if((t?t.ownerDocument||t:Ke)!==Ue&&ze(t),n=n||[],!e||"string"!=typeof e)return n;if(1!==(u=(t=t||Ue).nodeType)&&9!==u)return[];if(He&&!r){if(o=wt.exec(e))if(a=o[1]){if(9===u){if(!(i=t.getElementById(a))||!i.parentNode)return n;if(i.id===a)return n.pus
 h(i),n}else if(t.ownerDocument&&(i=t.ownerDocument.getElementById(a))&&$e(t,i)&&i.id===a)return n.push(i),n}else{if(o[2])return it.apply(n,t.getElementsByTagName(e)),n;if((a=o[3])&&Re.getElementsByClassName)return it.apply(n,t.getElementsByClassName(a)),n}if(Re.qsa&&(!je||!je.test(e))){if(f=l=We,d=t,m=9===u&&e,1===u&&"object"!==t.nodeName.toLowerCase()){for(c=Oe(e),(l=t.getAttribute("id"))?f=l.replace(Et,"\\$&"):t.setAttribute("id",f),f="[id='"+f+"'] ",s=c.length;s--;)c[s]=f+It(c[s]);d=Nt.test(e)&&Pt(t.parentNode)||t,m=c.join(",")}if(m)try{return it.apply(n,d.querySelectorAll(m)),n}catch(g){}finally{l||t.removeAttribute("id")}}}return Le(e.replace(dt,"$1"),t,n,r)};function At(){var r=[];return function e(t,n){return r.push(t+" ")>_e.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function Rt(e){retur
 n e[We]=!0,e}function _t(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||1<<31)-(~e.sourceIndex||1<<31);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function Dt(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function Bt(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function Ot(a){return Rt(function(i){return i=+i,Rt(function(e,t){for(var n,r=a([],e.length,i),o=r.length;o--;)e[n=r[o]]&&(e[n]=!(t[n]=e[n]))})})}function Pt(e){return e&&typeof e.getElementsByTagName!==et&&e}for(Ae in Re=Tt.support={},Be=Tt.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},ze=Tt.setDocument=function(e){var t,s=e?e.ownerDocument||e:Ke,n=s.defaultView;return s!==Ue&&9===s.nodeType&
 &s.documentElement?(Ve=(Ue=s).documentElement,He=!Be(s),n&&n!==function(e){try{return e.top}catch(t){}return null}(n)&&(n.addEventListener?n.addEventListener("unload",function(){ze()},!1):n.attachEvent&&n.attachEvent("onunload",function(){ze()})),Re.attributes=!0,Re.getElementsByTagName=!0,Re.getElementsByClassName=xt.test(s.getElementsByClassName),Re.getById=!0,_e.find.ID=function(e,t){if(typeof t.getElementById!==et&&He){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},_e.filter.ID=function(e){var t=e.replace(St,kt);return function(e){return e.getAttribute("id")===t}},_e.find.TAG=Re.getElementsByTagName?function(e,t){if(typeof t.getElementsByTagName!==et)return t.getElementsByTagName(e)}:function(e,t){var n,r=[],o=0,i=t.getElementsByTagName(e);if("*"===e){for(;n=i[o++];)1===n.nodeType&&r.push(n);return r}return i},_e.find.CLASS=Re.getElementsByClassName&&function(e,t){if(He
 )return t.getElementsByClassName(e)},qe=[],je=[],Re.disconnectedMatch=!0,je=je.length&&new RegExp(je.join("|")),qe=qe.length&&new RegExp(qe.join("|")),t=xt.test(Ve.compareDocumentPosition),$e=t||xt.test(Ve.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},Ze=t?function(e,t){if(e===t)return Fe=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!Re.sortDetached&&t.compareDocumentPosition(e)===n?e===s||e.ownerDocument===Ke&&$e(Ke,e)?-1:t===s||t.ownerDocument===Ke&&$e(Ke,t)?1:Me?ut.call(Me,e)-ut.call(Me,t):0:4&n?-1:1)}:function(e,t){if(e===t)return Fe=!0,0;var n,r=0,o=e.par
 entNode,i=t.parentNode,a=[e],u=[t];if(!o||!i)return e===s?-1:t===s?1:o?-1:i?1:Me?ut.call(Me,e)-ut.call(Me,t):0;if(o===i)return _t(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)u.unshift(n);for(;a[r]===u[r];)r++;return r?_t(a[r],u[r]):a[r]===Ke?-1:u[r]===Ke?1:0},s):Ue},Tt.matches=function(e,t){return Tt(e,null,null,t)},Tt.matchesSelector=function(e,t){if((e.ownerDocument||e)!==Ue&&ze(e),t=t.replace(pt,"='$1']"),Re.matchesSelector&&He&&(!qe||!qe.test(t))&&(!je||!je.test(t)))try{var n=(void 0).call(e,t);if(n||Re.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(jN){}return 0<Tt(t,Ue,null,[e]).length},Tt.contains=function(e,t){return(e.ownerDocument||e)!==Ue&&ze(e),$e(e,t)},Tt.attr=function(e,t){(e.ownerDocument||e)!==Ue&&ze(e);var n=_e.attrHandle[t.toLowerCase()],r=n&&tt.call(_e.attrHandle,t.toLowerCase())?n(e,t,!He):undefined;return r!==undefined?r:Re.attributes||!He?e
 .getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},Tt.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},Tt.uniqueSort=function(e){var t,n=[],r=0,o=0;if(Fe=!Re.detectDuplicates,Me=!Re.sortStable&&e.slice(0),e.sort(Ze),Fe){for(;t=e[o++];)t===e[o]&&(r=n.push(o));for(;r--;)e.splice(n[r],1)}return Me=null,e},De=Tt.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=De(e)}else if(3===o||4===o)return e.nodeValue}else for(;t=e[r++];)n+=De(t);return n},(_e=Tt.selectors={cacheLength:50,createPseudo:Rt,match:bt,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){re
 turn e[1]=e[1].replace(St,kt),e[3]=(e[3]||e[4]||e[5]||"").replace(St,kt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||Tt.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&Tt.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return bt.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&ht.test(n)&&(t=Oe(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(St,kt).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=Ge[e+" "];return t||(t=new RegExp("(^|"+st+")"+e+"(
 "+st+"|$)"))&&Ge(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==et&&e.getAttribute("class")||"")})},ATTR:function(n,r,o){return function(e){var t=Tt.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===o:"!="===r?t!==o:"^="===r?o&&0===t.indexOf(o):"*="===r?o&&-1<t.indexOf(o):"$="===r?o&&t.slice(-o.length)===o:"~="===r?-1<(" "+t+" ").indexOf(o):"|="===r&&(t===o||t.slice(0,o.length+1)===o+"-"))}},CHILD:function(m,e,t,g,p){var h="nth"!==m.slice(0,3),v="last"!==m.slice(-4),b="of-type"===e;return 1===g&&0===p?function(e){return!!e.parentNode}:function(e,t,n){var r,o,i,a,u,s,c=h!==v?"nextSibling":"previousSibling",l=e.parentNode,f=b&&e.nodeName.toLow
 erCase(),d=!n&&!b;if(l){if(h){for(;c;){for(i=e;i=i[c];)if(b?i.nodeName.toLowerCase()===f:1===i.nodeType)return!1;s=c="only"===m&&!s&&"nextSibling"}return!0}if(s=[v?l.firstChild:l.lastChild],v&&d){for(u=(r=(o=l[We]||(l[We]={}))[m]||[])[0]===Xe&&r[1],a=r[0]===Xe&&r[2],i=u&&l.childNodes[u];i=++u&&i&&i[c]||(a=u=0)||s.pop();)if(1===i.nodeType&&++a&&i===e){o[m]=[Xe,u,a];break}}else if(d&&(r=(e[We]||(e[We]={}))[m])&&r[0]===Xe)a=r[1];else for(;(i=++u&&i&&i[c]||(a=u=0)||s.pop())&&((b?i.nodeName.toLowerCase()!==f:1!==i.nodeType)||!++a||(d&&((i[We]||(i[We]={}))[m]=[Xe,a]),i!==e)););return(a-=p)===g||a%g==0&&0<=a/g}}},PSEUDO:function(e,i){var t,a=_e.pseudos[e]||_e.setFilters[e.toLowerCase()]||Tt.error("unsupported pseudo: "+e);return a[We]?a(i):1<a.length?(t=[e,e,"",i],_e.setFilters.hasOwnProperty(e.toLowerC
 ase())?Rt(function(e,t){for(var n,r=a(e,i),o=r.length;o--;)e[n=ut.call(e,r[o])]=!(t[n]=r[o])}):function(e){return a(e,0,t)}):a}},pseudos:{not:Rt(function(e){var r=[],o=[],u=Pe(e.replace(dt,"$1"));return u[We]?Rt(function(e,t,n,r){for(var o,i=u(e,null,r,[]),a=e.length;a--;)(o=i[a])&&(e[a]=!(t[a]=o))}):function(e,t,n){return r[0]=e,u(r,null,n,o),!o.pop()}}),has:Rt(function(t){return function(e){return 0<Tt(t,e).length}}),contains:Rt(function(t){return t=t.replace(St,kt),function(e){return-1<(e.textContent||e.innerText||De(e)).indexOf(t)}}),lang:Rt(function(n){return vt.test(n||"")||Tt.error("unsupported lang: "+n),n=n.replace(St,kt).toLowerCase(),function(e){var t;do{if(t=He?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=H.window.location&&H.window.location.h
 ash;return t&&t.slice(1)===e.id},root:function(e){return e===Ve},focus:function(e){return e===Ue.activeElement&&(!Ue.hasFocus||Ue.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return!1===e.disabled},disabled:function(e){return!0===e.disabled},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!_e.pseudos.empty(e)},header:function(e){return Ct.test(e.nodeName)},input:function(e){return yt.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text&qu
 ot;===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:Ot(function(){return[0]}),last:Ot(function(e,t){return[t-1]}),eq:Ot(function(e,t,n){return[n<0?n+t:n]}),even:Ot(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:Ot(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:Ot(function(e,t,n){for(var r=n<0?n+t:n;0<=--r;)e.push(r);return e}),gt:Ot(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=_e.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})_e.pseudos[Ae]=Dt(Ae);for(Ae in{submit:!0,reset:!0})_e.pseudos[Ae]=Bt(Ae);function Lt(){}function It(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function Mt(a,e,t){var u=e.dir,s=t&&"parentNode"===u,c=Ye++;return e.first?function(e,t,n){for(;e=e[u];)if(1===e.nodeType||s)return a(e,t,n)}:function(e,t,n){var r,o,i=[Xe,c];if(n){for(;e=e[u];)if((1===e.nodeType||s)&am
 p;&a(e,t,n))return!0}else for(;e=e[u];)if(1===e.nodeType||s){if((r=(o=e[We]||(e[We]={}))[u])&&r[0]===Xe&&r[1]===c)return i[2]=r[2];if((o[u]=i)[2]=a(e,t,n))return!0}}}function Ft(o){return 1<o.length?function(e,t,n){for(var r=o.length;r--;)if(!o[r](e,t,n))return!1;return!0}:o[0]}function zt(e,t,n,r,o){for(var i,a=[],u=0,s=e.length,c=null!=t;u<s;u++)(i=e[u])&&(n&&!n(i,r,o)||(a.push(i),c&&t.push(u)));return a}function Ut(m,g,p,h,v,e){return h&&!h[We]&&(h=Ut(h)),v&&!v[We]&&(v=Ut(v,e)),Rt(function(e,t,n,r){var o,i,a,u=[],s=[],c=t.length,l=e||function(e,t,n){for(var r=0,o=t.length;r<o;r++)Tt(e,t[r],n);return n}(g||"*",n.nodeType?[n]:n,[]),f=!m||!e&&g?l:zt(l,u,m,n,r),d=p?v||(e?m:c||h)?[]:t:f;if(p&&p(f,d,n,r),h)for(o=zt(d,s),h(o,[],n,r),i=o.length;i--;)(a=o[i])&&(d[s[i]]=!(f[s[i]]=a));if(e){if(v||m){if(v){for(o=[],i=d.length;i--;)(a=d[i])&&o.push(f[i]=a);v(null,d=[]
 ,o,r)}for(i=d.length;i--;)(a=d[i])&&-1<(o=v?ut.call(e,a):u[i])&&(e[o]=!(t[o]=a))}}else d=zt(d===t?d.splice(c,d.length):d),v?v(null,t,d,r):it.apply(t,d)})}function Vt(e){for(var r,t,n,o=e.length,i=_e.relative[e[0].type],a=i||_e.relative[" "],u=i?1:0,s=Mt(function(e){return e===r},a,!0),c=Mt(function(e){return-1<ut.call(r,e)},a,!0),l=[function(e,t,n){return!i&&(n||t!==Ie)||((r=t).nodeType?s(e,t,n):c(e,t,n))}];u<o;u++)if(t=_e.relative[e[u].type])l=[Mt(Ft(l),t)];else{if((t=_e.filter[e[u].type].apply(null,e[u].matches))[We]){for(n=++u;n<o&&!_e.relative[e[n].type];n++);return Ut(1<u&&Ft(l),1<u&&It(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(dt,"$1"),t,u<n&&Vt(e.slice(u,n)),n<o&&Vt(e=e.slice(n)),n<o&&It(e))}l.push(t)}return Ft(l)}Lt.prototype=_e.filters=_e.pseudos,_e.setFilters=new Lt,Oe=Tt.tokenize=function(e,t){var n,r,o
 ,i,a,u,s,c=Je[e+" "];if(c)return t?0:c.slice(0);for(a=e,u=[],s=_e.preFilter;a;){for(i in n&&!(r=mt.exec(a))||(r&&(a=a.slice(r[0].length)||a),u.push(o=[])),n=!1,(r=gt.exec(a))&&(n=r.shift(),o.push({value:n,type:r[0].replace(dt," ")}),a=a.slice(n.length)),_e.filter)!(r=bt[i].exec(a))||s[i]&&!(r=s[i](r))||(n=r.shift(),o.push({value:n,type:i,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?Tt.error(e):Je(e,u).slice(0)},Pe=Tt.compile=function(e,t){var n,h,v,b,y,r,o=[],i=[],a=Qe[e+" "];if(!a){for(t||(t=Oe(e)),n=t.length;n--;)(a=Vt(t[n]))[We]?o.push(a):i.push(a);(a=Qe(e,(h=i,b=0<(v=o).length,y=0<h.length,r=function(e,t,n,r,o){var i,a,u,s=0,c="0",l=e&&[],f=[],d=Ie,m=e||y&&_e.find.TAG("*",o),g=Xe+=null==d?1:Math.random()||.1,p=m.length;for(o&&(Ie=t!==Ue&&t);c!==p&&null!=(i=m[c]);c++){if(y&&i){for(a=0;u=h[a++];)if(u(i,t,n)){r.push(i);break}o&a
 mp;&(Xe=g)}b&&((i=!u&&i)&&s--,e&&l.push(i))}if(s+=c,b&&c!==s){for(a=0;u=v[a++];)u(l,f,t,n);if(e){if(0<s)for(;c--;)l[c]||f[c]||(f[c]=rt.call(r));f=zt(f)}it.apply(r,f),o&&!e&&0<f.length&&1<s+v.length&&Tt.uniqueSort(r)}return o&&(Xe=g,Ie=d),l},b?Rt(r):r))).selector=e}return a},Le=Tt.select=function(e,t,n,r){var o,i,a,u,s,c="function"==typeof e&&e,l=!r&&Oe(e=c.selector||e);if(n=n||[],1===l.length){if(2<(i=l[0]=l[0].slice(0)).length&&"ID"===(a=i[0]).type&&Re.getById&&9===t.nodeType&&He&&_e.relative[i[1].type]){if(!(t=(_e.find.ID(a.matches[0].replace(St,kt),t)||[])[0]))return n;c&&(t=t.parentNode),e=e.slice(i.shift().value.length)}for(o=bt.needsContext.test(e)?0:i.length;o--&&(a=i[o],!_e.relative[u=a.type]);)if((s=_e.find[u])&&(r=s(a.matches[0].replace(St,kt),Nt.test(i[0].type)&&Pt(t.pare
 ntNode)||t))){if(i.splice(o,1),!(e=r.length&&It(i)))return it.apply(n,r),n;break}}return(c||Pe(e,l))(r,t,!He,n,Nt.test(e)&&Pt(t.parentNode)||t),n},Re.sortStable=We.split("").sort(Ze).join("")===We,Re.detectDuplicates=!!Fe,ze(),Re.sortDetached=!0;var Ht=Array.isArray,jt=function(e,t,n){var r,o;if(!e)return 0;if(n=n||e,e.length!==undefined){for(r=0,o=e.length;r<o;r++)if(!1===t.call(n,e[r],r,e))return 0}else for(r in e)if(e.hasOwnProperty(r)&&!1===t.call(n,e[r],r,e))return 0;return 1},qt=function(e,t,n){var r,o;for(r=0,o=e.length;r<o;r++)if(t.call(n,e[r],r,e))return r;return-1},$t={isArray:Ht,toArray:function(e){var t,n,r=e;if(!Ht(e))for(r=[],t=0,n=e.length;t<n;t++)r[t]=e[t];return r},each:jt,map:function(n,r){var o=[];return jt(n,function(e,t){o.push(r(e,t,n))}),o},filter:function(n,r){var o=[];return jt(n,function(e,t){r&&!r(e,t,n)||o.push(e)}),o},indexOf:function(e,t){var n,r;if(e)for(n=0,r=e.length;n<r;n++)if(e[n]===t)
 return n;return-1},reduce:function(e,t,n,r){var o=0;for(arguments.length<3&&(n=e[0]);o<e.length;o++)n=t.call(r,n,e[o],o);return n},findIndex:qt,find:function(e,t,n){var r=qt(e,t,n);return-1!==r?e[r]:undefined},last:function(e){return e[e.length-1]}},Wt=/^\s*|\s*$/g,Kt=function(e){return null===e||e===undefined?"":(""+e).replace(Wt,"")},Xt=function(e,t){return t?!("array"!==t||!$t.isArray(e))||typeof e===t:e!==undefined},Yt=function(e,n,r,o){o=o||this,e&&(r&&(e=e[r]),$t.each(e,function(e,t){if(!1===n.call(o,e,t,r))return!1;Yt(e,n,r,o)}))},Gt={trim:Kt,isArray:$t.isArray,is:Xt,toArray:$t.toArray,makeMap:function(e,t,n){var r;for(t=t||",","string"==typeof(e=e||[])&&(e=e.split(t)),n=n||{},r=e.length;r--;)n[e[r]]={};return n},each:$t.each,map:$t.map,grep:$t.filter,inArray:$t.indexOf,hasOwn:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},extend:function(e,t){for(var n,r,o,i=[],
 a=2;a<arguments.length;a++)i[a-2]=arguments[a];var u,s=arguments;for(n=1,r=s.length;n<r;n++)for(o in t=s[n])t.hasOwnProperty(o)&&(u=t[o])!==undefined&&(e[o]=u);return e},create:function(e,t,n){var r,o,i,a,u,s=this,c=0;if(e=/^((static) )?([\w.]+)(:([\w.]+))?/.exec(e),i=e[3].match(/(^|\.)(\w+)$/i)[2],!(o=s.createNS(e[3].replace(/\.\w+$/,""),n))[i]){if("static"===e[2])return o[i]=t,void(this.onCreate&&this.onCreate(e[2],e[3],o[i]));t[i]||(t[i]=function(){},c=1),o[i]=t[i],s.extend(o[i].prototype,t),e[5]&&(r=s.resolve(e[5]).prototype,a=e[5].match(/\.(\w+)$/i)[1],u=o[i],o[i]=c?function(){return r[a].apply(this,arguments)}:function(){return this.parent=r[a],u.apply(this,arguments)},o[i].prototype[i]=o[i],s.each(r,function(e,t){o[i].prototype[t]=r[t]}),s.each(t,function(e,t){r[t]?o[i].prototype[t]=function(){return this.parent=r[t],e.apply(this,arguments)}:t!==i&&(o[i].prototype[t]=e)})),s.each(t["static"],function(
 e,t){o[i][t]=e})}},walk:Yt,createNS:function(e,t){var n,r;for(t=t||H.window,e=e.split("."),n=0;n<e.length;n++)t[r=e[n]]||(t[r]={}),t=t[r];return t},resolve:function(e,t){var n,r;for(t=t||H.window,n=0,r=(e=e.split(".")).length;n<r&&(t=t[e[n]]);n++);return t},explode:function(e,t){return!e||Xt(e,"array")?e:$t.map(e.split(t||","),Kt)},_addCacheSuffix:function(e){var t=me.cacheSuffix;return t&&(e+=(-1===e.indexOf("?")?"?":"&")+t),e}},Jt=H.document,Qt=Array.prototype.push,Zt=Array.prototype.slice,en=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,tn=Te.Event,nn=Gt.makeMap("children,contents,next,prev"),rn=function(e){return void 0!==e},on=function(e){return"string"==typeof e},an=function(e,t){var n,r,o;for(o=(t=t||Jt).createElement("div"),n=t.createDocumentFragment(),o.innerHTML=e;r=o.firstChild;)n.appendChild(r);return n},un=function(e,t,n,r){var o;if(on(t
 ))t=an(t,xn(e[0]));else if(t.length&&!t.nodeType){if(t=hn.makeArray(t),r)for(o=t.length-1;0<=o;o--)un(e,t[o],n,r);else for(o=0;o<t.length;o++)un(e,t[o],n,r);return e}if(t.nodeType)for(o=e.length;o--;)n.call(e[o],t);return e},sn=function(e,t){return e&&t&&-1!==(" "+e.className+" ").indexOf(" "+t+" ")},cn=function(e,t,n){var r,o;return t=hn(t)[0],e.each(function(){var e=this;n&&r===e.parentNode||(r=e.parentNode,o=t.cloneNode(!1),e.parentNode.insertBefore(o,e)),o.appendChild(e)}),e},ln=Gt.makeMap("fillOpacity fontWeight lineHeight opacity orphans widows zIndex zoom"," "),fn=Gt.makeMap("checked compact declare defer disabled ismap multiple nohref noshade nowrap readonly selected"," "),dn={"for":"htmlFor","class":"className",readonly:"readOnly"},mn={"float":"cssFloat"},gn={},pn={},hn=function(e,t){retur
 n new hn.fn.init(e,t)},vn=/^\s*|\s*$/g,bn=function(e){return null===e||e===undefined?"":(""+e).replace(vn,"")},yn=function(e,t){var n,r,o,i;if(e)if((n=e.length)===undefined){for(r in e)if(e.hasOwnProperty(r)&&(i=e[r],!1===t.call(i,r,i)))break}else for(o=0;o<n&&(i=e[o],!1!==t.call(i,o,i));o++);return e},Cn=function(e,n){var r=[];return yn(e,function(e,t){n(t,e)&&r.push(t)}),r},xn=function(e){return e?9===e.nodeType?e:e.ownerDocument:Jt};hn.fn=hn.prototype={constructor:hn,selector:"",context:null,length:0,init:function(e,t){var n,r,o=this;if(!e)return o;if(e.nodeType)return o.context=o[0]=e,o.length=1,o;if(t&&t.nodeType)o.context=t;else{if(t)return hn(e).attr(t);o.context=t=H.document}if(on(e)){if(!(n="<"===(o.selector=e).charAt(0)&&">"===e.charAt(e.length-1)&&3<=e.length?[null,e,null]:en.exec(e)))return hn(t).find(e);if(n[1])for(r=an(e,xn(t)).firstChild;r;)Qt.call(o
 ,r),r=r.nextSibling;else{if(!(r=xn(t).getElementById(n[2])))return o;if(r.id!==n[2])return o.find(e);o.length=1,o[0]=r}}else this.add(e,!1);return o},toArray:function(){return Gt.toArray(this)},add:function(e,t){var n,r,o=this;if(on(e))return o.add(hn(e));if(!1!==t)for(n=hn.unique(o.toArray().concat(hn.makeArray(e))),o.length=n.length,r=0;r<n.length;r++)o[r]=n[r];else Qt.apply(o,hn.makeArray(e));return o},attr:function(t,n){var e,r=this;if("object"==typeof t)yn(t,function(e,t){r.attr(e,t)});else{if(!rn(n)){if(r[0]&&1===r[0].nodeType){if((e=gn[t])&&e.get)return e.get(r[0],t);if(fn[t])return r.prop(t)?t:undefined;null===(n=r[0].getAttribute(t,2))&&(n=undefined)}return n}this.each(function(){var e;if(1===this.nodeType){if((e=gn[t])&&e.set)return void e.set(this,n);null===n?this.removeAttribute(t,2):this.setAttribute(t,n,2)}})}return r},removeAttr:function(e){return this.attr(e,null)},prop:function(e,t){var n=this;if("object"==typeo
 f(e=dn[e]||e))yn(e,function(e,t){n.prop(e,t)});else{if(!rn(t))return n[0]&&n[0].nodeType&&e in n[0]?n[0][e]:t;this.each(function(){1===this.nodeType&&(this[e]=t)})}return n},css:function(n,r){var e,o,i=this,t=function(e){return e.replace(/-(\D)/g,function(e,t){return t.toUpperCase()})},a=function(e){return e.replace(/[A-Z]/g,function(e){return"-"+e})};if("object"==typeof n)yn(n,function(e,t){i.css(e,t)});else if(rn(r))n=t(n),"number"!=typeof r||ln[n]||(r=r.toString()+"px"),i.each(function(){var e=this.style;if((o=pn[n])&&o.set)o.set(this,r);else{try{this.style[mn[n]||n]=r}catch(t){}null!==r&&""!==r||(e.removeProperty?e.removeProperty(a(n)):e.removeAttribute(n))}});else{if(e=i[0],(o=pn[n])&&o.get)return o.get(e);if(!e.ownerDocument.defaultView)return e.currentStyle?e.currentStyle[t(n)]:"";try{return e.ownerDocument.defaultView.getComputedStyle(e,null).getPropertyValue(a(n))}cat
 ch(u){return undefined}}return i},remove:function(){for(var e,t=this.length;t--;)e=this[t],tn.clean(e),e.parentNode&&e.parentNode.removeChild(e);return this},empty:function(){for(var e,t=this.length;t--;)for(e=this[t];e.firstChild;)e.removeChild(e.firstChild);return this},html:function(e){var t,n=this;if(rn(e)){t=n.length;try{for(;t--;)n[t].innerHTML=e}catch(r){hn(n[t]).empty().append(e)}return n}return n[0]?n[0].innerHTML:""},text:function(e){var t,n=this;if(rn(e)){for(t=n.length;t--;)"innerText"in n[t]?n[t].innerText=e:n[0].textContent=e;return n}return n[0]?n[0].innerText||n[0].textContent:""},append:function(){return un(this,arguments,function(e){(1===this.nodeType||this.host&&1===this.host.nodeType)&&this.appendChild(e)})},prepend:function(){return un(this,arguments,function(e){(1===this.nodeType||this.host&&1===this.host.nodeType)&&this.insertBefore(e,this.firstChild)},!0)},before:function(){return this[0]&a
 mp;&this[0].parentNode?un(this,arguments,function(e){this.parentNode.insertBefore(e,this)}):this},after:function(){return this[0]&&this[0].parentNode?un(this,arguments,function(e){this.parentNode.insertBefore(e,this.nextSibling)},!0):this},appendTo:function(e){return hn(e).append(this),this},prependTo:function(e){return hn(e).prepend(this),this},replaceWith:function(e){return this.before(e).remove()},wrap:function(e){return cn(this,e)},wrapAll:function(e){return cn(this,e,!0)},wrapInner:function(e){return this.each(function(){hn(this).contents().wrapAll(e)}),this},unwrap:function(){return this.parent().each(function(){hn(this).replaceWith(this.childNodes)})},clone:function(){var e=[];return this.each(function(){e.push(this.cloneNode(!0))}),hn(e)},addClass:function(e){return this.toggleClass(e,!0)},removeClass:function(e){return this.toggleClass(e,!1)},toggleClass:function(o,i){var e=this;return"string"!=typeof o||(-1!==o.indexOf(" ")?yn(o.split("
  "),function(){e.toggleClass(this,i)}):e.each(function(e,t){var n,r;(r=sn(t,o))!==i&&(n=t.className,r?t.className=bn((" "+n+" ").replace(" "+o+" "," ")):t.className+=n?" "+o:o)})),e},hasClass:function(e){return sn(this[0],e)},each:function(e){return yn(this,e)},on:function(e,t){return this.each(function(){tn.bind(this,e,t)})},off:function(e,t){return this.each(function(){tn.unbind(this,e,t)})},trigger:function(e){return this.each(function(){"object"==typeof e?tn.fire(this,e.type,e):tn.fire(this,e)})},show:function(){return this.css("display","")},hide:function(){return this.css("display","none")},slice:function(){return new hn(Zt.apply(this,arguments))},eq:function(e){return-1===e?this.slice(e):this.slice(e,+e+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},find:function(e){var t,n,r=[];for(t=0,n=this.length;t<n;t++)hn.find(e,this[
 t],r);return hn(r)},filter:function(n){return hn("function"==typeof n?Cn(this.toArray(),function(e,t){return n(t,e)}):hn.filter(n,this.toArray()))},closest:function(n){var r=[];return n instanceof hn&&(n=n[0]),this.each(function(e,t){for(;t;){if("string"==typeof n&&hn(t).is(n)){r.push(t);break}if(t===n){r.push(t);break}t=t.parentNode}}),hn(r)},offset:function(e){var t,n,r,o,i=0,a=0;return e?this.css(e):((t=this[0])&&(r=(n=t.ownerDocument).documentElement,t.getBoundingClientRect&&(i=(o=t.getBoundingClientRect()).left+(r.scrollLeft||n.body.scrollLeft)-r.clientLeft,a=o.top+(r.scrollTop||n.body.scrollTop)-r.clientTop)),{left:i,top:a})},push:Qt,sort:[].sort,splice:[].splice},Gt.extend(hn,{extend:Gt.extend,makeArray:function(e){return(t=e)&&t===t.window||e.nodeType?[e]:Gt.toArray(e);var t},inArray:function(e,t){var n;if(t.indexOf)return t.indexOf(e);for(n=t.length;n--;)if(t[n]===e)return n;return-1},isArray:Gt.isArray,each:yn,tri
 m:bn,grep:Cn,find:Tt,expr:Tt.selectors,unique:Tt.uniqueSort,text:Tt.getText,contains:Tt.contains,filter:function(e,t,n){var r=t.length;for(n&&(e=":not("+e+")");r--;)1!==t[r].nodeType&&t.splice(r,1);return t=1===t.length?hn.find.matchesSelector(t[0],e)?[t[0]]:[]:hn.find.matches(e,t)}});var wn=function(e,t,n){var r=[],o=e[t];for("string"!=typeof n&&n instanceof hn&&(n=n[0]);o&&9!==o.nodeType;){if(n!==undefined){if(o===n)break;if("string"==typeof n&&hn(o).is(n))break}1===o.nodeType&&r.push(o),o=o[t]}return r},Nn=function(e,t,n,r){var o=[];for(r instanceof hn&&(r=r[0]);e;e=e[t])if(!n||e.nodeType===n){if(r!==undefined){if(e===r)break;if("string"==typeof r&&hn(e).is(r))break}o.push(e)}return o},En=function(e,t,n){for(e=e[t];e;e=e[t])if(e.nodeType===n)return e;return null};yn({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:functi
 on(e){return wn(e,"parentNode")},next:function(e){return En(e,"nextSibling",1)},prev:function(e){return En(e,"previousSibling",1)},children:function(e){return Nn(e.firstChild,"nextSibling",1)},contents:function(e){return Gt.toArray(("iframe"===e.nodeName?e.contentDocument||e.contentWindow.document:e).childNodes)}},function(e,r){hn.fn[e]=function(t){var n=[];return this.each(function(){var e=r.call(n,this,t,n);e&&(hn.isArray(e)?n.push.apply(n,e):n.push(e))}),1<this.length&&(nn[e]||(n=hn.unique(n)),0===e.indexOf("parents")&&(n=n.reverse())),n=hn(n),t?n.filter(t):n}}),yn({parentsUntil:function(e,t){return wn(e,"parentNode",t)},nextUntil:function(e,t){return Nn(e,"nextSibling",1,t).slice(1)},prevUntil:function(e,t){return Nn(e,"previousSibling",1,t).slice(1)}},function(r,o){hn.fn[r]=function(t,e){var n=[];return this.each(function(){var e=o.call(n,this,t,n);e&&(hn
 .isArray(e)?n.push.apply(n,e):n.push(e))}),1<this.length&&(n=hn.unique(n),0!==r.indexOf("parents")&&"prevUntil"!==r||(n=n.reverse())),n=hn(n),e?n.filter(e):n}}),hn.fn.is=function(e){return!!e&&0<this.filter(e).length},hn.fn.init.prototype=hn.fn,hn.overrideDefaults=function(n){var r,o=function(e,t){return r=r||n(),0===arguments.length&&(e=r.element),t||(t=r.context),new o.fn.init(e,t)};return hn.extend(o,this),o};var Sn=function(n,r,e){yn(e,function(e,t){n[e]=n[e]||{},n[e][r]=t})};me.ie&&me.ie<8&&(Sn(gn,"get",{maxlength:function(e){var t=e.maxLength;return 2147483647===t?undefined:t},size:function(e){var t=e.size;return 20===t?undefined:t},"class":function(e){return e.className},style:function(e){var t=e.style.cssText;return 0===t.length?undefined:t}}),Sn(gn,"set",{"class":function(e,t){e.className=t},style:function(e,t){e.style.cssText=t}})),me.ie&&me.ie<9&
 amp;&(mn["float"]="styleFloat",Sn(pn,"set",{opacity:function(e,t){var n=e.style;null===t||""===t?n.removeAttribute("filter"):(n.zoom=1,n.filter="alpha(opacity="+100*t+")")}})),hn.attrHooks=gn,hn.cssHooks=pn;var kn,Tn,An,Rn=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}return undefined}(e,t);if(!n)return{major:0,minor:0};var r=function(e){return Number(t.replace(n,"$"+e))};return Dn(r(1),r(2))},_n=function(){return Dn(0,0)},Dn=function(e,t){return{major:e,minor:t}},Bn={nu:Dn,detect:function(e,t){var n=String(t).toLowerCase();return 0===e.length?_n():Rn(e,n)},unknown:_n},On="Firefox",Pn=function(e,t){return function(){return t===e}},Ln=function(e){var t=e.current;return{current:t,version:e.version,isEdge:Pn("Edge",t),isChrome:Pn("Chrome",t),isIE:Pn("IE",t),isOpera:Pn("Opera",t),isFirefox:Pn(On,t),isSaf
 ari:Pn("Safari",t)}},In={unknown:function(){return Ln({current:undefined,version:Bn.unknown()})},nu:Ln,edge:q("Edge"),chrome:q("Chrome"),ie:q("IE"),opera:q("Opera"),firefox:q(On),safari:q("Safari")},Mn="Windows",Fn="Android",zn="Solaris",Un="FreeBSD",Vn=function(e,t){return function(){return t===e}},Hn=function(e){var t=e.current;return{current:t,version:e.version,isWindows:Vn(Mn,t),isiOS:Vn("iOS",t),isAndroid:Vn(Fn,t),isOSX:Vn("OSX",t),isLinux:Vn("Linux",t),isSolaris:Vn(zn,t),isFreeBSD:Vn(Un,t)}},jn={unknown:function(){return Hn({current:undefined,version:Bn.unknown()})},nu:Hn,windows:q(Mn),ios:q("iOS"),android:q(Fn),linux:q("Linux"),osx:q("OSX"),solaris:q(zn),freebsd:q(Un)},qn=function(e,t){var n=String(t).toLowerCase();return V(e,function(e){return e.search(n)})},$n=function(e,n){return qn(e,n).map(function(e){var t=Bn.det
 ect(e.versionRegexes,n);return{current:e.name,version:t}})},Wn=function(e,n){return qn(e,n).map(function(e){var t=Bn.detect(e.versionRegexes,n);return{current:e.name,version:t}})},Kn=function(e,t){return-1!==e.indexOf(t)},Xn=function(e){return e.replace(/^\s+|\s+$/g,"")},Yn=function(e){return e.replace(/\s+$/g,"")},Gn=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,Jn=function(t){return function(e){return Kn(e,t)}},Qn=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(e){return Kn(e,"edge/")&&Kn(e,"chrome")&&Kn(e,"safari")&&Kn(e,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,Gn],search:function(e){return Kn(e,"chrome")&&!Kn(e,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(e){return Kn(e,"msie")||Kn(e,&quot
 ;trident")}},{name:"Opera",versionRegexes:[Gn,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:Jn("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:Jn("firefox")},{name:"Safari",versionRegexes:[Gn,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(e){return(Kn(e,"safari")||Kn(e,"mobile/"))&&Kn(e,"applewebkit")}}],Zn=[{name:"Windows",search:Jn("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(e){return Kn(e,"iphone")||Kn(e,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:Jn("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:Jn("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:&quot
 ;Linux",search:Jn("linux"),versionRegexes:[]},{name:"Solaris",search:Jn("sunos"),versionRegexes:[]},{name:"FreeBSD",search:Jn("freebsd"),versionRegexes:[]}],er={browsers:q(Qn),oses:q(Zn)},tr=function(e){var t,n,r,o,i,a,u,s,c,l,f,d=er.browsers(),m=er.oses(),g=$n(d,e).fold(In.unknown,In.nu),p=Wn(m,e).fold(jn.unknown,jn.nu);return{browser:g,os:p,deviceType:(n=g,r=e,o=(t=p).isiOS()&&!0===/ipad/i.test(r),i=t.isiOS()&&!o,a=t.isAndroid()&&3===t.version.major,u=t.isAndroid()&&4===t.version.major,s=o||a||u&&!0===/mobile/i.test(r),c=t.isiOS()||t.isAndroid(),l=c&&!s,f=n.isSafari()&&t.isiOS()&&!1===/safari/i.test(r),{isiPad:q(o),isiPhone:q(i),isTablet:q(s),isPhone:q(l),isTouch:q(c),isAndroid:t.isAndroid,isiOS:t.isiOS,isWebView:q(f)})}},nr={detect:(kn=function(){var e=H.navigator.userAgent;return tr(e)},An=!1,function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t
 ];return An||(An=!0,Tn=kn.apply(null,e)),Tn})},rr=function(e){if(null===e||e===undefined)throw new Error("Node cannot be null or undefined");return{dom:q(e)}},or={fromHtml:function(e,t){var n=(t||H.document).createElement("div");if(n.innerHTML=e,!n.hasChildNodes()||1<n.childNodes.length)throw H.console.error("HTML does not have a single root node",e),new Error("HTML must have a single root node");return rr(n.childNodes[0])},fromTag:function(e,t){var n=(t||H.document).createElement(e);return rr(n)},fromText:function(e,t){var n=(t||H.document).createTextNode(e);return rr(n)},fromDom:rr,fromPoint:function(e,t,n){var r=e.dom();return A.from(r.elementFromPoint(t,n)).map(rr)}},ir=(H.Node.ATTRIBUTE_NODE,H.Node.CDATA_SECTION_NODE,H.Node.COMMENT_NODE,H.Node.DOCUMENT_NODE),ar=(H.Node.DOCUMENT_TYPE_NODE,H.Node.DOCUMENT_FRAGMENT_NODE,H.Node.ELEMENT_NODE),ur=H.Node.TEXT_NODE,sr=(H.Node.PROCESSING_INSTRUCTION_NODE,H.Node.ENTITY_REFERENCE_NODE,H.Node.ENTI
 TY_NODE,H.Node.NOTATION_NODE,function(e){return e.dom().nodeName.toLowerCase()}),cr=function(t){return function(e){return e.dom().nodeType===t}},lr=cr(ar),fr=cr(ur),dr=Object.keys,mr=Object.hasOwnProperty,gr=function(e,t){for(var n=dr(e),r=0,o=n.length;r<o;r++){var i=n[r];t(e[i],i,e)}},pr=function(r,o){var i={};return gr(r,function(e,t){var n=o(e,t,r);i[n.k]=n.v}),i},hr=function(e){return e.style!==undefined},vr=function(e,t,n){if(!(R(n)||O(n)||L(n)))throw H.console.error("Invalid call to Attr.set. Key ",t,":: Value ",n,":: Element ",e),new Error("Attribute value was not simple");e.setAttribute(t,n+"")},br=function(e,t,n){vr(e.dom(),t,n)},yr=function(e,t){var n=e.dom();gr(t,function(e,t){vr(n,t,e)})},Cr=function(e,t){var n=e.dom().getAttribute(t);return null===n?undefined:n},xr=function(e,t){e.dom().removeAttribute(t)},wr=function(e,t){var n=e.dom();gr(t,function(e,t){!function(e,t,n){if(!R(n))throw H.console.error("Invalid c
 all to CSS.set. Property ",t,":: Value ",n,":: Element ",e),new Error("CSS value must be a string: "+n);hr(e)&&e.style.setProperty(t,n)}(n,t,e)})},Nr=function(e,t){var n,r,o=e.dom(),i=H.window.getComputedStyle(o).getPropertyValue(t),a=""!==i||(r=fr(n=e)?n.dom().parentNode:n.dom())!==undefined&&null!==r&&r.ownerDocument.body.contains(r)?i:Er(o,t);return null===a?undefined:a},Er=function(e,t){return hr(e)?e.style.getPropertyValue(t):""},Sr=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 F(t,function(e,t){r[e]=q(n[t])}),r}},kr=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},Tr=functio
 n(){return ae.getOrDie("Node")},Ar=function(e,t,n){return 0!=(e.compareDocumentPosition(t)&n)},Rr=function(e,t){return Ar(e,t,Tr().DOCUMENT_POSITION_CONTAINED_BY)},_r=ar,Dr=ir,Br=function(e,t){var n=e.dom();if(n.nodeType!==_r)return!1;if(n.matches!==undefined)return n.matches(t);if(n.msMatchesSelector!==undefined)return n.msMatchesSelector(t);if(n.webkitMatchesSelector!==undefined)return n.webkitMatchesSelector(t);if(n.mozMatchesSelector!==undefined)return n.mozMatchesSelector(t);throw new Error("Browser lacks native selectors")},Or=function(e){return e.nodeType!==_r&&e.nodeType!==Dr||0===e.childElementCount},Pr=function(e,t){return e.dom()===t.dom()},Lr=nr.detect().browser.isIE()?function(e,t){return Rr(e.dom(),t.dom())}:function(e,t){var n=e.dom(),r=t.dom();return n!==r&&n.contains(r)},Ir=function(e){return or.fromDom(e.dom().ownerDocument)},Mr=function(e){var t=e.dom();return A.from(t.parentNode).map(or.fromDom)},Fr=function(e){var t=e.dom(
 );return A.from(t.previousSibling).map(or.fromDom)},zr=function(e){var t=e.dom();return A.from(t.nextSibling).map(or.fromDom)},Ur=function(e){return t=kr(e,Fr),(n=Z.call(t,0)).reverse(),n;var t,n},Vr=function(e){return kr(e,zr)},Hr=function(e){var t=e.dom();return W(t.childNodes,or.fromDom)},jr=function(e,t){var n=e.dom().childNodes;return A.from(n[t]).map(or.fromDom)},qr=function(e){return jr(e,0)},$r=function(e){return jr(e,e.dom().childNodes.length-1)},Wr=(Sr("element","offset"),nr.detect().browser),Kr=function(e){return V(e,lr)},Xr={getPos:function(e,t,n){var r,o,i,a=0,u=0,s=e.ownerDocument;if(n=n||e,t){if(n===e&&t.getBoundingClientRect&&"static"===Nr(or.fromDom(e),"position"))return{x:a=(o=t.getBoundingClientRect()).left+(s.documentElement.scrollLeft||e.scrollLeft)-s.documentElement.clientLeft,y:u=o.top+(s.documentElement.scrollTop||e.scrollTop)-s.documentElement.clientTop};for(r=t;r&&r!==n&&r.nodeType;)a+=
 r.offsetLeft||0,u+=r.offsetTop||0,r=r.offsetParent;for(r=t.parentNode;r&&r!==n&&r.nodeType;)a-=r.scrollLeft||0,u-=r.scrollTop||0,r=r.parentNode;u+=(i=or.fromDom(t),Wr.isFirefox()&&"table"===sr(i)?Kr(Hr(i)).filter(function(e){return"caption"===sr(e)}).bind(function(o){return Kr(Vr(o)).map(function(e){var t=e.dom().offsetTop,n=o.dom().offsetTop,r=o.dom().offsetHeight;return t<=n?-r:0})}).getOr(0):0)}return{x:a,y:u}}},Yr=function(e){var n=A.none(),t=[],r=function(e){o()?a(e):t.push(e)},o=function(){return n.isSome()},i=function(e){F(e,a)},a=function(t){n.each(function(e){H.setTimeout(function(){t(e)},0)})};return e(function(e){n=A.some(e),i(t),t=[]}),{get:r,map:function(n){return Yr(function(t){r(function(e){t(n(e))})})},isReady:o}},Gr={nu:Yr,pure:function(t){return Yr(function(e){e(t)})}},Jr=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;H.setTimeout(function()
 {r.apply(n,e)},0)}))},n=function(){return Gr.nu(e)};return{map:function(r){return Jr(function(n){e(function(e){var t=r(e);n(t)})})},bind:function(n){return Jr(function(t){e(function(e){n(e).get(t)})})},anonBind:function(n){return Jr(function(t){e(function(e){n.get(t)})})},toLazy:n,toCached:function(){var t=null;return Jr(function(e){null===t&&(t=n()),t.get(e)})},get:e}},Qr={nu:Jr,pure:function(t){return Jr(function(e){e(t)})}},Zr=function(a,e){return e(function(r){var o=[],i=0;0===a.length?r([]):F(a,function(e,t){var n;e.get((n=t,function(e){o[n]=e,++i>=a.length&&r(o)}))})})},eo=function(e){return Zr(e,Qr.nu)},to=function(n){return{is:function(e){return n===e},isValue:x,isError:C,getOr:q(n),getOrThunk:q(n),getOrDie:q(n),or:function(e){return to(n)},orThunk:function(e){return to(n)},fold:function(e,t){return t(n)},map:function(e){return to(e(n))},mapError:function(e){return to(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 A.some(n)}}},no=function(n){return{is:C,isValue:C,isError:x,getOr:$,getOrThunk:function(e){return e()},getOrDie:function(){return e=String(n),function(){throw new Error(e)}();var e},or:function(e){return e},orThunk:function(e){return e()},fold:function(e,t){return e(n)},map:function(e){return no(n)},mapError:function(e){return no(e(n))},each:o,bind:function(e){return no(n)},exists:C,forall:x,toOption:A.none}},ro={value:to,error:no};function oo(e,u){var t=e,n=function(e,t,n,r){var o,i;if(e){if(!r&&e[t])return e[t];if(e!==u){if(o=e[n])return o;for(i=e.parentNode;i&&i!==u;i=i.parentNode)if(o=i[n])return o}}};this.current=function(){return t},this.next=function(e){return t=n(t,"firstChild","nextSibling",e)},this.prev=function(e){return t=n(t,"lastChild","previousSibling",e)},this.prev2=function(e){return t=function(e,t,n,r){var o,i,a;if(e){if(o=e[n],u&&o===u)return;
 if(o){if(!r)for(a=o[t];a;a=a[t])if(!a[t])return a;return o}if((i=e.parentNode)&&i!==u)return i}}(t,"lastChild","previousSibling",e)}}var io,ao,uo,so=function(t){var n;return function(e){return(n=n||function(e,t){for(var n={},r=0,o=e.length;r<o;r++){var i=e[r];n[String(i)]=t(i,r)}return n}(t,q(!0))).hasOwnProperty(sr(e))}},co=so(["h1","h2","h3","h4","h5","h6"]),lo=so(["article","aside","details","div","dt","figcaption","footer","form","fieldset","header","hgroup","html","main","nav","section","summary","body","p","dl","multicol","dd","figure","address","center","blockquote","h1","h2","h3","h4","h5",&
 quot;h6","listing","xmp","pre","plaintext","menu","dir","ul","ol","li","hr","table","tbody","thead","tfoot","th","tr","td","caption"]),fo=function(e){return lr(e)&&!lo(e)},mo=function(e){return lr(e)&&"br"===sr(e)},go=so(["h1","h2","h3","h4","h5","h6","p","div","address","pre","form","blockquote","center","dir","fieldset","header","footer","article","section","hgroup","aside","nav","figure"]),po=so(["ul","ol","dl"]),ho=so(["li","dd","dt"]),vo=so(["area","base","basef
 ont","br","col","frame","hr","img","input","isindex","link","meta","param","embed","source","wbr","track"]),bo=so(["thead","tbody","tfoot"]),yo=so(["td","th"]),Co=so(["pre","script","textarea","style"]),xo=function(t){return function(e){return!!e&&e.nodeType===t}},wo=xo(1),No=function(e){var r=e.toLowerCase().split(" ");return function(e){var t,n;if(e&&e.nodeType)for(n=e.nodeName.toLowerCase(),t=0;t<r.length;t++)if(n===r[t])return!0;return!1}},Eo=function(t){return function(e){if(wo(e)){if(e.contentEditable===t)return!0;if(e.getAttribute("data-mce-contenteditable")===t)return!0}return!1}},So=xo(3),ko=xo(8),To=xo(9),Ao=xo(11),Ro=No("br"),_o=Eo("true"),Do=Eo("false"),Bo={isText:So,isEle
 ment:wo,isComment:ko,isDocument:To,isDocumentFragment:Ao,isBr:Ro,isContentEditableTrue:_o,isContentEditableFalse:Do,matchNodeNames:No,hasPropValue:function(t,n){return function(e){return wo(e)&&e[t]===n}},hasAttribute:function(t,e){return function(e){return wo(e)&&e.hasAttribute(t)}},hasAttributeValue:function(t,n){return function(e){return wo(e)&&e.getAttribute(t)===n}},matchStyleValues:function(r,e){var o=e.toLowerCase().split(" ");return function(e){var t;if(wo(e))for(t=0;t<o.length;t++){var n=e.ownerDocument.defaultView.getComputedStyle(e,null);if((n?n.getPropertyValue(r):null)===o[t])return!0}return!1}},isBogus:function(e){return wo(e)&&e.hasAttribute("data-mce-bogus")},isBogusAll:function(e){return wo(e)&&"all"===e.getAttribute("data-mce-bogus")},isTable:function(e){return wo(e)&&"TABLE"===e.tagName}},Oo=function(e){return e&&"SPAN"===e.tagName&&"
 bookmark"===e.getAttribute("data-mce-type")},Po=function(e,t){var n,r=t.childNodes;if(!Bo.isElement(t)||!Oo(t)){for(n=r.length-1;0<=n;n--)Po(e,r[n]);if(!1===Bo.isDocument(t)){if(Bo.isText(t)&&0<t.nodeValue.length){var o=Gt.trim(t.nodeValue).length;if(e.isBlock(t.parentNode)||0<o)return;if(0===o&&(a=(i=t).previousSibling&&"SPAN"===i.previousSibling.nodeName,u=i.nextSibling&&"SPAN"===i.nextSibling.nodeName,a&&u))return}else if(Bo.isElement(t)&&(1===(r=t.childNodes).length&&Oo(r[0])&&t.parentNode.insertBefore(r[0],t),r.length||vo(or.fromDom(t))))return;e.remove(t)}var i,a,u;return t}},Lo={trimNode:Po},Io=Gt.makeMap,Mo=/[&<>\"\u0060\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,Fo=/[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,zo=/[<>&\"\']/g,Uo=/&#([a-z0-9]+);?|&([a-z0-9]+);/gi,Vo={128:"\u20ac&q
 uot;,130:"\u201a",131:"\u0192",132:"\u201e",133:"\u2026",134:"\u2020",135:"\u2021",136:"\u02c6",137:"\u2030",138:"\u0160",139:"\u2039",140:"\u0152",142:"\u017d",145:"\u2018",146:"\u2019",147:"\u201c",148:"\u201d",149:"\u2022",150:"\u2013",151:"\u2014",152:"\u02dc",153:"\u2122",154:"\u0161",155:"\u203a",156:"\u0153",158:"\u017e",159:"\u0178"};ao={'"':"&quot;","'":"&#39;","<":"&lt;",">":"&gt;","&":"&amp;","`":"&#96;"},uo={"&lt;":"<","&gt;":">","&amp;":"&","&quot;":'"',"&apos;
 ":"'"};var Ho=function(e,t){var n,r,o,i={};if(e){for(e=e.split(","),t=t||10,n=0;n<e.length;n+=2)r=String.fromCharCode(parseInt(e[n],t)),ao[r]||(o="&"+e[n+1]+";",i[r]=o,i[o]=r);return i}};io=Ho("50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,7f,iuml,7g,eth,7h,ntilde,7i,ograve,
 7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,t9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asym
 p,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro",32);var jo=function(e,t){return e.replace(t?Mo:Fo,function(e){return ao[e]||e})},qo=function(e,t){return e.replace(t?Mo:Fo,function(e){return 1<e.length?"&#"+(1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320)+65536)+";":ao[e]||"&#"+e.charCodeAt(0)+";"})},$o=function(e,t,n){return n=n||io,e.replace(t?Mo:Fo,function(e){return ao[e]||n[e]||e})},Wo={encodeRaw:jo,encodeAllRaw:function(e){return(""+e).replace(zo,function(e){return ao[e
 ]||e})},encodeNumeric:qo,encodeNamed:$o,getEncodeFunc:function(e,t){var n=Ho(t)||io,r=Io(e.replace(/\+/g,","));return r.named&&r.numeric?function(e,t){return e.replace(t?Mo:Fo,function(e){return ao[e]!==undefined?ao[e]:n[e]!==undefined?n[e]:1<e.length?"&#"+(1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320)+65536)+";":"&#"+e.charCodeAt(0)+";"})}:r.named?t?function(e,t){return $o(e,t,n)}:$o:r.numeric?qo:jo},decode:function(e){return e.replace(Uo,function(e,t){return t?65535<(t="x"===t.charAt(0).toLowerCase()?parseInt(t.substr(1),16):parseInt(t,10))?(t-=65536,String.fromCharCode(55296+(t>>10),56320+(1023&t))):Vo[t]||String.fromCharCode(t):uo[e]||io[e]||(n=e,(r=or.fromTag("div").dom()).innerHTML=n,r.textContent||r.innerText||n);var n,r})}},Ko={},Xo={},Yo=Gt.makeMap,Go=Gt.each,Jo=Gt.extend,Qo=Gt.explode,Zo=Gt.inArray,ei=function(e,t){return(e=Gt.trim(e))?e.split(t||" "):[]},
 ti=function(e){var u,t,n,r,o,i,s={},a=function(e,t,n){var r,o,i,a=function(e,t){var n,r,o={};for(n=0,r=e.length;n<r;n++)o[e[n]]=t||{};return o};for(t=t||"","string"==typeof(n=n||[])&&(n=ei(n)),r=(e=ei(e)).length;r--;)i={attributes:a(o=ei([u,t].join(" "))),attributesOrder:o,children:a(n,Xo)},s[e[r]]=i},c=function(e,t){var n,r,o,i;for(n=(e=ei(e)).length,t=ei(t);n--;)for(r=s[e[n]],o=0,i=t.length;o<i;o++)r.attributes[t[o]]={},r.attributesOrder.push(t[o])};return Ko[e]?Ko[e]:(u="id accesskey class dir lang style tabindex title role",t="address blockquote div dl fieldset form h1 h2 h3 h4 h5 h6 hr menu ol p pre table ul",n="a abbr b bdo br button cite code del dfn em embed i iframe img input ins kbd label map noscript object q s samp script select small span strong sub sup textarea u var #text #comment","html4"!==e&&(u+=" contenteditable contextmenu draggable dropzone hidden spellcheck translat
 e",t+=" article aside details dialog figure main header footer hgroup section nav",n+=" audio canvas command datalist mark meter output picture progress time wbr video ruby bdi keygen"),"html5-strict"!==e&&(u+=" xml:lang",n=[n,i="acronym applet basefont big font strike tt"].join(" "),Go(ei(i),function(e){a(e,"",n)}),t=[t,o="center dir isindex noframes"].join(" "),r=[t,n].join(" "),Go(ei(o),function(e){a(e,"",r)})),r=r||[t,n].join(" "),a("html","manifest","head body"),a("head","","base command link meta noscript script style title"),a("title hr noscript br"),a("base","href target"),a("link","href rel media hreflang type sizes hreflang"),a("meta","name http-equiv content charset"),a("style","media type scoped&qu
 ot;),a("script","src async defer type charset"),a("body","onafterprint onbeforeprint onbeforeunload onblur onerror onfocus onhashchange onload onmessage onoffline ononline onpagehide onpageshow onpopstate onresize onscroll onstorage onunload",r),a("address dt dd div caption","",r),a("h1 h2 h3 h4 h5 h6 pre p abbr code var samp kbd sub sup i b u bdo span legend em strong small s cite dfn","",n),a("blockquote","cite",r),a("ol","reversed start type","li"),a("ul","","li"),a("li","value",r),a("dl","","dt dd"),a("a","href target rel media hreflang type",n),a("q","cite",n),a("ins del","cite datetime",r),a("img","src sizes srcset alt usemap ismap width height"),a("iframe","src name width heig
 ht",r),a("embed","src type width height"),a("object","data type typemustmatch name usemap form width height",[r,"param"].join(" ")),a("param","name value"),a("map","name",[r,"area"].join(" ")),a("area","alt coords shape href target rel media hreflang type"),a("table","border","caption colgroup thead tfoot tbody tr"+("html4"===e?" col":"")),a("colgroup","span","col"),a("col","span"),a("tbody thead tfoot","","tr"),a("tr","","td th"),a("td","colspan rowspan headers",r),a("th","colspan rowspan headers scope abbr",r),a("form","accept-charset action autocomplete enctype method name novalidate target",r),a("fieldset&
 quot;,"disabled form name",[r,"legend"].join(" ")),a("label","form for",n),a("input","accept alt autocomplete checked dirname disabled form formaction formenctype formmethod formnovalidate formtarget height list max maxlength min multiple name pattern readonly required size src step type value width"),a("button","disabled form formaction formenctype formmethod formnovalidate formtarget name type value","html4"===e?r:n),a("select","disabled form multiple name required size","option optgroup"),a("optgroup","disabled label","option"),a("option","disabled label selected value"),a("textarea","cols dirname disabled form maxlength name readonly required rows wrap"),a("menu","type label",[r,"li"].join(" ")),a("noscript","",r),"htm
 l4"!==e&&(a("wbr"),a("ruby","",[n,"rt rp"].join(" ")),a("figcaption","",r),a("mark rt rp summary bdi","",n),a("canvas","width height",r),a("video","src crossorigin poster preload autoplay mediagroup loop muted controls width height buffered",[r,"track source"].join(" ")),a("audio","src crossorigin preload autoplay mediagroup loop muted controls buffered volume",[r,"track source"].join(" ")),a("picture","","img source"),a("source","src srcset type media sizes"),a("track","kind src srclang label default"),a("datalist","",[n,"option"].join(" ")),a("article section nav aside main header footer","",r),a("hgroup","","h1 h2 h3 h4 h5 h6&qu
 ot;),a("figure","",[r,"figcaption"].join(" ")),a("time","datetime",n),a("dialog","open",r),a("command","type label icon disabled checked radiogroup command"),a("output","for form name",n),a("progress","value max",n),a("meter","value min max low high optimum",n),a("details","open",[r,"summary"].join(" ")),a("keygen","autofocus challenge disabled form keytype name")),"html5-strict"!==e&&(c("script","language xml:space"),c("style","xml:space"),c("object","declare classid code codebase codetype archive standby align border hspace vspace"),c("embed","align name hspace vspace"),c("param","valuetype type"),c("a","charset name rev shape coords&
 quot;),c("br","clear"),c("applet","codebase archive code object alt name width height align hspace vspace"),c("img","name longdesc align border hspace vspace"),c("iframe","longdesc frameborder marginwidth marginheight scrolling align"),c("font basefont","size color face"),c("input","usemap align"),c("select","onchange"),c("textarea"),c("h1 h2 h3 h4 h5 h6 div p legend caption","align"),c("ul","type compact"),c("li","type"),c("ol dl menu dir","compact"),c("pre","width xml:space"),c("hr","align noshade size width"),c("isindex","prompt"),c("table","summary width frame rules cellspacing cellpadding align bgcolor"),c("col","width align char charoff valign"),c(&quot
 ;colgroup","width align char charoff valign"),c("thead","align char charoff valign"),c("tr","align char charoff valign bgcolor"),c("th","axis align char charoff valign nowrap bgcolor width height"),c("form","accept"),c("td","abbr axis scope align char charoff valign nowrap bgcolor width height"),c("tfoot","align char charoff valign"),c("tbody","align char charoff valign"),c("area","nohref"),c("body","background bgcolor text link vlink alink")),"html4"!==e&&(c("input button select textarea","autofocus"),c("input textarea","placeholder"),c("a","download"),c("link script img","crossorigin"),c("iframe","sandbox seamless allowfullscreen")),Go(ei("a form meter progress dfn&quo
 t;),function(e){s[e]&&delete s[e].children[e]}),delete s.caption.children.table,delete s.script,Ko[e]=s)},ni=function(e,n){var r;return e&&(r={},"string"==typeof e&&(e={"*":e}),Go(e,function(e,t){r[t]=r[t.toUpperCase()]="map"===n?Yo(e,/[, ]/):Qo(e,/[, ]/)})),r};function ri(i){var e,t,n,r,o,a,u,s,c,l,f,d,m,N={},g={},E=[],p={},h={},v=function(e,t,n){var r=i[e];return r?r=Yo(r,/[, ]/,Yo(r.toUpperCase(),/[, ]/)):(r=Ko[e])||(r=Yo(t," ",Yo(t.toUpperCase()," ")),r=Jo(r,n),Ko[e]=r),r};n=ti((i=i||{}).schema),!1===i.verify_html&&(i.valid_elements="*[*]"),e=ni(i.valid_styles),t=ni(i.invalid_styles,"map"),s=ni(i.valid_classes,"map"),r=v("whitespace_elements","pre script noscript style textarea video audio iframe object code"),o=v("self_closing_elements","colgroup dd dt li option p td tfoot th thead tr"),a=v("short_ended_elements",&quot
 ;area base basefont br col frame hr img input isindex link meta param embed source wbr track"),u=v("boolean_attributes","checked compact declare defer disabled ismap multiple nohref noresize noshade nowrap readonly selected autoplay loop controls"),l=v("non_empty_elements","td th iframe video audio object script pre code",a),f=v("move_caret_before_on_enter_elements","table",l),d=v("text_block_elements","h1 h2 h3 h4 h5 h6 p div address pre form blockquote center dir fieldset header footer article section hgroup aside main nav figure"),c=v("block_elements","hr table tbody thead tfoot th tr td li ol ul caption dl dt dd noscript menu isindex option datalist select optgroup figcaption details summary",d),m=v("text_inline_elements","span strong b em i font strike u var cite dfn code mark q sup sub samp"),Go((i.special||"script noscript noframes noembed title st
 yle textarea xmp").split(" "),function(e){h[e]=new RegExp("</"+e+"[^>]*>","gi")});var S=function(e){return new RegExp("^"+e.replace(/([?+*])/g,".$1")+"$")},b=function(e){var t,n,r,o,i,a,u,s,c,l,f,d,m,g,p,h,v,b,y,C=/^([#+\-])?([^\[!\/]+)(?:\/([^\[!]+))?(?:(!?)\[([^\]]+)\])?$/,x=/^([!\-])?(\w+[\\:]:\w+|[^=:<]+)?(?:([=:<])(.*))?$/,w=/[*?+]/;if(e)for(e=ei(e,","),N["@"]&&(h=N["@"].attributes,v=N["@"].attributesOrder),t=0,n=e.length;t<n;t++)if(i=C.exec(e[t])){if(g=i[1],c=i[2],p=i[3],s=i[5],a={attributes:d={},attributesOrder:m=[]},"#"===g&&(a.paddEmpty=!0),"-"===g&&(a.removeEmpty=!0),"!"===i[4]&&(a.removeEmptyAttrs=!0),h){for(b in h)d[b]=h[b];m.push.apply(m,v)}if(s)for(r=0,o=(s=ei(s,"|")).length;r<o;r++)if(i=x.exec(s[r])){if(u={},f=i[1],l=i[2].replace(/[\\:]:/g,":"),g=i[3],y=
 i[4],"!"===f&&(a.attributesRequired=a.attributesRequired||[],a.attributesRequired.push(l),u.required=!0),"-"===f){delete d[l],m.splice(Zo(m,l),1);continue}g&&("="===g&&(a.attributesDefault=a.attributesDefault||[],a.attributesDefault.push({name:l,value:y}),u.defaultValue=y),":"===g&&(a.attributesForced=a.attributesForced||[],a.attributesForced.push({name:l,value:y}),u.forcedValue=y),"<"===g&&(u.validValues=Yo(y,"?"))),w.test(l)?(a.attributePatterns=a.attributePatterns||[],u.pattern=S(l),a.attributePatterns.push(u)):(d[l]||m.push(l),d[l]=u)}h||"@"!==c||(h=d,v=m),p&&(a.outputName=c,N[p]=a),w.test(c)?(a.pattern=S(c),E.push(a)):N[c]=a}},y=function(e){N={},E=[],b(e),Go(n,function(e,t){g[t]=e.children})},C=function(e){var a=/^(~)?(.+)$/;e&&(Ko.text_block_elements=Ko.block_elements=null,Go(ei(e,","),function(e){var t=a.exec(e),n="~"===t[1],r=n?
 "span":"div",o=t[2];if(g[o]=g[r],p[o]=r,n||(c[o.toUpperCase()]={},c[o]={}),!N[o]){var i=N[r];delete(i=Jo({},i)).removeEmptyAttrs,delete i.removeEmpty,N[o]=i}Go(g,function(e,t){e[r]&&(g[t]=e=Jo({},g[t]),e[o]=e[r])})}))},x=function(e){var o=/^([+\-]?)(\w+)\[([^\]]+)\]$/;Ko[i.schema]=null,e&&Go(ei(e,","),function(e){var t,n,r=o.exec(e);r&&(n=r[1],t=n?g[r[2]]:g[r[2]]={"#comment":{}},t=g[r[2]],Go(ei(r[3],"|"),function(e){"-"===n?delete t[e]:t[e]={}}))})},w=function(e){var t,n=N[e];if(n)return n;for(t=E.length;t--;)if((n=E[t]).pattern.test(e))return n};return i.valid_elements?y(i.valid_elements):(Go(n,function(e,t){N[t]={attributes:e.attributes,attributesOrder:e.attributesOrder},g[t]=e.children}),"html5"!==i.schema&&Go(ei("strong/b em/i"),function(e){e=ei(e,"/"),N[e[1]].outputName=e[0]}),Go(ei("ol ul sub sup blockquote span font a table tbody tr strong em b i&quot
 ;),function(e){N[e]&&(N[e].removeEmpty=!0)}),Go(ei("p h1 h2 h3 h4 h5 h6 th td pre div address caption li"),function(e){N[e].paddEmpty=!0}),Go(ei("span"),function(e){N[e].removeEmptyAttrs=!0})),C(i.custom_elements),x(i.valid_children),b(i.extended_valid_elements),x("+ol[ul|ol],+ul[ul|ol]"),Go({dd:"dl",dt:"dl",li:"ul ol",td:"tr",th:"tr",tr:"tbody thead tfoot",tbody:"table",thead:"table",tfoot:"table",legend:"fieldset",area:"map",param:"video audio object"},function(e,t){N[t]&&(N[t].parentsRequired=ei(e))}),i.invalid_elements&&Go(Qo(i.invalid_elements),function(e){N[e]&&delete N[e]}),w("span")||b("span[!data-mce-type|*]"),{children:g,elements:N,getValidStyles:function(){return e},getValidClasses:function(){return s},getBlockElements:function(){return c},getInvalidStyles:function(){return
  t},getShortEndedElements:function(){return a},getTextBlockElements:function(){return d},getTextInlineElements:function(){return m},getBoolAttrs:function(){return u},getElementRule:w,getSelfClosingElements:function(){return o},getNonEmptyElements:function(){return l},getMoveCaretBeforeOnEnterElements:function(){return f},getWhiteSpaceElements:function(){return r},getSpecialElements:function(){return h},isValidChild:function(e,t){var n=g[e.toLowerCase()];return!(!n||!n[t.toLowerCase()])},isValid:function(e,t){var n,r,o=w(e);if(o){if(!t)return!0;if(o.attributes[t])return!0;if(n=o.attributePatterns)for(r=n.length;r--;)if(n[r].pattern.test(e))return!0}return!1},getCustomElements:function(){return p},addValidElements:b,setValidElements:y,addCustomElements:C,addValidChildren:x}}var oi=function(e,t,n,r){var o=function(e){return 1<(e=parseInt(e,10).toString(16)).length?e:"0"+e};return"#"+o(t)+o(n)+o(r)};function ii(y,e){var C,t,c,l,x=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+
 )\s*,\s*([0-9]+)\s*\)/gi,w=/(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,N=/\s*([^:]+):\s*([^;]+);?/g,E=/\s+$/,S={},k="\ufeff";for(y=y||{},e&&(c=e.getValidStyles(),l=e.getInvalidStyles()),t=("\\\" \\' \\; \\: ; : "+k).split(" "),C=0;C<t.length;C++)S[t[C]]=k+C,S[k+C]=t[C];return{toHex:function(e){return e.replace(x,oi)},parse:function(e){var t,n,r,o,i,a,u,s,c={},l=y.url_converter,f=y.url_converter_scope||this,d=function(e,t,n){var r,o,i,a;if((r=c[e+"-top"+t])&&(o=c[e+"-right"+t])&&(i=c[e+"-bottom"+t])&&(a=c[e+"-left"+t])){var u=[r,o,i,a];for(C=u.length-1;C--&&u[C]===u[C+1];);-1<C&&n||(c[e+t]=-1===C?u[0]:u.join(" "),delete c[e+"-top"+t],delete c[e+"-right"+t],delete c[e+"-bottom"+t],delete c[e+"-left&quot
 ;+t])}},m=function(e){var t,n=c[e];if(n){for(t=(n=n.split(" ")).length;t--;)if(n[t]!==n[0])return!1;return c[e]=n[0],!0}},g=function(e){return o=!0,S[e]},p=function(e,t){return o&&(e=e.replace(/\uFEFF[0-9]/g,function(e){return S[e]})),t||(e=e.replace(/\\([\'\";:])/g,"$1")),e},h=function(e){return String.fromCharCode(parseInt(e.slice(1),16))},v=function(e){return e.replace(/\\[0-9a-f]+/gi,h)},b=function(e,t,n,r,o,i){if(o=o||i)return"'"+(o=p(o)).replace(/\'/g,"\\'")+"'";if(t=p(t||n||r),!y.allow_script_urls){var a=t.replace(/[\s\r\n]+/g,"");if(/(java|vb)script:/i.test(a))return"";if(!y.allow_svg_data_urls&&/^data:image\/svg/i.test(a))return""}return l&&(t=l.call(f,t,"style")),"url('"+t.replace(/\'/g,"\\'")+"')"};if(e){for(e=(e=e.replace(/[\u0000-\u001F]/g,"")).replace(/\\[\"\';:\uFEFF]/g,g).replace(/\"[^\"]+\"
 |\'[^\']+\'/g,function(e){return e.replace(/[;:]/g,g)});t=N.exec(e);)if(N.lastIndex=t.index+t[0].length,n=t[1].replace(E,"").toLowerCase(),r=t[2].replace(E,""),n&&r){if(n=v(n),r=v(r),-1!==n.indexOf(k)||-1!==n.indexOf('"'))continue;if(!y.allow_script_urls&&("behavior"===n||/expression\s*\(|\/\*|\*\//.test(r)))continue;"font-weight"===n&&"700"===r?r="bold":"color"!==n&&"background-color"!==n||(r=r.toLowerCase()),r=(r=r.replace(x,oi)).replace(w,b),c[n]=o?p(r,!0):r}d("border","",!0),d("border","-width"),d("border","-color"),d("border","-style"),d("padding",""),d("margin",""),i="border",u="border-style",s="border-color",m(a="border-width")&&m(u)&&m(s)&&(c[i]=c[a]+" "+c[u]+" &qu
 ot;+c[s],delete c[a],delete c[u],delete c[s]),"medium none"===c.border&&delete c.border,"none"===c["border-image"]&&delete c["border-image"]}return c},serialize:function(i,e){var t,n,r,o,a,u="",s=function(e){var t,n,r,o;if(t=c[e])for(n=0,r=t.length;n<r;n++)e=t[n],(o=i[e])&&(u+=(0<u.length?" ":"")+e+": "+o+";")};if(e&&c)s("*"),s(e);else for(t in i)!(n=i[t])||l&&(r=t,o=e,a=void 0,(a=l["*"])&&a[r]||(a=l[o])&&a[r])||(u+=(0<u.length?" ":"")+t+": "+n+";");return u}}}var ai,ui=Gt.each,si=Gt.grep,ci=me.ie,li=/^([a-z0-9],?)+$/i,fi=/^[ \t\r\n]*$/,di=function(n,r,o){var e={},i=r.keep_values,t={set:function(e,t,n){r.url_converter&&(t=r.url_converter.call(r.url_converter_scope||o(),t,n,e[0])),e.attr("data-mce-"+n,t).attr(n,t)},get:function(e,t){return e.attr("da
 ta-mce-"+t)||e.attr(t)}};return e={style:{set:function(e,t){null===t||"object"!=typeof t?(i&&e.attr("data-mce-style",t),e.attr("style",t)):e.css(t)},get:function(e){var t=e.attr("data-mce-style")||e.attr("style");return t=n.serialize(n.parse(t),e[0].nodeName)}}},i&&(e.href=e.src=t),e},mi=function(e,t){var n=t.attr("style"),r=e.serialize(e.parse(n),t[0].nodeName);r||(r=null),t.attr("data-mce-style",r)},gi=function(e,t){var n,r,o=0;if(e)for(n=e.nodeType,e=e.previousSibling;e;e=e.previousSibling)r=e.nodeType,(!t||3!==r||r!==n&&e.nodeValue.length)&&(o++,n=r);return o};function pi(a,u){var s,c=this;void 0===u&&(u={});var r={},i=H.window,o={},t=0,e=function(m,g){void 0===g&&(g={});var p,h=0,v={};p=g.maxLoadTime||5e3;var b=function(e){m.getElementsByTagName("head")[0].appendChild(e)},n=function(e,t,n){var o,r,i,a,u=function(){for(var e=a.passed,t=e.length;t--
 ;)e[t]();a.status=2,a.passed=[],a.failed=[]},s=function(){for(var e=a.failed,t=e.length;t--;)e[t]();a.status=3,a.passed=[],a.failed=[]},c=function(e,t){e()||((new Date).getTime()-i<p?be.setTimeout(t):s())},l=function(){c(function(){for(var e,t,n=m.styleSheets,r=n.length;r--;)if((t=(e=n[r]).ownerNode?e.ownerNode:e.owningElement)&&t.id===o.id)return u(),!0},l)},f=function(){c(function(){try{var e=r.sheet.cssRules;return u(),!!e}catch(t){}},f)};if(e=Gt._addCacheSuffix(e),v[e]?a=v[e]:(a={passed:[],failed:[]},v[e]=a),t&&a.passed.push(t),n&&a.failed.push(n),1!==a.status)if(2!==a.status)if(3!==a.status){if(a.status=1,(o=m.createElement("link")).rel="stylesheet",o.type="text/css",o.id="u"+h++,o.async=!1,o.defer=!1,i=(new Date).getTime(),g.contentCssCors&&(o.crossOrigin="anonymous"),"onload"in o&&!((d=H.navigator.userAgent.match(/WebKit\/(\d*)/))&&parseInt(d[1],10)<536))o.onload=
 l,o.onerror=s;else{if(0<H.navigator.userAgent.indexOf("Firefox"))return(r=m.createElement("style")).textContent='@import "'+e+'"',f(),void b(r);l()}var d;b(o),o.href=e}else s();else u()},t=function(t){return Qr.nu(function(e){n(t,j(e,q(ro.value(t))),j(e,q(ro.error(t))))})},o=function(e){return e.fold($,$)};return{load:n,loadAll:function(e,n,r){eo(W(e,t)).get(function(e){var t=K(e,function(e){return e.isValue()});0<t.fail.length?r(t.fail.map(o)):n(t.pass.map(o))})}}}(a,{contentCssCors:u.contentCssCors}),l=[],f=u.schema?u.schema:ri({}),d=ii({url_converter:u.url_converter,url_converter_scope:u.url_converter_scope},u.schema),m=u.ownEvents?new Te(u.proxy):Te.Event,n=f.getBlockElements(),g=hn.overrideDefaults(function(){return{context:a,element:V.getRoot()}}),p=function(e){if(e&&a&&"string"==typeof e){var t=a.getElementById(e);return t&&t.id!==e?a.getElementsByName(e)[1]:t}return e},h=function(e){return"string&quot
 ;==typeof e&&(e=p(e)),g(e)},v=function(e,t,n){var r,o,i=h(e);return i.length&&(o=(r=s[t])&&r.get?r.get(i,t):i.attr(t)),void 0===o&&(o=n||""),o},b=function(e){var t=p(e);return t?t.attributes:[]},y=function(e,t,n){var r,o;""===n&&(n=null);var i=h(e);r=i.attr(t),i.length&&((o=s[t])&&o.set?o.set(i,n,t):i.attr(t,n),r!==n&&u.onSetAttrib&&u.onSetAttrib({attrElm:i,attrName:t,attrValue:n}))},C=function(){return u.root_element||a.body},x=function(e,t){return Xr.getPos(a.body,p(e),t)},w=function(e,t,n){var r=h(e);return n?r.css(t):("float"===(t=t.replace(/-(\D)/g,function(e,t){return t.toUpperCase()}))&&(t=me.ie&&me.ie<12?"styleFloat":"cssFloat"),r[0]&&r[0].style?r[0].style[t]:undefined)},N=function(e){var t,n;return e=p(e),t=w(e,"width"),n=w(e,"height"),-1===t.indexOf("px")&&(t=0),-1===n.indexOf("px&quo
 t;)&&(n=0),{w:parseInt(t,10)||e.offsetWidth||e.clientWidth,h:parseInt(n,10)||e.offsetHeight||e.clientHeight}},E=function(e,t){var n;if(!e)return!1;if(!Array.isArray(e)){if("*"===t)return 1===e.nodeType;if(li.test(t)){var r=t.toLowerCase().split(/,/),o=e.nodeName.toLowerCase();for(n=r.length-1;0<=n;n--)if(r[n]===o)return!0;return!1}if(e.nodeType&&1!==e.nodeType)return!1}var i=Array.isArray(e)?e:[e];return 0<Tt(t,i[0].ownerDocument||i[0],null,i).length},S=function(e,t,n,r){var o,i=[],a=p(e);for(r=r===undefined,n=n||("BODY"!==C().nodeName?C().parentNode:null),Gt.is(t,"string")&&(t="*"===(o=t)?function(e){return 1===e.nodeType}:function(e){return E(e,o)});a&&a!==n&&a.nodeType&&9!==a.nodeType;){if(!t||"function"==typeof t&&t(a)){if(!r)return[a];i.push(a)}a=a.parentNode}return r?i:null},k=function(e,t,n){var r=t;if(e)for("string"==typeof t&&(r=function(e){retur
 n E(e,t)}),e=e[n];e;e=e[n])if("function"==typeof r&&r(e))return e;return null},T=function(e,n,r){var o,t="string"==typeof e?p(e):e;if(!t)return!1;if(Gt.isArray(t)&&(t.length||0===t.length))return o=[],ui(t,function(e,t){e&&("string"==typeof e&&(e=p(e)),o.push(n.call(r,e,t)))}),o;var i=r||c;return n.call(i,t)},A=function(e,t){h(e).each(function(e,n){ui(t,function(e,t){y(n,t,e)})})},R=function(e,r){var t=h(e);ci?t.each(function(e,t){if(!1!==t.canHaveHTML){for(;t.firstChild;)t.removeChild(t.firstChild);try{t.innerHTML="<br>"+r,t.removeChild(t.firstChild)}catch(n){hn("<div></div>").html("<br>"+r).contents().slice(1).appendTo(t)}return r}}):t.html(r)},_=function(e,n,r,o,i){return T(e,function(e){var t="string"==typeof n?a.createElement(n):n;return A(t,r),o&&("string"!=typeof o&&o.nodeType?t.appendChild(o):"string"==typeof o&
 &R(t,o)),i?t:e.appendChild(t)})},D=function(e,t,n){return _(a.createElement(e),e,t,n,!0)},B=Wo.decode,O=Wo.encodeAllRaw,P=function(e,t){var n=h(e);return t?n.each(function(){for(var e;e=this.firstChild;)3===e.nodeType&&0===e.data.length?this.removeChild(e):this.parentNode.insertBefore(e,this)}).remove():n.remove(),1<n.length?n.toArray():n[0]},L=function(e,t,n){h(e).toggleClass(t,n).each(function(){""===this.className&&hn(this).attr("class",null)})},I=function(t,e,n){return T(e,function(e){return Gt.is(e,"array")&&(t=t.cloneNode(!0)),n&&ui(si(e.childNodes),function(e){t.appendChild(e)}),e.parentNode.replaceChild(t,e)})},M=function(){return a.createRange()},F=function(e,t,n,r){if(Gt.isArray(e)){for(var o=e.length;o--;)e[o]=F(e[o],t,n,r);return e}return!u.collect||e!==a&&e!==i||l.push([e,t,n,r]),m.bind(e,t,n,r||V)},z=function(e,t,n){var r;if(Gt.isArray(e)){for(r=e.length;r--;)e[r]=z(e[r],t,n);return e}if(l&amp
 ;&(e===a||e===i))for(r=l.length;r--;){var o=l[r];e!==o[0]||t&&t!==o[1]||n&&n!==o[2]||m.unbind(o[0],o[1],o[2])}return m.unbind(e,t,n)},U=function(e){if(e&&Bo.isElement(e)){var t=e.getAttribute("data-mce-contenteditable");return t&&"inherit"!==t?t:"inherit"!==e.contentEditable?e.contentEditable:null}return null},V={doc:a,settings:u,win:i,files:o,stdMode:!0,boxModel:!0,styleSheetLoader:e,boundEvents:l,styles:d,schema:f,events:m,isBlock:function(e){if("string"==typeof e)return!!n[e];if(e){var t=e.nodeType;if(t)return!(1!==t||!n[e.nodeName])}return!1},$:g,$$:h,root:null,clone:function(t,e){if(!ci||1!==t.nodeType||e)return t.cloneNode(e);if(!e){var n=a.createElement(t.nodeName);return ui(b(t),function(e){y(n,e.nodeName,v(t,e.nodeName))}),n}return null},getRoot:C,getViewPort:function(e){var t=e||i,n=t.document.documentElement;return{x:t.pageXOffset||n.scrollLeft,y:t.pageYOffset||n.scrollTop,w:t.innerWidth||n.client
 Width,h:t.innerHeight||n.clientHeight}},getRect:function(e){var t,n;return e=p(e),t=x(e),n=N(e),{x:t.x,y:t.y,w:n.w,h:n.h}},getSize:N,getParent:function(e,t,n){var r=S(e,t,n,!1);return r&&0<r.length?r[0]:null},getParents:S,get:p,getNext:function(e,t){return k(e,t,"nextSibling")},getPrev:function(e,t){return k(e,t,"previousSibling")},select:function(e,t){return Tt(e,p(t)||u.root_element||a,[])},is:E,add:_,create:D,createHTML:function(e,t,n){var r,o="";for(r in o+="<"+e,t)t.hasOwnProperty(r)&&null!==t[r]&&"undefined"!=typeof t[r]&&(o+=" "+r+'="'+O(t[r])+'"');return void 0!==n?o+">"+n+"</"+e+">":o+" />"},createFragment:function(e){var t,n=a.createElement("div"),r=a.createDocumentFragment();for(e&&(n.innerHTML=e);t=n.firstChild;)r.appendChild(t);return r},remove:P,setStyle:function(e,t,n){var r=h(e).css(t,n);u.up
 date_styles&&mi(d,r)},getStyle:w,setStyles:function(e,t){var n=h(e).css(t);u.update_styles&&mi(d,n)},removeAllAttribs:function(e){return T(e,function(e){var t,n=e.attributes;for(t=n.length-1;0<=t;t--)e.removeAttributeNode(n.item(t))})},setAttrib:y,setAttribs:A,getAttrib:v,getPos:x,parseStyle:function(e){return d.parse(e)},serializeStyle:function(e,t){return d.serialize(e,t)},addStyle:function(e){var t,n;if(V!==pi.DOM&&a===H.document){if(r[e])return;r[e]=!0}(n=a.getElementById("mceDefaultStyles"))||((n=a.createElement("style")).id="mceDefaultStyles",n.type="text/css",(t=a.getElementsByTagName("head")[0]).firstChild?t.insertBefore(n,t.firstChild):t.appendChild(n)),n.styleSheet?n.styleSheet.cssText+=e:n.appendChild(a.createTextNode(e))},loadCSS:function(e){var n;V===pi.DOM||a!==H.document?(e||(e=""),n=a.getElementsByTagName("head")[0],ui(e.split(","),function(e){var t;e=Gt._addCac
 heSuffix(e),o[e]||(o[e]=!0,t=D("link",{rel:"stylesheet",href:e}),n.appendChild(t))})):pi.DOM.loadCSS(e)},addClass:function(e,t){h(e).addClass(t)},removeClass:function(e,t){L(e,t,!1)},hasClass:function(e,t){return h(e).hasClass(t)},toggleClass:L,show:function(e){h(e).show()},hide:function(e){h(e).hide()},isHidden:function(e){return"none"===h(e).css("display")},uniqueId:function(e){return(e||"mce_")+t++},setHTML:R,getOuterHTML:function(e){var t="string"==typeof e?p(e):e;return Bo.isElement(t)?t.outerHTML:hn("<div></div>").append(hn(t).clone()).html()},setOuterHTML:function(e,t){h(e).each(function(){try{if("outerHTML"in this)return void(this.outerHTML=t)}catch(e){}P(hn(this).html(t),!0)})},decode:B,encode:O,insertAfter:function(e,t){var r=p(t);return T(e,function(e){var t,n;return t=r.parentNode,(n=r.nextSibling)?t.insertBefore(e,n):t.appendChild(e),e})},replace:I,rename:function(t,e){var n;retu
 rn t.nodeName!==e.toUpperCase()&&(n=D(e),ui(b(t),function(e){y(n,e.nodeName,v(t,e.nodeName))}),I(n,t,!0)),n||t},findCommonAncestor:function(e,t){for(var n,r=e;r;){for(n=t;n&&r!==n;)n=n.parentNode;if(r===n)break;r=r.parentNode}return!r&&e.ownerDocument?e.ownerDocument.documentElement:r},toHex:function(e){return d.toHex(Gt.trim(e))},run:T,getAttribs:b,isEmpty:function(e,t){var n,r,o,i,a,u,s=0;if(e=e.firstChild){a=new oo(e,e.parentNode),t=t||(f?f.getNonEmptyElements():null),i=f?f.getWhiteSpaceElements():{};do{if(o=e.nodeType,Bo.isElement(e)){var c=e.getAttribute("data-mce-bogus");if(c){e=a.next("all"===c);continue}if(u=e.nodeName.toLowerCase(),t&&t[u]){if("br"===u){s++,e=a.next();continue}return!1}for(n=(r=b(e)).length;n--;)if("name"===(u=r[n].nodeName)||"data-mce-bookmark"===u)return!1}if(8===o)return!1;if(3===o&&!fi.test(e.nodeValue))return!1;if(3===o&&e.parentNode&&i[e.parentNod
 e.nodeName]&&fi.test(e.nodeValue))return!1;e=a.next()}while(e)}return s<=1},createRng:M,nodeIndex:gi,split:function(e,t,n){var r,o,i,a=M();if(e&&t)return a.setStart(e.parentNode,gi(e)),a.setEnd(t.parentNode,gi(t)),r=a.extractContents(),(a=M()).setStart(t.parentNode,gi(t)+1),a.setEnd(e.parentNode,gi(e)+1),o=a.extractContents(),(i=e.parentNode).insertBefore(Lo.trimNode(V,r),e),n?i.insertBefore(n,e):i.insertBefore(t,e),i.insertBefore(Lo.trimNode(V,o),e),P(e),n||t},bind:F,unbind:z,fire:function(e,t,n){return m.fire(e,t,n)},getContentEditable:U,getContentEditableParent:function(e){for(var t=C(),n=null;e&&e!==t&&null===(n=U(e));e=e.parentNode);return n},destroy:function(){if(l)for(var e=l.length;e--;){var t=l[e];m.unbind(t[0],t[1],t[2])}Tt.setDocument&&Tt.setDocument()},isChildOf:function(e,t){for(;e;){if(t===e)return!0;e=e.parentNode}return!1},dumpRng:function(e){return"startContainer: "+e.startContainer.nodeName+", startOffset: &
 quot;+e.startOffset+", endContainer: "+e.endContainer.nodeName+", endOffset: "+e.endOffset}};return s=di(d,u,function(){return V}),V}(ai=pi||(pi={})).DOM=ai(H.document),ai.nodeIndex=gi;var hi=pi,vi=hi.DOM,bi=Gt.each,yi=Gt.grep,Ci=function(e){return"function"==typeof e},xi=function(){var l={},o=[],i={},a=[],f=0;this.isDone=function(e){return 2===l[e]},this.markDone=function(e){l[e]=2},this.add=this.load=function(e,t,n,r){l[e]===undefined&&(o.push(e),l[e]=0),t&&(i[e]||(i[e]=[]),i[e].push({success:t,failure:r,scope:n||this}))},this.remove=function(e){delete l[e],delete i[e]},this.loadQueue=function(e,t,n){this.loadScripts(o,e,t,n)},this.loadScripts=function(n,e,t,r){var u,s=[],c=function(t,e){bi(i[e],function(e){Ci(e[t])&&e[t].call(e.scope)}),i[e]=undefined};a.push({success:e,failure:r,scope:t||this}),(u=function(){var e=yi(n);if(n.length=0,bi(e,function(e){var t,n,r,o,i,a;2!==l[e]?3!==l[e]?1!==l[e]&&(l[e]=1,f++,t=e,n=functi
 on(){l[e]=2,f--,c("success",e),u()},r=function(){l[e]=3,f--,s.push(e),c("failure",e),u()},i=(a=vi).uniqueId(),(o=H.document.createElement("script")).id=i,o.type="text/javascript",o.src=Gt._addCacheSuffix(t),o.onload=function(){a.remove(i),o&&(o.onreadystatechange=o.onload=o=null),n()},o.onerror=function(){Ci(r)?r():"undefined"!=typeof console&&console.log&&console.log("Failed to load script: "+t)},(H.document.getElementsByTagName("head")[0]||H.document.body).appendChild(o)):c("failure",e):c("success",e)}),!f){var t=a.slice(0);a.length=0,bi(t,function(e){0===s.length?Ci(e.success)&&e.success.call(e.scope):Ci(e.failure)&&e.failure.call(e.scope,s)})}})()}};xi.ScriptLoader=new xi;var wi,Ni=Gt.each;function Ei(){var r=this,o=[],a={},u={},i=[],s=function(e){var t;return u[e]&&(t=u[e].dependencies),t||[]},c=function(e,t){return"object"==typeof 
 t?t:"string"==typeof e?{prefix:"",resource:t,suffix:""}:{prefix:e.prefix,resource:t,suffix:e.suffix}},l=function(e,n,t,r){var o=s(e);Ni(o,function(e){var t=c(n,e);f(t.resource,t,undefined,undefined)}),t&&(r?t.call(r):t.call(xi))},f=function(e,t,n,r,o){if(!a[e]){var i="string"==typeof t?t:t.prefix+t.resource+t.suffix;0!==i.indexOf("/")&&-1===i.indexOf("://")&&(i=Ei.baseURL+"/"+i),a[e]=i.substring(0,i.lastIndexOf("/")),u[e]?l(e,t,n,r):xi.ScriptLoader.add(i,function(){return l(e,t,n,r)},r,o)}};return{items:o,urls:a,lookup:u,_listeners:i,get:function(e){return u[e]?u[e].instance:undefined},dependencies:s,requireLangPack:function(e,t){var n=Ei.language;if(n&&!1!==Ei.languageLoad){if(t)if(-1!==(t=","+t+",").indexOf(","+n.substr(0,2)+","))n=n.substr(0,2);else if(-1===t.indexOf(","+n+","))return;xi.ScriptLoader.add(a[e]+&
 quot;/langs/"+n+".js")}},add:function(t,e,n){o.push(e),u[t]={instance:e,dependencies:n};var r=K(i,function(e){return e.name===t});return i=r.fail,Ni(r.pass,function(e){e.callback()}),e},remove:function(e){delete a[e],delete u[e]},createUrl:c,addComponents:function(e,t){var n=r.urls[e];Ni(t,function(e){xi.ScriptLoader.add(n+"/"+e)})},load:f,waitFor:function(e,t){u.hasOwnProperty(e)?t():i.push({name:e,callback:t})}}}(wi=Ei||(Ei={})).PluginManager=wi(),wi.ThemeManager=wi();var Si=function(t,n){Mr(t).each(function(e){e.dom().insertBefore(n.dom(),t.dom())})},ki=function(e,t){zr(e).fold(function(){Mr(e).each(function(e){Ai(e,t)})},function(e){Si(e,t)})},Ti=function(t,n){qr(t).fold(function(){Ai(t,n)},function(e){t.dom().insertBefore(n.dom(),e.dom())})},Ai=function(e,t){e.dom().appendChild(t.dom())},Ri=function(t,e){F(e,function(e){Ai(t,e)})},_i=function(e){e.dom().textContent="",F(Hr(e),function(e){Di(e)})},Di=function(e){var t=e.dom();null!==t.parentNod
 e&&t.parentNode.removeChild(t)},Bi=function(e){var t,n=Hr(e);0<n.length&&(t=e,F(n,function(e){Si(t,e)})),Di(e)},Oi=function(n,r){var o=null;return{cancel:function(){null!==o&&(H.clearTimeout(o),o=null)},throttle:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];null===o&&(o=H.setTimeout(function(){n.apply(null,e),o=null},r))}}},Pi=function(e){var t=e,n=function(){return t};return{get:n,set:function(e){t=e},clone:function(){return Pi(n())}}},Li=function(e,t){var n=Cr(e,t);return n===undefined||""===n?[]:n.split(" ")},Ii=function(e){return e.dom().classList!==undefined},Mi=function(e,t){return o=t,i=Li(n=e,r="class").concat([o]),br(n,r,i.join(" ")),!0;var n,r,o,i},Fi=function(e,t){return o=t,0<(i=z(Li(n=e,r="class"),function(e){return e!==o})).length?br(n,r,i.join(" ")):xr(n,r),!1;var n,r,o,i},zi=function(e,t){Ii(e)?e.dom().classList.add(t):Mi(e,t)},Ui=function(e){0=
 ==(Ii(e)?e.dom().classList:Li(e,"class")).length&&xr(e,"class")},Vi=function(e,t){return Ii(e)&&e.dom().classList.contains(t)},Hi=function(e,t){var n=[];return F(Hr(e),function(e){t(e)&&(n=n.concat([e])),n=n.concat(Hi(e,t))}),n},ji=function(e,t){return n=t,o=(r=e)===undefined?H.document:r.dom(),Or(o)?[]:W(o.querySelectorAll(n),or.fromDom);var n,r,o};function qi(e,t,n,r,o){return e(n,r)?A.some(n):P(o)&&o(n)?A.none():t(n,r,o)}var $i,Wi=function(e,t,n){for(var r=e.dom(),o=P(n)?n:q(!1);r.parentNode;){r=r.parentNode;var i=or.fromDom(r);if(t(i))return A.some(i);if(o(i))break}return A.none()},Ki=function(e,t,n){return qi(function(e){return t(e)},Wi,e,t,n)},Xi=function(e,t,n){return Wi(e,function(e){return Br(e,t)},n)},Yi=function(e,t){return n=t,o=(r=e)===undefined?H.document:r.dom(),Or(o)?A.none():A.from(o.querySelector(n)).map(or.fromDom);var n,r,o},Gi=function(e,t,n){return qi(Br,Xi,e,t,n)},Ji=q("mce-annotation"),Qi=q("d
 ata-mce-annotation"),Zi=q("data-mce-annotation-uid"),ea=function(r,e){var t=r.selection.getRng(),n=or.fromDom(t.startContainer),o=or.fromDom(r.getBody()),i=e.fold(function(){return"."+Ji()},function(e){return"["+Qi()+'="'+e+'"]'}),a=jr(n,t.startOffset).getOr(n),u=Gi(a,i,function(e){return Pr(e,o)}),s=function(e,t){return n=t,(r=e.dom())&&r.hasAttribute&&r.hasAttribute(n)?A.some(Cr(e,t)):A.none();var n,r};return u.bind(function(e){return s(e,""+Zi()).bind(function(n){return s(e,""+Qi()).map(function(e){var t=ta(r,n);return{uid:n,name:e,elements:t}})})})},ta=function(e,t){var n=or.fromDom(e.getBody());return ji(n,"["+Zi()+'="'+t+'"]')},na=function(i,e){var n,r,o,a=Pi({}),c=function(e,t){u(e,function(e){return t(e),e})},u=function(e,t){var n=a.get(),r=t(n.hasOwnProperty(e)?n[e]:{listeners:[],previous:Pi(A.none())});n[e]=r,a.set(n)},t=(n=function(){var e,t,n,r=a.get(),o=(e=dr(r),(n=Z.cal
 l(e,0)).sort(t),n);F(o,function(e){u(e,function(u){var s=u.previous.get();return ea(i,A.some(e)).fold(function(){var t;s.isSome()&&(c(t=e,function(e){F(e.listeners,function(e){return e(!1,t)})}),u.previous.set(A.none()))},function(e){var t,n,r,o=e.uid,i=e.name,a=e.elements;s.is(o)||(n=o,r=a,c(t=i,function(e){F(e.listeners,function(e){return e(!0,t,{uid:n,nodes:W(r,function(e){return e.dom()})})})}),u.previous.set(A.some(o)))}),{previous:u.previous,listeners:u.listeners}})})},r=30,o=null,{cancel:function(){null!==o&&(H.clearTimeout(o),o=null)},throttle:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];null!==o&&H.clearTimeout(o),o=H.setTimeout(function(){n.apply(null,e),o=null},r)}});return i.on("remove",function(){t.cancel()}),i.on("nodeChange",function(){t.throttle()}),{addListener:function(e,t){u(e,function(e){return{previous:e.previous,listeners:e.listeners.concat([t])}})}}},ra=function(e,n){e.on("init",f
 unction(){e.serializer.addNodeFilter("span",function(e){F(e,function(t){var e;(e=t,A.from(e.attributes.map[Qi()]).bind(n.lookup)).each(function(e){!1===e.persistent&&t.unwrap()})})})})},oa=0,ia=function(e,t){return or.fromDom(e.dom().cloneNode(t))},aa=function(e){return ia(e,!1)},ua=function(e){return ia(e,!0)},sa=function(e,t){var n,r,o=Ir(e).dom(),i=or.fromDom(o.createDocumentFragment()),a=(n=t,(r=(o||H.document).createElement("div")).innerHTML=n,Hr(or.fromDom(r)));Ri(i,a),_i(e),Ai(e,i)},ca="\ufeff",la=function(e){return e===ca},fa=ca,da=function(e){return e.replace(new RegExp(ca,"g"),"")},ma=Bo.isElement,ga=Bo.isText,pa=function(e){return ga(e)&&(e=e.parentNode),ma(e)&&e.hasAttribute("data-mce-caret")},ha=function(e){return ga(e)&&la(e.data)},va=function(e){return pa(e)||ha(e)},ba=function(e){return e.firstChild!==e.lastChild||!Bo.isBr(e.firstChild)},ya=function(e){var t=e.container();retu
 rn!(!e||!Bo.isText(t))&&(t.data.charAt(e.offset())===fa||e.isAtStart()&&ha(t.previousSibling))},Ca=function(e){var t=e.container();return!(!e||!Bo.isText(t))&&(t.data.charAt(e.offset()-1)===fa||e.isAtEnd()&&ha(t.nextSibling))},xa=function(e,t,n){var r,o,i;return(r=t.ownerDocument.createElement(e)).setAttribute("data-mce-caret",n?"before":"after"),r.setAttribute("data-mce-bogus","all"),r.appendChild(((i=H.document.createElement("br")).setAttribute("data-mce-bogus","1"),i)),o=t.parentNode,n?o.insertBefore(r,t):t.nextSibling?o.insertBefore(r,t.nextSibling):o.appendChild(r),r},wa=function(e){return ga(e)&&e.data[0]===fa},Na=function(e){return ga(e)&&e.data[e.data.length-1]===fa},Ea=function(e){return e&&e.hasAttribute("data-mce-caret")?(t=e.getElementsByTagName("br"),n=t[t.length-1],Bo.isBogus(n)&&n.parentNode.removeChild(n),
 e.removeAttribute("data-mce-caret"),e.removeAttribute("data-mce-bogus"),e.removeAttribute("style"),e.removeAttribute("_moz_abspos"),e):null;var t,n},Sa=Bo.isContentEditableTrue,ka=Bo.isContentEditableFalse,Ta=Bo.isBr,Aa=Bo.isText,Ra=Bo.matchNodeNames("script style textarea"),_a=Bo.matchNodeNames("img input textarea hr iframe video audio object"),Da=Bo.matchNodeNames("table"),Ba=va,Oa=function(e){return!Ba(e)&&(Aa(e)?!Ra(e.parentNode):_a(e)||Ta(e)||Da(e)||Pa(e))},Pa=function(e){return!1===(t=e,Bo.isElement(t)&&"true"===t.getAttribute("unselectable"))&&ka(e);var t},La=function(e,t){return Oa(e)&&function(e,t){for(e=e.parentNode;e&&e!==t;e=e.parentNode){if(Pa(e))return!1;if(Sa(e))return!0}return!0}(e,t)},Ia=Math.round,Ma=function(e){return e?{left:Ia(e.left),top:Ia(e.top),bottom:Ia(e.bottom),right:Ia(e.right),width:Ia(e.width),height:Ia(e.height)}:{left:0,to
 p:0,bottom:0,right:0,width:0,height:0}},Fa=function(e,t){return e=Ma(e),t||(e.left=e.left+e.width),e.right=e.left,e.width=0,e},za=function(e,t,n){return 0<=e&&e<=Math.min(t.height,n.height)/2},Ua=function(e,t){return e.bottom-e.height/2<t.top||!(e.top>t.bottom)&&za(t.top-e.bottom,e,t)},Va=function(e,t){return e.top>t.bottom||!(e.bottom<t.top)&&za(t.bottom-e.top,e,t)},Ha=function(e){var t=e.startContainer,n=e.startOffset;return t.hasChildNodes()&&e.endOffset===n+1?t.childNodes[n]:null},ja=function(e,t){return 1===e.nodeType&&e.hasChildNodes()&&(t>=e.childNodes.length&&(t=e.childNodes.length-1),e=e.childNodes[t]),e},qa=new RegExp("[\u0300-\u036f\u0483-\u0487\u0488-\u0489\u0591-\u05bd\u05bf\u05c1-\u05c2\u05c4-\u05c5\u05c7\u0610-\u061a\u064b-\u065f\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7-\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859
 -\u085b\u08e3-\u0902\u093a\u093c\u0941-\u0948\u094d\u0951-\u0957\u0962-\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2-\u09e3\u0a01-\u0a02\u0a3c\u0a41-\u0a42\u0a47-\u0a48\u0a4b-\u0a4d\u0a51\u0a70-\u0a71\u0a75\u0a81-\u0a82\u0abc\u0ac1-\u0ac5\u0ac7-\u0ac8\u0acd\u0ae2-\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62-\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c00\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55-\u0c56\u0c62-\u0c63\u0c81\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc-\u0ccd\u0cd5-\u0cd6\u0ce2-\u0ce3\u0d01\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62-\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb-\u0ebc\u0ec8-\u0ecd\u0f18-\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86-\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039-\u103a\u103d-\u103e\u1058-\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085-\u1086\u108d\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752-\u1753\u1772-\u1773\u17b4-\u17b5\u17b7-\u17bd
 \u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927-\u1928\u1932\u1939-\u193b\u1a17-\u1a18\u1a1b\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1ab0-\u1abd\u1abe\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80-\u1b81\u1ba2-\u1ba5\u1ba8-\u1ba9\u1bab-\u1bad\u1be6\u1be8-\u1be9\u1bed\u1bef-\u1bf1\u1c2c-\u1c33\u1c36-\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1cf4\u1cf8-\u1cf9\u1dc0-\u1df5\u1dfc-\u1dff\u200c-\u200d\u20d0-\u20dc\u20dd-\u20e0\u20e1\u20e2-\u20e4\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302d\u302e-\u302f\u3099-\u309a\ua66f\ua670-\ua672\ua674-\ua67d\ua69e-\ua69f\ua6f0-\ua6f1\ua802\ua806\ua80b\ua825-\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\ua9e5\uaa29-\uaa2e\uaa31-\uaa32\uaa35-\uaa36\uaa43\uaa4c\uaa7c\uaab0\uaab2-\uaab4\uaab7-\uaab8\uaabe-\uaabf\uaac1\uaaec-\uaaed\uaaf6\uabe5\uabe8\uabed\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\uff9e-\uff9f]"),$a=function(e){return&quo
 t;string"==typeof e&&768<=e.charCodeAt(0)&&qa.test(e)},Wa=function(e,t){for(var n=[],r=0;r<e.length;r++){var o=e[r];if(!o.isSome())return A.none();n.push(o.getOrDie())}return A.some(t.apply(null,n))},Ka=[].slice,Xa=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=Ka.call(arguments);return function(e){for(var t=0;t<n.length;t++)if(!n[t](e))return!1;return!0}},Ya=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=Ka.call(arguments);return function(e){for(var t=0;t<n.length;t++)if(n[t](e))return!0;return!1}},Ga=Bo.isElement,Ja=Oa,Qa=Bo.matchStyleValues("display","block table"),Za=Bo.matchStyleValues("float","left right"),eu=Xa(Ga,Ja,y(Za)),tu=y(Bo.matchStyleValues("white-space","pre pre-line pre-wrap")),nu=Bo.isText,ru=Bo.isBr,ou=hi.nodeIndex,iu=ja,au=function(e){return"createRange"in e?e.createRange():hi.DOM.createRng()},uu=func
 tion(e){return e&&/[\r\n\t ]/.test(e)},su=function(e){return!!e.setStart&&!!e.setEnd},cu=function(e){var t,n=e.startContainer,r=e.startOffset;return!!(uu(e.toString())&&tu(n.parentNode)&&Bo.isText(n)&&(t=n.data,uu(t[r-1])||uu(t[r+1])))},lu=function(e){return 0===e.left&&0===e.right&&0===e.top&&0===e.bottom},fu=function(e){var t,n,r,o,i,a,u,s;return t=0<(n=e.getClientRects()).length?Ma(n[0]):Ma(e.getBoundingClientRect()),!su(e)&&ru(e)&&lu(t)?(i=(r=e).ownerDocument,a=au(i),u=i.createTextNode("\xa0"),(s=r.parentNode).insertBefore(u,r),a.setStart(u,0),a.setEnd(u,1),o=Ma(a.getBoundingClientRect()),s.removeChild(u),o):lu(t)&&su(e)?function(e){var t=e.startContainer,n=e.endContainer,r=e.startOffset,o=e.endOffset;if(t===n&&Bo.isText(n)&&0===r&&1===o){var i=e.cloneRange();return i.setEndAfter(n),fu(i)}return null}(e):t},du=function(e,t){var n=Fa(e,t);return n.width=1,n
 .right=n.left+1,n},mu=function(e){var t,n,r=[],o=function(e){var t,n;0!==e.height&&(0<r.length&&(t=e,n=r[r.length-1],t.left===n.left&&t.top===n.top&&t.bottom===n.bottom&&t.right===n.right)||r.push(e))},i=function(e,t){var n=au(e.ownerDocument);if(t<e.data.length){if($a(e.data[t]))return r;if($a(e.data[t-1])&&(n.setStart(e,t),n.setEnd(e,t+1),!cu(n)))return o(du(fu(n),!1)),r}0<t&&(n.setStart(e,t-1),n.setEnd(e,t),cu(n)||o(du(fu(n),!1))),t<e.data.length&&(n.setStart(e,t),n.setEnd(e,t+1),cu(n)||o(du(fu(n),!0)))};if(nu(e.container()))return i(e.container(),e.offset()),r;if(Ga(e.container()))if(e.isAtEnd())n=iu(e.container(),e.offset()),nu(n)&&i(n,n.data.length),eu(n)&&!ru(n)&&o(du(fu(n),!1));else{if(n=iu(e.container(),e.offset()),nu(n)&&i(n,0),eu(n)&&e.isAtEnd())return o(du(fu(n),!1)),r;t=iu(e.container(),e.offset()-1),eu(t)&&!ru(t)&&(Qa(t)||Qa(n)||!eu(n))&am
 p;&o(du(fu(t),!1)),eu(n)&&o(du(fu(n),!0))}return r};function gu(t,n,e){var r=function(){return e||(e=mu(gu(t,n))),e};return{container:q(t),offset:q(n),toRange:function(){var e;return(e=au(t.ownerDocument)).setStart(t,n),e.setEnd(t,n),e},getClientRects:r,isVisible:function(){return 0<r().length},isAtStart:function(){return nu(t),0===n},isAtEnd:function(){return nu(t)?n>=t.data.length:n>=t.childNodes.length},isEqual:function(e){return e&&t===e.container()&&n===e.offset()},getNode:function(e){return iu(t,e?n-1:n)}}}($i=gu||(gu={})).fromRangeStart=function(e){return $i(e.startContainer,e.startOffset)},$i.fromRangeEnd=function(e){return $i(e.endContainer,e.endOffset)},$i.after=function(e){return $i(e.parentNode,ou(e)+1)},$i.before=function(e){return $i(e.parentNode,ou(e))},$i.isAbove=function(e,t){return Wa([te(t.getClientRects()),ne(e.getClientRects())],Ua).getOr(!1)},$i.isBelow=function(e,t){return Wa([ne(t.getClientRects()),te(e.getClientRects())],
 Va).getOr(!1)},$i.isAtStart=function(e){return!!e&&e.isAtStart()},$i.isAtEnd=function(e){return!!e&&e.isAtEnd()},$i.isTextPosition=function(e){return!!e&&Bo.isText(e.container())},$i.isElementPosition=function(e){return!1===$i.isTextPosition(e)};var pu,hu,vu=gu,bu=Bo.isText,yu=Bo.isBogus,Cu=hi.nodeIndex,xu=function(e){var t=e.parentNode;return yu(t)?xu(t):t},wu=function(e){return e?$t.reduce(e.childNodes,function(e,t){return yu(t)&&"BR"!==t.nodeName?e=e.concat(wu(t)):e.push(t),e},[]):[]},Nu=function(t){return function(e){return t===e}},Eu=function(e){var t,r,n,o;return(bu(e)?"text()":e.nodeName.toLowerCase())+"["+(r=wu(xu(t=e)),n=$t.findIndex(r,Nu(t),t),r=r.slice(0,n+1),o=$t.reduce(r,function(e,t,n){return bu(t)&&bu(r[n-1])&&e++,e},0),r=$t.filter(r,Bo.matchNodeNames(t.nodeName)),(n=$t.findIndex(r,Nu(t),t))-o)+"]"},Su=function(e,t){var n,r,o,i,a,u=[];return n=t.container(),r=t.offset(),bu(n)?o=fun
 ction(e,t){for(;(e=e.previousSibling)&&bu(e);)t+=e.data.length;return t}(n,r):(r>=(i=n.childNodes).length?(o="after",r=i.length-1):o="before",n=i[r]),u.push(Eu(n)),a=function(e,t,n){var r=[];for(t=t.parentNode;!(t===e||n&&n(t));t=t.parentNode)r.push(t);return r}(e,n),a=$t.filter(a,y(Bo.isBogus)),(u=u.concat($t.map(a,function(e){return Eu(e)}))).reverse().join("/")+","+o},ku=function(e,t){var n,r,o;return t?(t=(n=t.split(","))[0].split("/"),o=1<n.length?n[1]:"before",(r=$t.reduce(t,function(e,t){return(t=/([\w\-\(\)]+)\[([0-9]+)\]/.exec(t))?("text()"===t[1]&&(t[1]="#text"),n=e,r=t[1],o=parseInt(t[2],10),i=wu(n),i=$t.filter(i,function(e,t){return!bu(e)||!bu(i[t-1])}),(i=$t.filter(i,Bo.matchNodeNames(r)))[o]):null;var n,r,o,i},e))?bu(r)?function(e,t){for(var n,r=e,o=0;bu(r);){if(n=r.data.length,o<=t&&t<=o+n){e=r,t-=o;break}if(!bu(r.nextSibling)){e=r,t=n;
 break}o+=n,r=r.nextSibling}return bu(e)&&t>e.data.length&&(t=e.data.length),vu(e,t)}(r,parseInt(o,10)):(o="after"===o?Cu(r)+1:Cu(r),vu(r.parentNode,o)):null):null},Tu=function(e,t){Bo.isText(t)&&0===t.data.length&&e.remove(t)},Au=function(e,t,n){var r,o,i,a,u,s,c;Bo.isDocumentFragment(n)?(i=e,a=t,u=n,s=A.from(u.firstChild),c=A.from(u.lastChild),a.insertNode(u),s.each(function(e){return Tu(i,e.previousSibling)}),c.each(function(e){return Tu(i,e.nextSibling)})):(r=e,o=n,t.insertNode(o),Tu(r,o.previousSibling),Tu(r,o.nextSibling))},Ru=Bo.isContentEditableFalse,_u=function(e,t,n,r,o){var i,a=r[o?"startContainer":"endContainer"],u=r[o?"startOffset":"endOffset"],s=[],c=0,l=e.getRoot();for(Bo.isText(a)?s.push(n?function(e,t,n){var r,o;for(o=e(t.data.slice(0,n)).length,r=t.previousSibling;r&&Bo.isText(r);r=r.previousSibling)o+=e(r.data).length;return o}(t,a,u):u):(u>=(i=a.childNodes).length&&
 amp;i.length&&(c=1,u=Math.max(0,i.length-1)),s.push(e.nodeIndex(i[u],n)+c));a&&a!==l;a=a.parentNode)s.push(e.nodeIndex(a,n));return s},Du=function(e,t,n){var r=0;return Gt.each(e.select(t),function(e){if("all"!==e.getAttribute("data-mce-bogus"))return e!==n&&void r++}),r},Bu=function(e,t){var n,r,o,i=t?"start":"end";n=e[i+"Container"],r=e[i+"Offset"],Bo.isElement(n)&&"TR"===n.nodeName&&(n=(o=n.childNodes)[Math.min(t?r:r-1,o.length-1)])&&(r=t?0:n.childNodes.length,e["set"+(t?"Start":"End")](n,r))},Ou=function(e){return Bu(e,!0),Bu(e,!1),e},Pu=function(e,t){var n;if(Bo.isElement(e)&&(e=ja(e,t),Ru(e)))return e;if(va(e)){if(Bo.isText(e)&&pa(e)&&(e=e.parentNode),n=e.previousSibling,Ru(n))return n;if(n=e.nextSibling,Ru(n))return n}},Lu=function(e,t,n){var r=n.getNode(),o=r?r.nodeName:null,i=n.getRng();if(Ru(r)||"IM
 G"===o)return{name:o,index:Du(n.dom,o,r)};var a,u,s,c,l,f,d,m=Pu((a=i).startContainer,a.startOffset)||Pu(a.endContainer,a.endOffset);return m?{name:o=m.tagName,index:Du(n.dom,o,m)}:(u=e,c=t,l=i,f=(s=n).dom,(d={}).start=_u(f,u,c,l,!0),s.isCollapsed()||(d.end=_u(f,u,c,l,!1)),d)},Iu=function(e,t,n){var r={"data-mce-type":"bookmark",id:t,style:"overflow:hidden;line-height:0px"};return n?e.create("span",r,"&#xFEFF;"):e.create("span",r)},Mu=function(e,t){var n=e.dom,r=e.getRng(),o=n.uniqueId(),i=e.isCollapsed(),a=e.getNode(),u=a.nodeName;if("IMG"===u)return{name:u,index:Du(n,u,a)};var s=Ou(r.cloneRange());if(!i){s.collapse(!1);var c=Iu(n,o+"_end",t);Au(n,s,c)}(r=Ou(r)).collapse(!0);var l=Iu(n,o+"_start",t);return Au(n,r,l),e.moveToBookmark({id:o,keep:1}),{id:o}},Fu={getBookmark:function(e,t,n){return 2===t?Lu(da,n,e):3===t?(o=(r=e).getRng(),{start:Su(r.dom.getRoot(),vu.fromRangeStart(o)),end
 :Su(r.dom.getRoot(),vu.fromRangeEnd(o))}):t?{rng:e.getRng()}:Mu(e,!1);var r,o},getUndoBookmark:d(Lu,$,!0),getPersistentBookmark:Mu},zu="_mce_caret",Uu=function(e){return Bo.isElement(e)&&e.id===zu},Vu=function(e,t){for(;t&&t!==e;){if(t.id===zu)return t;t=t.parentNode}return null},Hu=Bo.isElement,ju=Bo.isText,qu=function(e){var t=e.parentNode;t&&t.removeChild(e)},$u=function(e,t){0===t.length?qu(e):e.nodeValue=t},Wu=function(e){var t=da(e);return{count:e.length-t.length,text:t}},Ku=function(e,t){return Gu(e),t},Xu=function(e,t){var n,r,o,i=t.container(),a=(n=re(i.childNodes),r=e,o=I(n,r),-1===o?A.none():A.some(o)).map(function(e){return e<t.offset()?vu(i,t.offset()-1):t}).getOr(t);return Gu(e),a},Yu=function(e,t){return ju(e)&&t.container()===e?(r=t,o=Wu((n=e).data.substr(0,r.offset())),i=Wu(n.data.substr(r.offset())),0<(a=o.text+i.text).length?($u(n,a),vu(n,r.offset()-o.count)):r):Ku(e,t);var n,r,o,i,a},Gu=function(e){if(Hu(e)&&amp
 ;va(e)&&(ba(e)?e.removeAttribute("data-mce-caret"):qu(e)),ju(e)){var t=da(function(e){try{return e.nodeValue}catch(t){return""}}(e));$u(e,t)}},Ju={removeAndReposition:function(e,t){return vu.isTextPosition(t)?Yu(e,t):(n=e,(r=t).container()===n.parentNode?Xu(n,r):Ku(n,r));var n,r},remove:Gu},Qu=nr.detect().browser,Zu=Bo.isContentEditableFalse,es=function(e,t,n){var r,o,i,a,u,s=Fa(t.getBoundingClientRect(),n);return"BODY"===e.tagName?(r=e.ownerDocument.documentElement,o=e.scrollLeft||r.scrollLeft,i=e.scrollTop||r.scrollTop):(u=e.getBoundingClientRect(),o=e.scrollLeft-u.left,i=e.scrollTop-u.top),s.left+=o,s.right+=o,s.top+=i,s.bottom+=i,s.width=1,0<(a=t.offsetWidth-t.clientWidth)&&(n&&(a*=-1),s.left+=a,s.right+=a),s},ts=function(a,u,e){var t,s,c=Pi(A.none()),l=function(){!function(e){var t,n,r,o,i;for(t=hn("*[contentEditable=false]",e),o=0;o<t.length;o++)r=(n=t[o]).previousSibling,Na(r)&&(1===(i=r.data).lengt
 h?r.parentNode.removeChild(r):r.deleteData(i.length-1,1)),r=n.nextSibling,wa(r)&&(1===(i=r.data).length?r.parentNode.removeChild(r):r.deleteData(0,1))}(a),s&&(Ju.remove(s),s=null),c.get().each(function(e){hn(e.caret).remove(),c.set(A.none())}),clearInterval(t)},f=function(){t=be.setInterval(function(){e()?hn("div.mce-visual-caret",a).toggleClass("mce-visual-caret-hidden"):hn("div.mce-visual-caret",a).addClass("mce-visual-caret-hidden")},500)};return{show:function(t,e){var n,r,o;if(l(),o=e,Bo.isElement(o)&&/^(TD|TH)$/i.test(o.tagName))return null;if(!u(e))return s=function(e,t){var n,r,o;if(r=e.ownerDocument.createTextNode(fa),o=e.parentNode,t){if(n=e.previousSibling,ga(n)){if(va(n))return n;if(Na(n))return n.splitText(n.data.length-1)}o.insertBefore(r,e)}else{if(n=e.nextSibling,ga(n)){if(va(n))return n;if(wa(n))return n.splitText(1),n}e.nextSibling?o.insertBefore(r,e.nextSibling):o.appendChild(r)}return r}(e,t),r=e.owne
 rDocument.createRange(),Zu(s.nextSibling)?(r.setStart(s,0),r.setEnd(s,0)):(r.setStart(s,1),r.setEnd(s,1)),r;s=xa("p",e,t),n=es(a,e,t),hn(s).css("top",n.top);var i=hn('<div class="mce-visual-caret" data-mce-bogus="all"></div>').css(n).appendTo(a)[0];return c.set(A.some({caret:i,element:e,before:t})),c.get().each(function(e){t&&hn(e.caret).addClass("mce-visual-caret-before")}),f(),(r=e.ownerDocument.createRange()).setStart(s,0),r.setEnd(s,0),r},hide:l,getCss:function(){return".mce-visual-caret {position: absolute;background-color: black;background-color: currentcolor;}.mce-visual-caret-hidden {display: none;}*[data-mce-caret] {position: absolute;left: -1000px;right: auto;top: 0;margin: 0;padding: 0;}"},reposition:function(){c.get().each(function(e){var t=es(a,e.element,e.before);hn(e.caret).css(t)})},destroy:function(){return be.clearInterval(t)}}},ns=function(){return Qu.isIE()||Qu.isEdge()||Qu.isFirefox(
 )},rs=function(e){return Zu(e)||Bo.isTable(e)&&ns()},os=Bo.isContentEditableFalse,is=Bo.matchStyleValues("display","block table table-cell table-caption list-item"),as=va,us=pa,ss=Bo.isElement,cs=Oa,ls=function(e){return 0<e},fs=function(e){return e<0},ds=function(e,t){for(var n;n=e(t);)if(!us(n))return n;return null},ms=function(e,t,n,r,o){var i=new oo(e,r);if(fs(t)){if((os(e)||us(e))&&n(e=ds(i.prev,!0)))return e;for(;e=ds(i.prev,o);)if(n(e))return e}if(ls(t)){if((os(e)||us(e))&&n(e=ds(i.next,!0)))return e;for(;e=ds(i.next,o);)if(n(e))return e}return null},gs=function(e,t){for(;e&&e!==t;){if(is(e))return e;e=e.parentNode}return null},ps=function(e,t,n){return gs(e.container(),n)===gs(t.container(),n)},hs=function(e,t){var n,r;return t?(n=t.container(),r=t.offset(),ss(n)?n.childNodes[r+e]:null):null},vs=function(e,t){var n=t.ownerDocument.createRange();return e?(n.setStartBefore(t),n.setEndBefore(t)):(n.setStartAfter(t),n.set
 EndAfter(t)),n},bs=function(e,t,n){var r,o,i,a;for(o=e?"previousSibling":"nextSibling";n&&n!==t;){if(r=n[o],as(r)&&(r=r[o]),os(r)){if(a=n,gs(r,i=t)===gs(a,i))return r;break}if(cs(r))break;n=n.parentNode}return null},ys=d(vs,!0),Cs=d(vs,!1),xs=function(e,t,n){var r,o,i,a,u=d(bs,!0,t),s=d(bs,!1,t);if(o=n.startContainer,i=n.startOffset,pa(o)){if(ss(o)||(o=o.parentNode),"before"===(a=o.getAttribute("data-mce-caret"))&&(r=o.nextSibling,rs(r)))return ys(r);if("after"===a&&(r=o.previousSibling,rs(r)))return Cs(r)}if(!n.collapsed)return n;if(Bo.isText(o)){if(as(o)){if(1===e){if(r=s(o))return ys(r);if(r=u(o))return Cs(r)}if(-1===e){if(r=u(o))return Cs(r);if(r=s(o))return ys(r)}return n}if(Na(o)&&i>=o.data.length-1)return 1===e&&(r=s(o))?ys(r):n;if(wa(o)&&i<=1)return-1===e&&(r=u(o))?Cs(r):n;if(i===o.data.length)return(r=s(o))?ys(r):n;if(0===i)return(r=u(o))?Cs(r):n}return n}
 ,ws=function(e,t){return A.from(hs(e?0:-1,t)).filter(os)},Ns=function(e,t,n){var r=xs(e,t,n);return-1===e?gu.fromRangeStart(r):gu.fromRangeEnd(r)},Es=function(e){return A.from(e.getNode()).map(or.fromDom)},Ss=function(e,t){for(;t=e(t);)if(t.isVisible())return t;return t},ks=function(e,t){var n=ps(e,t);return!(n||!Bo.isBr(e.getNode()))||n};(hu=pu||(pu={}))[hu.Backwards=-1]="Backwards",hu[hu.Forwards=1]="Forwards";var Ts,As,Rs,_s,Ds,Bs=Bo.isContentEditableFalse,Os=Bo.isText,Ps=Bo.isElement,Ls=Bo.isBr,Is=Oa,Ms=function(e){return _a(e)||!!Pa(t=e)&&!0!==U(re(t.getElementsByTagName("*")),function(e,t){return e||Sa(t)},!1);var t},Fs=La,zs=function(e,t){return e.hasChildNodes()&&t<e.childNodes.length?e.childNodes[t]:null},Us=function(e,t){if(ls(e)){if(Is(t.previousSibling)&&!Os(t.previousSibling))return vu.before(t);if(Os(t))return vu(t,0)}if(fs(e)){if(Is(t.nextSibling)&&!Os(t.nextSibling))return vu.after(t);if(Os(t))return vu
 (t,t.data.length)}return fs(e)?Ls(t)?vu.before(t):vu.after(t):vu.before(t)},Vs=function(e,t,n){var r,o,i,a,u;if(!Ps(n)||!t)return null;if(t.isEqual(vu.after(n))&&n.lastChild){if(u=vu.after(n.lastChild),fs(e)&&Is(n.lastChild)&&Ps(n.lastChild))return Ls(n.lastChild)?vu.before(n.lastChild):u}else u=t;var s,c,l,f=u.container(),d=u.offset();if(Os(f)){if(fs(e)&&0<d)return vu(f,--d);if(ls(e)&&d<f.length)return vu(f,++d);r=f}else{if(fs(e)&&0<d&&(o=zs(f,d-1),Is(o)))return!Ms(o)&&(i=ms(o,e,Fs,o))?Os(i)?vu(i,i.data.length):vu.after(i):Os(o)?vu(o,o.data.length):vu.before(o);if(ls(e)&&d<f.childNodes.length&&(o=zs(f,d),Is(o)))return Ls(o)?(s=n,(l=(c=o).nextSibling)&&Is(l)?Os(l)?vu(l,0):vu.before(l):Vs(pu.Forwards,vu.after(c),s)):!Ms(o)&&(i=ms(o,e,Fs,o))?Os(i)?vu(i,0):vu.before(i):Os(o)?vu(o,0):vu.after(o);r=o||u.getNode()}return(ls(e)&&u.isAtEnd()||fs(e)&&u.isAtStart())&
 &(r=ms(r,e,q(!0),n,!0),Fs(r,n))?Us(e,r):(o=ms(r,e,Fs,n),!(a=$t.last(z(function(e,t){for(var n=[];e&&e!==t;)n.push(e),e=e.parentNode;return n}(f,n),Bs)))||o&&a.contains(o)?o?Us(e,o):null:u=ls(e)?vu.after(a):vu.before(a))},Hs=function(t){return{next:function(e){return Vs(pu.Forwards,e,t)},prev:function(e){return Vs(pu.Backwards,e,t)}}},js=function(e){return vu.isTextPosition(e)?0===e.offset():Oa(e.getNode())},qs=function(e){if(vu.isTextPosition(e)){var t=e.container();return e.offset()===t.data.length}return Oa(e.getNode(!0))},$s=function(e,t){return!vu.isTextPosition(e)&&!vu.isTextPosition(t)&&e.getNode()===t.getNode(!0)},Ws=function(e,t,n){return e?!$s(t,n)&&(r=t,!(!vu.isTextPosition(r)&&Bo.isBr(r.getNode())))&&qs(t)&&js(n):!$s(n,t)&&js(t)&&qs(n);var r},Ks=function(e,t,n){var r=Hs(t);return A.from(e?r.next(n):r.prev(n))},Xs=function(t,n,r){return Ks(t,n,r).bind(function(e){return ps(r,e,n)&&W
 s(t,r,e)?Ks(t,n,e):A.some(e)})},Ys=function(t,n,e,r){return Xs(t,n,e).bind(function(e){return r(e)?Ys(t,n,e,r):A.some(e)})},Gs=function(e,t){var n,r,o,i,a,u=e?t.firstChild:t.lastChild;return Bo.isText(u)?A.some(vu(u,e?0:u.data.length)):u?Oa(u)?A.some(e?vu.before(u):(a=u,Bo.isBr(a)?vu.before(a):vu.after(a))):(r=t,o=u,i=(n=e)?vu.before(o):vu.after(o),Ks(n,r,i)):A.none()},Js=d(Ks,!0),Qs=d(Ks,!1),Zs={fromPosition:Ks,nextPosition:Js,prevPosition:Qs,navigate:Xs,navigateIgnore:Ys,positionIn:Gs,firstPositionIn:d(Gs,!0),lastPositionIn:d(Gs,!1)},ec=function(e,t){return!e.isBlock(t)||t.innerHTML||me.ie||(t.innerHTML='<br data-mce-bogus="1" />'),t},tc=function(e,t){return Zs.lastPositionIn(e).fold(function(){return!1},function(e){return t.setStart(e.container(),e.offset()),t.setEnd(e.container(),e.offset()),!0})},nc=function(e,t,n){return!(!1!==t.hasChildNodes()||!Vu(e,t)||(o=n,i=(r=t).ownerDocument.createTextNode(fa),r.appendChild(i),o.setStart(i,0),o.setEnd(i,0),0));var r,o,i}
 ,rc=function(e,t,n,r){var o,i,a,u,s=n[t?"start":"end"],c=e.getRoot();if(s){for(a=s[0],i=c,o=s.length-1;1<=o;o--){if(u=i.childNodes,nc(c,i,r))return!0;if(s[o]>u.length-1)return!!nc(c,i,r)||tc(i,r);i=u[s[o]]}3===i.nodeType&&(a=Math.min(s[0],i.nodeValue.length)),1===i.nodeType&&(a=Math.min(s[0],i.childNodes.length)),t?r.setStart(i,a):r.setEnd(i,a)}return!0},oc=function(e){return Bo.isText(e)&&0<e.data.length},ic=function(e,t,n){var r,o,i,a,u,s,c=e.get(n.id+"_"+t),l=n.keep;if(c){if(r=c.parentNode,"start"===t?l?c.hasChildNodes()?(r=c.firstChild,o=1):oc(c.nextSibling)?(r=c.nextSibling,o=0):oc(c.previousSibling)?(r=c.previousSibling,o=c.previousSibling.data.length):(r=c.parentNode,o=e.nodeIndex(c)+1):o=e.nodeIndex(c):l?c.hasChildNodes()?(r=c.firstChild,o=1):oc(c.previousSibling)?(r=c.previousSibling,o=c.previousSibling.data.length):(r=c.parentNode,o=e.nodeIndex(c)):o=e.nodeIndex(c),u=r,s=o,!l){for(a=c.previousSibling,
 i=c.nextSibling,Gt.each(Gt.grep(c.childNodes),function(e){Bo.isText(e)&&(e.nodeValue=e.nodeValue.replace(/\uFEFF/g,""))});c=e.get(n.id+"_"+t);)e.remove(c,!0);a&&i&&a.nodeType===i.nodeType&&Bo.isText(a)&&!me.opera&&(o=a.nodeValue.length,a.appendData(i.nodeValue),e.remove(i),u=a,s=o)}return A.some(vu(u,s))}return A.none()},ac=function(e,t){var n,r,o,i,a,u,s,c,l,f,d,m,g,p,h,v,b=e.dom;if(t){if(v=t,Gt.isArray(v.start))return p=t,h=(g=b).createRng(),rc(g,!0,p,h)&&rc(g,!1,p,h)?A.some(h):A.none();if("string"==typeof t.start)return A.some((f=t,d=(l=b).createRng(),m=ku(l.getRoot(),f.start),d.setStart(m.container(),m.offset()),m=ku(l.getRoot(),f.end),d.setEnd(m.container(),m.offset()),d));if(t.hasOwnProperty("id"))return s=ic(o=b,"start",i=t),c=ic(o,"end",i),Wa([s,(a=c,u=s,a.isSome()?a:u)],function(e,t){var n=o.createRng();return n.setStart(ec(o,e.container()),e.offset()),n.setEn
 d(ec(o,t.container()),t.offset()),n});if(t.hasOwnProperty("name"))return n=b,r=t,A.from(n.select(r.name)[r.index]).map(function(e){var t=n.createRng();return t.selectNode(e),t});if(t.hasOwnProperty("rng"))return A.some(t.rng)}return A.none()},uc=function(e,t,n){return Fu.getBookmark(e,t,n)},sc=function(t,e){ac(t,e).each(function(e){t.setRng(e)})},cc=function(e){return Bo.isElement(e)&&"SPAN"===e.tagName&&"bookmark"===e.getAttribute("data-mce-type")},lc=function(e){return e&&/^(IMG)$/.test(e.nodeName)},fc=function(e){return e&&3===e.nodeType&&/^([\t \r\n]+|)$/.test(e.nodeValue)},dc=function(e,t,n){return"color"!==n&&"backgroundColor"!==n||(t=e.toHex(t)),"fontWeight"===n&&700===t&&(t="bold"),"fontFamily"===n&&(t=t.replace(/[\'\"]/g,"").replace(/,\s+/g,",")),""+t},mc={isInlineBlock:
 lc,moveStart:function(e,t,n){var r,o,i,a=n.startOffset,u=n.startContainer;if((n.startContainer!==n.endContainer||!lc(n.startContainer.childNodes[n.startOffset]))&&1===u.nodeType)for(a<(i=u.childNodes).length?r=new oo(u=i[a],e.getParent(u,e.isBlock)):(r=new oo(u=i[i.length-1],e.getParent(u,e.isBlock))).next(!0),o=r.current();o;o=r.next())if(3===o.nodeType&&!fc(o))return n.setStart(o,0),void t.setRng(n)},getNonWhiteSpaceSibling:function(e,t,n){if(e)for(t=t?"nextSibling":"previousSibling",e=n?e:e[t];e;e=e[t])if(1===e.nodeType||!fc(e))return e},isTextBlock:function(e,t){return t.nodeType&&(t=t.nodeName),!!e.schema.getTextBlockElements()[t.toLowerCase()]},isValid:function(e,t,n){return e.schema.isValidChild(t,n)},isWhiteSpaceNode:fc,replaceVars:function(e,n){return"string"!=typeof e?e=e(n):n&&(e=e.replace(/%(\w+)/g,function(e,t){return n[t]||e})),e},isEq:function(e,t){return t=t||"",e=""+((e=e||"&qu
 ot;).nodeName||e),t=""+(t.nodeName||t),e.toLowerCase()===t.toLowerCase()},normalizeStyleValue:dc,getStyle:function(e,t,n){return dc(e,e.getStyle(t,n),n)},getTextDecoration:function(t,e){var n;return t.getParent(e,function(e){return(n=t.getStyle(e,"text-decoration"))&&"none"!==n}),n},getParents:function(e,t,n){return e.getParents(t,n,e.getRoot())}},gc=cc,pc=mc.getParents,hc=mc.isWhiteSpaceNode,vc=mc.isTextBlock,bc=function(e,t){for(void 0===t&&(t=3===e.nodeType?e.length:e.childNodes.length);e&&e.hasChildNodes();)(e=e.childNodes[t])&&(t=3===e.nodeType?e.length:e.childNodes.length);return{node:e,offset:t}},yc=function(e,t){for(var n=t;n;){if(1===n.nodeType&&e.getContentEditable(n))return"false"===e.getContentEditable(n)?n:t;n=n.parentNode}return t},Cc=function(e,t,n,r){var o,i,a=n.nodeValue;return void 0===r&&(r=e?a.length:0),e?(o=a.lastIndexOf(" ",r),-1!==(o=(i=a.lastIndexOf("\xa0&qu
 ot;,r))<o?o:i)&&!t&&(o<r||!e)&&o<=a.length&&o++):(o=a.indexOf(" ",r),i=a.indexOf("\xa0",r),o=-1!==o&&(-1===i||o<i)?o:i),o},xc=function(e,t,n,r,o,i){var a,u,s,c;if(3===n.nodeType){if(-1!==(s=Cc(o,i,n,r)))return{container:n,offset:s};c=n}for(a=new oo(n,e.getParent(n,e.isBlock)||t);u=a[o?"prev":"next"]();)if(3!==u.nodeType||gc(u.parentNode)){if(e.isBlock(u)||mc.isEq(u,"BR"))break}else if(-1!==(s=Cc(o,i,c=u)))return{container:u,offset:s};if(c)return{container:c,offset:r=o?0:c.length}},wc=function(e,t,n,r,o){var i,a,u,s;for(3===r.nodeType&&0===r.nodeValue.length&&r[o]&&(r=r[o]),i=pc(e,r),a=0;a<i.length;a++)for(u=0;u<t.length;u++)if(!("collapsed"in(s=t[u])&&s.collapsed!==n.collapsed)&&e.is(i[a],s.selector))return i[a];return r},Nc=function(t,e,n,r){var o,i=t.dom,a=i.getRoot();if(e[0].wrapper||(o=i.getParent(n,e[0].block,a)),!o){var u
 =i.getParent(n,"LI,TD,TH");o=i.getParent(3===n.nodeType?n.parentNode:n,function(e){return e!==a&&vc(t,e)},u)}if(o&&e[0].wrapper&&(o=pc(i,o,"ul,ol").reverse()[0]||o),!o)for(o=n;o[r]&&!i.isBlock(o[r])&&(o=o[r],!mc.isEq(o,"br")););return o||n},Ec=function(e,t,n,r,o,i,a){var u,s,c,l,f,d;if(u=s=a?n:o,l=a?"previousSibling":"nextSibling",f=e.getRoot(),3===u.nodeType&&!hc(u)&&(a?0<r:i<u.nodeValue.length))return u;for(;;){if(!t[0].block_expand&&e.isBlock(s))return s;for(c=s[l];c;c=c[l])if(!gc(c)&&!hc(c)&&("BR"!==(d=c).nodeName||!d.getAttribute("data-mce-bogus")||d.nextSibling))return s;if(s===f||s.parentNode===f){u=s;break}s=s.parentNode}return u},Sc=function(e,t,n,r){var o,i=t.startContainer,a=t.startOffset,u=t.endContainer,s=t.endOffset,c=e.dom;return 1===i.nodeType&&i.hasChildNodes()&&3===(i=ja(i,a)).nodeType&&(
 a=0),1===u.nodeType&&u.hasChildNodes()&&3===(u=ja(u,t.collapsed?s:s-1)).nodeType&&(s=u.nodeValue.length),i=yc(c,i),u=yc(c,u),(gc(i.parentNode)||gc(i))&&(i=gc(i)?i:i.parentNode,3===(i=t.collapsed?i.previousSibling||i:i.nextSibling||i).nodeType&&(a=t.collapsed?i.length:0)),(gc(u.parentNode)||gc(u))&&(u=gc(u)?u:u.parentNode,3===(u=t.collapsed?u.nextSibling||u:u.previousSibling||u).nodeType&&(s=t.collapsed?0:u.length)),t.collapsed&&((o=xc(c,e.getBody(),i,a,!0,r))&&(i=o.container,a=o.offset),(o=xc(c,e.getBody(),u,s,!1,r))&&(u=o.container,s=o.offset)),n[0].inline&&(u=r?u:function(e,t){var n=bc(e,t);if(n.node){for(;n.node&&0===n.offset&&n.node.previousSibling;)n=bc(n.node.previousSibling);n.node&&0<n.offset&&3===n.node.nodeType&&" "===n.node.nodeValue.charAt(n.offset-1)&&1<n.offset&&(e=n.node).splitText(n.offset-1)}return e}(u,s)),(
 n[0].inline||n[0].block_expand)&&(n[0].inline&&3===i.nodeType&&0!==a||(i=Ec(c,n,i,a,u,s,!0)),n[0].inline&&3===u.nodeType&&s!==u.nodeValue.length||(u=Ec(c,n,i,a,u,s,!1))),n[0].selector&&!1!==n[0].expand&&!n[0].inline&&(i=wc(c,n,t,i,"previousSibling"),u=wc(c,n,t,u,"nextSibling")),(n[0].block||n[0].selector)&&(i=Nc(e,n,i,"previousSibling"),u=Nc(e,n,u,"nextSibling"),n[0].block&&(c.isBlock(i)||(i=Ec(c,n,i,a,u,s,!0)),c.isBlock(u)||(u=Ec(c,n,i,a,u,s,!1)))),1===i.nodeType&&(a=c.nodeIndex(i),i=i.parentNode),1===u.nodeType&&(s=c.nodeIndex(u)+1,u=u.parentNode),{startContainer:i,startOffset:a,endContainer:u,endOffset:s}},kc=Gt.each,Tc=function(e,t,o){var n,r,i,a,u,s,c,l=t.startContainer,f=t.startOffset,d=t.endContainer,m=t.endOffset;if(0<(c=e.select("td[data-mce-selected],th[data-mce-selected]")).length)kc(c,function(e){o([e])});else{var g,p,h,v=fu
 nction(e){var t;return 3===(t=e[0]).nodeType&&t===l&&f>=t.nodeValue.length&&e.splice(0,1),t=e[e.length-1],0===m&&0<e.length&&t===d&&3===t.nodeType&&e.splice(e.length-1,1),e},b=function(e,t,n){for(var r=[];e&&e!==n;e=e[t])r.push(e);return r},y=function(e,t){do{if(e.parentNode===t)return e;e=e.parentNode}while(e)},C=function(e,t,n){var r=n?"nextSibling":"previousSibling";for(u=(a=e).parentNode;a&&a!==t;a=u)u=a.parentNode,(s=b(a===e?a:a[r],r)).length&&(n||s.reverse(),o(v(s)))};if(1===l.nodeType&&l.hasChildNodes()&&(l=l.childNodes[f]),1===d.nodeType&&d.hasChildNodes()&&(p=m,h=(g=d).childNodes,--p>h.length-1?p=h.length-1:p<0&&(p=0),d=h[p]||g),l===d)return o(v([l]));for(n=e.findCommonAncestor(l,d),a=l;a;a=a.parentNode){if(a===d)return C(l,n,!0);if(a===n)break}for(a=d;a;a=a.parentNode){if(a===l)return C(d,n);if(a===n)break}r=y(l,n)||l,i=y(d
 ,n)||d,C(l,r,!0),(s=b(r===l?r:r.nextSibling,"nextSibling",i===d?i.nextSibling:i)).length&&o(v(s)),C(d,i)}},Ac=(Ts=fr,As="text",Rs=function(e){return Ts(e)?A.from(e.dom().nodeValue):A.none()},_s=nr.detect().browser,{get:function(e){if(!Ts(e))throw new Error("Can only get "+As+" value of a "+As+" node");return Ds(e).getOr("")},getOption:Ds=_s.isIE()&&10===_s.version.major?function(e){try{return Rs(e)}catch(jN){return A.none()}}:Rs,set:function(e,t){if(!Ts(e))throw new Error("Can only set raw "+As+" value of a "+As+" node");e.dom().nodeValue=t}}),Rc=function(e){return Ac.get(e)},_c=function(r,o,i,a){return Mr(o).fold(function(){return"skipping"},function(e){return"br"===a||fr(n=o)&&"\ufeff"===Rc(n)?"valid":lr(t=o)&&Vi(t,Ji())?"existing":Uu(o)?"caret":mc.isValid(r,i,a)&&mc.isValid(r,sr(e),i)?"va
 lid":"invalid-child";var t,n})},Dc=function(e,t,n,r){var o,i,a=t.uid,u=void 0===a?(o="mce-annotation",i=(new Date).getTime(),o+"_"+Math.floor(1e9*Math.random())+ ++oa+String(i)):a,s=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&(n[r[o]]=e[r[o]])}return n}(t,["uid"]),c=or.fromTag("span",e);zi(c,Ji()),br(c,""+Zi(),u),br(c,""+Qi(),n);var l,f=r(u,s),d=f.attributes,m=void 0===d?{}:d,g=f.classes,p=void 0===g?[]:g;return yr(c,m),l=c,F(p,function(e){zi(l,e)}),c},Bc=function(i,e,t,n,r){var a=[],u=Dc(i.getDoc(),r,t,n),s=Pi(A.none()),c=function(){s.set(A.none())},l=function(e){F(e,o)},o=function(e){var t,n;switch(_c(i,e,"span",sr(e))){case"invalid-child&q
 uot;:c();var r=Hr(e);l(r),c();break;case"valid":var o=s.get().getOrThunk(function(){var e=aa(u);return a.push(e),s.set(A.some(e)),e});Si(t=e,n=o),Ai(n,t)}};return Tc(i.dom,e,function(e){var t;c(),t=W(e,or.fromDom),l(t)}),a},Oc=function(s,c,l,f){s.undoManager.transact(function(){var e,t,n,r,o=s.selection.getRng();if(o.collapsed&&(r=Sc(e=s,t=o,[{inline:!0}],3===(n=t).startContainer.nodeType&&n.startContainer.nodeValue.length>=n.startOffset&&"\xa0"===n.startContainer.nodeValue[n.startOffset]),t.setStart(r.startContainer,r.startOffset),t.setEnd(r.endContainer,r.endOffset),e.selection.setRng(t)),s.selection.getRng().collapsed){var i=Dc(s.getDoc(),f,c,l.decorate);sa(i,"\xa0"),s.selection.getRng().insertNode(i.dom()),s.selection.select(i.dom())}else{var a=Fu.getPersistentBookmark(s.selection,!1),u=s.selection.getRng();Bc(s,u,c,l.decorate,f),s.selection.moveToBookmark(a)}})};function Pc(s){var n,r=(n={},{register:function(e,t){n[e]={n
 ame:e,settings:t}},lookup:function(e){return n.hasOwnProperty(e)?A.from(n[e]).map(function(e){return e.settings}):A.none()}});ra(s,r);var o=na(s);return{register:function(e,t){r.register(e,t)},annotate:function(t,n){r.lookup(t).each(function(e){Oc(s,t,e,n)})},annotationChanged:function(e,t){o.addListener(e,t)},remove:function(e){ea(s,A.some(e)).each(function(e){var t=e.elements;F(t,Bi)})},getAll:function(e){var t,n,r,o,i,a,u=(t=s,n=e,r=or.fromDom(t.getBody()),o=ji(r,"["+Qi()+'="'+n+'"]'),i={},F(o,function(e){var t=Cr(e,Zi()),n=i.hasOwnProperty(t)?i[t]:[];i[t]=n.concat([e])}),i);return a=function(e){return W(e,function(e){return e.dom()})},pr(u,function(e,t,n){return{k:t,v:a(e,t,n)}})}}}var Lc=function(e){return Gt.grep(e.childNodes,function(e){return"LI"===e.nodeName})},Ic=function(e){return e&&e.firstChild&&e.firstChild===e.lastChild&&("\xa0"===(t=e.firstChild).data||Bo.isBr(t));var t},Mc=function(e){return 0<e.leng
 th&&(!(t=e[e.length-1]).firstChild||Ic(t))?e.slice(0,-1):e;var t},Fc=function(e,t){var n=e.getParent(t,e.isBlock);return n&&"LI"===n.nodeName?n:null},zc=function(e,t){var n=vu.after(e),r=Hs(t).prev(n);return r?r.toRange():null},Uc=function(t,e,n){var r,o,i,a,u=t.parentNode;return Gt.each(e,function(e){u.insertBefore(e,t)}),r=t,o=n,i=vu.before(r),(a=Hs(o).next(i))?a.toRange():null},Vc=function(e,t){var n,r,o,i,a,u,s=t.firstChild,c=t.lastChild;return s&&"meta"===s.name&&(s=s.next),c&&"mce_marker"===c.attr("id")&&(c=c.prev),r=c,u=(n=e).getNonEmptyElements(),r&&(r.isEmpty(u)||(o=r,n.getBlockElements()[o.name]&&(a=o).firstChild&&a.firstChild===a.lastChild&&("br"===(i=o.firstChild).name||"\xa0"===i.value)))&&(c=c.prev),!(!s||s!==c||"ul"!==s.name&&"ol"!==s.name)},Hc=function(e,o,i,t){var n,r,a,u,s,c,l,f,d,m,g,p,h,v,b
 ,y,C,x,w,N=(n=o,r=t,c=e.serialize(r),l=n.createFragment(c),u=(a=l).firstChild,s=a.lastChild,u&&"META"===u.nodeName&&u.parentNode.removeChild(u),s&&"mce_marker"===s.id&&s.parentNode.removeChild(s),a),E=Fc(o,i.startContainer),S=Mc(Lc(N.firstChild)),k=o.getRoot(),T=function(e){var t=vu.fromRangeStart(i),n=Hs(o.getRoot()),r=1===e?n.prev(t):n.next(t);return!r||Fc(o,r.getNode())!==E};return T(1)?Uc(E,S,k):T(2)?(f=E,d=S,m=k,o.insertAfter(d.reverse(),f),zc(d[0],m)):(p=S,h=k,v=g=E,y=(b=i).cloneRange(),C=b.cloneRange(),y.setStartBefore(v),C.setEndAfter(v),x=[y.cloneContents(),C.cloneContents()],(w=g.parentNode).insertBefore(x[0],g),Gt.each(p,function(e){w.insertBefore(e,g)}),w.insertBefore(x[1],g),w.removeChild(g),zc(p[p.length-1],h))},jc=function(e,t){return!!Fc(e,t)},qc=Gt.each,$c=function(o){this.compare=function(e,t){if(e.nodeName!==t.nodeName)return!1;var n=function(n){var r={};return qc(o.getAttribs(n),function(e){var t=e.nodeName.toLo
 werCase();0!==t.indexOf("_")&&"style"!==t&&0!==t.indexOf("data-")&&(r[t]=o.getAttrib(n,t))}),r},r=function(e,t){var n,r;for(r in e)if(e.hasOwnProperty(r)){if(void 0===(n=t[r]))return!1;if(e[r]!==n)return!1;delete t[r]}for(r in t)if(t.hasOwnProperty(r))return!1;return!0};return!(!r(n(e),n(t))||!r(o.parseStyle(o.getAttrib(e,"style")),o.parseStyle(o.getAttrib(t,"style")))||cc(e)||cc(t))}},Wc=function(e){var t=ji(e,"br"),n=z(function(e){for(var t=[],n=e.dom();n;)t.push(or.fromDom(n)),n=n.lastChild;return t}(e).slice(-1),mo);t.length===n.length&&F(n,Di)},Kc=function(e){_i(e),Ai(e,or.fromHtml('<br data-mce-bogus="1">'))},Xc=function(n){$r(n).each(function(t){Fr(t).each(function(e){lo(n)&&mo(t)&&lo(e)&&Di(t)})})},Yc=Gt.makeMap;function Gc(e){var u,s,c,l,f,d=[];return u=(e=e||{}).indent,s=Yc(e.indent_before||""),c=Yc(e.indent_after||""),l=Wo
 .getEncodeFunc(e.entity_encoding||"raw",e.entities),f="html"===e.element_format,{start:function(e,t,n){var r,o,i,a;if(u&&s[e]&&0<d.length&&0<(a=d[d.length-1]).length&&"\n"!==a&&d.push("\n"),d.push("<",e),t)for(r=0,o=t.length;r<o;r++)i=t[r],d.push(" ",i.name,'="',l(i.value,!0),'"');d[d.length]=!n||f?">":" />",n&&u&&c[e]&&0<d.length&&0<(a=d[d.length-1]).length&&"\n"!==a&&d.push("\n")},end:function(e){var t;d.push("</",e,">"),u&&c[e]&&0<d.length&&0<(t=d[d.length-1]).length&&"\n"!==t&&d.push("\n")},text:function(e,t){0<e.length&&(d[d.length]=t?e:l(e))},cdata:function(e){d.push("<![CDATA[",e,"]]>")},comment:function(e){d.push("\x3c!--&quo
 t;,e,"--\x3e")},pi:function(e,t){t?d.push("<?",e," ",l(t),"?>"):d.push("<?",e,"?>"),u&&d.push("\n")},doctype:function(e){d.push("<!DOCTYPE",e,">",u?"\n":"")},reset:function(){d.length=0},getContent:function(){return d.join("").replace(/\n$/,"")}}}function Jc(t,g){void 0===g&&(g=ri());var p=Gc(t);return(t=t||{}).validate=!("validate"in t)||t.validate,{serialize:function(e){var f,d;d=t.validate,f={3:function(e){p.text(e.value,e.raw)},8:function(e){p.comment(e.value)},7:function(e){p.pi(e.name,e.value)},10:function(e){p.doctype(e.value)},4:function(e){p.cdata(e.value)},11:function(e){if(e=e.firstChild)for(;m(e),e=e.next;);}},p.reset();var m=function(e){var t,n,r,o,i,a,u,s,c,l=f[e.type];if(l)l(e);else{if(t=e.name,n=e.shortEnded,r=e.attributes,d&&r&&1<r.length&&((a=[]).map={},c=g.getElement
 Rule(e.name))){for(u=0,s=c.attributesOrder.length;u<s;u++)(o=c.attributesOrder[u])in r.map&&(i=r.map[o],a.map[o]=i,a.push({name:o,value:i}));for(u=0,s=r.length;u<s;u++)(o=r[u].name)in a.map||(i=r.map[o],a.map[o]=i,a.push({name:o,value:i}));r=a}if(p.start(e.name,r,n),!n){if(e=e.firstChild)for(;m(e),e=e.next;);p.end(t)}}};return 1!==e.type||t.inner?f[11](e):m(e),p.getContent()}}}var Qc,Zc=function(a){var u=vu.fromRangeStart(a),s=vu.fromRangeEnd(a),c=a.commonAncestorContainer;return Zs.fromPosition(!1,c,s).map(function(e){return!ps(u,s,c)&&ps(u,e,c)?(t=u.container(),n=u.offset(),r=e.container(),o=e.offset(),(i=H.document.createRange()).setStart(t,n),i.setEnd(r,o),i):a;var t,n,r,o,i}).getOr(a)},el=function(e){return e.collapsed?e:Zc(e)},tl=Bo.matchNodeNames("td th"),nl=function(e,t){var n,r,o=e.selection.getRng(),i=o.startContainer,a=o.startOffset;o.collapsed&&(n=i,r=a,Bo.isText(n)&&"\xa0"===n.nodeValue[r-1])&&Bo.isText(i
 )&&(i.insertData(a-1," "),i.deleteData(a,1),o.setStart(i,a),o.setEnd(i,a),e.selection.setRng(o)),e.selection.setContent(t)},rl=function(e,t,n){var r,o,i,a,u,s,c,l,f,d,m,g=e.selection,p=e.dom;if(/^ | $/.test(t)&&(t=function(e,t){var n,r;n=e.startContainer,r=e.startOffset;var o=function(e){return n[e]&&3===n[e].nodeType};return 3===n.nodeType&&(0<r?t=t.replace(/^&nbsp;/," "):o("previousSibling")||(t=t.replace(/^ /,"&nbsp;")),r<n.length?t=t.replace(/&nbsp;(<br>|)$/," "):o("nextSibling")||(t=t.replace(/(&nbsp;| )(<br>|)$/,"&nbsp;"))),t}(g.getRng(),t)),r=e.parser,m=n.merge,o=Jc({validate:e.settings.validate},e.schema),d='<span id="mce_marker" data-mce-type="bookmark">&#xFEFF;&#x200B;</span>',s={content:t,format:"html",selection:!0,paste:n.paste},(s=e.fire("BeforeSetContent",s)).isDefaultPrev
 ented())e.fire("SetContent",{content:s.content,format:"html",selection:!0,paste:n.paste});else{-1===(t=s.content).indexOf("{$caret}")&&(t+="{$caret}"),t=t.replace(/\{\$caret\}/,d);var h,v,b,y,C,x,w=(l=g.getRng()).startContainer||(l.parentElement?l.parentElement():null),N=e.getBody();w===N&&g.isCollapsed()&&p.isBlock(N.firstChild)&&(h=e,(v=N.firstChild)&&!h.schema.getShortEndedElements()[v.nodeName])&&p.isEmpty(N.firstChild)&&((l=p.createRng()).setStart(N.firstChild,0),l.setEnd(N.firstChild,0),g.setRng(l)),g.isCollapsed()||(e.selection.setRng(el(e.selection.getRng())),e.getDoc().execCommand("Delete",!1,null),b=e.selection.getRng(),y=t,C=b.startContainer,x=b.startOffset,3===C.nodeType&&b.collapsed&&("\xa0"===C.data[x]?(C.deleteData(x,1),/[\u00a0| ]$/.test(y)||(y+=" ")):"\xa0"===C.data[x-1]&&(C.deleteData(x-1,1),/[\u00a0| ]$/.te
 st(y)||(y=" "+y))),t=y);var E,S,k,T={context:(i=g.getNode()).nodeName.toLowerCase(),data:n.data,insert:!0};if(u=r.parse(t,T),!0===n.paste&&Vc(e.schema,u)&&jc(p,i))return l=Hc(o,p,e.selection.getRng(),u),e.selection.setRng(l),void e.fire("SetContent",s);if(function(e){for(var t=e;t=t.walk();)1===t.type&&t.attr("data-mce-fragment","1")}(u),"mce_marker"===(f=u.lastChild).attr("id"))for(f=(c=f).prev;f;f=f.walk(!0))if(3===f.type||!p.isBlock(f.name)){e.schema.isValidChild(f.parent.name,"span")&&f.parent.insert(c,f,"br"===f.name);break}if(e._selectionOverrides.showBlockCaretContainer(i),T.invalid){for(nl(e,d),i=g.getNode(),a=e.getBody(),9===i.nodeType?i=f=a:f=i;f!==a;)f=(i=f).parentNode;t=i===a?a.innerHTML:p.getOuterHTML(i),t=o.serialize(r.parse(t.replace(/<span (id="mce_marker"|id=mce_marker).+?<\/span>/i,function(){return o.serialize(u)}))),i===a?p.setHTML(a,
 t):p.setOuterHTML(i,t)}else!function(e,t,n){if("all"===n.getAttribute("data-mce-bogus"))n.parentNode.insertBefore(e.dom.createFragment(t),n);else{var r=n.firstChild,o=n.lastChild;!r||r===o&&"BR"===r.nodeName?e.dom.setHTML(n,t):nl(e,t)}}(e,t=o.serialize(u),i);!function(e,t){var n=e.schema.getTextInlineElements(),r=e.dom;if(t){var o=e.getBody(),i=new $c(r);Gt.each(r.select("*[data-mce-fragment]"),function(e){for(var t=e.parentNode;t&&t!==o;t=t.parentNode)n[e.nodeName.toLowerCase()]&&i.compare(t,e)&&r.remove(e,!0)})}}(e,m),function(n,e){var t,r,o,i,a,u=n.dom,s=n.selection;if(e){if(n.selection.scrollIntoView(e),t=function(e){for(var t=n.getBody();e&&e!==t;e=e.parentNode)if("false"===n.dom.getContentEditable(e))return e;return null}(e))return u.remove(e),s.select(t);var c=u.createRng();(i=e.previousSibling)&&3===i.nodeType?(c.setStart(i,i.nodeValue.length),me.ie||(a=e.nextSibling)&&3
 ===a.nodeType&&(i.appendData(a.data),a.parentNode.removeChild(a))):(c.setStartBefore(e),c.setEndBefore(e)),r=u.getParent(e,u.isBlock),u.remove(e),r&&u.isEmpty(r)&&(n.$(r).empty(),c.setStart(r,0),c.setEnd(r,0),tl(r)||r.getAttribute("data-mce-fragment")||!(o=function(e){var t=vu.fromRangeStart(e);if(t=Hs(n.getBody()).next(t))return t.toRange()}(c))?u.add(r,u.create("br",{"data-mce-bogus":"1"})):(c=o,u.remove(r))),s.setRng(c)}}(e,p.get("mce_marker")),E=e.getBody(),Gt.each(E.getElementsByTagName("*"),function(e){e.removeAttribute("data-mce-fragment")}),S=e.dom,k=e.selection.getStart(),A.from(S.getParent(k,"td,th")).map(or.fromDom).each(Xc),e.fire("SetContent",s),e.addVisual()}},ol=function(e,t){var n,r,o="string"!=typeof(n=t)?(r=Gt.extend({paste:n.paste,data:{paste:n.paste}},n),{content:n.content,details:r}):{content:n,details:{}};rl(e,o.content,o.details)},il=Sr(&
 quot;sections","settings"),al=nr.detect().deviceType.isTouch(),ul=["lists","autolink","autosave"],sl={theme:"mobile"},cl=function(e){var t=D(e)?e.join(" "):e,n=W(R(t)?t.split(" "):[],Xn);return z(n,function(e){return 0<e.length})},ll=function(n,e){var r,o,i,t=(r=function(e,t){return M(n,t)},o={},i={},gr(e,function(e,t){(r(e,t)?o:i)[t]=e}),{t:o,f:i});return il(t.t,t.f)},fl=function(e,t){return e.sections().hasOwnProperty(t)},dl=function(e,t,n,r){var o,i=cl(n.forced_plugins),a=cl(r.plugins),u=e&&fl(t,"mobile")?z(a,d(M,ul)):a,s=(o=u,[].concat(cl(i)).concat(cl(o)));return Gt.extend(r,{plugins:s.join(" ")})},ml=function(e,t,n,r){var o,i,a,u,s,c,l,f,d,m,g=ll(["mobile"],r),p=Gt.extend(t,n,g.settings(),(f=e,m=(d=g).settings().inline,f&&fl(d,"mobile")&&!m?(u="mobile",s=sl,c=g.sections(),l=c.hasOwnProperty(u)?c[u]:{},Gt.extend({},s,l)):{}),{va
 lidate:!0,content_editable:g.settings().inline,external_plugins:(o=n,i=g.settings(),a=i.external_plugins?i.external_plugins:{},o&&o.external_plugins?Gt.extend({},o.external_plugins,a):a)});return dl(e,g,n,p)},gl=function(e,t,n){return A.from(t.settings[n]).filter(e)},pl=d(gl,R),hl=function(e,t,n,r){var o,i,a,u=t in e.settings?e.settings[t]:n;return"hash"===r?(a={},"string"==typeof(i=u)?F(0<i.indexOf("=")?i.split(/[;,](?![^=;,]*(?:[;,]|$))/):i.split(","),function(e){var t=e.split("=");1<t.length?a[Gt.trim(t[0])]=Gt.trim(t[1]):a[Gt.trim(t[0])]=Gt.trim(t)}):a=i,a):"string"===r?gl(R,e,t).getOr(n):"number"===r?gl(L,e,t).getOr(n):"boolean"===r?gl(O,e,t).getOr(n):"object"===r?gl(_,e,t).getOr(n):"array"===r?gl(D,e,t).getOr(n):"string[]"===r?gl((o=R,function(e){return D(e)&&Q(e,o)}),e,t).getOr(n):"function"===r?gl(P,e,t).getOr(n):u},vl=/[\u0591-\u07FF\
 uFB1D-\uFDFF\uFE70-\uFEFC]/,bl=function(e,t){if(!t)return t;var n=t.container(),r=t.offset();return e?ha(n)?Bo.isText(n.nextSibling)?vu(n.nextSibling,0):vu.after(n):ya(t)?vu(n,r+1):t:ha(n)?Bo.isText(n.previousSibling)?vu(n.previousSibling,n.previousSibling.data.length):vu.before(n):Ca(t)?vu(n,r-1):t},yl={isInlineTarget:function(e,t){var n=pl(e,"inline_boundaries_selector").getOr("a[href],code");return Br(or.fromDom(t),n)},findRootInline:function(e,t,n){var r,o,i,a=(r=e,o=t,i=n,z(hi.DOM.getParents(i.container(),"*",o),r));return A.from(a[a.length-1])},isRtl:function(e){return"rtl"===hi.DOM.getStyle(e,"direction",!0)||(t=e.textContent,vl.test(t));var t},isAtZwsp:function(e){return ya(e)||Ca(e)},normalizePosition:bl,normalizeForwards:d(bl,!0),normalizeBackwards:d(bl,!1),hasSameParentBlock:function(e,t,n){var r=gs(t,e),o=gs(n,e);return r&&r===o}},Cl=function(e,t){return Lr(e,t)?Ki(t,function(e){return go(e)||ho(e)},(n=e,function(
 e){return Pr(n,or.fromDom(e.dom().parentNode))})):A.none();var n},xl=function(e){var t,n,r;e.dom.isEmpty(e.getBody())&&(e.setContent(""),n=(t=e).getBody(),r=n.firstChild&&t.dom.isBlock(n.firstChild)?n.firstChild:n,t.selection.setCursorLocation(r,0))},wl=function(i,a,u){return Wa([Zs.firstPositionIn(u),Zs.lastPositionIn(u)],function(e,t){var n=yl.normalizePosition(!0,e),r=yl.normalizePosition(!1,t),o=yl.normalizePosition(!1,a);return i?Zs.nextPosition(u,o).map(function(e){return e.isEqual(r)&&a.isEqual(n)}).getOr(!1):Zs.prevPosition(u,o).map(function(e){return e.isEqual(n)&&a.isEqual(r)}).getOr(!1)}).getOr(!0)},Nl=function(e,t){var n,r,o,i=or.fromDom(e),a=or.fromDom(t);return n=a,r="pre,code",o=d(Pr,i),Xi(n,r,o).isSome()},El=function(e,t){return Oa(t)&&!1===(r=e,o=t,Bo.isText(o)&&/^[ \t\r\n]*$/.test(o.data)&&!1===Nl(r,o))||(n=t,Bo.isElement(n)&&"A"===n.nodeName&&n.hasAttribute("
 name"))||Sl(t);var n,r,o},Sl=Bo.hasAttribute("data-mce-bookmark"),kl=Bo.hasAttribute("data-mce-bogus"),Tl=Bo.hasAttributeValue("data-mce-bogus","all"),Al=function(e){return function(e){var t,n,r=0;if(El(e,e))return!1;if(!(n=e.firstChild))return!0;t=new oo(n,e);do{if(Tl(n))n=t.next(!0);else if(kl(n))n=t.next();else if(Bo.isBr(n))r++,n=t.next();else{if(El(e,n))return!1;n=t.next()}}while(n);return r<=1}(e.dom())},Rl=Sr("block","position"),_l=Sr("from","to"),Dl=function(e,t){var n=or.fromDom(e),r=or.fromDom(t.container());return Cl(n,r).map(function(e){return Rl(e,t)})},Bl=function(o,i,e){var t=Dl(o,vu.fromRangeStart(e)),n=t.bind(function(e){return Zs.fromPosition(i,o,e.position()).bind(function(e){return Dl(o,e).map(function(e){return t=o,n=i,r=e,Bo.isBr(r.position().getNode())&&!1===Al(r.block())?Zs.positionIn(!1,r.block().dom()).bind(function(e){return e.isEqual(r.position())?Zs.fromPositi
 on(n,t,e).bind(function(e){return Dl(t,e)}):A.some(r)}).getOr(r):r;var t,n,r})})});return Wa([t,n],_l).filter(function(e){return!1===Pr((r=e).from().block(),r.to().block())&&Mr((n=e).from().block()).bind(function(t){return Mr(n.to().block()).filter(function(e){return Pr(t,e)})}).isSome()&&(t=e,!1===Bo.isContentEditableFalse(t.from().block())&&!1===Bo.isContentEditableFalse(t.to().block()));var t,n,r})},Ol=function(e,t,n){return n.collapsed?Bl(e,t,n):A.none()},Pl=function(e,t,n){return Lr(t,e)?function(e,t){for(var n=P(t)?t:q(!1),r=e.dom(),o=[];null!==r.parentNode&&r.parentNode!==undefined;){var i=r.parentNode,a=or.fromDom(i);if(o.push(a),!0===n(a))break;r=i}return o}(e,function(e){return n(e)||Pr(e,t)}).slice(0,-1):[]},Ll=function(e,t){return Pl(e,t,q(!1))},Il=Ll,Ml=function(e,t){return[e].concat(Ll(e,t))},Fl=function(e){var t,n=(t=Hr(e),X(t,lo).fold(function(){return t},function(e){return t.slice(0,e)}));return F(n,Di),n},zl=function(e,t){var n=Ml(t,
 e);return V(n.reverse(),Al).each(Di)},Ul=function(e,t,n,r){if(Al(n))return Kc(n),Zs.firstPositionIn(n.dom());0===z(Ur(r),function(e){return!Al(e)}).length&&Al(t)&&Si(r,or.fromTag("br"));var o=Zs.prevPosition(n.dom(),vu.before(r.dom()));return F(Fl(t),function(e){Si(r,e)}),zl(e,t),o},Vl=function(e,t,n){if(Al(n))return Di(n),Al(t)&&Kc(t),Zs.firstPositionIn(t.dom());var r=Zs.lastPositionIn(n.dom());return F(Fl(t),function(e){Ai(n,e)}),zl(e,t),r},Hl=function(e,t){return Lr(t,e)?(n=Ml(e,t),A.from(n[n.length-1])):A.none();var n},jl=function(e,t){Zs.positionIn(e,t.dom()).map(function(e){return e.getNode()}).map(or.fromDom).filter(mo).each(Di)},ql=function(e,t,n){return jl(!0,t),jl(!1,n),Hl(t,n).fold(d(Vl,e,t,n),d(Ul,e,t,n))},$l=function(e,t,n,r){return t?ql(e,r,n):ql(e,n,r)},Wl=function(t,n){var e,r=or.fromDom(t.getBody());return(e=Ol(r.dom(),n,t.selection.getRng()).bind(function(e){return $l(r,n,e.from().block(),e.to().block())})).each(function(e){t.selec
 tion.setRng(e.toRange())}),e.isSome()},Kl=function(e,t){var n=or.fromDom(t),r=d(Pr,e);return Wi(n,yo,r).isSome()},Xl=function(e,t){var n,r,o=Zs.prevPosition(e.dom(),vu.fromRangeStart(t)).isNone(),i=Zs.nextPosition(e.dom(),vu.fromRangeEnd(t)).isNone();return!(Kl(n=e,(r=t).startContainer)||Kl(n,r.endContainer))&&o&&i},Yl=function(e){var n,r,o,t,i=or.fromDom(e.getBody()),a=e.selection.getRng();return Xl(i,a)?((t=e).setContent(""),t.selection.setCursorLocation(),!0):(n=i,r=e.selection,o=r.getRng(),Wa([Cl(n,or.fromDom(o.startContainer)),Cl(n,or.fromDom(o.endContainer))],function(e,t){return!1===Pr(e,t)&&(o.deleteContents(),$l(n,!0,e,t).each(function(e){r.setRng(e.toRange())}),!0)}).getOr(!1))},Gl=function(e,t){return!e.selection.isCollapsed()&&Yl(e)},Jl=function(a){if(!D(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 F(a,function(e,r){var t=d
 r(e);if(1!==t.length)throw new Error("one and only one name per case");var o=t[0],i=e[o];if(n[o]!==undefined)throw new Error("duplicate key detected:"+o);if("cata"===o)throw new Error("cannot have a case named cata (sorry)");if(!D(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=dr(e);if(u.length!==t.length)throw new Error("Wrong number of arguments to match. Expected: "+u.join(",")+"\nActual: "+t.join(",&
 quot;));if(!Q(u,function(e){return M(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){H.console.log(e,{constructors:u,constructor:o,params:n})}}}}),n},Ql=function(e){return Es(e).exists(mo)},Zl=function(e,t,n){var r=z(Ml(or.fromDom(n.container()),t),lo),o=te(r).getOr(t);return Zs.fromPosition(e,o.dom(),n).filter(Ql)},ef=function(e,t){return Es(t).exists(mo)||Zl(!0,e,t).isSome()},tf=function(e,t){return(n=t,A.from(n.getNode(!0)).map(or.fromDom)).exists(mo)||Zl(!1,e,t).isSome();var n},nf=d(Zl,!1),rf=d(Zl,!0),of=(Qc="\xa0",function(e){return Qc===e}),af=function(e){return/^[\r\n\t ]$/.test(e)},uf=function(e){return!af(e)&&!of(e)},sf=function(n,r,o){return A.from(o.container()).filter(Bo.isText).exists(function(e){var t=n?0:-1;return r(e.data.charAt(o.offset()+t))})},cf=d(sf,!0,af),lf=d(sf,!1,af),ff=function(
 e){var t=e.container();return Bo.isText(t)&&0===t.data.length},df=function(e,t){var n=hs(e,t);return Bo.isContentEditableFalse(n)&&!Bo.isBogusAll(n)},mf=d(df,0),gf=d(df,-1),pf=function(e,t){return Bo.isTable(hs(e,t))},hf=d(pf,0),vf=d(pf,-1),bf=Jl([{remove:["element"]},{moveToElement:["element"]},{moveToPosition:["position"]}]),yf=function(e,t,n,r){var o=r.getNode(!1===t);return Cl(or.fromDom(e),or.fromDom(n.getNode())).map(function(e){return Al(e)?bf.remove(e.dom()):bf.moveToElement(o)}).orThunk(function(){return A.some(bf.moveToElement(o))})},Cf=function(u,s,c){return Zs.fromPosition(s,u,c).bind(function(e){return a=e.getNode(),yo(or.fromDom(a))||ho(or.fromDom(a))?A.none():(t=u,o=e,i=function(e){return fo(or.fromDom(e))&&!ps(r,o,t)},ws(!(n=s),r=c).fold(function(){return ws(n,o).fold(q(!1),i)},i)?A.none():s&&Bo.isContentEditableFalse(e.getNode())?yf(u,s,c,e):!1===s&&Bo.isContentEditableFalse(e.getNode(!0))?yf(u,s,
 c,e):s&&gf(c)?A.some(bf.moveToPosition(e)):!1===s&&mf(c)?A.some(bf.moveToPosition(e)):A.none());var t,n,r,o,i,a})},xf=function(r,e,o){return i=e,a=o.getNode(!1===i),u=i?"after":"before",Bo.isElement(a)&&a.getAttribute("data-mce-caret")===u?(t=e,n=o.getNode(!1===e),t&&Bo.isContentEditableFalse(n.nextSibling)?A.some(bf.moveToElement(n.nextSibling)):!1===t&&Bo.isContentEditableFalse(n.previousSibling)?A.some(bf.moveToElement(n.previousSibling)):A.none()).fold(function(){return Cf(r,e,o)},A.some):Cf(r,e,o).bind(function(e){return t=r,n=o,e.fold(function(e){return A.some(bf.remove(e))},function(e){return A.some(bf.moveToElement(e))},function(e){return ps(n,e,t)?A.none():A.some(bf.moveToPosition(e))});var t,n});var t,n,i,a,u},wf=function(e,t,n){if(0!==n){var r,o,i,a=e.data.slice(t,t+n),u=t+n>=e.data.length,s=0===t;e.replaceData(t,n,(o=s,i=u,U((r=a).split(""),function(e,t){return-1!==" \f\n\r\t\x0B&quot
 ;.indexOf(t)||"\xa0"===t?e.previousCharIsSpace||""===e.str&&o||e.str.length===r.length-1&&i?{previousCharIsSpace:!1,str:e.str+"\xa0"}:{previousCharIsSpace:!0,str:e.str+" "}:{previousCharIsSpace:!1,str:e.str+t}},{previousCharIsSpace:!1,str:""}).str))}},Nf=function(e,t){var n,r=e.data.slice(t),o=r.length-(n=r,n.replace(/^\s+/g,"")).length;return wf(e,t,o)},Ef=function(e,t){return r=e,o=(n=t).container(),i=n.offset(),!1===vu.isTextPosition(n)&&o===r.parentNode&&i>vu.before(r).offset()?vu(t.container(),t.offset()-1):t;var n,r,o,i},Sf=function(e){return Oa(e.previousSibling)?A.some((t=e.previousSibling,Bo.isText(t)?vu(t,t.data.length):vu.after(t))):e.previousSibling?Zs.lastPositionIn(e.previousSibling):A.none();var t},kf=function(e){return Oa(e.nextSibling)?A.some((t=e.nextSibling,Bo.isText(t)?vu(t,0):vu.before(t))):e.nextSibling?Zs.firstPositionIn(e.nextSibling):A.none();var t},Tf=function(r,o
 ){return Sf(o).orThunk(function(){return kf(o)}).orThunk(function(){return e=r,t=o,n=vu.before(t.previousSibling?t.previousSibling:t.parentNode),Zs.prevPosition(e,n).fold(function(){return Zs.nextPosition(e,vu.after(t))},A.some);var e,t,n})},Af=function(n,r){return kf(r).orThunk(function(){return Sf(r)}).orThunk(function(){return e=n,t=r,Zs.nextPosition(e,vu.after(t)).fold(function(){return Zs.prevPosition(e,vu.before(t))},A.some);var e,t})},Rf=function(e,t,n){return(r=e,o=t,i=n,r?Af(o,i):Tf(o,i)).map(d(Ef,n));var r,o,i},_f=function(t,n,e){e.fold(function(){t.focus()},function(e){t.selection.setRng(e.toRange(),n)})},Df=function(e,t){return t&&e.schema.getBlockElements().hasOwnProperty(sr(t))},Bf=function(e){if(Al(e)){var t=or.fromHtml('<br data-mce-bogus="1">');return _i(e),Ai(e,t),A.some(vu.before(t.dom()))}return A.none()},Of=function(e,t,l){var n=Fr(e).filter(function(e){return Bo.isText(e.dom())}),r=zr(e).filter(function(e){return Bo.isText(e.dom())});ret
 urn Di(e),Wa([n,r,t],function(e,t,n){var r,o,i,a,u=e.dom(),s=t.dom(),c=u.data.length;return o=s,i=l,a=Yn((r=u).data).length,r.appendData(o.data),Di(or.fromDom(o)),i&&Nf(r,a),n.container()===s?vu(u,c):n}).orThunk(function(){return l&&(n.each(function(e){return t=e.dom(),n=e.dom().length,r=t.data.slice(0,n),o=r.length-Yn(r).length,wf(t,n-o,o);var t,n,r,o}),r.each(function(e){return Nf(e.dom(),0)})),t})},Pf=function(e,t){return n=e.schema.getTextInlineElements(),r=sr(t),mr.call(n,r);var n,r},Lf=function(t,n,e,r){void 0===r&&(r=!0);var o,i=Rf(n,t.getBody(),e.dom()),a=Wi(e,d(Df,t),(o=t.getBody(),function(e){return e.dom()===o})),u=Of(e,i,Pf(t,e));t.dom.isEmpty(t.getBody())?(t.setContent(""),t.selection.setCursorLocation()):a.bind(Bf).fold(function(){r&&_f(t,n,u)},function(e){r&&_f(t,n,A.some(e))})},If=function(a,u){var e,t,n,r,o,i;return(e=a.getBody(),t=u,n=a.selection.getRng(),r=xs(t?1:-1,e,n),o=vu.fromRangeStart(r),i=or.fromDom(e),!1===
 t&&gf(o)?A.some(bf.remove(o.getNode(!0))):t&&mf(o)?A.some(bf.remove(o.getNode())):!1===t&&mf(o)&&tf(i,o)?nf(i,o).map(function(e){return bf.remove(e.getNode())}):t&&gf(o)&&ef(i,o)?rf(i,o).map(function(e){return bf.remove(e.getNode())}):xf(e,t,o)).map(function(e){return e.fold((o=a,i=u,function(e){return o._selectionOverrides.hideFakeCaret(),Lf(o,i,or.fromDom(e)),!0}),(n=a,r=u,function(e){var t=r?vu.before(e):vu.after(e);return n.selection.setRng(t.toRange()),!0}),(t=a,function(e){return t.selection.setRng(e.toRange()),!0}));var t,n,r,o,i}).getOr(!1)},Mf=function(e,t){var n,r=e.selection.getNode();return!!Bo.isContentEditableFalse(r)&&(n=or.fromDom(e.getBody()),F(ji(n,".mce-offscreen-selection"),Di),Lf(e,t,or.fromDom(e.selection.getNode())),xl(e),!0)},Ff=function(e,t){return e.selection.isCollapsed()?If(e,t):Mf(e,t)},zf=function(e){var t,n=function(e,t){for(;t&&t!==e;){if(Bo.isContentEditableTrue(t)||Bo.isConten
 tEditableFalse(t))return t;t=t.parentNode}return null}(e.getBody(),e.selection.getNode());return Bo.isContentEditableTrue(n)&&e.dom.isBlock(n)&&e.dom.isEmpty(n)&&(t=e.dom.create("br",{"data-mce-bogus":"1"}),e.dom.setHTML(n,""),n.appendChild(t),e.selection.setRng(vu.before(t).toRange())),!0},Uf=Bo.isText,Vf=function(e){return Uf(e)&&e.data[0]===fa},Hf=function(e){return Uf(e)&&e.data[e.data.length-1]===fa},jf=function(e){return e.ownerDocument.createTextNode(fa)},qf=function(e,t){return e?function(e){if(Uf(e.previousSibling))return Hf(e.previousSibling)||e.previousSibling.appendData(fa),e.previousSibling;if(Uf(e))return Vf(e)||e.insertData(0,fa),e;var t=jf(e);return e.parentNode.insertBefore(t,e),t}(t):function(e){if(Uf(e.nextSibling))return Vf(e.nextSibling)||e.nextSibling.insertData(0,fa),e.nextSibling;if(Uf(e))return Hf(e)||e.appendData(fa),e;var t=jf(e);return e.nextSibling?e.parentNode.insertBefore(t
 ,e.nextSibling):e.parentNode.appendChild(t),t}(t)},$f=d(qf,!0),Wf=d(qf,!1),Kf=function(e,t){return Bo.isText(e.container())?qf(t,e.container()):qf(t,e.getNode())},Xf=function(e,t){var n=t.get();return n&&e.container()===n&&ha(n)},Yf=function(n,e){return e.fold(function(e){Ju.remove(n.get());var t=$f(e);return n.set(t),A.some(vu(t,t.length-1))},function(e){return Zs.firstPositionIn(e).map(function(e){if(Xf(e,n))return vu(n.get(),1);Ju.remove(n.get());var t=Kf(e,!0);return n.set(t),vu(t,1)})},function(e){return Zs.lastPositionIn(e).map(function(e){if(Xf(e,n))return vu(n.get(),n.get().length-1);Ju.remove(n.get());var t=Kf(e,!1);return n.set(t),vu(t,t.length-1)})},function(e){Ju.remove(n.get());var t=Wf(e);return n.set(t),A.some(vu(t,1))})},Gf=function(e,t){for(var n=0;n<e.length;n++){var r=e[n].apply(null,t);if(r.isSome())return r}return A.none()},Jf=Jl([{before:["element"]},{start:["element"]},{end:["element"]},{after:["element&quo
 t;]}]),Qf=function(e,t){var n=gs(t,e);return n||e},Zf=function(e,t,n){var r=yl.normalizeForwards(n),o=Qf(t,r.container());return yl.findRootInline(e,o,r).fold(function(){return Zs.nextPosition(o,r).bind(d(yl.findRootInline,e,o)).map(function(e){return Jf.before(e)})},A.none)},ed=function(e,t){return null===Vu(e,t)},td=function(e,t,n){return yl.findRootInline(e,t,n).filter(d(ed,t))},nd=function(e,t,n){var r=yl.normalizeBackwards(n);return td(e,t,r).bind(function(e){return Zs.prevPosition(e,r).isNone()?A.some(Jf.start(e)):A.none()})},rd=function(e,t,n){var r=yl.normalizeForwards(n);return td(e,t,r).bind(function(e){return Zs.nextPosition(e,r).isNone()?A.some(Jf.end(e)):A.none()})},od=function(e,t,n){var r=yl.normalizeBackwards(n),o=Qf(t,r.container());return yl.findRootInline(e,o,r).fold(function(){return Zs.prevPosition(o,r).bind(d(yl.findRootInline,e,o)).map(function(e){return Jf.after(e)})},A.none)},id=function(e){return!1===yl.isRtl(ud(e))},ad=function(e,t,n){return Gf([Zf,nd,rd,o
 d],[e,t,n]).filter(id)},ud=function(e){return e.fold($,$,$,$)},sd=function(e){return e.fold(q("before"),q("start"),q("end"),q("after"))},cd=function(e){return e.fold(Jf.before,Jf.before,Jf.after,Jf.after)},ld=function(n,e,r,t,o,i){return Wa([yl.findRootInline(e,r,t),yl.findRootInline(e,r,o)],function(e,t){return e!==t&&yl.hasSameParentBlock(r,e,t)?Jf.after(n?e:t):i}).getOr(i)},fd=function(e,r){return e.fold(q(!0),function(e){return n=r,!(sd(t=e)===sd(n)&&ud(t)===ud(n));var t,n})},dd=function(e,t){return e?t.fold(j(A.some,Jf.start),A.none,j(A.some,Jf.after),A.none):t.fold(A.none,j(A.some,Jf.before),A.none,j(A.some,Jf.end))},md=function(a,u,s,c){var e=yl.normalizePosition(a,c),l=ad(u,s,e);return ad(u,s,e).bind(d(dd,a)).orThunk(function(){return t=a,n=u,r=s,o=l,e=c,i=yl.normalizePosition(t,e),Zs.fromPosition(t,r,i).map(d(yl.normalizePosition,t)).fold(function(){return o.map(cd)},function(e){return ad(n,r,e).map(d(ld,t,n,r,i,e)).fi
 lter(d(fd,o))}).filter(id);var t,n,r,o,e,i})},gd=ad,pd=md,hd=(d(md,!1),d(md,!0),cd),vd=function(e){return e.fold(Jf.start,Jf.start,Jf.end,Jf.end)},bd=function(e){return P(e.selection.getSel().modify)},yd=function(e,t,n){var r=e?1:-1;return t.setRng(vu(n.container(),n.offset()+r).toRange()),t.getSel().modify("move",e?"forward":"backward","word"),!0},Cd=function(e,t){var n=t.selection.getRng(),r=e?vu.fromRangeEnd(n):vu.fromRangeStart(n);return!!bd(t)&&(e&&ya(r)?yd(!0,t.selection,r):!(e||!Ca(r))&&yd(!1,t.selection,r))},xd=function(e,t){var n=e.dom.createRng();n.setStart(t.container(),t.offset()),n.setEnd(t.container(),t.offset()),e.selection.setRng(n)},wd=function(e){return!1!==e.settings.inline_boundaries},Nd=function(e,t){e?t.setAttribute("data-mce-selected","inline-boundary"):t.removeAttribute("data-mce-selected")},Ed=function(t,e,n){return Yf(e,n).map(function(e){return xd(t,e),n})},Sd=fun
 ction(e,t,n){return function(){return!!wd(t)&&Cd(e,t)}},kd={move:function(a,u,s){return function(){return!!wd(a)&&(t=a,n=u,e=s,r=t.getBody(),o=vu.fromRangeStart(t.selection.getRng()),i=d(yl.isInlineTarget,t),pd(e,i,r,o).bind(function(e){return Ed(t,n,e)})).isSome();var t,n,e,r,o,i}},moveNextWord:d(Sd,!0),movePrevWord:d(Sd,!1),setupSelectedState:function(a){var u=Pi(null),s=d(yl.isInlineTarget,a);return a.on("NodeChange",function(e){var t,n,r,o,i;wd(a)&&(t=s,n=a.dom,r=e.parents,o=z(n.select('*[data-mce-selected="inline-boundary"]'),t),i=z(r,t),F(ee(o,i),d(Nd,!1)),F(ee(i,o),d(Nd,!0)),function(e,t){if(e.selection.isCollapsed()&&!0!==e.composing&&t.get()){var n=vu.fromRangeStart(e.selection.getRng());vu.isTextPosition(n)&&!1===yl.isAtZwsp(n)&&(xd(e,Ju.removeAndReposition(t.get(),n)),t.set(null))}}(a,u),function(n,r,o,e){if(r.selection.isCollapsed()){var t=z(e,n);F(t,function(e){var t=vu.fromRangeStart(r.selectio
 n.getRng());gd(n,r.getBody(),t).bind(function(e){return Ed(r,o,e)})})}}(s,a,u,e.parents))}),u},setCaretPosition:xd},Td=function(t,n){return function(e){return Yf(n,e).map(function(e){return kd.setCaretPosition(t,e),!0}).getOr(!1)}},Ad=function(r,o,i,a){var u=r.getBody(),s=d(yl.isInlineTarget,r);r.undoManager.ignore(function(){var e,t,n;r.selection.setRng((e=i,t=a,(n=H.document.createRange()).setStart(e.container(),e.offset()),n.setEnd(t.container(),t.offset()),n)),r.execCommand("Delete"),gd(s,u,vu.fromRangeStart(r.selection.getRng())).map(vd).map(Td(r,o))}),r.nodeChanged()},Rd=function(n,r,i,o){var e,t,a=(e=n.getBody(),t=o.container(),gs(t,e)||e),u=d(yl.isInlineTarget,n),s=gd(u,a,o);return s.bind(function(e){return i?e.fold(q(A.some(vd(e))),A.none,q(A.some(hd(e))),A.none):e.fold(A.none,q(A.some(hd(e))),A.none,q(A.some(vd(e))))}).map(Td(n,r)).getOrThunk(function(){var t=Zs.navigate(i,a,o),e=t.bind(function(e){return gd(u,a,e)});return s.isSome()&&e.isSome()?yl.findR
 ootInline(u,a,o).map(function(e){return o=e,!!Wa([Zs.firstPositionIn(o),Zs.lastPositionIn(o)],function(e,t){var n=yl.normalizePosition(!0,e),r=yl.normalizePosition(!1,t);return Zs.nextPosition(o,n).map(function(e){return e.isEqual(r)}).getOr(!0)}).getOr(!0)&&(Lf(n,i,or.fromDom(e)),!0);var o}).getOr(!1):e.bind(function(e){return t.map(function(e){return i?Ad(n,r,o,e):Ad(n,r,e,o),!0})}).getOr(!1)})},_d=function(e,t,n){if(e.selection.isCollapsed()&&!1!==e.settings.inline_boundaries){var r=vu.fromRangeStart(e.selection.getRng());return Rd(e,t,n,r)}return!1},Dd=Sr("start","end"),Bd=Sr("rng","table","cells"),Od=Jl([{removeTable:["element"]},{emptyCells:["cells"]}]),Pd=function(e,t){return Gi(or.fromDom(e),"td,th",t)},Ld=function(e,t){return Xi(e,"table",t)},Id=function(e){return!1===Pr(e.start(),e.end())},Md=function(e,n){return Ld(e.start(),n).bind(function(t){return Ld(e.end(),n).bi
 nd(function(e){return Pr(t,e)?A.some(t):A.none()})})},Fd=function(e){return ji(e,"td,th")},zd=function(r,e){var t=Pd(e.startContainer,r),n=Pd(e.endContainer,r);return e.collapsed?A.none():Wa([t,n],Dd).fold(function(){return t.fold(function(){return n.bind(function(t){return Ld(t,r).bind(function(e){return te(Fd(e)).map(function(e){return Dd(e,t)})})})},function(t){return Ld(t,r).bind(function(e){return ne(Fd(e)).map(function(e){return Dd(t,e)})})})},function(e){return Ud(r,e)?A.none():(n=r,Ld((t=e).start(),n).bind(function(e){return ne(Fd(e)).map(function(e){return Dd(t.start(),e)})}));var t,n})},Ud=function(e,t){return Md(t,e).isSome()},Vd=function(e,t){var n,r,o,i,a=d(Pr,e);return(n=t,r=a,o=Pd(n.startContainer,r),i=Pd(n.endContainer,r),Wa([o,i],Dd).filter(Id).filter(function(e){return Ud(r,e)}).orThunk(function(){return zd(r,n)})).bind(function(e){return Md(t=e,a).map(function(e){return Bd(t,e,Fd(e))});var t})},Hd=function(e,t){return X(e,function(e){return Pr(e,t)})},jd
 =function(n){return(r=n,Wa([Hd(r.cells(),r.rng().start()),Hd(r.cells(),r.rng().end())],function(e,t){return r.cells().slice(e,t+1)})).map(function(e){var t=n.cells();return e.length===t.length?Od.removeTable(n.table()):Od.emptyCells(e)});var r},qd=function(e,t){return Vd(e,t).bind(jd)},$d=function(e){var t=[];if(e)for(var n=0;n<e.rangeCount;n++)t.push(e.getRangeAt(n));return t},Wd=$d,Kd=function(e){return J(e,function(e){var t=Ha(e);return t?[or.fromDom(t)]:[]})},Xd=function(e){return 1<$d(e).length},Yd=function(e){return z(Kd(e),yo)},Gd=function(e){return ji(e,"td[data-mce-selected],th[data-mce-selected]")},Jd=function(e,t){var n=Gd(t),r=Yd(e);return 0<n.length?n:r},Qd=Jd,Zd=function(e){return Jd(Wd(e.selection.getSel()),or.fromDom(e.getBody()))},em=function(e,t){return F(t,Kc),e.selection.setCursorLocation(t[0].dom(),0),!0},tm=function(e,t){return Lf(e,!1,t),!0},nm=function(n,e,r,t){return om(e,t).fold(function(){return t=n,qd(e,r).map(function(e){return e.fold(
 d(tm,t),d(em,t))});var t},function(e){return im(n,e)}).getOr(!1)},rm=function(e,t){return V(Ml(t,e),yo)},om=function(e,t){return V(Ml(t,e),function(e){return"caption"===sr(e)})},im=function(e,t){return Kc(t),e.selection.setCursorLocation(t.dom(),0),A.some(!0)},am=function(u,s,c,l,f){return Zs.navigate(c,u.getBody(),f).bind(function(e){return r=l,o=c,i=f,a=e,Zs.firstPositionIn(r.dom()).bind(function(t){return Zs.lastPositionIn(r.dom()).map(function(e){return o?i.isEqual(t)&&a.isEqual(e):i.isEqual(e)&&a.isEqual(t)})}).getOr(!0)?im(u,l):(t=l,n=e,om(s,or.fromDom(n.getNode())).map(function(e){return!1===Pr(e,t)}));var t,n,r,o,i,a}).or(A.some(!0))},um=function(a,u,s,e){var c=vu.fromRangeStart(a.selection.getRng());return rm(s,e).bind(function(e){return Al(e)?im(a,e):(t=a,n=s,r=u,o=e,i=c,Zs.navigate(r,t.getBody(),i).bind(function(e){return rm(n,or.fromDom(e.getNode())).map(function(e){return!1===Pr(e,o)})}));var t,n,r,o,i})},sm=function(a,u,e){var s=or.fromDom(a.g
 etBody());return om(s,e).fold(function(){return um(a,u,s,e)},function(e){return t=a,n=u,r=s,o=e,i=vu.fromRangeStart(t.selection.getRng()),Al(o)?im(t,o):am(t,r,n,o,i);var t,n,r,o,i}).getOr(!1)},cm=function(e,t){var n,r,o,i,a,u=or.fromDom(e.selection.getStart(!0)),s=Zd(e);return e.selection.isCollapsed()&&0===s.length?sm(e,t,u):(n=e,r=u,o=or.fromDom(n.getBody()),i=n.selection.getRng(),0!==(a=Zd(n)).length?em(n,a):nm(n,o,i,r))},lm=mc.isEq,fm=function(e,t,n){var r=e.formatter.get(n);if(r)for(var o=0;o<r.length;o++)if(!1===r[o].inherit&&e.dom.is(t,r[o].selector))return!0;return!1},dm=function(t,e,n,r){var o=t.dom.getRoot();return e!==o&&(e=t.dom.getParent(e,function(e){return!!fm(t,e,n)||e.parentNode===o||!!pm(t,e,n,r,!0)}),pm(t,e,n,r))},mm=function(e,t,n){return!!lm(t,n.inline)||!!lm(t,n.block)||(n.selector?1===t.nodeType&&e.is(t,n.selector):void 0)},gm=function(e,t,n,r,o,i){var a,u,s,c=n[r];if(n.onmatch)return n.onmatch(t,n,r);if(c)if("undefined&
 quot;==typeof c.length){for(a in c)if(c.hasOwnProperty(a)){if(u="attributes"===r?e.getAttrib(t,a):mc.getStyle(e,t,a),o&&!u&&!n.exact)return;if((!o||n.exact)&&!lm(u,mc.normalizeStyleValue(e,mc.replaceVars(c[a],i),a)))return}}else for(s=0;s<c.length;s++)if("attributes"===r?e.getAttrib(t,c[s]):mc.getStyle(e,t,c[s]))return n;return n},pm=function(e,t,n,r,o){var i,a,u,s,c=e.formatter.get(n),l=e.dom;if(c&&t)for(a=0;a<c.length;a++)if(i=c[a],mm(e.dom,t,i)&&gm(l,t,i,"attributes",o,r)&&gm(l,t,i,"styles",o,r)){if(s=i.classes)for(u=0;u<s.length;u++)if(!e.dom.hasClass(t,s[u]))return;return i}},hm={matchNode:pm,matchName:mm,match:function(e,t,n,r){var o;return r?dm(e,r,t,n):(r=e.selection.getNode(),!!dm(e,r,t,n)||!((o=e.selection.getStart())===r||!dm(e,o,t,n)))},matchAll:function(r,o,i){var e,a=[],u={};return e=r.selection.getStart(),r.dom.getParent(e,function(e){var t,n;for(t=0;t<o.length;t++)n=o[
 t],!u[n]&&pm(r,e,n,i)&&(u[n]=!0,a.push(n))},r.dom.getRoot()),a},canApply:function(e,t){var n,r,o,i,a,u=e.formatter.get(t),s=e.dom;if(u)for(n=e.selection.getStart(),r=mc.getParents(s,n),i=u.length-1;0<=i;i--){if(!(a=u[i].selector)||u[i].defaultBlock)return!0;for(o=r.length-1;0<=o;o--)if(s.is(r[o],a))return!0}return!1},matchesUnInheritedFormatSelector:fm},vm=function(e,t){return e.splitText(t)},bm=function(e){var t=e.startContainer,n=e.startOffset,r=e.endContainer,o=e.endOffset;return t===r&&Bo.isText(t)?0<n&&n<t.nodeValue.length&&(t=(r=vm(t,n)).previousSibling,n<o?(t=r=vm(r,o-=n).previousSibling,o=r.nodeValue.length,n=0):o=0):(Bo.isText(t)&&0<n&&n<t.nodeValue.length&&(t=vm(t,n),n=0),Bo.isText(r)&&0<o&&o<r.nodeValue.length&&(o=(r=vm(r,o).previousSibling).nodeValue.length)),{startContainer:t,startOffset:n,endContainer:r,endOffset:o}},ym=fa,Cm="_mce_caret",xm=func
 tion(e){return 0<function(e){for(var t=[];e;){if(3===e.nodeType&&e.nodeValue!==ym||1<e.childNodes.length)return[];1===e.nodeType&&t.push(e),e=e.firstChild}return t}(e).length},wm=function(e){var t;if(e)for(e=(t=new oo(e,e)).current();e;e=t.next())if(3===e.nodeType)return e;return null},Nm=function(e){var t=or.fromTag("span");return yr(t,{id:Cm,"data-mce-bogus":"1","data-mce-type":"format-caret"}),e&&Ai(t,or.fromText(ym)),t},Em=function(e,t,n){void 0===n&&(n=!0);var r,o=e.dom,i=e.selection;if(xm(t))Lf(e,!1,or.fromDom(t),n);else{var a=i.getRng(),u=o.getParent(t,o.isBlock),s=((r=wm(t))&&r.nodeValue.charAt(0)===ym&&r.deleteData(0,1),r);a.startContainer===s&&0<a.startOffset&&a.setStart(s,a.startOffset-1),a.endContainer===s&&0<a.endOffset&&a.setEnd(s,a.endOffset-1),o.remove(t,!0),u&&o.isEmpty(u)&&Kc(or.fromDom(u)),i.setRng(a)}},Sm=fu
 nction(e,t,n){void 0===n&&(n=!0);var r=e.dom,o=e.selection;if(t)Em(e,t,n);else if(!(t=Vu(e.getBody(),o.getStart())))for(;t=r.get(Cm);)Em(e,t,!1)},km=function(e,t,n){var r=e.dom,o=r.getParent(n,d(mc.isTextBlock,e));o&&r.isEmpty(o)?n.parentNode.replaceChild(t,n):(Wc(or.fromDom(n)),r.isEmpty(n)?n.parentNode.replaceChild(t,n):r.insertAfter(t,n))},Tm=function(e,t){return e.appendChild(t),t},Am=function(e,t){var n,r,o=(n=function(e,t){return Tm(e,t.cloneNode(!1))},r=t,function(e,t){for(var n=e.length-1;0<=n;n--)t(e[n],n,e)}(e,function(e){r=n(r,e)}),r);return Tm(o,o.ownerDocument.createTextNode(ym))},Rm=function(i){i.on("mouseup keydown",function(e){var t,n,r,o;t=i,n=e.keyCode,r=t.selection,o=t.getBody(),Sm(t,null,!1),8!==n&&46!==n||!r.isCollapsed()||r.getStart().innerHTML!==ym||Sm(t,Vu(o,r.getStart())),37!==n&&39!==n||Sm(t,Vu(o,r.getStart()))})},_m=function(e,t){return e.schema.getTextInlineElements().hasOwnProperty(sr(t))&&!Uu(t.dom())
 &&!Bo.isBogus(t.dom())},Dm=function(e){return 1===Hr(e).length},Bm=function(e,t,n,r){var o,i,a,u,s=d(_m,t),c=W(z(r,s),function(e){return e.dom()});if(0===c.length)Lf(t,e,n);else{var l=(o=n.dom(),i=c,a=Nm(!1),u=Am(i,a.dom()),Si(or.fromDom(o),a),Di(or.fromDom(o)),vu(u,0));t.selection.setRng(l.toRange())}},Om=function(r,o){var t,e=or.fromDom(r.getBody()),n=or.fromDom(r.selection.getStart()),i=z((t=Ml(n,e),X(t,lo).fold(q(t),function(e){return t.slice(0,e)})),Dm);return ne(i).map(function(e){var t,n=vu.fromRangeStart(r.selection.getRng());return!(!wl(o,n,e.dom())||Uu((t=e).dom())&&xm(t.dom())||(Bm(o,r,e,i),0))}).getOr(!1)},Pm=function(e,t){return!!e.selection.isCollapsed()&&Om(e,t)},Lm=Bo.isContentEditableTrue,Im=Bo.isContentEditableFalse,Mm=function(e,t,n,r,o){return t._selectionOverrides.showCaret(e,n,r,o)},Fm=function(e,t){var n,r;return e.fire("BeforeObjectSelected",{target:t}).isDefaultPrevented()?null:((r=(n=t).ownerDocument.createRange()).selectNo
 de(n),r)},zm=function(e,t,n){var r=xs(1,e.getBody(),t),o=vu.fromRangeStart(r),i=o.getNode();if(Im(i))return Mm(1,e,i,!o.isAtEnd(),!1);var a=o.getNode(!0);if(Im(a))return Mm(1,e,a,!1,!1);var u=e.dom.getParent(o.getNode(),function(e){return Im(e)||Lm(e)});return Im(u)?Mm(1,e,u,!1,n):null},Um=function(e,t,n){if(!t||!t.collapsed)return t;var r=zm(e,t,n);return r||t},Vm=function(e,t,n,r,o,i){var a,u,s=Mm(r,e,i.getNode(!o),o,!0);if(t.collapsed){var c=t.cloneRange();o?c.setEnd(s.startContainer,s.startOffset):c.setStart(s.endContainer,s.endOffset),c.deleteContents()}else t.deleteContents();return e.selection.setRng(s),a=e.dom,u=n,Bo.isText(u)&&0===u.data.length&&a.remove(u),!0},Hm=function(e,t){return function(e,t){var n=e.selection.getRng();if(!Bo.isText(n.commonAncestorContainer))return!1;var r=t?pu.Forwards:pu.Backwards,o=Hs(e.getBody()),i=d(Ss,o.next),a=d(Ss,o.prev),u=t?i:a,s=t?mf:gf,c=Ns(r,e.getBody(),n),l=yl.normalizePosition(t,u(c));if(!l)return!1;if(s(l))return Vm(e,
 n,c.getNode(),r,t,l);var f=u(l);return!!(f&&s(f)&&ks(l,f))&&Vm(e,n,c.getNode(),r,t,f)}(e,t)},jm=function(e,t){e.getDoc().execCommand(t,!1,null)},qm=function(e){Ff(e,!1)||Hm(e,!1)||_d(e,!1)||Wl(e,!1)||cm(e)||Gl(e,!1)||Pm(e,!1)||(jm(e,"Delete"),xl(e))},$m=function(e){Ff(e,!0)||Hm(e,!0)||_d(e,!0)||Wl(e,!0)||cm(e)||Gl(e,!0)||Pm(e,!0)||jm(e,"ForwardDelete")},Wm=function(e,t,n){var r=e.getParam(t,n);if(-1!==r.indexOf("=")){var o=e.getParam(t,"","hash");return o.hasOwnProperty(e.id)?o[e.id]:n}return r},Km=function(e){return e.getParam("iframe_attrs",{})},Xm=function(e){return e.getParam("doctype","<!DOCTYPE html>")},Ym=function(e){return e.getParam("document_base_url","")},Gm=function(e){return Wm(e,"body_id","tinymce")},Jm=function(e){return Wm(e,"body_class","")},Qm=function(e){return e.getParam("content_security_po
 licy","")},Zm=function(e){return e.getParam("br_in_pre",!0)},eg=function(e){if(e.getParam("force_p_newlines",!1))return"p";var t=e.getParam("forced_root_block","p");return!1===t?"":t},tg=function(e){return e.getParam("forced_root_block_attrs",{})},ng=function(e){return e.getParam("br_newline_selector",".mce-toc h2,figcaption,caption")},rg=function(e){return e.getParam("no_newline_selector","")},og=function(e){return e.getParam("keep_styles",!0)},ig=function(e){return e.getParam("end_container_on_empty_block",!1)},ag=function(e){return Gt.explode(e.getParam("font_size_style_values",""))},ug=function(e){return Gt.explode(e.getParam("font_size_classes",""))},sg=function(e){return e.getParam("images_dataimg_filter",q(!0),"function")},cg=function(e){return e.getParam("automatic_upl
 oads",!0,"boolean")},lg=function(e){return e.getParam("images_reuse_filename",!1,"boolean")},fg=function(e){return e.getParam("images_replace_blob_uris",!0,"boolean")},dg=function(e){return e.getParam("images_upload_url","","string")},mg=function(e){return e.getParam("images_upload_base_path","","string")},gg=function(e){return e.getParam("images_upload_credentials",!1,"boolean")},pg=function(e){return e.getParam("images_upload_handler",null,"function")},hg=function(e){return e.getParam("content_css_cors",!1,"boolean")},vg=function(o,t,e){var n=function(e){return t=o,n=e.dom(),r=Er(n,t),A.from(r).filter(function(e){return 0<e.length});var t,n,r};return Ki(or.fromDom(e),function(e){return n(e).isSome()},function(e){return Pr(or.fromDom(t),e)}).bind(n)},bg=function(o){return function(r,e){return A.from(e).map(
 or.fromDom).filter(lr).bind(function(e){return vg(o,r,e.dom()).or((t=o,n=e.dom(),A.from(hi.DOM.getStyle(n,t,!0))));var t,n}).getOr("")}},yg={getFontSize:bg("font-size"),getFontFamily:j(function(e){return e.replace(/[\'\"\\]/g,"").replace(/,\s+/g,",")},bg("font-family")),toPt:function(e,t){return/[0-9.]+px$/.test(e)?(n=72*parseInt(e,10)/96,r=t||0,o=Math.pow(10,r),Math.round(n*o)/o+"pt"):e;var n,r,o}},Cg=function(e){return Zs.firstPositionIn(e.getBody()).map(function(e){var t=e.container();return Bo.isText(t)?t.parentNode:t})},xg=function(o){return A.from(o.selection.getRng()).bind(function(e){var t,n,r=o.getBody();return n=r,(t=e).startContainer===n&&0===t.startOffset?A.none():A.from(o.selection.getStart(!0))})},wg=function(e,t){if(/^[0-9\.]+$/.test(t)){var n=parseInt(t,10);if(1<=n&&n<=7){var r=ag(e),o=ug(e);return o?o[n-1]||t:r[n-1]||t}return t}return t},Ng=function(e,t){return e&&t&&a
 mp;e.startContainer===t.startContainer&&e.startOffset===t.startOffset&&e.endContainer===t.endContainer&&e.endOffset===t.endOffset},Eg=function(e,t,n){return null!==function(e,t,n){for(;e&&e!==t;){if(n(e))return e;e=e.parentNode}return null}(e,t,n)},Sg=function(e,t,n){return Eg(e,t,function(e){return e.nodeName===n})},kg=function(e){return e&&"TABLE"===e.nodeName},Tg=function(e,t,n){for(var r=new oo(t,e.getParent(t.parentNode,e.isBlock)||e.getRoot());t=r[n?"prev":"next"]();)if(Bo.isBr(t))return!0},Ag=function(e,t,n,r,o){var i,a,u,s,c,l,f=e.getRoot(),d=e.schema.getNonEmptyElements();if(u=e.getParent(o.parentNode,e.isBlock)||f,r&&Bo.isBr(o)&&t&&e.isEmpty(u))return A.some(gu(o.parentNode,e.nodeIndex(o)));for(i=new oo(o,u);s=i[r?"prev":"next"]();){if("false"===e.getContentEditableParent(s)||(l=f,va(c=s)&&!1===Eg(c,l,Uu)))return A.none();if(Bo.isText(s)&&
 amp;0<s.nodeValue.length)return!1===Sg(s,f,"A")?A.some(gu(s,r?s.nodeValue.length:0)):A.none();if(e.isBlock(s)||d[s.nodeName.toLowerCase()])return A.none();a=s}return n&&a?A.some(gu(a,0)):A.none()},Rg=function(e,t,n,r){var o,i,a,u,s,c,l,f,d,m,g=e.getRoot(),p=!1;if(o=r[(n?"start":"end")+"Container"],i=r[(n?"start":"end")+"Offset"],l=Bo.isElement(o)&&i===o.childNodes.length,s=e.schema.getNonEmptyElements(),c=n,va(o))return A.none();if(Bo.isElement(o)&&i>o.childNodes.length-1&&(c=!1),Bo.isDocument(o)&&(o=g,i=0),o===g){if(c&&(u=o.childNodes[0<i?i-1:0])){if(va(u))return A.none();if(s[u.nodeName]||kg(u))return A.none()}if(o.hasChildNodes()){if(i=Math.min(!c&&0<i?i-1:i,o.childNodes.length-1),o=o.childNodes[i],i=Bo.isText(o)&&l?o.data.length:0,!t&&o===g.lastChild&&kg(o))return A.none();if(function(e,t){for(;t&&t!==e;){if(Bo.
 isContentEditableFalse(t))return!0;t=t.parentNode}return!1}(g,o)||va(o))return A.none();if(o.hasChildNodes()&&!1===kg(o)){a=new oo(u=o,g);do{if(Bo.isContentEditableFalse(u)||va(u)){p=!1;break}if(Bo.isText(u)&&0<u.nodeValue.length){i=c?0:u.nodeValue.length,o=u,p=!0;break}if(s[u.nodeName.toLowerCase()]&&(!(f=u)||!/^(TD|TH|CAPTION)$/.test(f.nodeName))){i=e.nodeIndex(u),o=u.parentNode,c||i++,p=!0;break}}while(u=c?a.next():a.prev())}}}return t&&(Bo.isText(o)&&0===i&&Ag(e,l,t,!0,o).each(function(e){o=e.container(),i=e.offset(),p=!0}),Bo.isElement(o)&&((u=o.childNodes[i])||(u=o.childNodes[i-1]),!u||!Bo.isBr(u)||(m="A",(d=u).previousSibling&&d.previousSibling.nodeName===m)||Tg(e,u,!1)||Tg(e,u,!0)||Ag(e,l,t,!0,u).each(function(e){o=e.container(),i=e.offset(),p=!0}))),c&&!t&&Bo.isText(o)&&i===o.nodeValue.length&&Ag(e,l,t,!1,o).each(function(e){o=e.container(),i=e.offset(),p=!0}),p?A.so
 me(gu(o,i)):A.none()},_g=function(e,t){var n=t.collapsed,r=t.cloneRange(),o=gu.fromRangeStart(t);return Rg(e,n,!0,r).each(function(e){n&&gu.isAbove(o,e)||r.setStart(e.container(),e.offset())}),n||Rg(e,n,!1,r).each(function(e){r.setEnd(e.container(),e.offset())}),n&&r.collapse(!0),Ng(t,r)?A.none():A.some(r)},Dg=function(e,t,n){var r=e.create("span",{},"&nbsp;");n.parentNode.insertBefore(r,n),t.scrollIntoView(r),e.remove(r)},Bg=function(e,t,n,r){var o=e.createRng();r?(o.setStartBefore(n),o.setEndBefore(n)):(o.setStartAfter(n),o.setEndAfter(n)),t.setRng(o)},Og=function(e,t){var n,r,o=e.selection,i=e.dom,a=o.getRng();_g(i,a).each(function(e){a.setStart(e.startContainer,e.startOffset),a.setEnd(e.endContainer,e.endOffset)});var u=a.startOffset,s=a.startContainer;if(1===s.nodeType&&s.hasChildNodes()){var c=u>s.childNodes.length-1;s=s.childNodes[Math.min(u,s.childNodes.length-1)]||s,u=c&&3===s.nodeType?s.nodeValue.length:0}var l=i.g
 etParent(s,i.isBlock),f=l?i.getParent(l.parentNode,i.isBlock):null,d=f?f.nodeName.toUpperCase():"",m=t&&t.ctrlKey;"LI"!==d||m||(l=f),s&&3===s.nodeType&&u>=s.nodeValue.length&&(function(e,t,n){for(var r,o=new oo(t,n),i=e.getNonEmptyElements();r=o.next();)if(i[r.nodeName.toLowerCase()]||0<r.length)return!0}(e.schema,s,l)||(n=i.create("br"),a.insertNode(n),a.setStartAfter(n),a.setEndAfter(n),r=!0)),n=i.create("br"),Au(i,a,n),Dg(i,o,n),Bg(i,o,n,r),e.undoManager.add()},Pg=function(e,t){var n=or.fromTag("br");Si(or.fromDom(t),n),e.undoManager.add()},Lg=function(e,t){Ig(e.getBody(),t)||ki(or.fromDom(t),or.fromTag("br"));var n=or.fromTag("br");ki(or.fromDom(t),n),Dg(e.dom,e.selection,n.dom()),Bg(e.dom,e.selection,n.dom(),!1),e.undoManager.add()},Ig=function(e,t){return n=vu.after(t),!!Bo.isBr(n.getNode())||Zs.nextPosition(e,vu.after(t)).map(function(e){return Bo.isBr(e.getNode())}).ge
 tOr(!1);var n},Mg=function(e){return e&&"A"===e.nodeName&&"href"in e},Fg=function(e){return e.fold(q(!1),Mg,Mg,q(!1))},zg=function(e,t){t.fold(o,d(Pg,e),d(Lg,e),o)},Ug=function(e,t){var n,r,o,i=(n=e,r=d(yl.isInlineTarget,n),o=vu.fromRangeStart(n.selection.getRng()),gd(r,n.getBody(),o).filter(Fg));i.isSome()?i.each(d(zg,e)):Og(e,t)},Vg=(Jl([{before:["element"]},{on:["element","offset"]},{after:["element"]}]),Jl([{domRange:["rng"]},{relative:["startSitu","finishSitu"]},{exact:["start","soffset","finish","foffset"]}]),Sr("start","soffset","finish","foffset")),Hg=nr.detect().browser,jg=function(e,t){var n=fr(t)?Rc(t).length:Hr(t).length+1;return n<e?n:e<0?0:e},qg=function(e){return Vg(e.start(),jg(e.soffset(),e.start()),e.finish(),jg(e.foffset(),e.finish()))},$g=function(e,t){return Lr(e,t)||Pr(e,t
 )},Wg=function(t){return function(e){return $g(t,e.start())&&$g(t,e.finish())}},Kg=function(e){return!0===e.inline||Hg.isIE()},Xg=function(e){return Vg(or.fromDom(e.startContainer),e.startOffset,or.fromDom(e.endContainer),e.endOffset)},Yg=function(e){var t=e.getSelection();return(t&&0!==t.rangeCount?A.from(t.getRangeAt(0)):A.none()).map(Xg)},Gg=function(e){var t,n=(t=e.dom().ownerDocument.defaultView,or.fromDom(t));return Yg(n.dom()).filter(Wg(e))},Jg=function(e,t){return A.from(t).filter(Wg(e)).map(qg)},Qg=function(e){var t=H.document.createRange();try{return t.setStart(e.start().dom(),e.soffset()),t.setEnd(e.finish().dom(),e.foffset()),A.some(t)}catch(n){return A.none()}},Zg=function(e){return(e.bookmark?e.bookmark:A.none()).bind(d(Jg,or.fromDom(e.getBody()))).bind(Qg)},ep=function(e){var t=Kg(e)?Gg(or.fromDom(e.getBody())):A.none();e.bookmark=t.isSome()?t:e.bookmark},tp=function(t){Zg(t).each(function(e){t.selection.setRng(e)})},np=Zg,rp=function(e){return po(e)||
 ho(e)},op=function(e){return z(W(e.selection.getSelectedBlocks(),or.fromDom),function(e){return!rp(e)&&!Mr(e).map(rp).getOr(!1)})},ip=function(e,t){var n=e.settings,r=e.dom,o=e.selection,i=e.formatter,a=/[a-z%]+$/i.exec(n.indentation)[0],u=parseInt(n.indentation,10),s=e.getParam("indent_use_margin",!1);e.queryCommandState("InsertUnorderedList")||e.queryCommandState("InsertOrderedList")||n.forced_root_block||r.getParent(o.getNode(),r.isBlock)||i.apply("div"),F(op(e),function(e){!function(e,t,n,r,o,i){if("false"!==e.getContentEditable(i)){var a=n?"margin":"padding";if(a="TABLE"===i.nodeName?"margin":a,a+="rtl"===e.getStyle(i,"direction",!0)?"Right":"Left","outdent"===t){var u=Math.max(0,parseInt(i.style[a]||0,10)-r);e.setStyle(i,a,u?u+o:"")}else u=parseInt(i.style[a]||0,10)+r+o,e.setStyle(i,a,u)}}(r,t,s,u,a,e.dom())})},ap=Gt.each
 ,up=Gt.extend,sp=Gt.map,cp=Gt.inArray;function lp(s){var o,i,a,t,c={state:{},exec:{},value:{}},n=s.settings;s.on("PreInit",function(){o=s.dom,i=s.selection,n=s.settings,a=s.formatter});var r=function(e){var t;if(!s.quirks.isHidden()&&!s.removed){if(e=e.toLowerCase(),t=c.state[e])return t(e);try{return s.getDoc().queryCommandState(e)}catch(n){}return!1}},e=function(e,n){n=n||"exec",ap(e,function(t,e){ap(e.toLowerCase().split(","),function(e){c[n][e]=t})})},u=function(e,t,n){e=e.toLowerCase(),c.value[e]=function(){return t.call(n||s)}};up(this,{execCommand:function(t,n,r,e){var o,i,a=!1;if(!s.removed){if(/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint)$/.test(t)||e&&e.skip_focus?tp(s):s.focus(),(e=s.fire("BeforeExecCommand",{command:t,ui:n,value:r})).isDefaultPrevented())return!1;if(i=t.toLowerCase(),o=c.exec[i])return o(i,n,r),s.fire("ExecCommand",{command:t,ui:n,value:r}),!0;if(ap(s.plugins,function(e)
 {if(e.execCommand&&e.execCommand(t,n,r))return s.fire("ExecCommand",{command:t,ui:n,value:r}),!(a=!0)}),a)return a;if(s.theme&&s.theme.execCommand&&s.theme.execCommand(t,n,r))return s.fire("ExecCommand",{command:t,ui:n,value:r}),!0;try{a=s.getDoc().execCommand(t,n,r)}catch(u){}return!!a&&(s.fire("ExecCommand",{command:t,ui:n,value:r}),!0)}},queryCommandState:r,queryCommandValue:function(e){var t;if(!s.quirks.isHidden()&&!s.removed){if(e=e.toLowerCase(),t=c.value[e])return t(e);try{return s.getDoc().queryCommandValue(e)}catch(n){}}},queryCommandSupported:function(e){if(e=e.toLowerCase(),c.exec[e])return!0;try{return s.getDoc().queryCommandSupported(e)}catch(t){}return!1},addCommands:e,addCommand:function(e,o,i){e=e.toLowerCase(),c.exec[e]=function(e,t,n,r){return o.call(i||s,t,n,r)}},addQueryStateHandler:function(e,t,n){e=e.toLowerCase(),c.state[e]=function(){return t.call(n||s)}},addQueryValueHandler:u,hasCustomCo
 mmand:function(e){return e=e.toLowerCase(),!!c.exec[e]}});var l=function(e,t,n){return t===undefined&&(t=!1),n===undefined&&(n=null),s.getDoc().execCommand(e,t,n)},f=function(e){return a.match(e)},d=function(e,t){a.toggle(e,t?{value:t}:undefined),s.nodeChanged()},m=function(e){t=i.getBookmark(e)},g=function(){i.moveToBookmark(t)};e({"mceResetDesignMode,mceBeginUndoLevel":function(){},"mceEndUndoLevel,mceAddUndoLevel":function(){s.undoManager.add()},"Cut,Copy,Paste":function(e){var t,n=s.getDoc();try{l(e)}catch(o){t=!0}if("paste"!==e||n.queryCommandEnabled(e)||(t=!0),t||!n.queryCommandSupported(e)){var r=s.translate("Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X/C/V keyboard shortcuts instead.");me.mac&&(r=r.replace(/Ctrl\+/g,"\u2318+")),s.notificationManager.open({text:r,type:"error"})}},unlink:function(){if(i.isCollapsed()){var e=s.dom.getParent(s.selec
 tion.getStart(),"a");e&&s.dom.remove(e,!0)}else a.remove("link")},"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull,JustifyNone":function(e){var t=e.substring(7);"full"===t&&(t="justify"),ap("left,center,right,justify".split(","),function(e){t!==e&&a.remove("align"+e)}),"none"!==t&&d("align"+t)},"InsertUnorderedList,InsertOrderedList":function(e){var t,n;l(e),(t=o.getParent(i.getNode(),"ol,ul"))&&(n=t.parentNode,/^(H[1-6]|P|ADDRESS|PRE)$/.test(n.nodeName)&&(m(),o.split(n,t),g()))},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(e){d(e)},"ForeColor,HiliteColor":function(e,t,n){d(e,n)},FontName:function(e,t,n){var r,o;o=n,(r=s).formatter.toggle("fontname",{value:wg(r,o)}),r.nodeChanged()},FontSize:function(e,t,n){var r,o;o=n,(r=s).formatter.toggle("fontsize"
 ,{value:wg(r,o)}),r.nodeChanged()},RemoveFormat:function(e){a.remove(e)},mceBlockQuote:function(){d("blockquote")},FormatBlock:function(e,t,n){return d(n||"p")},mceCleanup:function(){var e=i.getBookmark();s.setContent(s.getContent()),i.moveToBookmark(e)},mceRemoveNode:function(e,t,n){var r=n||i.getNode();r!==s.getBody()&&(m(),s.dom.remove(r,!0),g())},mceSelectNodeDepth:function(e,t,n){var r=0;o.getParent(i.getNode(),function(e){if(1===e.nodeType&&r++===n)return i.select(e),!1},s.getBody())},mceSelectNode:function(e,t,n){i.select(n)},mceInsertContent:function(e,t,n){ol(s,n)},mceInsertRawHTML:function(e,t,n){i.setContent("tiny_mce_marker");var r=s.getContent();s.setContent(r.replace(/tiny_mce_marker/g,function(){return n}))},mceToggleFormat:function(e,t,n){d(n)},mceSetContent:function(e,t,n){s.setContent(n)},"Indent,Outdent":function(e){ip(s,e)},mceRepaint:function(){},InsertHorizontalRule:function(){s.execCommand("mceInsert
 Content",!1,"<hr />")},mceToggleVisualAid:function(){s.hasVisual=!s.hasVisual,s.addVisual()},mceReplaceContent:function(e,t,n){s.execCommand("mceInsertContent",!1,n.replace(/\{\$selection\}/g,i.getContent({format:"text"})))},mceInsertLink:function(e,t,n){var r;"string"==typeof n&&(n={href:n}),r=o.getParent(i.getNode(),"a"),n.href=n.href.replace(" ","%20"),r&&n.href||a.remove("link"),n.href&&a.apply("link",n,r)},selectAll:function(){var e=o.getParent(i.getStart(),Bo.isContentEditableTrue);if(e){var t=o.createRng();t.selectNodeContents(e),i.setRng(t)}},"delete":function(){qm(s)},forwardDelete:function(){$m(s)},mceNewDocument:function(){s.setContent("")},InsertLineBreak:function(e,t,n){return Ug(s,n),!0}});var p=function(n){return function(){var e=i.isCollapsed()?[o.getParent(i.getNode(),o.isBlock)]:i.getSelectedBlocks(),t=sp(e,function(e){ret
 urn!!a.matchNode(e,n)});return-1!==cp(t,!0)}};e({JustifyLeft:p("alignleft"),JustifyCenter:p("aligncenter"),JustifyRight:p("alignright"),JustifyFull:p("alignjustify"),"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(e){return f(e)},mceBlockQuote:function(){return f("blockquote")},Outdent:function(){var e;if(n.inline_styles){if((e=o.getParent(i.getStart(),o.isBlock))&&0<parseInt(e.style.paddingLeft,10))return!0;if((e=o.getParent(i.getEnd(),o.isBlock))&&0<parseInt(e.style.paddingLeft,10))return!0}return r("InsertUnorderedList")||r("InsertOrderedList")||!n.inline_styles&&!!o.getParent(i.getNode(),"BLOCKQUOTE")},"InsertUnorderedList,InsertOrderedList":function(e){var t=o.getParent(i.getNode(),"ul,ol");return t&&("insertunorderedlist"===e&&"UL"===t.tagName||"insertorderedlist"===e&&
 amp;"OL"===t.tagName)}},"state"),e({Undo:function(){s.undoManager.undo()},Redo:function(){s.undoManager.redo()}}),u("FontName",function(){return xg(t=s).fold(function(){return Cg(t).map(function(e){return yg.getFontFamily(t.getBody(),e)}).getOr("")},function(e){return yg.getFontFamily(t.getBody(),e)});var t},this),u("FontSize",function(){return xg(t=s).fold(function(){return Cg(t).map(function(e){return yg.getFontSize(t.getBody(),e)}).getOr("")},function(e){return yg.getFontSize(t.getBody(),e)});var t},this)}var fp=Gt.makeMap("focus blur focusin focusout click dblclick mousedown mouseup mousemove mouseover beforepaste paste cut copy selectionchange mouseout mouseenter mouseleave wheel keydown keypress keyup input contextmenu dragstart dragend dragover draggesture dragdrop drop drag submit compositionstart compositionend compositionupdate touchstart touchmove touchend"," "),dp=function(a){var u,s,c=this,l
 ={},f=function(){return!1},d=function(){return!0};u=(a=a||{}).scope||c,s=a.toggleEvent||f;var r=function(e,t,n,r){var o,i,a;if(!1===t&&(t=f),t)for(t={func:t},r&&Gt.extend(t,r),a=(i=e.toLowerCase().split(" ")).length;a--;)e=i[a],(o=l[e])||(o=l[e]=[],s(e,!0)),n?o.unshift(t):o.push(t);return c},m=function(e,t){var n,r,o,i,a;if(e)for(n=(i=e.toLowerCase().split(" ")).length;n--;){if(e=i[n],r=l[e],!e){for(o in l)s(o,!1),delete l[o];return c}if(r){if(t)for(a=r.length;a--;)r[a].func===t&&(r=r.slice(0,a).concat(r.slice(a+1)),l[e]=r);else r.length=0;r.length||(s(e,!1),delete l[e])}}else{for(e in l)s(e,!1);l={}}return c};c.fire=function(e,t){var n,r,o,i;if(e=e.toLowerCase(),(t=t||{}).type=e,t.target||(t.target=u),t.preventDefault||(t.preventDefault=function(){t.isDefaultPrevented=d},t.stopPropagation=function(){t.isPropagationStopped=d},t.stopImmediatePropagation=function(){t.isImmediatePropagationStopped=d},t.isDefaultPrevented=f,t.isPropagationStop
 ped=f,t.isImmediatePropagationStopped=f),a.beforeFire&&a.beforeFire(t),n=l[e])for(r=0,o=n.length;r<o;r++){if((i=n[r]).once&&m(e,i.func),t.isImmediatePropagationStopped())return t.stopPropagation(),t;if(!1===i.func.call(u,t))return t.preventDefault(),t}return t},c.on=r,c.off=m,c.once=function(e,t,n){return r(e,t,n,{once:!0})},c.has=function(e){return e=e.toLowerCase(),!(!l[e]||0===l[e].length)}};dp.isNative=function(e){return!!fp[e.toLowerCase()]};var mp,gp=function(n){return n._eventDispatcher||(n._eventDispatcher=new dp({scope:n,toggleEvent:function(e,t){dp.isNative(e)&&n.toggleNativeEvent&&n.toggleNativeEvent(e,t)}})),n._eventDispatcher},pp={fire:function(e,t,n){if(this.removed&&"remove"!==e&&"detach"!==e)return t;if(t=gp(this).fire(e,t,n),!1!==n&&this.parent)for(var r=this.parent();r&&!t.isPropagationStopped();)r.fire(e,t,!1),r=r.parent();return t},on:function(e,t,n){return gp(this).on(e,t,n)},
 off:function(e,t){return gp(this).off(e,t)},once:function(e,t){return gp(this).once(e,t)},hasEventListeners:function(e){return gp(this).has(e)}},hp=function(e,t){return e.fire("PreProcess",t)},vp=function(e,t){return e.fire("PostProcess",t)},bp=function(e){return e.fire("remove")},yp=function(e){return e.fire("detach")},Cp=function(e,t){return e.fire("SwitchMode",{mode:t})},xp=function(e,t,n,r){e.fire("ObjectResizeStart",{target:t,width:n,height:r})},wp=function(e,t,n,r){e.fire("ObjectResized",{target:t,width:n,height:r})},Np=function(e,t,n){try{e.getDoc().execCommand(t,!1,n)}catch(r){}},Ep=function(e,t,n){var r,o;Vi(e,t)&&!1===n?(o=t,Ii(r=e)?r.dom().classList.remove(o):Fi(r,o),Ui(r)):n&&zi(e,t)},Sp=function(e,t){Ep(or.fromDom(e.getBody()),"mce-content-readonly",t),t?(e.selection.controlSelection.hideResizeRect(),e.readonly=!0,e.getBody().contentEditable="false"):(e.readonly=!1,
 e.getBody().contentEditable="true",Np(e,"StyleWithCSS",!1),Np(e,"enableInlineTableEditing",!1),Np(e,"enableObjectResizing",!1),e.focus(),e.nodeChanged())},kp=function(e){return e.readonly?"readonly":"design"},Tp=hi.DOM,Ap=function(e,t){return"selectionchange"===t?e.getDoc():!e.inline&&/^mouse|touch|click|contextmenu|drop|dragover|dragend/.test(t)?e.getDoc().documentElement:e.settings.event_root?(e.eventRoot||(e.eventRoot=Tp.select(e.settings.event_root)[0]),e.eventRoot):e.getBody()},Rp=function(e,t,n){var r;(r=e).hidden||r.readonly?!0===e.readonly&&n.preventDefault():e.fire(t,n)},_p=function(i,a){var e,t;if(i.delegates||(i.delegates={}),!i.delegates[a]&&!i.removed)if(e=Ap(i,a),i.settings.event_root){if(mp||(mp={},i.editorManager.on("removeEditor",function(){var e;if(!i.editorManager.activeEditor&&mp){for(e in mp)i.dom.unbind(Ap(i,e));mp=null}})),mp[a])return;t=function(e){
 for(var t=e.target,n=i.editorManager.get(),r=n.length;r--;){var o=n[r].getBody();(o===t||Tp.isChildOf(t,o))&&Rp(n[r],a,e)}},mp[a]=t,Tp.bind(e,a,t)}else t=function(e){Rp(i,a,e)},Tp.bind(e,a,t),i.delegates[a]=t},Dp={bindPendingEventDelegates:function(){var t=this;Gt.each(t._pendingNativeEvents,function(e){_p(t,e)})},toggleNativeEvent:function(e,t){var n=this;"focus"!==e&&"blur"!==e&&(t?n.initialized?_p(n,e):n._pendingNativeEvents?n._pendingNativeEvents.push(e):n._pendingNativeEvents=[e]:n.initialized&&(n.dom.unbind(Ap(n,e),e,n.delegates[e]),delete n.delegates[e]))},unbindAllNativeEvents:function(){var e,t=this,n=t.getBody(),r=t.dom;if(t.delegates){for(e in t.delegates)t.dom.unbind(Ap(t,e),e,t.delegates[e]);delete t.delegates}!t.inline&&n&&r&&(n.onload=null,r.unbind(t.getWin()),r.unbind(t.getDoc())),r&&(r.unbind(n),r.unbind(t.getContainer()))}},Bp=Dp=Gt.extend({},pp,Dp),Op=Gt.each,Pp=Gt.explode,Lp={f1:1
 12,f2:113,f3:114,f4:115,f5:116,f6:117,f7:118,f8:119,f9:120,f10:121,f11:122,f12:123},Ip=Gt.makeMap("alt,ctrl,shift,meta,access");function Mp(i){var a={},r=[],u=function(e){var t,n,r={};for(n in Op(Pp(e,"+"),function(e){e in Ip?r[e]=!0:/^[0-9]{2,}$/.test(e)?r.keyCode=parseInt(e,10):(r.charCode=e.charCodeAt(0),r.keyCode=Lp[e]||e.toUpperCase().charCodeAt(0))}),t=[r.keyCode],Ip)r[n]?t.push(n):r[n]=!1;return r.id=t.join(","),r.access&&(r.alt=!0,me.mac?r.ctrl=!0:r.shift=!0),r.meta&&(me.mac?r.meta=!0:(r.ctrl=!0,r.meta=!1)),r},s=function(e,t,n,r){var o;return(o=Gt.map(Pp(e,">"),u))[o.length-1]=Gt.extend(o[o.length-1],{func:n,scope:r||i}),Gt.extend(o[0],{desc:i.translate(t),subpatterns:o.slice(1)})},o=function(e,t){return!!t&&t.ctrl===e.ctrlKey&&t.meta===e.metaKey&&t.alt===e.altKey&&t.shift===e.shiftKey&&!!(e.keyCode===t.keyCode||e.charCode&&e.charCode===t.charCode)&&(e.preventDe
 fault(),!0)},c=function(e){return e.func?e.func.call(e.scope):null};i.on("keyup keypress keydown",function(t){var e,n;((n=t).altKey||n.ctrlKey||n.metaKey||"keydown"===(e=t).type&&112<=e.keyCode&&e.keyCode<=123)&&!t.isDefaultPrevented()&&(Op(a,function(e){if(o(t,e))return r=e.subpatterns.slice(0),"keydown"===t.type&&c(e),!0}),o(t,r[0])&&(1===r.length&&"keydown"===t.type&&c(r[0]),r.shift()))}),this.add=function(e,n,r,o){var t;return"string"==typeof(t=r)?r=function(){i.execCommand(t,!1,null)}:Gt.isArray(t)&&(r=function(){i.execCommand(t[0],t[1],t[2])}),Op(Pp(Gt.trim(e.toLowerCase())),function(e){var t=s(e,n,r,o);a[t.id]=t}),!0},this.remove=function(e){var t=s(e);return!!a[t.id]&&(delete a[t.id],!0)}}var Fp=function(e){var t=Ir(e).dom();return e.dom()===t.activeElement},zp=function(t){return(e=Ir(t),n=e!==undefined?e.dom():H.document,A.from(n.activeElem
 ent).map(or.fromDom)).filter(function(e){return t.dom().contains(e.dom())});var e,n},Up=function(t,e){return(n=e,n.collapsed?A.from(ja(n.startContainer,n.startOffset)).map(or.fromDom):A.none()).bind(function(e){return bo(e)?A.some(e):!1===Lr(t,e)?A.some(t):A.none()});var n},Vp=function(t,e){Up(or.fromDom(t.getBody()),e).bind(function(e){return Zs.firstPositionIn(e.dom())}).fold(function(){t.selection.normalize()},function(e){return t.selection.setRng(e.toRange())})},Hp=function(e){if(e.setActive)try{e.setActive()}catch(t){e.focus()}else e.focus()},jp=function(e){var t,n=e.getBody();return n&&(t=or.fromDom(n),Fp(t)||zp(t).isSome())},qp=function(e){return e.inline?jp(e):(t=e).iframeElement&&Fp(or.fromDom(t.iframeElement));var t},$p=function(e){return e.editorManager.setActive(e)},Wp=function(e,t){e.removed||(t?$p(e):function(t){var e=t.selection,n=t.settings.content_editable,r=t.getBody(),o=e.getRng();t.quirks.refreshContentEditable();var i,a,u=(i=t,a=e.getNode(),i.dom
 .getParent(a,function(e){return"true"===i.dom.getContentEditable(e)}));if(t.$.contains(r,u))return Hp(u),Vp(t,o),$p(t);t.bookmark!==undefined&&!1===qp(t)&&np(t).each(function(e){t.selection.setRng(e),o=e}),n||(me.opera||Hp(r),t.getWin().focus()),(me.gecko||n)&&(Hp(r),Vp(t,o)),$p(t)}(e))},Kp=qp,Xp=function(e,t){return t.dom()[e]},Yp=function(e,t){return parseInt(Nr(t,e),10)},Gp=d(Xp,"clientWidth"),Jp=d(Xp,"clientHeight"),Qp=d(Yp,"margin-top"),Zp=d(Yp,"margin-left"),eh=function(e,t,n){var r,o,i,a,u,s,c,l,f,d,m,g=or.fromDom(e.getBody()),p=e.inline?g:(r=g,or.fromDom(r.dom().ownerDocument.documentElement)),h=(o=e.inline,a=t,u=n,s=(i=p).dom().getBoundingClientRect(),{x:a-(o?s.left+i.dom().clientLeft+Zp(i):0),y:u-(o?s.top+i.dom().clientTop+Qp(i):0)});return l=h.x,f=h.y,d=Gp(c=p),m=Jp(c),0<=l&&0<=f&&l<=d&&f<=m},th=function(e){var t,n=e.inline?e.getBody():e.getContentAreaContainer();
 return(t=n,A.from(t).map(or.fromDom)).map(function(e){return Lr(Ir(e),e)}).getOr(!1)};function nh(n){var t,o=[],i=function(){var e,t=n.theme;return t&&t.getNotificationManagerImpl?t.getNotificationManagerImpl():{open:e=function(){throw new Error("Theme did not provide a NotificationManager implementation.")},close:e,reposition:e,getArgs:e}},a=function(){0<o.length&&i().reposition(o)},u=function(t){X(o,function(e){return e===t}).each(function(e){o.splice(e,1)})},r=function(r){if(!n.removed&&th(n))return V(o,function(e){return t=i().getArgs(e),n=r,!(t.type!==n.type||t.text!==n.text||t.progressBar||t.timeout||n.progressBar||n.timeout);var t,n}).getOrThunk(function(){n.editorManager.setActive(n);var e,t=i().open(r,function(){u(t),a()});return e=t,o.push(e),a(),t})};return(t=n).on("SkinLoaded",function(){var e=t.settings.service_message;e&&r({text:e,type:"warning",timeout:0,icon:""})}),t.on("ResizeEditor Resi
 zeWindow",function(){be.requestAnimationFrame(a)}),t.on("remove",function(){F(o.slice(),function(e){i().close(e)})}),{open:r,close:function(){A.from(o[0]).each(function(e){i().close(e),u(e),a()})},getNotifications:function(){return o}}}function rh(r){var o=[],i=function(){var e,t=r.theme;return t&&t.getWindowManagerImpl?t.getWindowManagerImpl():{open:e=function(){throw new Error("Theme did not provide a WindowManager implementation.")},alert:e,confirm:e,close:e,getParams:e,setParams:e}},a=function(e,t){return function(){return t?t.apply(e,arguments):undefined}},u=function(e){var t;o.push(e),t=e,r.fire("OpenWindow",{win:t})},s=function(n){X(o,function(e){return e===n}).each(function(e){var t;o.splice(e,1),t=n,r.fire("CloseWindow",{win:t}),0===o.length&&r.focus()})},e=function(){return A.from(o[o.length-1])};return r.on("remove",function(){F(o.slice(0),function(e){i().close(e)})}),{windows:o,open:function(e,t){r.ed
 itorManager.setActive(r),ep(r);var n=i().open(e,t,s);return u(n),n},alert:function(e,t,n){var r=i().alert(e,a(n||this,t),s);u(r)},confirm:function(e,t,n){var r=i().confirm(e,a(n||this,t),s);u(r)},close:function(){e().each(function(e){i().close(e),s(e)})},getParams:function(){return e().map(i().getParams).getOr(null)},setParams:function(t){e().each(function(e){i().setParams(e,t)})},getWindows:function(){return o}}}var oh={},ih="en",ah={setCode:function(e){e&&(ih=e,this.rtl=!!this.data[e]&&"rtl"===this.data[e]._dir)},getCode:function(){return ih},rtl:!1,add:function(e,t){var n=oh[e];for(var r in n||(oh[e]=n={}),t)n[r]=t[r];this.setCode(e)},translate:function(e){var t=oh[ih]||{},n=function(e){return Gt.is(e,"function")?Object.prototype.toString.call(e):r(e)?"":""+e},r=function(e){return""===e||null===e||Gt.is(e,"undefined")},o=function(e){return e=n(e),Gt.hasOwn(t,e)?n(t[e]):e};if(r(e))return"&qu
 ot;;if(Gt.is(e,"object")&&Gt.hasOwn(e,"raw"))return n(e.raw);if(Gt.is(e,"array")){var i=e.slice(1);e=o(e[0]).replace(/\{([0-9]+)\}/g,function(e,t){return Gt.hasOwn(i,t)?n(i[t]):e})}return o(e).replace(/{context:\w+}$/,"")},data:oh},uh=Ei.PluginManager,sh=function(e,t){var n=function(e,t){for(var n in uh.urls)if(uh.urls[n]+"/plugin"+t+".js"===e)return n;return null}(t,e.suffix);return n?ah.translate(["Failed to load plugin: {0} from url {1}",n,t]):ah.translate(["Failed to load plugin url: {0}",t])},ch=function(e,t){e.notificationManager.open({type:"error",text:t})},lh=function(e,t){e._skinLoaded?ch(e,t):e.on("SkinLoaded",function(){ch(e,t)})},fh=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var r=H.window.console;r&&(r.error?r.error.apply(r,arguments):r.log.apply(r,arguments))},dh={pluginLoadError:function(e,t){lh(e,sh(e,t))},pluginInitError
 :function(e,t,n){var r=ah.translate(["Failed to initialize plugin: {0}",t]);fh(r,n),lh(e,r)},uploadError:function(e,t){lh(e,ah.translate(["Failed to upload image: {0}",t]))},displayError:lh,initError:fh},mh=Ei.PluginManager,gh=Ei.ThemeManager;function ph(){return new(ae.getOrDie("XMLHttpRequest"))}function hh(u,s){var r={},n=function(e,r,o,t){var i,n;(i=ph()).open("POST",s.url),i.withCredentials=s.credentials,i.upload.onprogress=function(e){t(e.loaded/e.total*100)},i.onerror=function(){o("Image upload failed due to a XHR Transport error. Code: "+i.status)},i.onload=function(){var e,t,n;i.status<200||300<=i.status?o("HTTP Error: "+i.status):(e=JSON.parse(i.responseText))&&"string"==typeof e.location?r((t=s.basePath,n=e.location,t?t.replace(/\/$/,"")+"/"+n.replace(/^\//,""):n)):o("Invalid JSON: "+i.responseText)},(n=new H.FormData).append("file",e.blob(
 ),e.filename()),i.send(n)},c=function(e,t){return{url:t,blobInfo:e,status:!0}},l=function(e,t){return{url:"",blobInfo:e,status:!1,error:t}},f=function(e,t){Gt.each(r[e],function(e){e(t)}),delete r[e]},o=function(e,n){return e=Gt.grep(e,function(e){return!u.isUploaded(e.blobUri())}),ge.all(Gt.map(e,function(e){return u.isPending(e.blobUri())?(t=e.blobUri(),new ge(function(e){r[t]=r[t]||[],r[t].push(e)})):(o=e,i=s.handler,a=n,u.markPending(o.blobUri()),new ge(function(t){var n;try{var r=function(){n&&n.close()};i(o,function(e){r(),u.markUploaded(o.blobUri(),e),f(o.blobUri(),c(o,e)),t(c(o,e))},function(e){r(),u.removeFailed(o.blobUri()),f(o.blobUri(),l(o,e)),t(l(o,e))},function(e){e<0||100<e||(n||(n=a()),n.progressBar.value(e))})}catch(e){t(l(o,e.message))}}));var o,i,a,t}))};return!1===P(s.handler)&&(s.handler=n),{upload:function(e,t){return s.url||s.handler!==n?o(e,t):new ge(function(e){e([])})}}}var vh=function(e){return ae.getOrDie("atob")(
 e)},bh=function(e){var t,n,r=decodeURIComponent(e).split(",");return(n=/data:([^;]+)/.exec(r[0]))&&(t=n[1]),{type:t,data:r[1]}},yh=function(a){return new ge(function(e){var t,n,r,o,i=bh(a);try{t=vh(i.data)}catch(jN){return void e(new H.Blob([]))}for(o=t.length,n=new(ae.getOrDie("Uint8Array"))(o),r=0;r<n.length;r++)n[r]=t.charCodeAt(r);e(new H.Blob([n],{type:i.type}))})},Ch=function(e){return 0===e.indexOf("blob:")?(i=e,new ge(function(e,t){var n=function(){t("Cannot convert "+i+" to Blob. Resource might not exist or is inaccessible.")};try{var r=ph();r.open("GET",i,!0),r.responseType="blob",r.onload=function(){200===this.status?e(this.response):n()},r.onerror=n,r.send()}catch(o){n()}})):0===e.indexOf("data:")?yh(e):null;var i},xh=function(n){return new ge(function(e){var t=new(ae.getOrDie("FileReader"));t.onloadend=function(){e(t.result)},t.readAsDataURL(n)})},wh=bh,Nh=0,Eh=function(
 e){return(e||"blobid")+Nh++},Sh=function(n,r,o,t){var i,a;0!==r.src.indexOf("blob:")?(i=wh(r.src).data,(a=n.findFirst(function(e){return e.base64()===i}))?o({image:r,blobInfo:a}):Ch(r.src).then(function(e){a=n.create(Eh(),e,i),n.add(a),o({image:r,blobInfo:a})},function(e){t(e)})):(a=n.getByUri(r.src))?o({image:r,blobInfo:a}):Ch(r.src).then(function(t){xh(t).then(function(e){i=wh(e).data,a=n.create(Eh(),t,i),n.add(a),o({image:r,blobInfo:a})})},function(e){t(e)})},kh=function(e){return e?re(e.getElementsByTagName("img")):[]},Th=0,Ah={uuid:function(e){return e+Th+++(t=function(){return Math.round(4294967295*Math.random()).toString(36)},"s"+(new Date).getTime().toString(36)+t()+t()+t());var t}};function Rh(u){var n,o,t,e,i,r,a,s,c,l=(n=[],o=function(e){var t,n,r;if(!e.blob||!e.base64)throw new Error("blob and base64 representations of the image are required for BlobInfo to be created");return t=e.id||Ah.uuid("blobid"),n=e.name|
 |t,{id:q(t),name:q(n),filename:q(n+"."+(r=e.blob.type,{"image/jpeg":"jpg","image/jpg":"jpg","image/gif":"gif","image/png":"png"}[r.toLowerCase()]||"dat")),blob:q(e.blob),base64:q(e.base64),blobUri:q(e.blobUri||se.createObjectURL(e.blob)),uri:q(e.uri)}},{create:function(e,t,n,r){if(R(e))return o({id:e,name:r,blob:t,base64:n});if(_(e))return o(e);throw new Error("Unknown input type")},add:function(e){t(e.id())||n.push(e)},get:t=function(t){return e(function(e){return e.id()===t})},getByUri:function(t){return e(function(e){return e.blobUri()===t})},findFirst:e=function(e){return z(n,e)[0]},removeByUri:function(t){n=z(n,function(e){return e.blobUri()!==t||(se.revokeObjectURL(e.blobUri()),!1)})},destroy:function(){F(n,function(e){se.revokeObjectURL(e.blobUri())}),n=[]}}),f=(a={},s=function(e,t){return{status:e,resultUri:t}},{hasBlobUri:c=function(e){return e in a},getResultUri:fu
 nction(e){var t=a[e];return t?t.resultUri:null},isPending:function(e){return!!c(e)&&1===a[e].status},isUploaded:function(e){return!!c(e)&&2===a[e].status},markPending:function(e){a[e]=s(1,null)},markUploaded:function(e,t){a[e]=s(2,t)},removeFailed:function(e){delete a[e]},destroy:function(){a={}}}),d=[],m=function(t){return function(e){return u.selection?t(e):[]}},g=function(e,t,n){for(var r=0;-1!==(r=e.indexOf(t,r))&&(e=e.substring(0,r)+n+e.substr(r+t.length),r+=n.length-t.length+1),-1!==r;);return e},p=function(e,t,n){return e=g(e,'src="'+t+'"','src="'+n+'"'),e=g(e,'data-mce-src="'+t+'"','data-mce-src="'+n+'"')},h=function(t,n){F(u.undoManager.data,function(e){"fragmented"===e.type?e.fragments=W(e.fragments,function(e){return p(e,t,n)}):e.content=p(e.content,t,n)})},v=function(){return u.notificationManager.open({text:u.translate("Image uploading..."),type:"info",timeout:-1,progressBar:!0
 })},b=function(e,t){l.removeByUri(e.src),h(e.src,t),u.$(e).attr({src:lg(u)?t+"?"+(new Date).getTime():t,"data-mce-src":u.convertURL(t,"src")})},y=function(n){return i||(i=hh(f,{url:dg(u),basePath:mg(u),credentials:gg(u),handler:pg(u)})),w().then(m(function(r){var e;return e=W(r,function(e){return e.blobInfo}),i.upload(e,v).then(m(function(e){var t=W(e,function(e,t){var n=r[t].image;return e.status&&fg(u)?b(n,e.url):e.error&&dh.uploadError(u,e.error),{element:n,status:e.status}});return n&&n(t),t}))}))},C=function(e){if(cg(u))return y(e)},x=function(t){return!1!==Q(d,function(e){return e(t)})&&(0!==t.getAttribute("src").indexOf("data:")||sg(u)(t))},w=function(){var o,i,a;return r||(o=f,i=l,a={},r={findAll:function(e,n){var t;n||(n=q(!0)),t=z(kh(e),function(e){var t=e.src;return!!me.fileApi&&!e.hasAttribute("data-mce-bogus")&&!e.hasAttribute("data-mce-placeholder")&amp
 ;&!(!t||t===me.transparentSrc)&&(0===t.indexOf("blob:")?!o.isUploaded(t)&&n(e):0===t.indexOf("data:")&&n(e))});var r=W(t,function(n){if(a[n.src])return new ge(function(t){a[n.src].then(function(e){if("string"==typeof e)return e;t({image:n,blobInfo:e.blobInfo})})});var e=new ge(function(e,t){Sh(i,n,e,t)}).then(function(e){return delete a[e.image.src],e})["catch"](function(e){return delete a[n.src],e});return a[n.src]=e});return ge.all(r)}}),r.findAll(u.getBody(),x).then(m(function(e){return e=z(e,function(e){return"string"!=typeof e||(dh.displayError(u,e),!1)}),F(e,function(e){h(e.image.src,e.blobInfo.blobUri()),e.image.src=e.blobInfo.blobUri(),e.image.removeAttribute("data-mce-src")}),e}))},N=function(e){return e.replace(/src="(blob:[^"]+)"/g,function(e,n){var t=f.getResultUri(n);if(t)return'src="'+t+'"';var r=l.getByUri(n);return r||(r=U(u.editorManager.get(),function(e,
 t){return e||t.editorUpload&&t.editorUpload.blobCache.getByUri(n)},null)),r?'src="data:'+r.blob().type+";base64,"+r.base64()+'"':e})};return u.on("setContent",function(){cg(u)?C():w()}),u.on("RawSaveContent",function(e){e.content=N(e.content)}),u.on("getContent",function(e){e.source_view||"raw"===e.format||(e.content=N(e.content))}),u.on("PostRender",function(){u.parser.addNodeFilter("img",function(e){F(e,function(e){var t=e.attr("src");if(!l.getByUri(t)){var n=f.getResultUri(t);n&&e.attr("src",n)}})})}),{blobCache:l,addFilter:function(e){d.push(e)},uploadImages:y,uploadImagesAuto:C,scanForImages:w,destroy:function(){l.destroy(),f.destroy(),r=i=null}}}var _h=function(e,t){return e.hasOwnProperty(t.nodeName)},Dh=function(t,e,n){return r=Il(or.fromDom(n),or.fromDom(e)),X(r,function(e){return _h(t,e.dom())}).isSome();var r},Bh=function(e,t){if(Bo.isText(t)){if(0===t.nodeV
 alue.length)return!0;if(/^\s+$/.test(t.nodeValue)&&(!t.nextSibling||_h(e,t.nextSibling)))return!0}return!1},Oh=function(e){var t,n,r,o,i,a,u,s,c,l,f,d=e.settings,m=e.dom,g=e.selection,p=e.schema,h=p.getBlockElements(),v=g.getStart(),b=e.getBody();if(f=d.forced_root_block,v&&Bo.isElement(v)&&f&&(l=b.nodeName.toLowerCase(),p.isValidChild(l,f.toLowerCase())&&!Dh(h,b,v))){for(n=(t=g.getRng()).startContainer,r=t.startOffset,o=t.endContainer,i=t.endOffset,c=Kp(e),v=b.firstChild;v;)if(y=h,C=v,Bo.isText(C)||Bo.isElement(C)&&!_h(y,C)&&!cc(C)){if(Bh(h,v)){v=(u=v).nextSibling,m.remove(u);continue}a||(a=m.create(f,e.settings.forced_root_block_attrs),v.parentNode.insertBefore(a,v),s=!0),v=(u=v).nextSibling,a.appendChild(u)}else a=null,v=v.nextSibling;var y,C;s&&c&&(t.setStart(n,r),t.setEnd(o,i),g.setRng(t),e.nodeChanged())}},Ph=function(e){e.settings.forced_root_block&&e.on("NodeChange",d(Oh,e))},Lh=functio
 n(t){return qr(t).fold(q([t]),function(e){return[t].concat(Lh(e))})},Ih=function(t){return $r(t).fold(q([t]),function(e){return"br"===sr(e)?Fr(e).map(function(e){return[t].concat(Ih(e))}).getOr([]):[t].concat(Ih(e))})},Mh=function(o,e){return Wa([(i=e,a=i.startContainer,u=i.startOffset,Bo.isText(a)?0===u?A.some(or.fromDom(a)):A.none():A.from(a.childNodes[u]).map(or.fromDom)),(t=e,n=t.endContainer,r=t.endOffset,Bo.isText(n)?r===n.data.length?A.some(or.fromDom(n)):A.none():A.from(n.childNodes[r-1]).map(or.fromDom))],function(e,t){var n=V(Lh(o),d(Pr,e)),r=V(Ih(o),d(Pr,t));return n.isSome()&&r.isSome()}).getOr(!1);var t,n,r,i,a,u},Fh=function(e,t,n,r){var o=n,i=new oo(n,o),a=e.schema.getNonEmptyElements();do{if(3===n.nodeType&&0!==Gt.trim(n.nodeValue).length)return void(r?t.setStart(n,0):t.setEnd(n,n.nodeValue.length));if(a[n.nodeName]&&!/^(TD|TH)$/.test(n.nodeName))return void(r?t.setStartBefore(n):"BR"===n.nodeName?t.setEndBefore(n):t.setEnd
 After(n));if(me.ie&&me.ie<11&&e.isBlock(n)&&e.isEmpty(n))return void(r?t.setStart(n,0):t.setEnd(n,0))}while(n=r?i.next():i.prev());"BODY"===o.nodeName&&(r?t.setStart(o,0):t.setEnd(o,o.childNodes.length))},zh=function(e){var t=e.selection.getSel();return t&&0<t.rangeCount};function Uh(i){var r,o=[];"onselectionchange"in i.getDoc()||i.on("NodeChange Click MouseUp KeyUp Focus",function(e){var t,n;n={startContainer:(t=i.selection.getRng()).startContainer,startOffset:t.startOffset,endContainer:t.endContainer,endOffset:t.endOffset},"nodechange"!==e.type&&Ng(n,r)||i.fire("SelectionChange"),r=n}),i.on("contextmenu",function(){i.fire("SelectionChange")}),i.on("SelectionChange",function(){var e=i.selection.getStart(!0);!e||!me.range&&i.selection.isCollapsed()||zh(i)&&!function(e){var t,n;if((n=i.$(e).parentsUntil(i.getBody()).add(e)).length===o.
 length){for(t=n.length;0<=t&&n[t]===o[t];t--);if(-1===t)return o=n,!0}return o=n,!1}(e)&&i.dom.isChildOf(e,i.getBody())&&i.nodeChanged({selectionChange:!0})}),i.on("MouseUp",function(e){!e.isDefaultPrevented()&&zh(i)&&("IMG"===i.selection.getNode().nodeName?be.setEditorTimeout(i,function(){i.nodeChanged()}):i.nodeChanged())}),this.nodeChanged=function(e){var t,n,r,o=i.selection;i.initialized&&o&&!i.settings.disable_nodechange&&!i.readonly&&(r=i.getBody(),(t=o.getStart(!0)||r).ownerDocument===i.getDoc()&&i.dom.isChildOf(t,r)||(t=r),n=[],i.dom.getParent(t,function(e){if(e===r)return!0;n.push(e)}),(e=e||{}).element=t,e.parents=n,i.fire("NodeChange",e))}}var Vh,Hh,jh=function(e){var t,n,r,o;return o=e.getBoundingClientRect(),n=(t=e.ownerDocument).documentElement,r=t.defaultView,{top:o.top+r.pageYOffset-n.clientTop,left:o.left+r.pageXOffset-n.clientLeft}},qh=function(e,t){retu
 rn n=(u=e).inline?jh(u.getBody()):{left:0,top:0},a=(i=e).getBody(),r=i.inline?{left:a.scrollLeft,top:a.scrollTop}:{left:0,top:0},{pageX:(o=function(e,t){if(t.target.ownerDocument!==e.getDoc()){var n=jh(e.getContentAreaContainer()),r=(i=(o=e).getBody(),a=o.getDoc().documentElement,u={left:i.scrollLeft,top:i.scrollTop},s={left:i.scrollLeft||a.scrollLeft,top:i.scrollTop||a.scrollTop},o.inline?u:s);return{left:t.pageX-n.left+r.left,top:t.pageY-n.top+r.top}}var o,i,a,u,s;return{left:t.pageX,top:t.pageY}}(e,t)).left-n.left+r.left,pageY:o.top-n.top+r.top};var n,r,o,i,a,u},$h=Bo.isContentEditableFalse,Wh=Bo.isContentEditableTrue,Kh=function(e){e&&e.parentNode&&e.parentNode.removeChild(e)},Xh=function(u,s){return function(e){if(0===e.button){var t=V(s.dom.getParents(e.target),Ya($h,Wh)).getOr(null);if(i=s.getBody(),$h(a=t)&&a!==i){var n=s.dom.getPos(t),r=s.getBody(),o=s.getDoc().documentElement;u.element=t,u.screenX=e.screenX,u.screenY=e.screenY,u.maxX=(s.inline?r.scr
 ollWidth:o.offsetWidth)-2,u.maxY=(s.inline?r.scrollHeight:o.offsetHeight)-2,u.relX=e.pageX-n.x,u.relY=e.pageY-n.y,u.width=t.offsetWidth,u.height=t.offsetHeight,u.ghost=function(e,t,n,r){var o=t.cloneNode(!0);e.dom.setStyles(o,{width:n,height:r}),e.dom.setAttrib(o,"data-mce-selected",null);var i=e.dom.create("div",{"class":"mce-drag-container","data-mce-bogus":"all",unselectable:"on",contenteditable:"false"});return e.dom.setStyles(i,{position:"absolute",opacity:.5,overflow:"hidden",border:0,padding:0,margin:0,width:n,height:r}),e.dom.setStyles(o,{margin:0,boxSizing:"border-box"}),i.appendChild(o),i}(s,t,u.width,u.height)}}var i,a}},Yh=function(l,f){return function(e){if(l.dragging&&(s=(i=f).selection,c=s.getSel().getRangeAt(0).startContainer,a=3===c.nodeType?c.parentNode:c,u=l.element,a!==u&&!i.dom.isChildOf(a,u)&&!$h(a))){var t=(r=l.element,(o=r.clon
 eNode(!0)).removeAttribute("data-mce-selected"),o),n=f.fire("drop",{targetClone:t,clientX:e.clientX,clientY:e.clientY});n.isDefaultPrevented()||(t=n.targetClone,f.undoManager.transact(function(){Kh(l.element),f.insertContent(f.dom.getOuterHTML(t)),f._selectionOverrides.hideFakeCaret()}))}var r,o,i,a,u,s,c;Gh(l)}},Gh=function(e){e.dragging=!1,e.element=null,Kh(e.ghost)},Jh=function(e){var t,n,r,o,i,a,p,h,v,u,s,c={};t=hi.DOM,a=H.document,n=Xh(c,e),p=c,h=e,v=be.throttle(function(e,t){h._selectionOverrides.hideFakeCaret(),h.selection.placeCaretAt(e,t)},0),r=function(e){var t,n,r,o,i,a,u,s,c,l,f,d,m=Math.max(Math.abs(e.screenX-p.screenX),Math.abs(e.screenY-p.screenY));if(p.element&&!p.dragging&&10<m){if(h.fire("dragstart",{target:p.element}).isDefaultPrevented())return;p.dragging=!0,h.focus()}if(p.dragging){var g=(f=p,{pageX:(d=qh(h,e)).pageX-f.relX,pageY:d.pageY+5});c=p.ghost,l=h.getBody(),c.parentNode!==l&&l.appendChild(c),t=p.gh
 ost,n=g,r=p.width,o=p.height,i=p.maxX,a=p.maxY,s=u=0,t.style.left=n.pageX+"px",t.style.top=n.pageY+"px",n.pageX+r>i&&(u=n.pageX+r-i),n.pageY+o>a&&(s=n.pageY+o-a),t.style.width=r-u+"px",t.style.height=o-s+"px",v(e.clientX,e.clientY)}},o=Yh(c,e),u=c,i=function(){u.dragging&&s.fire("dragend"),Gh(u)},(s=e).on("mousedown",n),e.on("mousemove",r),e.on("mouseup",o),t.bind(a,"mousemove",r),t.bind(a,"mouseup",i),e.on("remove",function(){t.unbind(a,"mousemove",r),t.unbind(a,"mouseup",i)})},Qh=function(e){var n;Jh(e),(n=e).on("drop",function(e){var t="undefined"!=typeof e.clientX?n.getDoc().elementFromPoint(e.clientX,e.clientY):null;($h(t)||$h(n.dom.getContentEditableParent(t)))&&e.preventDefault()})},Zh=function(e){return U(e,function(e,t){return e.concat(function(t){var e=function(e){return W(e,function(e){r
 eturn(e=Ma(e)).node=t,e})};if(Bo.isElement(t))return e(t.getClientRects());if(Bo.isText(t)){var n=t.ownerDocument.createRange();return n.setStart(t,0),n.setEnd(t,t.data.length),e(n.getClientRects())}}(t))},[])};(Hh=Vh||(Vh={}))[Hh.Up=-1]="Up",Hh[Hh.Down=1]="Down";var ev=function(o,i,a,e,u,t){var n,s,c=0,l=[],r=function(e){var t,n,r;for(r=Zh([e]),-1===o&&(r=r.reverse()),t=0;t<r.length;t++)if(n=r[t],!a(n,s)){if(0<l.length&&i(n,$t.last(l))&&c++,n.line=c,u(n))return!0;l.push(n)}};return(s=$t.last(t.getClientRects()))&&(r(n=t.getNode()),function(e,t,n,r){for(;r=ms(r,e,La,t);)if(n(r))return}(o,e,r,n)),l},tv=d(ev,Vh.Up,Ua,Va),nv=d(ev,Vh.Down,Va,Ua),rv=function(n){return function(e){return t=n,e.line>t;var t}},ov=function(n){return function(e){return t=n,e.line===t;var t}},iv=Bo.isContentEditableFalse,av=ms,uv=function(e,t){return Math.abs(e.left-t)},sv=function(e,t){return Math.abs(e.right-t)},cv=function(e,t){return e>=t.left
 &&e<=t.right},lv=function(e,o){return $t.reduce(e,function(e,t){var n,r;return n=Math.min(uv(e,o),sv(e,o)),r=Math.min(uv(t,o),sv(t,o)),cv(o,t)?t:cv(o,e)?e:r===n&&iv(t.node)?t:r<n?t:e})},fv=function(e,t,n,r){for(;r=av(r,e,La,t);)if(n(r))return},dv=function(e,t,n){var r,o,i,a,u,s,c,l=Zh(z(re(e.getElementsByTagName("*")),rs)),f=z(l,function(e){return n>=e.top&&n<=e.bottom});return(r=lv(f,t))&&(r=lv((a=e,c=function(t,e){var n;return n=z(Zh([e]),function(e){return!t(e,u)}),s=s.concat(n),0===n.length},(s=[]).push(u=r),fv(Vh.Up,a,d(c,Ua),u.node),fv(Vh.Down,a,d(c,Va),u.node),s),t))&&rs(r.node)?(i=t,{node:(o=r).node,before:uv(o,i)<sv(o,i)}):null},mv=function(i,a,e){return!e.collapsed&&U(e.getClientRects(),function(e,t){return e||(o=a,(r=i)>=(n=t).left&&r<=n.right&&o>=n.top&&o<=n.bottom);var n,r,o},!1)},gv=function(t){var e=Oi(function(){if(!t.removed&&t.selection.getRng().coll
 apsed){var e=Um(t,t.selection.getRng(),!1);t.selection.setRng(e)}},0);t.on("focus",function(){e.throttle()}),t.on("blur",function(){e.cancel()})},pv={BACKSPACE:8,DELETE:46,DOWN:40,ENTER:13,LEFT:37,RIGHT:39,SPACEBAR:32,TAB:9,UP:38,END:35,HOME:36,modifierPressed:function(e){return e.shiftKey||e.ctrlKey||e.altKey||this.metaKeyPressed(e)},metaKeyPressed:function(e){return me.mac?e.metaKey:e.ctrlKey&&!e.altKey}},hv=Bo.isContentEditableTrue,vv=Bo.isContentEditableFalse,bv=function(e,t){for(var n=e.getBody();t&&t!==n;){if(hv(t)||vv(t))return t;t=t.parentNode}return null},yv=function(g){var p,e,t,a=g.getBody(),o=ts(g.getBody(),function(e){return g.dom.isBlock(e)},function(){return Kp(g)}),h="sel-"+g.dom.uniqueId(),u=function(e){e&&g.selection.setRng(e)},s=function(){return g.selection.getRng()},v=function(e,t,n,r){return void 0===r&&(r=!0),g.fire("ShowCaret",{target:t,direction:e,before:n}).isDefaultPrevented()?null:(r&
 amp;&g.selection.scrollIntoView(t,-1===e),o.show(n,t))},b=function(e,t){return t=xs(e,a,t),-1===e?vu.fromRangeStart(t):vu.fromRangeEnd(t)},n=function(e){return va(e)||wa(e)||Na(e)},y=function(e){return n(e.startContainer)||n(e.endContainer)},c=function(e,t){var n,r,o,i,a,u,s,c,l,f,d=g.$,m=g.dom;if(!e)return null;if(e.collapsed){if(!y(e))if(!1===t){if(c=b(-1,e),rs(c.getNode(!0)))return v(-1,c.getNode(!0),!1,!1);if(rs(c.getNode()))return v(-1,c.getNode(),!c.isAtEnd(),!1)}else{if(c=b(1,e),rs(c.getNode()))return v(1,c.getNode(),!c.isAtEnd(),!1);if(rs(c.getNode(!0)))return v(1,c.getNode(!0),!1,!1)}return null}return i=e.startContainer,a=e.startOffset,u=e.endOffset,3===i.nodeType&&0===a&&vv(i.parentNode)&&(i=i.parentNode,a=m.nodeIndex(i),i=i.parentNode),1!==i.nodeType?null:(u===a+1&&(n=i.childNodes[a]),vv(n)?(l=f=n.cloneNode(!0),(s=g.fire("ObjectSelected",{target:n,targetClone:l})).isDefaultPrevented()?null:(r=Yi(or.fromDom(g.getBody()),"
 #"+h).fold(function(){return d([])},function(e){return d([e.dom()])}),l=s.targetClone,0===r.length&&(r=d('<div data-mce-bogus="all" class="mce-offscreen-selection"></div>').attr("id",h)).appendTo(g.getBody()),e=g.dom.createRng(),l===f&&me.ie?(r.empty().append('<p style="font-size: 0" data-mce-bogus="all">\xa0</p>').append(l),e.setStartAfter(r[0].firstChild.firstChild),e.setEndAfter(l)):(r.empty().append("\xa0").append(l).append("\xa0"),e.setStart(r[0].firstChild,1),e.setEnd(r[0].lastChild,0)),r.css({top:m.getPos(n,g.getBody()).y}),r[0].focus(),(o=g.selection.getSel()).removeAllRanges(),o.addRange(e),F(ji(or.fromDom(g.getBody()),"*[data-mce-selected]"),function(e){xr(e,"data-mce-selected")}),n.setAttribute("data-mce-selected","1"),p=n,C(),e)):null)},l=function(){p&&(p.removeAttribute("data-mce-selected"),Yi(or.fro
 mDom(g.getBody()),"#"+h).each(Di),p=null),Yi(or.fromDom(g.getBody()),"#"+h).each(Di),p=null},C=function(){o.hide()};return me.ceFalse&&(function(){g.on("mouseup",function(e){var t=s();t.collapsed&&eh(g,e.clientX,e.clientY)&&u(zm(g,t,!1))}),g.on("click",function(e){var t;(t=bv(g,e.target))&&(vv(t)&&(e.preventDefault(),g.focus()),hv(t)&&g.dom.isChildOf(t,g.selection.getNode())&&l())}),g.on("blur NewBlock",function(){l()}),g.on("ResizeWindow FullscreenStateChanged",function(){return o.reposition()});var n,r,i=function(e,t){var n,r,o=g.dom.getParent(e,g.dom.isBlock),i=g.dom.getParent(t,g.dom.isBlock);return!(!o||!g.dom.isChildOf(o,i)||!1!==vv(bv(g,o)))||o&&(n=o,r=i,!(g.dom.getParent(n,g.dom.isBlock)===g.dom.getParent(r,g.dom.isBlock)))&&function(e){var t=Hs(e);if(!e.firstChild)return!1;var n=vu.before(e.firstChild),r=t.next(n);return r&&!mf(r)&&
 amp;!gf(r)}(o)};r=!1,(n=g).on("touchstart",function(){r=!1}),n.on("touchmove",function(){r=!0}),n.on("touchend",function(e){var t=bv(n,e.target);vv(t)&&(r||(e.preventDefault(),c(Fm(n,t))))}),g.on("mousedown",function(e){var t,n=e.target;if((n===a||"HTML"===n.nodeName||g.dom.isChildOf(n,a))&&!1!==eh(g,e.clientX,e.clientY))if(t=bv(g,n))vv(t)?(e.preventDefault(),c(Fm(g,t))):(l(),hv(t)&&e.shiftKey||mv(e.clientX,e.clientY,g.selection.getRng())||(C(),g.selection.placeCaretAt(e.clientX,e.clientY)));else if(!1===rs(n)){l(),C();var r=dv(a,e.clientX,e.clientY);if(r&&!i(e.target,r.node)){e.preventDefault();var o=v(1,r.node,r.before,!1);g.getBody().focus(),u(o)}}}),g.on("keypress",function(e){pv.modifierPressed(e)||(e.keyCode,vv(g.selection.getNode())&&e.preventDefault())}),g.on("getSelectionRange",function(e){var t=e.range;if(p){if(!p.parentNode)return void(p=null);(t=t.cloneRange()).s
 electNode(p),e.range=t}}),g.on("setSelectionRange",function(e){var t;(t=c(e.range,e.forward))&&(e.range=t)}),g.on("AfterSetSelectionRange",function(e){var t,n=e.range;y(n)||"mcepastebin"===n.startContainer.parentNode.id||C(),t=n.startContainer.parentNode,g.dom.hasClass(t,"mce-offscreen-selection")||l()}),g.on("copy",function(e){var t,n=e.clipboardData;if(!e.isDefaultPrevented()&&e.clipboardData&&!me.ie){var r=(t=g.dom.get(h))?t.getElementsByTagName("*")[0]:t;r&&(e.preventDefault(),n.clearData(),n.setData("text/html",r.outerHTML),n.setData("text/plain",r.outerText))}}),Qh(g),gv(g)}(),e=g.contentStyles,t=".mce-content-body",e.push(o.getCss()),e.push(t+" .mce-offscreen-selection {position: absolute;left: -9999999999px;max-width: 1000000px;}"+t+" *[contentEditable=false] {cursor: default;}"+t+" *[contentEditable=true] {cursor: text;}")),
 {showCaret:v,showBlockCaretContainer:function(e){e.hasAttribute("data-mce-caret")&&(Ea(e),u(s()),g.selection.scrollIntoView(e[0]))},hideFakeCaret:C,destroy:function(){o.destroy(),p=null}}},Cv=function(e,t,n){var r,o,i,a,u=1;for(a=e.getShortEndedElements(),(i=/<([!?\/])?([A-Za-z0-9\-_\:\.]+)((?:\s+[^"\'>]+(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>]*))*|\/|\s+)>/g).lastIndex=r=n;o=i.exec(t);){if(r=i.lastIndex,"/"===o[1])u--;else if(!o[1]){if(o[2]in a)continue;u++}if(0===u)break}return r},xv=function(e,t){var n=e.exec(t);if(n){var r=n[1],o=n[2];return"string"==typeof r&&"data-mce-bogus"===r.toLowerCase()?o:null}return null};function wv(z,U){void 0===U&&(U=ri());var e=function(){};!1!==(z=z||{}).fix_self_closing&&(z.fix_self_closing=!0);var V=z.comment?z.comment:e,H=z.cdata?z.cdata:e,j=z.text?z.text:e,q=z.start?z.start:e,$=z.end?z.end:e,W=z.pi?z.pi:e,K=z.doctype?z.doctype:e;return{parse:functi
 on(e){var t,n,r,d,o,i,a,m,u,s,g,c,p,l,f,h,v,b,y,C,x,w,N,E,S,k,T,A,R,_=0,D=[],B=0,O=Wo.decode,P=Gt.makeMap("src,href,data,background,formaction,poster,xlink:href"),L=/((java|vb)script|mhtml):/i,I=function(e){var t,n;for(t=D.length;t--&&D[t].name!==e;);if(0<=t){for(n=D.length-1;t<=n;n--)(e=D[n]).valid&&$(e.name);D.length=t}},M=function(e,t,n,r,o){var i,a,u,s,c;if(n=(t=t.toLowerCase())in g?t:O(n||r||o||""),p&&!m&&0==(0===(u=t).indexOf("data-")||0===u.indexOf("aria-"))){if(!(i=b[t])&&y){for(a=y.length;a--&&!(i=y[a]).pattern.test(t););-1===a&&(i=null)}if(!i)return;if(i.validValues&&!(n in i.validValues))return}if(P[t]&&!z.allow_script_urls){var l=n.replace(/[\s\u0000-\u001F]+/g,"");try{l=decodeURIComponent(l)}catch(f){l=unescape(l)}if(L.test(l))return;if(c=l,!(s=z).allow_html_data_urls&&(/^data:image\//i.test(c)?!1===s.allow_svg_data_urls&&/^data
 :image\/svg\+xml/i.test(c):/^data:/i.test(c)))return}m&&(t in P||0===t.indexOf("on"))||(d.map[t]=n,d.push({name:t,value:n}))};for(S=new RegExp("<(?:(?:!--([\\w\\W]*?)--\x3e)|(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|(?:!DOCTYPE([\\w\\W]*?)>)|(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|(?:\\/([A-Za-z][A-Za-z0-9\\-_\\:\\.]*)>)|(?:([A-Za-z][A-Za-z0-9\\-_\\:\\.]*)((?:\\s+[^\"'>]+(?:(?:\"[^\"]*\")|(?:'[^']*')|[^>]*))*|\\/|\\s+)>))","g"),k=/([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:[^\"])*)\")|(?:\'((?:[^\'])*)\')|([^>\s]+)))?/g,s=U.getShortEndedElements(),E=z.self_closing_elements||U.getSelfClosingElements(),g=U.getBoolAttrs(),p=z.validate,u=z.remove_internals,R=z.fix_self_closing,T=U.getSpecialElements(),N=e+">";t=S.exec(N);){if(_<t.index&&j(O(e.substr(_,t.index-_))),n=t[6])":"===(n=n.toLowerCase()).charAt(0)&&(n=n.substr(1)),I(n);else if(n=t[7]){if(t.index+t[
 0].length>e.length){j(O(e.substr(t.index))),_=t.index+t[0].length;continue}":"===(n=n.toLowerCase()).charAt(0)&&(n=n.substr(1)),c=n in s,R&&E[n]&&0<D.length&&D[D.length-1].name===n&&I(n);var F=xv(k,t[8]);if(null!==F){if("all"===F){_=Cv(U,e,S.lastIndex),S.lastIndex=_;continue}f=!1}if(!p||(l=U.getElementRule(n))){if(f=!0,p&&(b=l.attributes,y=l.attributePatterns),(v=t[8])?((m=-1!==v.indexOf("data-mce-type"))&&u&&(f=!1),(d=[]).map={},v.replace(k,M)):(d=[]).map={},p&&!m){if(C=l.attributesRequired,x=l.attributesDefault,w=l.attributesForced,l.removeEmptyAttrs&&!d.length&&(f=!1),w)for(o=w.length;o--;)a=(h=w[o]).name,"{$uid}"===(A=h.value)&&(A="mce_"+B++),d.map[a]=A,d.push({name:a,value:A});if(x)for(o=x.length;o--;)(a=(h=x[o]).name)in d.map||("{$uid}"===(A=h.value)&&(A="mce_"+B++),d.map[a]=A,d.push({name:a,value:A}
 ));if(C){for(o=C.length;o--&&!(C[o]in d.map););-1===o&&(f=!1)}if(h=d.map["data-mce-bogus"]){if("all"===h){_=Cv(U,e,S.lastIndex),S.lastIndex=_;continue}f=!1}}f&&q(n,d,c)}else f=!1;if(r=T[n]){r.lastIndex=_=t.index+t[0].length,(t=r.exec(e))?(f&&(i=e.substr(_,t.index-_)),_=t.index+t[0].length):(i=e.substr(_),_=e.length),f&&(0<i.length&&j(i,!0),$(n)),S.lastIndex=_;continue}c||(v&&v.indexOf("/")===v.length-1?f&&$(n):D.push({name:n,valid:f}))}else(n=t[1])?(">"===n.charAt(0)&&(n=" "+n),z.allow_conditional_comments||"[if"!==n.substr(0,3).toLowerCase()||(n=" "+n),V(n)):(n=t[2])?H(n.replace(/<!--|-->/g,"")):(n=t[3])?K(n):(n=t[4])&&W(n,t[5]);_=t.index+t[0].length}for(_<e.length&&j(O(e.substr(_))),o=D.length-1;0<=o;o--)(n=D[o]).valid&&$(n.name)}}}(wv||(wv={})).findEndTag=Cv;var Nv=wv,Ev=function(e,t){var 
 n,r,o,i,a,u,s,c,l=t,f=/<(\w+) [^>]*data-mce-bogus="all"[^>]*>/g,d=e.schema;for(u=e.getTempAttrs(),s=l,c=new RegExp(["\\s?("+u.join("|")+')="[^"]+"'].join("|"),"gi"),l=s.replace(c,""),a=d.getShortEndedElements();i=f.exec(l);)r=f.lastIndex,o=i[0].length,n=a[i[1]]?r:Nv.findEndTag(d,l,r),l=l.substring(0,r-o)+l.substring(n),f.lastIndex=r-o;return da(l)},Sv={trimExternal:Ev,trimInternal:Ev},kv=0,Tv=2,Av=1,Rv=function(g,p){var e=g.length+p.length+2,h=new Array(e),v=new Array(e),c=function(e,t,n,r,o){var i=l(e,t,n,r);if(null===i||i.start===t&&i.diag===t-r||i.end===e&&i.diag===e-n)for(var a=e,u=n;a<t||u<r;)a<t&&u<r&&g[a]===p[u]?(o.push([0,g[a]]),++a,++u):r-n<t-e?(o.push([2,g[a]]),++a):(o.push([1,p[u]]),++u);else{c(e,i.start,n,i.start-i.diag,o);for(var s=i.start;s<i.end;++s)o.push([0,g[s]]);c(i.end,t,i.end-i.diag,r,o)}},b=function(e,t,n,r){for(var o=e;o-t&lt
 ;r&&o<n&&g[o]===p[o-t];)++o;return{start:e,end:o,diag:t}},l=function(e,t,n,r){var o=t-e,i=r-n;if(0===o||0===i)return null;var a,u,s,c,l,f=o-i,d=i+o,m=(d%2==0?d:d+1)/2;for(h[1+m]=e,v[1+m]=t+1,a=0;a<=m;++a){for(u=-a;u<=a;u+=2){for(s=u+m,u===-a||u!==a&&h[s-1]<h[s+1]?h[s]=h[s+1]:h[s]=h[s-1]+1,l=(c=h[s])-e+n-u;c<t&&l<r&&g[c]===p[l];)h[s]=++c,++l;if(f%2!=0&&f-a<=u&&u<=f+a&&v[s-f]<=h[s])return b(v[s-f],u+e-n,t,r)}for(u=f-a;u<=f+a;u+=2){for(s=u+m-f,u===f-a||u!==f+a&&v[s+1]<=v[s-1]?v[s]=v[s+1]-1:v[s]=v[s-1],l=(c=v[s]-1)-e+n-u;e<=c&&n<=l&&g[c]===p[l];)v[s]=c--,l--;if(f%2==0&&-a<=u&&u<=a&&v[s]<=h[s+f])return b(v[s],u+e-n,t,r)}}},t=[];return c(0,g.length,0,p.length,t),t},_v=function(e){return Bo.isElement(e)?e.outerHTML:Bo.isText(e)?Wo.encodeRaw(e.data,!1):Bo.isComment(e)?"\x3c!--"+e.data+"--\x3e":""},Dv=fun
 ction(e,t,n){var r=function(e){var t,n,r;for(r=H.document.createElement("div"),t=H.document.createDocumentFragment(),e&&(r.innerHTML=e);n=r.firstChild;)t.appendChild(n);return t}(t);if(e.hasChildNodes()&&n<e.childNodes.length){var o=e.childNodes[n];o.parentNode.insertBefore(r,o)}else e.appendChild(r)},Bv=function(e){return z(W(re(e.childNodes),_v),function(e){return 0<e.length})},Ov=function(e,t){var n,r,o,i=W(re(t.childNodes),_v);return n=Rv(i,e),r=t,o=0,F(n,function(e){e[0]===kv?o++:e[0]===Av?(Dv(r,e[1],o),o++):e[0]===Tv&&function(e,t){if(e.hasChildNodes()&&t<e.childNodes.length){var n=e.childNodes[t];n.parentNode.removeChild(n)}}(r,o)}),t},Pv=Pi(A.none()),Lv=function(e){return{type:"fragmented",fragments:e,content:"",bookmark:null,beforeBookmark:null}},Iv=function(e){return{type:"complete",fragments:null,content:e,bookmark:null,beforeBookmark:null}},Mv=function(e){return"fragmented"===e.typ
 e?e.fragments.join(""):e.content},Fv=function(e){var t=or.fromTag("body",Pv.get().getOrThunk(function(){var e=H.document.implementation.createHTMLDocument("undo");return Pv.set(A.some(e)),e}));return sa(t,Mv(e)),F(ji(t,"*[data-mce-bogus]"),Bi),t.dom().innerHTML},zv=function(n){var e,t,r;return e=Bv(n.getBody()),-1!==(t=(r=J(e,function(e){var t=Sv.trimInternal(n.serializer,e);return 0<t.length?[t]:[]})).join("")).indexOf("</iframe>")?Lv(r):Iv(t)},Uv=function(e,t,n){"fragmented"===t.type?Ov(t.fragments,e.getBody()):e.setContent(t.content,{format:"raw"}),e.selection.moveToBookmark(n?t.beforeBookmark:t.bookmark)},Vv=function(e,t){return!(!e||!t)&&(r=t,Mv(e)===Mv(r)||(n=t,Fv(e)===Fv(n)));var n,r};function Hv(u){var s,r,o=this,c=0,l=[],t=0,f=function(){return 0===t},i=function(e){f()&&(o.typing=e)},d=function(e){u.setDirty(e)},a=function(e){i(!1),o.add({},e)},n=function(){o.typing&
 &(i(!1),o.add())};return u.on("init",function(){o.add()}),u.on("BeforeExecCommand",function(e){var t=e.command;"Undo"!==t&&"Redo"!==t&&"mceRepaint"!==t&&(n(),o.beforeChange())}),u.on("ExecCommand",function(e){var t=e.command;"Undo"!==t&&"Redo"!==t&&"mceRepaint"!==t&&a(e)}),u.on("ObjectResizeStart Cut",function(){o.beforeChange()}),u.on("SaveContent ObjectResized blur",a),u.on("DragEnd",a),u.on("KeyUp",function(e){var t=e.keyCode;e.isDefaultPrevented()||((33<=t&&t<=36||37<=t&&t<=40||45===t||e.ctrlKey)&&(a(),u.nodeChanged()),46!==t&&8!==t||u.nodeChanged(),r&&o.typing&&!1===Vv(zv(u),l[0])&&(!1===u.isDirty()&&(d(!0),u.fire("change",{level:l[0],lastLevel:null})),u.fire("TypingUndo"),r=!1,u.nodeChanged()))}),u.on(&q
 uot;KeyDown",function(e){var t=e.keyCode;if(!e.isDefaultPrevented())if(33<=t&&t<=36||37<=t&&t<=40||45===t)o.typing&&a(e);else{var n=e.ctrlKey&&!e.altKey||e.metaKey;!(t<16||20<t)||224===t||91===t||o.typing||n||(o.beforeChange(),i(!0),o.add({},e),r=!0)}}),u.on("MouseDown",function(e){o.typing&&a(e)}),u.on("input",function(e){var t;e.inputType&&("insertReplacementText"===e.inputType||"insertText"===(t=e).inputType&&null===t.data)&&a(e)}),u.addShortcut("meta+z","","Undo"),u.addShortcut("meta+y,meta+shift+z","","Redo"),u.on("AddUndo Undo Redo ClearUndos",function(e){e.isDefaultPrevented()||u.nodeChanged()}),o={data:l,typing:!1,beforeChange:function(){f()&&(s=Fu.getUndoBookmark(u.selection))},add:function(e,t){var n,r,o,i=u.settings;if(o=zv(u),e=e||{},e=Gt.extend(e,o),!1===f()||u.removed
 )return null;if(r=l[c],u.fire("BeforeAddUndo",{level:e,lastLevel:r,originalEvent:t}).isDefaultPrevented())return null;if(r&&Vv(r,e))return null;if(l[c]&&(l[c].beforeBookmark=s),i.custom_undo_redo_levels&&l.length>i.custom_undo_redo_levels){for(n=0;n<l.length-1;n++)l[n]=l[n+1];l.length--,c=l.length}e.bookmark=Fu.getUndoBookmark(u.selection),c<l.length-1&&(l.length=c+1),l.push(e),c=l.length-1;var a={level:e,lastLevel:r,originalEvent:t};return u.fire("AddUndo",a),0<c&&(d(!0),u.fire("change",a)),e},undo:function(){var e;return o.typing&&(o.add(),o.typing=!1,i(!1)),0<c&&(e=l[--c],Uv(u,e,!0),d(!0),u.fire("undo",{level:e})),e},redo:function(){var e;return c<l.length-1&&(e=l[++c],Uv(u,e,!1),d(!0),u.fire("redo",{level:e})),e},clear:function(){l=[],c=0,o.typing=!1,o.data=l,u.fire("ClearUndos")},hasUndo:function(){return 0<c||o.typing&&l[0]&am
 p;&!Vv(zv(u),l[0])},hasRedo:function(){return c<l.length-1&&!o.typing},transact:function(e){return n(),o.beforeChange(),o.ignore(e),o.add()},ignore:function(e){try{t++,e()}finally{t--}},extra:function(e,t){var n,r;o.transact(e)&&(r=l[c].bookmark,n=l[c-1],Uv(u,n,!0),o.transact(t)&&(l[c-1].beforeBookmark=r))}}}var jv,qv,$v={},Wv=$t.filter,Kv=$t.each;qv=function(e){var t,n,r=e.selection.getRng();t=Bo.matchNodeNames("pre"),r.collapsed||(n=e.selection.getSelectedBlocks(),Kv(Wv(Wv(n,t),function(e){return t(e.previousSibling)&&-1!==$t.indexOf(n,e.previousSibling)}),function(e){var t,n;t=e.previousSibling,hn(n=e).remove(),hn(t).append("<br><br>").append(n.childNodes)}))},$v[jv="pre"]||($v[jv]=[]),$v[jv].push(qv);var Xv=function(e,t){Kv($v[e],function(e){e(t)})},Yv=/^(src|href|style)$/,Gv=Gt.each,Jv=mc.isEq,Qv=function(e,t,n){return e.isChildOf(t,n)&&t!==n&&!e.isBlock(n)},Zv=function(e,t,n){var r
 ,o,i;return r=t[n?"startContainer":"endContainer"],o=t[n?"startOffset":"endOffset"],Bo.isElement(r)&&(i=r.childNodes.length-1,!n&&o&&o--,r=r.childNodes[i<o?i:o]),Bo.isText(r)&&n&&o>=r.nodeValue.length&&(r=new oo(r,e.getBody()).next()||r),Bo.isText(r)&&!n&&0===o&&(r=new oo(r,e.getBody()).prev()||r),r},eb=function(e,t,n,r){var o=e.create(n,r);return t.parentNode.insertBefore(o,t),o.appendChild(t),o},tb=function(e,t,n,r,o){var i=or.fromDom(t),a=or.fromDom(e.create(r,o)),u=n?Vr(i):Ur(i);return Ri(a,u),n?(Si(i,a),Ti(a,i)):(ki(i,a),Ai(a,i)),a.dom()},nb=function(e,t,n,r){return!(t=mc.getNonWhiteSpaceSibling(t,n,r))||"BR"===t.nodeName||e.isBlock(t)},rb=function(e,n,r,o,i){var t,a,u,s,c,l,f,d,m,g,p,h,v,b,y=e.dom;if(c=y,!(Jv(l=o,(f=n).inline)||Jv(l,f.block)||(f.selector?Bo.isElement(l)&&c.is(l,f.selector):void 0)||(s=o,n.links&&"A"===s.tagNa
 me)))return!1;if("all"!==n.remove)for(Gv(n.styles,function(e,t){e=mc.normalizeStyleValue(y,mc.replaceVars(e,r),t),"number"==typeof t&&(t=e,i=0),(n.remove_similar||!i||Jv(mc.getStyle(y,i,t),e))&&y.setStyle(o,t,""),u=1}),u&&""===y.getAttrib(o,"style")&&(o.removeAttribute("style"),o.removeAttribute("data-mce-style")),Gv(n.attributes,function(e,t){var n;if(e=mc.replaceVars(e,r),"number"==typeof t&&(t=e,i=0),!i||Jv(y.getAttrib(i,t),e)){if("class"===t&&(e=y.getAttrib(o,t))&&(n="",Gv(e.split(/\s+/),function(e){/mce\-\w+/.test(e)&&(n+=(n?" ":"")+e)}),n))return void y.setAttrib(o,t,n);"class"===t&&o.removeAttribute("className"),Yv.test(t)&&o.removeAttribute("data-mce-"+t),o.removeAttribute(t)}}),Gv(n.classes,function(e){e=mc.replaceVars(e,r),i&&!y.hasClass(i
 ,e)||y.removeClass(o,e)}),a=y.getAttribs(o),t=0;t<a.length;t++){var C=a[t].nodeName;if(0!==C.indexOf("_")&&0!==C.indexOf("data-"))return!1}return"none"!==n.remove?(d=e,g=n,h=(m=o).parentNode,v=d.dom,b=d.settings.forced_root_block,g.block&&(b?h===v.getRoot()&&(g.list_block&&Jv(m,g.list_block)||Gv(Gt.grep(m.childNodes),function(e){mc.isValid(d,b,e.nodeName.toLowerCase())?p?p.appendChild(e):(p=eb(v,e,b),v.setAttribs(p,d.settings.forced_root_block_attrs)):p=0})):v.isBlock(m)&&!v.isBlock(h)&&(nb(v,m,!1)||nb(v,m.firstChild,!0,1)||m.insertBefore(v.create("br"),m.firstChild),nb(v,m,!0)||nb(v,m.lastChild,!1,1)||m.appendChild(v.create("br")))),g.selector&&g.inline&&!Jv(g.inline,m)||v.remove(m,1),!0):void 0},ob=rb,ib=function(s,c,l,e,f){var t,n,d=s.formatter.get(c),m=d[0],a=!0,u=s.dom,r=s.selection,i=function(e){var n,t,r,o,i,a,u=(n=s,t=e,r=c,o=l,i=f,Gv(mc.getParents(n.dom,t.par
 entNode).reverse(),function(e){var t;a||"_start"===e.id||"_end"===e.id||(t=hm.matchNode(n,e,r,o,i))&&!1!==t.split&&(a=e)}),a);return function(e,t,n,r,o,i,a,u){var s,c,l,f,d,m,g=e.dom;if(n){for(m=n.parentNode,s=r.parentNode;s&&s!==m;s=s.parentNode){for(c=g.clone(s,!1),d=0;d<t.length;d++)if(rb(e,t[d],u,c,c)){c=0;break}c&&(l&&c.appendChild(l),f||(f=c),l=c)}!i||a.mixed&&g.isBlock(n)||(r=g.split(n,r)),l&&(o.parentNode.insertBefore(l,o),f.appendChild(o))}return r}(s,d,u,e,e,!0,m,l)},g=function(e){var t,n,r,o,i;if(Bo.isElement(e)&&u.getContentEditable(e)&&(o=a,a="true"===u.getContentEditable(e),i=!0),t=Gt.grep(e.childNodes),a&&!i)for(n=0,r=d.length;n<r&&!rb(s,d[n],l,e,e);n++);if(m.deep&&t.length){for(n=0,r=t.length;n<r;n++)g(t[n]);i&&(a=o)}},p=function(e){var t,n=u.get(e?"_start":"_end"),r=n[e?"firstChild":"lastChi
 ld"];return cc(t=r)&&Bo.isElement(t)&&("_start"===t.id||"_end"===t.id)&&(r=r[e?"firstChild":"lastChild"]),Bo.isText(r)&&0===r.data.length&&(r=e?n.previousSibling||n.nextSibling:n.nextSibling||n.previousSibling),u.remove(n,!0),r},o=function(e){var t,n,r=e.commonAncestorContainer;if(e=Sc(s,e,d,!0),m.split){if(e=bm(e),(t=Zv(s,e,!0))!==(n=Zv(s,e))){if(/^(TR|TH|TD)$/.test(t.nodeName)&&t.firstChild&&(t="TR"===t.nodeName?t.firstChild.firstChild||t:t.firstChild||t),r&&/^T(HEAD|BODY|FOOT|R)$/.test(r.nodeName)&&/^(TH|TD)$/.test(n.nodeName)&&n.firstChild&&(n=n.firstChild||n),Qv(u,t,n)){var o=A.from(t.firstChild).getOr(t);return i(tb(u,o,!0,"span",{id:"_start","data-mce-type":"bookmark"})),void p(!0)}if(Qv(u,n,t))return o=A.from(n.lastChild).getOr(n),i(tb(u,o,!1,"span",{id:"_end","data-mce-
 type":"bookmark"})),void p(!1);t=eb(u,t,"span",{id:"_start","data-mce-type":"bookmark"}),n=eb(u,n,"span",{id:"_end","data-mce-type":"bookmark"}),i(t),i(n),t=p(!0),n=p()}else t=n=i(t);e.startContainer=t.parentNode?t.parentNode:t,e.startOffset=u.nodeIndex(t),e.endContainer=n.parentNode?n.parentNode:n,e.endOffset=u.nodeIndex(n)+1}Tc(u,e,function(e){Gv(e,function(e){g(e),Bo.isElement(e)&&"underline"===s.dom.getStyle(e,"text-decoration")&&e.parentNode&&"underline"===mc.getTextDecoration(u,e.parentNode)&&rb(s,{deep:!1,exact:!0,inline:"span",styles:{textDecoration:"underline"}},null,e)})})};if(e)e.nodeType?((n=u.createRng()).setStartBefore(e),n.setEndAfter(e),o(n)):o(e);else if("false"!==u.getContentEditable(r.getNode()))r.isCollapsed()&&m.inline&&!u.select("td[data-mce-selected],th[da
 ta-mce-selected]").length?function(e,t,n,r){var o,i,a,u,s,c,l,f=e.dom,d=e.selection,m=[],g=d.getRng();for(o=g.startContainer,i=g.startOffset,3===(s=o).nodeType&&(i!==o.nodeValue.length&&(u=!0),s=s.parentNode);s;){if(hm.matchNode(e,s,t,n,r)){c=s;break}s.nextSibling&&(u=!0),m.push(s),s=s.parentNode}if(c)if(u){a=d.getBookmark(),g.collapse(!0);var p=Sc(e,g,e.formatter.get(t),!0);p=bm(p),e.formatter.remove(t,n,p),d.moveToBookmark(a)}else{l=Vu(e.getBody(),c);var h=Nm(!1).dom(),v=Am(m,h);km(e,h,l||c),Em(e,l,!1),d.setCursorLocation(v,1),f.isEmpty(c)&&f.remove(c)}}(s,c,l,f):(t=Fu.getPersistentBookmark(s.selection,!0),o(r.getRng()),r.moveToBookmark(t),m.inline&&hm.match(s,c,l,r.getStart())&&mc.moveStart(u,r,r.getRng()),s.nodeChanged());else{e=r.getNode();for(var h=0,v=d.length;h<v&&(!d[h].ceFalseOverride||!rb(s,d[h],l,e,e));h++);}},ab=Gt.each,ub=function(e){return e&&1===e.nodeType&&!cc(e)&&!Uu(e)&&amp
 ;!Bo.isBogus(e)},sb=function(e,t){var n;for(n=e;n;n=n[t]){if(3===n.nodeType&&0!==n.nodeValue.length)return e;if(1===n.nodeType&&!cc(n))return n}return e},cb=function(e,t,n){var r,o,i=new $c(e);if(t&&n&&(t=sb(t,"previousSibling"),n=sb(n,"nextSibling"),i.compare(t,n))){for(r=t.nextSibling;r&&r!==n;)r=(o=r).nextSibling,t.appendChild(o);return e.remove(n),Gt.each(Gt.grep(n.childNodes),function(e){t.appendChild(e)}),t}return n},lb=function(e,t,n){ab(e.childNodes,function(e){ub(e)&&(t(e)&&n(e),e.hasChildNodes()&&lb(e,t,n))})},fb=function(n,e){return d(function(e,t){return!(!t||!mc.getStyle(n,t,e))},e)},db=function(r,e,t){return d(function(e,t,n){r.setStyle(n,e,t),""===n.getAttribute("style")&&n.removeAttribute("style"),mb(r,n)},e,t)},mb=function(e,t){"SPAN"===t.nodeName&&0===e.getAttribs(t).length&&e.remove(t,!0)},gb=function(e,t){var n;1===t.
 nodeType&&t.parentNode&&1===t.parentNode.nodeType&&(n=mc.getTextDecoration(e,t.parentNode),e.getStyle(t,"color")&&n?e.setStyle(t,"text-decoration",n):e.getStyle(t,"text-decoration")===n&&e.setStyle(t,"text-decoration",null))},pb=function(n,e,r,o){ab(e,function(t){ab(n.dom.select(t.inline,o),function(e){ub(e)&&ob(n,t,r,e,t.exact?e:null)}),function(r,e,t){if(e.clear_child_styles){var n=e.links?"*:not(a)":"*";ab(r.select(n,t),function(n){ub(n)&&ab(e.styles,function(e,t){r.setStyle(n,t,"")})})}}(n.dom,t,o)})},hb=function(e,t,n,r){(t.styles.color||t.styles.textDecoration)&&(Gt.walk(r,d(gb,e),"childNodes"),gb(e,r))},vb=function(e,t,n,r){t.styles&&t.styles.backgroundColor&&lb(r,fb(e,"fontSize"),db(e,"backgroundColor",mc.replaceVars(t.styles.backgroundColor,n)))},bb=function(e,t,n,r){"sub"!==t.inline&amp
 ;&"sup"!==t.inline||(lb(r,fb(e,"fontSize"),db(e,"fontSize","")),e.remove(e.select("sup"===t.inline?"sub":"sup",r),!0))},yb=function(e,t,n,r){r&&!1!==t.merge_siblings&&(r=cb(e,mc.getNonWhiteSpaceSibling(r),r),r=cb(e,r,mc.getNonWhiteSpaceSibling(r,!0)))},Cb=function(t,n,r,o,i){hm.matchNode(t,i.parentNode,r,o)&&ob(t,n,o,i)||n.merge_with_parents&&t.dom.getParent(i.parentNode,function(e){if(hm.matchNode(t,e,r,o))return ob(t,n,o,i),!0})},xb=Gt.each,wb=function(g,p,h,r){var e,t,v=g.formatter.get(p),b=v[0],o=!r&&g.selection.isCollapsed(),i=g.dom,n=g.selection,y=function(n,e){if(e=e||b,n){if(e.onformat&&e.onformat(n,e,h,r),xb(e.styles,function(e,t){i.setStyle(n,t,mc.replaceVars(e,h))}),e.styles){var t=i.getAttrib(n,"style");t&&n.setAttribute("data-mce-style",t)}xb(e.attributes,function(e,t){i.setAttrib(n,t,mc.replaceVars(e,h))}),xb(e.classes,fu
 nction(e){e=mc.replaceVars(e,h),i.hasClass(n,e)||i.addClass(n,e)})}},C=function(e,t){var n=!1;return!!b.selector&&(xb(e,function(e){if(!("collapsed"in e&&e.collapsed!==o))return i.is(t,e.selector)&&!Uu(t)?(y(t,e),!(n=!0)):void 0}),n)},a=function(s,e,t,c){var l,f,d=[],m=!0;l=b.inline||b.block,f=s.create(l),y(f),Tc(s,e,function(e){var a,u=function(e){var t,n,r,o;if(o=m,t=e.nodeName.toLowerCase(),n=e.parentNode.nodeName.toLowerCase(),1===e.nodeType&&s.getContentEditable(e)&&(o=m,m="true"===s.getContentEditable(e),r=!0),mc.isEq(t,"br"))return a=0,void(b.block&&s.remove(e));if(b.wrapper&&hm.matchNode(g,e,p,h))a=0;else{if(m&&!r&&b.block&&!b.wrapper&&mc.isTextBlock(g,t)&&mc.isValid(g,n,l))return e=s.rename(e,l),y(e),d.push(e),void(a=0);if(b.selector){var i=C(v,e);if(!b.inline||i)return void(a=0)}!m||r||!mc.isValid(g,l,t)||!mc.isValid(g,n,l)||!c&&3===e.nodeTy
 pe&&1===e.nodeValue.length&&65279===e.nodeValue.charCodeAt(0)||Uu(e)||b.inline&&s.isBlock(e)?(a=0,xb(Gt.grep(e.childNodes),u),r&&(m=o),a=0):(a||(a=s.clone(f,!1),e.parentNode.insertBefore(a,e),d.push(a)),a.appendChild(e))}};xb(e,u)}),!0===b.links&&xb(d,function(e){var t=function(e){"A"===e.nodeName&&y(e,b),xb(Gt.grep(e.childNodes),t)};t(e)}),xb(d,function(e){var t,n,r,o,i,a=function(e){var n=!1;return xb(e.childNodes,function(e){if((t=e)&&1===t.nodeType&&!cc(t)&&!Uu(t)&&!Bo.isBogus(t))return n=e,!1;var t}),n};n=0,xb(e.childNodes,function(e){mc.isWhiteSpaceNode(e)||cc(e)||n++}),t=n,!(1<d.length)&&s.isBlock(e)||0!==t?(b.inline||b.wrapper)&&(b.exact||1!==t||((o=a(r=e))&&!cc(o)&&hm.matchName(s,o,b)&&(i=s.clone(o,!1),y(i),s.replace(i,r,!0),s.remove(o,1)),e=i||r),pb(g,v,h,e),Cb(g,b,p,h,e),vb(s,b,h,e),bb(s,b,h,e),yb(s,b,h,e)):s.remove(e,1)})};if("false&qu
 ot;!==i.getContentEditable(n.getNode())){if(b){if(r)r.nodeType?C(v,r)||((t=i.createRng()).setStartBefore(r),t.setEndAfter(r),a(i,Sc(g,t,v),0,!0)):a(i,r,0,!0);else if(o&&b.inline&&!i.select("td[data-mce-selected],th[data-mce-selected]").length)!function(e,t,n){var r,o,i,a,u,s,c=e.selection;a=(r=c.getRng(!0)).startOffset,s=r.startContainer.nodeValue,(o=Vu(e.getBody(),c.getStart()))&&(i=wm(o));var l,f,d=/[^\s\u00a0\u00ad\u200b\ufeff]/;s&&0<a&&a<s.length&&d.test(s.charAt(a))&&d.test(s.charAt(a-1))?(u=c.getBookmark(),r.collapse(!0),r=Sc(e,r,e.formatter.get(t)),r=bm(r),e.formatter.apply(t,n,r),c.moveToBookmark(u)):(o&&i.nodeValue===ym||(l=e.getDoc(),f=Nm(!0).dom(),i=(o=l.importNode(f,!0)).firstChild,r.insertNode(o),a=1),e.formatter.apply(t,n,o),c.setCursorLocation(i,a))}(g,p,h);else{var u=g.selection.getNode();g.settings.forced_root_block||!v[0].defaultBlock||i.getParent(u,i.isBlock)||wb(g,v[0].defaultBlock),g
 .selection.setRng(el(g.selection.getRng())),e=Fu.getPersistentBookmark(g.selection,!0),a(i,Sc(g,n.getRng(),v)),b.styles&&hb(i,b,h,u),n.moveToBookmark(e),mc.moveStart(i,n,n.getRng()),g.nodeChanged()}Xv(p,g)}}else{r=n.getNode();for(var s=0,c=v.length;s<c;s++)if(v[s].ceFalseOverride&&i.is(r,v[s].selector))return void y(r,v[s])}},Nb={applyFormat:wb},Eb=Gt.each,Sb=function(e,t,n,r,o){var i,a,u,s,c,l,f,d;null===t.get()&&(a=e,u={},(i=t).set({}),a.on("NodeChange",function(n){var r=mc.getParents(a.dom,n.element),o={};r=Gt.grep(r,function(e){return 1===e.nodeType&&!e.getAttribute("data-mce-bogus")}),Eb(i.get(),function(e,n){Eb(r,function(t){return a.formatter.matchNode(t,n,{},e.similar)?(u[n]||(Eb(e,function(e){e(!0,{node:t,format:n,parents:r})}),u[n]=e),o[n]=e,!1):!hm.matchesUnInheritedFormatSelector(a,t,n)&&void 0})}),Eb(u,function(e,t){o[t]||(delete u[t],Eb(e,function(e){e(!1,{node:n.element,format:t,parents:r})}))})})),c=n,l=r
 ,f=o,d=(s=t).get(),Eb(c.split(","),function(e){d[e]||(d[e]=[],d[e].similar=f),d[e].push(l)}),s.set(d)},kb={get:function(r){var t={valigntop:[{selector:"td,th",styles:{verticalAlign:"top"}}],valignmiddle:[{selector:"td,th",styles:{verticalAlign:"middle"}}],valignbottom:[{selector:"td,th",styles:{verticalAlign:"bottom"}}],alignleft:[{selector:"figure.image",collapsed:!1,classes:"align-left",ceFalseOverride:!0,preview:"font-family font-size"},{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"left"},inherit:!1,preview:!1,defaultBlock:"div"},{selector:"img,table",collapsed:!1,styles:{"float":"left"},preview:"font-family font-size"}],aligncenter:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"center"},inherit:!1,preview:"font-family fo
 nt-size",defaultBlock:"div"},{selector:"figure.image",collapsed:!1,classes:"align-center",ceFalseOverride:!0,preview:"font-family font-size"},{selector:"img",collapsed:!1,styles:{display:"block",marginLeft:"auto",marginRight:"auto"},preview:!1},{selector:"table",collapsed:!1,styles:{marginLeft:"auto",marginRight:"auto"},preview:"font-family font-size"}],alignright:[{selector:"figure.image",collapsed:!1,classes:"align-right",ceFalseOverride:!0,preview:"font-family font-size"},{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"right"},inherit:!1,preview:"font-family font-size",defaultBlock:"div"},{selector:"img,table",collapsed:!1,styles:{"float":"right"},preview:"font-family font-size"}],alignjustify:[{selector:"figure,
 p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"justify"},inherit:!1,defaultBlock:"div",preview:"font-family font-size"}],bold:[{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}},{inline:"b",remove:"all"}],italic:[{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}},{inline:"i",remove:"all"}],underline:[{inline:"span",styles:{textDecoration:"underline"},exact:!0},{inline:"u",remove:"all"}],strikethrough:[{inline:"span",styles:{textDecoration:"line-through"},exact:!0},{inline:"strike",remove:"all"}],forecolor:{inline:"span",styles:{color:"%value"},links:!0,remove_similar:!0,clear_child_styles:!0},hilitecolor:{inline:"span",styles:{backgroundColor:"%value"},lin
 ks:!0,remove_similar:!0,clear_child_styles:!0},fontname:{inline:"span",toggle:!1,styles:{fontFamily:"%value"},clear_child_styles:!0},fontsize:{inline:"span",toggle:!1,styles:{fontSize:"%value"},clear_child_styles:!0},fontsize_class:{inline:"span",attributes:{"class":"%value"}},blockquote:{block:"blockquote",wrapper:1,remove:"all"},subscript:{inline:"sub"},superscript:{inline:"sup"},code:{inline:"code"},link:{inline:"a",selector:"a",remove:"all",split:!0,deep:!0,onmatch:function(){return!0},onformat:function(n,e,t){Gt.each(t,function(e,t){r.setAttrib(n,t,e)})}},removeformat:[{selector:"b,strong,em,i,font,u,strike,sub,sup,dfn,code,samp,kbd,var,cite,mark,q,del,ins",remove:"all",split:!0,expand:!1,block_expand:!0,deep:!0},{selector:"span",attributes:["style","class"],remove:"empty&quot
 ;,split:!0,expand:!1,deep:!0},{selector:"*",attributes:["style","class"],split:!1,expand:!1,deep:!0}]};return Gt.each("p h1 h2 h3 h4 h5 h6 div address pre div dt dd samp".split(/\s/),function(e){t[e]={block:e,remove:"all"}}),t}},Tb=Gt.each,Ab=hi.DOM,Rb=function(e,t){var n,o,r,m=t&&t.schema||ri({}),g=function(e){var t,n,r;return o="string"==typeof e?{name:e,classes:[],attrs:{}}:e,t=Ab.create(o.name),n=t,(r=o).classes.length&&Ab.addClass(n,r.classes.join(" ")),Ab.setAttribs(n,r.attrs),t},p=function(n,e,t){var r,o,i,a,u,s,c,l,f=0<e.length&&e[0],d=f&&f.name;if(u=d,s="string"!=typeof(a=n)?a.nodeName.toLowerCase():a,c=m.getElementRule(s),i=!(!(l=c&&c.parentsRequired)||!l.length)&&(u&&-1!==Gt.inArray(l,u)?u:l[0]))d===i?(o=e[0],e=e.slice(1)):o=i;else if(f)o=e[0],e=e.slice(1);else if(!t)return n;return o&&(r=g(o)).appendChild(n),t&&(r||(r=
 Ab.create("div")).appendChild(n),Gt.each(t,function(e){var t=g(e);r.insertBefore(t,n)})),p(r,e,o&&o.siblings)};return e&&e.length?(o=e[0],n=g(o),(r=Ab.create("div")).appendChild(p(n,e.slice(1),o.siblings)),r):""},_b=function(e){var t,a={classes:[],attrs:{}};return"*"!==(e=a.selector=Gt.trim(e))&&(t=e.replace(/(?:([#\.]|::?)([\w\-]+)|(\[)([^\]]+)\]?)/g,function(e,t,n,r,o){switch(t){case"#":a.attrs.id=n;break;case".":a.classes.push(n);break;case":":-1!==Gt.inArray("checked disabled enabled read-only required".split(" "),n)&&(a.attrs[n]=n)}if("["===r){var i=o.match(/([\w\-]+)(?:\=\"([^\"]+))?/);i&&(a.attrs[i[1]]=i[2])}return""})),a.name=t||"div",a},Db=function(e){return e&&"string"==typeof e?(e=(e=e.split(/\s*,\s*/)[0]).replace(/\s*(~\+|~|\+|>)\s*/g,"$1"),Gt.map(e.split(/(?:>|\s+(?![^\
 [\]]+\]))/),function(e){var t=Gt.map(e.split(/(?:~\+|~|\+)/),_b),n=t.pop();return t.length&&(n.siblings=t),n}).reverse()):[]},Bb=function(n,e){var t,r,o,i,a,u,s="";if(!1===(u=n.settings.preview_styles))return"";"string"!=typeof u&&(u="font-family font-size font-weight font-style text-decoration text-transform color background-color border border-radius outline text-shadow");var c=function(e){return e.replace(/%(\w+)/g,"")};if("string"==typeof e){if(!(e=n.formatter.get(e)))return;e=e[0]}return"preview"in e&&!1===(u=e.preview)?"":(t=e.block||e.inline||"span",(i=Db(e.selector)).length?(i[0].name||(i[0].name=t),t=e.selector,r=Rb(i,n)):r=Rb([t],n),o=Ab.select(t,r)[0]||r.firstChild,Tb(e.styles,function(e,t){(e=c(e))&&Ab.setStyle(o,t,e)}),Tb(e.attributes,function(e,t){(e=c(e))&&Ab.setAttrib(o,t,e)}),Tb(e.classes,function(e){e=c(e),Ab.hasClass(o,e)||Ab.addClass(o
 ,e)}),n.fire("PreviewFormats"),Ab.setStyles(r,{position:"absolute",left:-65535}),n.getBody().appendChild(r),a=Ab.getStyle(n.getBody(),"fontSize",!0),a=/px$/.test(a)?parseInt(a,10):0,Tb(u.split(" "),function(e){var t=Ab.getStyle(o,e,!0);if(!("background-color"===e&&/transparent|rgba\s*\([^)]+,\s*0\)/.test(t)&&(t=Ab.getStyle(n.getBody(),e,!0),"#ffffff"===Ab.toHex(t).toLowerCase())||"color"===e&&"#000000"===Ab.toHex(t).toLowerCase())){if("font-size"===e&&/em|%$/.test(t)){if(0===a)return;t=parseFloat(t)/(/%$/.test(t)?100:1)*a+"px"}"border"===e&&t&&(s+="padding:0 2px;"),s+=e+":"+t+";"}}),n.fire("AfterPreviewFormats"),Ab.remove(r),s)},Ob=function(e,t,n,r,o){var i=t.get(n);!hm.match(e,n,r,o)||"toggle"in i[0]&&!i[0].toggle?Nb.applyFormat(e,n,r,o):ib(e,n,r,o)},Pb=function(e){e.ad
 dShortcut("meta+b","","Bold"),e.addShortcut("meta+i","","Italic"),e.addShortcut("meta+u","","Underline");for(var t=1;t<=6;t++)e.addShortcut("access+"+t,"",["FormatBlock",!1,"h"+t]);e.addShortcut("access+7","",["FormatBlock",!1,"p"]),e.addShortcut("access+8","",["FormatBlock",!1,"div"]),e.addShortcut("access+9","",["FormatBlock",!1,"address"])};function Lb(e){var t,n,r,o=(t=e,n={},(r=function(e,t){e&&("string"!=typeof e?Gt.each(e,function(e,t){r(t,e)}):(t=t.length?t:[t],Gt.each(t,function(e){"undefined"==typeof e.deep&&(e.deep=!e.selector),"undefined"==typeof e.split&&(e.split=!e.selector||e.inline),"undefined"==typeof e.remove&&e.selector&&!e.inline&&a
 mp;(e.remove="none"),e.selector&&e.inline&&(e.mixed=!0,e.block_expand=!0),"string"==typeof e.classes&&(e.classes=e.classes.split(/\s+/))}),n[e]=t))})(kb.get(t.dom)),r(t.settings.formats),{get:function(e){return e?n[e]:n},register:r,unregister:function(e){return e&&n[e]&&delete n[e],n}}),i=Pi(null);return Pb(e),Rm(e),{get:o.get,register:o.register,unregister:o.unregister,apply:d(Nb.applyFormat,e),remove:d(ib,e),toggle:d(Ob,e,o),match:d(hm.match,e),matchAll:d(hm.matchAll,e),matchNode:d(hm.matchNode,e),canApply:d(hm.canApply,e),formatChanged:d(Sb,e,i),getCssText:d(Bb,e)}}var Ib,Mb=Object.prototype.hasOwnProperty,Fb=(Ib=function(e,t){return t},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)Mb.call(o,i)&&(n[i]=Ib(n[i],o[i]))}return n}),zb={register:f
 unction(t,s,c){t.addAttributeFilter("data-mce-tabindex",function(e,t){for(var n,r=e.length;r--;)(n=e[r]).attr("tabindex",n.attributes.map["data-mce-tabindex"]),n.attr(t,null)}),t.addAttributeFilter("src,href,style",function(e,t){for(var n,r,o=e.length,i="data-mce-"+t,a=s.url_converter,u=s.url_converter_scope;o--;)(r=(n=e[o]).attributes.map[i])!==undefined?(n.attr(t,0<r.length?r:null),n.attr(i,null)):(r=n.attributes.map[t],"style"===t?r=c.serializeStyle(c.parseStyle(r),n.name):a&&(r=a.call(u,r,t,n.name)),n.attr(t,0<r.length?r:null))}),t.addAttributeFilter("class",function(e){for(var t,n,r=e.length;r--;)(n=(t=e[r]).attr("class"))&&(n=t.attr("class").replace(/(?:^|\s)mce-item-\w+(?!\S)/g,""),t.attr("class",0<n.length?n:null))}),t.addAttributeFilter("data-mce-type",function(e,t,n){for(var r,o=e.length;o--;)"bookmark"!==(r=e[o]).attrib
 utes.map["data-mce-type"]||n.cleanup||(A.from(r.firstChild).exists(function(e){return!la(e.value)})?r.unwrap():r.remove())}),t.addNodeFilter("noscript",function(e){for(var t,n=e.length;n--;)(t=e[n].firstChild)&&(t.value=Wo.decode(t.value))}),t.addNodeFilter("script,style",function(e,t){for(var n,r,o,i=e.length,a=function(e){return e.replace(/(<!--\[CDATA\[|\]\]-->)/g,"\n").replace(/^[\r\n]*|[\r\n]*$/g,"").replace(/^\s*((<!--)?(\s*\/\/)?\s*<!\[CDATA\[|(<!--\s*)?\/\*\s*<!\[CDATA\[\s*\*\/|(\/\/)?\s*<!--|\/\*\s*<!--\s*\*\/)\s*[\r\n]*/gi,"").replace(/\s*(\/\*\s*\]\]>\s*\*\/(-->)?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g,"")};i--;)r=(n=e[i]).firstChild?n.firstChild.value:"","script"===t?((o=n.attr("type"))&&n.attr("type","mce-no/type"===o?null:o.replace(/^mce\-/,"&quo
 t;)),"xhtml"===s.element_format&&0<r.length&&(n.firstChild.value="// <![CDATA[\n"+a(r)+"\n// ]]>")):"xhtml"===s.element_format&&0<r.length&&(n.firstChild.value="\x3c!--\n"+a(r)+"\n--\x3e")}),t.addNodeFilter("#comment",function(e){for(var t,n=e.length;n--;)0===(t=e[n]).value.indexOf("[CDATA[")?(t.name="#cdata",t.type=4,t.value=t.value.replace(/^\[CDATA\[|\]\]$/g,"")):0===t.value.indexOf("mce:protected ")&&(t.name="#text",t.type=3,t.raw=!0,t.value=unescape(t.value).substr(14))}),t.addNodeFilter("xml:namespace,input",function(e,t){for(var n,r=e.length;r--;)7===(n=e[r]).type?n.remove():1===n.type&&("input"!==t||"type"in n.attributes.map||n.attr("type","text"))}),t.addAttributeFilter("data-mce-type",function(e){F(e,function(e){"format-caret"=
 ==e.attr("data-mce-type")&&(e.isEmpty(t.schema.getNonEmptyElements())?e.remove():e.unwrap())})}),t.addAttributeFilter("data-mce-src,data-mce-href,data-mce-style,data-mce-selected,data-mce-expando,data-mce-type,data-mce-resize",function(e,t){for(var n=e.length;n--;)e[n].attr(t,null)})},trimTrailingBr:function(e){var t,n,r=function(e){return e&&"br"===e.name};r(t=e.lastChild)&&r(n=t.prev)&&(t.remove(),n.remove())}},Ub={process:function(e,t,n){return f=n,(l=e)&&l.hasEventListeners("PreProcess")&&!f.no_events?(o=t,i=n,c=(r=e).dom,o=o.cloneNode(!0),(a=H.document.implementation).createHTMLDocument&&(u=a.createHTMLDocument(""),Gt.each("BODY"===o.nodeName?o.childNodes:[o],function(e){u.body.appendChild(u.importNode(e,!0))}),o="BODY"!==o.nodeName?u.body.firstChild:u.body,s=c.doc,c.doc=u),hp(r,Fb(i,{node:o})),s&&(c.doc=s),o):t;var r,o,i,a,u,s,c,l,f}},Vb=functio
 n(e,a,u){e.addNodeFilter("font",function(e){F(e,function(e){var t,n=a.parse(e.attr("style")),r=e.attr("color"),o=e.attr("face"),i=e.attr("size");r&&(n.color=r),o&&(n["font-family"]=o),i&&(n["font-size"]=u[parseInt(e.attr("size"),10)-1]),e.name="span",e.attr("style",a.serialize(n)),t=e,F(["color","face","size"],function(e){t.attr(e,null)})})})},Hb=function(e,t){var n,r=ii();t.convert_fonts_to_spans&&Vb(e,r,Gt.explode(t.font_size_legacy_values)),n=r,e.addNodeFilter("strike",function(e){F(e,function(e){var t=n.parse(e.attr("style"));t["text-decoration"]="line-through",e.name="span",e.attr("style",n.serialize(t))})})},jb={register:function(e,t){t.inline_styles&&Hb(e,t)}},qb=/^[ \t\r\n]*$/,$b={"#text":3,"#comment":8,"#cdata":4,&quot
 ;#pi":7,"#doctype":10,"#document-fragment":11},Wb=function(e,t,n){var r,o,i=n?"lastChild":"firstChild",a=n?"prev":"next";if(e[i])return e[i];if(e!==t){if(r=e[a])return r;for(o=e.parent;o&&o!==t;o=o.parent)if(r=o[a])return r}},Kb=function(){function a(e,t){this.name=e,1===(this.type=t)&&(this.attributes=[],this.attributes.map={})}return a.create=function(e,t){var n,r;if(n=new a(e,$b[e]||1),t)for(r in t)n.attr(r,t[r]);return n},a.prototype.replace=function(e){return e.parent&&e.remove(),this.insert(e,this),this.remove(),this},a.prototype.attr=function(e,t){var n,r;if("string"!=typeof e){for(r in e)this.attr(r,e[r]);return this}if(n=this.attributes){if(t!==undefined){if(null===t){if(e in n.map)for(delete n.map[e],r=n.length;r--;)if(n[r].name===e)return n=n.splice(r,1),this;return this}if(e in n.map){for(r=n.length;r--;)if(n[r].name===e){n[r].value=t;break}}else n.push({name:e,value:t});re
 turn n.map[e]=t,this}return n.map[e]}},a.prototype.clone=function(){var e,t,n,r,o,i=new a(this.name,this.type);if(n=this.attributes){for((o=[]).map={},e=0,t=n.length;e<t;e++)"id"!==(r=n[e]).name&&(o[o.length]={name:r.name,value:r.value},o.map[r.name]=r.value);i.attributes=o}return i.value=this.value,i.shortEnded=this.shortEnded,i},a.prototype.wrap=function(e){return this.parent.insert(e,this),e.append(this),this},a.prototype.unwrap=function(){var e,t;for(e=this.firstChild;e;)t=e.next,this.insert(e,this,!0),e=t;this.remove()},a.prototype.remove=function(){var e=this.parent,t=this.next,n=this.prev;return e&&(e.firstChild===this?(e.firstChild=t)&&(t.prev=null):n.next=t,e.lastChild===this?(e.lastChild=n)&&(n.next=null):t.prev=n,this.parent=this.next=this.prev=null),this},a.prototype.append=function(e){var t;return e.parent&&e.remove(),(t=this.lastChild)?((t.next=e).prev=t,this.lastChild=e):this.lastChild=this.firstChild=e,e.parent=thi
 s,e},a.prototype.insert=function(e,t,n){var r;return e.parent&&e.remove(),r=t.parent||this,n?(t===r.firstChild?r.firstChild=e:t.prev.next=e,e.prev=t.prev,(e.next=t).prev=e):(t===r.lastChild?r.lastChild=e:t.next.prev=e,e.next=t.next,(e.prev=t).next=e),e.parent=r,e},a.prototype.getAll=function(e){var t,n=[];for(t=this.firstChild;t;t=Wb(t,this))t.name===e&&n.push(t);return n},a.prototype.empty=function(){var e,t,n;if(this.firstChild){for(e=[],n=this.firstChild;n;n=Wb(n,this))e.push(n);for(t=e.length;t--;)(n=e[t]).parent=n.firstChild=n.lastChild=n.next=n.prev=null}return this.firstChild=this.lastChild=null,this},a.prototype.isEmpty=function(e,t,n){var r,o,i=this.firstChild;if(t=t||{},i)do{if(1===i.type){if(i.attributes.map["data-mce-bogus"])continue;if(e[i.name])return!1;for(r=i.attributes.length;r--;)if("name"===(o=i.attributes[r].name)||0===o.indexOf("data-mce-bookmark"))return!1}if(8===i.type)return!1;if(3===i.type&&!qb.test(i.val
 ue))return!1;if(3===i.type&&i.parent&&t[i.parent.name]&&qb.test(i.value))return!1;if(n&&n(i))return!1}while(i=Wb(i,this));return!0},a.prototype.walk=function(e){return Wb(this,null,e)},a}(),Xb=function(e,t,n,r){(e.padd_empty_with_br||t.insert)&&n[r.name]?r.empty().append(new Kb("br",1)).shortEnded=!0:r.empty().append(new Kb("#text",3)).value="\xa0"},Yb=function(e){return Gb(e,"#text")&&"\xa0"===e.firstChild.value},Gb=function(e,t){return e&&e.firstChild&&e.firstChild===e.lastChild&&e.firstChild.name===t},Jb=function(r,e,t,n){return n.isEmpty(e,t,function(e){return t=e,(n=r.getElementRule(t.name))&&n.paddEmpty;var t,n})},Qb=function(e,t){return e&&(t[e.name]||"br"===e.name)},Zb=function(e,p){var h=e.schema;p.remove_trailing_brs&&e.addNodeFilter("br",function(e,t,n){var r,o,i,a,u,s,c,l,f=e.length,d=Gt.extend({},h.getBlock
 Elements()),m=h.getNonEmptyElements(),g=h.getNonEmptyElements();for(d.body=1,r=0;r<f;r++)if(i=(o=e[r]).parent,d[o.parent.name]&&o===i.lastChild){for(u=o.prev;u;){if("span"!==(s=u.name)||"bookmark"!==u.attr("data-mce-type")){if("br"!==s)break;if("br"===s){o=null;break}}u=u.prev}o&&(o.remove(),Jb(h,m,g,i)&&(c=h.getElementRule(i.name))&&(c.removeEmpty?i.remove():c.paddEmpty&&Xb(p,n,d,i)))}else{for(a=o;i&&i.firstChild===a&&i.lastChild===a&&!d[(a=i).name];)i=i.parent;a===i&&!0!==p.padd_empty_with_br&&((l=new Kb("#text",3)).value="\xa0",o.replace(l))}}),e.addAttributeFilter("href",function(e){var t,n,r,o=e.length;if(!p.allow_unsafe_link_target)for(;o--;)"a"===(t=e[o]).name&&"_blank"===t.attr("target")&&t.attr("rel",(n=t.attr("rel"),r=n?Gt.trim(n):"",/\b(
 noopener)\b/g.test(r)?r:r.split(" ").filter(function(e){return 0<e.length}).concat(["noopener"]).sort().join(" ")))}),p.allow_html_in_named_anchor||e.addAttributeFilter("id,name",function(e){for(var t,n,r,o,i=e.length;i--;)if("a"===(o=e[i]).name&&o.firstChild&&!o.attr("href"))for(r=o.parent,t=o.lastChild;n=t.prev,r.insert(t,o),t=n;);}),p.fix_list_elements&&e.addNodeFilter("ul,ol",function(e){for(var t,n,r=e.length;r--;)if("ul"===(n=(t=e[r]).parent).name||"ol"===n.name)if(t.prev&&"li"===t.prev.name)t.prev.append(t);else{var o=new Kb("li",1);o.attr("style","list-style-type: none"),t.wrap(o)}}),p.validate&&h.getValidClasses()&&e.addAttributeFilter("class",function(e){for(var t,n,r,o,i,a,u,s=e.length,c=h.getValidClasses();s--;){for(n=(t=e[s]).attr("class").split(" "),i="&quo
 t;,r=0;r<n.length;r++)o=n[r],u=!1,(a=c["*"])&&a[o]&&(u=!0),a=c[t.name],!u&&a&&a[o]&&(u=!0),u&&(i&&(i+=" "),i+=o);i.length||(i=null),t.attr("class",i)}})},ey=Gt.makeMap,ty=Gt.each,ny=Gt.explode,ry=Gt.extend;function oy(k,T){void 0===T&&(T=ri());var A={},R=[],_={},D={};(k=k||{}).validate=!("validate"in k)||k.validate,k.root_name=k.root_name||"body";var B=function(e){var t,n,r;(n=e.name)in A&&((r=_[n])?r.push(e):_[n]=[e]),t=R.length;for(;t--;)(n=R[t].name)in e.attributes.map&&((r=D[n])?r.push(e):D[n]=[e]);return e},e={schema:T,addAttributeFilter:function(e,n){ty(ny(e),function(e){var t;for(t=0;t<R.length;t++)if(R[t].name===e)return void R[t].callbacks.push(n);R.push({name:e,callbacks:[n]})})},getAttributeFilters:function(){return[].concat(R)},addNodeFilter:function(e,n){ty(ny(e),function(e){var t=A[e];t||(A[e]=t=[]),t.push(n)})},getNodeFilters:function
 (){var e=[];for(var t in A)A.hasOwnProperty(t)&&e.push({name:t,callbacks:A[t]});return e},filterNode:B,parse:function(e,a){var t,n,r,o,i,u,s,c,l,f,d,m=[];a=a||{},_={},D={},l=ry(ey("script,style,head,html,body,title,meta,param"),T.getBlockElements());var g=T.getNonEmptyElements(),p=T.children,h=k.validate,v="forced_root_block"in a?a.forced_root_block:k.forced_root_block,b=T.getWhiteSpaceElements(),y=/^[ \t\r\n]+/,C=/[ \t\r\n]+$/,x=/[ \t\r\n]+/g,w=/^[ \t\r\n]+$/;f=b.hasOwnProperty(a.context)||b.hasOwnProperty(k.root_name);var N=function(e,t){var n,r=new Kb(e,t);return e in A&&((n=_[e])?n.push(r):_[e]=[r]),r},E=function(e){var t,n,r,o,i=T.getBlockElements();for(t=e.prev;t&&3===t.type;){if(0<(r=t.value.replace(C,"")).length)return void(t.value=r);if(n=t.next){if(3===n.type&&n.value.length){t=t.prev;continue}if(!i[n.name]&&"script"!==n.name&&"style"!==n.name){t=t.prev;continue}}o=t.prev,t
 .remove(),t=o}};t=Nv({validate:h,allow_script_urls:k.allow_script_urls,allow_conditional_comments:k.allow_conditional_comments,self_closing_elements:function(e){var t,n={};for(t in e)"li"!==t&&"p"!==t&&(n[t]=e[t]);return n}(T.getSelfClosingElements()),cdata:function(e){d.append(N("#cdata",4)).value=e},text:function(e,t){var n;f||(e=e.replace(x," "),Qb(d.lastChild,l)&&(e=e.replace(y,""))),0!==e.length&&((n=N("#text",3)).raw=!!t,d.append(n).value=e)},comment:function(e){d.append(N("#comment",8)).value=e},pi:function(e,t){d.append(N(e,7)).value=t,E(d)},doctype:function(e){d.append(N("#doctype",10)).value=e,E(d)},start:function(e,t,n){var r,o,i,a,u;if(i=h?T.getElementRule(e):{}){for((r=N(i.outputName||e,1)).attributes=t,r.shortEnded=n,d.append(r),(u=p[d.name])&&p[r.name]&&!u[r.name]&&m.push(r),o=R.length;o--;)(a=R[o].name)in t.map&&((s=D[a])?s.p
 ush(r):D[a]=[r]);l[e]&&E(r),n||(d=r),!f&&b[e]&&(f=!0)}},end:function(e){var t,n,r,o,i;if(n=h?T.getElementRule(e):{}){if(l[e]&&!f){if((t=d.firstChild)&&3===t.type)if(0<(r=t.value.replace(y,"")).length)t.value=r,t=t.next;else for(o=t.next,t.remove(),t=o;t&&3===t.type;)r=t.value,o=t.next,(0===r.length||w.test(r))&&(t.remove(),t=o),t=o;if((t=d.lastChild)&&3===t.type)if(0<(r=t.value.replace(C,"")).length)t.value=r,t=t.prev;else for(o=t.prev,t.remove(),t=o;t&&3===t.type;)r=t.value,o=t.prev,(0===r.length||w.test(r))&&(t.remove(),t=o),t=o}if(f&&b[e]&&(f=!1),n.removeEmpty&&Jb(T,g,b,d)&&!d.attributes.map.name&&!d.attr("id"))return i=d.parent,l[d.name]?d.empty().remove():d.unwrap(),void(d=i);n.paddEmpty&&(Yb(d)||Jb(T,g,b,d))&&Xb(k,a,l,d),d=d.parent}}},T);var S=d=new Kb(a.context||k.root_name,11);if(t.parse(e),h&&m.le
 ngth&&(a.context?a.invalid=!0:function(e){var t,n,r,o,i,a,u,s,c,l,f,d,m,g,p,h;for(d=ey("tr,td,th,tbody,thead,tfoot,table"),l=T.getNonEmptyElements(),f=T.getWhiteSpaceElements(),m=T.getTextBlockElements(),g=T.getSpecialElements(),t=0;t<e.length;t++)if((n=e[t]).parent&&!n.fixed)if(m[n.name]&&"li"===n.parent.name){for(p=n.next;p&&m[p.name];)p.name="li",p.fixed=!0,n.parent.insert(p,n.parent),p=p.next;n.unwrap(n)}else{for(o=[n],r=n.parent;r&&!T.isValidChild(r.name,n.name)&&!d[r.name];r=r.parent)o.push(r);if(r&&1<o.length){for(o.reverse(),i=a=B(o[0].clone()),c=0;c<o.length-1;c++){for(T.isValidChild(a.name,o[c].name)?(u=B(o[c].clone()),a.append(u)):u=a,s=o[c].firstChild;s&&s!==o[c+1];)h=s.next,u.append(s),s=h;a=u}Jb(T,l,f,i)?r.insert(n,o[0],!0):(r.insert(i,o[0],!0),r.insert(n,i)),r=o[0],(Jb(T,l,f,r)||Gb(r,"br"))&&r.empty().remove()}else if(n.parent){if("li"===n
 .name){if((p=n.prev)&&("ul"===p.name||"ul"===p.name)){p.append(n);continue}if((p=n.next)&&("ul"===p.name||"ul"===p.name)){p.insert(n,p.firstChild,!0);continue}n.wrap(B(new Kb("ul",1)));continue}T.isValidChild(n.parent.name,"div")&&T.isValidChild("div",n.name)?n.wrap(B(new Kb("div",1))):g[n.name]?n.empty().remove():n.unwrap()}}}(m)),v&&("body"===S.name||a.isRootContent)&&function(){var e,t,n=S.firstChild,r=function(e){e&&((n=e.firstChild)&&3===n.type&&(n.value=n.value.replace(y,"")),(n=e.lastChild)&&3===n.type&&(n.value=n.value.replace(C,"")))};if(T.isValidChild(S.name,v.toLowerCase())){for(;n;)e=n.next,3===n.type||1===n.type&&"p"!==n.name&&!l[n.name]&&!n.attr("data-mce-type")?(t||((t=N(v,1)).attr(k.forced_root_block_attrs),S.insert(t,n)),t.append(n)):(r
 (t),t=null),n=e;r(t)}}(),!a.invalid){for(c in _){for(s=A[c],i=(n=_[c]).length;i--;)n[i].parent||n.splice(i,1);for(r=0,o=s.length;r<o;r++)s[r](n,c,a)}for(r=0,o=R.length;r<o;r++)if((s=R[r]).name in D){for(i=(n=D[s.name]).length;i--;)n[i].parent||n.splice(i,1);for(i=0,u=s.callbacks.length;i<u;i++)s.callbacks[i](n,s.name,a)}}return S}};return Zb(e,k),jb.register(e,k),e}var iy=function(e,t,n){-1===Gt.inArray(t,n)&&(e.addAttributeFilter(n,function(e,t){for(var n=e.length;n--;)e[n].attr(t,null)}),t.push(n))},ay=function(e,t,n){var r=da(n.getInner?t.innerHTML:e.getOuterHTML(t));return n.selection||Co(or.fromDom(t))?r:Gt.trim(r)},uy=function(e,t,n){var r=n.selection?Fb({forced_root_block:!1},n):n,o=e.parse(t,r);return zb.trimTrailingBr(o),o},sy=function(e,t,n,r,o){var i,a,u,s,c=(i=r,Jc(t,n).serialize(i));return a=e,s=c,!(u=o).no_events&&a?vp(a,Fb(u,{content:s})).content:s};function cy(e,t){var a,u,s,c,l,n,r=(a=e,n=["data-mce-selected"],s=(u=t)&&u.do
 m?u.dom:hi.DOM,c=u&&u.schema?u.schema:ri(a),a.entity_encoding=a.entity_encoding||"named",a.remove_trailing_brs=!("remove_trailing_brs"in a)||a.remove_trailing_brs,l=oy(a,c),zb.register(l,a,s),{schema:c,addNodeFilter:l.addNodeFilter,addAttributeFilter:l.addAttributeFilter,serialize:function(e,t){var n=Fb({format:"html"},t||{}),r=Ub.process(u,e,n),o=ay(s,r,n),i=uy(l,o,n);return"tree"===n.format?i:sy(u,a,c,i,n)},addRules:function(e){c.addValidElements(e)},setRules:function(e){c.setValidElements(e)},addTempAttr:d(iy,l,n),getTempAttrs:function(){return n}});return{schema:r.schema,addNodeFilter:r.addNodeFilter,addAttributeFilter:r.addAttributeFilter,serialize:r.serialize,addRules:r.addRules,setRules:r.setRules,addTempAttr:r.addTempAttr,getTempAttrs:r.getTempAttrs}}function ly(e){return{getBookmark:d(uc,e),moveToBookmark:d(sc,e)}}(ly||(ly={})).isBookmarkNode=cc;var fy,dy,my=ly,gy=Bo.isContentEditableFalse,py=Bo.isContentEditableTrue,hy=functi
 on(r,a){var u,s,c,l,f,d,m,g,p,h,v,b,i,y,C,x,w,N=a.dom,E=Gt.each,S=a.getDoc(),k=H.document,T=Math.abs,A=Math.round,R=a.getBody();l={nw:[0,0,-1,-1],ne:[1,0,1,-1],se:[1,1,1,1],sw:[0,1,-1,1]};var e=".mce-content-body";a.contentStyles.push(e+" div.mce-resizehandle {position: absolute;border: 1px solid black;box-sizing: content-box;background: #FFF;width: 7px;height: 7px;z-index: 10000}"+e+" .mce-resizehandle:hover {background: #000}"+e+" img[data-mce-selected],"+e+" hr[data-mce-selected] {outline: 1px solid black;resize: none}"+e+" .mce-clonedresizable {position: absolute;"+(me.gecko?"":"outline: 1px dashed black;")+"opacity: .5;filter: alpha(opacity=50);z-index: 10000}"+e+" .mce-resize-helper {background: #555;background: rgba(0,0,0,0.75);border-radius: 3px;border: 1px;color: white;display: none;font-family: sans-serif;font-size: 12px;white-space: nowrap;line-height: 14px;margin: 5px 10px;padd
 ing: 5px;position: absolute;z-index: 10001}");var _=function(e){return e&&("IMG"===e.nodeName||a.dom.is(e,"figure.image"))},n=function(e){var t,n,r=e.target;t=e,n=a.selection.getRng(),!_(t.target)||mv(t.clientX,t.clientY,n)||e.isDefaultPrevented()||(e.preventDefault(),a.selection.select(r))},D=function(e){return a.dom.is(e,"figure.image")?e.querySelector("img"):e},B=function(e){var t=a.settings.object_resizing;return!1!==t&&!me.iOS&&("string"!=typeof t&&(t="table,img,figure.image,div"),"false"!==e.getAttribute("data-mce-resize")&&e!==a.getBody()&&Br(or.fromDom(e),t))},O=function(e){var t,n,r,o;t=e.screenX-d,n=e.screenY-m,y=t*f[2]+h,C=n*f[3]+v,y=y<5?5:y,C=C<5?5:C,(_(u)&&!1!==a.settings.resize_img_proportional?!pv.modifierPressed(e):pv.modifierPressed(e)||_(u)&&f[2]*f[3]!=0)&&(T(t)>T(n)?(C=A(y*b),y=A(C/b)):(y=A(C/b),C=A(y
 *b))),N.setStyles(D(s),{width:y,height:C}),r=0<(r=f.startPos.x+t)?r:0,o=0<(o=f.startPos.y+n)?o:0,N.setStyles(c,{left:r,top:o,display:"block"}),c.innerHTML=y+" &times; "+C,f[2]<0&&s.clientWidth<=y&&N.setStyle(s,"left",g+(h-y)),f[3]<0&&s.clientHeight<=C&&N.setStyle(s,"top",p+(v-C)),(t=R.scrollWidth-x)+(n=R.scrollHeight-w)!=0&&N.setStyles(c,{left:r-t,top:o-n}),i||(xp(a,u,h,v),i=!0)},P=function(){i=!1;var e=function(e,t){t&&(u.style[e]||!a.schema.isValid(u.nodeName.toLowerCase(),e)?N.setStyle(D(u),e,t):N.setAttrib(D(u),e,t))};e("width",y),e("height",C),N.unbind(S,"mousemove",O),N.unbind(S,"mouseup",P),k!==S&&(N.unbind(k,"mousemove",O),N.unbind(k,"mouseup",P)),N.remove(s),N.remove(c),o(u),wp(a,u,y,C),N.setAttrib(u,"style",N.getAttrib(u,"style")),a.nodeChanged()},o=function(e){var t,r,o,n,i;L()
 ,F(),t=N.getPos(e,R),g=t.x,p=t.y,i=e.getBoundingClientRect(),r=i.width||i.right-i.left,o=i.height||i.bottom-i.top,u!==e&&(u=e,y=C=0),n=a.fire("ObjectSelected",{target:e}),B(e)&&!n.isDefaultPrevented()?E(l,function(n,e){var t;(t=N.get("mceResizeHandle"+e))&&N.remove(t),t=N.add(R,"div",{id:"mceResizeHandle"+e,"data-mce-bogus":"all","class":"mce-resizehandle",unselectable:!0,style:"cursor:"+e+"-resize; margin:0; padding:0"}),11===me.ie&&(t.contentEditable=!1),N.bind(t,"mousedown",function(e){var t;e.stopImmediatePropagation(),e.preventDefault(),d=(t=e).screenX,m=t.screenY,h=D(u).clientWidth,v=D(u).clientHeight,b=v/h,(f=n).startPos={x:r*n[0]+g,y:o*n[1]+p},x=R.scrollWidth,w=R.scrollHeight,s=u.cloneNode(!0),N.addClass(s,"mce-clonedresizable"),N.setAttrib(s,"data-mce-bogus","all"),s.contentEditable=!1,s.unSelectabe=!0,N.
 setStyles(s,{left:g,top:p,margin:0}),s.removeAttribute("data-mce-selected"),R.appendChild(s),N.bind(S,"mousemove",O),N.bind(S,"mouseup",P),k!==S&&(N.bind(k,"mousemove",O),N.bind(k,"mouseup",P)),c=N.add(R,"div",{"class":"mce-resize-helper","data-mce-bogus":"all"},h+" &times; "+v)}),n.elm=t,N.setStyles(t,{left:r*n[0]+g-t.offsetWidth/2,top:o*n[1]+p-t.offsetHeight/2})}):L(),u.setAttribute("data-mce-selected","1")},L=function(){var e,t;for(e in F(),u&&u.removeAttribute("data-mce-selected"),l)(t=N.get("mceResizeHandle"+e))&&(N.unbind(t),N.remove(t))},I=function(e){var t,n=function(e,t){if(e)do{if(e===t)return!0}while(e=e.parentNode)};i||a.removed||(E(N.select("img[data-mce-selected],hr[data-mce-selected]"),function(e){e.removeAttribute("data-mce-selected")}),t="mousedown"===e.type?e.t
 arget:r.getNode(),n(t=N.$(t).closest("table,img,figure.image,hr")[0],R)&&(z(),n(r.getStart(!0),t)&&n(r.getEnd(!0),t))?o(t):L())},M=function(e){return gy(function(e,t){for(;t&&t!==e;){if(py(t)||gy(t))return t;t=t.parentNode}return null}(a.getBody(),e))},F=function(){for(var e in l){var t=l[e];t.elm&&(N.unbind(t.elm),delete t.elm)}},z=function(){try{a.getDoc().execCommand("enableObjectResizing",!1,!1)}catch(e){}};return a.on("init",function(){z(),me.ie&&11<=me.ie&&(a.on("mousedown click",function(e){var t=e.target,n=t.nodeName;i||!/^(TABLE|IMG|HR)$/.test(n)||M(t)||(2!==e.button&&a.selection.select(t,"TABLE"===n),"mousedown"===e.type&&a.nodeChanged())}),a.dom.bind(R,"mscontrolselect",function(e){var t=function(e){be.setEditorTimeout(a,function(){a.selection.select(e)})};if(M(e.target))return e.preventDefault(),void t(e.target);/^(TABLE|IMG|HR)$/.test(
 e.target.nodeName)&&(e.preventDefault(),"IMG"===e.target.tagName&&t(e.target))}));var t=be.throttle(function(e){a.composing||I(e)});a.on("nodechange ResizeEditor ResizeWindow drop FullscreenStateChanged",t),a.on("keyup compositionend",function(e){u&&"TABLE"===u.nodeName&&t(e)}),a.on("hide blur",L),a.on("contextmenu",n)}),a.on("remove",F),{isResizable:B,showResizeRect:o,hideResizeRect:L,updateResizeRect:I,destroy:function(){u=s=null}}},vy=function(e){for(var t=0,n=0,r=e;r&&r.nodeType;)t+=r.offsetLeft||0,n+=r.offsetTop||0,r=r.offsetParent;return{x:t,y:n}},by=function(e,t,n){var r,o,i,a,u,s=e.dom,c=s.getRoot(),l=0;if(u={elm:t,alignToTop:n},e.fire("scrollIntoView",u),!u.isDefaultPrevented()&&Bo.isElement(t)){if(!1===n&&(l=t.offsetHeight),"BODY"!==c.nodeName){var f=e.selection.getScrollContainer();if(f)return r=vy(t).y-vy(f).y+l,a=f.clientHeigh
 t,void((r<(i=f.scrollTop)||i+a<r+25)&&(f.scrollTop=r<i?r:r-a+25))}o=s.getViewPort(e.getWin()),r=s.getPos(t).y+l,i=o.y,a=o.h,(r<o.y||i+a<r+25)&&e.getWin().scrollTo(0,r<i?r:r-a+25)}},yy=function(d,e){te(gu.fromRangeStart(e).getClientRects()).each(function(e){var t,n,r,o,i,a,u,s,c,l=function(e){if(e.inline)return e.getBody().getBoundingClientRect();var t=e.getWin();return{left:0,right:t.innerWidth,top:0,bottom:t.innerHeight,width:t.innerWidth,height:t.innerHeight}}(d),f={x:(i=t=l,a=n=e,a.left>i.left&&a.right<i.right?0:a.left<i.left?a.left-i.left:a.right-i.right),y:(r=t,o=n,o.top>r.top&&o.bottom<r.bottom?0:o.top<r.top?o.top-r.top:o.bottom-r.bottom)};s=0!==f.x?0<f.x?f.x+4:f.x-4:0,c=0!==f.y?0<f.y?f.y+4:f.y-4:0,(u=d).inline?(u.getBody().scrollLeft+=s,u.getBody().scrollTop+=c):u.getWin().scrollBy(s,c)})},Cy=function(e){return Bo.isContentEditableTrue(e)||Bo.isContentEditableFalse(e)},xy=function(e,t,n){var r,o,i,a,u,s
 =n;if(s.caretPositionFromPoint)(o=s.caretPositionFromPoint(e,t))&&((r=n.createRange()).setStart(o.offsetNode,o.offset),r.collapse(!0));else if(n.caretRangeFromPoint)r=n.caretRangeFromPoint(e,t);else if(s.body.createTextRange){r=s.body.createTextRange();try{r.moveToPoint(e,t),r.collapse(!0)}catch(c){r=function(e,n,t){var r,o,i;if(r=t.elementFromPoint(e,n),o=t.body.createTextRange(),r&&"HTML"!==r.tagName||(r=t.body),o.moveToElementText(r),0<(i=(i=Gt.toArray(o.getClientRects())).sort(function(e,t){return(e=Math.abs(Math.max(e.top-n,e.bottom-n)))-(t=Math.abs(Math.max(t.top-n,t.bottom-n)))})).length){n=(i[0].bottom+i[0].top)/2;try{return o.moveToPoint(e,n),o.collapse(!0),o}catch(a){}}return null}(e,t,n)}return i=r,a=n.body,u=i&&i.parentElement?i.parentElement():null,Bo.isContentEditableFalse(function(e,t,n){for(;e&&e!==t;){if(n(e))return e;e=e.parentNode}return null}(u,a,Cy))?null:i}return r},wy=function(n,e){return W(e,function(e){var t=n.fir
 e("GetSelectionRange",{range:e});return t.range!==e?t.range:e})},Ny=function(e,t){var n=(t||H.document).createDocumentFragment();return F(e,function(e){n.appendChild(e.dom())}),or.fromDom(n)},Ey=Sr("element","width","rows"),Sy=Sr("element","cells"),ky=Sr("x","y"),Ty=function(e,t){var n=parseInt(Cr(e,t),10);return isNaN(n)?1:n},Ay=function(e){return U(e,function(e,t){return t.cells().length>e?t.cells().length:e},0)},Ry=function(e,t){for(var n=e.rows(),r=0;r<n.length;r++)for(var o=n[r].cells(),i=0;i<o.length;i++)if(Pr(o[i],t))return A.some(ky(i,r));return A.none()},_y=function(e,t,n,r,o){for(var i=[],a=e.rows(),u=n;u<=o;u++){var s=a[u].cells(),c=t<r?s.slice(t,r+1):s.slice(r,t+1);i.push(Sy(a[u].element(),c))}return i},Dy=function(e){var o=Ey(aa(e),0,[]);return F(ji(e,"tr"),function(n,r){F(ji(n,"td,th"),function(e,t){!function(e,t,n,r,o){for(var i=Ty(o,"rowspan"),
 a=Ty(o,"colspan"),u=e.rows(),s=n;s<n+i;s++){u[s]||(u[s]=Sy(ua(r),[]));for(var c=t;c<t+a;c++)u[s].cells()[c]=s===n&&c===t?o:aa(o)}}(o,function(e,t,n){for(;r=t,o=n,i=void 0,((i=e.rows())[o]?i[o].cells():[])[r];)t++;var r,o,i;return t}(o,t,r),r,n,e)})}),Ey(o.element(),Ay(o.rows()),o.rows())},By=function(e){return n=W((t=e).rows(),function(e){var t=W(e.cells(),function(e){var t=ua(e);return xr(t,"colspan"),xr(t,"rowspan"),t}),n=aa(e.element());return Ri(n,t),n}),r=aa(t.element()),o=or.fromTag("tbody"),Ri(o,n),Ai(r,o),r;var t,n,r,o},Oy=function(l,e,t){return Ry(l,e).bind(function(c){return Ry(l,t).map(function(e){return t=l,r=e,o=(n=c).x(),i=n.y(),a=r.x(),u=r.y(),s=i<u?_y(t,o,i,a,u):_y(t,o,u,a,i),Ey(t.element(),Ay(s),s);var t,n,r,o,i,a,u,s})})},Py=function(n,t){return V(n,function(e){return"li"===sr(e)&&Mh(e,t)}).fold(q([]),function(e){return(t=n,V(t,function(e){return"ul"===sr(e)||"ol"===sr(e)
 })).map(function(e){return[or.fromTag("li"),or.fromTag(sr(e))]}).getOr([]);var t})},Ly=function(e,t){var n,r=or.fromDom(t.commonAncestorContainer),o=Ml(r,e),i=z(o,function(e){return fo(e)||co(e)}),a=Py(o,t),u=i.concat(a.length?a:ho(n=r)?Mr(n).filter(po).fold(q([]),function(e){return[n,e]}):po(n)?[n]:[]);return W(u,aa)},Iy=function(){return Ny([])},My=function(e,t){return n=or.fromDom(t.cloneContents()),r=Ly(e,t),o=U(r,function(e,t){return Ai(t,e),t},n),0<r.length?Ny([o]):o;var n,r,o},Fy=function(e,o){return(t=e,n=o[0],Xi(n,"table",d(Pr,t))).bind(function(e){var t=o[0],n=o[o.length-1],r=Dy(e);return Oy(r,t,n).map(function(e){return Ny([By(e)])})}).getOrThunk(Iy);var t,n},zy=function(e,t){var n,r,o=Qd(t,e);return 0<o.length?Fy(e,o):(n=e,0<(r=t).length&&r[0].collapsed?Iy():My(n,r[0]))},Uy=function(e,t){if(void 0===t&&(t={}),t.get=!0,t.format=t.format||"html",t.selection=!0,(t=e.fire("BeforeGetContent",t)).isDefaultPrevent
 ed())return e.fire("GetContent",t),t.content;if("text"===t.format)return c=e,A.from(c.selection.getRng()).map(function(e){var t=c.dom.add(c.getBody(),"div",{"data-mce-bogus":"all",style:"overflow: hidden; opacity: 0;"},e.cloneContents()),n=da(t.innerText);return c.dom.remove(t),n}).getOr("");t.getInner=!0;var n,r,o,i,a,u,s,c,l=(r=t,i=(n=e).selection.getRng(),a=n.dom.create("body"),u=n.selection.getSel(),s=wy(n,Wd(u)),(o=r.contextual?zy(or.fromDom(n.getBody()),s).dom():i.cloneContents())&&a.appendChild(o),n.selection.serializer.serialize(a,r));return"tree"===t.format?l:(t.content=e.selection.isCollapsed()?"":l,e.fire("GetContent",t),t.content)},Vy=function(e,t,n){var r,o,i,a=e.selection.getRng(),u=e.getDoc();if((n=n||{format:"html"}).set=!0,n.selection=!0,n.content=t,n.no_events||!(n=e.fire("BeforeSetContent",n)).isDefaultPrevented()){if(t=n.conten
 t,a.insertNode){t+='<span id="__caret">_</span>',a.startContainer===u&&a.endContainer===u?u.body.innerHTML=t:(a.deleteContents(),0===u.body.childNodes.length?u.body.innerHTML=t:a.createContextualFragment?a.insertNode(a.createContextualFragment(t)):(o=u.createDocumentFragment(),i=u.createElement("div"),o.appendChild(i),i.outerHTML=t,a.insertNode(o))),r=e.dom.get("__caret"),(a=u.createRange()).setStartBefore(r),a.setEndBefore(r),e.selection.setRng(a),e.dom.remove("__caret");try{e.selection.setRng(a)}catch(s){}}else a.item&&(u.execCommand("Delete",!1,null),a=e.getRng()),/^\s+/.test(t)?(a.pasteHTML('<span id="__mce_tmp">_</span>'+t),e.dom.remove("__mce_tmp")):a.pasteHTML(t);n.no_events||e.fire("SetContent",n)}else e.fire("SetContent",n)},Hy=function(e,t,n,r,o){var i=n?t.startContainer:t.endContainer,a=n?t.startOffset:t.endOffset;return A.from(i).map(or.fromDo
 m).map(function(e){return r&&t.collapsed?e:jr(e,o(e,a)).getOr(e)}).bind(function(e){return lr(e)?A.some(e):Mr(e)}).map(function(e){return e.dom()}).getOr(e)},jy=function(e,t,n){return Hy(e,t,!0,n,function(e,t){return Math.min(e.dom().childNodes.length,t)})},qy=function(e,t,n){return Hy(e,t,!1,n,function(e,t){return 0<t?t-1:t})},$y=function(e,t){for(var n=e;e&&Bo.isText(e)&&0===e.length;)e=t?e.nextSibling:e.previousSibling;return e||n},Wy=Gt.each,Ky=function(e){return!!e.select},Xy=function(e){return!(!e||!e.ownerDocument)&&Lr(or.fromDom(e.ownerDocument),or.fromDom(e))},Yy=function(u,s,e,c){var n,t,l,f,a,r=function(e,t){return Vy(c,e,t)},o=function(e){var t=m();t.collapse(!!e),i(t)},d=function(){return s.getSelection?s.getSelection():s.document.selection},m=function(){var e,t,n,r,o=function(e,t,n){try{return t.compareBoundaryPoints(e,n)}catch(r){return-1}};if(!s)return null;if(null==(r=s.document))return null;if(c.bookmark!==undefined&&!1===
 Kp(c)){var i=np(c);if(i.isSome())return i.map(function(e){return wy(c,[e])[0]}).getOr(r.createRange())}try{(e=d())&&(t=0<e.rangeCount?e.getRangeAt(0):e.createRange?e.createRange():r.createRange())}catch(a){}return(t=wy(c,[t])[0])||(t=r.createRange?r.createRange():r.body.createTextRange()),t.setStart&&9===t.startContainer.nodeType&&t.collapsed&&(n=u.getRoot(),t.setStart(n,0),t.setEnd(n,0)),l&&f&&(0===o(t.START_TO_START,t,l)&&0===o(t.END_TO_END,t,l)?t=f:f=l=null),t},i=function(e,t){var n,r;if((o=e)&&(Ky(o)||Xy(o.startContainer)&&Xy(o.endContainer))){var o,i=Ky(e)?e:null;if(i){f=null;try{i.select()}catch(a){}}else{if(n=d(),e=c.fire("SetSelectionRange",{range:e,forward:t}).range,n){f=e;try{n.removeAllRanges(),n.addRange(e)}catch(a){}!1===t&&n.extend&&(n.collapse(e.endContainer,e.endOffset),n.extend(e.startContainer,e.startOffset)),l=0<n.rangeCount?n.getRangeAt(0):null}e.collapsed||e.s
 tartContainer!==e.endContainer||!n.setBaseAndExtent||me.ie||e.endOffset-e.startOffset<2&&e.startContainer.hasChildNodes()&&(r=e.startContainer.childNodes[e.startOffset])&&"IMG"===r.tagName&&(n.setBaseAndExtent(e.startContainer,e.startOffset,e.endContainer,e.endOffset),n.anchorNode===e.startContainer&&n.focusNode===e.endContainer||n.setBaseAndExtent(r,0,r,1)),c.fire("AfterSetSelectionRange",{range:e,forward:t})}}},g=function(){var e,t,n=d();return!(n&&n.anchorNode&&n.focusNode)||((e=u.createRng()).setStart(n.anchorNode,n.anchorOffset),e.collapse(!0),(t=u.createRng()).setStart(n.focusNode,n.focusOffset),t.collapse(!0),e.compareBoundaryPoints(e.START_TO_START,t)<=0)},p={bookmarkManager:null,controlSelection:null,dom:u,win:s,serializer:e,editor:c,collapse:o,setCursorLocation:function(e,t){var n=u.createRng();e?(n.setStart(e,t),n.setEnd(e,t),i(n),o(!1)):(Fh(u,n,c.getBody(),!0),i(n))},getContent:function(e){
 return Uy(c,e)},setContent:r,getBookmark:function(e,t){return n.getBookmark(e,t)},moveToBookmark:function(e){return n.moveToBookmark(e)},select:function(e,t){var r,n,o;return(r=u,n=e,o=t,A.from(n).map(function(e){var t=r.nodeIndex(e),n=r.createRng();return n.setStart(e.parentNode,t),n.setEnd(e.parentNode,t+1),o&&(Fh(r,n,e,!0),Fh(r,n,e,!1)),n})).each(i),e},isCollapsed:function(){var e=m(),t=d();return!(!e||e.item)&&(e.compareEndPoints?0===e.compareEndPoints("StartToEnd",e):!t||e.collapsed)},isForward:g,setNode:function(e){return r(u.getOuterHTML(e)),e},getNode:function(){return e=c.getBody(),(t=m())?(r=t.startContainer,o=t.endContainer,i=t.startOffset,a=t.endOffset,n=t.commonAncestorContainer,!t.collapsed&&(r===o&&a-i<2&&r.hasChildNodes()&&(n=r.childNodes[i]),3===r.nodeType&&3===o.nodeType&&(r=r.length===i?$y(r.nextSibling,!0):r.parentNode,o=0===a?$y(o.previousSibling,!1):o.parentNode,r&&r===o))?r:n&
 amp;&3===n.nodeType?n.parentNode:n):e;var e,t,n,r,o,i,a},getSel:d,setRng:i,getRng:m,getStart:function(e){return jy(c.getBody(),m(),e)},getEnd:function(e){return qy(c.getBody(),m(),e)},getSelectedBlocks:function(e,t){return function(e,t,n,r){var o,i,a=[];if(i=e.getRoot(),n=e.getParent(n||jy(i,t,t.collapsed),e.isBlock),r=e.getParent(r||qy(i,t,t.collapsed),e.isBlock),n&&n!==i&&a.push(n),n&&r&&n!==r)for(var u=new oo(o=n,i);(o=u.next())&&o!==r;)e.isBlock(o)&&a.push(o);return r&&n!==r&&r!==i&&a.push(r),a}(u,m(),e,t)},normalize:function(){var e=m(),t=d();if(!Xd(t)&&zh(c)){var n=_g(u,e);return n.each(function(e){i(e,g())}),n.getOr(e)}return e},selectorChanged:function(e,t){var i;return a||(a={},i={},c.on("NodeChange",function(e){var n=e.element,r=u.getParents(n,null,u.getRoot()),o={};Wy(a,function(e,n){Wy(r,function(t){if(u.is(t,n))return i[n]||(Wy(e,function(e){e(!0,{node:t,selector:n,parents:r})}
 ),i[n]=e),o[n]=e,!1})}),Wy(i,function(e,t){o[t]||(delete i[t],Wy(e,function(e){e(!1,{node:n,selector:t,parents:r})}))})})),a[e]||(a[e]=[]),a[e].push(t),p},getScrollContainer:function(){for(var e,t=u.getRoot();t&&"BODY"!==t.nodeName;){if(t.scrollHeight>t.clientHeight){e=t;break}t=t.parentNode}return e},scrollIntoView:function(e,t){return by(c,e,t)},placeCaretAt:function(e,t){return i(xy(e,t,c.getDoc()))},getBoundingClientRect:function(){var e=m();return e.collapsed?vu.fromRangeStart(e).getClientRects()[0]:e.getBoundingClientRect()},destroy:function(){s=l=f=null,t.destroy()}};return n=my(p),t=hy(p,c),p.bookmarkManager=n,p.controlSelection=t,p};(dy=fy||(fy={}))[dy.Br=0]="Br",dy[dy.Block=1]="Block",dy[dy.Wrap=2]="Wrap",dy[dy.Eol=3]="Eol";var Gy=function(e,t){return e===pu.Backwards?t.reverse():t},Jy=function(e,t,n,r){for(var o,i,a,u,s,c,l=Hs(n),f=r,d=[];f&&(s=l,c=f,o=t===pu.Forwards?s.next(c):s.prev(c));){if(Bo.isBr(o.
 getNode(!1)))return t===pu.Forwards?{positions:Gy(t,d).concat([o]),breakType:fy.Br,breakAt:A.some(o)}:{positions:Gy(t,d),breakType:fy.Br,breakAt:A.some(o)};if(o.isVisible()){if(e(f,o)){var m=(i=t,a=f,u=o,Bo.isBr(u.getNode(i===pu.Forwards))?fy.Br:!1===ps(a,u)?fy.Block:fy.Wrap);return{positions:Gy(t,d),breakType:m,breakAt:A.some(o)}}d.push(o),f=o}else f=o}return{positions:Gy(t,d),breakType:fy.Eol,breakAt:A.none()}},Qy=function(n,r,o,e){return r(o,e).breakAt.map(function(e){var t=r(o,e).positions;return n===pu.Backwards?t.concat(e):[e].concat(t)}).getOr([])},Zy=function(e,i){return U(e,function(e,o){return e.fold(function(){return A.some(o)},function(r){return Wa([te(r.getClientRects()),te(o.getClientRects())],function(e,t){var n=Math.abs(i-e.left);return Math.abs(i-t.left)<=n?o:r}).or(e)})},A.none())},eC=function(t,e){return te(e.getClientRects()).bind(function(e){return Zy(t,e.left)})},tC=d(Jy,gu.isAbove,-1),nC=d(Jy,gu.isBelow,1),rC=d(Qy,-1,tC),oC=d(Qy,1,nC),iC=Bo.isContentEditabl
 eFalse,aC=Ha,uC=function(e,t,n,r){var o=e===pu.Forwards,i=o?mf:gf;if(!r.collapsed){var a=aC(r);if(iC(a))return Mm(e,t,a,e===pu.Backwards,!0)}var u=pa(r.startContainer),s=Ns(e,t.getBody(),r);if(i(s))return Fm(t,s.getNode(!o));var c=yl.normalizePosition(o,n(s));if(!c)return u?r:null;if(i(c))return Mm(e,t,c.getNode(!o),o,!0);var l=n(c);return l&&i(l)&&ks(c,l)?Mm(e,t,l.getNode(!o),o,!0):u?Um(t,c.toRange(),!0):null},sC=function(e,t,n,r){var o,i,a,u,s,c,l,f,d;if(d=aC(r),o=Ns(e,t.getBody(),r),i=n(t.getBody(),rv(1),o),a=z(i,ov(1)),s=$t.last(o.getClientRects()),(mf(o)||hf(o))&&(d=o.getNode()),(gf(o)||vf(o))&&(d=o.getNode(!0)),!s)return null;if(c=s.left,(u=lv(a,c))&&iC(u.node))return l=Math.abs(c-u.left),f=Math.abs(c-u.right),Mm(e,t,u.node,l<f,!0);if(d){var m=function(e,t,n,r){var o,i,a,u,s,c,l=Hs(t),f=[],d=0,m=function(e){return $t.last(e.getClientRects())};1===e?(o=l.next,i=Va,a=Ua,u=vu.after(r)):(o=l.prev,i=Ua,a=Va,u=vu.before(r)),c=m(u);do{if(u.i
 sVisible()&&!a(s=m(u),c)){if(0<f.length&&i(s,$t.last(f))&&d++,(s=Ma(s)).position=u,s.line=d,n(s))return f;f.push(s)}}while(u=o(u));return f}(e,t.getBody(),rv(1),d);if(u=lv(z(m,ov(1)),c))return Um(t,u.position.toRange(),!0);if(u=$t.last(z(m,ov(0))))return Um(t,u.position.toRange(),!0)}},cC=function(e,t,n){var r,o,i,a,u=Hs(e.getBody()),s=d(Ss,u.next),c=d(Ss,u.prev);if(n.collapsed&&e.settings.forced_root_block){if(!(r=e.dom.getParent(n.startContainer,"PRE")))return;(1===t?s(vu.fromRangeStart(n)):c(vu.fromRangeStart(n)))||(a=(i=e).dom.create(eg(i)),(!me.ie||11<=me.ie)&&(a.innerHTML='<br data-mce-bogus="1">'),o=a,1===t?e.$(r).after(o):e.$(r).before(o),e.selection.select(o,!0),e.selection.collapse())}},lC=function(l,f){return function(){var e,t,n,r,o,i,a,u,s,c=(t=f,r=Hs((e=l).getBody()),o=d(Ss,r.next),i=d(Ss,r.prev),a=t?pu.Forwards:pu.Backwards,u=t?o:i,s=e.selection.getRng(),(n=uC(a,e,u,s))?n:(n=cC(e,a,s))||null);retu
 rn!!c&&(l.selection.setRng(c),!0)}},fC=function(u,s){return function(){var e,t,n,r,o,i,a=(r=(t=s)?1:-1,o=t?nv:tv,i=(e=u).selection.getRng(),(n=sC(r,e,o,i))?n:(n=cC(e,r,i))||null);return!!a&&(u.selection.setRng(a),!0)}},dC=function(r,o){return function(){var t,e=o?vu.fromRangeEnd(r.selection.getRng()):vu.fromRangeStart(r.selection.getRng()),n=o?nC(r.getBody(),e):tC(r.getBody(),e);return(o?ne(n.positions):te(n.positions)).filter((t=o,function(e){return t?gf(e):mf(e)})).fold(q(!1),function(e){return r.selection.setRng(e.toRange()),!0})}},mC=function(e,t,n,r,o){var i,a,u,s,c=ji(or.fromDom(n),"td,th,caption").map(function(e){return e.dom()}),l=z((i=e,J(c,function(e){var t,n,r=(t=Ma(e.getBoundingClientRect()),n=-1,{left:t.left-n,top:t.top-n,right:t.right+2*n,bottom:t.bottom+2*n,width:t.width+n,height:t.height+n});return[{x:r.left,y:i(r),cell:e},{x:r.right,y:i(r),cell:e}]})),function(e){return t(e,o)});return(a=l,u=r,s=o,U(a,function(e,r){return e.fold(function(){
 return A.some(r)},function(e){var t=Math.sqrt(Math.abs(e.x-u)+Math.abs(e.y-s)),n=Math.sqrt(Math.abs(r.x-u)+Math.abs(r.y-s));return A.some(n<t?r:e)})},A.none())).map(function(e){return e.cell})},gC=d(mC,function(e){return e.bottom},function(e,t){return e.y<t}),pC=d(mC,function(e){return e.top},function(e,t){return e.y>t}),hC=function(t,n){return te(n.getClientRects()).bind(function(e){return gC(t,e.left,e.top)}).bind(function(e){return eC((t=e,Zs.lastPositionIn(t).map(function(e){return tC(t,e).positions.concat(e)}).getOr([])),n);var t})},vC=function(t,n){return ne(n.getClientRects()).bind(function(e){return pC(t,e.left,e.top)}).bind(function(e){return eC((t=e,Zs.firstPositionIn(t).map(function(e){return[e].concat(nC(t,e).positions)}).getOr([])),n);var t})},bC=function(e,t){e.selection.setRng(t),yy(e,t)},yC=function(e,t,n){var r,o,i,a,u=e(t,n);return(a=u).breakType===fy.Wrap&&0===a.positions.length||!Bo.isBr(n.getNode())&&(i=u).breakType===fy.Br&&1===
 i.positions.length?(r=e,o=t,!u.breakAt.map(function(e){return r(o,e).breakAt.isSome()}).getOr(!1)):u.breakAt.isNone()},CC=d(yC,tC),xC=d(yC,nC),wC=function(e,t,n,r){var o,i,a,u,s=e.selection.getRng(),c=t?1:-1;if(ns()&&(o=t,i=s,a=n,u=vu.fromRangeStart(i),Zs.positionIn(!o,a).map(function(e){return e.isEqual(u)}).getOr(!1))){var l=Mm(c,e,n,!t,!0);return bC(e,l),!0}return!1},NC=function(e,t){var n=t.getNode(e);return Bo.isElement(n)&&"TABLE"===n.nodeName?A.some(n):A.none()},EC=function(u,s,c){var e=NC(!!s,c),t=!1===s;e.fold(function(){return bC(u,c.toRange())},function(a){return Zs.positionIn(t,u.getBody()).filter(function(e){return e.isEqual(c)}).fold(function(){return bC(u,c.toRange())},function(e){return n=s,o=a,t=c,void((i=eg(r=u))?r.undoManager.transact(function(){var e=or.fromTag(i);yr(e,tg(r)),Ai(e,or.fromTag("br")),n?ki(or.fromDom(o),e):Si(or.fromDom(o),e);var t=r.dom.createRng();t.setStart(e.dom(),0),t.setEnd(e.dom(),0),bC(r,t)}):bC(r,t.toRang
 e()));var n,r,o,t,i})})},SC=function(e,t,n,r){var o,i,a,u,s,c,l=e.selection.getRng(),f=vu.fromRangeStart(l),d=e.getBody();if(!t&&CC(r,f)){var m=(u=d,hC(s=n,c=f).orThunk(function(){return te(c.getClientRects()).bind(function(e){return Zy(rC(u,vu.before(s)),e.left)})}).getOr(vu.before(s)));return EC(e,t,m),!0}return!(!t||!xC(r,f))&&(o=d,m=vC(i=n,a=f).orThunk(function(){return te(a.getClientRects()).bind(function(e){return Zy(oC(o,vu.after(i)),e.left)})}).getOr(vu.after(i)),EC(e,t,m),!0)},kC=function(t,n){return function(){return A.from(t.dom.getParent(t.selection.getNode(),"td,th")).bind(function(e){return A.from(t.dom.getParent(e,"table")).map(function(e){return wC(t,n,e)})}).getOr(!1)}},TC=function(n,r){return function(){return A.from(n.dom.getParent(n.selection.getNode(),"td,th")).bind(function(t){return A.from(n.dom.getParent(t,"table")).map(function(e){return SC(n,r,e,t)})}).getOr(!1)}},AC=function(e){return M(["figcapt
 ion"],sr(e))},RC=function(e){var t=H.document.createRange();return t.setStartBefore(e.dom()),t.setEndBefore(e.dom()),t},_C=function(e,t,n){n?Ai(e,t):Ti(e,t)},DC=function(e,t,n,r){return""===t?(l=e,f=r,d=or.fromTag("br"),_C(l,d,f),RC(d)):(o=e,i=r,a=t,u=n,s=or.fromTag(a),c=or.fromTag("br"),yr(s,u),Ai(s,c),_C(o,s,i),RC(c));var o,i,a,u,s,c,l,f,d},BC=function(e,t,n){return t?(o=e.dom(),nC(o,n).breakAt.isNone()):(r=e.dom(),tC(r,n).breakAt.isNone());var r,o},OC=function(t,n){var e,r,o,i=or.fromDom(t.getBody()),a=vu.fromRangeStart(t.selection.getRng()),u=eg(t),s=tg(t);return(e=a,r=i,o=d(Pr,r),Ki(or.fromDom(e.container()),lo,o).filter(AC)).exists(function(){if(BC(i,n,a)){var e=DC(i,u,s,n);return t.selection.setRng(e),!0}return!1})},PC=function(e,t){return function(){return!!e.selection.isCollapsed()&&OC(e,t)}},LC=function(e,r){return J(W(e,function(e){return Fb({shiftKey:!1,altKey:!1,ctrlKey:!1,metaKey:!1,keyCode:0,action:o},e)}),function(e){return 
 t=e,(n=r).keyCode===t.keyCode&&n.shiftKey===t.shiftKey&&n.altKey===t.altKey&&n.ctrlKey===t.ctrlKey&&n.metaKey===t.metaKey?[e]:[];var t,n})},IC=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var r=Array.prototype.slice.call(arguments,1);return function(){return e.apply(null,r)}},MC=function(e,t){return V(LC(e,t),function(e){return e.action()})},FC=function(i,a){i.on("keydown",function(e){var t,n,r,o;!1===e.isDefaultPrevented()&&(t=i,n=a,r=e,o=nr.detect().os,MC([{keyCode:pv.RIGHT,action:lC(t,!0)},{keyCode:pv.LEFT,action:lC(t,!1)},{keyCode:pv.UP,action:fC(t,!1)},{keyCode:pv.DOWN,action:fC(t,!0)},{keyCode:pv.RIGHT,action:kC(t,!0)},{keyCode:pv.LEFT,action:kC(t,!1)},{keyCode:pv.UP,action:TC(t,!1)},{keyCode:pv.DOWN,action:TC(t,!0)},{keyCode:pv.RIGHT,action:kd.move(t,n,!0)},{keyCode:pv.LEFT,action:kd.move(t,n,!1)},{keyCode:pv.RIGHT,ctrlKey:!o.isOSX(),altKey:o.isOSX(),action:kd.moveNextWord(t,n)},{keyCode:pv.LEFT,c
 trlKey:!o.isOSX(),altKey:o.isOSX(),action:kd.movePrevWord(t,n)},{keyCode:pv.UP,action:PC(t,!1)},{keyCode:pv.DOWN,action:PC(t,!0)}],r).each(function(e){r.preventDefault()}))})},zC=function(o,i){o.on("keydown",function(e){var t,n,r;!1===e.isDefaultPrevented()&&(t=o,n=i,r=e,MC([{keyCode:pv.BACKSPACE,action:IC(Ff,t,!1)},{keyCode:pv.DELETE,action:IC(Ff,t,!0)},{keyCode:pv.BACKSPACE,action:IC(Hm,t,!1)},{keyCode:pv.DELETE,action:IC(Hm,t,!0)},{keyCode:pv.BACKSPACE,action:IC(_d,t,n,!1)},{keyCode:pv.DELETE,action:IC(_d,t,n,!0)},{keyCode:pv.BACKSPACE,action:IC(cm,t,!1)},{keyCode:pv.DELETE,action:IC(cm,t,!0)},{keyCode:pv.BACKSPACE,action:IC(Gl,t,!1)},{keyCode:pv.DELETE,action:IC(Gl,t,!0)},{keyCode:pv.BACKSPACE,action:IC(Wl,t,!1)},{keyCode:pv.DELETE,action:IC(Wl,t,!0)},{keyCode:pv.BACKSPACE,action:IC(Pm,t,!1)},{keyCode:pv.DELETE,action:IC(Pm,t,!0)}],r).each(function(e){r.preventDefault()}))}),o.on("keyup",function(e){var t,n;!1===e.isDefaultPrevented()&&(t=o,n=
 e,MC([{keyCode:pv.BACKSPACE,action:IC(zf,t)},{keyCode:pv.DELETE,action:IC(zf,t)}],n))})},UC=function(e){return A.from(e.dom.getParent(e.selection.getStart(!0),e.dom.isBlock))},VC=function(e,t){var n,r,o,i=t,a=e.dom,u=e.schema.getMoveCaretBeforeOnEnterElements();if(t){if(/^(LI|DT|DD)$/.test(t.nodeName)){var s=function(e){for(;e;){if(1===e.nodeType||3===e.nodeType&&e.data&&/[\r\n\s]/.test(e.data))return e;e=e.nextSibling}}(t.firstChild);s&&/^(UL|OL|DL)$/.test(s.nodeName)&&t.insertBefore(a.doc.createTextNode("\xa0"),t.firstChild)}if(o=a.createRng(),t.normalize(),t.hasChildNodes()){for(n=new oo(t,t);r=n.current();){if(Bo.isText(r)){o.setStart(r,0),o.setEnd(r,0);break}if(u[r.nodeName.toLowerCase()]){o.setStartBefore(r),o.setEndBefore(r);break}i=r,r=n.next()}r||(o.setStart(i,0),o.setEnd(i,0))}else Bo.isBr(t)?t.nextSibling&&a.isBlock(t.nextSibling)?(o.setStartBefore(t),o.setEndBefore(t)):(o.setStartAfter(t),o.setEndAfter(t)):(o.setStart(t,0
 ),o.setEnd(t,0));e.selection.setRng(o),a.remove(void 0),e.selection.scrollIntoView(t)}},HC=function(e,t){var n,r,o=e.getRoot();for(n=t;n!==o&&"false"!==e.getContentEditable(n);)"true"===e.getContentEditable(n)&&(r=n),n=n.parentNode;return n!==o?r:o},jC=UC,qC=function(e){return UC(e).fold(q(""),function(e){return e.nodeName.toUpperCase()})},$C=function(e){return UC(e).filter(function(e){return ho(or.fromDom(e))}).isSome()},WC=function(e,t){return e&&e.parentNode&&e.parentNode.nodeName===t},KC=function(e){return e&&/^(OL|UL|LI)$/.test(e.nodeName)},XC=function(e){var t=e.parentNode;return/^(LI|DT|DD)$/.test(t.nodeName)?t:e},YC=function(e,t,n){for(var r=e[n?"firstChild":"lastChild"];r&&!Bo.isElement(r);)r=r[n?"nextSibling":"previousSibling"];return r===t},GC=function(e,t,n,r,o){var i=e.dom,a=e.selection.getRng();if(n!==e.getBody()){var u;KC(u=n)&&KC(u.parentNode)
 &&(o="LI");var s,c,l=o?t(o):i.create("BR");if(YC(n,r,!0)&&YC(n,r,!1))WC(n,"LI")?i.insertAfter(l,XC(n)):i.replace(l,n);else if(YC(n,r,!0))WC(n,"LI")?(i.insertAfter(l,XC(n)),l.appendChild(i.doc.createTextNode(" ")),l.appendChild(n)):n.parentNode.insertBefore(l,n);else if(YC(n,r,!1))i.insertAfter(l,XC(n));else{n=XC(n);var f=a.cloneRange();f.setStartAfter(r),f.setEndAfter(n);var d=f.extractContents();"LI"===o&&(c="LI",(s=d).firstChild&&s.firstChild.nodeName===c)?(l=d.firstChild,i.insertAfter(d,n)):(i.insertAfter(d,n),i.insertAfter(l,n))}i.remove(r),VC(e,l)}},JC=function(e){e.innerHTML='<br data-mce-bogus="1">'},QC=function(e,t){return e.nodeName===t||e.previousSibling&&e.previousSibling.nodeName===t},ZC=function(e,t){return t&&e.isBlock(t)&&!/^(TD|TH|CAPTION|FORM)$/.test(t.nodeName)&&!/^(fixed|absolute)/i.test(t.style.position)&&&q
 uot;true"!==e.getContentEditable(t)},ex=function(e,t,n){return!1===Bo.isText(t)?n:e?1===n&&t.data.charAt(n-1)===fa?0:n:n===t.data.length-1&&t.data.charAt(n)===fa?t.data.length:n},tx=function(e,t){var n,r,o=e.getRoot();for(n=t;n!==o&&"false"!==e.getContentEditable(n);)"true"===e.getContentEditable(n)&&(r=n),n=n.parentNode;return n!==o?r:o},nx=function(e,t){var n=eg(e);n&&n.toLowerCase()===t.tagName.toLowerCase()&&e.dom.setAttribs(t,tg(e))},rx=function(a,e){var t,u,s,i,c,n,r,o,l,f,d,m,g,p,h,v,b,y,C,x=a.dom,w=a.schema,N=w.getNonEmptyElements(),E=a.selection.getRng(),S=function(e){var t,n,r,o=s,i=w.getTextInlineElements();if(e||"TABLE"===f||"HR"===f?(t=x.create(e||m),nx(a,t)):t=c.cloneNode(!1),r=t,!1===og(a))x.setAttrib(t,"style",null),x.setAttrib(t,"class",null);else do{if(i[o.nodeName]){if(Uu(o)||cc(o))continue;n=o.cloneNode(!1),x.setAttrib(n,"id",""),t.
 hasChildNodes()?n.appendChild(t.firstChild):r=n,t.appendChild(n)}}while((o=o.parentNode)&&o!==u);return JC(r),t},k=function(e){var t,n,r,o;if(o=ex(e,s,i),Bo.isText(s)&&(e?0<o:o<s.nodeValue.length))return!1;if(s.parentNode===c&&g&&!e)return!0;if(e&&Bo.isElement(s)&&s===c.firstChild)return!0;if(QC(s,"TABLE")||QC(s,"HR"))return g&&!e||!g&&e;for(t=new oo(s,c),Bo.isText(s)&&(e&&0===o?t.prev():e||o!==s.nodeValue.length||t.next());n=t.current();){if(Bo.isElement(n)){if(!n.getAttribute("data-mce-bogus")&&(r=n.nodeName.toLowerCase(),N[r]&&"br"!==r))return!1}else if(Bo.isText(n)&&!/^[ \t\r\n]*$/.test(n.nodeValue))return!1;e?t.prev():t.next()}return!0},T=function(){r=/^(H[1-6]|PRE|FIGURE)$/.test(f)&&"HGROUP"!==d?S(m):S(),ig(a)&&ZC(x,l)&&x.isEmpty(c)?r=x.split(l,c):x.insertAfter(r,c),VC(a,r)};_g(x,E).each(function
 (e){E.setStart(e.startContainer,e.startOffset),E.setEnd(e.endContainer,e.endOffset)}),s=E.startContainer,i=E.startOffset,m=eg(a),n=e.shiftKey,Bo.isElement(s)&&s.hasChildNodes()&&(g=i>s.childNodes.length-1,s=s.childNodes[Math.min(i,s.childNodes.length-1)]||s,i=g&&Bo.isText(s)?s.nodeValue.length:0),(u=tx(x,s))&&((m&&!n||!m&&n)&&(s=function(e,t,n,r,o){var i,a,u,s,c,l,f,d=t||"P",m=e.dom,g=tx(m,r);if(!(a=m.getParent(r,m.isBlock))||!ZC(m,a)){if(l=(a=a||g)===e.getBody()||(f=a)&&/^(TD|TH|CAPTION)$/.test(f.nodeName)?a.nodeName.toLowerCase():a.parentNode.nodeName.toLowerCase(),!a.hasChildNodes())return i=m.create(d),nx(e,i),a.appendChild(i),n.setStart(i,0),n.setEnd(i,0),i;for(s=r;s.parentNode!==a;)s=s.parentNode;for(;s&&!m.isBlock(s);)s=(u=s).previousSibling;if(u&&e.schema.isValidChild(l,d.toLowerCase())){for(i=m.create(d),nx(e,i),u.parentNode.insertBefore(i,u),s=u;s&&!m.isBlock(s);)c=s.nextSi
 bling,i.appendChild(s),s=c;n.setStart(r,o),n.setEnd(r,o)}}return r}(a,m,E,s,i)),c=x.getParent(s,x.isBlock),l=c?x.getParent(c.parentNode,x.isBlock):null,f=c?c.nodeName.toUpperCase():"","LI"!==(d=l?l.nodeName.toUpperCase():"")||e.ctrlKey||(l=(c=l).parentNode,f=d),/^(LI|DT|DD)$/.test(f)&&x.isEmpty(c)?GC(a,S,l,c,m):m&&c===a.getBody()||(m=m||"P",pa(c)?(r=Ea(c),x.isEmpty(c)&&JC(c),VC(a,r)):k()?T():k(!0)?(r=c.parentNode.insertBefore(S(),c),VC(a,QC(c,"HR")?r:c)):((t=(y=E,C=y.cloneRange(),C.setStart(y.startContainer,ex(!0,y.startContainer,y.startOffset)),C.setEnd(y.endContainer,ex(!1,y.endContainer,y.endOffset)),C).cloneRange()).setEndAfter(c),o=t.extractContents(),b=o,F(Hi(or.fromDom(b),fr),function(e){var t=e.dom();t.nodeValue=da(t.nodeValue)}),function(e){for(;Bo.isText(e)&&(e.nodeValue=e.nodeValue.replace(/^[\r\n]+/,"")),e=e.firstChild;);}(o),r=o.firstChild,x.insertAfter(o,c),function(e,t,n){var r
 ,o=n,i=[];if(o){for(;o=o.firstChild;){if(e.isBlock(o))return;Bo.isElement(o)&&!t[o.nodeName.toLowerCase()]&&i.push(o)}for(r=i.length;r--;)!(o=i[r]).hasChildNodes()||o.firstChild===o.lastChild&&""===o.firstChild.nodeValue?e.remove(o):(a=e,(u=o)&&"A"===u.nodeName&&a.isEmpty(u)&&e.remove(o));var a,u}}(x,N,r),p=x,(h=c).normalize(),(v=h.lastChild)&&!/^(left|right)$/gi.test(p.getStyle(v,"float",!0))||p.add(h,"br"),x.isEmpty(c)&&JC(c),r.normalize(),x.isEmpty(r)?(x.remove(r),T()):VC(a,r)),x.setAttrib(r,"id",""),a.fire("NewBlock",{newBlock:r})))},ox=function(e,t){return jC(e).filter(function(e){return 0<t.length&&Br(or.fromDom(e),t)}).isSome()},ix=function(e){return ox(e,ng(e))},ax=function(e){return ox(e,rg(e))},ux=Jl([{br:[]},{block:[]},{none:[]}]),sx=function(e,t){return ax(e)},cx=function(n){return function(e,t){return""===eg(e)===n}},
 lx=function(n){return function(e,t){return $C(e)===n}},fx=function(n,r){return function(e,t){return qC(e)===n.toUpperCase()===r}},dx=function(e){return fx("pre",e)},mx=function(n){return function(e,t){return Zm(e)===n}},gx=function(e,t){return ix(e)},px=function(e,t){return t},hx=function(e){var t=eg(e),n=HC(e.dom,e.selection.getStart());return n&&e.schema.isValidChild(n.nodeName,t||"P")},vx=function(e,t){return function(n,r){return U(e,function(e,t){return e&&t(n,r)},!0)?A.some(t):A.none()}},bx=function(e,t){return Gf([vx([sx],ux.none()),vx([fx("summary",!0)],ux.br()),vx([dx(!0),mx(!1),px],ux.br()),vx([dx(!0),mx(!1)],ux.block()),vx([dx(!0),mx(!0),px],ux.block()),vx([dx(!0),mx(!0)],ux.br()),vx([lx(!0),px],ux.br()),vx([lx(!0)],ux.block()),vx([cx(!0),px,hx],ux.block()),vx([cx(!0)],ux.br()),vx([gx],ux.br()),vx([cx(!1),px],ux.br()),vx([hx],ux.block())],[e,t.shiftKey]).getOr(ux.none())},yx=function(e,t){bx(e,t).fold(function(){Ug(e,t)},functi
 on(){rx(e,t)},o)},Cx=function(o){o.on("keydown",function(e){var t,n,r;e.keyCode===pv.ENTER&&(t=o,(n=e).isDefaultPrevented()||(n.preventDefault(),(r=t.undoManager).typing&&(r.typing=!1,r.add()),t.undoManager.transact(function(){!1===t.selection.isCollapsed()&&t.execCommand("Delete"),yx(t,n)})))})},xx=function(n,r){var e=r.container(),t=r.offset();return Bo.isText(e)?(e.insertData(t,n),A.some(gu(e,t+n.length))):Es(r).map(function(e){var t=or.fromText(n);return r.isAtEnd()?ki(e,t):Si(e,t),gu(t.dom(),n.length)})},wx=d(xx,"\xa0"),Nx=d(xx," "),Ex=function(e,t,n){return Zs.navigateIgnore(e,t,n,ff)},Sx=function(t,n,r){var e=z(Ml(or.fromDom(r.container()),n),lo);return te(e).fold(function(){return Ex(t,n.dom(),r).forall(function(e){return!1===ps(e,r,n.dom())})},function(e){return Ex(t,e.dom(),r).isNone()})},kx=d(Sx,!1),Tx=d(Sx,!0),Ax=function(e){return gu.isTextPosition(e)&&!e.isAtStart()&&!e.isAtEnd()},Rx=functi
 on(e,t){var n=z(Ml(or.fromDom(t.container()),e),lo);return te(n).getOr(e)},_x=function(e,t){return Ax(t)?lf(t):lf(t)||Zs.prevPosition(Rx(e,t).dom(),t).exists(lf)},Dx=function(e,t){return Ax(t)?cf(t):cf(t)||Zs.nextPosition(Rx(e,t).dom(),t).exists(cf)},Bx=function(e){return Es(e).bind(function(e){return Ki(e,lr)}).exists(function(e){return t=Nr(e,"white-space"),M(["pre","pre-line","pre-wrap"],t);var t})},Ox=function(e,t){return o=e,i=t,Zs.prevPosition(o.dom(),i).isNone()||(n=e,r=t,Zs.nextPosition(n.dom(),r).isNone())||kx(e,t)||Tx(e,t)||tf(e,t)||ef(e,t);var n,r,o,i},Px=function(e,t){var n,r,o,i=(r=(n=t).container(),o=n.offset(),Bo.isText(r)&&o<r.data.length?gu(r,o+1):n);return!Bx(i)&&(Tx(e,i)||ef(e,i)||Dx(e,i))},Lx=function(e,t){return n=e,!Bx(r=t)&&(kx(n,r)||tf(n,r)||_x(n,r))||Px(e,t);var n,r},Ix=function(e,t){return of(e.charAt(t))},Mx=function(e){var t=e.container();return Bo.isText(t)&&Kn(t.data,"\xa0&q
 uot;)},Fx=function(e){var t=e.data,n=W(t.split(""),function(e,t,n){return of(e)&&0<t&&t<n.length-1&&uf(n[t-1])&&uf(n[t+1])?" ":e}).join("");return n!==t&&(e.data=n,!0)},zx=function(l,e){return A.some(e).filter(Mx).bind(function(e){var t,n,r,o,i,a,u,s,c=e.container();return i=l,u=(a=c).data,s=gu(a,0),Ix(u,0)&&!Lx(i,s)&&(a.data=" "+u.slice(1),1)||Fx(c)||(t=l,r=(n=c).data,o=gu(n,r.length-1),Ix(r,r.length-1)&&!Lx(t,o)&&(n.data=r.slice(0,-1)+" ",1))?A.some(e):A.none()})},Ux=function(t){var e=or.fromDom(t.getBody());t.selection.isCollapsed()&&zx(e,gu.fromRangeStart(t.selection.getRng())).each(function(e){t.selection.setRng(e.toRange())})},Vx=function(r,o){return function(e){return t=r,!Bx(n=e)&&(Ox(t,n)||_x(t,n)||Dx(t,n))?wx(o):Nx(o);var t,n}},Hx=function(e){var t,n,r=vu.fromRangeStart(e.selection.getRng()),o=or.fromDom(e.getBody());if(e.selection
 .isCollapsed()){var i=d(yl.isInlineTarget,e),a=vu.fromRangeStart(e.selection.getRng());return gd(i,e.getBody(),a).bind((n=o,function(e){return e.fold(function(e){return Zs.prevPosition(n.dom(),vu.before(e))},function(e){return Zs.firstPositionIn(e)},function(e){return Zs.lastPositionIn(e)},function(e){return Zs.nextPosition(n.dom(),vu.after(e))})})).bind(Vx(o,r)).exists((t=e,function(e){return t.selection.setRng(e.toRange()),t.nodeChanged(),!0}))}return!1},jx=function(r){r.on("keydown",function(e){var t,n;!1===e.isDefaultPrevented()&&(t=r,n=e,MC([{keyCode:pv.SPACEBAR,action:IC(Hx,t)}],n).each(function(e){n.preventDefault()}))})},qx=function(e,t){var n;t.hasAttribute("data-mce-caret")&&(Ea(t),(n=e).selection.setRng(n.selection.getRng()),e.selection.scrollIntoView(t))},$x=function(e,t){var n,r=(n=e,Yi(or.fromDom(n.getBody()),"*[data-mce-caret]").fold(q(null),function(e){return e.dom()}));if(r)return"compositionstart"===t.type?(t.
 preventDefault(),t.stopPropagation(),void qx(e,r)):void(ba(r)&&(qx(e,r),e.undoManager.add()))},Wx=function(e){e.on("keyup compositionstart",d($x,e))},Kx=nr.detect().browser,Xx=function(t){var e,n;e=t,n=Oi(function(){e.composing||Ux(e)},0),Kx.isIE()&&(e.on("keypress",function(e){n.throttle()}),e.on("remove",function(e){n.cancel()})),t.on("input",function(e){!1===e.isComposing&&Ux(t)})},Yx=function(r){r.on("keydown",function(e){var t,n;!1===e.isDefaultPrevented()&&(t=r,n=e,MC([{keyCode:pv.END,action:dC(t,!0)},{keyCode:pv.HOME,action:dC(t,!1)}],n).each(function(e){n.preventDefault()}))})},Gx=function(e){var t=kd.setupSelectedState(e);Wx(e),FC(e,t),zC(e,t),Cx(e),jx(e),Xx(e),Yx(e)};function Jx(u){var s,n,r,o=Gt.each,c=pv.BACKSPACE,l=pv.DELETE,f=u.dom,d=u.selection,e=u.settings,t=u.parser,i=me.gecko,a=me.ie,m=me.webkit,g="data:text/mce-internal,",p=a?"Text":"URL",h=function(e,t)
 {try{u.getDoc().execCommand(e,!1,t)}catch(n){}},v=function(e){return e.isDefaultPrevented()},b=function(){u.shortcuts.add("meta+a",null,"SelectAll")},y=function(){u.on("keydown",function(e){if(!v(e)&&e.keyCode===c&&d.isCollapsed()&&0===d.getRng().startOffset){var t=d.getNode().previousSibling;if(t&&t.nodeName&&"table"===t.nodeName.toLowerCase())return e.preventDefault(),!1}})},C=function(){u.inline||(u.contentStyles.push("body {min-height: 150px}"),u.on("click",function(e){var t;if("HTML"===e.target.nodeName){if(11<me.ie)return void u.getBody().focus();t=u.selection.getRng(),u.getBody().focus(),u.selection.setRng(t),u.selection.normalize(),u.nodeChanged()}}))};return u.on("keydown",function(e){var t,n,r,o,i;if(!v(e)&&e.keyCode===pv.BACKSPACE&&(n=(t=d.getRng()).startContainer,r=t.startOffset,o=f.getRoot(),i=n,t.collapsed&&0===r)){for(;i&am
 p;&i.parentNode&&i.parentNode.firstChild===i&&i.parentNode!==o;)i=i.parentNode;"BLOCKQUOTE"===i.tagName&&(u.formatter.toggle("blockquote",null,i),(t=f.createRng()).setStart(n,0),t.setEnd(n,0),d.setRng(t))}}),s=function(e){var t=f.create("body"),n=e.cloneContents();return t.appendChild(n),d.serializer.serialize(t,{format:"html"})},u.on("keydown",function(e){var t,n,r,o,i,a=e.keyCode;if(!v(e)&&(a===l||a===c)){if(t=u.selection.isCollapsed(),n=u.getBody(),t&&!f.isEmpty(n))return;if(!t&&(r=u.selection.getRng(),o=s(r),(i=f.createRng()).selectNode(u.getBody()),o!==s(i)))return;e.preventDefault(),u.setContent(""),n.firstChild&&f.isBlock(n.firstChild)?u.selection.setCursorLocation(n.firstChild,0):u.selection.setCursorLocation(n,0),u.nodeChanged()}}),me.windowsPhone||u.on("keyup focusin mouseup",function(e){pv.modifierPressed(e)||d.normalize()},!0),m&&(u.se
 ttings.content_editable||f.bind(u.getDoc(),"mousedown mouseup",function(e){var t;if(e.target===u.getDoc().documentElement)if(t=d.getRng(),u.getBody().focus(),"mousedown"===e.type){if(va(t.startContainer))return;d.placeCaretAt(e.clientX,e.clientY)}else d.setRng(t)}),u.on("click",function(e){var t=e.target;/^(IMG|HR)$/.test(t.nodeName)&&"false"!==f.getContentEditableParent(t)&&(e.preventDefault(),u.selection.select(t),u.nodeChanged()),"A"===t.nodeName&&f.hasClass(t,"mce-item-anchor")&&(e.preventDefault(),d.select(t))}),e.forced_root_block&&u.on("init",function(){h("DefaultParagraphSeparator",e.forced_root_block)}),u.on("init",function(){u.dom.bind(u.getBody(),"submit",function(e){e.preventDefault()})}),y(),t.addNodeFilter("br",function(e){for(var t=e.length;t--;)"Apple-interchange-newline"===e[t].attr("class")&&am
 p;e[t].remove()}),me.iOS?(u.inline||u.on("keydown",function(){H.document.activeElement===H.document.body&&u.getWin().focus()}),C(),u.on("click",function(e){var t=e.target;do{if("A"===t.tagName)return void e.preventDefault()}while(t=t.parentNode)}),u.contentStyles.push(".mce-content-body {-webkit-touch-callout: none}")):b()),11<=me.ie&&(C(),y()),me.ie&&(b(),h("AutoUrlDetect",!1),u.on("dragstart",function(e){var t,n,r;(t=e).dataTransfer&&(u.selection.isCollapsed()&&"IMG"===t.target.tagName&&d.select(t.target),0<(n=u.selection.getContent()).length&&(r=g+escape(u.id)+","+escape(n),t.dataTransfer.setData(p,r)))}),u.on("drop",function(e){if(!v(e)){var t=(i=e).dataTransfer&&(a=i.dataTransfer.getData(p))&&0<=a.indexOf(g)?(a=a.substr(g.length).split(","),{id:unescape(a[0]),html:unescape(a[1])}):null;if(t&&
 t.id!==u.id){e.preventDefault();var n=xy(e.x,e.y,u.getDoc());d.setRng(n),r=t.html,o=!0,u.queryCommandSupported("mceInsertClipboardContent")?u.execCommand("mceInsertClipboardContent",!1,{content:r,internal:o}):u.execCommand("mceInsertContent",!1,r)}}var r,o,i,a})),i&&(u.on("keydown",function(e){if(!v(e)&&e.keyCode===c){if(!u.getBody().getElementsByTagName("hr").length)return;if(d.isCollapsed()&&0===d.getRng().startOffset){var t=d.getNode(),n=t.previousSibling;if("HR"===t.nodeName)return f.remove(t),void e.preventDefault();n&&n.nodeName&&"hr"===n.nodeName.toLowerCase()&&(f.remove(n),e.preventDefault())}}}),H.Range.prototype.getClientRects||u.on("mousedown",function(e){if(!v(e)&&"HTML"===e.target.nodeName){var t=u.getBody();t.blur(),be.setEditorTimeout(u,function(){t.focus()})}}),n=function(){var e=f.getAttribs(d.getStart().cloneNode(!1));ret
 urn function(){var t=d.getStart();t!==u.getBody()&&(f.setAttrib(t,"style",null),o(e,function(e){t.setAttributeNode(e.cloneNode(!0))}))}},r=function(){return!d.isCollapsed()&&f.getParent(d.getStart(),f.isBlock)!==f.getParent(d.getEnd(),f.isBlock)},u.on("keypress",function(e){var t;if(!v(e)&&(8===e.keyCode||46===e.keyCode)&&r())return t=n(),u.getDoc().execCommand("delete",!1,null),t(),e.preventDefault(),!1}),f.bind(u.getDoc(),"cut",function(e){var t;!v(e)&&r()&&(t=n(),be.setEditorTimeout(u,function(){t()}))}),e.readonly||u.on("BeforeExecCommand MouseDown",function(){h("StyleWithCSS",!1),h("enableInlineTableEditing",!1),e.object_resizing||h("enableObjectResizing",!1)}),u.on("SetContent ExecCommand",function(e){"setcontent"!==e.type&&"mceInsertLink"!==e.command||o(f.select("a"),function(e){var t=e.parentNode,n=f.g
 etRoot();if(t.lastChild===e){for(;t&&!f.isBlock(t);){if(t.parentNode.lastChild!==t||t===n)return;t=t.parentNode}f.add(t,"br",{"data-mce-bogus":1})}})}),u.contentStyles.push("img:-moz-broken {-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}"),me.mac&&u.on("keydown",function(e){!pv.metaKeyPressed(e)||e.shiftKey||37!==e.keyCode&&39!==e.keyCode||(e.preventDefault(),u.selection.getSel().modify("move",37===e.keyCode?"backward":"forward","lineboundary"))}),y()),{refreshContentEditable:function(){},isHidden:function(){var e;return!i||u.removed?0:!(e=u.selection.getSel())||!e.rangeCount||0===e.rangeCount}}}var Qx=function(e){return Bo.isElement(e)&&go(or.fromDom(e))},Zx=function(t){t.on("click",function(e){3<=e.detail&&function(e){var t=e.selection.getRng(),n=gu.fromRangeStart(t),r=gu.fromRangeEnd(t);if(gu.isElementPosition(n)){var o=n.container()
 ;Qx(o)&&Zs.firstPositionIn(o).each(function(e){return t.setStart(e.container(),e.offset())})}gu.isElementPosition(r)&&(o=n.container(),Qx(o)&&Zs.lastPositionIn(o).each(function(e){return t.setEnd(e.container(),e.offset())})),e.selection.setRng(el(t))}(t)})},ew=function(e){var t,n;(t=e).on("click",function(e){t.dom.getParent(e.target,"details")&&e.preventDefault()}),(n=e).parser.addNodeFilter("details",function(e){F(e,function(e){e.attr("data-mce-open",e.attr("open")),e.attr("open","open")})}),n.serializer.addNodeFilter("details",function(e){F(e,function(e){var t=e.attr("data-mce-open");e.attr("open",R(t)?t:null),e.attr("data-mce-open",null)})})},tw=hi.DOM,nw=function(e){var t;e.bindPendingEventDelegates(),e.initialized=!0,e.fire("init"),e.focus(!0),e.nodeChanged({initial:!0}),e.execCallback("init_instance_callback",e),(t=e)
 .settings.auto_focus&&be.setEditorTimeout(t,function(){var e;(e=!0===t.settings.auto_focus?t:t.editorManager.get(t.settings.auto_focus)).destroyed||e.focus()},100)},rw=function(t,e){var n,r,u,o,i,a,s,c,l,f=t.settings,d=t.getElement(),m=t.getDoc();f.inline||(t.getElement().style.visibility=t.orgVisibility),e||f.content_editable||(m.open(),m.write(t.iframeHTML),m.close()),f.content_editable&&(t.on("remove",function(){var e=this.getBody();tw.removeClass(e,"mce-content-body"),tw.removeClass(e,"mce-edit-focus"),tw.setAttrib(e,"contentEditable",null)}),tw.addClass(d,"mce-content-body"),t.contentDocument=m=f.content_document||H.document,t.contentWindow=f.content_window||H.window,t.bodyElement=d,f.content_document=f.content_window=null,f.root_name=d.nodeName.toLowerCase()),(n=t.getBody()).disabled=!0,t.readonly=f.readonly,t.readonly||(t.inline&&"static"===tw.getStyle(n,"position",!0)&&(n.st
 yle.position="relative"),n.contentEditable=t.getParam("content_editable_state",!0)),n.disabled=!1,t.editorUpload=Rh(t),t.schema=ri(f),t.dom=hi(m,{keep_values:!0,url_converter:t.convertURL,url_converter_scope:t,hex_colors:f.force_hex_style_colors,class_filter:f.class_filter,update_styles:!0,root_element:t.inline?t.getBody():null,collect:f.content_editable,schema:t.schema,contentCssCors:hg(t),onSetAttrib:function(e){t.fire("SetAttrib",e)}}),t.parser=((o=oy((u=t).settings,u.schema)).addAttributeFilter("src,href,style,tabindex",function(e,t){for(var n,r,o,i=e.length,a=u.dom;i--;)if(r=(n=e[i]).attr(t),o="data-mce-"+t,!n.attributes.map[o]){if(0===r.indexOf("data:")||0===r.indexOf("blob:"))continue;"style"===t?((r=a.serializeStyle(a.parseStyle(r),n.name)).length||(r=null),n.attr(o,r),n.attr(t,r)):"tabindex"===t?(n.attr(o,r),n.attr(t,null)):n.attr(o,u.convertURL(r,t,n.name))}}),o.addNodeFilter("sc
 ript",function(e){for(var t,n,r=e.length;r--;)0!==(n=(t=e[r]).attr("type")||"no/type").indexOf("mce-")&&t.attr("type","mce-"+n)}),o.addNodeFilter("#cdata",function(e){for(var t,n=e.length;n--;)(t=e[n]).type=8,t.name="#comment",t.value="[CDATA["+t.value+"]]"}),o.addNodeFilter("p,h1,h2,h3,h4,h5,h6,div",function(e){for(var t,n=e.length,r=u.schema.getNonEmptyElements();n--;)(t=e[n]).isEmpty(r)&&0===t.getAll("br").length&&(t.append(new Kb("br",1)).shortEnded=!0)}),o),t.serializer=cy(f,t),t.selection=Yy(t.dom,t.getWin(),t.serializer,t),t.annotator=Pc(t),t.formatter=Lb(t),t.undoManager=Hv(t),t._nodeChangeDispatcher=new Uh(t),t._selectionOverrides=yv(t),ew(t),Zx(t),Gx(t),Ph(t),t.fire("PreInit"),f.browser_spellcheck||f.gecko_spellcheck||(m.body.spellcheck=!1,tw.setAttrib(n,"spellcheck","false")),t.quirks=Jx(t),t.fir
 e("PostRender"),f.directionality&&(n.dir=f.directionality),f.nowrap&&(n.style.whiteSpace="nowrap"),f.protect&&t.on("BeforeSetContent",function(t){Gt.each(f.protect,function(e){t.content=t.content.replace(e,function(e){return"\x3c!--mce:protected "+escape(e)+"--\x3e"})})}),t.on("SetContent",function(){t.addVisual(t.getBody())}),t.load({initial:!0,format:"html"}),t.startContent=t.getContent({format:"raw"}),t.on("compositionstart compositionend",function(e){t.composing="compositionstart"===e.type}),0<t.contentStyles.length&&(r="",Gt.each(t.contentStyles,function(e){r+=e+"\r\n"}),t.dom.addStyle(r)),(i=t,i.inline?tw.styleSheetLoader:i.dom.styleSheetLoader).loadAll(t.contentCSS,function(e){nw(t)},function(e){nw(t)}),f.content_style&&(a=t,s=f.content_style,c=or.fromDom(a.getDoc().head),l=or.fromTag("style"),br(l,"t
 ype","text/css"),Ai(l,or.fromText(s)),Ai(c,l))},ow=hi.DOM,iw=function(e,t){var n,r,o,i,a,u,s,c=e.editorManager.translate("Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help"),l=(n=e.id,r=c,o=t.height,i=Km(e),s=or.fromTag("iframe"),yr(s,i),yr(s,{id:n+"_ifr",frameBorder:"0",allowTransparency:"true",title:r}),wr(s,{width:"100%",height:(a=o,u="number"==typeof a?a+"px":a,u||""),display:"block"}),s).dom();l.onload=function(){l.onload=null,e.fire("load")};var f,d,m,g,p=function(e,t){if(H.document.domain!==H.window.location.hostname&&me.ie&&me.ie<12){var n=Ah.uuid("mce");e[n]=function(){rw(e)};var r='javascript:(function(){document.open();document.domain="'+H.document.domain+'";var ed = window.parent.tinymce.get("'+e.id+'");document.write(ed.iframeHTML);document.close();ed.'+n+"(
 true);})()";return ow.setAttrib(t,"src",r),!0}return!1}(e,l);return e.contentAreaContainer=t.iframeContainer,e.iframeElement=l,e.iframeHTML=(g=Xm(f=e)+"<html><head>",Ym(f)!==f.documentBaseUrl&&(g+='<base href="'+f.documentBaseURI.getURI()+'" />'),g+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />',d=Gm(f),m=Jm(f),Qm(f)&&(g+='<meta http-equiv="Content-Security-Policy" content="'+Qm(f)+'" />'),g+='</head><body id="'+d+'" class="mce-content-body '+m+'" data-id="'+f.id+'"><br></body></html>'),ow.add(t.iframeContainer,l),p},aw=function(e,t){var n=iw(e,t);t.editorContainer&&(ow.get(t.editorContainer).style.display=e.orgDisplay,e.hidden=ow.isHidden(t.editorContainer)),e.getElement().style.display="none",ow.setAttrib(e.id,"aria-hidden","true"),n||rw(e)}
 ,uw=hi.DOM,sw=function(t,n,e){var r=mh.get(e),o=mh.urls[e]||t.documentBaseUrl.replace(/\/$/,"");if(e=Gt.trim(e),r&&-1===Gt.inArray(n,e)){if(Gt.each(mh.dependencies(e),function(e){sw(t,n,e)}),t.plugins[e])return;try{var i=new r(t,o,t.$);(t.plugins[e]=i).init&&(i.init(t,o),n.push(e))}catch(jN){dh.pluginInitError(t,e,jN)}}},cw=function(e){return e.replace(/^\-/,"")},lw=function(e){return{editorContainer:e,iframeContainer:e}},fw=function(e){var t,n,r=e.getElement();return e.inline?lw(null):(t=r,n=uw.create("div"),uw.insertAfter(n,t),lw(n))},dw=function(e){var t,n,r,o,i,a,u,s,c,l,f,d=e.settings,m=e.getElement();return e.orgDisplay=m.style.display,R(d.theme)?(l=(o=e).settings,f=o.getElement(),i=l.width||uw.getStyle(f,"width")||"100%",a=l.height||uw.getStyle(f,"height")||f.offsetHeight,u=l.min_height||100,(s=/^[0-9\.]+(|px)$/i).test(""+i)&&(i=Math.max(parseInt(i,10),100)),s.test(""+a)&am
 p;&(a=Math.max(parseInt(a,10),u)),c=o.theme.renderUI({targetNode:f,width:i,height:a,deltaWidth:l.delta_width,deltaHeight:l.delta_height}),l.content_editable||(a=(c.iframeHeight||a)+("number"==typeof a?c.deltaHeight||0:""))<u&&(a=u),c.height=a,c):P(d.theme)?(r=(t=e).getElement(),(n=t.settings.theme(t,r)).editorContainer.nodeType&&(n.editorContainer.id=n.editorContainer.id||t.id+"_parent"),n.iframeContainer&&n.iframeContainer.nodeType&&(n.iframeContainer.id=n.iframeContainer.id||t.id+"_iframecontainer"),n.height=n.iframeHeight?n.iframeHeight:r.offsetHeight,n):fw(e)},mw=function(t){var e,n,r,o,i,a,u=t.settings,s=t.getElement();return t.rtl=u.rtl_ui||t.editorManager.i18n.rtl,t.editorManager.i18n.setCode(u.language),u.aria_label=u.aria_label||uw.getAttrib(s,"aria-label",t.getLang("aria.rich_text_area")),t.fire("ScriptsLoaded"),o=(n=t).settings.theme,R(o)?(n.settings.theme=cw(o),r=
 gh.get(o),n.theme=new r(n,gh.urls[o]),n.theme.init&&n.theme.init(n,gh.urls[o]||n.documentBaseUrl.replace(/\/$/,""),n.$)):n.theme={},i=t,a=[],Gt.each(i.settings.plugins.split(/[ ,]/),function(e){sw(i,a,cw(e))}),e=dw(t),t.editorContainer=e.editorContainer?e.editorContainer:null,u.content_css&&Gt.each(Gt.explode(u.content_css),function(e){t.contentCSS.push(t.documentBaseURI.toAbsolute(e))}),u.content_editable?rw(t):aw(t,e)},gw=hi.DOM,pw=function(e){return"-"===e.charAt(0)},hw=function(i,a){var u=xi.ScriptLoader;!function(e,t,n,r){var o=t.settings,i=o.theme;if(R(i)){if(!pw(i)&&!gh.urls.hasOwnProperty(i)){var a=o.theme_url;a?gh.load(i,t.documentBaseURI.toAbsolute(a)):gh.load(i,"themes/"+i+"/theme"+n+".js")}e.loadQueue(function(){gh.waitFor(i,r)})}else r()}(u,i,a,function(){var e,t,n,r,o;e=u,(n=(t=i).settings).language&&"en"!==n.language&&!n.language_url&&(n.language_url=t.editorMan
 ager.baseURL+"/langs/"+n.language+".js"),n.language_url&&!t.editorManager.i18n.data[n.language]&&e.add(n.language_url),r=i.settings,o=a,Gt.isArray(r.plugins)&&(r.plugins=r.plugins.join(" ")),Gt.each(r.external_plugins,function(e,t){mh.load(t,e),r.plugins+=" "+t}),Gt.each(r.plugins.split(/[ ,]/),function(e){if((e=Gt.trim(e))&&!mh.urls[e])if(pw(e)){e=e.substr(1,e.length);var t=mh.dependencies(e);Gt.each(t,function(e){var t={prefix:"plugins/",resource:e,suffix:"/plugin"+o+".js"};e=mh.createUrl(t,e),mh.load(e.resource,e)})}else mh.load(e,{prefix:"plugins/",resource:e,suffix:"/plugin"+o+".js"})}),u.loadQueue(function(){i.removed||mw(i)},i,function(e){dh.pluginLoadError(i,e[0]),i.removed||mw(i)})})},vw=function(t){var e=t.settings,n=t.id,r=function(){gw.unbind(H.window,"ready",r),t.render()};if(Te.Event.domLoaded){if(t.getElement()&&me.conte
 ntEditable){e.inline?t.inline=!0:(t.orgVisibility=t.getElement().style.visibility,t.getElement().style.visibility="hidden");var o=t.getElement().form||gw.getParent(n,"form");o&&(t.formElement=o,e.hidden_input&&!/TEXTAREA|INPUT/i.test(t.getElement().nodeName)&&(gw.insertAfter(gw.create("input",{type:"hidden",name:n}),n),t.hasHiddenInput=!0),t.formEventDelegate=function(e){t.fire(e.type,e)},gw.bind(o,"submit reset",t.formEventDelegate),t.on("reset",function(){t.setContent(t.startContent,{format:"raw"})}),!e.submit_patch||o.submit.nodeType||o.submit.length||o._mceOldSubmit||(o._mceOldSubmit=o.submit,o.submit=function(){return t.editorManager.triggerSave(),t.setDirty(!1),o._mceOldSubmit(o)})),t.windowManager=rh(t),t.notificationManager=nh(t),"xml"===e.encoding&&t.on("GetContent",function(e){e.save&&(e.content=gw.encode(e.content))}),e.add_form_submit_trigger&
 amp;&t.on("submit",function(){t.initialized&&t.save()}),e.add_unload_trigger&&(t._beforeUnload=function(){!t.initialized||t.destroyed||t.isHidden()||t.save({format:"raw",no_events:!0,set_dirty:!1})},t.editorManager.on("BeforeUnload",t._beforeUnload)),t.editorManager.add(t),hw(t,t.suffix)}}else gw.bind(H.window,"ready",r)},bw=function(e,t,n){var r=e.sidebars?e.sidebars:[];r.push({name:t,settings:n}),e.sidebars=r},yw=Gt.each,Cw=Gt.trim,xw="source protocol authority userInfo user password host port relative path directory file query anchor".split(" "),ww={ftp:21,http:80,https:443,mailto:25},Nw=function(r,e){var t,n,o=this;if(r=Cw(r),t=(e=o.settings=e||{}).base_uri,/^([\w\-]+):([^\/]{2})/i.test(r)||/^\s*#/.test(r))o.source=r;else{var i=0===r.indexOf("//");0!==r.indexOf("/")||i||(r=(t&&t.protocol||"http")+"://mce_host"+r),/^[\w\-]*:?\/\//.test(r)||(n=e.base_uri?
 e.base_uri.path:new Nw(H.document.location.href).directory,""==e.base_uri.protocol?r="//mce_host"+o.toAbsPath(n,r):(r=/([^#?]*)([#?]?.*)/.exec(r),r=(t&&t.protocol||"http")+"://mce_host"+o.toAbsPath(n,r[1])+r[2])),r=r.replace(/@@/g,"(mce_at)"),r=/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(r),yw(xw,function(e,t){var n=r[t];n&&(n=n.replace(/\(mce_at\)/g,"@@")),o[e]=n}),t&&(o.protocol||(o.protocol=t.protocol),o.userInfo||(o.userInfo=t.userInfo),o.port||"mce_host"!==o.host||(o.port=t.port),o.host&&"mce_host"!==o.host||(o.host=t.host),o.source=""),i&&(o.protocol="")}};Nw.prototype={setPath:function(e){e=/^(.*?)\/?(\w+)?$/.exec(e),this.path=e[0],this.directory=e[1],this.file=e[2],this.source="&
 quot;,this.getURI()},toRelative:function(e){var t;if("./"===e)return e;if("mce_host"!==(e=new Nw(e,{base_uri:this})).host&&this.host!==e.host&&e.host||this.port!==e.port||this.protocol!==e.protocol&&""!==e.protocol)return e.getURI();var n=this.getURI(),r=e.getURI();return n===r||"/"===n.charAt(n.length-1)&&n.substr(0,n.length-1)===r?n:(t=this.toRelPath(this.path,e.path),e.query&&(t+="?"+e.query),e.anchor&&(t+="#"+e.anchor),t)},toAbsolute:function(e,t){return(e=new Nw(e,{base_uri:this})).getURI(t&&this.isSameOrigin(e))},isSameOrigin:function(e){if(this.host==e.host&&this.protocol==e.protocol){if(this.port==e.port)return!0;var t=ww[this.protocol];if(t&&(this.port||t)==(e.port||t))return!0}return!1},toRelPath:function(e,t){var n,r,o,i=0,a="";if(e=(e=e.substring(0,e.lastIndexOf("/"))).split("/"),n=t.split("/"),e.lengt
 h>=n.length)for(r=0,o=e.length;r<o;r++)if(r>=n.length||e[r]!==n[r]){i=r+1;break}if(e.length<n.length)for(r=0,o=n.length;r<o;r++)if(r>=e.length||e[r]!==n[r]){i=r+1;break}if(1===i)return t;for(r=0,o=e.length-(i-1);r<o;r++)a+="../";for(r=i-1,o=n.length;r<o;r++)a+=r!==i-1?"/"+n[r]:n[r];return a},toAbsPath:function(e,t){var n,r,o,i=0,a=[];for(r=/\/$/.test(t)?"/":"",e=e.split("/"),t=t.split("/"),yw(e,function(e){e&&a.push(e)}),e=a,n=t.length-1,a=[];0<=n;n--)0!==t[n].length&&"."!==t[n]&&(".."!==t[n]?0<i?i--:a.push(t[n]):i++);return 0!==(o=(n=e.length-i)<=0?a.reverse().join("/"):e.slice(0,n).join("/")+"/"+a.reverse().join("/")).indexOf("/")&&(o="/"+o),r&&o.lastIndexOf("/")!==o.length-1&&(o+=r),o},getURI:function(e){var t,n=this;return n.source&&!e||(t=&quo
 t;",e||(n.protocol?t+=n.protocol+"://":t+="//",n.userInfo&&(t+=n.userInfo+"@"),n.host&&(t+=n.host),n.port&&(t+=":"+n.port)),n.path&&(t+=n.path),n.query&&(t+="?"+n.query),n.anchor&&(t+="#"+n.anchor),n.source=t),n.source}},Nw.parseDataUri=function(e){var t,n;return e=decodeURIComponent(e).split(","),(n=/data:([^;]+)/.exec(e[0]))&&(t=n[1]),{type:t,data:e[1]}},Nw.getDocumentBaseUrl=function(e){var t;return t=0!==e.protocol.indexOf("http")&&"file:"!==e.protocol?e.href:e.protocol+"//"+e.host+e.pathname,/^[^:]+:\/\/\/?[^\/]+\//.test(t)&&(t=t.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,""),/[\/\\]$/.test(t)||(t+="/")),t};var Ew=function(e,t,n){var r,o,i,a,u;if(t.format=t.format?t.format:"html",t.get=!0,t.getInner=!0,t.no_events||e.fire("BeforeGetContent",t),"r
 aw"===t.format)r=Gt.trim(Sv.trimExternal(e.serializer,n.innerHTML));else if("text"===t.format)r=da(n.innerText||n.textContent);else{if("tree"===t.format)return e.serializer.serialize(n,t);i=(o=e).serializer.serialize(n,t),a=eg(o),u=new RegExp("^(<"+a+"[^>]*>(&nbsp;|&#160;|\\s|\xa0|<br \\/>|)<\\/"+a+">[\r\n]*|<br \\/>[\r\n]*)$"),r=i.replace(u,"")}return"text"===t.format||Co(or.fromDom(n))?t.content=r:t.content=Gt.trim(r),t.no_events||e.fire("GetContent",t),t.content},Sw=function(e,t){t(e),e.firstChild&&Sw(e.firstChild,t),e.next&&Sw(e.next,t)},kw=function(e,t,n){var r=function(e,n,t){var r={},o={},i=[];for(var a in t.firstChild&&Sw(t.firstChild,function(t){F(e,function(e){e.name===t.name&&(r[e.name]?r[e.name].nodes.push(t):r[e.name]={filter:e,nodes:[t]})}),F(n,function(e){"string"==typeof t.attr(e.name)&&(o[e.name]?o[
 e.name].nodes.push(t):o[e.name]={filter:e,nodes:[t]})})}),r)r.hasOwnProperty(a)&&i.push(r[a]);for(var a in o)o.hasOwnProperty(a)&&i.push(o[a]);return i}(e,t,n);F(r,function(t){F(t.filter.callbacks,function(e){e(t.nodes,t.filter.name,{})})})},Tw=function(e){return e instanceof Kb},Aw=function(e,t){var r;e.dom.setHTML(e.getBody(),t),Kp(r=e)&&Zs.firstPositionIn(r.getBody()).each(function(e){var t=e.getNode(),n=Bo.isTable(t)?Zs.firstPositionIn(t).getOr(e):e;r.selection.setRng(n.toRange())})},Rw=function(u,s,c){return void 0===c&&(c={}),c.format=c.format?c.format:"html",c.set=!0,c.content=Tw(s)?"":s,Tw(s)||c.no_events||(u.fire("BeforeSetContent",c),s=c.content),A.from(u.getBody()).fold(q(s),function(e){return Tw(s)?function(e,t,n,r){kw(e.parser.getNodeFilters(),e.parser.getAttributeFilters(),n);var o=Jc({validate:e.validate},e.schema).serialize(n);return r.content=Co(or.fromDom(t))?o:Gt.trim(o),Aw(e,r.content),r.no_events||e.f
 ire("SetContent",r),n}(u,e,s,c):(t=u,n=e,o=c,0===(r=s).length||/^\s+$/.test(r)?(a='<br data-mce-bogus="1">',"TABLE"===n.nodeName?r="<tr><td>"+a+"</td></tr>":/^(UL|OL)$/.test(n.nodeName)&&(r="<li>"+a+"</li>"),(i=eg(t))&&t.schema.isValidChild(n.nodeName.toLowerCase(),i.toLowerCase())?(r=a,r=t.dom.createHTML(i,t.settings.forced_root_block_attrs,r)):r||(r='<br data-mce-bogus="1">'),Aw(t,r),t.fire("SetContent",o)):("raw"!==o.format&&(r=Jc({validate:t.validate},t.schema).serialize(t.parser.parse(r,{isRootContent:!0,insert:!0}))),o.content=Co(or.fromDom(n))?r:Gt.trim(r),Aw(t,o.content),o.no_events||t.fire("SetContent",o)),o.content);var t,n,r,o,i,a})},_w=hi.DOM,Dw=function(e){return A.from(e).each(function(e){return e.destroy()})},Bw=function(e){if(!e.removed){var t=e._selectionOverrides,n=e.editorUpload,r=e.ge
 tBody(),o=e.getElement();r&&e.save({is_removing:!0}),e.removed=!0,e.unbindAllNativeEvents(),e.hasHiddenInput&&o&&_w.remove(o.nextSibling),bp(e),e.editorManager.remove(e),!e.inline&&r&&(i=e,_w.setStyle(i.id,"display",i.orgDisplay)),yp(e),_w.remove(e.getContainer()),Dw(t),Dw(n),e.destroy()}var i},Ow=function(e,t){var n,r,o,i=e.selection,a=e.dom;e.destroyed||(t||e.removed?(t||(e.editorManager.off("beforeunload",e._beforeUnload),e.theme&&e.theme.destroy&&e.theme.destroy(),Dw(i),Dw(a)),(r=(n=e).formElement)&&(r._mceOldSubmit&&(r.submit=r._mceOldSubmit,r._mceOldSubmit=null),_w.unbind(r,"submit reset",n.formEventDelegate)),(o=e).contentAreaContainer=o.formElement=o.container=o.editorContainer=null,o.bodyElement=o.contentDocument=o.contentWindow=null,o.iframeElement=o.targetElm=null,o.selection&&(o.selection=o.selection.win=o.selection.dom=o.selection.dom.doc=null),e.destroyed=!0):e
 .remove())},Pw=hi.DOM,Lw=Gt.extend,Iw=Gt.each,Mw=Gt.resolve,Fw=me.ie,zw=function(e,t,n){var r,o,i,a,u,s,c,l=this,f=l.documentBaseUrl=n.documentBaseURL,d=n.baseURI;r=l,o=e,i=f,a=n.defaultSettings,u=t,c={id:o,theme:"modern",delta_width:0,delta_height:0,popup_css:"",plugins:"",document_base_url:i,add_form_submit_trigger:!0,submit_patch:!0,add_unload_trigger:!0,convert_urls:!0,relative_urls:!0,remove_script_host:!0,object_resizing:!0,doctype:"<!DOCTYPE html>",visual:!0,font_size_style_values:"xx-small,x-small,small,medium,large,x-large,xx-large",font_size_legacy_values:"xx-small,small,medium,large,x-large,xx-large,300%",forced_root_block:"p",hidden_input:!0,render_ui:!0,indentation:"40px",inline_styles:!0,convert_fonts_to_spans:!0,indent:"simple",indent_before:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,summar
 y,article,hgroup,aside,figure,figcaption,option,optgroup,datalist",indent_after:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,summary,article,hgroup,aside,figure,figcaption,option,optgroup,datalist",entity_encoding:"named",url_converter:(s=r).convertURL,url_converter_scope:s,ie7_compat:!0},t=ml(al,c,a,u),l.settings=t,Ei.language=t.language||"en",Ei.languageLoad=t.language_load,Ei.baseURL=n.baseURL,l.id=e,l.setDirty(!1),l.plugins={},l.documentBaseURI=new Nw(t.document_base_url,{base_uri:d}),l.baseURI=d,l.contentCSS=[],l.contentStyles=[],l.shortcuts=new Mp(l),l.loadedCSS={},l.editorCommands=new lp(l),l.suffix=n.suffix,l.editorManager=n,l.inline=t.inline,l.buttons={},l.menuItems={},t.cache_suffix&&(me.cacheSuffix=t.cache_suffix.replace(/^[\?\&]+/,"")),!1===t.override_viewport&&(me.overrideViewPort=!1),n.fire("SetupEditor",{editor:l}),l.
 execCallback("setup",l),l.$=hn.overrideDefaults(function(){return{context:l.inline?l.getBody():l.getDoc(),element:l.getBody()}})};Lw(zw.prototype={render:function(){vw(this)},focus:function(e){Wp(this,e)},hasFocus:function(){return Kp(this)},execCallback:function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var r,o=this.settings[e];if(o)return this.callbackLookup&&(r=this.callbackLookup[e])&&(o=r.func,r=r.scope),"string"==typeof o&&(r=(r=o.replace(/\.\w+$/,""))?Mw(r):0,o=Mw(o),this.callbackLookup=this.callbackLookup||{},this.callbackLookup[e]={func:o,scope:r}),o.apply(r||this,Array.prototype.slice.call(arguments,1))},translate:function(e){if(e&&Gt.is(e,"string")){var n=this.settings.language||"en",r=this.editorManager.i18n;e=r.data[n+"."+e]||e.replace(/\{\#([^\}]+)\}/g,function(e,t){return r.data[n+"."+t]||"{#"+t+"}"})}return this.editorManag
 er.translate(e)},getLang:function(e,t){return this.editorManager.i18n.data[(this.settings.language||"en")+"."+e]||(t!==undefined?t:"{#"+e+"}")},getParam:function(e,t,n){return hl(this,e,t,n)},nodeChanged:function(e){this._nodeChangeDispatcher.nodeChanged(e)},addButton:function(e,t){var n=this;t.cmd&&(t.onclick=function(){n.execCommand(t.cmd)}),t.stateSelector&&"undefined"==typeof t.active&&(t.active=!1),t.text||t.icon||(t.icon=e),t.tooltip=t.tooltip||t.title,n.buttons[e]=t},addSidebar:function(e,t){return bw(this,e,t)},addMenuItem:function(e,t){var n=this;t.cmd&&(t.onclick=function(){n.execCommand(t.cmd)}),n.menuItems[e]=t},addContextToolbar:function(e,t){var n,r=this;r.contextToolbars=r.contextToolbars||[],"string"==typeof e&&(n=e,e=function(e){return r.dom.is(e,n)}),r.contextToolbars.push({id:Ah.uuid("mcet"),predicate:e,items:t})},addCommand:function(e,t,n){this.editorComm
 ands.addCommand(e,t,n)},addQueryStateHandler:function(e,t,n){this.editorCommands.addQueryStateHandler(e,t,n)},addQueryValueHandler:function(e,t,n){this.editorCommands.addQueryValueHandler(e,t,n)},addShortcut:function(e,t,n,r){this.shortcuts.add(e,t,n,r)},execCommand:function(e,t,n,r){return this.editorCommands.execCommand(e,t,n,r)},queryCommandState:function(e){return this.editorCommands.queryCommandState(e)},queryCommandValue:function(e){return this.editorCommands.queryCommandValue(e)},queryCommandSupported:function(e){return this.editorCommands.queryCommandSupported(e)},show:function(){this.hidden&&(this.hidden=!1,this.inline?this.getBody().contentEditable=!0:(Pw.show(this.getContainer()),Pw.hide(this.id)),this.load(),this.fire("show"))},hide:function(){var e=this,t=e.getDoc();e.hidden||(Fw&&t&&!e.inline&&t.execCommand("SelectAll"),e.save(),e.inline?(e.getBody().contentEditable=!1,e===e.editorManager.focusedEditor&&(e.edi
 torManager.focusedEditor=null)):(Pw.hide(e.getContainer()),Pw.setStyle(e.id,"display",e.orgDisplay)),e.hidden=!0,e.fire("hide"))},isHidden:function(){return!!this.hidden},setProgressState:function(e,t){this.fire("ProgressState",{state:e,time:t})},load:function(e){var t,n=this.getElement();return this.removed?"":n?((e=e||{}).load=!0,t=this.setContent(n.value!==undefined?n.value:n.innerHTML,e),e.element=n,e.no_events||this.fire("LoadContent",e),e.element=n=null,t):void 0},save:function(e){var t,n,r=this,o=r.getElement();if(o&&r.initialized&&!r.removed)return(e=e||{}).save=!0,e.element=o,e.content=r.getContent(e),e.no_events||r.fire("SaveContent",e),"raw"===e.format&&r.fire("RawSaveContent",e),t=e.content,/TEXTAREA|INPUT/i.test(o.nodeName)?o.value=t:(!e.is_removing&&r.inline||(o.innerHTML=t),(n=Pw.getParent(r.id,"form"))&&Iw(n.elements,function(e){if(e.name=
 ==r.id)return e.value=t,!1})),e.element=o=null,!1!==e.set_dirty&&r.setDirty(!1),t},setContent:function(e,t){return Rw(this,e,t)},getContent:function(e){return t=this,void 0===(n=e)&&(n={}),A.from(t.getBody()).fold(q("tree"===n.format?new Kb("body",11):""),function(e){return Ew(t,n,e)});var t,n},insertContent:function(e,t){t&&(e=Lw({content:e},t)),this.execCommand("mceInsertContent",!1,e)},isDirty:function(){return!this.isNotDirty},setDirty:function(e){var t=!this.isNotDirty;this.isNotDirty=!e,e&&e!==t&&this.fire("dirty")},setMode:function(e){var t,n;(n=e)!==kp(t=this)&&(t.initialized?Sp(t,"readonly"===n):t.on("init",function(){Sp(t,"readonly"===n)}),Cp(t,n))},getContainer:function(){return this.container||(this.container=Pw.get(this.editorContainer||this.id+"_parent")),this.container},getContentAreaContainer:function(){return this.contentAreaConta
 iner},getElement:function(){return this.targetElm||(this.targetElm=Pw.get(this.id)),this.targetElm},getWin:function(){var e;return this.contentWindow||(e=this.iframeElement)&&(this.contentWindow=e.contentWindow),this.contentWindow},getDoc:function(){var e;return this.contentDocument||(e=this.getWin())&&(this.contentDocument=e.document),this.contentDocument},getBody:function(){var e=this.getDoc();return this.bodyElement||(e?e.body:null)},convertURL:function(e,t,n){var r=this.settings;return r.urlconverter_callback?this.execCallback("urlconverter_callback",e,n,!0,t):!r.convert_urls||n&&"LINK"===n.nodeName||0===e.indexOf("file:")||0===e.length?e:r.relative_urls?this.documentBaseURI.toRelative(e):e=this.documentBaseURI.toAbsolute(e,r.remove_script_host)},addVisual:function(e){var n,r=this,o=r.settings,i=r.dom;e=e||r.getBody(),r.hasVisual===undefined&&(r.hasVisual=o.visual),Iw(i.select("table,a",e),function(e){var t;
 switch(e.nodeName){case"TABLE":return n=o.visual_table_class||"mce-item-table",void((t=i.getAttrib(e,"border"))&&"0"!==t||!r.hasVisual?i.removeClass(e,n):i.addClass(e,n));case"A":return void(i.getAttrib(e,"href")||(t=i.getAttrib(e,"name")||e.id,n=o.visual_anchor_class||"mce-item-anchor",t&&r.hasVisual?i.addClass(e,n):i.removeClass(e,n)))}}),r.fire("VisualAid",{element:e,hasVisual:r.hasVisual})},remove:function(){Bw(this)},destroy:function(e){Ow(this,e)},uploadImages:function(e){return this.editorUpload.uploadImages(e)},_scanForImages:function(){return this.editorUpload.scanForImages()}},Bp);var Uw,Vw,Hw,jw={isEditorUIElement:function(e){return-1!==e.className.toString().indexOf("mce-")}},qw=function(n,e){var t,r;nr.detect().browser.isIE()?(r=n).on("focusout",function(){ep(r)}):(t=e,n.on("mouseup touchend",function(e){t.throttle()})),n.on("keyup
  nodechange",function(e){var t;"nodechange"===(t=e).type&&t.selectionChange||ep(n)})},$w=function(e){var t,n,r,o=Oi(function(){ep(e)},0);e.inline&&(t=e,n=o,r=function(){n.throttle()},hi.DOM.bind(H.document,"mouseup",r),t.on("remove",function(){hi.DOM.unbind(H.document,"mouseup",r)})),e.on("init",function(){qw(e,o)}),e.on("remove",function(){o.cancel()})},Ww=hi.DOM,Kw=function(e){return jw.isEditorUIElement(e)},Xw=function(t,e){var n=t?t.settings.custom_ui_selector:"";return null!==Ww.getParent(e,function(e){return Kw(e)||!!n&&t.dom.is(e,n)})},Yw=function(r,e){var t=e.editor;$w(t),t.on("focusin",function(){var e=r.focusedEditor;e!==this&&(e&&e.fire("blur",{focusedEditor:this}),r.setActive(this),(r.focusedEditor=this).fire("focus",{blurredEditor:e}),this.focus(!0))}),t.on("focusout",function(){var t=this;be.setEditorTimeout(t,functi
 on(){var e=r.focusedEditor;Xw(t,function(){try{return H.document.activeElement}catch(e){return H.document.body}}())||e!==t||(t.fire("blur",{focusedEditor:null}),r.focusedEditor=null)})}),Uw||(Uw=function(e){var t,n=r.activeEditor;t=e.target,n&&t.ownerDocument===H.document&&(t===H.document.body||Xw(n,t)||r.focusedEditor!==n||(n.fire("blur",{focusedEditor:null}),r.focusedEditor=null))},Ww.bind(H.document,"focusin",Uw))},Gw=function(e,t){e.focusedEditor===t.editor&&(e.focusedEditor=null),e.activeEditor||(Ww.unbind(H.document,"focusin",Uw),Uw=null)},Jw=function(e){e.on("AddEditor",d(Yw,e)),e.on("RemoveEditor",d(Gw,e))},Qw=hi.DOM,Zw=Gt.explode,eN=Gt.each,tN=Gt.extend,nN=0,rN=!1,oN=[],iN=[],aN=function(t){var n=t.type;eN(Hw.get(),function(e){switch(n){case"scroll":e.fire("ScrollWindow",t);break;case"resize":e.fire("ResizeWindow",t)}})},uN=function(e){e!==rN&&
 (e?hn(window).on("resize scroll",aN):hn(window).off("resize scroll",aN),rN=e)},sN=function(t){var e=iN;delete oN[t.id];for(var n=0;n<oN.length;n++)if(oN[n]===t){oN.splice(n,1);break}return iN=z(iN,function(e){return t!==e}),Hw.activeEditor===t&&(Hw.activeEditor=0<iN.length?iN[0]:null),Hw.focusedEditor===t&&(Hw.focusedEditor=null),e.length!==iN.length};tN(Hw={defaultSettings:{},$:hn,majorVersion:"4",minorVersion:"9.4",releaseDate:"2019-03-20",editors:oN,i18n:ah,activeEditor:null,settings:{},setup:function(){var e,t,n,r,o="";if(t=Nw.getDocumentBaseUrl(H.document.location),/^[^:]+:\/\/\/?[^\/]+\//.test(t)&&(t=t.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,""),/[\/\\]$/.test(t)||(t+="/")),n=window.tinymce||window.tinyMCEPreInit)e=n.base||n.baseURL,o=n.suffix;else{for(var i=H.document.getElementsByTagName("script"),a=0;a<i.length;a++){var u=(r=i[a].src).s
 ubstring(r.lastIndexOf("/"));if(/tinymce(\.full|\.jquery|)(\.min|\.dev|)\.js/.test(r)){-1!==u.indexOf(".min")&&(o=".min"),e=r.substring(0,r.lastIndexOf("/"));break}}!e&&H.document.currentScript&&(-1!==(r=H.document.currentScript.src).indexOf(".min")&&(o=".min"),e=r.substring(0,r.lastIndexOf("/")))}this.baseURL=new Nw(t).toAbsolute(e),this.documentBaseURL=t,this.baseURI=new Nw(this.baseURL),this.suffix=o,Jw(this)},overrideDefaults:function(e){var t,n;(t=e.base_url)&&(this.baseURL=new Nw(this.documentBaseURL).toAbsolute(t.replace(/\/+$/,"")),this.baseURI=new Nw(this.baseURL)),n=e.suffix,e.suffix&&(this.suffix=n);var r=(this.defaultSettings=e).plugin_base_urls;for(var o in r)Ei.PluginManager.urls[o]=r[o]},init:function(r){var n,u,s=this;u=Gt.makeMap("area base basefont br col frame hr img input isindex link meta param embed source wbr track colgroup optio
 n tbody tfoot thead tr script noscript style textarea video audio iframe object menu"," ");var c=function(e){var t=e.id;return t||(t=(t=e.name)&&!Qw.get(t)?e.name:Qw.uniqueId(),e.setAttribute("id",t)),t},l=function(e,t){return t.constructor===RegExp?t.test(e.className):Qw.hasClass(e,t)},f=function(e){n=e},e=function(){var o,i=0,a=[],n=function(e,t,n){var r=new zw(e,t,s);a.push(r),r.on("init",function(){++i===o.length&&f(a)}),r.targetElm=r.targetElm||n,r.render()};Qw.unbind(window,"ready",e),function(e){var t=r[e];t&&t.apply(s,Array.prototype.slice.call(arguments,2))}("onpageload"),o=hn.unique(function(t){var e,n=[];if(me.ie&&me.ie<11)return dh.initError("TinyMCE does not support the browser you are using. For a list of supported browsers please see: https://www.tinymce.com/docs/get-started/system-requirements/"),[];if(t.types)return eN(t.types,function(e){n=n.concat(Qw.select(e.select
 or))}),n;if(t.selector)return Qw.select(t.selector);if(t.target)return[t.target];switch(t.mode){case"exact":0<(e=t.elements||"").length&&eN(Zw(e),function(t){var e;(e=Qw.get(t))?n.push(e):eN(H.document.forms,function(e){eN(e.elements,function(e){e.name===t&&(t="mce_editor_"+nN++,Qw.setAttrib(e,"id",t),n.push(e))})})});break;case"textareas":case"specific_textareas":eN(Qw.select("textarea"),function(e){t.editor_deselector&&l(e,t.editor_deselector)||t.editor_selector&&!l(e,t.editor_selector)||n.push(e)})}return n}(r)),r.types?eN(r.types,function(t){Gt.each(o,function(e){return!Qw.is(e,t.selector)||(n(c(e),tN({},r,t),e),!1)})}):(Gt.each(o,function(e){var t;(t=s.get(e.id))&&t.initialized&&!(t.getContainer()||t.getBody()).parentNode&&(sN(t),t.unbindAllNativeEvents(),t.destroy(!0),t.removed=!0,t=null)}),0===(o=Gt.grep(o,function(e){return!s.get(e.id)})).length?f(
 []):eN(o,function(e){var t;t=e,r.inline&&t.tagName.toLowerCase()in u?dh.initError("Could not initialize inline editor on invalid inline target element",e):n(c(e),r,e)}))};return s.settings=r,Qw.bind(window,"ready",e),new ge(function(t){n?t(n):f=function(e){t(e)}})},get:function(t){return 0===arguments.length?iN.slice(0):R(t)?V(iN,function(e){return e.id===t}).getOr(null):L(t)&&iN[t]?iN[t]:null},add:function(e){var t=this;return oN[e.id]===e||(null===t.get(e.id)&&("length"!==e.id&&(oN[e.id]=e),oN.push(e),iN.push(e)),uN(!0),t.activeEditor=e,t.fire("AddEditor",{editor:e}),Vw||(Vw=function(){t.fire("BeforeUnload")},Qw.bind(window,"beforeunload",Vw))),e},createEditor:function(e,t){return this.add(new zw(e,t,this))},remove:function(e){var t,n,r=this;if(e){if(!R(e))return n=e,B(r.get(n.id))?null:(sN(n)&&r.fire("RemoveEditor",{editor:n}),0===iN.length&&Qw.unbind(window,&quot
 ;beforeunload",Vw),n.remove(),uN(0<iN.length),n);eN(Qw.select(e),function(e){(n=r.get(e.id))&&r.remove(n)})}else for(t=iN.length-1;0<=t;t--)r.remove(iN[t])},execCommand:function(e,t,n){var r=this.get(n);switch(e){case"mceAddEditor":return this.get(n)||new zw(n,this.settings,this).render(),!0;case"mceRemoveEditor":return r&&r.remove(),!0;case"mceToggleEditor":return r?r.isHidden()?r.show():r.hide():this.execCommand("mceAddEditor",0,n),!0}return!!this.activeEditor&&this.activeEditor.execCommand(e,t,n)},triggerSave:function(){eN(iN,function(e){e.save()})},addI18n:function(e,t){ah.add(e,t)},translate:function(e){return ah.translate(e)},setActive:function(e){var t=this.activeEditor;this.activeEditor!==e&&(t&&t.fire("deactivate",{relatedTarget:e}),e.fire("activate",{relatedTarget:t})),this.activeEditor=e}},pp),Hw.setup();var cN,lN=Hw;function fN(n){return{walk:function(e,t){retur
 n Tc(n,e,t)},split:bm,normalize:function(t){return _g(n,t).fold(q(!1),function(e){return t.setStart(e.startContainer,e.startOffset),t.setEnd(e.endContainer,e.endOffset),!0})}}}(cN=fN||(fN={})).compareRanges=Ng,cN.getCaretRangeFromPoint=xy,cN.getSelectedNode=Ha,cN.getNode=ja;var dN,mN,gN=fN,pN=Math.min,hN=Math.max,vN=Math.round,bN=function(e,t,n){var r,o,i,a,u,s;return r=t.x,o=t.y,i=e.w,a=e.h,u=t.w,s=t.h,"b"===(n=(n||"").split(""))[0]&&(o+=s),"r"===n[1]&&(r+=u),"c"===n[0]&&(o+=vN(s/2)),"c"===n[1]&&(r+=vN(u/2)),"b"===n[3]&&(o-=a),"r"===n[4]&&(r-=i),"c"===n[3]&&(o-=vN(a/2)),"c"===n[4]&&(r-=vN(i/2)),yN(r,o,i,a)},yN=function(e,t,n,r){return{x:e,y:t,w:n,h:r}},CN={inflate:function(e,t,n){return yN(e.x-t,e.y-n,e.w+2*t,e.h+2*n)},relativePosition:bN,findBestRelativePosition:function(e,t,n,r){var o,i;for(i=0;i<r.length;i++)if((o=
 bN(e,t,r[i])).x>=n.x&&o.x+o.w<=n.w+n.x&&o.y>=n.y&&o.y+o.h<=n.h+n.y)return r[i];return null},intersect:function(e,t){var n,r,o,i;return n=hN(e.x,t.x),r=hN(e.y,t.y),o=pN(e.x+e.w,t.x+t.w),i=pN(e.y+e.h,t.y+t.h),o-n<0||i-r<0?null:yN(n,r,o-n,i-r)},clamp:function(e,t,n){var r,o,i,a,u,s,c,l,f,d;return u=e.x,s=e.y,c=e.x+e.w,l=e.y+e.h,f=t.x+t.w,d=t.y+t.h,r=hN(0,t.x-u),o=hN(0,t.y-s),i=hN(0,c-f),a=hN(0,l-d),u+=r,s+=o,n&&(c+=r,l+=o,u-=i,s-=a),yN(u,s,(c-=i)-u,(l-=a)-s)},create:yN,fromClientRect:function(e){return yN(e.left,e.top,e.width,e.height)}},xN={},wN={add:function(e,t){xN[e.toLowerCase()]=t},has:function(e){return!!xN[e.toLowerCase()]},get:function(e){var t=e.toLowerCase(),n=xN.hasOwnProperty(t)?xN[t]:null;if(null===n)throw new Error("Could not find module for type: "+e);return n},create:function(e,t){var n;if("string"==typeof e?(t=t||{}).type=e:e=(t=e).type,e=e.toLowerCase(),!(n=xN[e]))throw new Error("Could not fi
 nd control by type: "+e);return(n=new n(t)).type=e,n}},NN=Gt.each,EN=Gt.extend,SN=function(){};SN.extend=dN=function(n){var e,t,r,o=this.prototype,i=function(){var e,t,n;if(!mN&&(this.init&&this.init.apply(this,arguments),t=this.Mixins))for(e=t.length;e--;)(n=t[e]).init&&n.init.apply(this,arguments)},a=function(){return this},u=function(n,r){return function(){var e,t=this._super;return this._super=o[n],e=r.apply(this,arguments),this._super=t,e}};for(t in mN=!0,e=new this,mN=!1,n.Mixins&&(NN(n.Mixins,function(e){for(var t in e)"init"!==t&&(n[t]=e[t])}),o.Mixins&&(n.Mixins=o.Mixins.concat(n.Mixins))),n.Methods&&NN(n.Methods.split(","),function(e){n[e]=a}),n.Properties&&NN(n.Properties.split(","),function(e){var t="_"+e;n[e]=function(e){return e!==undefined?(this[t]=e,this):this[t]}}),n.Statics&&NN(n.Statics,function(e,t){i[t]=e}),n.Defaults&&o.Defaults&&
 (n.Defaults=EN({},o.Defaults,n.Defaults)),n)"function"==typeof(r=n[t])&&o[t]?e[t]=u(t,r):e[t]=r;return i.prototype=e,(i.constructor=i).extend=dN,i};var kN=Math.min,TN=Math.max,AN=Math.round,RN=function(e,n){var r,o,t,i;if(n=n||'"',null===e)return"null";if("string"==(t=typeof e))return o="\bb\tt\nn\ff\rr\"\"''\\\\",n+e.replace(/([\u0080-\uFFFF\x00-\x1f\"\'\\])/g,function(e,t){return'"'===n&&"'"===e?e:(r=o.indexOf(t))+1?"\\"+o.charAt(r+1):(e=t.charCodeAt().toString(16),"\\u"+"0000".substring(e.length)+e)})+n;if("object"===t){if(e.hasOwnProperty&&"[object Array]"===Object.prototype.toString.call(e)){for(r=0,o="[";r<e.length;r++)o+=(0<r?",":"")+RN(e[r],n);return o+"]"}for(i in o="{",e)e.hasOwnProperty(i)&&(o+="function"!=typeof e[i]?(1<o.length?","+n:n)+i
 +n+":"+RN(e[i],n):"");return o+"}"}return""+e},_N={serialize:RN,parse:function(e){try{return JSON.parse(e)}catch(t){}}},DN={callbacks:{},count:0,send:function(t){var n=this,r=hi.DOM,o=t.count!==undefined?t.count:n.count,i="tinymce_jsonp_"+o;n.callbacks[o]=function(e){r.remove(i),delete n.callbacks[o],t.callback(e)},r.add(r.doc.body,"script",{id:i,src:t.url,type:"text/javascript"}),n.count++}},BN={send:function(e){var t,n=0,r=function(){!e.async||4===t.readyState||1e4<n++?(e.success&&n<1e4&&200===t.status?e.success.call(e.success_scope,""+t.responseText,t,e):e.error&&e.error.call(e.error_scope,1e4<n?"TIMED_OUT":"GENERAL",t,e),t=null):setTimeout(r,10)};if(e.scope=e.scope||this,e.success_scope=e.success_scope||e.scope,e.error_scope=e.error_scope||e.scope,e.async=!1!==e.async,e.data=e.data||"",BN.fire("beforeInitialize",{settings:e}),t=
 ph()){if(t.overrideMimeType&&t.overrideMimeType(e.content_type),t.open(e.type||(e.data?"POST":"GET"),e.url,e.async),e.crossDomain&&(t.withCredentials=!0),e.content_type&&t.setRequestHeader("Content-Type",e.content_type),e.requestheaders&&Gt.each(e.requestheaders,function(e){t.setRequestHeader(e.key,e.value)}),t.setRequestHeader("X-Requested-With","XMLHttpRequest"),(t=BN.fire("beforeSend",{xhr:t,settings:e}).xhr).send(e.data),!e.async)return r();setTimeout(r,10)}}};Gt.extend(BN,pp);var ON,PN,LN,IN,MN=Gt.extend,FN=function(e){this.settings=MN({},e),this.count=0};FN.sendRPC=function(e){return(new FN).send(e)},FN.prototype={send:function(n){var r=n.error,o=n.success;(n=MN(this.settings,n)).success=function(e,t){void 0===(e=_N.parse(e))&&(e={error:"JSON Parse error."}),e.error?r.call(n.error_scope||n.scope,e.error,t):o.call(n.success_scope||n.scope,e.result)},n.error=function(e,t
 ){r&&r.call(n.error_scope||n.scope,e,t)},n.data=_N.serialize({id:n.id||"c"+this.count++,method:n.method,params:n.params}),n.content_type="application/json",BN.send(n)}};try{ON=H.window.localStorage}catch(jN){PN={},LN=[],IN={getItem:function(e){var t=PN[e];return t||null},setItem:function(e,t){LN.push(e),PN[e]=String(t)},key:function(e){return LN[e]},removeItem:function(t){LN=LN.filter(function(e){return e===t}),delete PN[t]},clear:function(){LN=[],PN={}},length:0},Object.defineProperty(IN,"length",{get:function(){return LN.length},configurable:!1,enumerable:!1}),ON=IN}var zN,UN=lN,VN={geom:{Rect:CN},util:{Promise:ge,Delay:be,Tools:Gt,VK:pv,URI:Nw,Class:SN,EventDispatcher:dp,Observable:pp,I18n:ah,XHR:BN,JSON:_N,JSONRequest:FN,JSONP:DN,LocalStorage:ON,Color:function(e){var n={},u=0,s=0,c=0,t=function(e){var t;return"object"==typeof e?"r"in e?(u=e.r,s=e.g,c=e.b):"v"in e&&function(e,t,n){var r,o,i,a;if(e=(parseI
 nt(e,10)||0)%360,t=parseInt(t,10)/100,n=parseInt(n,10)/100,t=TN(0,kN(t,1)),n=TN(0,kN(n,1)),0!==t){switch(r=e/60,i=(o=n*t)*(1-Math.abs(r%2-1)),a=n-o,Math.floor(r)){case 0:u=o,s=i,c=0;break;case 1:u=i,s=o,c=0;break;case 2:u=0,s=o,c=i;break;case 3:u=0,s=i,c=o;break;case 4:u=i,s=0,c=o;break;case 5:u=o,s=0,c=i;break;default:u=s=c=0}u=AN(255*(u+a)),s=AN(255*(s+a)),c=AN(255*(c+a))}else u=s=c=AN(255*n)}(e.h,e.s,e.v):(t=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)[^\)]*\)/gi.exec(e))?(u=parseInt(t[1],10),s=parseInt(t[2],10),c=parseInt(t[3],10)):(t=/#([0-F]{2})([0-F]{2})([0-F]{2})/gi.exec(e))?(u=parseInt(t[1],16),s=parseInt(t[2],16),c=parseInt(t[3],16)):(t=/#([0-F])([0-F])([0-F])/gi.exec(e))&&(u=parseInt(t[1]+t[1],16),s=parseInt(t[2]+t[2],16),c=parseInt(t[3]+t[3],16)),u=u<0?0:255<u?255:u,s=s<0?0:255<s?255:s,c=c<0?0:255<c?255:c,n};return e&&t(e),n.toRgb=function(){return{r:u,g:s,b:c}},n.toHsv=function(){return e=u,t=s,n=c,o=0,(i=kN(e/=255,kN(t/=255,n/=25
 5)))===(a=TN(e,TN(t,n)))?{h:0,s:0,v:100*(o=i)}:(r=(a-i)/a,{h:AN(60*((e===i?3:n===i?1:5)-(e===i?t-n:n===i?e-t:n-e)/((o=a)-i))),s:AN(100*r),v:AN(100*o)});var e,t,n,r,o,i,a},n.toHex=function(){var e=function(e){return 1<(e=parseInt(e,10).toString(16)).length?e:"0"+e};return"#"+e(u)+e(s)+e(c)},n.parse=t,n}},dom:{EventUtils:Te,Sizzle:Tt,DomQuery:hn,TreeWalker:oo,DOMUtils:hi,ScriptLoader:xi,RangeUtils:gN,Serializer:cy,ControlSelection:hy,BookmarkManager:my,Selection:Yy,Event:Te.Event},html:{Styles:ii,Entities:Wo,Node:Kb,Schema:ri,SaxParser:Nv,DomParser:oy,Writer:Gc,Serializer:Jc},ui:{Factory:wN},Env:me,AddOnManager:Ei,Annotator:Pc,Formatter:Lb,UndoManager:Hv,EditorCommands:lp,WindowManager:rh,NotificationManager:nh,EditorObservable:Bp,Shortcuts:Mp,Editor:zw,FocusManager:jw,EditorManager:lN,DOM:hi.DOM,ScriptLoader:xi.ScriptLoader,PluginManager:Ei.PluginManager,ThemeManager:Ei.ThemeManager,trim:Gt.trim,isArray:Gt.isArray,is:Gt.is,toArray:Gt.toArray,makeMap:Gt.makeMap,
 each:Gt.each,map:Gt.map,grep:Gt.grep,inArray:Gt.inArray,extend:Gt.extend,create:Gt.create,walk:Gt.walk,createNS:Gt.createNS,resolve:Gt.resolve,explode:Gt.explode,_addCacheSuffix:Gt._addCacheSuffix,isOpera:me.opera,isWebKit:me.webkit,isIE:me.ie,isGecko:me.gecko,isMac:me.mac},HN=UN=Gt.extend(UN,VN);zN=HN,window.tinymce=zN,window.tinyMCE=zN,function(e){if("object"==typeof module)try{module.exports=e}catch(t){}}(HN)}(window);
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of file
</span></span></pre></div>
<a id="trunksrcwpincludesversionphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/version.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/version.php 2019-05-15 19:53:42 UTC (rev 45315)
+++ trunk/src/wp-includes/version.php   2019-05-15 23:44:37 UTC (rev 45316)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -27,7 +27,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @global string $tinymce_version
</span><span class="cx" style="display: block; padding: 0 10px">  */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-$tinymce_version = '4920-20181217';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+$tinymce_version = '4940-20190515';
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="cx" style="display: block; padding: 0 10px">  * Holds the required PHP version
</span></span></pre>
</div>
</div>

</body>
</html>